From 4cf4b645967cf5142981caa232c6b3358b834781 Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 11:11:21 +0800 Subject: [PATCH 1/8] update build toolchain --- .gitignore | 2 + .gn | 2 +- build/build.sh | 1 + build/builder.py | 210 +++++++ build/builder/__init__.py | 13 + build/builder/commands/build.py | 121 ++++ build/builder/commands/format.py | 99 +++ build/builder/commands/package.py | 135 ++++ build/builder/common/__init__.py | 0 build/builder/common/env_checker.py | 88 +++ build/builder/common/logger.py | 122 ++++ build/builder/common/utils.py | 56 ++ build/configs/system_deps.toml | 29 + build/gn/BUILD.gn | 2 + build/gn/BUILDCONFIG.gn | 40 ++ build/gn/configs/BUILD.gn | 184 ++++++ build/gn/configs/compiler/BUILD.gn | 691 +++++++++++++++++++++ build/gn/configs/compiler/compiler.gni | 71 +++ build/gn/configs/fangtian/BUILD.gn | 161 +++++ build/gn/configs/fangtian/abi.gni | 70 +++ build/gn/configs/fangtian/config.gni | 18 + build/gn/configs/sanitizers/sanitizers.gni | 133 ++++ build/gn/fangtian.gni | 20 + build/gn/templates/build_targets.gni | 17 + build/gn/templates/ft_executable.gni | 92 +++ build/gn/templates/ft_shared_library.gni | 85 +++ build/gn/templates/ft_source_set.gni | 70 +++ build/gn/templates/ft_static_library.gni | 70 +++ build/gn/toolchain/cc_wrapper.gni | 51 ++ build/gn/toolchain/linux/BUILD.gn | 54 ++ build/gn/toolchain/toolchain.gni | 328 ++++++++++ prebuilts/build-tools/linux-x64/bin/gn | Bin 0 -> 2890280 bytes prebuilts/build-tools/linux-x64/bin/ninja | Bin 0 -> 265560 bytes 33 files changed, 3034 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100755 build/builder.py create mode 100644 build/builder/__init__.py create mode 100755 build/builder/commands/build.py create mode 100755 build/builder/commands/format.py create mode 100755 build/builder/commands/package.py create mode 100755 build/builder/common/__init__.py create mode 100755 build/builder/common/env_checker.py create mode 100755 build/builder/common/logger.py create mode 100755 build/builder/common/utils.py create mode 100755 build/configs/system_deps.toml create mode 100755 build/gn/configs/BUILD.gn create mode 100755 build/gn/configs/compiler/BUILD.gn create mode 100755 build/gn/configs/compiler/compiler.gni create mode 100755 build/gn/configs/fangtian/BUILD.gn create mode 100755 build/gn/configs/fangtian/abi.gni create mode 100755 build/gn/configs/fangtian/config.gni create mode 100755 build/gn/configs/sanitizers/sanitizers.gni create mode 100755 build/gn/fangtian.gni create mode 100755 build/gn/templates/build_targets.gni create mode 100755 build/gn/templates/ft_executable.gni create mode 100755 build/gn/templates/ft_shared_library.gni create mode 100755 build/gn/templates/ft_source_set.gni create mode 100755 build/gn/templates/ft_static_library.gni create mode 100755 build/gn/toolchain/cc_wrapper.gni create mode 100755 build/gn/toolchain/linux/BUILD.gn create mode 100755 build/gn/toolchain/toolchain.gni create mode 100755 prebuilts/build-tools/linux-x64/bin/gn create mode 100755 prebuilts/build-tools/linux-x64/bin/ninja diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ada3096 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +**/__pycache__ +out diff --git a/.gn b/.gn index 10d8679..191b1f0 100644 --- a/.gn +++ b/.gn @@ -1 +1 @@ -buildconfig = "//build/BUILDCONFIG.gn" +buildconfig = "//build/gn/BUILDCONFIG.gn" diff --git a/build/build.sh b/build/build.sh index 48c0777..8b9587d 100755 --- a/build/build.sh +++ b/build/build.sh @@ -37,6 +37,7 @@ if [[ "${PROJECT_DIR}x" == "x" ]]; then fi # Exec builder +python3 ${PROJECT_DIR}/build/builder.py --project-dir ${PROJECT_DIR} build $* # Check builder result if [[ "$?" -ne 0 ]]; then diff --git a/build/builder.py b/build/builder.py new file mode 100755 index 0000000..7c53018 --- /dev/null +++ b/build/builder.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This is an entry file: parse subcommand and call releated python script. + +import sys +import argparse +import os +from rich.console import Console + +from builder.commands.build import Builder +from builder.commands.format import Formatter +from builder.commands.package import Packager +from builder.common.env_checker import checker +from builder.common.logger import logger, LoggerManager + +VERSION="0.1.0-rc1" + +class FtBuilder: + def __init__(self): + self.default_project_dir = os.path.abspath(os.path.dirname(os.path.split(os.path.realpath(__file__))[0])) + + def banner(self) -> str: + return rf""" _,---. ,--.--------. .=-.-. ,----. + .-`.' , \/==/, - , -\ _..---. .--.-. .-.-./==/_ / _.-. _,..---._ ,-.--` , \ .-.,.---. + /==/_ _.-'\==\.-. - ,_./ .' .'.-. \/==/ -|/=/ |==|, |.-,.'| /==/, - \ |==|- _.-` /==/ ` \ +/==/- '..-. `--`|==\- \ /==/- '=' /|==| ,||=| -|==| |==|, | |==| _ _\|==| `.-.|==|-, .=., | +|==|_ , / |==|_ | |==|-, ' |==|- | =/ |==|- |==|- | |==| .=. /==/_ , /|==| '=' / +|==| .--' |==|- | |==| .=. \|==|, \/ - |==| ,|==|, | |==|,| | -|==| .-' |==|- , .' +|==|- | |==|, | /==/- '=' ,|==|- , /==|- |==|- `-._|==| '=' /==|_ ,`-._|==|_ . ,'. +/==/ \ /==/ -/ |==| - //==/ , _ .'/==/. /==/ - , ,/==|-, _`//==/ , //==/ /\ , ) +`--`---' `--`--` `-._`.___,' `--`..---' `--`-``--`-----'`-.`.____.' `--`-----`` `--`-`--`--' + version: {VERSION} +""" + + def parse_args(self): + parser = argparse.ArgumentParser( + prog='builder.py', + description="Fangtian builder for OpenEuler OS.", + epilog='Please submit building issues to https://gitee.com/openeuler-graphics/fangtian_build.') + + parser.add_argument('--project-dir', type=str, help="Specify the project root dir.") + # parser.add_argument('--enable-logfile', action='store_true', help="Enable saving log to file.") + parser.add_argument('--version', action='version', version='%(prog)s ' + VERSION) + + subparsers = parser.add_subparsers(dest='subcommand', required=True, help="builder subcommands") + # Subcommand: build + build_parser = subparsers.add_parser('build', help='Build the project') + build_parser.add_argument('-t', '--target-cpu', + type=str, + choices=['x64', 'x86'], + default='x64', + help='Specify the target CPU type.') + build_parser.add_argument('-b', '--build-type', + choices=['debug', 'release'], + default='debug', + help='Specify the build type') + build_parser.add_argument('-j', '--jobs', + type=int, + default=4, + help='Specify the number of jobs to run simultaneously during building.') + build_parser.add_argument('--enable-musl', + action='store_true', + help='Enable musl C lib. if musl is disabled, you\'ll use system C lib.') + build_parser.add_argument('-cc', '--export-compile-commands', + action='store_true', + help='Export "compile_commands.json" file.') + build_parser.add_argument('-v', '--verbose', + action='store_true', + help='Show all logs.') + build_parser.add_argument('--escape-build', + action='store_true', + help='Only do "prebuild" operations.') + build_parser.add_argument('-l', '--log-level', + type=str, + choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL', 'CRITICAL'], + default='NOTSET', + help='Set log level of builder.') + + # Subcommand: format + format_parser = subparsers.add_parser('format', help='Format C/C++ & GN files') + format_parser.add_argument('--code-path', + type=str, + help='Specify target code path to format.') + format_parser.add_argument('--gn-path', + type=str, + default=os.path.join(self.default_project_dir, 'prebuilts/build-tools/linux-x64/bin/gn'), + help='Show all format lines.') + format_parser.add_argument('-v', '--verbose', + action='store_true', + help='Show all format lines.') + + # Subcommand: check + check_parser = subparsers.add_parser('check', help='System or project checking') + check_parser.add_argument('--install-packages', + action='store_true', + help='Install missing packages.') + + # Subcommand: package + package_parser = subparsers.add_parser('package', help='Tools for packaging RPM') + package_subparsers = package_parser.add_subparsers(dest='package_subcommand', required=True, help="builder subcommands") + + package_prepare_parser = package_subparsers.add_parser('prepare', help='Prepare toml file for packaging.') + package_prepare_parser.add_argument('-o', '--output', + type=str, + required=True, + help='Specify the output dir of toml file.') + package_prepare_parser.add_argument('-n', '--name', + type=str, + required=True, + help='Specify the package name.') + build_parser.add_argument('--use-musl', + action='store_true', + help='Add musl k-v to toml file.') + + package_prepare_parser = package_subparsers.add_parser('generate', help='Setup rpm tree & Generate spec file & Build the RPM package.') + package_prepare_parser.add_argument('--target-dir', + type=str, + required=True, + help='Specify the dir which includes files to be installed.') + package_prepare_parser.add_argument('--config-file', + type=str, + required=True, + help='Specify the path of toml config file.') + + # Parse args + self.args = parser.parse_args() + + def _setup_logger(self): + lm = LoggerManager() + if self.args.__contains__("log_level") and self.args.log_level: + lm.setup_level(self.args.log_level) + else: + lm.setup_level("NOTSET") + + # if self.args.enable_logfile: + # logger.error("Enable log file is not supported yet.") + # lm.add_file_logger(os.path.join(self.args.project_dir, "out", "log", "build", "builder.log")) + + def prepare(self): + if self.args is None: + Console().print("FtBuiler Inner Error: args is None", style="bold red") + + self._setup_logger() + + if self.args.project_dir is None: + self.args.project_dir = os.path.abspath(os.path.dirname(os.path.split(os.path.realpath(__file__))[0])) + + def do_subcommand(self) -> bool: + print(self.banner()) + + logger.debug(f"Project dir: {self.args.project_dir}") + + if self.args is None or self.args.subcommand is None: + return False + + subcommand = self.args.subcommand + self.args.subcommand = None + + # Do acual subcommand + rst = False + if (subcommand == "build"): + builder = Builder(self.args) + rst = builder.exec_command() + elif (subcommand == "format"): + formatter = Formatter(self.args) + rst = formatter.exec_command() + elif (subcommand == "check"): + rst = checker.check_system_env(self.args.project_dir, install_missing_pkg=self.args.install_packages) + elif (subcommand == "package"): + packager = Packager(self.args) + rst = packager.exec_command() + else: + logger.error(f"Unknow subcommand: {subcommand}") + sys.exit(1) + + # Check subcommand result + if rst: + logger.debug(f"{subcommand} done.") + else: + logger.error(f"{subcommand} failed!") + + return rst + +def main() -> int: + builder = FtBuilder() + builder.parse_args() + + console = Console() + try: + builder.prepare() + + return 0 if builder.do_subcommand() else 1 + except: + console.print_exception(show_locals=True) + return 1 + +if __name__ == "__main__": + sys.exit(main()) diff --git a/build/builder/__init__.py b/build/builder/__init__.py new file mode 100644 index 0000000..8858d32 --- /dev/null +++ b/build/builder/__init__.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/build/builder/commands/build.py b/build/builder/commands/build.py new file mode 100755 index 0000000..2e7e4d3 --- /dev/null +++ b/build/builder/commands/build.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +from builder.common.logger import logger +from builder.common.utils import exec_sys_command +from builder.common.env_checker import checker + +class Builder: + def __init__(self, args): + self.args = args + + self.project_dir = args.project_dir + self.build_output_dir = os.path.join(args.project_dir, "out", args.build_type.title(), args.target_cpu) + self._build_tools_dir = os.path.join(args.project_dir, "prebuilts", "build-tools", f"linux-{args.target_cpu}", "bin") + self.gn_path = os.path.join(self._build_tools_dir, "gn") + self.ninja_path = os.path.join(self._build_tools_dir, "ninja") + + self._args_list = [] + + if args.escape_build is True: + logger.warning(f"Escaping build procedure.") + self.should_do_build = False + self.should_do_postbuild = False + else: + self.should_do_build = True + self.should_do_postbuild = True + + def pre_build(self) -> bool: + return checker.check_system_env(self.project_dir) + + def post_build(self) -> bool: + if self.args.export_compile_commands is True: + # return exec_sys_command(['ln', '-sf', os.path.join(self.build_output_dir, 'compile_commands.json'), self.project_dir])[0] + exec_sys_command(['rm', '-f', os.path.join(self.project_dir, 'compile_commands.json')]) + return exec_sys_command(['cp', os.path.join(self.build_output_dir, 'compile_commands.json'), self.project_dir])[0] + + return True + + def launch_gn(self) -> bool: + """This function executes the gn command, which generate ninja files""" + # Generate GN build cmd + gn_subargs = [ + f'project_root_dir="{self.project_dir}"', + ] + + if self.args.build_type.lower() == "debug": + gn_subargs.append(f'is_debug=true') + else: + gn_subargs.append(f'is_debug=false') + + if self.args.enable_musl is True: + gn_subargs.append(f'use_musl=true') + else: + gn_subargs.append(f'use_musl=false') + + gn_args = [ + self.gn_path, + 'gen', + self.build_output_dir, + '--args={}'.format(" ".join(gn_subargs)) + ] + + if self.args.export_compile_commands is True: + gn_args.append('--export-compile-commands') + + if self.args.verbose is True: + gn_args.append('-v') + + # Execute GN build cmd + logger.info(f"Launch \"gn\" with: `{' '.join(gn_args)}`") + return exec_sys_command(gn_args)[0] + + def launch_ninja(self) -> bool: + """This function executes the ninja command, which compiles the project""" + ninja_args = [ + self.ninja_path, + '-C', + self.build_output_dir, + f'-j {self.args.jobs}', + ] + + if self.args.verbose is True: + ninja_args.append('-v') + + logger.info(f"Launch \"ninja\" with: `{' '.join(ninja_args)}`") + return exec_sys_command(ninja_args)[0] + + def get_cmds(self) -> list: + command_chain = [ self.pre_build ] + + if self.should_do_build: + command_chain.append(self.launch_gn) + command_chain.append(self.launch_ninja) + if self.should_do_postbuild: + command_chain.append(self.post_build) + + return command_chain + + def exec_command(self) -> bool: + logger.info(f'Exec "build" command...') + + cmds = self.get_cmds() + + for cmd in cmds: + if cmd() is False: + return False + + return True diff --git a/build/builder/commands/format.py b/build/builder/commands/format.py new file mode 100755 index 0000000..4cc8f48 --- /dev/null +++ b/build/builder/commands/format.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +from builder.common.logger import logger +from builder.common.utils import exec_sys_command + +_EXCLUDE_DIRS = ["out", "prebuilts", "third_party"] +_C_CPP_EXTS = [".c", ".cc", ".cxx", ".cpp", ".h", ".hpp"] +_GN_EXTS = [".gn", ".gni"] + +class Formatter: + def __init__(self, args): + self.args = args + + self.clang_format_cmds = ['clang-format', '-i', '-style=file', '-fallback-style=none'] + self.gn_format_cmds = [self.args.gn_path, 'format'] + + # Init exclude dirs + self.exclude_dirs = [] + for dir in _EXCLUDE_DIRS: + self.exclude_dirs.append(os.path.join(self.args.project_dir, dir)) + + # Init target code path + if self.args.code_path is None: + self.code_path = self.args.project_dir + else: + self.code_path = os.path.abspath(self.code_path) + + def _is_subpath(self, path, parent_paths) -> bool: + path = os.path.abspath(path) + + return any(os.path.commonpath([path, p]) == p for p in parent_paths) + + def pre_format(self) -> bool: + if self.args.verbose: + self.clang_format_cmds.append("-verbose") + + return True + + def _do_format(self, abs_file_name: str, exts: list, format_cmds: list) -> bool: + should_format = False + for ext in exts: + if abs_file_name.endswith(ext): + should_format = True + break + + if should_format: + cmds = format_cmds + [abs_file_name] + rst, _ = exec_sys_command(cmds) # do format + if not rst: + return False + + return True + + + def do_format(self) -> bool: + logger.info(f"Start format files in {self.code_path}...") + + for [dirpath, _, filenames] in os.walk(self.code_path): + # Escape some dirs + if self._is_subpath(dirpath, self.exclude_dirs): + logger.debug(f"Escape dir: {dirpath}") + continue + + # Find all files and try to format them + for filename in filenames: + abs_file_name = os.path.join(dirpath, filename) + # try to do clang format + if not self._do_format(abs_file_name, _C_CPP_EXTS, self.clang_format_cmds): + logger.error(f"Failed to format C/C++ file: {abs_file_name}") + return False + # try to do gn format + if not self._do_format(abs_file_name, _GN_EXTS, self.gn_format_cmds): + logger.error(f"Failed to format GN file: {abs_file_name}") + return False + + return True + + def exec_command(self) -> bool: + logger.info(f'Exec "format" command...') + + if not self.pre_format(): + return False + + return self.do_format() + diff --git a/build/builder/commands/package.py b/build/builder/commands/package.py new file mode 100755 index 0000000..9fbde03 --- /dev/null +++ b/build/builder/commands/package.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import toml +import re +from typing import Any + +from builder.common.logger import logger +from builder.common.utils import exec_sys_command + +class Packager: + def __init__(self, args): + self.args = args + self.configs_dir = os.path.join(self.args.project_dir, "build/configs") + + def prepare(self) -> bool: + # Try to make output dir + if not os.path.exists(self.args.output): + exec_sys_command(['mkdir', '-p', self.args.output], True) + + # Generate Toml file + with open(os.path.join(self.configs_dir, "rpm_config_template.toml"), 'r') as template_file: + template_data = template_file.read() + + new_toml_data = template_data.replace('', self.args.name) + + new_toml_path = os.path.join(self.args.output, f"{self.args.name}_rpm_config.toml") + with open(new_toml_path, 'w') as new_toml_file: + new_toml_file.write(new_toml_data) + + logger.info(f"Output toml file: {new_toml_path}") + + return True + + def _gen_spec_file(self, rpm_configs: dict[str, Any]) -> bool: + # Check args + if not os.path.exists(self.args.config_file): + logger.error(f"Config file {self.args.config_file} not found.") + return False + + if not os.path.exists(self.args.target_dir): + logger.error(f"Target dir {self.args.config_file} is not exist.") + return False + + # Generate spec file + with open(os.path.join(self.configs_dir, "rpm_template.spec"), 'r') as template_file: + template_data = template_file.read() + + new_spec_data = template_data.replace('', rpm_configs['name']) + new_spec_data = new_spec_data.replace('', rpm_configs['version']) + new_spec_data = new_spec_data.replace('', rpm_configs['release']) + new_spec_data = new_spec_data.replace('', rpm_configs['summary']) + new_spec_data = new_spec_data.replace('', rpm_configs['license']) + new_spec_data = new_spec_data.replace('', rpm_configs['url']) + new_spec_data = new_spec_data.replace('', rpm_configs['build_arch']) + new_spec_data = new_spec_data.replace('', rpm_configs['description']) + + paths_set = set() + mkdir_commands = "" + copy_commands = "" + files_scriptlet = "" + + for file, install_path in rpm_configs['install_paths'].items(): + paths_set.add(install_path) + + file_path = os.path.join(self.args.target_dir, file) + if not os.path.exists(file_path): + logger.error(f"File {file_path} is not exist.") + return False + copy_commands += "cp -pdf %s %%{buildroot}%s\n" % (file_path, install_path) + + files_scriptlet += os.path.join(install_path, os.path.basename(file_path)) + "\n" + + for path in paths_set: + mkdir_commands += "mkdir -p %%{buildroot}%s\n" % (path) + + new_spec_data = new_spec_data.replace('', mkdir_commands) + new_spec_data = new_spec_data.replace('', copy_commands) + new_spec_data = new_spec_data.replace('', files_scriptlet) + + with open(os.path.join(self.args.target_dir, f"{rpm_configs['name']}.spec"), 'w') as spec_file: + spec_file.write(new_spec_data) + + return True + + def generate(self) -> bool: + logger.info(f"Do package generate with {self.args.target_dir} {self.args.config_file}") + + # Read config file (TOML) + with open(self.args.config_file, 'r') as f: + rpm_configs = toml.load(f) + + # Setup RPM tree + exec_sys_command("rpmdev-setuptree", False) + + # Generate spec file`` + self._gen_spec_file(rpm_configs) + + # Build rpm package + rst, output = exec_sys_command(["rpmbuild", "-bb", os.path.join(self.args.target_dir, f"{rpm_configs['name']}.spec")]) + if rst == True: + output_rpm_file = re.search(r'^Wrote:\s+(.*)$', output, flags=re.MULTILINE) + if output_rpm_file: + logger.info(f"RPM package has been generated to : {output_rpm_file.group(1)}") + else: + logger.error(f"Failed to exec rpmbuild.") + return False + + return True + + def exec_command(self) -> bool: + logger.info(f'Exec "package" command...') + + subcommand = self.args.package_subcommand + + if (subcommand == "prepare"): + return self.prepare() + elif (subcommand == "generate"): + return self.generate() + else: + logger.error("Unknow subcommand.") + sys.exit(1) diff --git a/build/builder/common/__init__.py b/build/builder/common/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/build/builder/common/env_checker.py b/build/builder/common/env_checker.py new file mode 100755 index 0000000..0094390 --- /dev/null +++ b/build/builder/common/env_checker.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import toml + +from builder.common.logger import logger +from builder.common.utils import exec_sys_command + +class Checker: + """ + Checker is a singleton. + """ + _instance = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + def __init__(self): + with open('/etc/os-release', 'r') as f: + for line in f: + if line.startswith('ID='): + self.os_id = line.split('=')[1].strip().strip('"').lower() + elif line.startswith('VERSION_ID='): + self.os_version = line.split('=')[1].strip().strip('"') + + def _is_package_installed(self, pkg: str) -> bool: + is_success, output = exec_sys_command(['rpm', '-q', pkg], is_show_output=False) + + if output: + return is_success + else: + return False + + def _install_packages(self, pkgs: list) -> bool: + logger.info('Try install system packages: {} ...'.format(', '.join(pkgs))) + is_success, _output = exec_sys_command(['sudo', 'yum', 'install', '-y', ' '.join(pkgs)]) + return is_success + + def check_system_env(self, project_dir: str, install_missing_pkg: bool = False) -> bool: + import os + + logger.info('Checking system environment...') + + # Open config file + config_path = os.path.join(project_dir, 'build', 'configs', 'system_deps.toml') + with open(config_path, 'r') as f: + configs = toml.load(f) + + # Check os version + if self.os_id in configs['dependencies']['supported_os'] and self.os_version in configs['dependencies'][self.os_id]['supported_version']: + logger.debug(f'Current OS: {self.os_id} {self.os_version}') + else: + logger.error(f'Unsupported OS: {self.os_id} {self.os_version}') + return False + + # Check packages + package_deps = configs.get(self.os_id, {}).get(self.os_version, {}).get('package_deps', []) + if package_deps is None: + logger.error(f'No package_deps config for {self.os_id} {self.os_version} in {config_path}') + return False + + missing_packages = [] + for pkg in package_deps: + if not self._is_package_installed(pkg): + missing_packages.append(pkg) + + if missing_packages == []: + return True + elif install_missing_pkg: + return self._install_packages(missing_packages) + else: + logger.error('System package "{}" is not installed. Please install them by using `yum install` or `dnf install`'.format(', '.join(missing_packages))) + return False + +checker = Checker() diff --git a/build/builder/common/logger.py b/build/builder/common/logger.py new file mode 100755 index 0000000..5811e5a --- /dev/null +++ b/build/builder/common/logger.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import logging +from rich.style import Style +from rich.text import Text +from rich.highlighter import Highlighter +from rich.logging import RichHandler + +def _combine_regex(*regexes: str) -> str: + """Combine a number of regexes in to a single regex. + Returns: + str: New regex with all regexes ORed together. + """ + return "|".join(regexes) + +class AdvancedHighlighter(Highlighter): + """Highlights the text typically produced from ``__repr__`` methods.""" + + base_style = "repr." + re_highlights = [ + r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*)(?P>)", + # r'(?P\B-[\w_]{1,50})=(?P"?[\w_]+"?)?', + r"(?P[][{}()])", + r'(?P\B-{1,2}[\w_-]{1,50})=(?P"?[\w_+=-]+"?)?', + _combine_regex( + r"(?P[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", + r"(?P([A-Fa-f0-9]{1,4}::?){7}[A-Fa-f0-9]{1,4})", + r"(?P(?:[0-9A-Fa-f]{1,2}-){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){3}[0-9A-Fa-f]{4})", + r"(?P(?:[0-9A-Fa-f]{1,2}-){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})", + r"(?P[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})", + # r"(?P[\w.]*?)\(", + r"\b(?PTrue)\b|\b(?PFalse)\b|\b(?PNone)\b", + r"(?P\.\.\.)", + r"(?P(?(?((\.\.)?|\b[-\w_]+)(/[-\w._+]+)*\/)(?P[-\w._+]*)?", + r"(?b?'''.*?(?(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#]*)", + ), + ] + + def highlight(self, text: Text) -> None: + highlight_words = text.highlight_words + highlight_regex = text.highlight_regex + for re_highlight in self.re_highlights: + highlight_regex(re_highlight, style_prefix=self.base_style) + + # Highlight -Dxxx, -fxxx, -Wxxx + highlight_regex(r"\B(?P-(D|f|W)[\w+_-]{1,50})", style_prefix=self.base_style) + # Highlight "error" / "failed" / "invalid" + highlight_words(["error:", "warning:", "ERROR", "invalid"], style=Style(color="bright_red", bold=True), case_sensitive=True) + highlight_words(["failed:", "failed"], style=Style(color="bright_red", bold=True), case_sensitive=False) + # Highlight "success" / "done" + highlight_words(["successfully", "success", "done."], style=Style(color="bright_green", bold=True), case_sensitive=False) + # Highlight CC / CXX / ASM / AR / SOLINK / LINK / STAMP / COPY + highlight_words([" CC ", " CXX ", " ASM ", " AR ", " SOLINK ", " LINK ", " STAMP ", " COPY "], style=Style(color="yellow", bold=True), case_sensitive=True) + # Highlight GN print + highlight_words(["[GN INFO]"], style=Style(color="blue", bold=True), case_sensitive=False) + highlight_words(["[GN DEBUG]"], style=Style(color="dark_blue", bold=True), case_sensitive=False) + highlight_words(["[GN ERROR]", "[GN WARNING]"], style=Style(color="red", bold=True), case_sensitive=False) + # Highlight ^~~~~~~ & ^------ + highlight_regex(r"\B(\^~+)", style=Style(color="red", bold=True)) + highlight_regex(r"\B(\^-+)", style=Style(color="red", bold=True)) + +class LoggerManager: + """ + LoggerManager is a singleton. + """ + _instance = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + def __init__(self): + pass + + def setup_level(self, log_level: str): + log_level = log_level.upper() + + try: + handler = RichHandler(rich_tracebacks=True,highlighter=AdvancedHighlighter()) + logging.basicConfig( + level=log_level, + format="%(message)s", + datefmt="[%X]", + handlers=[handler] + ) + except: + self.get_logger().error("Invalid log level: '%s'", log_level) + sys.exit(1) + + self.log_level = log_level + + def add_file_logger(self, out_path, expire_time=2) -> None: + # self.file_logger_handler = loguru_logger.add( + # os.path.join(self.args.project_dir, "out", "log", "build", "builder.log"), + # level="DEBUG", + # format="[{level:<8}] {time:HH:mm:ss} | {file}:{line} {name}({module}) | {process}:{thread} | {message}", + # retention="1 day", + # rotation=datetime.timedelta(hours=2) + # ) + pass + + def get_logger(self) -> logging.Logger: + return logging.getLogger("rich") + +logger = LoggerManager().get_logger() diff --git a/build/builder/common/utils.py b/build/builder/common/utils.py new file mode 100755 index 0000000..a9270b1 --- /dev/null +++ b/build/builder/common/utils.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import subprocess + +from builder.common.logger import logger + +def _handle_sys_output(line) -> str: + text = line.rstrip('').rstrip('\n') + + return text + +def exec_sys_command(cmd, is_show_output=True, **kwargs) -> tuple[bool, str]: + # Run this cmd + process = subprocess.Popen(cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + encoding='utf-8', + **kwargs) + + # Print output + stdout = [] + if process.stdout is not None: + for line in process.stdout: + text = _handle_sys_output(line) + stdout.append(text) + if is_show_output: + logger.debug(' || ' + text) + + stderr = [] + if process.stderr is not None: + for line in process.stderr: + text = _handle_sys_output(line) + logger.error(' !! ' + text) + if is_show_output: + stderr.append(text) + + ret_code = process.wait() + + # Check return code + if ret_code != 0: + logger.warning('Failed to exec shell cmd: `{}`'.format(' '.join(cmd))) + return (False, '\n'.join(stderr)) + else: + return (True, '\n'.join(stdout)) diff --git a/build/configs/system_deps.toml b/build/configs/system_deps.toml new file mode 100755 index 0000000..c327cb5 --- /dev/null +++ b/build/configs/system_deps.toml @@ -0,0 +1,29 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +title = "Fangtian System Dependencies" + +[dependencies] +supported_os = ["openeuler"] + +[dependencies.openeuler] +supported_version = ["22.03"] + +[openeuler."22.03"] +package_deps = [ + "clang", + "compiler-rt", + "llvm-devel", + "python3", + +] diff --git a/build/gn/BUILD.gn b/build/gn/BUILD.gn index c6e020f..4056c61 100644 --- a/build/gn/BUILD.gn +++ b/build/gn/BUILD.gn @@ -12,4 +12,6 @@ # limitations under the License. group("ft_engine") { + deps = [ + ] } diff --git a/build/gn/BUILDCONFIG.gn b/build/gn/BUILDCONFIG.gn index 268a845..360a83f 100644 --- a/build/gn/BUILDCONFIG.gn +++ b/build/gn/BUILDCONFIG.gn @@ -46,6 +46,15 @@ declare_args() { # We add this parameter to speed up link process, enable_lto_O0 default is false. enable_lto_O0 = false + + is_official_build = false + # Component build. Setting to true compiles targets declared as "components" + # as shared libraries loaded dynamically. This speeds up development time. + # When false, components will be linked statically. + # + # For more information see + # https://chromium.googlesource.com/chromium/src/+/master/docs/component_build.md + is_component_build = true # Set to true when compiling with the Clang compiler is_clang = true @@ -94,6 +103,37 @@ if (_default_toolchain != "") { set_default_toolchain(_default_toolchain) } +# ============================================================================= +# OS DEFINITIONS +# ============================================================================= +# +# We set these various is_FOO booleans for convenience in writing OS-based +# conditions. +# +# - is_android, is_chromeos, is_ios, and is_win should be obvious. +# - is_mac is set only for desktop Mac. It is not set on iOS. +# - is_posix is true for mac and any Unix-like system (basically everything +# except Fuchsia and Windows). +# - is_linux is true for desktop Linux, but not for ChromeOS nor Android (which +# is generally too different despite being based on the Linux kernel). +# +# Do not add more is_* variants here for random lesser-used Unix systems like +# aix or one of the BSDs. If you need to check these, just check the +# current_os value directly. + +is_linux = current_os == "linux" +is_ft = current_os == "linux" +is_android = current_os == "android" +is_chromeos = current_os == "chromeos" +is_fuchsia = current_os == "fuchsia" +is_ios = current_os == "ios" +is_mac = current_os == "mac" +is_nacl = current_os == "nacl" +is_win = current_os == "win" || current_os == "winuwp" + +is_apple = is_ios || is_mac +is_posix = !is_win && !is_fuchsia +is_desktop_linux = current_os == "linux" # TARGET DEFAULTS CONFIGS default_compiler_configs = [ "//build/gn/configs/compiler:compiler", diff --git a/build/gn/configs/BUILD.gn b/build/gn/configs/BUILD.gn new file mode 100755 index 0000000..afafc26 --- /dev/null +++ b/build/gn/configs/BUILD.gn @@ -0,0 +1,184 @@ +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + + +import("//build/gn/configs/sanitizers/sanitizers.gni") + +# Debug/release ---------------------------------------------------------------- + +config("debug") { + defines = [ + "DYNAMIC_ANNOTATIONS_ENABLED=1", + "WTF_USE_DYNAMIC_ANNOTATIONS=1", + ] + cflags = [ + # generates debugging information during compilation. + "-g", + # compiler optimization option that attempts to improve the runtime speed of the code by performing more optimizations. + "-O0", + ] + cflags_cc = [] + + if (is_clang) { + # Allow comparing the address of references and 'this' against 0 + # in debug builds. Technically, these can never be null in + # well-defined C/C++ and Clang can optimize such checks away in + # release builds, but they may be used in asserts in debug builds. + cflags_cc += [ + "-Wno-undefined-bool-conversion", + "-Wno-tautological-undefined-compare", + ] + } + + # if (is_linux && current_cpu == "x64" && enable_iterator_debugging) { + # # Enable libstdc++ debugging facilities to help catch problems early, see + # # http://crbug.com/65151 . + # # defines += [ "_GLIBCXX_DEBUG=1" ] + # } +} + +config("release") { + defines = [ + "NDEBUG", + "LOG_HIDE_FILE_LINE" + ] + cflags = [ + # a compiler optimization option that attempts to improve the runtime speed of the code by performing more optimizations. + "-O3", + ] + + # Sanitizers. + if (is_tsan) { + defines += [ + "DYNAMIC_ANNOTATIONS_ENABLED=1", + "WTF_USE_DYNAMIC_ANNOTATIONS=1", + ] + } else { + defines += [ "NVALGRIND" ] + if (!is_nacl) { + # NaCl always enables dynamic annotations. Currently this value is set to + # 1 for all .nexes. + defines += [ "DYNAMIC_ANNOTATIONS_ENABLED=0" ] + } + } +} + +# Default libraries ------------------------------------------------------------ + +# This config defines the default libraries applied to all targets. +config("default_libs") { + if (is_linux) { + libs = [ + "dl", + "pthread", + "rt", + ] + } else { + assert(false, "[GN ERROR] Unsupport os for default libraries") + } +} + +# Common deps ----------------------------------------------------------- + +# Only //build/gn/configs/BUILDCONFIG.gn should reference this. +group("common_deps") { + public_deps = [] + + if (using_sanitizer) { + public_deps += [ "//build/config/sanitizers:deps" ] + } + + # if (use_custom_libcxx) { + # if (is_double_framework) { + # public_deps += [ "${asdk_libs_dir}/ndk/libcxx:libcxx" ] + # } else { + # public_deps += [ "//third_party/libcxx:libcxx" ] + # } + # } + + # if (use_afl) { + # public_deps += [ "//third_party/afl" ] + # } + + # if (use_musl_oh && current_toolchain != host_toolchain && !is_mingw) { + # public_deps += [ "//third_party/musl:soft_shared_libs" ] + # } + if (use_musl_oh) { + # TODO + # public_deps += [ "//third_party/musl:soft_shared_libs" ] + } +} + +group("executable_deps") { + public_deps = [ ":common_deps" ] +} + +group("loadable_module_deps") { + public_deps = [ ":common_deps" ] +} + +group("shared_library_deps") { + public_deps = [ ":common_deps" ] +} + +group("static_library_deps") { + # if (use_musl_oh && current_toolchain != host_toolchain && !is_mingw) { + # public_deps = [ "//third_party/musl:musl_headers" ] + # } + if (use_musl_oh) { + # TODO + # public_deps = [ "//third_party/musl:musl_headers" ] + } +} + +group("source_set_deps") { + # if (use_musl_oh && current_toolchain != host_toolchain && !is_mingw) { + # public_deps = [ "//third_party/musl:musl_headers" ] + # } + if (use_musl_oh) { + # TODO + # public_deps = [ "//third_party/musl:musl_headers" ] + } +} + +# Executable configs ----------------------------------------------------------- + +# This config defines the configs applied to all executables. +config("executable_config") { + configs = [] + + if (is_linux || is_ft || current_os == "aix") { + if (is_ft) { + configs += [ "//build/gn/configs/fangtian:executable_config" ] + } + } + + # # If we're using the prebuilt instrumented libraries with the sanitizers, we + # # need to add ldflags to every binary to make sure they are picked up. + # if (prebuilt_instrumented_libraries_available) { + # configs += [ "//third_party/instrumented_libraries:prebuilt_ldflags" ] + # } + # if (use_locally_built_instrumented_libraries) { + # configs += [ "//third_party/instrumented_libraries:locally_built_ldflags" ] + # } + # configs += [ "//build/config/sanitizers:link_executable" ] +} + +# Shared library configs ------------------------------------------------------- + +# This config defines the configs applied to all shared libraries. +config("shared_library_config") { + configs = [] + + # # If we're using the prebuilt instrumented libraries with the sanitizers, we + # # need to add ldflags to every binary to make sure they are picked up. + # if (prebuilt_instrumented_libraries_available) { + # configs += [ "//third_party/instrumented_libraries:prebuilt_ldflags" ] + # } + # if (use_locally_built_instrumented_libraries) { + # configs += [ "//third_party/instrumented_libraries:locally_built_ldflags" ] + # } + # configs += [ "//build/config/sanitizers:link_shared_library" ] +} diff --git a/build/gn/configs/compiler/BUILD.gn b/build/gn/configs/compiler/BUILD.gn new file mode 100755 index 0000000..88e9c08 --- /dev/null +++ b/build/gn/configs/compiler/BUILD.gn @@ -0,0 +1,691 @@ +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/gn/configs/compiler/compiler.gni") +import("//build/gn/toolchain/toolchain.gni") + +if (current_cpu == "arm" || current_cpu == "arm64") { + import("//build/config/arm.gni") +} + +declare_args() { + # Default to warnings as errors for default workflow, where we catch + # warnings with known toolchains. Allow overriding this e.g. for Chromium + # builds on Linux that could use a different version of the compiler. + # With GCC, warnings in no-Chromium code are always not treated as errors. + treat_warnings_as_errors = true + + # Build with C++ RTTI enabled. Chromium builds without RTTI by default, + # but some sanitizers are known to require it, like CFI diagnostics + # and UBsan variants. + use_rtti = use_cfi_diag || is_ubsan_vptr || is_ubsan_security + + # Allow projects that wish to stay on C++11 to override Chromium's default. + use_cxx11 = false +} + +# Determine whether to enable or disable frame pointers, based on the platform +# and build arguments. +if (is_mac || is_linux) { + enable_frame_pointers = is_debug +} else { + # Explicitly ask for frame pointers, otherwise: + # * Stacks may be missing for sanitizer and profiling builds. + # * Debug tcmalloc can crash (crbug.com/636489). + # enable_frame_pointers = using_sanitizer || enable_profiling || is_debug + assert(false, "[GN ERROR] Unknow OS for frame pointer") +} + +# compiler ---------------------------------------------------------------- +# +# Base compiler configuration. +config("compiler") { + cflags = [] + cflags_cc = [] + ldflags = [] + configs = [] + defines = [] + + # System-specific flags. If your compiler flags apply to one of the + # categories here, add it to the associated file to keep this shared config + # smaller. + if (is_ft) { + configs += [ "//build/gn/configs/fangtian:compiler" ] + } + + if (is_linux) { + if (use_pic) { + cflags += [ "-fPIC" ] + ldflags += [ "-fPIC" ] + } + } + + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_ft || (is_nacl && is_clang) || current_os == "aix") { + if (is_clang) { + standard_prefix = "c" + + # Since we build with -std=c* and not -std=gnu*, _GNU_SOURCE will not be + # defined by the compiler. However, lots of code relies on the + # non-standard features that _GNU_SOURCE enables, so define it manually. + defines += [ "_GNU_SOURCE" ] + + if (is_nacl) { + # Undefine __STRICT_ANSI__ to get non-standard features which would + # otherwise not be enabled by NaCl's sysroots. + cflags += [ "-U__STRICT_ANSI__" ] + } + } else { + # Gcc does not support ##__VA_ARGS__ when in standards-conforming mode, + # but we use this feature in several places in Chromium. + standard_prefix = "gnu" + } + + # cflags_c += [ "-std=${standard_prefix}11" ] + if (use_cxx11) { + # Override Chromium's default for projects that wish to stay on C++11. + cflags_cc += [ "-std=${standard_prefix}++11" ] + } else { + cflags_cc += [ "-std=${standard_prefix}++17" ] + } + } else if (!is_win && !is_nacl && !is_mingw) { + if (use_cxx11) { + cflags_cc += [ "-std=c++11" ] + } else { + cflags_cc += [ "-std=c++17" ] + } + } +} + +# This provides the basic options to select the target CPU and ABI. +# It is factored out of "compiler" so that special cases can use this +# without using everything that "compiler" brings in. Options that +# tweak code generation for a particular CPU do not belong here! +# See "compiler_codegen", below. +config("compiler_cpu_abi") { + cflags = [] + ldflags = [] + defines = [] + + if (is_posix && !is_mac) { + # CPU architecture. We may or may not be doing a cross compile now, so for + # simplicity we always explicitly set the architecture. + if (current_cpu == "x64") { + cflags += [ + "-m64", + "-march=x86-64", + ] + ldflags += [ "-m64" ] + } else if (current_cpu == "x86") { + cflags += [ "-m32" ] + ldflags += [ "-m32" ] + if (!is_nacl) { + cflags += [ + "-msse2", + "-mfpmath=sse", + "-mmmx", + ] + } + } else if (current_cpu == "arm") { + if (is_clang && !is_ft && !is_nacl) { + cflags += [ "--target=arm-linux-gnueabihf" ] + ldflags += [ "--target=arm-linux-gnueabihf" ] + } + if (!is_nacl) { + cflags += [ + "-march=$arm_arch", + "-mfloat-abi=$arm_float_abi", + ] + } + if (arm_tune != "") { + cflags += [ "-mtune=$arm_tune" ] + } + } else if (current_cpu == "arm64") { + if (is_clang && !is_ft && !is_nacl) { + cflags += [ "--target=aarch64-linux-gnu" ] + ldflags += [ "--target=aarch64-linux-gnu" ] + } + if (is_clang && is_ft) { + ldflags += [ "-Wl,--hash-style=gnu" ] + } + cflags += [ + "-march=$arm_arch", + "-mfloat-abi=$arm_float_abi", + "-mfpu=$arm_fpu", + ] + ldflags += [ "-march=$arm_arch" ] + } + } + + asmflags = cflags + if (current_cpu == "arm64") { + asmflags += [ "-march=armv8.2-a+dotprod+fp16" ] + } +} + +# runtime_library ---------------------------------------------------------------- +# +# Sets the runtime library and associated options. +# +# How do you determine what should go in here vs. "compiler" above? Consider if +# a target might choose to use a different runtime library (ignore for a moment +# if this is possible or reasonable on your system). If such a target would want +# to change or remove your option, put it in the runtime_library config. If a +# target wants the option regardless, put it in the compiler config. + +config("runtime_library") { + defines = [] + configs = [] + + # # The order of this config is important: it must appear before + # # ohos:runtime_library. + # if (is_posix) { + # configs += [ "//build/gn/configs/posix:runtime_library" ] + # } + + # # System-specific flags. If your compiler flags apply to one of the + # # categories here, add it to the associated file to keep this shared config + # # smaller. + if (is_ft) { + configs += [ "//build/gn/configs/fangtian:runtime_library" ] + } + + if (is_component_build) { + defines += [ "COMPONENT_BUILD" ] + } +} + +# default_warnings ------------------------------------------------------------ +# +# Collects all warning flags that are used by default. This is used as a +# subconfig of both chromium_code and no_chromium_code. This way these +# flags are guaranteed to appear on the compile command line after -Wall. +config("default_warnings") { + cflags = [] + cflags_cc = [] + ldflags = [] + + # Suppress warnings about ABI changes on ARM (Clang doesn't give this + # warning). + if (current_cpu == "arm" && !is_clang) { + cflags += [ "-Wno-psabi" ] + } + + if (!is_clang) { + cflags_cc += [ + # See comment for -Wno-c++11-narrowing. + "-Wno-narrowing", + ] + + # -Wunused-local-typedefs is broken in gcc, + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872 + cflags += [ "-Wno-unused-local-typedefs" ] + + # Don't warn about "maybe" uninitialized. Clang doesn't include this + # in -Wall but gcc does, and it gives false positives. + cflags += [ "-Wno-maybe-uninitialized" ] + cflags += [ "-Wno-deprecated-declarations" ] + + # GCC assumes 'this' is never nullptr and optimizes away code + # like "if (this == nullptr) ...": [1]. However, some Chromium + # code relies on these types of null pointer checks [2], so + # disable this optimization. + # [1] https://gcc.gnu.org/gcc-6/porting_to.html#this-cannot-be-null + # [2] https://crbug.com/784492#c13 + cflags += [ "-fno-delete-null-pointer-checks" ] + + # -Wcomment gives too many false positives in the case a + # backslash ended comment line is followed by a new line of + # comments + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61638 + cflags += [ "-Wno-comments" ] + } + + # Common Clang and GCC warning setup. + if (!is_win || is_clang) { + cflags += [ + # Disables. + "-Wno-missing-field-initializers", # "struct foo f = {0};" + "-Wno-unused-parameter", # Unused function parameters. + ] + } + + if (is_clang) { + cflags += [ + # This warns on using ints as initializers for floats in + # initializer lists (e.g. |int a = f(); CGSize s = { a, a };|), + # which happens in several places in chrome code. Not sure if + # this is worth fixing. + "-Wno-c++11-narrowing", + "-Wno-unneeded-internal-declaration", + ] + if (use_musl) { + cflags += [ + "-Wno-error=c99-designator", + "-Wno-error=anon-enum-enum-conversion", + "-Wno-error=implicit-fallthrough", + "-Wno-error=sizeof-array-div", + "-Wno-error=reorder-init-list", + "-Wno-error=range-loop-construct", + "-Wno-error=deprecated-copy", + "-Wno-error=implicit-int-float-conversion", + "-Wno-error=inconsistent-dllimport", + "-Wno-error=unknown-warning-option", + "-Wno-error=abstract-final-class", + "-Wno-error=sign-compare", + "-Wno-error=int-in-bool-context", + "-Wno-error=xor-used-as-pow", + "-Wno-error=return-stack-address", + "-Wno-error=dangling-gsl", + ] + } + + # use_xcode_clang only refers to the iOS toolchain, host binaries use + # chromium's clang always. + if (!is_nacl && current_toolchain == host_toolchain) { + # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not + # recognize. + print("[GN DEBUG] current_toolchain: $current_toolchain") + print("[GN DEBUG] host_toolchain: $host_toolchain") + + cflags += [ "-Wno-enum-compare-switch" ] + } + } +} + +# chromium_code --------------------------------------------------------------- +# +# Toggles between higher and lower warnings for code that is (or isn't) +# part of Chromium. + +config("chromium_code_warnings") { + cflags = [ "-Wall" ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + + # The compiler driver can sometimes (rarely) emit warnings before calling + # the actual linker. Make sure these warnings are treated as errors as + # well. + ldflags = [ "-Werror" ] + } + if (is_clang) { + # Enable extra warnings for chromium_code when we control the compiler. + cflags += [ "-Wextra" ] + } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. + defines = [ + "__STDC_CONSTANT_MACROS", + "__STDC_FORMAT_MACROS", + ] + + if (!is_debug && !using_sanitizer && + (!is_linux || !is_clang || is_official_build)) { + # _FORTIFY_SOURCE isn't really supported by Clang now, see + # http://llvm.org/bugs/show_bug.cgi?id=16821. + # It seems to work fine with Ubuntu 12 headers though, so use it in + # official builds. + # + # Non-chromium code is not guaranteed to compile cleanly with + # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are + # disabled, so only do that for Release build. + defines += [ "_FORTIFY_SOURCE=2" ] + } + + if (is_clang) { + cflags += [ + # Warn on missing break statements at the end of switch cases. + # For intentional fallthrough, use FALLTHROUGH; from + # base/compiler_specific.h + # "-Wimplicit-fallthrough", + + # Thread safety analysis. See base/thread_annotations.h and + # https://clang.llvm.org/docs/ThreadSafetyAnalysis.html + "-Wthread-safety", + ] + } + + configs = [ ":default_warnings" ] +} + +config("no_chromium_code_warnings") { + cflags = [] + + # GCC may emit unsuppressible warnings so don't add -Werror for no chromium + # code. crbug.com/589724 + if (treat_warnings_as_errors && is_clang) { + cflags += [ "-Werror" ] + ldflags = [ "-Werror" ] + } + if (is_clang && !is_nacl) { + cflags += [ "-Wall" ] + } + + if (is_clang) { + cflags += [ + # Lots of third-party libraries have unused variables. Instead of + # suppressing them individually, we just blanket suppress them here. + "-Wno-unused-variable", + ] + } + + configs = [ ":default_warnings" ] +} + +# rtti ---------------------------------------------------------------- +# +# Allows turning Run-Time Type Identification on or off. + +config("rtti") { + cflags_cc = [ "-frtti" ] +} + +config("no_rtti") { + # Some sanitizer configs may require RTTI to be left enabled globally + if (!use_rtti) { + cflags_cc = [ "-fno-rtti" ] + cflags_objcc = cflags_cc + } +} + +# export_dynamic --------------------------------------------------------------- +# +# Ensures all exported symbols are added to the dynamic symbol table. This is +# necessary to expose Chrome's custom operator new() and operator delete() (and +# other memory-related symbols) to libraries. Otherwise, they might +# (de)allocate memory on a different heap, which would spell trouble if pointers +# to heap-allocated memory are passed over shared library boundaries. +config("export_dynamic") { + if (is_desktop_linux || export_libcxxabi_from_executables) { + ldflags = [ "-rdynamic" ] + } +} + +# thin_archive ----------------------------------------------------------------- +# +# Enables thin archives on posix. Regular archives directly include the object +# files used to generate it. Thin archives merely reference the object files. +# This makes building them faster since it requires less disk IO, but is +# inappropriate if you wish to redistribute your static library. +# This config is added to the global config, so thin archives should already be +# enabled. If you want to make a distributable static library, you need to do 2 +# things: +# 1. Set complete_static_lib so that all dependencies of the library make it +# into the library. See `gn help complete_static_lib` for details. +# 2. Remove the thin_archive config, so that the .a file actually contains all +# .o files, instead of just references to .o files in the build directory +config("thin_archive") { + # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't + # have a "thin archive" mode (it does accept -T, but it means truncating + # archive names to 16 characters, which is not what we want). + if (is_posix && !is_nacl && !is_mac) { + arflags = [ "-T" ] + } +} + +# exceptions ------------------------------------------------------------------- +# +# Allows turning Exceptions on or off. + +config("exceptions") { + cflags_cc = [ "-fexceptions" ] + cflags_objcc = cflags_cc +} + +config("no_exceptions") { + cflags_cc = [ "-fno-exceptions" ] + cflags_objcc = cflags_cc +} + +# Optimization ----------------------------------------------------------------- +# +# The BUILDCONFIG file sets the "default_optimization" config on targets by +# default. It will be equivalent to either "optimize" (release) or +# "no_optimize" (debug) optimization configs. +# +# You can override the optimization level on a per-target basis by removing the +# default config and then adding the named one you want: +# +# configs -= [ "//build/config/compiler:default_optimization" ] +# configs += [ "//build/config/compiler:optimize_max" ] + +# Shared settings for both "optimize" and "optimize_max" configs. +# IMPORTANT: On Windows "/O1" and "/O2" must go before the common flags. +common_optimize_on_cflags = [] +common_optimize_on_ldflags = [ + # Warn in case of text relocations. + "-Wl,--warn-shared-textrel", +] + +config("default_stack_frames") { + if (is_posix) { + if (enable_frame_pointers) { + cflags = [ "-fno-omit-frame-pointer" ] + } else { + cflags = [ "-fomit-frame-pointer" ] + } + } + # On Windows, the flag to enable framepointers "/Oy-" must always come after + # the optimization flag [e.g. "/O2"]. The optimization flag is set by one of + # the "optimize" configs, see rest of this file. The ordering that cflags are + # applied is well-defined by the GN spec, and there is no way to ensure that + # cflags set by "default_stack_frames" is applied after those set by an + # "optimize" config. Similarly, there is no way to propagate state from this + # config into the "optimize" config. We always apply the "/Oy-" config in the + # definition for common_optimize_on_cflags definition, even though this may + # not be correct. +} + +# Default "optimization on" config. +config("optimize") { + if (optimize_for_size && !is_nacl) { + # Favor size over speed. + if (is_clang) { + cflags = [ "-O2" ] + common_optimize_on_cflags + } else { + cflags = [ "-Os" ] + common_optimize_on_cflags + } + } else { + cflags = [ "-O2" ] + common_optimize_on_cflags + } + ldflags = common_optimize_on_ldflags +} + +# Same config as 'optimize' but without the WPO flag. +config("optimize_no_wpo") { + if (optimize_for_size && !is_nacl) { + # Favor size over speed. + if (is_clang) { + cflags = [ "-Oz" ] + common_optimize_on_cflags + } else { + cflags = [ "-Os" ] + common_optimize_on_cflags + } + } else if (optimize_for_fuzzing) { + cflags = [ "-O0" ] + common_optimize_on_cflags + } else { + cflags = [ "-O2" ] + common_optimize_on_cflags + } + ldflags = common_optimize_on_ldflags +} + +# Turn off optimizations. +config("no_optimize") { + if (!ft_full_debug) { + # On fangtian we kind of optimize some things that don't affect debugging + # much even when optimization is disabled to get the binary size down. + if (is_clang) { + cflags = [ "-Oz" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + } else { + cflags = [ "-Os" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + } + } else { + # On ft_full_debug mode, we close all optimization + cflags = [ "-O0" ] + ldflags = [] + } +} + +# Turns up the optimization level. On Windows, this implies whole program +# optimization and link-time code generation which is very expensive and should +# be used sparingly. +config("optimize_max") { + ldflags = common_optimize_on_ldflags + if (optimize_for_fuzzing) { + cflags = [ "-O0" ] + common_optimize_on_cflags + } else { + cflags = [ "-O2" ] + common_optimize_on_cflags + } +} + +# This config can be used to override the default settings for per-component +# and whole-program optimization, optimizing the particular target for speed +# instead of code size. This config is exactly the same as "optimize_max" +# except that we use -O3 instead of -O2 on non-win, non-IRT platforms. +config("optimize_speed") { + ldflags = common_optimize_on_ldflags + if (optimize_for_fuzzing) { + cflags = [ "-O0" ] + common_optimize_on_cflags + } else { + cflags = [ "-O3" ] + common_optimize_on_cflags + } +} + +config("optimize_fuzzing") { + cflags = [ "-O0" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +} + +# The default optimization applied to all targets. This will be equivalent to +# either "optimize" or "no_optimize", depending on the build flags. +config("default_optimization") { + if (is_debug) { + configs = [ ":no_optimize" ] + } else if (optimize_for_fuzzing) { + assert(!is_win, "Fuzzing optimize level not supported on Windows") + + # # Coverage build is quite slow. Using "optimize_for_fuzzing" makes it even + # # slower as it uses "-O1" instead of "-O3". Prevent that from happening. + # assert(!use_clang_coverage, + # "optimize_for_fuzzing=true should not be used with " + + # "use_clang_coverage=true.") + configs = [ ":optimize_fuzzing" ] + } else { + # configs = [ ":optimize" ] + configs = [ ":optimize_speed" ] + } +} + +# Symbols ---------------------------------------------------------------------- + +# The BUILDCONFIG file sets the "default_symbols" config on targets by +# default. It will be equivalent to one the three specific symbol levels. +# +# You can override the symbol level on a per-target basis by removing the +# default config and then adding the named one you want: +# +# configs -= [ "//build/config/compiler:default_symbols" ] +# configs += [ "//build/config/compiler:symbols" ] + +# Full symbols. +config("symbols") { + cflags = [] + if (current_cpu == "arm") { + # dump_syms has issues with dwarf4 on arm, https://crbug.com/744956 + # + # debug fission needs DWARF DIEs to be emitted at version 4. + # Chrome OS emits Debug Frame in DWARF1 to make breakpad happy. [1] + # Unless fangtian needs debug fission, DWARF3 is the simplest solution. + # + # [1] crrev.com/a81d5ade0b043208e06ad71a38bcf9c348a1a52f + cflags += [ "-gdwarf-3" ] + } + if (!ft_full_debug) { + cflags += [ "-g2" ] + } else { + # Set -g3 symbol level when ft_full_debug is true + cflags += [ "-g3" ] + } + + asmflags = cflags + ldflags = [] + + if (!is_mac && !is_nacl && current_cpu != "x86" && (use_gold || use_lld)) { + if (is_clang) { + # This flag enables the GNU-format pubnames and pubtypes sections, + # which lld needs in order to generate a correct GDB index. + cflags += [ "-ggnu-pubnames" ] + } + # FIXME + # ldflags += [ "-Wl,--gdb-index" ] + } +} + +# Minimal symbols. +# This config guarantees to hold symbol for stack trace which are shown to user +# when crash happens in unittests running on buildbot. +config("minimal_symbols") { + cflags = [] + if (current_cpu == "arm") { + # dump_syms has issues with dwarf4 on arm, https://crbug.com/744956 + cflags += [ "-gdwarf-3" ] + } + cflags += [ "-g1" ] + ldflags = [] + if (is_ft && is_clang) { + # fangtian defaults to symbol_level=1 builds in production builds + # (https://crbug.com/648948), but clang, unlike gcc, doesn't emit + # DW_AT_linkage_name in -g1 builds. -fdebug-info-for-profiling enables + # that (and a bunch of other things we don't need), so that we get + # qualified names in stacks. + cflags += [ "-fdebug-info-for-profiling" ] + } + + # Note: -gsplit-dwarf implicitly turns on -g2 with clang, so don't pass it. + asmflags = cflags +} + +# No symbols. +config("no_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags + } +} + +# Default symbols. +config("default_symbols") { + if (symbol_level == 0) { + configs = [ ":no_symbols" ] + } else if (symbol_level == 1) { + configs = [ ":minimal_symbols" ] + } else if (symbol_level == 2) { + configs = [ ":symbols" ] + } else { + assert(false) + } + + # This config is removed by base unittests app. + if (is_ft && is_clang && strip_debug_info) { + configs += [ ":strip_debug" ] + } +} + +config("strip_debug") { + if (!defined(ldflags)) { + ldflags = [] + } + ldflags += [ "-Wl,--strip-debug" ] +} + +config("no_common") { + if (is_clang) { + cflags = [ "-fno-common" ] + asmflags = cflags + } +} diff --git a/build/gn/configs/compiler/compiler.gni b/build/gn/configs/compiler/compiler.gni new file mode 100755 index 0000000..d8683ff --- /dev/null +++ b/build/gn/configs/compiler/compiler.gni @@ -0,0 +1,71 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/gn/configs/sanitizers/sanitizers.gni") +import("//build/gn/configs/fangtian/abi.gni") + +declare_args() { + # How many symbols to include in the build. This affects the performance of + # the build since the symbols are large and dealing with them is slow. + # 2 means regular build with symbols. + # 1 means minimal symbols, usually enough for backtraces only. Symbols with + # internal linkage (static functions or those in anonymous namespaces) may not + # appear when using this level. + # 0 means no symbols. + # -1 means auto-set according to debug/release and platform. + symbol_level = -1 + + # ohos-only: Strip the debug info of libraries within lib.unstripped to + # reduce size. As long as symbol_level > 0, this will still allow stacks to be + # symbolized. + strip_debug_info = false + + # Whether or not we should use position independent code. + use_pic = true +} + +# If `symbol_level` wasn't manually set, set to an appropriate default. +assert(symbol_level >= -1 && symbol_level <= 2, "Invalid symbol_level") +if (symbol_level == -1) { + if (use_order_profiling) { + # With instrumentation enabled, debug info puts libchrome.so over 4gb, which + # causes the linker to produce an invalid ELF. http://crbug.com/574476 + symbol_level = 0 + } else if (!is_component_build && + !(ft_64bit_target_cpu && !build_app_secondary_abi)) { + # Reduce symbol level when it will cause invalid elf files to be created + # (due to file size). https://crbug.com/648948. + symbol_level = 1 + } else if ((!is_nacl && !is_linux) || is_debug || is_official_build) { + # Linux builds slower by having symbols as part of the target binary, + # whereas Mac and Windows have them separate, so in Release Linux, default + # them off, but keep them on for Official builds and Chromecast builds. + symbol_level = 2 + } else if (using_sanitizer) { + # Sanitizers need line table info for stack traces. They don't need type + # info or variable info, so we can leave that out to speed up the build. + # Sanitizers also require symbols for filename suppressions to work. + symbol_level = 1 + } else { + symbol_level = 0 + } +} + +# If true, optimize for size. Does not affect windows builds. +# Linux & Mac favor speed over size. +optimize_for_size = is_ft + +declare_args() { + # Set to true to use lld, the LLVM linker. This flag may be used on Windows, + # Linux. + use_lld = is_clang && + (is_linux && current_cpu == "x64") +} + +declare_args() { + # Whether to use the gold linker from binutils instead of lld or bfd. + use_gold = !use_lld && + (is_linux && (current_cpu == "x64" || current_cpu == "x86" || + current_cpu == "arm")) +} diff --git a/build/gn/configs/fangtian/BUILD.gn b/build/gn/configs/fangtian/BUILD.gn new file mode 100755 index 0000000..f87245f --- /dev/null +++ b/build/gn/configs/fangtian/BUILD.gn @@ -0,0 +1,161 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("config.gni") + +import("//build/gn/configs/compiler/compiler.gni") + +# This is included by reference in the //build/gn/configs/compiler config that +# is applied to all targets. It is here to separate out the logic that is +# ohos-only. +config("compiler") { + cflags = [ + "-ffunction-sections", + "-fno-short-enums", + "-ferror-limit=10" + ] + defines = [ + # The NDK has these things, but doesn't define the constants to say that it + # does. Define them here instead. + "HAVE_SYS_UIO_H", + ] + + ldflags = [ + "-Wl,--no-undefined", + "-Wl,--exclude-libs=libunwind.a", + "-Wl,--exclude-libs=libc++.a", + + # Don't allow visible symbols from libraries that contain + # assembly code with symbols that aren't hidden properly. + # http://crbug.com/448386 + "-Wl,--exclude-libs=libvpx_assembly_arm.a", + ] + + if (use_musl_oh) { + # cflags += [ "--target=$abi_target" ] + # ldflags += [ "--target=$abi_target" ] + # include_dirs = [ "${musl_sysroot}/usr/include/${abi_target}" ] + } + + # Assign any flags set for the C compiler to asmflags so that they are sent + # to the assembler. + asmflags = cflags +} + +# This is included by reference in the //build/config/compiler:runtime_library +# config that is applied to all targets. It is here to separate out the logic +# that is ohos-only. Please see that target for advice on what should go in +# :runtime_library vs. :compiler. +config("runtime_library") { + defines = [ + "__GNU_SOURCE=1", # Necessary for clone(). + # "CHROMIUM_CXX_TWEAK_INLINES", # Saves binary size. + ] + + ldflags = [] + + # We add this parameter to speed up link process, enable_lto_O0 default is false. + if (!is_mac && !is_win && use_lld && enable_lto_O0) { + ldflags += [ "-Wl,--lto-O0" ] + } + + # Config musl runtime library + if (use_musl) { + prebuilt_libcxx_path = project_root_dir + "/prebuilts/llvm" + + # Ignore std libs + ldflags += [ + "-nostdlib", + "-nostdlib++" + ] + + # Add C preprocessor defines. + defines += [ + "__MUSL__", + # "_LIBCPP_HAS_MUSL_LIBC", + ] + if (is_clang) { + defines += ["__BUILD_LINUX_WITH_CLANG"] + } + + # Add libraries to link, because we have set `-nostdlib` ld flag + libs = [] + + if (current_cpu == "arm") { + # arm builds of libc++ starting in NDK r12 depend on unwind. + libs += [ "unwind" ] + } + + if (use_musl_oh) { + # ldflags += [ + # "-L" + rebase_path("${musl_sysroot}/usr/lib/${abi_target}", root_build_dir), + # "-L" + rebase_path("${clang_base_path}/lib/clang/12.0.1/lib/${abi_target}", + # root_build_dir), + # ] + # TODO: musl_oh + assert(false, "[GN ERROR] Unsupport musl_oh for toolchain currently.") + } else { + # same as `-L` + lib_dirs = [ + "/usr/musl/lib", # musl C lib dir + "/usr/lib64/clang/12.0.1/lib/linux", # clang_rt dir + "${prebuilt_libcxx_path}/lib", # llvm C++ lib + ] + + # Add libc++ search path + ldflags += [ + "-Wl,-rpath,/usr/lib64", + "-Wl,-rpath,/usr/local/lib64", + ] + + if (current_cpu == "x64") { + libs += [ + # rebase_path(libclang_rt_file), + "/usr/lib64/clang/12.0.1/lib/libclang_rt.builtins-x86_64.a", + ] + } else { + assert(false, "[GN ERROR] Unsupported CPU for clang_rt.") + } + } + + libs += [ + "c", + # "/usr/musl/lib/libc.a", + + "c++", + "c++abi", + ] + + cflags = [ + # using musl include dir + "-nostdinc", + "--sysroot", "/usr/musl", + "-isystem", "/usr/musl/include", + ] + + cflags_cc = [ + # using libc++ include dir + "-nostdinc++", + "-I${prebuilt_libcxx_path}/include/c++/v1", + "-I/usr/lib64/clang/12.0.1/include" + ] + + if (current_cpu == "arm" && arm_version == 6) { + libs += [ "atomic" ] + } + } +} + +config("executable_config") { + # Option: enable PIE(Position Independent Executable), for security. + cflags = [ "-fPIE" ] + asmflags = [ "-fPIE" ] + ldflags = [ "-pie" ] + + # Option: enable dynamic linking and disable copy relocation for shared lib. + ldflags += [ + "-Bdynamic", + "-Wl,-z,nocopyreloc", + ] +} diff --git a/build/gn/configs/fangtian/abi.gni b/build/gn/configs/fangtian/abi.gni new file mode 100755 index 0000000..aa729f3 --- /dev/null +++ b/build/gn/configs/fangtian/abi.gni @@ -0,0 +1,70 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Logic separated out from config.gni so that it can be used by compiler.gni +# without introducing a circular dependency. + +assert(is_ft) + +declare_args() { + # Adds intrumentation to each function. Writes a file with the order that + # functions are called at startup. + use_order_profiling = false + + # Only effective if use_order_profiling = true. When this is true, + # instrumentation switches from startup profiling after a delay, and + # then waits for a devtools memory dump request to dump all + # profiling information. When false, the same delay is used to switch from + # startup, and then after a second delay all profiling information is dumped. + devtools_instrumentation_dumping = false + + # Builds secondary abi for APPs, supports build 32-bit arch as secondary + # abi in 64-bit Monochrome and WebView. + build_app_secondary_abi = true +} + +assert(!devtools_instrumentation_dumping || use_order_profiling, + "devtools_instrumentation_dumping requires use_order_profiling") + +if (current_cpu == "x86") { + ft_app_abi = "x86" +} else if (current_cpu == "arm") { + import("//build/config/arm.gni") + if (arm_version < 7) { + ft_app_abi = "armeabi" + } else { + ft_app_abi = "armeabi-v7a" + } +# } else if (current_cpu == "x86_64") { +} else if (current_cpu == "x64") { + ft_app_abi = "x64" +} else if (current_cpu == "arm64") { + ft_app_abi = "arm64-v8a" +} else { + assert(false, "Unknown ABI: " + current_cpu) +} + +# if (target_cpu == "arm64" || target_cpu == "x86_64") { +if (target_cpu == "arm64" || target_cpu == "x64") { + ft_64bit_target_cpu = true +} else if (target_cpu == "arm" || target_cpu == "x86") { + ft_64bit_target_cpu = false +} else { + assert(false, "Unknown target CPU: $target_cpu") +} + +# Intentionally do not define ft_app_secondary_abi_cpu and +# ft_app_secondary_abi for 32-bit target_cpu, since they are not used. +if (target_cpu == "arm64") { + ft_secondary_abi_cpu = "arm" + ft_app_secondary_abi = "armeabi-v7a" +} else if (target_cpu == "x64") { + ft_secondary_abi_cpu = "x86" + ft_app_secondary_abi = "x86" +} + +if (defined(ft_secondary_abi_cpu)) { + ft_secondary_abi_toolchain = + "//build/gn/toolchain/linux:clang_${ft_secondary_abi_cpu}" +} diff --git a/build/gn/configs/fangtian/config.gni b/build/gn/configs/fangtian/config.gni new file mode 100755 index 0000000..583782e --- /dev/null +++ b/build/gn/configs/fangtian/config.gni @@ -0,0 +1,18 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +if (is_ft) { + import("abi.gni") + + # Tips: same as `musl_target_triple` in //third_party/musl/musl_config.gni + if (current_cpu == "arm") { + abi_target = "arm-linux-fangtian" + } else if (current_cpu == "arm64") { + abi_target = "arm64-linux-fangtian" + } else if (current_cpu == "x64" || current_cpu == "x86_64") { + abi_target = "x64-linux-fangtian" + } else { + assert(false, "[GN ERROR] Not support cpu architecture.") + } +} diff --git a/build/gn/configs/sanitizers/sanitizers.gni b/build/gn/configs/sanitizers/sanitizers.gni new file mode 100755 index 0000000..257cabb --- /dev/null +++ b/build/gn/configs/sanitizers/sanitizers.gni @@ -0,0 +1,133 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +declare_args() { + # Compile for Address Sanitizer to find memory bugs. + is_asan = false + + # Customize asan detection. + asan_detector = false + + # Compile for Leak Sanitizer to find leaks. + is_lsan = false + + # Compile for Memory Sanitizer to find uninitialized reads. + is_msan = false + + # Compile for Thread Sanitizer to find threading bugs. + is_tsan = false + + # Compile for Undefined Behavior Sanitizer to find various types of + # undefined behavior (excludes vptr checks). + is_ubsan = false + + # Halt the program if a problem is detected. + is_ubsan_no_recover = false + + # Compile for Undefined Behavior Sanitizer's null pointer checks. + is_ubsan_null = false + + # Compile for Undefined Behavior Sanitizer's vptr checks. + is_ubsan_vptr = false + + # Compile with SafeStack shadow stack support. + is_safestack = false + + # Track where uninitialized memory originates from. From fastest to slowest: + # 0 - no tracking, 1 - track only the initial allocation site, 2 - track the + # chain of stores leading from allocation site to use site. + msan_track_origins = 2 + + # Use dynamic libraries instrumented by one of the sanitizers instead of the + # standard system libraries. Set this flag to download prebuilt binaries from + # GCS. + use_prebuilt_instrumented_libraries = false + + # Use dynamic libraries instrumented by one of the sanitizers instead of the + # standard system libraries. Set this flag to build the libraries from source. + use_locally_built_instrumented_libraries = false + + # Compile with Control Flow Integrity to protect virtual calls and casts. + # See http://clang.llvm.org/docs/ControlFlowIntegrity.html + is_cfi = target_os == "linux" && !is_chromeos && target_cpu == "x64" && + is_official_build + + # Enable checks for bad casts: derived cast and unrelated cast. + use_cfi_cast = false + + # Enable checks for indirect function calls via a function pointer. + use_cfi_icall = target_os == "linux" && !is_chromeos && target_cpu == "x64" && + is_official_build + + # Print detailed diagnostics when Control Flow Integrity detects a violation. + use_cfi_diag = false + + # Let Control Flow Integrity continue execution instead of crashing when + # printing diagnostics (use_cfi_diag = true). + use_cfi_recover = false + + # Compile for fuzzing with LLVM LibFuzzer. + # See http://www.chromium.org/developers/testing/libfuzzer + use_libfuzzer = false + + # Compile for fuzzing with AFL. + use_afl = false + + # Enables core ubsan security features. Will later be removed once it matches + # is_ubsan. + is_ubsan_security = false + + # Compile for fuzzing with Dr. Fuzz + # See http://www.chromium.org/developers/testing/dr-fuzz + use_drfuzz = false + + # Helper variable for testing builds with disabled libfuzzer. + # Not for client use. + disable_libfuzzer = false + + # Optimize for coverage guided fuzzing (balance between speed and number of + # branches). Can be also used to remove non-determinism and other issues. + optimize_for_fuzzing = false + + # Value for -fsanitize-coverage flag. Setting this causes + # use_sanitizer_coverage to be enabled. + # This flag is not used for libFuzzer (use_libfuzzer=true) unless we are on + # Mac. Instead, we use: + # -fsanitize=fuzzer-no-link + # Default value when unset and use_fuzzing_engine=true: + # trace-pc-guard + # Default value when unset and use_sanitizer_coverage=true: + # trace-pc-guard,indirect-calls + sanitizer_coverage_flags = "" +} + +is_v8_host_toolchain = + current_toolchain == "//build/gn/toolchain/linux:clang_x64_v8_arm64" || + current_toolchain == "//build/gn/toolchain/linux:clang_x86_v8_arm" + +# Disable sanitizers for non-default toolchains. +if (current_toolchain == host_toolchain || is_v8_host_toolchain) { + is_asan = false + is_cfi = false + is_lsan = false + is_msan = false + is_tsan = false + is_ubsan = false + is_ubsan_null = false + is_ubsan_no_recover = false + is_ubsan_security = false + is_ubsan_vptr = false + msan_track_origins = 0 + sanitizer_coverage_flags = "" + use_afl = false + use_cfi_diag = false + use_cfi_recover = false + use_drfuzz = false + use_libfuzzer = false + use_prebuilt_instrumented_libraries = false + use_locally_built_instrumented_libraries = false + use_sanitizer_coverage = false +} + +using_sanitizer = false diff --git a/build/gn/fangtian.gni b/build/gn/fangtian.gni new file mode 100755 index 0000000..f4b75d5 --- /dev/null +++ b/build/gn/fangtian.gni @@ -0,0 +1,20 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/gn/templates/build_targets.gni") + +declare_args() { + is_fangtian_build = true + +} + diff --git a/build/gn/templates/build_targets.gni b/build/gn/templates/build_targets.gni new file mode 100755 index 0000000..6e453a1 --- /dev/null +++ b/build/gn/templates/build_targets.gni @@ -0,0 +1,17 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/gn/templates/ft_executable.gni") +import("//build/gn/templates/ft_shared_library.gni") +import("//build/gn/templates/ft_source_set.gni") +import("//build/gn/templates/ft_static_library.gni") diff --git a/build/gn/templates/ft_executable.gni b/build/gn/templates/ft_executable.gni new file mode 100755 index 0000000..37257f7 --- /dev/null +++ b/build/gn/templates/ft_executable.gni @@ -0,0 +1,92 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# wrapper of target `executable()` +# +# parameters: +# - subsystem_name: subsystem name, default is "common" +# - part_name: part name, default is subsystem_name +# - configs: configs to add +# - remove_configs: configs to remove +# - use_exceptions: use exceptions, default is false +# - use_rtti: use rtti, default is false +template("ft_executable") { + if (defined(invoker.output_dir)) { + output_dir = invoker.output_dir + } else { + # Handle subsystem & part_name + if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { + subsystem_name = invoker.subsystem_name + part_name = invoker.part_name + } else if (defined(invoker.part_name)) { + assert("false", "Please set 'subsystem_name' for 'part_name'") + } else if (defined(invoker.subsystem_name)) { + subsystem_name = invoker.subsystem_name + part_name = subsystem_name + } else { + subsystem_name = "common" + part_name = subsystem_name + } + assert(subsystem_name != "", + "[GN ERROR] Internal error, please contact maintainer.") + assert(part_name != "", + "[GN ERROR] Internal error, please contact maintainer.") + + # Change output dir + # TODO: handle ft_test + output_dir = "${root_out_dir}/${subsystem_name}/${part_name}" + } + + # Call `executable()` + executable("${target_name}") { + forward_variables_from(invoker, + "*", + [ + # variable_to_not_forward_list + "configs", + "remove_configs", + #"static_link", + #"external_deps", + #"install_images", + #"module_install_dir", + #"relative_install_dir", + #"symlink_target_name", + "output_dir", + #"install_enable", + #"version_script", + #"license_file", + #"license_as_sources", + "use_exceptions", + "use_rtti", + ]) + if (defined(invoker.configs)) { + configs += invoker.configs + } + + if (defined(invoker.remove_configs)) { + configs -= invoker.remove_configs + } + + if (defined(invoker.use_exceptions) && invoker.use_exceptions) { + configs += [ "//build/gn/configs/compiler:exceptions" ] + configs -= [ "//build/gn/configs/compiler:no_exceptions" ] + } + + if (defined(invoker.use_rtti) && invoker.use_rtti) { + configs += [ "//build/gn/configs/compiler:rtti" ] + configs -= [ "//build/gn/configs/compiler:no_rtti" ] + } + } + + output_dir = output_dir +} diff --git a/build/gn/templates/ft_shared_library.gni b/build/gn/templates/ft_shared_library.gni new file mode 100755 index 0000000..b5b8977 --- /dev/null +++ b/build/gn/templates/ft_shared_library.gni @@ -0,0 +1,85 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# wrapper of target `shared_library()` +# +# parameters: +# - subsystem_name: subsystem name, default is "common" +# - part_name: part name, default is subsystem_name +# - configs: configs to add +# - remove_configs: configs to remove +# - use_exceptions: use exceptions, default is false +# - use_rtti: use rtti, default is false +template("ft_shared_library") { + # Handle subsystem & part_name + if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { + subsystem_name = invoker.subsystem_name + part_name = invoker.part_name + } else if (defined(invoker.part_name)) { + assert("false", "Please set 'subsystem_name' for 'part_name'") + } else if (defined(invoker.subsystem_name)) { + subsystem_name = invoker.subsystem_name + part_name = subsystem_name + } else { + subsystem_name = "common" + part_name = subsystem_name + } + assert(subsystem_name != "", + "[GN ERROR] Internal error, please contact maintainer.") + assert(part_name != "", + "[GN ERROR] Internal error, please contact maintainer.") + + # Change output dir + output_dir = "${root_out_dir}/${subsystem_name}/${part_name}" + + # Call `shared_library()` + shared_library("${target_name}") { + forward_variables_from(invoker, + "*", + [ + # variable_to_not_forward_list + "configs", + "remove_configs", + #"no_default_deps", + #"external_deps", + #"install_images", + #"module_install_dir", + #"relative_install_dir", + #"symlink_target_name", + "output_dir", + #"install_enable", + #"version_script", + #"license_file", + #"license_as_sources", + "use_exceptions", + "use_rtti", + #"stl", + ]) + if (defined(invoker.configs)) { + configs += invoker.configs + } + if (defined(invoker.remove_configs)) { + configs -= invoker.remove_configs + } + + if (defined(invoker.use_exceptions) && invoker.use_exceptions) { + configs += [ "//build/gn/configs/compiler:exceptions" ] + configs -= [ "//build/gn/configs/compiler:no_exceptions" ] + } + + if (defined(invoker.use_rtti) && invoker.use_rtti) { + configs += [ "//build/gn/configs/compiler:rtti" ] + configs -= [ "//build/gn/configs/compiler:no_rtti" ] + } + } +} diff --git a/build/gn/templates/ft_source_set.gni b/build/gn/templates/ft_source_set.gni new file mode 100755 index 0000000..e97beab --- /dev/null +++ b/build/gn/templates/ft_source_set.gni @@ -0,0 +1,70 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# wrapper of target `source_set()` +# +# parameters: +# - subsystem_name: subsystem name, default is "common" +# - part_name: part name, default is subsystem_name +# - configs: configs to add +# - remove_configs: configs to remove +# - use_exceptions: use exceptions, default is false +# - use_rtti: use rtti, default is false +template("ft_source_set") { + # Handle subsystem & part_name + if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { + part_name = invoker.part_name + } else if (defined(invoker.part_name)) { + part_name = invoker.part_name + } else if (defined(invoker.subsystem_name)) { + part_name = invoker.subsystem_name + } else { + part_name = "common" + } + assert(part_name != "", + "[GN ERROR] Internal error, please contact maintainer.") + + # Call `source_set()` + source_set("${target_name}") { + forward_variables_from(invoker, + "*", + [ + # variable_to_not_forward_list + "configs", + "remove_configs", + #"no_default_deps", + #"external_deps", + #"license_file", + #"license_as_sources", + "use_exceptions", + "use_rtti", + "subsystem_name", + ]) + if (defined(invoker.configs)) { + configs += invoker.configs + } + if (defined(invoker.remove_configs)) { + configs -= invoker.remove_configs + } + + if (defined(invoker.use_exceptions) && invoker.use_exceptions) { + configs += [ "//build/gn/configs/compiler:exceptions" ] + configs -= [ "//build/gn/configs/compiler:no_exceptions" ] + } + + if (defined(invoker.use_rtti) && invoker.use_rtti) { + configs += [ "//build/gn/configs/compiler:rtti" ] + configs -= [ "//build/gn/configs/compiler:no_rtti" ] + } + } +} diff --git a/build/gn/templates/ft_static_library.gni b/build/gn/templates/ft_static_library.gni new file mode 100755 index 0000000..2451ec6 --- /dev/null +++ b/build/gn/templates/ft_static_library.gni @@ -0,0 +1,70 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# wrapper of target `static_library()` +# +# parameters: +# - subsystem_name: subsystem name, default is "common" +# - part_name: part name, default is subsystem_name +# - configs: configs to add +# - remove_configs: configs to remove +# - use_exceptions: use exceptions, default is false +# - use_rtti: use rtti, default is false +template("ft_static_library") { + # Handle subsystem & part_name + if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { + part_name = invoker.part_name + } else if (defined(invoker.part_name)) { + part_name = invoker.part_name + } else if (defined(invoker.subsystem_name)) { + part_name = invoker.subsystem_name + } else { + part_name = "common" + } + assert(part_name != "", + "[GN ERROR] Internal error, please contact maintainer.") + + # Call `static_library()` + static_library("${target_name}") { + forward_variables_from(invoker, + "*", + [ + # variable_to_not_forward_list + "configs", + "remove_configs", + #"no_default_deps", + #"external_deps", + #"license_file", + #"license_as_sources", + "use_exceptions", + "use_rtti", + "subsystem_name", + ]) + if (defined(invoker.configs)) { + configs += invoker.configs + } + if (defined(invoker.remove_configs)) { + configs -= invoker.remove_configs + } + + if (defined(invoker.use_exceptions) && invoker.use_exceptions) { + configs += [ "//build/gn/configs/compiler:exceptions" ] + configs -= [ "//build/gn/configs/compiler:no_exceptions" ] + } + + if (defined(invoker.use_rtti) && invoker.use_rtti) { + configs += [ "//build/gn/configs/compiler:rtti" ] + configs -= [ "//build/gn/configs/compiler:no_rtti" ] + } + } +} diff --git a/build/gn/toolchain/cc_wrapper.gni b/build/gn/toolchain/cc_wrapper.gni new file mode 100755 index 0000000..0c68270 --- /dev/null +++ b/build/gn/toolchain/cc_wrapper.gni @@ -0,0 +1,51 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Defines the configuration of cc wrapper +# ccache: a c/c++ compiler cache which can greatly reduce recompilation times. +# icecc, distcc: it takes compile jobs from a build and distributes them among +# remote machines allowing a parallel build. +# +# TIPS +# +# 1) ccache +# Set clang_use_chrome_plugins=false if using ccache 3.1.9 or earlier, since +# these versions don't support -Xclang. (3.1.10 and later will silently +# ignore -Xclang, so it doesn't matter if you disable clang_use_chrome_plugins +# or not). +# +# Use ccache 3.2 or later to avoid clang unused argument warnings: +# https://bugzilla.samba.org/show_bug.cgi?id=8118 +# +# To avoid -Wparentheses-equality clang warnings, at some cost in terms of +# speed, you can do: +# export CCACHE_CPP2=yes +# +# 2) icecc +# Set clang_use_chrome_plugins=false because icecc cannot distribute custom +# clang libraries. +# +# To use icecc and ccache together, set cc_wrapper = "ccache" with +# export CCACHE_PREFIX=icecc + +_cc_wrapper = "" +_ccache_exec = getenv("CCACHE_EXEC") +_use_ccache = getenv("USE_CCACHE") +if (_use_ccache == "1" && _ccache_exec != "") { + _cc_wrapper = rebase_path(_ccache_exec) +} + +declare_args() { + # Set to "ccache", "icecc" or "distcc". Probably doesn't work on windows. + cc_wrapper = _cc_wrapper +} diff --git a/build/gn/toolchain/linux/BUILD.gn b/build/gn/toolchain/linux/BUILD.gn new file mode 100755 index 0000000..124a899 --- /dev/null +++ b/build/gn/toolchain/linux/BUILD.gn @@ -0,0 +1,54 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A toolchain is a set of commands and build flags used to compile the source +# code. The toolchain() function defines these commands. + +import("//build/gn/toolchain/toolchain.gni") + +clang_toolchain("clang_x64") { + toolchain_args = { + current_cpu = "x64" + current_os = "linux" + } + + if (use_musl) { + if (use_musl_oh) { + # TODO: musl_oh + assert(false, "[GN ERROR] Unsupport musl_oh for toolchain currently.") + } + + libc_dir = rebase_path("/usr/musl/lib", root_build_dir) + # gcc_dir = rebase_path("/usr/lib/gcc/x86_64-linux-gnu/10.3.1", root_build_dir) + clang_lib_dir = rebase_path("/usr/lib64/clang/12.0.1/lib", root_build_dir) + + # CRT files + common_prefix = "${libc_dir}/crti.o" # _init and _fini + common_prefix += " ${clang_lib_dir}/clang_rt.crtbegin-x86_64.o" # impl _init for C++ + # common_prefix += " ${gcc_dir}/crtbeginS.o" + + common_suffix = "${libc_dir}/crtn.o" # _init and _fini + common_suffix += " ${clang_lib_dir}/clang_rt.crtend-x86_64.o" # impl _fini for C++ + # common_suffix += " ${gcc_dir}/crtendS.o" + + link_libs_section_prefix = "${libc_dir}/Scrt1.o" # _start, for PIEs + link_libs_section_prefix += " " + common_prefix + + link_libs_section_suffix = common_suffix + link_libs_section_suffix += " -Wl,-dynamic-linker /lib/ld-musl.so.1" # dynamic linker + + solink_libs_section_prefix = common_prefix + + solink_libs_section_suffix = common_suffix + } +} diff --git a/build/gn/toolchain/toolchain.gni b/build/gn/toolchain/toolchain.gni new file mode 100755 index 0000000..06148ae --- /dev/null +++ b/build/gn/toolchain/toolchain.gni @@ -0,0 +1,328 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Toolchain-related configuration that may be needed outside the context of the +# toolchain() rules themselves. + +import("cc_wrapper.gni") + +declare_args() { + share_ccache = "" +} + +# This template defines a toolchain for something that works with clang +# +# Optional parameters that control the tools: +# +# - cc +# - cxx +# - ld +# - asm +# - ar +# +# - link_libs_section_prefix +# - link_libs_section_suffix +# The contents of these strings, if specified, will be placed around +# the libs section of the linker line. It allows one to inject libraries +# at the beginning and end for all targets in a toolchain. +# +# - solink_libs_section_prefix +# - solink_libs_section_suffix +# Same as libs_section_{pre,post}fix except used for solink instead of link. +# +# - extra_cflags +# Extra flags to be appended when compiling C files (but not C++ files). +# - extra_cxxflags +# Extra flags to be appended when compiling C++ files (but not C files). +# - extra_ccxxflags +# Extra flags to be appended when compiling both C and C++ files. +# - extra_asmflags +# Extra flags to be appended when compiling assembly. +# - extra_ldflags +# Extra flags to be appended when linking +# +# TODO: +# - readelf +# - nm +# - strip + +template("clang_toolchain") { + # Check args + toolchain(target_name) { + assert(defined(invoker.toolchain_args), + "[GN ERROR] Toolchains must declare toolchain_args") + + toolchain_args = { + forward_variables_from(invoker.toolchain_args, "*") + } + assert(defined(toolchain_args.current_cpu), + "[GN ERROR] toolchain_args must specify a current_cpu") + assert(defined(toolchain_args.current_os), + "[GN ERROR] toolchain_args must specify a current_os") + + # ccache + if (defined(toolchain_args.cc_wrapper)) { + toolchain_cc_wrapper = toolchain_args.cc_wrapper + } else { + toolchain_cc_wrapper = cc_wrapper + } + + if (share_ccache != "") { + compiler_prefix = "CCACHE_DIR=" + share_ccache + + " CCACHE_NOHASHDIR=1 ${toolchain_cc_wrapper} " + } else { + compiler_prefix = "${toolchain_cc_wrapper} " + } + + # Set compiling/linking tools and extra values. + if (defined(invoker.cc)) { + cc = compiler_prefix + invoker.cc + } else { + cc = compiler_prefix + "clang" + } + + if (defined(invoker.cxx)) { + cxx = compiler_prefix + invoker.cxx + } else { + cxx = compiler_prefix + "clang++" + } + + if (defined(invoker.ld)) { + ld = invoker.ld + } else { + ld = cxx + } + + if (!defined(asm)) { + if (defined(invoker.asm)) { + asm = invoker.asm + } else { + asm = cc + } + } + + if (defined(invoker.ar)) { + ar = invoker.ar + } else { + ar = "llvm-ar" + } + + # if (defined(invoker.readelf)) { + # readelf = invoker.readelf + # } else { + # readelf = "llvm-readobj" + # } + + # TODO + # if (defined(invoker.nm)) { + # nm = invoker.nm + # } else { + # nm = "llvm-nm" + # } + + # Bring these into our scope for string interpolation with default values. + if (defined(invoker.link_libs_section_prefix)) { + link_libs_section_prefix = invoker.link_libs_section_prefix + } else { + link_libs_section_prefix = "" + } + + if (defined(invoker.link_libs_section_suffix)) { + link_libs_section_suffix = invoker.link_libs_section_suffix + } else { + link_libs_section_suffix = "" + } + + if (defined(invoker.solink_libs_section_prefix)) { + solink_libs_section_prefix = invoker.solink_libs_section_prefix + } else { + solink_libs_section_prefix = "" + } + + if (defined(invoker.solink_libs_section_suffix)) { + solink_libs_section_suffix = invoker.solink_libs_section_suffix + } else { + solink_libs_section_suffix = "" + } + + if (defined(invoker.extra_cflags) && invoker.extra_cflags != "") { + extra_cflags = " " + invoker.extra_cflags + } else { + extra_cflags = "" + } + + if (defined(invoker.extra_cxxflags) && invoker.extra_cxxflags != "") { + extra_cxxflags = " " + invoker.extra_cxxflags + } else { + extra_cxxflags = "" + } + + if (defined(invoker.extra_ccxxflags) && invoker.extra_ccxxflags != "") { + extra_ccxxflags = " " + invoker.extra_ccxxflags + } else { + extra_ccxxflags = "" + } + + if (defined(invoker.extra_asmflags) && invoker.extra_asmflags != "") { + extra_asmflags = " " + invoker.extra_asmflags + } else { + extra_asmflags = "" + } + + if (defined(invoker.extra_ldflags) && invoker.extra_ldflags != "") { + extra_ldflags = " " + invoker.extra_ldflags + } else { + extra_ldflags = "" + } + + # These library switches can apply to all tools below. + lib_switch = "-l" + lib_dir_switch = "-L" + + # Object files go in this directory. + object_subdir = "{{source_out_dir}}/{{label_name}}" + + # Compiler tools: C Compiler + tool("cc") { + depfile = "{{output}}.d" + depsformat = "gcc" + # command explain: + # * -MD : Write a depfile containing user and system headers + # * -MF : Write depfile output from -MMD, -MD, -MM, or -M to + # * -c : Only run preprocess, compile, and assemble steps + # * -o : Write output to + command = "$cc -MD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}${extra_ccxxflags}${extra_cflags} -c {{source}} -o {{output}}" + + description = "CC {{output}}" + + outputs = [ "$object_subdir/{{source_name_part}}.o" ] + } + + # Compiler tools: C++ compiler + tool("cxx") { + depfile = "{{output}}.d" + depsformat = "gcc" + # command explain: + # * -MD : Write a depfile containing user and system headers + # * -MF : Write depfile output from -MMD, -MD, -MM, or -M to + # * -c : Only run preprocess, compile, and assemble steps + # * -o : Write output to + command = "$cxx -MD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}}${extra_ccxxflags}${extra_cxxflags} -c {{source}} -o {{output}}" + + description = "CXX {{output}}" + + outputs = [ "$object_subdir/{{source_name_part}}.o" ] + } + + # Compiler tools: Assembler + tool("asm") { + # For GCC we can just use the C compiler to compile assembly. + depfile = "{{output}}.d" + depsformat = "gcc" + command = "$asm -MD -MF $depfile {{defines}} {{include_dirs}} {{asmflags}}${extra_asmflags} -c {{source}} -o {{output}}" + + description = "ASM {{output}}" + + outputs = [ "$object_subdir/{{source_name_part}}.o" ] + } + + # Linker tools: Linker for static libraries (archives) + tool("alink") { + # Name of the response file. If empty, no response file will be used. + rspfile = "{{output}}.rsp" + # The contents to be written to the response file. This may include all + # or part of the command to send to the tool which allows you to get + # around OS command-line length limits. + rspfile_content = "{{inputs}}" + + # command = "rm -f {{output}} && ar rcs {{output}} {{inputs}}" + command = "\"$ar\" -r -c -s -D {{output}} @\"$rspfile\"" + + description = "AR {{output}}" + + # Output files for actions and copy targets. + outputs = + [ "{{target_out_dir}}/{{target_output_name}}{{output_extension}}" ] + + # Default directory name for the output file relative to the root_build_dir. + # + # Shared libraries go in the target out directory by default so we can + # generate different targets with the same name and not have them collide. + default_output_dir = "{{target_out_dir}}" + + default_output_extension = ".a" + output_prefix = "lib" + } + + # Linker tools: Linker for shared libraries + tool("solink") { + soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so". + sofile = "{{output_dir}}/$soname" + + # Name of the response file. If empty, no response file will be used. + rspfile = soname + ".rsp" + # The contents to be written to the response file. This may include all + # or part of the command to send to the tool which allows you to get + # around OS command-line length limits. + rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_suffix" + + command = + "$ld -shared {{ldflags}}${extra_ldflags} -o \"$sofile\" -Wl,-soname=\"$soname\" @\"$rspfile\"" + + description = "SOLINK $soname" + + # Use this for {{output_extension}} expansions unless a target manually + # overrides it (in which case {{output_extension}} will be what the target + # specifies). + default_output_extension = ".so" + + # Default directory name for the output file relative to the root_build_dir. + # + # Use this for {{output_dir}} expansions unless a target manually overrides + # it (in which case {{output_dir}} will be what the target specifies). + default_output_dir = "{{root_out_dir}}" + + # Output files for actions and copy targets. + outputs = [ sofile ] + + link_output = sofile + depend_output = sofile + output_prefix = "lib" + } + + # Linker tools: Linker for executables + # TODO: strip & link wrapper + tool("link") { + # outfile = "{{target_output_name}}{{output_extension}}" + outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + + # Name of the response file. If empty, no response file will be used. + rspfile = "${outfile}.rsp" + # The contents to be written to the response file. This may include all + # or part of the command to send to the tool which allows you to get + # around OS command-line length limits. + rspfile_content = "{{inputs}}" + + command = "$ld {{ldflags}}${extra_ldflags} -o ${outfile} ${link_libs_section_prefix} -Wl,--start-group @\"${rspfile}\" {{solibs}} {{libs}} -Wl,--end-group ${link_libs_section_suffix}" + + description = "LINK ${outfile}" + + # Default directory name for the output file relative to the root_build_dir. + default_output_dir = "{{root_out_dir}}" + outputs = [ outfile ] + } + + # Other tools: Tool for creating stamp files + tool("stamp") { + command = "touch {{output}}" + description = "STAMP {{output}}" + } + + # Other tools: Tool to copy files. + tool("copy") { + command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})" + description = "COPY {{source}} {{output}}" + } + } +} diff --git a/prebuilts/build-tools/linux-x64/bin/gn b/prebuilts/build-tools/linux-x64/bin/gn new file mode 100755 index 0000000000000000000000000000000000000000..f6d02b952d1ef8d7da26b8a9d4a5b59634a58de8 GIT binary patch literal 2890280 zcmeFadwf(y(l>qr1R^3cB1pvBs8JJ9OaL_zFB2ee1|}N0C|(mTK|mlenE_OkND^ci zgYoXV>f&X0eO%W?S6P?!fdE3#byt@4!g?d3E+>pY78McHyx(tipP8P(xbE{lpZE9s z!{KvsPE~hTS65e8S6BBrEGP<&=#-Y$+0wsG)D1h%kiEmF#q_ie5)t^ zo@!-TT>*Cy98;L)Pr7?GW%r&Tsg^}F%a!Q#lFoifaqq_oWLfT=Jn_dn%O!q({iyC` zc?xvzmRG?nm(E8&|KR8M%gw#tJ*}U>?%gaW^(|NF*7B=VIel*^J4|5rZkD5La(iV- zdhW?nlJ1TsQ+cPLEw@}JfGqd)wW{3Hvs5|vZZQLY`tHiJ3sAf&wLB}eJl(qwY5e)* zuVr;C*Qm=i>T>RVxX$n1SqFdJaPc`+`-R1K#l%qU<>`$wUHAdH$s(qV^6-D<>{o?QJnbRkoJNWFGQ_h+>eRg=> zS@ZJGJ?q@T1F98#X6{qBQF_mb*izNh;z&Hxi>C$2h%@l+ca{_jH1qIPu(+Z z{`$VYj3v2ex-?jZdH7>~S2YON;`$}7pX2i2nu+T{T({tQ7?=Ai(GQp59>g^XS5I8m zL$X>rz}7;kpYKe^YUtfvcW?@w-?* zKZW~ExMtz1!&QUpP`?2{F2O~akH&QkF8&@-H~ISn{@#YGhk@((I3I`+29m>mB(7e# zq8k4TeRppQ@$eX~8MrcW1#mr%i$7YOh&-u3x8fGYRj6_Ea6c1QKU^nh-2cnlk*Mq# zTzz$=t{wk(JRFS-hwDszaL>VYqK4g@4-Y44ARBkuvi=%&Z)fA-co)F^JmZ;k^IYjQfSS25WenzVp@_SCIi#F86mi9?EfD>mqQUqMs?d zWw=ON`XtR~tx5BCBJOcqPvOcr{?6m3mcJaBI)0+JU{Cb8kAJp#CD4cbJp)1-M%R}ka%oK7Ml%n2YDdhh=@*hfnUP(cJ zVT%6!TMGIhWBG7({BiC&RJ-=1z>iKr|IHL~t4P7;Ln-95Dh2(P6#3~R`EYgo-JOC? zw-opjQ}Frw6!_UG+WS5jIg~vAl!DHp6#ZM2BLA}~_`f&>KNC~ngDLD`BnAEVQ^^0A z6!e`GbWTr!za|BpIVtcLq@dF^1^$T?@;o6${`o2Lf0Kfr6)EtWQ_%TM3VBwh$UiAX z{wGuDPg4qhu1G;=L5lp|6!Mvvf=+u1d^p9p*q)-^dsE=Ir=Wj&3Vf#&dLB+8=kHUr zw_gf6m!#nHycGDSfIqpTu>#yTMZHI*sCQ%v{M{+!(3YaTe@~HrMk;<%(5X++-hL_c z^Su;wwx_`NOu^5X6!^Rp^)61)-p5kVxhzHgQ&Y(Qg%os#q`=Qj!RN*l@@z!@lMkUk zgHq5RpF*CmrJz3|#W=kYayV4IU!|z`wG@0Fo`RppN z2c_uW>r>EqGzI^~Dd^8Y{v#3Dv2UFsy~!8|e?zt0mKXX3cK_T2I?V6ukpB-F@9%(r zRrAv}ESZi~8W>kxI;Fg-{QBwDq4KJ6#lvP+%q|}{anj6ktF-j`SrxNOt3wm3LZziD z>!CA_pFMZ_>?x&V%B#b(P)>s*%R|A5v#$?NyuN&FW%=akQ>RZJJ~1@WOb?U2j! zG0ZWheCE)J)k%cLfWeB{W64T9_t^4Kpd=0rFP~W+DleKhxx6xjta1F9iPNhOg%(~* zE2_YCXj)ap+;{A^qJ+eA+*v^#oTaZWqB2FZjGv7c(xRk95XBC zN{(3*X98(W2TyZKC(o>aeBDAbDyGl2gmtihOcQ5@rq3!bWu=qnO)S;zL&N4x50y@z zRXI~}GgWfUw9w|6l@mkL@GyHK`@a-X^T}FoW=#a`xwFb=RhNgXsg>c-WN8svPoNr^ zA&hxbt7aLE5V2KHzkc?_nbsr-k(LsOlIHd0q0(8CN+*Y_N@q=+2hmFRpvcs! z@^WcRxi!6d-jwOrPX`04;bG0^lyIfaQCd2CX6a05>vZTNSb+qm&%S{j1zCewxZ0(q zWTJ$@ri3bHPC)^rmro8^lh7xVtvS`RE32l@4o#Jo&#IVHj+|2}!lAgxrHPZODke^u zJh3`t30qXBxmD9c<#R0ZZcUv!Gh98*s=kTZVL@7;>~>kj?8)U;)hrfqQCjyzsVZ-> zDyLVn)++Lk8=5N2Oh!_5`K;2p6Cn=Bu6#CX!w?Ul>%+6rNkmY@)KBD_J{$QUo$|R_ zQtWL!T2m`3%V(ny*h6EcqA;jUwkFXKKvU3Mc75sO3g|z&etLCvP^;!dw1-)GD0s+wWfy3(E?OThUZSPFqk=}(btefdHD@Yl3_x*2|pML z$V+vvm^x+RP1Z~;Fi~E27>EGSMYAReF{`oy?I|stUL7CyWQ#rKl4UnfoC0d76m^zz ze4zxYoDChsI21$X@-8YP-3Ep=zXU6%PqC(o-k>Zk3+jbJ%9zp5?8wRr=-CuD1Dzw1 z7Y%2&iIZ=jgiEJRoIcaS=x6sz@lXX-d*bBD<<-^b!HJ>JO)yq$0u&a7v{2A%6;n|n zG_#thQgmvS1sibvWLN=imgNze%%^j$L++)G3#2D8?$&gjMtb+%{Qw}3 z^{mE)j+qX6J*_`zxVO}Qgtbn?4@v&+)?YOIdw~zLwrE)K+fDdo8y=MOuGS|yy-MhJ zv36{$?bmR)AM1zA^oGyV70SOua(wTPd@ncf+!JztFB^Dwe~4*K27Z{E8TX9_ z{s{xW#lSyl;9Cs5yVuHO$G|T$^1J>fmJ60i-}N_%H|e|nEb+^5xxdUxB?pQHE^hqi zGw^V&~p$J~C1B<@WHo_oXYZ=->C_n4Ws$-r~Z-2H7a@Q=Gl+*=Gh z_p9BXW8nL_NZi{Dyt${n&%m4e&en|yy*2mYGYq`BzwI^fKBL}D1Amf%_Zj$;4ScqN zKgGc38u%;&pKst#HSm4|f0}`}4gBc_zQn+18~6zZKF7e98F-%8aDUSbyt%huY2X>V zcYpH?Joo3_UyXt1Sq}HN*ue9wfctAS@Z9%ye-9b>JQs=kG6O%*z&~x^2O0R~2Hrg{ zz~q+=yf_uQOp}3k&kQhWqk%WiHf%ERJip-nwix&V7m0g|f#(?j_vaXR?&-U~HUrNy z5AJWDfq%+H@?MqD|BDQKhJnA>zhWXPaAmiJj`+fKioAm6&Vb%Z>c`27ao6_Z#@@4ZLmOry2MX13%rsPcZO2 z&*uKh4Ezl)68C8aex`x1H1M+w{5%8C^GEKl#=uv&NZc12_(}ucXy9)&@DCaIDg(dF zz*igirwx3_z%MuOVFUlNfuCdGn+*J11HaM0&ol6w4E#+7ev5&>*}%6L_*)FTW8mi- z_%;K7tAXEV;BPbVRw$wW3k-aQfv+*}UITx-fzLGX3k|%_z}Fi1Yy)3s;ByUpy@Ag+ z@QVz*-@xBt;B5oH*ua+<_=tg@VBnV+_%Z_@HSp66{GA5A(!e(uc!bXc>W05d4SbD( zZ#3|W4gB2(zR|$nW8fb$@b?<{Wd{B}1OK#vzu&+wH}DS__?Hd*g9g6Iz&~W*HyZe# z8Td^G{$T^Z#lZjEz_%FqM-04U;2$;cZ3g}^1HaF}|H8ok^!Sqmev-gX68K31KS|&x z3H&61pCs^;1b&jhPZIb^0zXOM{|^%Q!gIoYyY}-8JDUFZ*;$rd-xTW9zR9kAHDjHy z*M816pxaOV6n{M@`td|qB7Utc?f9Mg9^o`(ZrvpCX2P8aHwpYY;m(AY3%r(a7sAT~ zUP(BeaHGI45bjF2M&M@%Gpx~CDex17GYFRn{4n9e2$u+a58>{F{Q@r`d^q7;ffo|) zLD(no&4iC2>=n3*a8JUPz%vMQi?p@vdmv7oMA%EXMc}IlA4zzVz+(vaBHSeKD8fe( zUM}!Z!o3ME6Zm|>eF!%SJdp6wglhyogK%HMl>(nkIFoRh!2JjxL%2lXUWB=2+3FX# zJK$(;MWPCLU_5rYYAr&UMBEL!lx2$6!-&_6yvd@DRee0(T;O0b!rO`_BS=Az`n;dk9}d*b;aL;fo2k9gzMf z>?hnJ@Oy*{32zd3GvT3xn*@HH@G!#51zt;dIN@aiuOwVVxKZF22#+9KBk(hXM-r|S z_zA)`;WB|ACLADKBJe$gM-lc5yoB&*!np!3Bpf8{6ZmGr#e}^AR}sF1uqE&e!rVG* zZQC#XPq>6|i@;YAzKrlDfyWRYL%2!cQG~}5UM}!Z!s7@p6Zm|>;|VtkJdp6^glhyo zgYXrED+NB8@C3qT0{0_)CE*f*dl9~huwUTrgs&!?D{v>m*AVszy#GwV*An&$yod00 zge`%05H2O$_KoyE;WEN40>4LiBH>K}Zzep6aFf8V6P`?Xxxi})Gg#faOyHG-%Lz9M z`~u;rglhzThVb=-D+PXnFejkaGJzi^Je_cf!1oZILD(W)yOaBwDA>1PHdxUQ%yh-5AgclNS68Lq(wS<=o zyq0hs;bj7^BwSCpQQ#K{FCttc@H2$(AY3W%6NDENE))1+!V$tH0^dV;31Pp$O9)2^ z=L)=#@STKx0^dxyfv{KLD#A+%TLRA@d>7%iz0&`L8ws}vd==rl32zd34B>kSHwiq7 z@V$hW3p|wYeT0_@d_Lj(2{#HnknjV9YXm-n@PmXa1wNVZLxjr&?nn4%gi8eOMfhRD zeu29a{yE`Xfjbd?gs=~=a|;^j%;BFK`KQM%y)EbTJMgCypN^m3+p?pXdxw>zg>JN? z#|9$*3`Tb4wFe`6oR1guwt|y)+R^GpJMvyI@^vuM>b!DWZ>z2;TxK_~_fDT;0hPBI zNp@tH^SC61My<|3<<8_I`&oAL+D+G7Wg*dyG~3NhHcHsFOk3Ghptbx03JwmYL2A?0!=Kab`p+TBPS6jAVk2+B0CZTb5++&1_J zq5@Dj7ll>U54^&L_YYSx-3!B{Sjpy-W+j8-_~It~xeoQ@HMO>ZDB6q);3+$4;VYfD zkxE3=YA^BH(Zg3BjyA4J!ymih!lmDzh{W{{{S`YphzyK}X~pB}?i9shj5DV*o3QJv zc8GSnvxu0F*|Pbpc02yWwvoh#QV+_5R3jv|cXueWitiSyyw@ zG^E=Nw@SJlDavqyNM{Yb6X}75`B`2?V0f0-IYU#}gV{e$;TBC{SccPGr*BTACvmXD zqd0g$rIW)X4qit(Ik+d0-hqRsH3j-Rx{Y>&!NFpkPJhR_dR}j9LhE|`Ey~*|y>Wsw z5>O!8P02qx&k3frJHJ1?ujMSQhct5zk$OKQ+~RF6u{XkGc3QXlG5 zQ(Cy2b80Pme5W&8)4UwH?dbe0^e@Z3i$AS9p2X9&cnX5KBBGbq5omX^0gz)qk-x#8 z)<=<-DLt72I$kG>X?HPgf==5r$4$#%S~b%yK$@%P;Ol6oVPO)YyE7jMry1Jptffjr zKIfw#YkxstHAbZDWgW}F*fa4sy2M?hf;>dI;GXMb;Z9>o>@r1hUSznDa{}2rnhh>K{=mhDJ1EkbmOO zvYfv@Oimnjq8-^9Uf^5{4v_dOCO)qcV;=)?P9YG>G-4AFU5L0#BUS@3Xe1D~X~c6t zbRuGwMm!3{-9%iY5qAPnM#N}^Xq|_-${B#xD7k)l_`jE{kNwdO<7x=;Sm)sywkh6^ z=}rU)=Pg>OH}R*@`9}yDqPKYM`u5N@c5@f5?a+C{vuNk#!7C5ZZtW#7BhWq|hY2p! zU1{SYl0Zs^r7#&zNH7;nI zIAj!y7e1u4dq^!SxKq3AK1QY&xqw0fq^gR8M zPT!!@pVR3p06S{{xMKMqYTIm*NE#Q{2qw`lLBP%*;90q?jSJl=H0syd_83uU$I;~1 z?Z9`OzDCafA*ZiacI5O0!6Z0+0~r@+{e51o-nWcQTb zuQH89Cir6*?>gaJmQs0-)u=%_@3C&)PCB8xQ3JKHJMbKQ~)-%!Ye;-|aky1ZH?Z;~&%TA{W;A7HRx!jh_S9 zxgCHjCbyY--f-4qaYCE&7v@0)MJON|5EP2roxz&oahhTlDW3fU6stAGTQtQl&~ZX> z|2?Wr+kjwIug_BOX7=od08;UIlBSrWDLzh$P}@M{1E-$lKO#66*LOBC)CmR+iGbBK!$&+>6U zA|2edZ<6s2bfX z-m^=!W&d5syPP$*;feQ+I>#oR<7Evu0ai4BrDMKHZ@U+@%RT zs0mkS{M?$=|sAe zK1j26?M%=xH0xcU57GNglKUXq|D|(x(As+rP5Tz+rjQmcRnop{y6TTfNFaWO#t+r_ zQ5ru+w#=ujtUTcp|1w=eSen2x)kJyq-y#=FQ+bu0yj( zNOWkJE-+dX7^?~Q*Z4tkLdR%Ad7q-}2l2(-w(pO@l(+T=BR@UEy{&kG=T(6+6)Gx; zhl-{dp`s7r&KHggM7~|k_09MaXFduABma~I)Ou&OUshoyi?2e}8=7W_Dmzc3P$2Ru zJL0#JeY+EmwYMkH8JtAtSBlOiMQ4kqQ#7^42J%$`RFOSHyBwz^-0ueieAKOcO z!N^_^3^vS!(cL~A-NbN9uwXYT+ft5E(%e*uFE5}$O;1i>)rFC3z)bUo#bt=VMNo=u z3PieOIsX9DLRk~&?mP$rvChDe<=4RlyZWA1u`PVYx|k_7#Aqjs4WJ5n4*&la)7*ty zv+_F>D~&3;@W27->mQ8Tti2I^`8dt58BDmK64*N&^srNpG(~RYk04hKa!Hi-RDjZj zpcEglmLl_m1NKaii5GZtzci!dDH$!a;{;WEGh+QEVYp>${HL{;l3Qh~AZD`VB4Xn?+8!FJ?2PQVMYf(7k>dg?Mq zOBoltuS`+0fK`)DE(ZK~7}D${LzTEez2JucmTChve$hI z4#x)~->oKxh2sh%Uy@DVL2RZgHjC;%4ISxh^k-VbBU7?6I2(9ly_}I3^s|yU)-Ay{ z)Nbb)Bp!nKqYUP+FFX|UAJ2?4KjM6Y`G4$H%s>7K^_%*uThj;x;e0Y%yDkkagl?U2 z15_c5B+rRBCE>ZE$#Z1-uD&>Zb!7V2>SkpMbeOvJQnzE(EekihIXwqA{+iSOgfh}I z&FL@Vkw2tAkH;o_@(qvAY3zpd-|-0;=4(-j%*Wq`^cQsEA9%k_O1ktmq`ySuYTw90 zYt=(2xY7zwv0BqUM0-nCXCkxHrzOo=?HxDNT18OOC$zSFfc7`1{{@AoDT=R?j#T$& zq1gDq1Z&j#^fiTbk3K(oaA>o_J)sw_XJK^TgvrI>YLGBsoj*8Qj$+D~haD z7C=S*nfF;aQ%mq6o7I(k8o{S!e7XiDl+Nq`CFsoG)$JABR(t;dN-QdrCbX7<)Istr zSp+h_gyXxq@w0K(DuOzDF0zkR#LqfG)NCMb{H<=nA7>c`fE`Icl4%VO5oJe?KMK$) zEB!iar9w12JU57hJ>+QlY;@T)w~DJ<|MFfkN7nelE0ljX*1r97eng(GTy`)Lg2VNv zv+!B33$LFYw&9CqPsNDNEhu38)5mSq4a2hra+LF^6!@8$Rbsv%@DsGQ+cM zWSPJ$Wy})9)HW{|nV&U{Qf zy&3|AEuW^WcZml5wz#E*8q5q9d=1+^5a8;PyP%3fl0(qB?H`Q~_Jd^ePb;3nXNvMb*E5LB0q}XxC-QFxA3B z{6>=MEx;COqq^ z-@+p)Y{5-Q{m!g5Jd;9;-0K7;3;O^o0uG)u3;Xd%0xV4e!G>3|GVu_MydpE59eG4x zWbpwFu?{8+UOa0SvRDkLY}`8wg{QLoc&4i4;!Y_LCJQ$1iac{h`TEqKxdcHof&+HhAKBoCkE96sdMx#wgxd`MP}2;T$_pH~#8 z1zRyjdTLCKay~VZa6I#E1i{4BP z>ag_uaVzU+PG5){f2%X`$0<|wPh?ty4V!huR6L@piiJ`?Y6{~CHF=RX6ltrikJ0jd zZcWZoRwN$NU=nFgFThPIXki8IT*yb#Gnv-#5K)+i`T<(iwx`rusSwSMjY$Xz-@pY? zP4V8L=fJC5&qNK0DRU~TzGN`d0M{ituu zHTyc-X&daneIM!#0>9J*GTK{|-E_;>TzCx1S>e9p?Z{`&Z8&7JA-x+gY1bmhaLZaZ zHNh+OBepadPV#4MSZJqTZ~Vc23>Ll{7+%Td^7x$7Iaf}}DhXoU>Zem>Q;KldO5jc7 z|DNQ|Z6&NG&RX_a)o@0cAW8+{srwzW+R>R=_Ug9ZUu8KH*khpV|0BV?y>?_rAkyUI zoti17uKYX6cOz7oa?rgz*t7%Hj+}VT@VXjVAsDN!XkRBvjJ)J11wB4Y=k+@ zB(Kk~u0_Z;7COp~4pGlrLosI&%Evxc)a&05KO1{t)ynDD2sc0PtGM|P9*Z4?uWt_t zW#xM6wz4)h!a3%|Olch$gF|aK6#MLgHJ-XmvL9Jz=lmILdY1MexF(j)g|%I~J~wu* zQwiH`M~gPu(c*n}qcJahD+@=FNPBAuw;-E9G12V=>O}Q-%G$(^D#DZk!`|Lt z6KTu~J?d+N@|!B*!qq{{0)q9P2vZ-htD!rF4}=)4w0-O#DX{q48Ny{{O#dEC`` z>~+>L4M*8<3iNG=ArNT}MmYj85bQv0b4KBR16#wTk1uux`mereUT<~c55fQ4b~GDB z!$-zOLy6$PAQVVM=mMyTFA#Yrkn@r48TofAj28-nb?iT#9dEX`*EfY%1a8MZY5Rf& z&*Oo06nQTBYIvj#yIn(2S!h%sI?{*3FLus)kbow=A37=!oeL7%ar)YMN>Mq^z8&pv zU*Nfm|A7SnQhJ$xJeRJoZ}LR=|7qC&jV%0K%mG#AJY7e1LugF87#biJ9JU4r^)Lc$ zyLQ82JZD*R0=2-g`y+>4yDwwTKxoOTdti-L9)>Dt7=C*S$7YBE8;63x{G6EnGg;!h z!{%PQy4UltNGCD=NDUj8Rk@xOi|*V$E1NE(1WNmr)Z%BiGoqYhaXK4`1Z* zcCs7plN_ESJH>|5p;v=zt5en76~$qX3)`>oV=?R_kH>H9YB9L#e7TX;-KUAtAys7T zD9$+I`5~z^!<`N{_#sQQtwzu@vnn~z<^f=cpoVu=?Pur6r~^~N2jT>ktatp090XgP z3r|z`uvo|WNG#axsgJSzAqGQzn+R+F6%O~XN*Gpvk$z9 z0QSqG^D+aq>obZAc87c#kHOwy z|70^`w#~r;C$uaOEd{q)BA7zz{;F7YGND?WoM`|fPN4RCZ`EnGHp3XfkkbQw4=tzS z`n{oJQ2c!u!B#(v2maDleU8n59k>E(pmlEz9H?}0$umBx&u?+#v2}Jf{N8QH6xD>t5 zIi5XHyU$y7yvZopEg0Ss7J@%KZ=aV8IE6fWsnh)KDp+lu#`$!{p} zGiOEsx-D{thfiNdI1^c&jbLTMgPYnI4@U+f-v^@?^K{*{f#@$dii)GZQ<$*AAViZ|o!5p2e7XvU%%Rwtp0CWS;ZM(Acdr!e`lQbJQov@l!mM}qjrcC*3n2jq7M zWe9%Tok}po`!r-GzmJJ+BEL70-}(6Cb`F$9>F-!*t*rRF+07%pU=4wO{Be3;jsX$r zj9DM*n524BZO`ncsh-NF;Zr?trJp&lpY?@j!7wcBhWVO@u`HG{!?NWb83y$pmXDxr zA7t|!In2KSFG5{ybU`CV4`hdNaY!zfj{k97{3 zT{Rqpjh!v}73oPI%5O(Tz+*u)9S@kwH~4IZmEjSk6&HN#srvwAMn%s&5JZSQSG=bo zLU6b9{yJ?uG0cM6dipr8!gI%=3=G{Xd(n8(m4|l;LlMmK({7$3cGKfoQEb6*_HpAK zJUpsbKs z<_6wJpdXU!qz$0>z!*GCPu)pKbv_yf!$}iLUeSI?&*7_;c9ixx%2OX0?StdPO= zZ%l}fR)pPt%z9`J%Bl4bjaK-@*h*!opYO0i;}?6)<1S;l?Wqi-QutHGqUwLA?H8Th z4`%9utYWa9L0kDnp=SX^i1{^iQZRBLb{N-auwWh5YwrvtfAOQl%>en%R%U<;G-tvo zn5^MH`U21>896knx%@+|{l|cQRw4IW{DElKz>pCcp(Aa$VbMzT+;-=dvn?woPj^H9 zfoN~o?(MJwqQcIs5}L4fXFYNidRC0%f*7fLofp&53$?HM;*!?!%_M!##H=QU4KK*` zzsQb!XRrA#9qJEmx(1p@h`FG}#gK9AHO~2-dbk~yv*j|5+I6u`dG7}zCj=tbW!P&z zOSjWLsY{Mp_>^z7p3TpSPj%2UTzX}Ncl5j!300WjGkYjK8FOqiAE;c8-8=i|B( zB|?|L)Icpe2czXyFggpPf}K(OooCK5aEyYH?=dEdJRB39^@tel#cOGy-yly~=rMQ@ za5{pK9nP}#?d`GqSry1lz^HsRGcJy6*Ezkg`O}yrkL*CC-7feZFSucF2BW9h(aRzE zw}UyK*^yRz%{S?R=!sZnc!zufZ~DP+|y7ZB)bgP~r)oHvq zJ|LrZ&z$2#M!O)RlX^0Ku_swf?V%@;EiLq*I9f0i`<;ZU1zBiMq%jhKCP{?W|+LC+tD2>@tF2 z(W|I`RowqkSw z{Go8%(hLWN+5sEj2{MG$0tH4-#okpnT2@6cX0v6Wu2unk^3^_;U?tMNxQFVX6{5Rie$Td|81jgxo> z?KfAf+t#vMwuvh6)zv_>Cr3&Ea|>L4sKVQxx?IwL5f4PV2BNcI9j=AGUcA?uLnaWpM7+Nz#QTftIpjX!G3HG$g!sMKyDvO->-pYWB1W~{*>)jh z-r~H0&6Gp|@t5E)e{a_|!}`t1cCJ2wR_lb~=xs0u2f|qHzaN6B*(&aB>!To&D9!du zeFr+&*Ey^U{d)qf|61i4tNxJjJGR7*p7qREjA`!l)Zd8?faNcYw6C6kM<)m23z#eM zg5bMgrHP-K6naV$y&xZ42+VVI&N1<;7_BTyBcuO~>(ehM;dEeEac^9_^+cWy7ZY7qwRX+1h7 z(W8yZ%ut_uH7S1tr4XfMd7JtijKn}+W;5FCM*?hv_)(ZE>4N2=RSfLr3w|C;Pb0ok zCIfB;X6;yoXH zI)UnQr5zm$wZKHXGvFEdwhsT@;=^3;#Qr4Vzh)h{Td+1MXm^PdabmwQ^{sXt+P*~* z4*wccZYU5yzh%Q|gMQhbp%Ps@lAampw>wcq|F}TThXEBETyQKNAO{r}ER?`tvB&;r ztTWodIsAS-m=jya@d0i46Oe~ES6G&R{Rf!o=yeIvYzBFRZzz|n1oIrP|FL}jyz>86 zK6U{5kxhljSr_z-bm&X6Ij)?AbUa@K|-gkRy~Cws_dPI{SGpUC9m zcFl3pH4Hs(c3$k9uzeY{eMx=eiT91L(hUkFePddw)?3g(*c+_dXmijWe$NeOg<-HT zoxzej6(`ebLiDhM@B;aw!!_q{a)&*^QU^vUc|C8_Btgk?onK;x?6|N2)qJ}@HqY!e z-{TdvubpL>52<~*+|tMo7JTBVyO`cODEMM$x&EK5_raoC??Y4Jn$?cT5Z71Ahy%!3 zI~eV6M{fYY;^5hZY39)Nwdn8G#{lyrEN#)jgK1-+1c%5HMEv-MF~tGwqG|h~qE}Pl2Dt z839?_J#}Xz*|7#=emNCSoH24KnS8t8!*HM2nF*B^Wkz5Po5Hukd4pzSsl3BkKL`%n zCn8KLg7n_=z|j@2ebqLnn7Hkf`PcA&Wc*=n8>b}W6$dUJ##^+0+ne{kUGPQdGQ==f*}U|3SxJwmB!m=-W|* zTO;vRZlHE#hL5H8u9Q-tqseZx6!vK@1owrfz8KPu{ao23bFm8LOT?oQ-6)Z5d3Qyw z0&MtpfgOcW)J|f-zdW^%K_bEE=UG@w*%vp04g z{L#o|Z4x6x4C0D?fN(9q4)Dl*Vkf$xkJmtluYkHYa|j|LjuQou0192vW*6)aufm>@ z=g72J6KV*o`8HieY+uS_-vjX}R(;bQwtC5 zxQ^le$TkOllrjkt=D!5hxTfF`{xsvZ)Te1GFr?fmm~l9D7s0x#k&3bBnIpp#{+1f1 z?|#ou_8?z;n8NGb$*Bj!6jM);jUo>Lfkx~HzT*Vg~~6bS;~}kzaodF4ajjNU{E3m zN~a|#aZGZIgOU%F@KK=pok7p=Sb*z`$Y0=sc@{22;569qik#wQ4fC+_3Z})93>kul zNN^?e(sxQi^R$HSl(G;K_v|x6{X|k-ml#_-G-2((j|-|UtA?CIR`Y1Z=wQQtghmpWmwHAhT>R24VRynRkz!Oalh#r)bas-JnYH2#bj|lGtQ+l`>Wr z9K}|mDs=?&(E(6c>0ru9;UXG`rn8rB1_+moCnYC%>JQ_DB*I~DOA8?l(7>t$VP|aD zLR*}@?ckrzf&DipzE^dkU9izp$4z2tVuq}mMAbO8_J(VvHnXuY4ePSi=_D8!-(bO> z5caLO(TxU8$ZN6-cG;dH?Dt^{+v7zo3|^M->_(32D9mG-v60;3h8wUMGZ9*7%i)h+ zOTaBQntDkaAj}x-;a+F&^GXpg$j!B(n%?3KRgwcgJkCA&EJ{wg5`j{L=rRk^Hfci`2cyp=~=YCEtK0-M_3Y&{k}d18i2_Fwbu$QN*dun%WPM`A@g(u)re z6>JGzPcdNu%=kQ9scach!RX1s=!^_E+KP3*XsmMY-u^}n2=Ox@2q-p}2~`ZahOaAJ z!kBJs3Y`fYNXY1kkLNunGL^~Kj-C;WP6FjAhz@h|6`vk`%`Nm>gtA0(fl>2snasaI zHUDA->IQV*{9W8$(1(XMW-4RBYH3g&J5tG2Hw%;78P56r;fkE%hC8=8OEeMGW=za* z;DR{^0-aA#&SbvP4+-gF{*Ui(sx=HYUJ=%nj1_TmFI?Upd(V02IiukTUyu3(lZP6%(ZRRE3A@g{;7moaf|!%BlJOO%6D?O{T_8FF zUc)+1-RIK5qp_62;j;ArxV@b7ri6-D5Y%yEMD%iF1D&I!3Bxwo(a~@zM(e|6!{AyB zQ?3O{AaIP_2yeEh-ByL~Cc>fkB6PgnFuDc4$|h74!Z;k=lH`9z$L^zzc?w?{*(4_B zes#X=UgfXDT1BdHzHAuImkryZ&zGUr$lHw^Ofo++)jOTq;@ZrA<6B`6SY5H`4i9y z(dvYM)VdtUc0?!OIc;;+KFbd8;9tr*B;ir%{rLY0f1iByAM@u;;_u}Dgg=ZXEY{>0 zL$s%jXaGKO8H^U#(JL`dFj--d@0kNlfZ>Jx#8?^*_S9hp45a|<(GM;-ANY+PKgp*V zI9FoqfLuM5Sw6iM8qJvimJ=}}I#&5Uajf``gPIvoKaJcc^msUtE3fRW(>NWu^8#)B zTAd+-CKmgkT&+HbT){|-y9DAf3e&m_Puh>Z{d4hGl`!Ce%SxT$;EWB}$!AawR=nh( zxNt;PvB9j8C0F8<$V|K()u24N!dKXa!d2P$8|$y<4+Jz2A4YCFihCdtBgQU6!5g01 zA)vPSnyhXN55YI})AZ*ePMo{%lIWSaG1eQL1sdR6htUQ12u8Z^}+FJ{#+jgHE*e2|F(9ApAun|#ne zIw~@M>~;pzJYa<{zl-UoWGXAW%5YJ3JJ$;B5PaU~eOWc2#0^JVBfVq-vjtk@3>F-l z18s!OZVu%*KC~%zvZ;W6VID?y9D9J}zTL0HpqoT{oan%|kWR2~fv{&q3=b zV+nN@9AUkLG8R6kgFSdJ!&0oCSe^<&OS9M60k8335}%$-65$@4wz~y}T$7a%?t`_| za7^U2ubSS2^w%F z=HRgQAnmUY%4-VXNVa(USacP^<8BJ|Q0!nCkQoEhP#16>!*L<0v7+p%m{-X)zZIWV)|x$&2&MP?WLBh)LB&!!@Tz^-?8P+)Ix!g0Htdr1vm0*lsc>6VY8d9z@wQy! z2xw9ug}bL)pQKcziflN3KGEQWL&SKm__I6(iCrbGbz&!UuxD7a<)6q|_W=9;TzHiT zntbix%mW1Jwg9s*Zb0@b^_5(WXcZH9MO>pCR@OLx0|^o>|Ur9AY;&!ge{^ zmdSR&bAj7ACoEX-UwA-`YL{xb=aPNHG58v};WdXc3r4eXIv9QYN$kXgNXXAPu46;L zLQ5m-5V{Oup*|K}wbRadJK!1NR$A?2m~)n@^fh<)?bU;K-+s%6;zJbJe{A7#6Wu@h zt;&SF;NoGNeql$?3u1efD;{iW{INwQxb_7So9Is0CGs|X9B7N$>#lE7FVc95)&v_a zK)L<)njPoc*g=qA=b)!(zn!)*=oz{nJjl*>AZKp?A$|7uk!XayW_!Amg>V6OMPi+c z@;+rKbaX@S!J`|x4CY4U=m_r7FgkA*rhZPq3<07e5t5HtOP*)Ky zERoz*T4xsI_&|Mf5)Mk_);A3GZDD;lKIqn`!oMqy<+y_55saW?r)31tCBvYOQ-ql=uucWLL#qY zuEP`sL^Z4{wtE7Rw__QIQga?dbo>^KRGC8XC8=TJW^BO6mmy6Ia5^>7v1l%in1T?> zk0WLnXdq6-Gu()ETR>pY4o93Pg5_|tIvl%USS~!3F#5L$OB1+;Tq3Ku3sfwla23Fs zm>1(Q2x&r};2SoDf)FP{O&E^fsp0sp-V)?+-0ghyh}eMF-Ql=i4@YbV?!rd+3y9xy z-6^!fFUodm5KHJWnu*Hh%@pLyAxTHNvBmL6#Yn&71;6SWL zF!BXn8>0)eJk7IWp9)a~BmZ)8pF}U$7G>i@EiLHQ)cY4apD8B;_DWnzpSp=wwm^@e zLvm6+7h-7RtIWnpc?U3t0$x;V_B)WDwZY$p9=tw7PFLDE%vBuutT^W@oR4Zjc*?W% z8RQAz5El?>Sn0II1~}12ISdgBh>iyNVf&OYK z-<*F$!O*3m;*rkk?4tw(@JHMXbv~45A5Z;E`!Vo)A!|8_^9)bo$oWul`1Uw8KgVX< zeY8uk@CTg_UHv@G&x42-CfJ*5#8+V+aJGdZ3!HEXnolKkB zh&6=x!&nW|2>g+jr&;PrUhz0uK{tW=z837 z?(pYwpb}4^fl%8{p=0p3a~QiFQuQ;c*Z>|~(5MF$3Z7jYRRJKF3{IxeQ@V<9QDP%$U*b@>u}g%Z8@Jq!vFDn&bRqsurutOuXr#yX+9r!YGOX8 zdIcJKoXOYL0+AkPVl@LH!|WEUD01m}HG#cZ!mgpkf%YR6&SWSvaF8yK+7?3XMWsq;KmnhNk@D*Z#6xr7EKu8@kl=A z9j^}4D*uUl+c1Aoyq`QmGy-p7^+nJO*h>v%K*Tq4DXy+=F3`SN;Fkj)s%|}jsSF8{a1)ShVIA#cTnZh`Fz1dUuYn0MqZoccYw2|HD z_uQ{fDadZ-Yo6YgziuZEfMPkP>79cUwxowZ&yEmIp2$8tch!aOf(9A z;OvwWxmTGDSO9aA{?OqT73bXB6A=U+f}&Shhj)x2%nM8Kq1v?YY>=viWl!Co z*${nTm<~AnZg|R=kr@S{zs=WI7JWc<;1Wyx6P^?X-4{@ley69N|2>(QyH=jyNvJIR zd-naPh922V`n-Y9x8hi>u^YwpBL8b0?(^S{f=e><-wW-`+ndPK2rt%C7l0&iekv{h zv6*6uz7IS05Vc8AwW_s0Qsd{1sKu2$w2Ux!wlkm&ig|`8D!vB1!?_59QpwFcZd{9F z8$KSmC}Zzat*BB1yMQ}U0qP|6U>J+SKwvN+4#5QxRA9KAD=3Mpzyzv5fuRCdBwEAu zs;dw1$T{Aq4}G*g;GMXHKKR)6OYb(i-WWaL1Mfh>4F&fw7 zDPRT441WQ3N_=fO{AsJx0e|>MLY;w92j9=9yB$7FpA9%uDH5~@BYBte*-o|y!o>Ir z=fwt#O5vrgJx=T{)mG3c!s1y+jzy*10-szECpYKO%jFW~fW77b z{&NJptHpzI4|CLFanjAnL^J{`lO}u3CwM7n9Y5AaYsgb^k#+Kt)_j1RElzFJXD}&! za1@`)VKrO0Rb5>0Ppq!hUN2u7Y+-2M;cQ?_5D8!Z*~&S<#-P7@3#EkED$av(O~PQ& zuj#;t9+u|sVwC9fr5Is%+tE7t@IWw%W$-j;0c<-KC{cZ^Dq?#B1-oP)geQN$i1kX0 z*F(-{=XRI*3}I5x`r0`ipcW=i7-ecOTU%p%l?|&7B(xu<@|CDP&NczBfjtm4!JD0D zaQhUup>5K3QT1>`xtA;1@ZEW{o zeWhQk`ETeAXG;9%dHd2lbuR)MzU0D7QG#&-d}j*g5{v2{Sxd$p(_WbWZs=6g;0EwQ z<2ndw{z&cC5IK}zZojd+iaRQzlGPlaL%xyDlLDB zD!(U;^1G_~>h-y-=;(S5lPP5jw1MN!bH@yD6^vf^>{pm15S?uIRH|l)#6D z$uwg&$91nqK~9R-D`mSOU}wh^-uv*OhcE9%W3!Lza2Ura%$uWkB;)eF{?d^Z$ z6B`Pl@+(mNr5pykI#r>=+S1>Lq1m!gh-SYdYO)FnX5}9-@XKRhcK?bEtVS3}8&h2m zyP+a2|1Qcu{5jg^sr@ZdTYrN;9oGb-?lac}3I7(8DBi^RVf}xP7Dg>a)@{`t3-?c! zBA$hpNiW827!L+R_m_M@P5u@=iHQ%xV?EVcHY}w{Xq(o22GgMV=Sn0cSc8it?=4&j68b;x5-;LG%#b=_aI0_L1?7M6d z89FDu)7QcWN%ZmtD;+up+{#JPgpS=8y~pgn#=Om~aDA<~eNOZz_CqG%{ZG8Vr&kqz zdLSjpj8DmNj~-AiA>?QJoR0mqOFzC1h6FjqI&Tf@1TVIB9$TIGd%SdQB~k&x2S!QAT}8N8 zh{V`+?)p$XPPPOg(hIOP1NSh?vjVOZLZ_#|KkP^*!aevc*b9fpT6TwWMX=yS4ep#_ zgAMkL+A1K+pvz6!JZPZvMklz6r{gI}LU%z93}0dPZFl|)S)}vWSvEhAFepBaHXscj zwStaKFyd~BDIvvtdO3=z`P9$(^rhIJDZyEYx)uRU7IvuAx^(^Eel z4QQQ!KSsP$>FXO3Y=9=>I~a6xaw&>@swvK}_(f-iBIG9q)VcIF2oN1JD3}8SiUD>8 z`VVjTt*7gjOA8x}d`u&|;cXaaxNdm!W@c7CH|chYuZn@_?7*ZB8y&h9GZS7_kQc?= zh;xmZL_gjXyp_fwq-3?D4GwCTTToO5-5G^PMThLA@%P-;7g8p9q@3^sx{&X zi^;}B*YEFrt=3K`uq6E%$&W~}YpTHxy_Eb-q0{pAs__qdy|kl$f)A=?duqj^x?ak8 zVzl#?9F~u@gs$CoEru*N-{A>7?gv<~pdP5XVX%0e4hz*sYQP zj43wo#9b+)#&yCUk=c@QJ>eWRwTn|BZ#P3c`<5K>kI#>>^8Xe(Jux5{BQDs=`Sseg z{QK4XY8R~c)P9Po)i^-aAKd}v6TPj1!@;G8`btDUn0c*MQa4w+IIj1%P)}}~!0*Sd z2exD5dwn3p&j!$c&Q)i_wtRmSRF1C^nuE6E#87podwhEs;+C#`N}3O{@xEc=2o%l` ze*blQ`|oic2HaZsTnj$mCVtAhP&y2&UPRo?CEW%=c<#gAA&e1it>Ww=a8~y|4&6bm z!8N}7+MjpdN7(;(l zYW1HXI@(-#zX2#Ql=Xd_KHwLnCaGxcbUSipRv=D+8y_T*3(f=BCW(9{QyR231X8js z10)IZO*l;v2c(B_qY1R}iA>NwL-y9sR$&On%l?2P5j4w5cDnT~j1lBvh6f}ACsi5R zV3$F&CFwukag0@%-z|huiAe@JnUOy{4}Jg!RTEfrhg9>MU@mbOuRqKK0v4Wyby5R& zS-5ij8&sQgf>F*EDI~5vOXsakiKR*=G*HZAUw5febzV|a)D**G-Lt->s!ecTV-+qXVFLNh`lZr2Qizi^dSpd~L0-n{RRvMpg z(!!ndnxJRc-&)gNC}%UUI9jvByF4wwPXY3T`Ue{P?RolpW&Gmok#@t}wEPFv`sM5J z=iFV|fNfsSJx%Kp`VVvP-M{f~e}R6$p0ya^Pu|i(JBFJ$Vt4nTJIwQD#rThU;Ouw8 zXV9YQPdf6STQS_}E>%7ddy7|5cxKPs=fc9J0@;%mF2xqy+yYs+WMSdrj$f`{R&}tS z_|FNdpW%9ol_%DBT)*6#?C$#E?;dLX^3S-xD_itj-%b82+rE$AXNj-xS_@$?J9c^Z z#b%eQ^HJ)Z+SOt!X5eFCa8ATOBXW~YOOG;sY3N0B?BJ@lt)n|+cVx^z_*Ow%6`RRZ6bE}T40o0yHm?<+<=p4Z+kTu3sx zI9qcO`Xf9^dLyv1$HC`25I!k(t~gW*Ix3bOmp|eQ$k5??AtSyy3jPpzjeA{#fKr~7 z&)gq!<>O84@ciKZ)EgVn2o=PEKfsOU)caFDZ0d6YLB{x^OD!Pu78T_6pVlAz59(hw z|9`*!H`f0L?f((=C&oYgOL$)5+2gwj->Mjo2#@dlDsLO!p40C&`h)GEd3ify$2AUL zJUFvhBJ8mL8;0W`H`b}*8SWX@#+8JGeu6k( z`bQ5m)E$*uUWA9d_vz#0FrHZGSvB}XOv0S7 zmm>zmk zSnw}=DGp9lzKw&@d_M&TrBB1#W!@P4E1tls-%O*P9~v6q7B`mSdDyAR#!5UdugO-Y zrG1_w5#L3p^iX`mAY{i**X?YJ9nV+YHqKQ{_~?hnKkdO*!n^f>Uv~=!yG(plH2;gE zEL4C^-23_Ed_)_(p8MA{poWdmO!H#|YA)p~m+%^ckydQc|Eb2DP8(aH&c=*q=x51r zetO^yEPmxwP`iKc`n2%yy!SC_9sA#7`ji`jx)u z{IS6-aRqgFXXpjy#|eAr?+&MJw#uKU^ml7`8$L^!w>bvy8Xip(H08kDbD=@_pj)7z zIp`U-FOY^)x_e?Cs+#)BY2Id(QHvMT16n;8U&3G24}U}uJW~F`0tf=_mCxbAamRlr z`a7gM{h;M5`2-gMG2%#Taik41?6s|h*f2BY6KKY3tK_&nRLH;=f--r5$Y0f$b@O(r zc$6MLU-N{ySGN!2b3HaSW8rPF3`7PP&fba8aC`i#TJZx)QyWXL@izCgLM)O)Sw)B# z9Ls8E;gg?s7Rss9~*lIGiaIKn3K2}b@Lr1t*Bj^H&$d`kGQ2p>AjFf*x9 zC^3|8VW#DLL+vZ-f9pad7X|>{&FeG?nRd=v&%$r`>41X$2=crOErmYNG+$QNINk*^44+YJ}=#~A1Fo{u4#VA^-0?A#k8OGgMx*q(tK z`Bv);l3@@^y;>}rIT0tAvyYLfd>$|=^DMfSu@fB2@UbZwIP;A|8m)Yu#(kcz@zKit zcFybnhrBP3kD|)jP9#8!Xg9J2MQJ4?iJ$}lO$0HK0M*jLD5yAsL;(%5Md$_`S%TeB z+O|h#)RA%2VH|gHL`4jUAz=&dxGO4)3RKe|xUeWozUMi&s=F#_62{l}`~LX&{YY2c zs=D`{<(_-)Ip>~Bfm_<+ORyItDNRwx-hx=+`C1bsBlqHu!<%|gy0RakJM7AxHNcJ> zhk(Ao@Cwm0B+@HWE&OuRGMquCcx7%SD5!g}laBqss<4P{i>+59!(km>gmRd8QM-Ny zv<%gXenD0H6vi-k;c#8SfrEdT@+MH=>+GCM_OHUmi{4@HRW&Tv>t)j@koA_{AM-mj z6;D@)Q<3h-kaFjhuuSn4Vp=~--q;NkYqhI=18Eb<;}eJv!S%nW@c>0xx^zOzjZXcG z5|G@zg_j@{9=)R-Q%DHHqT)Mae<@hA^eG=Ish_pe=-~#L$o1#7}y2w@C#CH(@p73_Ood`H4_~ z{@%l-{Nj6JxY(2WE&vh|P`r~qWYJtGU0)$_8S-z$yjd~-y$CRk{nPOO5h};!k-piU zRGglSe4gLvx1$q+7pi?&t z7fp~IB2eW9o&7(N)4+RbWvf;cC_rbw_FTKay9DTtREpOFxw`S1_wM3 zm1-O!dqn74v2W7t(iJ3tZP9t>-RKFv5_`~2y;|5PQP)e>y8IA~=%8BVG#B#|?2a(o zeLy>(*d5VR*d5{gtruY#bDA3u&@#i`88w*9B=p6d$M&bwo?jSxhblEpgYQ9+72yvR z8rM<%esBjzzli=t5VVl`^8sI~zbg&tOc#CUt0)FPIG1j~5?;7(D~(?+eg7Mf_0#c` z?1||cX6^HlofU#h<^OHjMD!EMT)+g~Xs)&FhLYDgRyO(Ex;)6kiAo}` zVL3MB4)87V`hJWsD)C)uS{6=#yuMuIH8gI@>)SX6VeaPowsx%#iy@H}0COjYce=hs zw0)fLBLW*CNYSbD>k8~${&s-3IR`;uXjk;lA{Y_2WQc5t=QbIdlGx~@NNfN}dHrK0 zfuzw}kVAP*DXnkZ0eO8Fu0&qP@pvZ_t%!8;MoLl{$Bsb4jv18MsBRNv%3ogRc)Nlk zyD$r*=N9&bGY6JDlcis6GQ3$kJ-HhouU8c|>2B>0^w_9=pVT10Ks-Bx4}d>8Lpms_ zi(*)3QrLEvj8m{+?bL5T44@|!$7y{9pQ-99AS!YOmhsEbAzF<1MO-|O9Irm$E_tZ8 z_99#~Yq2BW*)`O#lLPjW5glT>-uVN@*uO$aY zc!gB#4KI=&AQZsZRpm~MIqa{(&QLCgAmnx##| zD7I5~sD(p0XE4}z>R2`U+hgcRFo8jTv zdP|-zWS#)UfD(ijd9jsD3tyiJ+pnWAbU1ca0!Q3$dJOz?p`7(Klve9;Py6*lV-^0* zWUQ;K$yl+?RmT?l*s}@yyB+`7Ad~>?WiXeJfKoFnek_#aHU$Z=B;2UqtC|A|u#p<% zZe3^F8~Q&f8Tz-MrqJK$`H|M$F zcN~+E@vzoog#&(vAS}j&s$uoC3}L?fr*`H3fOb8hb=XpyCiC!Kaf@lrg6bg=Fx4{k zZf$eq3xS~C>P_8?&A3}>XKK&vNSLLncckh6{(+t=WIV5-d%qTYaMRe={?1lu7h!86 zmfEw~!xV$$$c( z zYdTpM`2$8Z#=4tdNXEKkHz05cwKNeMkKjrSiP42Di_0lWc*l*xW+T8TSmQ$az~Q9d zUB6zOi1m+;5j7{L=>AKt`BvdBrU#+j7)-ePS17 zgXn`bj6?N7-**$m7?xzpLfCF|Yq^EWLoaJ{-eTBfuXLSuLyDerLt}_qx+ocg=Whua3 zrvSn{1JuGcP7yC@bJTLV4)ErrpzpuY27dcZHt-$1wNvpb_5(Vcm5SBR*8>{#xacF3 zikHZhQ1LQ#Nh%Ifm!zUsUFPAa!=e@z;>k+CPS*{(U1IO}4PVE^0reFnlWzwtL9yu8?k@Tb1A_4^^*_V_aTiDX!- zf%%Js{RSa1NeD|SK;yt-qb_U5she&#hR7KI{jtBH<6_*{sQ>vl*STht0e}hx-}a>q zfKPF|IMvY9>hf*yG?}BuV26>^uocmyNFl1` zrw->fGv=paH9ui>>kJkGX`G+RF!JhZy2qNIjz_=!2L{FeWPXy)y^BsYrrchj8ftKc zDn~uc?_*PLF-6To9!E}5m54!XSh?-{bg~glt5>G)CK<*zg6I`7fb~IhgWC{?-9HeS~c=E%@9vm_oRf!K8%0y(2-!*(!za z0X%9dt0pIsS$lI74zk>#?$fZd#}JO@cZg}7*CTvvyZ2QswY%aN~ z(^`k|B%Wkhw_xNY8Bad|lfP}k>vElKJZYFnm8D9wxm?`Jcw&$0cI3YpPx&K%+jx4Z zifosAy`^ih8MvvM;bz zwCO{mM+9cfWFLES`px4ej3vA-*ih)+!zR@PWVb_596R&n;7KoXC16PP}o- zG3$9k)w9=L&k(a7tzz8dQKKhMnl@Gd(<*Q^W$L)elX!cE)Oxb&-5;#I8=`96(971l zgCE54PS{43-sqEB(Mh*&?377T9hjWJW>~AM%@tr5_qJ8{Y@)geH{LXM0_rn5$(p6Y z20Qtzs&)Q_wpxdpwW3$)te3RtIAN-Eu9@oGnbywTq^c>s$W~2Dvl?#kUx3e`T;eOL z+mR(wpq8*}9#e7>#(Lwpc&t6sv8b6@E$g3}JSW%_=te-92sL$xJ2@OXOSWU2fWM1! zY;Diq5XbYRag%PnanuyQiRVuK31bx~j6VUMamZMLsUA|*W#`(e%ePcF`IbqeOU90t z>SVZ#Ps-&(R7I|fZ517SKi;n?{z<-Z6UUA+`{f=pwp8^iDg7@JF!$Q4dp2I3fnu)D zlc4yN95W-!x9R~}P;`06<9%@N4m!rUFc ztKr0gZOCeBhPh}unm{PcPW{OuyYc`tr&zTs*lRh$X+~?Ftz&<@ zjU9m}vib<^k1)2!?T<(Zm}#{?zK`|YFIuV&`{OT2F_%V_rz>m%^bS^UOXJ*6^NS~x z){SEl?&N}Q4rKZ%#1{V3;CySq-pBw#ym~;7y~8PUjA3mwEsZk&iTbI%Vc0`2)gmi0 zQh+wS1bgnhxOs-G6I!992zY-X?)eXH6FvgAmx%chUTo}VQSa$pMbPM4SM@&JmnSjw z59f_eOv5K|t}MW(mAhWW!37+HwDb<55@+xz69ZQn<=v&+tY{0)Mk?eENN4bDsY!G}Y{PX1}U zqhL@(5gc?m?_4YIs^-L^33Fz}0tzZv437d~zjLwdv~eOc8{fUu0tgYf{^i_1Zphy%?J@>BG^xy#;SAL!xMx zr**O=j((q~`WidQFg@KeB(8}o3b8v|&}EfsMnS(UbLk&b@+;b*STYPWebzP*2u^HTX*9>&s92=FFq6Z8mOVO`h zND^?Cwzgc4L)9iOq+m$Spqx@2Ch}HY97i6H-T7%fxys5$TaA(}=z!w9_faA=p!YV9 zwPow$^Uz^%V=?0%o9c^;#S|mE*Wpa> z18PioLf^$Yn(A8o)*V5@m{LGg^~W=h5QGU8wlG%{`<>GWmblniFSOI z?l@vb3__hP8a;8$C@QoX`Y$dF-Wu9@T=Fqbv|GWqMEH^E=S@lJl(oZ=MUHjomG zKLT}A&%CRRVzbx#H^^pv|5_JyWV0^9X2(8{m;838)-b=V%S#(olR^{=$3Y1rPLWx$ zQI5kob362@4_Y|xF7`4B$2|{TNO0Wzhw+xlajP%2a-4tlF*t67@j!9hW8^pwilPrR z%yCWsQWtIDxI34~B>OvYoK|75r>wb)xat}{Rpgu|a?ZkXU2<)rY~Cs>%l%32gyk5+ zA?JwPj52*L!Y{ybG`>-uNjShXgXQA#j2u1h@;2ab=K6L9uf_{ycNC}ix8rC^oDYJ@ zfWC9ZbEjet4n^A_>?<@y8?>G&;C8&Cck1U*&oVjf zI+;i)+iH;=22#vXU5D9F_H&gg11c01oWXyQ*}g(~^dT~vlnYiMj4+Kp4j-FVXk;#|qOvGwGfBw0g35RO&Y{Xs{FzC6nN zVo((GQEQ|9JWeerL*hWR`p!!R%e!u(fdQo&g>0T!E2QfTo4fnMIDc|B)mK{ibEDh| ze{%8{k+=?J2=#1MPb5+YtvBE5gA($v{(L(NVc=xSm-{7{GRb_~Gg247jm)=qLa;W( zm7Fnv_}@0)`oV^Ao}9<7C6RtFh*jR4Z~qE`8RyBhqI{b3?exkz3~A1{Hy95r^X*_1 z+2>mXiq+x8=J(dc6y#B^lgy;Ub&|(P8;FB6Ch;& z*Z6NAST4?g4x&2=|D6ZO60`5ARKiS|I3UM5`yP1x82q=%cwphbw^3y0KS*9wJVIn4 zrX$FryF+zx1*QwWAfgC{f@I1bMx#}$wW@WKeI;V-9X3VHuGCbl3f-GM;*7(E!nx9C zb7*ypLy%DD94s@n)lT(#|K_|Tz2Ch^Mh^n>n|>sh$wrSI2(_vHOOdT+cOuIbrrj3( z@^+S)-N~reor{xoXR_)8dgE6ebJgUzCr=rFzRWKP724|lP*clP%Ti4BFxS?@*s}UP z{ETI056`XF!v%LILD-Ma3%Sw5gK{MnjRWcu8AdP*n!N+>G;Nwv}J5T~Z(U z{aI!r|Gavzr6q&yqo+;SzK|<{?MrouW6G@1R9HQf&7vvPkbgQJ>2hT3}BG)XUic-hj+ zym}aYxhzR9zk15V=r?jD7~P>RDe-oxOPCie$Q229Y`OOA`Br>h&tAd4Y}FVBS$kTa zuN}#HIyK(Y+Y>#VZS+)IKFK{D>Vpi&I(%JW^$ClVGkwDKq}-nKtUdqNOZ9smVVTJZ zz3bt4$ebiN{y~ivVDo@n362k|ON_{=qo<53^-0gqv!Pi=q%2QtBXZ|#wozw9Zupnb zk>A%Hil^CtdS`Kcpek5q0@b}9P`68iR&xqKxhf9S@B~mJ)MY0-7!^~ekMoT#8Kvw4 z9EuahP4&r?Sa&E+>SiT?JJHv;WvM000&7YvjtJ!d7zlHrasUKz72khjv;WV~&%>Vm z%7?C!U}=5twA$Kv1sUCWFzOJjxe~EI>|C~58A@b@Y&z%4VB#!AU?3S5bHd4(iVGDo zcxwr!V5%8OzpJ-Di(tWbqg(;ni^MnMgxJg=1L1JB#hYoCw3#hWn1gk@TnQt^)FlV& zUUiv`$q9i=#pg3-z35Wul_8qV4&CLpb?CMKm>sI<+}YiK@+4n8EXOx?l5Z+2N*b0E zcSiNLS9mij)aP!e)yecM(!QA9LNreLPl0TUFKd4%TYtLX^Rk&4-BXZsCSHLc%UoVq zk@dwL$!Kz799d2SSy*9=5l}#-I6gqr+wF}%_X3c?R`nvNT;6bTIyU#n?u8;x?iy#X zTsQ^${KYsK%SiZ|81IVps$S8X>-9Cv*;J$~nrep@NiKWira;-CuYOK9W64hT#%UV# z(cn~jAO`X9=vnQb>OsaudzM(w+hVKoDG2^Q-P!^0731@1KfkO8*Y8p@lo9f)r23RY z2ytF9$WdatYl;nb%>)?Fu?}XAcyZX|N%9IJJ_i(|c|8xPnJRG$Js}lnLIu+f*9VdW zwiP^f_hOsu{jl^YJ1ch#6j7lvpwnB6hCuVKIK+A_0@g7^h9f~Z_PhuIuoynWDCWp< z2LDNmW(yQWAH){c@rRC%1a5`14WH_}|mkFOWEdtDMH}nh} ziw5BuP+aox#i`(u8CEXA)?;P{X3#|*t*qIxGp+u+1wF-{WAMi?ys11aILmF+a3vUc zpop%G72m*8PPmrz_xXn119eSdb^oq4p5QIkwxq$VUB6A=JO?$nxZF_D8(H6 z_5Ctu33D)FqWyCQbEwYIpNH{@2S=Y(4-|VWBzweA6#ZMAJ^oaOJ+hNX+Xd6>ArS1* zaiPf`XUmnaM;CSJwhL7dq1Wj)_85y^=w&&nARuy4mVh}{qmMY+a-Q(TOiB-t_OOfF z{BN}6&FIkv-yyNa=guJgZ)LOS55dk=Ej)5Kr4AAga55p2bbG%60pbkaFDzlsQ)KAu0ZF)IioYHP!6jWDGr8nExe_k9KwWZ9zDQkS zPNs)stjs?}m(*jQed#v#IR{ zr5>oq%P)V01p8m(mvRi=IKM1lCzJ5YHY`W@lA4enr}AZro3UMN{Bqa7>+{PLqs+oD zqfnIK7hhdf#kA;IRh5>v)k7e7L3`Nbl_7E^yi%wx#i(avkZ0Q1803q`4F(Yju(E3R z$P~Tl*+90+%0SH%k#>d`UG)VcKTuk)Bet!l{on4Www|&+nJ_l$@1K*Dgq-T~Xf(*y zDy#;5Y^+77&{SCyta?wj~US6;v}jNE=#WH|+&yH3rh+$qj>4 z7ClXY#QF@74nsgD;Yxu9z0WfY|NTwFe~w}JAEbCk0n^0}jP@@ZFuA2$O1LiT_CV)x#D}Z_H%*KGx zCN@kOZGr&|>ob6P0D|>cd}iM)lV{&7Ge9(O!?%FLNhq-t*S&}dV>4V5Id=OqMOkW$8 z6a%KCkJ@0`!`lQ*3ts?Cr#A}I-^Vu$Q|?_R@1Z^erfn29$Aro1s{pyIzKUa$>jXP! zo$a8tv4iG%5}@UEY>Zr$w>AvgdovBtSf2q}iv~cW#53I*1wVGc6L zbnPQHGHJX`kZHpbz~Vc-F<5>a*Dx%r!Uim?&w!;L#ptof1Ym}X!$UmlT&i-d|Dhf- z8p@{41Z8l1Un*Z=N0nLU( zpwPzj#-JH~OT!e(G=(DTGoX2bV(FOBSX~w(6it^!QlYrMqm4q*1vZ#A@-_jJs~6OZ zW{tuWyt!eR9%yc;7p%{KX#?fav0&n8GcD?prNtO+ryC8~M_WorMjHoTl416lVQevo zc<><`z){@lL9BY=C$QxK)fXcj^qJYFpI`*8>g4bAhHr6ck;$;q;*_v2xs-#U1DST= zE|pzIH#qWFqO^>fT6zo#4w!$bqa@s~LImhGZ`h4b{T*UgoAx$OU=6G_Ths$zKOPN+ zZC#&wvNoBS#c=dHykoF&=nFA!u!DY)XD*hQ$o2I!F4)=t=a2(98X|T-kqbk{S|84+ z9)M~#d9v1_n$M}2k49Qh)Ut<$)@!9AUlDerp>EiI(fQlE#o(uwbC6X5L2_#m#PNGV zTb6fwgGo`p*H>W8%+~^I^JHCMJIBTB*jA%s+$2(#@4RB2t)bPiClVF`oBu`AU%(#v zxc{YeWNmGJXpP091t!US50!GoAX*GeNZfa{e>Axfdl|SD0Op-cx~tMFN3OvB8omz( z)UOgrI)b|<5#7q*nH;{AsoDHb+ys89>3_;LmNv9&>1`rjIC=ZibCI|1;2U9@gs9XQyVf>s^zKe`jJC)F3Z&{I|xLp}J!98eza^ zS#)>$&G22_+Qy&L?z6#n3vZ7XK3RGDPiYLkpGGtc-_&XYKFiAc($>F~e*RN!@cr%2 zHu&!5?eW4VtMCU;ZVbNGjllQHG?PCQtME~j%D;&}A8ciVZ)wB^-_yK3Uif4w{%Xs{ z;OlvP!}RMv(SXmg6rV$>^_$>()tH1~jOO_J^j;f$HM~7u_+)wh$w`gDH}sDU!`Im~ zHCUGC|D@FVP4Io%!aPrXLsSy-#e6 zey?2HFnob3lYWUsdM%~aZ-TG)$u|036SBcKh_}ZJpDfs~b~FaxN7pnA-?s-$`I1<$ zclyonUER_K-?Vu)_-^6tG2p{_Z9{Qpu zqd$E!^vA)%SpArqz|7Pb&KboHR0*cq zaTh_|tZ&9IbMDkT6h7Jdyhu*iIHW~zzyo*U-X-AR9IcKxy<(3y?8nM`QYO!{&)S6` zEdcN}?G7E0^cesk%y6T=8C;6&Bqx?v-F{B=eSSapFrk@~jtktDnFfP3NTWaRKPX`h zb3EaTJmFbx*6^sRVFI3q0(c&c@uk2WnJKX=GfrWs#TxJk>57_=Z~Ie&t^f*#9sRB5W@@7&f(sn zDZZ9`-8FeG*I)4UAG_h}?^3O8v&i!GAoX=IOY!x5_3PU32EN{%kFTGyea#}v*C(p4 zQ!Z0qXRBXV_FMRR;Xr&{V*8p!mapGFLEv7@Qo=n*eqF^M;_I8o;_Gv5U$e;abwqt# z%2M`R{klrE%TreN8-cHPrC8x+k>%?v)YnBU#n+|k*X4THld^Iz&l>!X?Q0fUzHX(y zPFaFdeC<}hu9VGrDJusqK-;CZuUTaI`XdT0q~v2MzAjV0uA(Q<^PKze^#!)CS!DV8 zLG^VWOYwEF`gN5(g0HWB9AE!jd(^^fEV6ukt@^r{rTBWj`gJXS8DDpO4qq>|ea#}v z*B#W?*(_z->ep4amOXzNU(c|8%_7U!Vui0s$zv(LE>*v-gZ9WIoU$N+;+?s$XtEQFN^2?uFS)7p#T zmxpo5e=8Rc$WN){=veGHH*6H9Z2cjUsEL&s)RwhnOrY7yFU6PimqR6*n{Wp zV$?1U6fL_X<3fZ8#4ENUEkDm(OgZ01i4iqov&TM@}7YRJm z*F14*%E|>~9k_|x;|UUKu~z7=787lf^Nf@Vi(FHe`RNkFnM9loO2|7}MCA)K)37sn z+dMwNKjf>M&tK-WTg>0k6B!Hf%Xgl^FaO~kKEgYTGL%B24l3e1RCo9f@9+_A{3WTC zzHY^+sa9W#+!WY3Gp_PefxlLNQWe}<+4imL<&6ha!T8Frj5h+RU_#}VKi(j3Oi=|B zY3+6_XB5G*7A-JL<$OBbR{%#*YDDh!yRkOK(0rgEW0DF26L+Slx`*#*jpHV69U)bA zQdLf_{KjbX6je}K`J+*AbjbPj9ZQ3$K%C8 z68$Zs_@#L9{VaaPC>|nhQfT~}#g7=p{o=(hv$)(SK0jXk$wV|c$tXTEUi=2%zSbx{ z1;yUT5+MZ_(Q_7)rx1Ki^eLV?9e~mSt9S|n0BkjHU^2G4af-0jNnoqNa#@G17-ImB zE4B`iS+h~E=@@(@V+(HRY6g#PmhDNuf}cpO&3f0N>UT7}@gx!?FtcD}%%GG;zYyQA zK|ak#4Jba@D0Y}J{bc6Fc;+nM3}B=DQ{k@uV@k9=&|QK5DOTz`%a39a7UiFcY`*ma zUf{7cb>8}%Z}Cq>9^ZPK4Y*Fgxm9TyW@nUHU>MwXb?gFQeQt2mfcGu!OlTm`#c zI9Ng38wb`9`iZg$2T%)`aQgwqtmy<@4Li7vO$hPCDNh6`jOa@-ZXKAk06!Xy@=rw( z`W!p0qL@FeD@ys(vZ9PXO)KW(C!FU1Qf63&#L{UP5*TtR%eR1kCVMs*Py}s=#H6*6X>*VI|$%yY6#g00Rxc>!uIS~=Ud1z zS!rCp{WzJI4KSk0c-jkHC*Nn9M8R?re7?}A9s)z94;8O1`1@5=Ev{adD+#x*QkU+U zyzB{6RrUuX_{-pLleN8}t@>DxqHkf5`Yng!+rr%g{RVd{B;fFKgN?=Y3)23=)$5Hs+W zp*muL!>mV@hTiZB2Zm$WkK<35WR&67>B2J9*-9xHSY-RoRjX5m62xv%LLDZpOUb-^ zUkm)2>hFg1t<7UyDHt4xD2ZKa4$62xo#n$YZAAG;j~v7@1QQhmyU`3f#k#~Vjt343 z7Z(ar*0IL`P05R&r<#z8=sro<_^5s!*fY~j!p?+{?+b)3fzTO;u(MuszygI-g$DV4V^ExLhvIUBUbpnIKrw(&RIzbXx&gn0 zVy6iOAH<SdwUwQ*Ro2n)XwSlS6JZRKSl*iOfaM zF7Vp~T#$ZcD4^Q85WnQzD*o1|+GpVBep5IOAd5Vqfk-R?9TPIPnI|$E;SZbiy?IFG z7nz;IsFLq^9ax8%i~BS5PjLH6syQ-D5Y$%E=xwZ25lDsId}frCu_rRUtVKz(q_%1Y z`DO5y)L);?-Q~bAgFRUb->su2!bnL^)mrqaFhbRagUJnf5IE$Vb|HrnADWT}VkhfT zN;RcuB_z+iYSt+K(%&N1nGt2MjGitTkejOmg19RWgO^s)TlRq(Zzx?0M?FI;+d{}t zr-My_C~Q)Qg1sGGjpD$;md?8#cd+BCPnB1Izm_v}oD%=#LFg99S0z6qRZen@31LX1w|d&nrYSf{**C%yzDtNz zmq;V9kOGCAcb!X=85p5rU5XCgb%~WkUc8DXWmdCf-`VKwY`kL zqP%Jm>9DD2ZM=+cZ`M~CQ_`=pNoOX$mXYxKBsE$R1br4I1A6SY3@T@N0oG?x{%M3W z-~CZZJ|HX!Gj?61;0YXQ;k+xIwHbJ?e1e>K5+EQaW)2`Hj(}pI)`BxWCmW*21`nPo(rW@^FWgw#bD2r3@CF!4XODNN+VF=L@dl{P<8GMQ$m!@Z&h(oU}KYopX3lt@d^g@(tlY>S_e zYSe@BBF%t`i#1lxf1vt8{#vFX~h?x@8v!$5oudW$)PPnRpvpgO8c z$$nF$nAzO*M6ed4cAW2m7RI0=NDCGyO>KX!YQ#aDvY72K^Tx)T&33lPm9(=>UApo7 zJ9P;~#Z3AD38yMB#s{^v*Dhs^oArMVRKK5fR@$1OTPzq)?8T88!Y#%}^iL-c^(bav z$zOW+Lr`l2IIuefM;4%fgrU^Xmwpd&z_fNwoJYcWx)$l1rp>M4m*FLX{lI%^`ah16 za*!)nBNqwR>p9z+rsOY805@G3F(us1Esq$%3Gg4IKlJ3=< zI06kz0kPLkVTUO-YsU&A1y7ujkt@Q1{vT^ehx8W|Gnq0%k#6EweQH02yX&!cnz+3G zY=y&2C1!@*s&I%%*B#FCOh6IkA1f$ZaeSQ?DPZU$+9$(hULfpX2W96)$v|nT`VUA> zl`CO{_Uh7&d~MmcBZfQ916Hs~OrFamzDg9sl^cyIq{^Zkr-k(#Ujm zNp72_E`{5SwE+=jT^M*TQRwMapnfNuWkb_>;|w$@L`X8_4k#0O9OuC1C^4s8t!C}| zD`8foOFKLg1JE4Ph3W7c>X<{)MD`i1$bm+dbl@Ak(=PBD9?U?2e&=j7Z9JVf3N_+^ z#s|5Kwlqa3-D}~&s5aPAs>KJ?Irxtsq+m?w&(yM7$ZP#Qp63QttO}2na^@{TWq5H5 zO7s`;7=i6Dg;KM!ru30a{;$J~oR4^c{9!|JxH~f;h=1{J4UITmWfX(XECnuZpD}J_ znhuM5mB?`8GjA9H^EWuCu+76;94ay?h{nK40UHu#q6p)PMHnyTy%m#Tk*stL&c*!J zm=5YrgLS5Zbul#^NCW6Z8NUQ4%@Cao;LC%^u#6c!_Ums>ZHk9zU!^iQ_ZHH@Smbyj z(=}NWa!3{ZiT=$iO5m+5C4acI5bY5wGO`I{L}9`kF+03TA9cHuN3IlKZ$jwO-^d4e zU#jaLxS_`Ai(W7Toe+(fcqS=s$RD-ZGqrgiWU|kFquVDZX(1#ZS5uJY9%Hf~<2*v^rWy((b8m3R zBVwT@H3%3W2SJwHnVPcf?kb+>(Uc7vSy|4*?86xe!xkAS>KFuXl&^=eTp0vQqD(K& zK0d=fmOg6hBYKhJV%?}Oow6VY?au6}7y*L`GJt|069fJG;<&VQQ(C4gX~`}ay~d}h z=(2sAc`?ptf#&m$bOJ9|KD%j@QhW4XeH9=Y0m-oeqD~1xnF2zqb0`VUnn+@T5(NZ( zA)qut0U+uBX8o-kL7)DzG3o8>s3cI1S}Q$22J9CWNU$7J4w8qAG92lSGbvWUE~W=j z6nz<2$}VOckb*O6>h{I9&z=Yv>AZ{fG-7#pWdsymeglco6FL|tG9X|~V+e4>jd8|7 zDakN!P#Q7LM6+RFJ&)1Ccv@^sSvvO~0%Tx-xkR2FZD2ql9skXG5Za63Uy5HCrV)nGOzShy;S64bUE*5kT?v6Y?1gA45tiUs zrv()D77@v#rcrkFfxvYvP8A7+*APtP44&p-1&c(Ec+e>srD&-No#U`8=4xaEZesnc z0T+2Gh)ME>)g$#@7`7VJ>MUQ2K6wH)Zf~Cz8S_{Yd>AFv$4g-74p#Ym&TFeEZ|AeG zkoybq%YUA5cjOmwSf*}lT>zz#Qou}R#Z)2}WLxI#VvZz)l^}!75>&x;uCx3RT-{TM zE%?!exKi;PlnsED$M7QE2{Tib7KWE(a0;j(k9$(rktjMYDeXU(H@irG;=Rb?i02ay z>SA=|>F(@`dE%#}o4;38!47#S@uWjNaFu^g%MA3W7YpSq6fVHGgX|pl0E1!}qCs+N zv7H=X1&b#zoI~F;QAu_KH!_jar=R>;8mEgTCQSTI2y?ARUt)fPnFyugcLwJ&HN*h!DW0X}K|9I`heF))!Ea z238M80wq7{#2bu;!fFhY&u0DCQTU9gG5G#~Uc&eB#Km2X21)eMIHrx9Pww@Eb`y1I zeLaBiU!;W>Wh`KM?k?ZC-q5#+Av0eKHzAENo@%lB)JI~`YUFbAez5i<>PK5x{kzKwH(w>X<}fdh>>& zg`vIlxq}1lx=lg&=Tb75$=t>;5H|bn28B%S5iXv88dfafm;iY9stQ1>5)LWV<198WFo4Lv!z4dyb6W~^psjH4U(JP z1oeR4ezHQl0BRyh&^~b_(2fT8@=`Nsr6BXX3S z01VH{lNH94iIp&^xvw+8xDQV#1RSjXeoR`_3?W2$xEbav@)_ilXc@)S(^#OEdwyqQ$*vtWlc>dW`|CNF0R}Y^x9-4gti$5eSbMUq2*GW=)wgHh z+a6U|P_0LsmIYOOKdCL=2!pE)Vl%rVW)rnwCiCR3bp}V`Q%~q;MjavG2y)mNyc|Ww zd4gRP?s#HZZf8P(&dr9NANY)pIk?WdeO2+YoTK{4024L2~h$Oq;J@Wfq*qpq$3g} zt!C;@A5IOzl)P3izYY|ENif_J=b=G0yUuZWB<-LU%6BCIDu-{kHg+o9GnOXiJQ{mZ z3#>`E&_*3)_Z}>Wws=}bih3~5g$`-he;yv>*1}h0A{A+EXw_Ley^+2jglB$`25|7K zXY6!yzquAzm8zY!%JTe_{M_z-Jy3&_G`k)3Zypeyo;IL-zp}x2!=oMEKBHYewA2lB zItek>4uK#v-VyzjC=R#wWPO~#y`(_x3USL8jOKhg>+mGcK{wdA@*;=>*zev~mr2B4AfQFiA;Z&8l zHdUP_h}t`{cC0~UsE0cti6_UI?{)bE8zbbrKaA(?`h$1Nct#waQoHon-^}sMo`o~D ztXP66WI(6j(XLz;LgV6`16%~el&>zIXa>UuJvDD0@chq@AC;MV3 zm@3c@<-n33zI*Is>Enk0+Coi2mRP#q&n3nH$MEQOmX2LsxV^rdRK>zskF(FafHu$r!2-Yi|KKG;NC_V4id%k{@GLpWco=DwZ4 zQ+yA#Vvo$8!mK^s@%zCV2lUl9amM2AlHIwW-q+X7Z1j=M>bx{jClY_MN;W>17hs{R&06S)=ptZ)YQ3+sd=(NJa$W1zJy`L3LRFYl zbfY>iL|pDq{&rFNo_kacpo+i}XRw3RhuN(FL)sNy*nQ-3+?@^!Hfx{rcx;I$d|_dznI|*}d_53bd~n=35U(G;0;%FJi8w%de-72*WK_P}SD(tA ze^pfOI{nm?g776HP=iqC8pnY0T4!)6SuOV?XYd8#xzCbNcnghqeAkOt^wC)V^MKVz z2BsV8ypR<*#hF#~!Snn;E&9vZKD5`DQGhi`fl!~5RiFx``$%EfShU=Y&Y%-tc*9-u z!-X>fTaN~QarifRbGP_EEX?{jL0wVBu0$sgt;69e)PK+7ja}w0m4C-p6?!g3g zp_T0wtqh~lHz}@&Jw)R{Xzh^Dgd;E*emDCRh*qe@-q1JtiuaG!QV~Xv5l=dVWL48F zji0|(&ZAMl_LdZZL~Z2ez#fwoQ1JP=KPu*AGN3q_!y8oYli2}p%I@ER!u@y7@X$EGz86+PU&1Jm6 zKMhOpdB*R2{^HpJKEOW@6Pt5C8twO)wErDMi?I%}-wl)U`dpen*249RrQ}GwN5x(X zmln|;4&kfS7L{`FYX~?8RD1MWa@0Z|3a>!v(lVT_ zQbmVDaVFgx>9oPQQ4c*{nRsU@^pJJbYeG@|o{v#=Kw(!R+=xu+GhOGw=b@kI%?88R z$n#x~CGj4dTwmh#*rz03?vzu(4!1N>>`?v#Sga6?6&?rym6qXw2__hY{DCEkJ8dDz zyb-18X^{YNPKD56j#rqqAPNv^;|;&C5KQL{Klu!Q0Hp@T^#l&PrgRqCQFqgzES{UL zltqx-3zEY`ScXa|x6Z=bss59JjzZ?)Jyr1!7UbVk@=O82sH@@=@TX{iqAbGNHY3H~ zMw`2~3Jt5KpwYa-X23I8%rOoKI`ECnPXHdFV0**Z3ltuVQ4Zb{0i_RMG&<;rTWFNT zc8-4KI^Ymj8V3c8&o%H3MLZx5%1TwDrP;Xk=Jw5S244e_fU)Q<5QS!^q=SgYdJZD~ z)*D1&H2^u5{>*pSZRn3MwQyKa+~&1KCoztwf9_C|Or{ooL{*u4$bWORldy^^QG+5k zMjbiF*CoDQ9O}mAVX)x=y>u-Agrej4fI@CHHeUF*XknAq08*a>%{Tg$^!SiB_mDGK ziE9;VkcV|^Nj8p0$-$B#59Gm5O~=;yQkXEvz%DO<2q^v%THd$&S92zBw8 z)Re`k-drr8{AYP{$7B@wPxIzZ$k6<)y}8)`;%_OS=F&UyV3l*}21QkTxe#B<;3Lu8 zifE6l0Zbg=Bw8l@bivy(y7i9-VZ=4AvNgc6&lQ zVy%SV1FJJdp7!C}7)5T%icGvmS&>b8Q3!5Z!IrvZF!hL-osmM6Z1J={s>7n@1+e)Bi&b57K^GJpK$!r zvV~pekmj-UI_-HQGq9X{+t(F3nii;bXrZ^PZ-5>jKm(lmxfZz+I)Cm7Q@)SAldzp| zt5tw5kGRET*D#K)v<&Eb2f2WE#ZI-?hqY&aEnJ9~P#?}QqWlO&v6u_8yC{BF%l(4w z72?^floO`xj=inHgdq=2sCrb1(1&D3{PA}E0Nq@~KXi|#`t1eiLVzYsgp7<_z49e4 z<7&U+kiq1n)LF~(Tk=ZWbvyY&2HME06Q+}w6P7ykb&=)F1p)X=5 z!b+9ObQ-|lmSf=0oBL~n_xBSQOgp%K#<(uVwK5!G%V6Bk3-Qcl zXG^YA+?>?YV^Di0ri5TH39N-?R^nhoShY*TaHwL+>y|MfxZ5{ei}*2YV0h7Qy@66$ zL_NI3{tdiFtT7Bc{x!TV;dQpZg4e~o&hszgHD*{$?*4@d+=@I5mw(Pqha+3~le^vr zvt|3lJ6bLbIp=fQBXj3g`@h%1<&!4 z#OLef^H(?U2MJcIzi%>b|7#P!T$=l%Gx9Neao`KB!Gj z!8QJD*8@x)E3)r%C0pUu@?Go_MK3E)c7bt)KN> zQ}lthJ#b47^)W1noLcDD1UEom%5C8c7O=O0Re*N``Qg!d;8XxMpFdoKOvdxLJ_O;7 z4RMUPimb>eleRbMy^oNIgL3cb)7%*xELE;{GX~*p90>MhR6_~vdu!bY8xZ5NGYEGC zbm{Ki@GJ*>WEds~{QWAyY*24&eK#SI2`U{4pfHF3s{gR^D0ay^gA{N1Wiva~cK5$z zKg|u}pYIzFAK>?xDDf>s5R69pi-l^F-gHn@nn@6qb`+3AOx`A4NWds@FQ(_jyV0jv z25?d=WjqzB5(u-DLEQUC$7Us7I#wgnm)Nkxi!qHT69z&ZonpClYgS|he*sU35AT(s zckTzdh&6A5xXPYg9dic}q%-XhLr0^G)N`~3!od_C$vdUSYp0ax1CyDu1@@t)=@@tv-v%UlDl0OUj`1-z71DRjT zzs1O%mCU~(`6v)LYxO)9oQ2ScZXbk4!1eg0ua`I6+^X%!j%7UvLpH}#~i02n#(qst?0GO1S8bxVFg&ye%750p3%HU8M1~-(uLdctZknW%yUFHjz?Q>W zr1Y?cm3;Ni6Nrn@2Z614e6;1%mOb{zZpX*bulZ5no5R|HjXn0$K5zhkya!y|Ui>ru zcz?#FtKfiJinCEt@H4Jaj%$?XNqLc!;~M3-MtQN6mr6OVQC=zrmB6Yr{{pT2O=KUB zv^juIxjd0xKg*-)txbDaoLitDD!O>D)7A1~wAyd4vsKG}TA&6}?-&2J!brC@T)w$I zk+hold>V$)651tZU((H!Tjk%y3kp0ic&&c@#bj`jF4V;vnhZgURR(HUqlE^6%|Y10 ztZfJaH@vabH^6d0{S{au(j9wkdR=#HTe8msRnR#zE#m$jO79<7t# z{r@w6`UZ`thni0B_;LBuH!W+xpZ=Ge|L6Yn?;#OPfBK^v>iN_EKcnwnS&siV^gW8O zDh(bv;Rp^>YrMou7ydt|?`cJ3o*d$#F#lR&ZDeD;#*!>nzwS zSqo^)npy$SLaRODIWoCk>xm4k?eV64b`pK6*ZWWpK7u+7o6}Zb_rT2e(^7nU!)@L_ zYgJ(8N4Wkfp>j~alXx0=;{P#L<%vKxi7D{$CG>HPa(QY7rK2@B8Z{_JTDjj>ap|z%b^%m@Ii3E4JU6F!W?#t5W{O6)Co}+a|57N642b-n*&H3JU;r?2-F$|^5> z8)gtBM`YelNz2$q3(Kl5hG76VZ&PF@y?!+}d%%$b6&y)Fch|{}C~x$ry55%WDo*bP z^wsnWOnNt>ufno_sTXkp^q6HG)RrXz2BGtxj=4kP>97xqX@jbNX`-z(;}#G-@jg}p zqBDZB)$m|Cw91i2{Dmj?XT%V0NBjbo0o%Qy-QFza?03GnhnjpF&-lZ`fgb&ae9X8Y zM`(5I1gv+)A3@B+W;kEVGiFVH`czcfF2Lhl262((b_>B}Re5Vy^}kHxpDKBaX>IPF3fkE^$)s}jhGELt~IW<#FrG+ z$$xvV^x2aC7KohWu9yE7#wC9yW*rQVjryjSWH6j432A+6J=VPJ%Fj zP>H_9jv(SkWx@TB-+=+!zeZWL27cKfrV8$v2lu8r4K$PocOV-2ALqe6uK67nA9z@h2lx2% z-vY?G`EOwzK>pho1%toq{66wkQjYVxFjW2gw_vC_nR+wT^zSym*E9zK;48k6p(H&K z;=GcUX}uE+6X=Z!!q!vad_-)sH`IsGKHT3V#)@bz4((HB3%h)J50XVh)L~WI2YnRV zFr*t&=vOb|1ZN?5z!U12k&pm&=6j32hEOO7B*|)gMAbM4HLCt$)W9dr8oQ##LIi0Q zh9~DCudwDj8!quYCUJ1O3SC%+%O8wYgscTtyTzLdoaSIaX`G|BV6NnJDR!w3h!ys< zFM{UQc^C+4OiD0htV850Y(!tcka2O`MAZbd)fe8>y)a~aLG_|NLIgRgt9LZjH(==v z#=*#pHG%)cQ@y>Z*{}XE5A<^3Z(1(~HegaZ8^2oUASJm=gPu`{{{tX&s@%%Nxz_(3 z0MmG*+&*`n%c%w9G*pZ@=8`;^!aU!-~gK%rW427YwXmM(Kc&Ix(IHL(1E|C#1{Xw)Z#a3T>A0UJ!PWY+O zm@Y93=6SHSK=XBm&jKWY;Q@vg>prRf~N2TxZ4}b$ndoXhhs7nqVxg#qRU_-5~UVq4-m!d8OhRJ z$kH7KI&S{JcC#wzYRcwJh&0B+_#w~d1e5t;d!J!jEjXZ zjeh}I$xJQnKJ2P2>gV3pD9eBwCvGyi&Ik+p(ev3faoY0uWCH}qMwe@i6AAJ z*LrY@!7e04nN0}uLG-zTwiO1kU*>^CWXA=&i@^SHZ@2gY74(@ z5ZNg7Yw!PxLRpGJroHmG==1a+{#*LEDh>L`dIqC~yQgR&SA-adKARKACOz|HiW`Kp z_LDGHS}(@7q~PDHrZqhC)F7G>geu?f-xAxNn4{(!Q4&%33E{%B#)~6GhK|Dg(5GT& zz?ZjBJ{BR+1j}Ud7`*vK1FpL23I>e~yGnvaG&X~vk!w<7?c^OK8upyUJ#XMnln)oN zny2sHyGe@k;37VG*=yMA zkYB-`$4*+dp}ZJ3^o_wa^r1fHU^~=d9+le ztjlv*b3wqg=Z=nIdz)yVJGPBROY59ZG7Nt8I?Z8( z<8?lW7zr=l{{;|%cExI2Vb$3fNwg2k8Bs6G9Srr1oXS=cH-wg+3a7u?643Pt{6qw@P4+5SD1Z;u6$-DSdU+>Qu740%)oLUJ1NB> z9#+|OFTMgj)r&A#B1}-?0Fvd$Q~O;Jq-<^j9`qE=oUpE-h7Hoxy;76J3nIYn87X@} z?VX7{Vzj$ie-TW`Sh8Y;HYgU4vIK7|;1|e&Gf%#(!wL@=#bk#E(>fNQa3BW$c?@mH~lqsIej+4It$s&T%D@2=vLo(~K0T<2uC&MVy z8Qjj`2h7Os$~Tr{%YzKqrC@aiaKQ=&^}xpJaIjlhy}3%g(d?K^j?Ak2Ri$VBRYhs3 zP|2ZgG8@@T(#{pgt%6(e-vveqNv;xcxKV;lMA)cKhe*0h(r3x8i0W2g|0D=&3ejW~ixVJa+eTe0}Z&Kc*OG5Q{J>HgCNWWjgfh;tfv z2Kj~&$_6GZ+f60}8^M6$79S&aIv_nG{8)&Z-|g#Ei1_xvkyO7U{~jiZFcQLT$0i7U z&A-WlFw|)wjCI=Q6!TG%K#yAaB9Duh^VreaWxRqFhq)0#tMmy-6pKXT<(o-T8Ho5E zWH-KJ&JW>1_Eq*_xwXg=DME+e-^C8g`$o1R3|D4}@SP_8Y4<%SGfMx1 z_&g#U0val;<+AF_aOVhJP;+Jv{&HRWszX|}}(DaJdgV_+GfZ&b3G zX5hqo2Bge`xs-+?YV1ov>jjBA`(xsX!&177;7&uS>s8Yax;$-ClFvwHV=t5ceN6X7^eHpMI&4%(F2(2>&M&9-Noq{CJJtlh2oq^ z1f;9+Wd(W|a$nm0}MQZ%&g!okxFl2Qa0=p312HW?Ui8|&dzK4Se%d=YlZmj%a98kL- z&ISYw56_OZHslo+Y!V&pAZ%deOavn#-%ogGI)d5GDhQ8mnIBkFo4aauw*t&eu7c3M zf~;*byT`oh``lIj74es zQ!bTAVg208PQ_-q?`AYFz@AXoY~$6z#;d*f>LBCQ+I+scpRb}T=Br`j)!uxyqw(s; zd==q|k<&5tct-zh>fgiuom$sQDjaN!3mj3)hjYSb(s?t zb9TZei@m<46j5+YygRL<(Am`4Hudo8mYo=OT?Wv z>jU91yBprMb+ex)s7!>Gwoi!IgwpX@!5HCVD4z+cGb z%4TNQy8V#3>)?{4hB=TkiSd#DtC-WO+phCnBemFtPKGEzo7Fi5z*LI<;XO*Of{`dQ zn{<#N&mmzQ@--j^M)#9XwM|jOe;RDTR{lh<3ynnz!f_u{Qmax)twVlyEGO}@$g3Kv z=or3~Q=7SswI>1BDHs=nw6RU_0Z1(zX3#)3>*LZX5@(lsB6pSXQ}LD#Q-wuv%R>9) zR*K71NscmC^uisax3chc!HqHg|a@EPo!@ z)c=mvIovl@aIs-+K0pjxTIy;~Xr$%|56QtEt2}I#^tqk%?>b$nPL~I^7~0H$rfP@= z*kp3wf;|S`dLjdg@mo|Fo{j%EV<+wyCMr1WoOTABgGJOdczAfbZCL%_HDNKt(-hOI zbh>PZv1fngMwoH`P;(gqZw5dmDnu$(Si2(SL^g`BeS0?k-#jDHmK$xAnr%JzowQYI zv=!lJ4K?@c!-?i*pt(|ME-WnL=~}5IIC0xV;kKM5o|^K7_~Ad&7pfRB+}B^I_c;fA z8(IYff9MH4DDQ?IB>QQRw2hun`9fTJ!cwg#yp#|0OcsU8<)y$HSDf8f>w8|XGPiv_ zjF5rPGz^u=;2IF$6Z$UZq(2{w9H`->>$}=x+M&C0uljdtI(rz4|G3dapNZX3W;i?+ zksc(A0Q)avWYbF$1rL201<%kxzYqnn$0V@dW&ll$C~G`}GA?>pi&iXsW+1m;R`) zUJ!3+1~*%gYs5bo5RRz{EJOwTXPNj{+w$j0{2~0ggV3F-`u^Mw5KP>)3}=bq&9(S% zk%|Peh*5ZbExTZy1Ac@L7fL@i+F>1VkYtu%K`;ncCX6-oLJfvsffUC!d2<`+U7bb6 z@zkWzRfe_5`Cu4-+gJh3>b62(4^O1qF2zYj@)h<((*dDhz`#_A;Dt{Jh(rJO=o1mr z3EL(_s~6J)!W-eLbp}%*hNuuiTdFyT$KKE{TA&v3hVKzy)q9}C)F6BSg<{tWw!zKNC}s7oCG+y3oZqy&V2Q_K3o8QiKKBI@!NV4*^= z5Cs;hQ$3;e9z`|A%ubD~gQxgld=+Vvd0X~M@utSj6-h&Q6b`b7>v_k+3MK13l zHy>v6VJ08u@PV6u0CbH4dd2=#slHAC8Wnk2QNa<|%e+Sja=fm~BNNtQ9Z>Ddg4f0p z@t`p&*8uFbichQXs6ZNhf%r-YN^r%I@oaJLUDbH0_)Lo)u@T6gw|>zsEL4_TW&C| zSW&UY3K;7Y;Ra(>2qai8*Hqft*0;4Swc1*TmcCVss0=b%tKxv-2u^seR{=*N6!QCg z*FJYjqObqw`R94yp0m$B>+HSu+H0?Aul-|kWo40V>y<72T1&MacCdWL`{Ra-CZ_Xc z2rkmr6`FRCEfr33x#11*7HnF`KJXS|tGYDhyKKtmWWB{rf--HhBy;`?Vi0vLNTut?^8E+Hd-Nmf#%)!6d$tVsT{Z8az z0Tc9SV*im+C3kttHiellnp{JfFs-UUj7{{EuGTM3h#k`U#gNz;i&WV9#e~?&(ZZ*x z*)`+!p-YE8x11eP22ge{tK(Ha9V2zpN0DV;gzF0bU01P2Tr5t_=W?1e&%0zas0wBL zJLnVB_YXZZt`OC5DIJ>->qp0$eWo_wSPs7Sx3HZ{)&%;)>?fv&Ll4CUP=8rhP3x`+ zvEBH8Nb@EpM{GB*@ZVm=nw$^X%jhh~NBeu1Y@NqUnSMBZ{3h?OqM!QS7y90+LV_6f zOkL=D_c{!?bR8yu2i6s0I0aL0Blu>J6sdlq zxxZJj)hqmXImn4D>tv+1dfV1U3zw=ay*~qb8#H(1$z8*Tgl=6nd;)R5#cPC#^mD`C z{(1O2g#Pq#_{;QX=o4a&p^?w>u0|lu4?XGbP4a}qDmun?v6f9INqY&0hCO5Rg?6_N zKV?X)RLpgD*NiRRCCeNLnaQ~JE_vE3B!>KPZ`*TVI|tSFK8rHjWZ2864UYb4s3&as zxOM4y>Go&+%}mNhGFRD>_F3Lr#k^%()kE!%gZ;>3%y#`@Ptmq1)+*07iIy=k(uq9H zU!4!P;h$?BT$)l*!8bOZwBeeYedUVN**(3kCC z(y;wX@dg-F2^*&rOD_zc`U|RrZc>5=r`1$0$H-{!p&E>RTW@F=%sF6${8)A`2ps+v z)xmF{2Yo2cIrXhnwK^uqJu822o_P`mCYxtq7Ol!Ry!LWBm#ll^gdq^3&3FUf)~bv= z6ztiH$R`}<9)dVPLfw-etAdmAX!CpiA{C@}__0WrJM-n#JrEmh%{JtjigQs=#^*9S z$j4BYiC=Hb$g*i`&1x)i+1Uhtg#I~{XZVCz(eNQ`g>LKWGiCSI>4ig@`!Wd@6n3XK ztFUM5X+xTeRSQznWXVFz=u>sX7l_(kiUcl-NJ2*{5f#HhKz*hhRu|uy8aR0#L1*M{ z*jYI3fDxgGMjqEiLp~TjMEc(j`_xIPQ0-%43F(5PxG>{JJB1Xp??WcJY5VZ{p?dv8 zUQc53m^LtV`6GIh>uWD&qbHG1oSu!$zQYThiSv7V^B4t;4b&*CoNKW!r?54;*|J^-Tf~3Cy)%w;XiLQw@N|LNI!J zZ!^t%KSc_al#*%m_{^iPqdiq@$SUxW!Dph8cTU+iQurDz!78n#aMH&8*wmi7+3DaP zld2)$S2^>2<_C8RK}1!;_fTtw~XvJIJ>Q&+$-s;u%6N+qy#GDZ&5;}|B zE$>Ato{3by6b+5t9$B`f9~qsxSd_d_WGi!mDqD$v^eU8XNUWvG3yme?(TDwrpxlh5 zIT9M_*IH2a&{qR}OZn%}h+mI=Qx=5EF^O^CE*LXxpA(x)HN0<(NyJX<9Fw@=+nxS~ zITk+mWP}*7VjbI!in~P|rYb;ASm>xUbS&%ar&JYfmhu4RfN_8X9e0+s^0Y3#D|LFX zKF0TQEJ{g(fK=>}J%yz%EMdQ#ma%&iZu~~RVPWCg*L&~!y@4&#&Lwi2+X{l0L44SuCAQ?va2<9gw zFQuWXZKzfzG@%QWd)U}2V~2SivUA{XLF=l1IW&7P!xk#(i?JbjoW>DO99BBDz8?wL za5?ir?PWai-`tI@`3I^FHaAE>>p%sHLV&oHhN%BWmc7%@_U@-fIs3Gf6}7I9wT@op z2y<=NC&Q@EAgw#dwiWDyTs?J)2$8m9Sc{$Qb&R0xea9w_JK{TuD~(Ymr^Rn7}n+rYoXawXgQOzPWixNT)Xj%77}%Z`S%U~46^ton|NTm9M!#Y zsdRLYB=dcui3iH&)5B1k!VWCsg1)|_MI+jOwnmg~V`<#8cHv++(i{vf{{_Q3^Z8zf z_0`opTm<}sniXelu z-S3*<8Kiavq{g$$GtbTmo;B!Mqn=%zc~;FcdDLdE5I@Xt=?f8&YP5b}E>1y9x%u;U zwqD0VKl?{qJ|gvl zyriU#YSVpcuTevvAP`;m=X2lwM5uj=$WCd**Qbue9<{1y=n(iJz6xz&+@QSkw3y}h zrBK_kf5Tq;AX9=d-nQ1`bsdk~avq^l)xb^<(M@;GY5flfzGFZh)8c(SGiI7Fi!Z zWP<2bntwv-@wr8Xi)d>Bdnby497Cny-@dm~nj zEbKER(zdj(y_ourL9$kS!7ylxzx2CRxvGuqy=>(yjFrQeMh@k);#H_6vAyY~pBf0P zKGrs+!7F?|Nyx0W*>iOlS9Kldf?mV=@mXo?|G@t}43)$GgxE>ar-m{T&4&L$Y5W(X z7|nK4^Yw*p8#8#W_6lG2;?JZOXsmvluKQbB`|H%rx!*S==HvgkvbiHqEqFK>fQNYJ ze}|tCnmr%bzYUIkvnHB`4qH`!R$<@uYS$~!xm~$F*sBGGr>2_5l z>sUjw=*Iq$BYT>Dn4RzFf2B6%*^+cMffz%))uW3+R>7*##14^K7J-GFOJ@?1y;mf0 z6+-7qQY&K2+-d3Jls?Gla}_qRPrd40*M2+n(81qqe>FCsb;l62`W+LR_eRDY$^?0Z z;d-%Zd29eLQBt+MnS?g5fa+b-o@596)E_I+aEbQ_7}ekDb%YicLPQms@PqRDgHmz~ z5>aF@d`<&>lk)d3UMZzdbRl!rd5A}9F#B4jvLRqEREjjP=B25}jZa4LdP_*?&#$gMu#XF4{;SovcQa&XzNQKJ=OW3Q|Ys3ga}RdhL|U9MHaSSw?h||Dx!t zZ3f3+oQks^MUzd;Z8J&=nh$pLMKuv54#XRtQe*o|0q|E9oWSNjTT&@nMUzQUIsB``V&S<{U?cHnyizPP*kMP3GcrufqMn3x z7(2ex zJ}4j0;v$D@qm=ZfQ2U>3^pVH>(^y}N#5=4n%QeH$kVZ(l(h@0&fP_GkoS#?PIh|V@ z_<2cn+|AFs*@kJ|lfm1oipmLQ_<$%{nK9htmYO;;2BB|KF$0-hin2v;R`)!b-b zOo3t=UrcCjP~CEAoKPO76F*{(3~4A3VwDl162j*Y;xGjra&UB-6y-b!NKqMOM2h7i z#j51Xy3HV^dgK4$-hbnXpgU=Nq=#MZ{cg>?L)kKrX41`kC3db7s04Eb05)j)!vx46)ip3>^<`cW%@Du6c>x@ zIze!$|M2X6bvQ-48XxR08K;bH4T!N?FUdmeMn+Sf318Mj8dow@p`37f_Qp!Qo*|jK z`8pZHmi0lhBkh@qEdHY~9tn_pMB1iv$cw$^CH6u0*Xj%j)@WUt{0=x_(F`N&!oJ1t zj@&_!ZMR#*c^?J-kzKmq;@?YEUU9P$i_Vz0cXg#A2u*#b9Ncwt z4-QuI1F3&~nf+>19N!ctnPJ6ZcPO&U17#cOpVx5~t6eBhhJl1avwqLRxqT(H{+6rO z>%~m}#MP)c0TcfT7GhLY(ntGe!T!iD)_fkzuN~=yFuPZpIgOM;a(W)~DB^TPw8f{U zm1dT8h~5^AJ3*BearkJ2EF`)d3DZ!hJ!U?Q*(~h3$w7T-I+mM5X`(Z^?t?XgW_55k;$$>u*^ryDukk)$z#$vWHet58abys^h~tPxvN-L7y!nERQ%>D}&-SBz%&ksTQ5TJ5Pzos>Vg+pu~-p?G|$$8adjb&PfOGpko#mkRF1@J2ta&ywj z)Ia;fkqN#VnteRAlV|WB__bC)>SVgE(@7>Q)HkG8xJTX4wKgdrAblqwXyP3 zNT(O9sC5L}Da`ElkHwBVdm3k)WxEt3VV*uf_6CSG?OM*8{?MC5@Yv-9A^db8-A<-)>R2yvcJagWo=iIca4V|d7As%^ zGaHE3^#?(Qj{T97;|D$Raj;*;t;*{xgd}bIVqE-Riwl@I0SOa!hg4|B8kYHJ#ddGm z_I}b;7{93Gyfs9W6aPwr{eEPD4$b-lfZwai`9>7?qNw^i?HBKBB8U^ zVMg{Up266LB^_~ji!AA~$$O!Z?CvL%FoIR_KMNzn&Mj^p_s>F-gJ%&g|Il->y=6Tw z7?U{hWdC>9n4jc0CGGn;8GXr%9Xm`G_i_U7!h{+Wju|%YaLzwGCJK=@L+iql zNE^lcD`bFf-Z%7+qU8_HZ;x4djTOE%)v*NLlkWfsEW>Qqqf<_6FD@wqdcL6_q77VS&i3l_$OOIX!cfK zwXFGPG8kj{g)6^dG^(wsN`$QIH*DHrkuS1%Z$;8&jOba(1WY@ZU&uvDTD| zKZG8VR`EM$Pf+IFscSYLn*gtW8qN14^ss~%AtJIp8|aECzuCOYLrD7jVbjP~CBwTgeq zTICU-%T2!Dnl;D)@zp}3Mpr`25 zh_NhFVcD-2x@iC%GvU=N1AOOu!FN2dLi>(*Noe+mG$?r|Ql$0cCK)O^0$FLx;qHva zD(4JQ^AGCY{2l-5t@$teYJSZg^klhR(#71i>l3#DO2)tQki)dn(3goYxkRv=FX6o8 z8OeIuF?ro-3%;Az9qs-)Lu(1E#3{B)9Bo^wPLRe*XWJhYR`3pD@aC#^E~j24?^c;S zzP4=Kdu4`5wS5O%c^OIa;dil{)-Gh!-QLNwv_4^EX^{n>v6sLX%G`dymhOQsP2INv zGOA79vwkLV#9@|j;vO3gq}7~oo4+p6SFb>yFr}ksxJ_~TtEHJ;h-NDz5{GGzwXnv` zb?tdoyp3}+YLzQj+)c4R8YRS*!A#K2NfBJ!F63sLKmHj#&I!30t%9788w?v;SWOFj zt!y;jnJPYd&)s5I&|3SJZUZv#N0A;?Rm+{tVHMBFW^Ck z6UF432On{kvldbA|1mPbmPy=&ZinXA9GZ|C$3)H@n!O|dnEBTx;#Uq$-WJp^9T`oM zoRPVI(N~Vl;-|We%>63JADIo{e)6VZWE{HB4Q?43jhh$TLJeYFCZ(LHGDb^`(*Ftj zznD-nSBT-}NFI(m-$}@8#@@p=56DpziEq8WzWGq2&0+OboCqR(538?i9>5i6Bi7f% z2FXD~o^T8kIA-UZTe6%-VIFy*TOXIe0zF~+9Sf|n25W2yR|bpaYS>tVH5OQ71?vg) z5@7ZB$ox0wEWsKJtg*maCRnXB9(ZSBqx}D~eKaY70DMioH*89{`4FzExGHXDYtA*5 z-mq_~yVulER1({hCaQVo2F;6j-mveK(!89~T=8loEX(rmwS5qFNk2H3LUO=K){}2o zeA6z!^A1*>d?B;>9VaXj1>!`4e0!YbuP2_rHoguUQRGn^X8Jq5b$Urbj6DV!X2TL- z0-f#SOU`!)1bZat&QyxZG|!2$@q-B_Ve2@;u56vQ72>IXxYdGJ29{|_D1|MH8M? zXJ5I^ePs{X1S~|0!?c$A?OTz@mc|CloS>!}bEx<@vmBlt8B8YX>Ssf>t%D`@3#CMyviRE?3$1b*ixwmw2NS}qH)5DX5yO+=UCSenIg;->9Z@0hmhL{S zV)3y8G#~&pgtzJj>nPZFr|cCe#G~wb_g3m}Ze;&@UB0;`(1(z>Ye;Y%|JV|b5RaIs zBB&WA)?`eq2`1KLOpHM1VNJ%wnqXp0HL>&2+F^($drL?xshNYBNjajm%!HlS2Z^*F zBW$)!+O*x@_IpR_JkM+(H9d)PU8g zmAUq7HG-{uyU@FuF!95p4Pzdy@amh<$vj%&RS}?=z`-`mt8B(K>d^{dwQE;`Sii7_ zq7BlD=df!>hY?=%%Rcaf36h*J=x)Gk%Xwb^hS_CMm%7j`2!ias#)1`mjRhJRFh3T3m**C%QX60DpH?g>g4Ja4xtdp{Jd-kZ z@*May8&}~7x-I8c^R{w#SoGX8ix4!_`T#k8#rZk%h3j8^>kJYDk7i9&-d5z))5&uP z?<0Ok3F!^>Q!Zu+QU3<|Ctnow56dL`IR=Zt`T10F?W)m5oMrPl3C~@mh>b@U zW8`Oz?{N6;=Qq8T#`oM2MMC+=w0|pDPf@UNI@Z&6d9IYD3t=o+K}7&1i%X_Y1OqQA ze&CK@L7Y;tKnh42$4cg&qHpRE3POo&mA_mj>s7Hp|8jZwN$gTgpp`Y@*K1l8mZ@xL zg6)a&*{6u#;Sq|YU{#4-lv)^!Kk^=UqJm~s3DuD)fiGimlZHk0QHcEckb#P8YFCXs zL{Md<;=bGQc&0cNnG zF=srSzl7kjXyVbbrJ#n~*P(W~L+j!k=nUPx=pWBHMlw>K>R|?h5r@TZ7mn#8f5PE~ zwF}3svNQ|GY@HD(#J#}44~u)X`QX$^_K98o{j{Fs zU2b}qhH$WH2xRoBQ^5XSOd5-af5rd!0%sneOPYb`7tU@oL0hoiGArpOf9Kmp1&h>H zrz+vnt&4B;Prd-GAVqEP$wVZ@$p)qNrM+|O`iEcAhdm=KMssLXud@UFG-o{8K7a>* z679H_=&38ps${8i?52$OwMaU4!%7Elc;L?7ro$2I%?b!LmfMxv3U#TfuTC z1PstPz2iBAJNgp>xOo#|>q}{{pW9W9=GzW;sR>cwK32K9rsjx>BkW^Y(pR(ul;J;j zZ$9a30ml$5Bav|VEd=U3(mz54JxTx7bph!++rxi!+qR;2?$ZOm@OKkaPcuoC-34u( zmCXm)@kTnWH4jemXCE=TxI?;)#y-7_#?gQ3Z8UbhXlPqqQ*u>osvClgF*d9Is*jaD z#^HrK9K^hFc-#R5<7@27#^EV<2^nV@4z|ev>l5zD$GQR}a!hlN5fhq+_4`!N6YG;+ z$iw>gxy6%_hcCCDvLCfXvNU(Cbc$)h_TO`%ud_;4ajwGh))}P*WXMmPzWC;6$ZYal z^4^>K zVM)h#*{w6jdL8aCYA4qvf+r#Tq3opci_Z!{&lY-k^>F>Lg)!}FEKIeL4ko|t& z+qAp*xio{kI=x0^8KgNY(%O&N57jo$JPx)x6PvW%Klm?cZQLJZibRYmtSJM``QyL- zkgzk7%%w(r8Ef7zp9%Pxlk82xokpR;B=bItZk^UXEg^@o-^xrNy7 zNQ&j1X4Q=pD@H>354IP1i|@V1{SgtuVnYm!BIw#a;Zto@sA4BWYjYu-wl5k&vvq)E zTT5l%(Cj}HAu~NkW{7^`hMN_pppqR#H_QlidY?y}Nbbk(KdNmoprgt?%e zf9bWCwZ^kO!xsMc#vKlWUWNv{Ver%k90qe~wnAljH0wgQ-uzEDnhnjK3?EPGKOs|n zMrw=&QsY5EpVKsZC;jD*Sk`G^^EjCF%=q{HxqtjWaGLzzo;Y2nvR-i7@nkogDsZMr{Lda>SveP&lRC6h^DajD}^>WCeZ{}}59$)#&kS|9>Grg#-}y_#B9(O`4S6-EJQ0wFL%}7wMW?-d9a@3e zl5*qOGycmw`E@-ws8c4*C(XP_JT;E#K!PF7ugOaUlgy{usn4FT8H z|KL-1B<#1LKNupmN!iSf{=}6YmM%ryf6K4@(3S44QtfF-T#h)h!M|-f5;Kw1oC<=S znsc4oR>JhqffOiA6A#!IW2$%ndWwHu4D=#Q8;lUAUHB}sT~_lkJ-xreLP-=vV2Y_iICl=_6r!Vy?o&e2lyJA7EQDi zM~AiG%RE$#$WRwuR>kR37M$Scsm{0d;Yz(CP! zj?jb6!@q%7lYbK&&{8kIlBKX{INGQHTd#($fqucJ!neBVT_ZL{Srh@fq~Fy~q^EbY zU6Bxe5hN0u)Dn}Lb*SnE{0i2qC8j}SV=M@=At5P&=-3koTd|&XGcHA$OejJ!+-*WoOjtur52JHrTVDKBo3lG-_$J zZUi}_wt7dX{T6ktZDpq&<+2_(EXmRyP}#B%@h-3A+&OI8I-<6olyN!`SKH!jWBG+1 z4usrvaU}zvCllK9+C-R6631kJo@8gwBjH4!N46RFyf#f`62$2d3}NK+m6`N#52yOm zl+;;6pZlC-RJ;NJ-WAZIY?`ortlS{&}hFN3;oE^Fo8x{l%OE2+|fc-#EfIPFmc687&{zB{H$vWxG% zQ)7=wF}|g%zBt*JTbDj<*o0j<`|(h{MLdAMLo$)LHXK@A8j1rB8u5U+n&U|0RSbb0D*Dp^C!Ru;@!5?5c0n8uFJH zWLX+k5Iag;IDjrBXVWp=4CJPj?!aSiq9|$JYcV|6w+m)CS%h;recptHQINYZc7eE1 zTT4wr?7KQsrc?;xDS(@JVBflH27!~~3{DjVA>Lq~UVJGj^OKl`{51eV~*mra_I-}YQfaGrE4 zuSZm|NJ#Fl_}}`~|3M=k-=zvUH1ehja%sdZcfVO2&{)0dQ#O>A{2}6L2w+6YvMI&qd?=G&mNr$)ELaNbsEQabpDZ22LTk|119MwazI7NC~$95B7zP z6Bkf6F#mmkiy`6{m6|Z-F^A47=Z_d3+%lKCNY^Ol#t3TG<+`4;4$@5gm16AE?DB>5 za+F5;N$=UZbH1d|e@~J8_zl|{nb77{C;+LU;1r&-uu*#wB1-x z(0q^%Qzmocc*$(Eic~~j)FI+8MAj18<{?76w&vty&Nj6>f1mk*N=(uw^fl)zRnBH-W_!yQvFP*eZX#fq}q=r z+;^L=7fnHv50sVa^X%eW%V#AtuDu*!;IUESEN-i}{LMKHvxE5F@E>`Swj##A4M+15 zx4ZLb5MGSDcVWWQ!;>C?DA4Q#S%0Es#F&kC91;kFNpgM>)&atSZJ0Rm*Tzp0f|}$o zBWJ$<9X_aWpP~;UG=yfqDtxr9f?T$x0Vma6?bWqDp<4=oS|F6ltmXyiminbKw|ZSg zw}b(J12i6O-@M%w zKyHT9=lq>NaUZmL&X{qtz04;LT5L>`tHbR|Yx1SdS59)yGbsu;mu&>BEuRi^a7MGU z?e{bBK0Yh%W154BES7uL%#{cD&(BvCH6*POH2OmhWCo%S z&LrS=ewYo%5x;ePTp^?A(jhh;K$nU)y|GPVVz$x!3ac3+^| z2b(4M)ZKv4AJ&Hj`VIK3gKZk=EB-^bIQ(Wct{(WE`Ui*KT#f4@m4V++32h+JOAa7+;0VlN^^u3aa?XhrT*oHN(GaP`{an9C_~Zs+flYjm*g^n z_H9aUF}RMj{~Qp_VIiSeuhWX2=ytP22~U_J)=(4h#?1Z_bT5B6Gdccdmo^YtT+3T0 zglbwCI3eN;3cQZnT>&Fr>c(_ayPFnPPm7LdT`x1NvmQxLi#c{>PTvl9DKX{e?y?f2 zS;eM)A<->%|ou)yW3`PH%$nq7$Fg45#~i`eZXV+O3QB?|v- z74+&)EIcjL{tp^1y=uNnfmWK@8}EB1iT#5L^Q>nZ%vc zFKlJ72?HgSlH>>#B4H%8Df@`CaXH@qwa5MJwl5j?C;ych_lNBA>x_F1o$6)WH_!U= zagR8nVua6flqT_XoV(PxpXV+sMJk%ZX|_nO(`>OTp*acJff!h?$Z{wn4Y$w*`tVoP3k{MNF|9vt?})hG=el2&0&2K*G@~x;^^KDoWC)T zPO6@ixC#hBV^A(uXYKN&2FOm1jYpQ*_>-)~@VVz^x&bf|k77hTdOgYYTAD!AE)Dzk zNhCGdinTcxGnFUN_uGbc8PkOm>1#IxP$6ljugQ{rxP!#iF%G;?eVn@tdyA&Vrlf-c zj#oQePG!V%GbARTSHB_ef>8T~OptE9JJOn<+2VR97QU^ux2_$zFg?*L>`K8qhg~*R zRx*N}dUo!_9-aF`05`95TOEq3dwU*c-}%Lbhzp2tFO@0Ix)K%?b1YNJ;zuGv-N?%2NSp{`u<1Vb%rvzDgH@h zh?kHWh^Zxr%s>6_ZrH0-7Q`SArp)Xlitcwjtq%lSu6FqdL0c&j zzt*<*SvRGuG_a21d6{zy3m}I9m2eP~WFIws{E}AQ_aBl@k4Xm4hraU3@4RHvH{#Er)&kq3|xursy#vS~MIVPYzo67p?k)O(q&} zH#FdG_&q#aE(RUEj^i0kvNL%SZH>SWAqY?Gx5^ffBlI;y1rU;vb+%vcm;egC2|8H+ znVxU`GtC5iyK+vzM&o@oZfQ$f2Lw5+elS|)MuIFhfC{_=17>RyYXzcSiR$(64y?Xa zRbo_0FM1{ZKUJ1~!wszI_m|%vjH#R16S$2^i`|wSYbsY>e;r%O@9%(K`+KrW*2R;aa(Ixuia)B+hpVRp|qdN>)mMMR7R#dZM<<^Z?v)3 z|E6hUAG@*z;sAFkN$4PVc|3{O)WUAxDeL7s(|Y~Rw=>@v7JLUkv~yE2H2eaq{RfO#~GWFwq@Oo)R4OPrbxx+ zT$k0VQ2UV@3r<<$gfF)6FNBlGWd-xt2Z>%@q~YGfa&Yk%;=!|C;dujl-BA0ld4y%6lWhAK+BiuHQyvO=Xx3ADuxvA4t5tZdFo*T( zwVKq!YZYBrfMaT%JWO2jKiBxADCIu{ndmwQVB9)$T&>e-MqKNW99QcqGmfi=Qk*)F zvbLlya^9;WSxE#uYQVX)Pq;IG((t{GgIB7zB#DhwuZkVzbrjjXoOp6)?UCor(usO2 zIOm8H$&^oEF9gmgp66r#DopvdxpOHt8}gN1R6Mq$%ph^%Y&0I0oMmIV*MsJ$wYAl` zU7FHvm$r*x$LzG|v58u~Wh?>4_lFh7F6c)7C(!=x)9l)5y-l-s|CXL+DZ8?1w%J`C zn(Rc{ceKJ{#C~NaTBv>P7tSc2!}1UB<$L{m{ob9K@7)u8Z&gh=%kZNz2Y($7_^@=o zubyi!{^k`Qkid3t9lEq<-?uocuUuH=7dRK=-dEzixDy~%7uzvj?|Uuw`m zVX+i_A}X%@lH{#VO*_yTUJ))?e=Ld7ff`)BOX}9J#*5`acS_xgst_&wJl)Y&&Wg`= zR6^}unQjLDs!;nF*pC1CT`W1ZTm_Ai^%M-%J4|EZ@iNJlGD%mFiF-do^t$Fu14{=e zz98MeQsoO2k7fq7Ev!V$(J}QM3&WCx5Lk-4=2daYStGA%_NLQ2@x|t!rhcZL6fY@_ zH0XTJbz%7pPQB^EBMSTjj@6#5ZGP=P9AhqalEV@7si!9(PyY640rBownzP%By+j`w z4y573?b(xKp=8e30`dHp{d;8m!>qrm*h3^%J&Mm+rY@*&@uF@?z|`(0sCoqgx)ByK0|>uZkAvm zuqm=_ilabe2uFdQ=(@(zpJ~vBzFV2vUFZAtu~7>KtS4P4a15g40r3kh!ZTpqj9c)>9z*y$D|*xr z=XE&u2yXIF`wHB<{tTWb7jfm`EV2cakMya11wUFd|G1 zRKAh6m5@OycC?qcG3<4WLhB|ew11R+myo;;6f8>C``@4>^=xLS8AMBLfq<|{i7mh^ z`4W|`>#Jw+{+h+tLSH$Palg<_%|x%TNFR0Ohec=J9v zytyXe&E!iVWnr2Pk3GoPaM!u8;h&c|HoWLw$A)VhQT)~bJ4PuAkj=vdO3bt;;;f*& z#g$!2nV5Euv)Hvzx?yLuLbJz0G)eZTbh(WJ&l2|F^1bEpcR4W3zVf1WcH=4a1``w0 z)>#sot-N9uC;C~&1`a`w{ejj{MQ8*DZbSuv*y!JRQK8ugj$(qDxl{I~`8?!=Vh(lu zFtb-EG>VlA?ZEGofyH(km9T)@MtgxfCjj?0&CnW-Ab?;`>N&-P2p>&o0z@2^13L86 zXRH=UK~3(_x*Y%9GMV@n-h-pd>W9dlV|Tt%d;=pmC3U& zy2}G|t>%(68`bOa`c$b4@N zM%9mmbXp_5W4%5}mt~y)R8UTr(pDQ!%7&);O~cfNt=IhCd5b0JMFcWC^{Z-qt; zRP{DiS}g@JijuEz^_`A^SE@PD!lbwC&7w%*Gtugu=H!iXr0`(k8>b!}jqgb3&k&zo za~~YX46d&?qXM$liE5a1wRl;cP?wehkO{ShJwlPh!DU_rr)hTHSY+8=qar{1d%vadOEl(MfS_ZY&~DlKF-h$2n`t$HN!vwH`5N+z@TCoDxsF zdHUd=9aAiiaxf`=vv--dT0!?z)1h4&dmKSK7}&nkF}#YH5g7g(N*H|~!Bw2|f?C1X zQds}Gns1LL?zB~s%~RK%oLolJhCWxj?K6@?<+k>g@3C-t@z;XP5%F zHD1E?&)w5I^(u{D#W>i&k!3di4E6%opLg*CY6Q!@LVS{+`}>LyA%mZ4%%At89VeDs zf3RSXV@CZU6!K&LwQ7C)3q{jv$dJNF)^o%EXx+0gB+U}JHE(62Xly?aqM*$2{^R4} z%^iX9{y}b}Bg|YO9-rft&g1{3a5rLnEFO|mpg6;-mi=Mch1}3Q749EwM1J4j4?BP? zz~2U#qNilu)FdMfL=#J5BR7G7VkyM6S4@p!)ST6tN&1V)Zj!>u(>o3X1ok}}OF}{N zT5AiZG6zgHAS%s};=v*~lnxVt;0h8(09j)ogTXP1#`QR#x=j72{*a#f&)bzT+u-sb zG27dy=M0+@r7TYbD4!~KRzNK{;y#Y4ub-4@I($X_*3PV7XTI>e>=*8Eml%Qi-RUlm zPs%_gDXO=gvCQ<=v&r_w-g|ao=DU|AyH$|m)GT*&aq+ELx?rJ{xB!d976Vy~;+e>zZa(tFehlGIM$Tl+<YBw){&JY>YB0UoX_uJxg$~kW)^k&>~Yu-c@ zsG|+-1JmEuZzt`RdsTh*E^^m`64o^f_}yIVxqjzZ*`p>d1z1=>v9Pc-_+87d|27*+ z((iZ^CMs#M#Hv#Mi8B`HQ*>gh?s?Y9ul|s}^eBspzD>Sn9AmcZX!T^hsJ1>@u`$&C zQ`PHfj-0);cCkQ2L!-8i8v2ejrTSD^Iv<2BVD+p3U4GMWa!R$WVBuX^Sy#O&Rtx*j zEP>znn_B`~tuZ6Z>X9y_)Xe8T_ON&vD;vfM0Xhai=o+azB*`~Pl5fy_ZltQ5giXl1 z?G}s4(J`?zHAYK$qJ?n{zme*tM#e_aYVG)Gqaqb+w4gS~P?9>+J%+rm`W;+Pbf5aZ zmRdues`>jiph#;jWPzmi;he$@kVt%~U$0e${g@5R6d`mz(8PBeoD^F4GmY5eB4Qc+ z65pxO0L`0GNrrGix7`5VOeSVBmT#n4khei%M+F<)9$<4-o`i#6JS$Rp?1di0a8sT@RGlRdwD;k3u+1V?_ z#nKKC_%F;={JiBt$6T3#bFDg${6W#f0v-VD)Z3CRHn` zVa9K?$Sc-TBaySn%Ot`gPi`d^`5w8I-uHjCw^n)999H-$t?(>MvShdwzAwNO9#U!T z4z)MHEux9Rk&YW1g6aR3zfbUNq&*|m--u$u$^$Kl@h0GGRvphG9g8(9GO-h{{nfFJ zn|UTIBo@x+u~Prvf+=Nn?Ut z8EIVXF2k#8Dp`C@hS8R5u^vXiMt(ftMIQ}DALWwb>ow+0qLE7`IvU9p+PZCG44bha zUuYYsGTL4)*qTmQ8;Pf7%$ev*ZWg78ZkS=xs{H#YNzUfVs%T8_z0ENlQB$b>Q0cmJ zRB0csB1;0><_vj{z*8BBkO2_*Rjyk)?fI}EAy+*JJMR4M2upF);zm&iXTU-ohgd@O zqcYzg%=e8plTbUV)#^a8yre`Vqd5c3z}j6pE(Xp{=H#4mhKKCMNVYW`l7`XLdT z42{a(h$oscP^OKF$3wFg(_^xVc^noycrUvPj$P z+ik8xOwZ@XZQ-FbaKRn(^^uLA2q3h zKAPt2p8tK7sadM8S=;DD>b>HQwPRota?EnKeU3!wZGN9$iuv|pdJd-7muXlB?&&5H zW1!iju8R3aJMIgTM`h*71!@j|2z?9nD+VoJu`@}8X0On&wV{(aj=kNVey1oVns9z8 zQkAl|M&Y1st7^OsXH)kF2+If%0&W=vKS3Rkq*_sAT(`u1De&isgrJ_gke@V_-F6*W zU&^s#Nu2Xi-^)rDoR1VIb*~Z9nI*aid+{^zT(08RB*L_t(0yOlIz?e@_eW+va5~LF zWU&oJ#^l#{6=a}(pXpi`-=%PwzI-)Wy)_y-bE{k*$f`!6Y{1?XoH)dIQAE3sKc@%9 z5>pd9hN^|l-*Bhhrw+(=fcC@i%wNGe%@9yNQXcwY?rYky$(7_wlDk7*^Ju;b-%jN1D`?f5LhYvs8hbD*K4HsVQRrqZLEf?yyV92v z_465We&3Oyhi=?i8(Q4uzg6tAf0g6Vf^{gJACyWs z5hDkF5g`qjLU$C-_!W0MnJSVR+B!M@DOIQbn42|Ss53u0`>;Qqu=UXFRtRI{+#4P2 zkp??f1C+u{;Sg6iIIr+PSGZrYhWGW+6p55p?n?FJ|E_r!7In0d+}mD7iu_FuHFwfx z>%^=5l>>7#p`f#0Q9nSJjs#2FJI@F$zTw-2{)5z-y|lT;Zu|IucDJY4ZD0S_?)F4L z_qpL@p~4;%`O^g)jG*>B6e--Cx}N_Of|Z)$F8ZV{a~FM64ep{SclbwYI5WsP!H~7T zkkvedwx8x7=DvHBKw80Gu3(=`!Oq>R-F>mgNibz9eF7FVs~RO(w(aOXp?h3oI_3j#XDMM#)Iate7kEO4uEW7fh_dLuAKEt{<5Ru$1ds`Bj zWpABbc3<{D1blwJn(bD;f1IbDi-{MNQJS;vVMbzq;$?b#Vs?-E#VW`#BL!>TfwO`& z4*^tS=6D35-6%`1Dq8z?`zdCmzN|WiX;y;3IwlIL*b(h3xkEIB(%%aW-F8+Fw2FpU zFx^=Z-S+$@NrwN`ghK+0Tt=LXVeHMa#ne$5q8WR6Kr{;5`j$UrCaT(T0exjxD@_DR z17Tqi{eU3m%mT)Gi1g#|?pzxKIwUhnz8nnhmvwShp;Q6{&`RWyXvIftY%B5>rPX0% zy?<-dQ^nKM21-CH_s@eOQl}E$iJ#~#99S=6k&7LVZFDN+`AN6=4q^JmKj({C|CRJ; z4Lj#%5GQaH6#s}sTey_M9vU(6q)y22tBCA5s?C~(AmPpjY+EHm9|!vVC)D;XuX-J6 zub#8OAWfHcdWqu@StPMxLDt!R$4I1DLv<|OEVYl)ivQtRa{+D-o!5&bm5Z2N`ZBHE-aM< zurBQe>qq&pR1sLM{2Hve6~OxBzd7wvNdW7hd|0jdu;!~Gur~5*u+A6?tiR;KQb_>o z88SfR^l?Exta?=h);xX&R}fn(|;ZsG|DFufaOC z0a$;}g{6`J)=T6Y&FN!Fejn>q5m>GKx^_(h)+M>H>M03eCGug_CySC+wy-I=>9h29uG}8gL%BH0z^Zbv8dOp3;@8?W^9^8KnhQ%M0jyhkg*9)ugEdbTfwhregSF?Iz&a=w zmP!IxBY*|g7x1zTAt#LG;47?(z^dWbV1?fW)-#{y;7cU|tZjQ4tgW@Z!m3e4V9n!K zu=1$sd_OaS{{Tvsn$nnR-OV_AxJea-DSoX*b3Ud;r{=auB|(cO^$III&S7f4DhgBl z8m!J8!20O3oZhJ#03^>toYo2Wx>U z(yoHyi+W<}@%J;B()p-8F}1b7!_-<;6qHnU#^{7C;{hjb%|NLI3KTHExYrp|ql!Rj z2U9xRmZp93*WrRs9F#D>X($*yTw9)CgJ%Hc!8|DGv7diP&?8l( zEnE3bLxF)gC<}IFpj_Q6l&yya6!c#QWj?<)QUxW9)Q(SbMqMRAi;nCSR>3uHq{6C5 zi<or9E=bQFv43^5m=Sw4wiU8h9=+rA~S;bQ%H-}9@Q&NZdFA=*`B2Xxt0~>#8<=Zj*jN3BCwY7YglhvQF6iZtWG}9OI%x$JVqS*uvSK+U}5R> ziC=nNMipT&oZS0=7 z2h006jx|69tB01&A^PsKQ)d^@fBvTP>!zKKz43O^DCZMBb5+?qNfi{8oeW-o1- zU{<81G%4jJ2$1_QcAl3wCrp%PUB#A2X!JTIlqq392j-H`{U@P6EU~L2GvzCtG2?MA z1a?$t?0-kbJ5ztlLU;Q3N`}IBfSdo~&D^1uMA7M6dCLYP)P56}I9|d^BwMjE8XD~r zI4c!i78-01@B8PtuazYBExPkh!F^Vtew*BvSQ3#VrR0QUfc zt5{*p*PN(|>>Q9=U%^cpjxbg}C0J4}rPwKIklzA4rfYrb&V?Ff8#Fb9p@oXy*K{kd zi*M~(E7VxC=cYO!k1EJRBvBkYTzjEQ6%I8`VF?U@dmF-t@VT|AKX`4|lLNF-j&ACG z7#o}Jj(x>Hk)0wsw@Y+VZ1WL1-K-EfH|y18S#lq}k+xdX>(%t*X?pT5A?YxzJ zGv$!9?r9lw<$eD)o{KU|DDT-izw2x-xzh}6gi@u4RwhOJvbx81>#nnF?6b{BXWEVD z|4=v%kurOGv|0qACN26gc_CpXUH-glh1Y;o`l{jS5j>g*#AKXr&dZ7CZu?+7`3&*$ zhT6{u0~Xc2(>ZdD0WUn~s!1(PlP)3nQx408u}Krd$6S95(IO+uhG;&8QCVdFJsB+G zf)h8ZvZepeY8rgH%A=g7DIL=CD)D1B!irfsrfL%!U*+N_pJtbrUV;bv2X4`##)iOE zMT3n@ip@c2!=`h%-e+H}vnNZ+;H4ZxzB#b}`dwAv!x;y5vHwezrR#f8Rh63~bwBFq zz^R*ALZt$uhTq{80}Mf|qgLynbO z*3}P!UkF<(h=fM19@}wZ6>AE6D^BqqcJ;gZ5~TQ1w6HT8I^!cbZrM(^L!`Luy?*}1 z*U`8527*^peKB%JD9bi#1PKX-m+*hla6Fze_rnU__Trtn>>qn-h{P==9_=5)Kl0Bl z4a*YlRj*XqYc7b6WB=P_!q_OUEdEZfwtu5go_A0^Q^O#M|IO4F8?Leyeib}=1ogs|2#6D5Cax;3T|#NA=&dyMO}@`U1QBhdqqO|pXd=w3 z%?G5;N&7SL573^C?m_G{%Py=_H!I#CK<9a_w1Xm$S2@hYZ+PF9+WR6inRzUFf8j!3 zW2xQ7fvc%sh>Y=fuZ)p{aTE*o8dq`tWb(bTdnFRri4aQ~dCUKFnuu+AB+)EM`%lyLxG4xQU&DHJxqgx==wlm8M@p3~!b(2LwICR%% z*0CJv6?(|>OQZsXQFAPK)g*|$+1me^7bl4jF&a#6FL70vT?UZ~a$vSNyTQ8Xenx_R{N)PQD-jLBmVCHyk-=&OfQ3xzpaNnu%+P3%{{kVEQ{SS5PV5 z#C6Xu5kZGr@FA|UGx-p@hmzj6ttifr#)Zp=E=?iV`>A)8c!AwWOJU3_ z>p~+xNIj1Y(8JMpdD+mJfXb=`G}a5e-F>>^19&T70iuciE)tK~c2;@^Lb&b47J<@3?%51TjgwzP|4JuGMd;pi^N?|Y5u zD4M8l(2BbFbg(#5BgAGxa} zfAbGGk}y800BlTi*jT}BG5<=E;!RO_UmZ|kscLcjaXV))^!I0@)gMot#-7*jAxeV7 zH(*)QtG#V(P*~?J`>-D)SLpbeZAE#*Kj*3pNia4m38mXvIOA!S~+1@~gl1ZtO6`>44r^ zARePv;m3Wbp}5<^vg9AcU-{?ZKFK0i{LtbVqVc5>f=Wnk7XR1;{DEbQ6{--4FZ0db zN?xrtGrZ->zcWA3_Od8uulhPAnS9C!2q96K;1jo(DPfS}lEy#mT(%7Si?Y@19!FPl zWN-qP(q!+qv6?8u3+US=KGcT&NRR$tkJ6=2u}NK}aVteBlnQ#c-R$z0J`bzngJ?ZO zYHF^bKOo-hsfIu;1+VQSlyH@1ZwWjr8?IU|J+cH|IsI5?)Z=BglFCF_#X2whL22wH zi&;IwjCsduJ)GHyuKr7L6olqde~NBzG6tiVeTf8r-zZ*cU&9n)W(UVk+Z}S^uvvmr z%VjZfoq!8(w&+tdQJEk-|ME6M@MyFN{V0VfmQsm6yYb(wOpw)($%1{0C>*gD&v z&Z@E2e$HnLUeiRoBFUJ;8$X@Q90-6`kSh0s|4zh-@f$*BJIU$ef#F;sud*Q~FQ z3)Mg9Yt~n&jq0bif4%-HoJRE@`I_|=GNby5{Q7zH(TFnxrklU{udTBoGTTqr=s~eWM0MvaUmwPOJGv0!ElWVc3|3$@yKK8$Vt|JKX;8^ z8ETVV&+!g6khPBntUu;bljxIjHOSZpEg~$525T(OQU?-{cu5VU3&$OJlw&7IFmj*3 zah1!UYM%oXa-4U*MMw{^O#sbV#)+y|`)lNhBWR7UVbn9PlEmJBau}69T_d?yuhs*% z^BV!&*u_&WofK1IZ+8TQC%9My*`k)aH~fv`8Qg?|_tGJ~d8fnw;Z!}&3F-Z*3WB=g zUo~zU%joY*aARwyLx^o-`4(jo>W2ML(~L0P6^%I@N+G>%%VEL1^qr2PE9o8?RxAYw z);RU6G*bORY_QDFRoNAN@;npdH~Gz%h`p~s{#cD1`EIkHA}p4w0tgOm7oG`Xk8Xff zVlp@~n&As9kj_LNiLW=4eU-o88+{8>N7_!74~WOK#evtYT4j`xtE&CJ|K>J2-?jqq z8e+a-ftF?2)|tPDMP`k7bvl05)z&g?L7_Z8;GAGvhLc(D`Y=~!`BMI)P%h1v3)G4% zzcv%mXl#r93Cj!%jVNf9t4CMb(&&0u-9pR`i4-1KL&SB*Ox;h8j-GaAuo8j(4g8zYJ7qyqka10ltI+2uZJEfV*+ zOO>k4o^;$~AF$kK72}vOiD^~Hi!6fM(t_I$YA;HjMqpA;{B@o!(s>)pVeGbOf?>HH z!Wx00Z*^>=|0)ktFK6O=bNB`FnoU=v3e5+4JWisLEzw4sr2Nqg{%dj{e6D0T;wGJ8 zU;%IHPZoMi&i~{aHU9MaNWbX5;^(IbE zgNx6P90WdZ4@`eszv+wu>jgc?C?IIcD4<>RO)96I`b}>Mznklz*DboF*K>m3+xYc= zru+}VJ3&T)1(cVnn;q?CYq(Y?7V4L3OZn9wo6Gbli;BLDG*<$zfAyw)3jFh*Lw3UM z!<;XPfm9gtD*xR+QtDTv_FjDJ&n_rfRL1)fNl*LlzQD0;bbY-9%v^_Sz2_gJVrFfl zfI!kC%Nlq=@<1b_Lw*OoFJBjDF1bE=33B347;OD7o>miV_#bbX5&r_yUbvvPMx3L0 zMC!X9?jq}!$y^m-x7WWoQze`_A=vA0?`yCB#2gUTE5FY=nU_Md-z88XViG5M;)mQs z6A0m5%?+4;muR~BK64OFk}%I!g4p%8Ri#coJeOp_ zKb$G7Wh1N{d`R%cAWWX!PTGh+8`nC>zt3Eu98DUUc2y*fh2l~79E`1@9t+igL$y%3 z3=_h;iUmgCWU@XZb%7!g45~E_*cZ+= z;l(kseW+u^w)orFMy1~^V;Mz(^7mCqBG?XLV(jyJMu{59DqI);4B2)ug>vv(UX~1f z%DVEN|CY@&auuGBtn9DQ5v1|uX}mh>xrizv(f`NXn}A1Io&EobY(dc{C~8#H(V_-L z4Hh*iE)&_Fkp$!G0@f{BMYJwaXE62^h@Au-r_<8bwzjn`F7I1xZA)9V7BwWY1owSk zK&|+UBa2G~QOxi2z0Wg~NdVjauiyWF{kbkO&vTx$pZnbVxz7nWq{fnSDiOQZQGM_; z%e*Y;{+i>jlKr%VMqj_sr(>g6L`%KzUP^KZMZ_NiaEKSUxJ4E0h91Kt)2{Y`>Tk*@ zYk4qbFUWZ6oT^yrayT?&W{7Wex}tyrEwgc z^&%VcN?^(wf*(cb8MvZB+7zaBWiXG{^m_{#HUCBn>t&_N&sg>@(0nX&4SdC%suGR_ z3hTRm%^(8t1<3xGRYX$|(rz6Q=rfma$OACAO0{PaWoqH{ebx4WYX;(%lAZ>$Aj__9 zk9X^37s#KcqJj}yK_?EE2e%$em8RY{5MSzFzpR3%#SQ!ko;pjr8uPEtkOsFcmlPQ8 zH(H1Ua~|A|_QI`}N>)*(kU^nngTp41f&Lw}ovzw|@1wYOhr46a@igIePVPhS#o3I+ zu5oI$Tgn)Eg~H1*^9w1cjXht#0%!5R@&~X4wsJGno<;}n=@5V=1MSV){VEK@nyLsH z*2|i%xC#Tg7*-fzr!LS?RLHTz`5SjH)#hm((ZUD)W6RyBUv1b`S`YXYCB7Oz z7lGJ;)zr%bX4rsf<|VVpiL>uoW_%Ld%>o0#TOD&?m1jhzZNCn+aZaF7E@uOdrYUb2 zOUXS?@RdG8>2$tHzhR^sqsA6P;jtK948Mw#(U7KIEll7zu5EH=ti{XJ7(BXaSP70> z(xR|5MKX#8W?>9p5($-LGd zDI4XdsZ0kixv%wbywVr1u<4WCGxcd*%_gtSf+f_vlGrCU_VV%st2`3~@}QNKuIZ*n zv|jPcb@QNnPfQS1YpE6C5+#18O6hv;uC3KSMDs}fToXULoI9xV6@6ko?Nw1{zM>BE z0FXV>;#H>efvHz>NS*kEnueRKc$9v0*0~6l@dIsWIc8)BA^~t}GF{8(hwBEv?{~f* ziGR&~-p~5V(Bmg+qAKfBBc9G3FB?o{Zr{SU!|a=%8uN6x8s#UZ$86Fws^AVlYJH*~ zr!r6M>c5GOFy*j3Ah;sgVL_s3uxz$U`Wwf85W z|4K*fGojunSG8n9Kj?m=w4_$ZcwO*3-gA;bp?P4)>}P1b@WuHM1*wY&yci9k2cCgW;(@%~`o7R^op-3X9o0Xr2cfs(UG<3I zXUkGcW%S6FG+^~fKTGLoznC;rH=XTb(b`&Wo zq&is*{2h@9US>WRx^Z^_`x0RwhNjM3OL{5ndNz~Et3C6J$cmaCON4gh%rb}2o_aYII z1|A$AneQ9u(M10dxjnSr+CUrr30sY`hwW~on%dp%)?J()-|(QbBr|Zc*4dS2_B%qJ;P!^MJ32E>>al)IQEyC6`#vfJi8PP1Qa63A?VE zcCK(X@7%#XKp~pAU>p^7jjOb7vHfr19j6tE4#(#Gqwc{%Z9+Z1F_Na9ie=_h1;6I- zVSV}{t!?~XQI@@tYV~^>Rpjm{5Q`;+{aFNmE}S=tlf_lE9PEtZLZ-sZjEGQXnin=! z493YiCe4T(d)^O3q{Zd2alZytU5H%pTKwwJ4adwKn}Q>m8|Q}O*Mo5A;HU9}VUerQ z*Q(32Z4f3BUc#jynuXg>(5N>Azu>p1)%Svw5>l_btyS!-k@qEPg@&?pCxHc4#3wrx zb0t^+yT9CY%!>jPGg>I-?xltW_BOYoyv5(^+mQFas)KDr|dTT^7Q>vO*fxTwfw zD1MIi5UvGv>6sCXj$Uh}D4AFhIYzPxPvZYM;J(LWBVSi2DCbe;XfRYRmOh?4sDr_D z5uaLU=q%_~N(4Ha)tt)#$ZNgV$hn+=z^Q4xYvocnUo9DKz0%>F8l3~5!5bY}hf&CO{NC=HMM2`jIXb-mlMll#~ zsQt3P&m@hK*g%er9yM}!)2kcmcgr^+}D7w571k)Pzf zjXb;iwK`bwuniUWC#W1=V_S8;`k5L+zyUhTbC=|sjEFORmlaZrPVhg46r7xV0(!hFXKgKhcI1`W_WK2o!vepq6>pqdIT=n%wg&b(pZc z-kY#CSA^e+_Osp0(p~UBdQt5_q#xq9CAVwnZvcHhHSgQRrcEu?=tMo?8@`Hq#yf3J zJMv5TKuA4ny(w$(ms+4Y&GG2&`mq;P#HR}hHFatJa4y2jFTE3Rni!fpu3jqYhCUNNH|A#+OC7>o3 zz`j)ZXasWk?WDh*C(4pCBJmxmKcvhrtWMC2z;z z&LBMK+~)}j9phe++td6B@|12hK00+Z?|W^3Bu`z=pxLsofZ{SA)IU zHAV4eMQ}8NJjbdmCdiK87C8>RV&`OSCw6k zkmtID**(T45;SP^v)S`uh8#iZtkbM5%^y_COaom?*PuCoBbxz+7HX7a}VM z$)?d69OJe9m@oCI%{Z^TL9&somyn$WAE_>4jv&&%^ta6rYx=3HLt|YN9m63WT39ER znOP3p?rr>mEj~f^`@f{CYEqlz`@`U_f&gF&Wc((P_=8_HiDamt?PJRgE4w7O(>x%q z@cvh+a8T2wc8aCOyyPcqO5zJ+sUh9D-_c+09Iv7)BK4q!-rZ^=5>7X$JC>PP<`xPBiujb00wjT3&qnGKgc+S{v$MvTp5=;-2micg6tP(OS}Tn zW??3>Lj6b7r=|;M;81Teq-3*){lOpEP=O_X!>76a4Di$X)QFc@rpc)x>tHG>O8-K% zu2t;nVqfRr6qJL-^clSxJMU2A&2dX(I?^~(1q`y9PmE# zlbtw-d{%MwK0vXYa6yVt3S&EBMjC&1ZnFf3aU-UcI68CI* zY3k$TJAB?WA?%%$Rk&a&hb^e)-h-&VbR+ z+Ww&YZtK1BA-mDiuIp)jSLX0xDAsd{f7I1cFcTX%{Phf zQmoxc$%tZX&*y>b!Y`{&kE}!grB{*a3-1%RCSMlmKT>Z^Am&czgfGq4>wfZ}zL(~- z#j-0xY~DP8dQ*w04(;MK7au!VJ)XF3axPVvy}4P`^*UTrC3gYbWsm2oIxcR;Tfnw) z-o*)ZAQ}u1e{+8+WF^&utD~}&R#DLaVlQelC%bSD{CuF-wwAHg-bAph>_-vv`>YERtEbFR|e^wNZDR? zjcBmF($qtjpZ+?JxrfKVzr(dOaWYHnb~*N-KPruS?u+8PXWsv0C|8Y*kn_=xxKn_s z4}%vlVdO4`z?ygB`@swMJ3=27oK)IWiqLC|86?V^f>|h31|VT`ayukgfLNe!bWHb2 zj4bLHuY2mXFEB09;y%rY6oJS3%|dOsEKD!JAl-Ka@J#f{Lh@ zO2ETLj0AU2?bZw9>Q%|he1uDj^xW86@I$UMp z>5IdGqW?`UW17gM<08iOnx|5F7D&tPR$m`Wc9&nZkJdf{`e4j|FDcr-44CaJjm6i< zSeo#>`*y%Paksp`t=Woj*4z|q2h(K0-gimY2_7o6tdU?xn;w8idJ%u@)sgrsu)IA2C4Hq8?eQy|_pz;VDUUuP0_*alA4lH5p<#~o+ zax;oRDfPb1f3{JMiJC|i@#PyG$)3t2^`So^XEkqltuhI7Mw>n=VO@N6@aNI!XrTLf zm@X9#)^3+3euV*yJCJO)V64stL{4O_2>KnTaX4sWM|o}I=ucLEFzo&M{r&g|v&}wi zq9&Ht7OOkBR3odw-?NbXbs2Z}f)Ri(gEPLap5~9auMHl-ZYH0M7S*FgSFO#w z$hOs@-#oyYh7I$2bES1UzS+}5kf5zAb@iaR>I)-nw~mE+u;T(@*7<%w1SQQem? z=PTpfCtAgvuTqdzgLg@B8jWeVaK|951hCc&FS3^bbnuY&Z=ORuUe}OT5?>S>{9&p& zbJmDR``2zO7~t{W9Y}tvXp(uLS*YzXQbYq9LSMP@F32*CHBbTZ31twBIuK928hkKN z3pk!+x;4X1E=tk-T{%+a-?f{vDCBP*>COm#qO_h81<$wo!yVFP59`SIap7xuFn+AS z=hkp7LJQxzKe9mddG|0Is2WD{eLNtu`XiF99mK%R+6aF3CO-8< z?ps7U)x82MG55h?CC<(;wX4{hte9Vizj>Jga5G#%1=1K|+!U0+c=rL1y(f@HXk?V- zHZRORGU3YL=iCw~?11kGUWQW5`%IH;@js|i&oCKEOTV20>#5e?WC8;vx_u$ zO=xrOd`G8E+P(jRYcD_VvWveJaSYD=JY9TwQ^L+*AE2>S>_{s>$DxuHs!SZ#AWt>V zB5f000{s?w?2NIyev~aIH43eQJD8y;IG#$P%n0DLZ<{9$$Q4S_&IP&{D zdwtN^E5R5G=!-MJ&a*G_2LjxnlbgUHUpy#hX*LhaT(1&PkeezhhLq?OVd#{hHiGZ;D=o?G+&k@m2V*3sRbNe6 z^$rBn)fzXoqM;bnElrkIsOMeHIP1dmN3-9qUn&UiVNsV@o#9#ISDX(;8p&JQb*Y;G z{$T8F3S__vyE#~mdKKBh0*_EPk!?2w&8l0UgSE%-g!|*H+>bT3(!{A!MMZ_Ez%!@v zWITRwUv*eQyCfx40Eqorh1nor+Ylc-^;?F`mqCZnC+0M&Ih8ko)6oR`ej}_VNVtZ* z)(S9!irgF)ef(f(Yd;d*_Me7UxR^i|*&7>re4BlpUs_39?y_m-)=!^Q?xMB!4JBLi zp_lw0Wd#G3aW)iYr@yF!UDn4Dv$5Z>`K(XtBogM+`kKx0BmC6x5utqUCgijlNniM* zF&FvsU-dQXbp8vDQX+N!aFs4AFxejlXkD;oq@;a5hd#o7sk97v;P6 z@;=ht;N8wlvmXo(Qi}%=+%&7fB6-Hg@TcHZWYkfkKCpE^NI2=8Sa)ahA5KXuu9ziYxqDk)h$fxf~oB5RlWHP0m8;RP~{5^ZC@ zs~UM}fS=4v=zy9nq|E)UOb4(#VHIgllcxPaJ*yaVpL#PBBIIH3O{j2rBDA%p1tj@J z;&;@Irt9)D^Lm#;rSl&IDEPw9oI=mxE~%dWukOb|{N%f9rysz|ETMKRQ+$Dfd={?b^VX3|Gn$Y zG(^Zk_oJ@+QFT9{`<-7TeqW^9IV+X{(vw}~xo>#;j;BMZlh^xcR2W13^wf>K@qZ3I zp5%Hwh*~-$erBqA4Q)UN`BHpWKNX|U)b)PNrbIg=!W&we>nJEbY7R2RhmOXBM`@$KipJT(VQ`P;WdanunStp3xF)0Y3NAZR`}`fdQ#$@lp2WBmod^XU zR!T~mKtAzWzY=OqE~^qP<^*YCRqlWu*bn{bC4KB_^{xvpBYzM6SesZSieMCCK+t&r z9TfejOYP^U&Jc2#qXE>FuJTj0n)zaDkc*#DsYyR9FD&)8S6u%=HPcszurOcaL@+hd znfjc|xsn?PUUR-(Kx)Q_hVBu|I&c)JLsKQmRDxWiFnXEsG?@!{Bb|kmielqO&}-0F zqk0Ql0r!r^;G|O1Pwd3wQ9Ne%q;bs_VS;$-A!^xdm7BXi|72*1ci+?Gkd>?ZyFN^m#xj5jJTAxbV2Wa|80KeTHA`5p=S&#rKgC8rc zrv!~Swaa7z>k0@Podj@vOAP#>9d+pbGB2MV!F8 z;MiMOEWVcr@|YJ`v%B4kvCP5d6yGyp1TMFgHj!iu^_#(B9(8*31Q9i4zxf(mvSXTn z&6o0_TAT`X;-D7lpXKmPcQ2%*Y)O!(uuCvO5+7AXUD^#HSczmPf*pg4;jDZ+r~GeS z*3X)}8pR!I!|kp*LFuKzoniW!q}wgy1$)>Ne$8X?UC4Fap(VjAviX_%($)^*;ULC; z_Ym?+8OjE-1wz6wcD)(~M20Ce>KX%|BV9>^A&ANU+?R2#nwdY*Az;IV6q25R?nICOg6XkIJD_RfJr6#THyT z-+OcE)@5U9fe@dK^3Z3h7`{|MYTWt``#Jcjbe^bRM0ibp&S|svZ4r$p2FWe~Lt@6F zOA?~wJI|U6*EH&s=%+xNpALC^d67UCU}N8^Pi+ity3@I=9C3tD^M>GHejOMv6|-&- zyqO!a$gRBtL2U#{KnM-vmsKkhduUp4n4W-&TgWRgU8rBQ9rnwZ8g#1T?}w^0eMH}X z-0E1};Tj)$a+T1(>`y@s^>XDG7IQkficwS`l>!@L$dA+_K4*uNLE-xO?N2=J{z0Zb z6xs5%qPr3OUb)}=p>n&U2{ouR;5u!rjoiYpZ;RT~%v0pm05z3H9_%GFnOs&0^{G#x zu^Q;o^Vp~#247n)i;AT=z1(U2`$+jBHBp8 zg=?C6-8%7paP=Kd8`Y?J46JA0GmM+pMy*nsW@UA7%^{jmhjL99br!oMt3O|{Plg%V z3(i~*#69HpNcZt_?mGlM3zYu7Q06tEe(zx?!Ard#&G#7Z)3v~t&RGFAFX58GN)np zhkA1_v$jD7?Ki9YJBQu>`zL+6zkq~7_c?{u&E-yB>)~7J`E2FfO3#sBz1DZE{$d1> zeTgLF|9T|#EpPzX`e`e9>xd5h0{koZ)j#xm`b3j<=?teHoI+B&Xxt|vQ^=)xEj8;u zPkGZv`|h@}-GXieKUwfaroe3P1#6X1RG>oz%uV{v;SSA&Sm!6_PqL4Z z|No`&T+NkK|7tvk_Z`nZ+Z@mHd-WR6vhX#;qWAGCT-SaO8wcoV48{m4Z_9uVcsywN9Isbp+*KbEN@GtrGLo5G1e*GsSnLZHg z8eyV;gI~Xp{F2`vBLBAd^`U!e3I8*Gz4=&{z-G-k;q`j6fW6A z-TZG%qF_Dn)YKHW$4Z2Y}4P{=+f|0-0TCNO!sE=K9^-=%G*TPSIy8T9eh-i}-B}El; zx-ytfR{CxpxY<{T##hj%(0`owR>lGSacJf`;$kORhDDH;65@!i46Bva?B3i1^SbhP z$_%<6oNWdTonD?4LFBHY2rDy*m6=q{dlW7QlkFrPr|Dp_-*rR2v!piizlo$4mEvE~ zd1d(nORL>wjreIRrp^uJx>$|Qht+T$#9@>hLZ@>M=$*vXh4IeZ9T7e=-RG-MqSy9A z3URQx8V@JTeRkyezkZxQ^4uTRl26IyGh#JgdaXYpZ$Vtk9zs<`@R9dFk)KM<>xjtd zu@bfenajBWwOhX%cf*MCV&1=HTsigGf~_Lm`7L{`S3uFZGgl!URsLm_!->Mm->>q^ zH8Sh_A!N;R?y0-bsUrVI!F$j}!z|mG+1Zrr>1?0#3fF%ie_P4J3p5)R8qDHcnOqdL zUS`fMFC3>3Tn9sbA@@12?RW6le(Kf{FO#i4a}5(&&xD>E#oZ}%ebOP&ReY7@+kEs; z$~}$yIp=LUSi8hN+1F`4@AXvl#cN%{2lIKGU9qM9z&r>)_Te00j0uv}_7mlLe&p#~WA;z3^@T-5LiF0(bfo{;Xr`Vi+UO7Qo zM?!#fHL2omEsl~exY#;?^@E#!EA@3~w9FgogW(*5jwPfLPs^&hRAY6xYFawhugbI$ zdIEi+&Tn|~1eOI6u7n5hr$+PIa4idJib(Wc^Xz8=RtCG8`EO;gdFP!AXPt>#4bP_y z6CC)n&E3(~H9CTG?Ea7MS0c+yl~)-aqhttG-pEiI14N?MIOSMFH-7cYSN}D`0wrHx z>;-*~W-7S)5;z}nbnx<5I`)X7Bs)8E0b4$!dZI$4o}jm?@Zsr}cS`Z!ynd-LL;=m5 zy`*JUGaKSnHOe%U^Gh4IIz3u?GW6mRuXVUKkF*Fpwx40DKGpq@c>Zh#Izn13GqaX3pf4E;QAeclnk281y@jMbgIFCcZ z3gxLnEt)#!&$N&z$S5U^Ej&ngbXNV;zr~gO3BDtV9F;^D=1l&{-*}|-dO-9_tGBlM zMb+7)u8Loq;ip&^s%_?E&?A28+w|5U52*%Ps6!h~bK<}h$h1V;AZ+$(2Sos&I%2T8 z@EJA=>KVZDX2*+b*UVEYz_xoHef7Yb>jzU{fJj$EdTtPEe8`RlQ+YDaUh7%9zo5p- z&X>1?3>;?4mRIqgcN64icV|sGeRR}a`J;RN7i^v1zy1S_QI{>SdIYh;5!d`+x1fP# za0;S<_nB$|)meRJ3X>oLcuus30J7hE2w!e+fzoN+fRWOW5W2{@d2&~DnStl*8GYzo z;=CSO7jd+XSnlawbna0{=W>r~wnxiln%|MSvo+mVUfXir2$8i3z_XsUqfY}{8?a@c zV+uHOV5l4QZZK*e8MaU)qT4)6aQJ3$#wP{*UHbn3Z@UEw?!ZgN;Z1RA%=pS+6&34u z#g03dJmkW4tiekzjczUY%ll;_Bw8n|)_~+J`-NoJ679kV zj!%z{r9;;R0#qCr14nk)Qf~-8cu$^}?qeRJ5XQlgR7`g>Xz%53QUTSVvjaP zD%oafK4xea_<61XQ!9bdpEHk6IKB8h6s=uHSf)&_P3!AwBl}dpRKrawXe}{}ZLwbr#7{OG%9zxU*4ynA$ z;JmqV(H1hQY=8517=YCz2BVdW5wbfk74>1wdN=@KbWwiN9SblmyOyL_(kU?=bS1_+ z6!ns%@zk;|GN_s6GNRy|@xCmN#v^W{qS{$qkMCC?Ez#?YS7he zHGjZ|2i}>-ho9WOEqvGv6rjr`TBe-Z zul@YY_lzcqp=cH&;n;3nYQ%_G@(XX~!7}ABU(JpmpZb#a1q`R39s9Ykg^;*x>Mp)*dMWxbyu8s0l&LkaPj3A32~NT zW|K?T?kw7BZ5!g{oF#5nJl@K>w1WW}`HfXbUx0p*C!e&m(%jOcx_C7hJ754McMi^Las-77F)p<8eXktKK!l?k`FZBKYD@!j8Cm#}z$d0LmF#EU@NV(+Vs0O3^50FqL7UQRu-)lY7a=jNE_^}#gf%D54 zjCe_YZ7i#36qunTc=$O|6bz9gWpCs8w%t#a!#Vt#>^HJUc48|yv}Kr#@iGDB>X_7Q zy9AR4xIsCkTMciqk;$?1ZIkq7ypJyW84z76}@L&>LE`q&(ichVr+pHJ+mDJvc ziBpSM!b@QQ9}5IYZVqA}X>cLhgHba%O$Orv7yLBWuk_KwwBG1QSQmO26tZ9wbNlv# z$=of5$!z(A=2GJA#^Zkaq4^BVt8}CHhPLTd?FnuBskVjuYzv_?8v}xx{+f-4B(l_{ z?59XmNhkpjD^&j>N3gpS`{xj}9_p~%tAp>oDS7R>;vDhnt<&0J7GGftdV8&- zZd+d}?^y`by5OVjm_}aUS|+F&bAJp^KiE7!Lx%CVUR}RbbhntnG|HmAqyfG9;g{Wi zKmShA6@e^CMpu@+D7r#iDrZ9M&7J9L4RL2Zv?aTOq@w)70EW{9soJ* z39W%Th?@yo8~oNb&{~z)*6?u5tuFjezS9S&)B9Pci;3Y**69bGS3MyRSE--9yRNyA z6zM*RGTv<2v(x$D=p)Xg&YPEg*;|J|f1Hgoe?QRinEtVL5&@u9s6~SX z>ON9Xne=Z9?EIU*JM8?k5V-lP7*>JSB^CkAiz#YmyGkh%&YOn1` zIk4+buR-4I)G>W#xQHf&X7A+2QQq7GLCN_ZwU1%l7ahs~g0-x--*;+?*E_yjL1SQC zkW=vWam={crn2u^Gk$5SU>SnHty8N0f#*nlN$L^=^ zaiwcE&fM3}+&ZF~tYNk{T{fj~*moux3OBhygwf=%!MKKP7aseZ26(C*rcPzYaBe#< zBRwhZPJYuNch@LxYoIrDyF3UXR`mv6>J`pab?iuOK!c7=&pPO^Z$O8B^=}L4xLyZ@ zKp5A4DeGwH`*Eusnh_(=!TxDVS5J3#9N8$G$dr;2pFRUE`V^Q5%|Up`+f=q=*AQ^WBeVp5K-1;79+s zql>QFN8^4nNlj`jH4w{25#1FhGlY;F5*C0R_BZ4L<#t7bsK`Odn!eoD);S*W(xC zwZ^nYY56QAyEe+d6Qx128yRZM2=BX(P{QwA$029@dKn34pz+wnqfkxaD%puP`B|@Z zchy1shve!nbpZNV(PHi^Vo1$hVfnf}W(ZbhI@ zgPM29$5cpmQ0o$WCYB{u>!CoLPx~Byxy%hM6sk{Mgp7MGvLf<0C#-R0>RHORBc&nk zwT??Pf0B$`eTjv+`$j)Yuf4X3GSpqfA0Yd0Hv{S)$$h;I?O_j$yZe2(mjy_xT`Z-S z%zr}!YPZc6s3rFB(`Pm)5wJpEMWQa}B5czVs%@m&p32NV&4od=7C_13b9`c!>MM$% z7}g`0XjKyr)7EelwC>y3MFET>Nr-`P%3@G%$lwK1`Q^b0Tim?56j~#IfQi)g8>O|* zBU7OlR9+etE^#X7WMxH3oGUAqm;32G{jvKbuwTMw!%ReUV^R^IFL6OhiC7ft`~pCK z4fk^wE7lv|IVE#UqzA~k2n|2y&u{?7&-pXWNt|Qsn`yHoNDdZ=FFPp}e^+`VsRkpn zcY^UkAdnn*$9Fb&pO_i`t}@q^=GH3-s9;+{by z-}3BWmXphzdNniW=ehsMZ+4X1P+B0QDAq#u=viRmUP((FEL@9DkyZS~kG68ZjpD0t zk^%pqg3I{&J}%?3d>S&8dI>_)`B~wD#JrO@Cv*r8@eO~GLo9Yd;wI-PPV5ZA5&cuA zT{V@v%dEnkh-kfoqmbTlR4e#~CRlHRDdfKq%M2N1o|N!~Y?Nb03FlN` z6AKkQB3J0SCvfZ3_)&TQ6r|!x5sd=p&^P0!>o>K&7yRm`ypb5{$|r!Xky?1PV^e;4 z-k{;9>ZwTPJDBuT1OMxdSqCN~#LP=P?uU}7nSZ6|8j-8T_i7HJ! zsmc7G5Z1RO!l6j&bKY1Rf~pOolRz-WKA*dBbc1AlDH3OM`Bqo=m#7&b+As{n>q*!6 z>67tftgU9ws`5@4Kq}Y%adY>yBJ2M2dAOf6;0nR{ z3gkp$QEb{Sz6UW^5-0lUez_CEGYiKCZJ!P;$sM&g%6bJCn~1)HS6=Fs$MCm4Iii^z zs!J>zB6JF3(op56W7QZ!xvp|xK04ev@}KDyzd>#UQ6*wOt7Mh^4DznP`V~?ta5u-iSf8#U+|638dn_5P0L8$#^omRpoS!Bh3H$MQPK8BGS(ltc$R=iW zb@$YYX-k6JzQ+xBx^FMsV7rDJ>_}~}Yk^-jNA5~uglPpX&O1n9Dd1xemT1Ik!5-c>1p-(F3H^Og(h%2Kz9J%*o4-EVF zB-}6VP&Xo3`KfD|obB+jqRSu<$97~;qAJtBHPQgb#L@8z6~Gxeg2&EvmEzrA3w2ptMG%H7Tu8X-#wvRNmD;v7nyw_Q%op4|y#o-p+b` zigms{VDxK6jqeM68Ncs(;_d89CHv5UA^X5tpb>gC@h&_>M}19aeBTo@Lppo*^Jt$N zfRmjtqVP~Pk0#b=Vp)R*twHT_T;l-ZMu5Y4=bd?G|B~RhX#1T1nEbo)3s1J7j?Z{A zR+~!h%xq@;Q2ZWyddPiIz4H$*%0D1DhwMP?nc35LF!&nXQB)fI|Nr&7=v)5$CSIT$ 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�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%0AO`Q; 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

-Xo_pHM}x8^XNL`}D3n|lmOMy_bGA7{d0vh~9~{auFA48{X;Tn}Vu;F$2ubJ`)iwiE(eShR z4QGJ5pf(>b(YGg5$B`v5z)ZjbV|FKJf~p|OrD%Nu=0fY!#|7(?s4{%7KJ~Dfnw$x0 zwMucju4GF|Wh}FrvNMar8QF5_}iYICM&&b&StH{}et4Pa)q8lZ4{%wSeI@6d!3^Z=AILjY7PLx|FSW``SP)Hh#^+<7mHVTQ4A(B}VVDSWr> zr7g9sv{KT(upen(xI%Q!2^LZ^jasIWT!rJ3Tm9^azeyJ}LY_tNm7sBk&6-io^eRWt ze=J*fWNWxlR!EfHZ;G(AJ3)noEmcYFWvooTKEwx2Uz28HUY}D+RMBn!EwyAYRdffr z3leATSnr$^>YW7}gHs&_ni)3^fi}1v`+37S*R{G()!K~nrkA?wE@L@gv zp&XpBbCd70O$)dxSiEgm)QstEMLK2@MD9k=*hO?N!L;Z+iXYL{e-ctT|6BaQPY7?I zC(hfW#6!F^-n*5sDRk~rYQ2u@=z~JPAHs)H{}|sXh&QXZBOdQ!EMtax*&wSs7eevi zPxGYETv|zB#^HEh`{zB07l=uQ<^>WNkj(!BGf3qBfj>ZhhV) z-{mIxE|=u{yd>Y}P4ZoClJ9a!zRyeYecmMB91 zV+O4i4_rzlmqbJ|3<&-iIoDWMV$YoT>t{yP7+p-0$XtgreFgP$bHJyaOp8ie9dA6j zHd#T)M=fz&rJ-#O!r#0og7B4G73WU=vVHvJZBL=`C9gw==@r5Qi>RZ#CsY5#R^6nU znfZNf{6YRX`rFQy9*2;1+{k-mr|nFucNqdXB7L899P(cuQR5ugIZsF_Snv2BDf|~J zOzfMyS*r1`34ZWfAxJYDQ5dwP@}n~;lm$(9lvDZdxznlq_#93W@mLd_!#g5Wgb+yO zKb^k)shqbs|A`~Y6uUQto+);3Ds6LcQsy!i71txt{86ezZYs8PtL-a(mXIB~8QkHR z0^dm}K86F0WSksr)~P+4oDaobkv*S;S?_7f;^?o4GlT&()yCh<+@$_n?4F{MCI^qK zQZ;qi`eC&7$ImjSZs@Td4Q`5G{tS7wTCZ#^E(W`!@iB^(X?(`k#k=-ElQ=lFL{o9b zTHL(_*IdK*Q&53BrSCb!G+B`tYl;ch$SY29Pe3QN>AV^(3Llw2vzJ^aWV`krL z0>?bHXwq71%Kb+iG3`Ae*=(?61T}jqrc%7Ojut`vf*g?@L0uDk^EWbI$lrYLVjt!d zTT%Q_*V{w!nmY;)m@kRnly^d!nE?P(Qu#AVA(6N5`y7_l> zPALn{frzWmm6BWcqrVP97(h&inJ_+4ZX4qUrrw4@w8lyC%w9D*_AxsiGS}S;L5t`^ z+X?3G_c&gI-Hi056tMKTf8KNckV$)h-CMupUHe;F%I}NgexK4GQmXhF1ZVi|;P`gb zuM4A7cw%3C8x1n<9N%I;?~iZqNnBz^LVR2GR45bd#Zf?DRBLW%KY#<>*NGp`OnLc3 zUA$Fy6=ib3KLIjAY+i3NAN+`h@^2{;Z!EU81nOfO{gsQ!y5K)~R>T4WeGI7>)gwrs zh9`4Qe+V@aMJrJ>96fyg0_AS+;89sA{j>ZnFZ!8%6L`K^5c4zr6u(yi2?B!UcEqt0 z@dtnRzwTe$yL%b49vOJLEC%PXFS~z3{YE82_|Pw32LI%cwAYA|mr01X&}%m-P8N=9 znLCID#gi%WPRNdr1y@V^PCpJ?eU3o5OVs6f`FlECk0WjfkyZS*SU7=%C&BpYC^2V<;3+}(9N-zAlC?3xgm%Dj$%YgjumJK_UBT{kg( z@dpZsl=@SKRcd0IR&_EKZdT+meFqPPVDxE(Lz0z3Zzsx$QJn@_F?|jiOz29ErCTbL za_Z*WtE%)yN?!4+;Dc4(NF3i{uEXt1$d9)WP+E~%iF!UN4h{bT4HU5%`1Y!HckdHM zPOzpolI*r8mAt=bRHE@C-p2wlJUIOc$*uG+p5Dje9YIX!eMOA_kHaqE@q^^kxbJ)d z%ZBo&AAdCX*c7kZP6Wzq=Eb||C}Ov9nMzBjf2W^S$zx z?6F6cPIn9_J3+}ihSCt|S*h?y+RteK#{Y@eVC&_}b-nfvrx^ z=Tk7(mxH^Z2G}Z?zc$U^EvvZCy~Cx^=Cz!8HDNoTdV-%l09vQ54*`X`*OXKa^hj};QUd-3FCFq=0gW}yJN)&UbsNrih?)ro{*_~*ZOpk0rA$H3W{f^(Yl{1=P z9P~uTbiE&prh1_lbHiTT*$?7MC3QPES)|txDSVjLx z0RaNfYSBk+@bT;c6SXroewqvRoOGo8o0HJQ_D2p^wbEruJ5k3-5$?UncO?MH?xmPu_6Ur-ao7D})v z6lMHTQk^Z{VgXAHhV~A*d~AL%d}jaBuXJ=%+wr5VQfl9(wpryzx$E7@%+NM#m!o3d zZQZyg4Y_1r&arxyc{SALQ?PDc9G!Y%b`qj9_ z=tbFhW>v6_^@)B_bDR~+jGA)7A(4wBeo&%+2>zu+SojLU8d#dW5*yn!F$+)Fl2+yyJA4!&3SPuS z*^>T{Z(hnze!l|!iW46$S@J$A@U#{B3;n!?a|>O3IIfc{*MIO6u=KiY7zOY>+`F-ip*m!!Q>>7_n8oI5|WXL?K zXsji3j-N=sLT&*ZAmc=ZSOAD%l!Lh>+~a!LeZ>XJr^s??uRBet1d+wYH&+FBynraD z6h74O3A(RBZf$>)`LRR=@B19202z;Il7|M@E+z<(rH>((Y}5R+M6&d^=A@hGv%W;- zx~*nE*fNBS)iW9t7Ib284_&z-?CK6jtjF>LOg8q+7)il0ce5q5 zdk}_>X`>~*EPikhw-}BMepenvU{QHf`sJqfzZY|%T_q#SbQ|kBW(MQOD-D~9t7Y;~ z^Jan`5}WTt`osQ^SYL%nV)H#JT8K?zeYMK!RrZX^R;w(gvR0L?$8@n-MN?FS-D4>- z(V~jf+!iM8c)$DuOdc;vyh@aFe!;QpRUzK>cQT@d^pHjd$%hti+?sm3g%H<+S*(Q! zm0j_=zcoB3c_?%2NI!inUwItVem=D>-nC{(%MezXG$J)VSr#ytAPEICP6XvMCy#An zi6OA3RT8#dXNIz8=?Ll(A?^z=nA3Lra2#qB6hndE__*|?Wk|~lO}*-CG?>Xag740e z%7VQhK1P_-zGR5s_~PYb1cR9G*94#XX&;ql#N&vN?K;}Fa8R^UB5pntDRI@;c4AKv zJyTGrbi?}v@odeIGy!|zTwxGL5 zj>Tm%T;0!PILvxwm~6XWQQXwOkzTN}XgF-)P^h0jBcuk8-HsP|;6Q2dYC?40B@{_m zh3(Mt39fdw!{LT$VICbg#+sh%%Ro^HF?$kR z0I73MyU;$14p*CAjh(($IilXmW3FgF#YY(KBL+F(|Nd7ai{kZM6$w(QeVqIoD_E+M zJvWj=P=euMspEudA#M!cP@2s!EbIkaiTam5Ft0#_#_s- zg(+;=&6OLZVvRD7rZKyAydpiVDmBco`jheqY454@Zd+KnC^=CH!m2ST`c0Wj2&LSG zW7+YcdY_3F-VvDiuqK^3Df5T@)if?=wO7Ks$0T&{?}Xd~LbAebyzw$7t&>30Qd?AS zki1pa8g!6)nMPw$J^JS+OJi3GlRNz5VX=SmPdK~i7ao&+k(Zfn7a4dY#EFDUek_Tx znWo%^%YrbheL31+aPJ#zxUjQw;akHnk*Qbf7=GVgz5YYoVz!|)iG_j zk+=|157g6cb{#OR4w9TSQQlM7bwH6XQV(rAoQr1XT4e1;b8XlK|`lwMxgmYoC2NAZqeytZgZ;)Ek|u(4X? zU}L?=f&6eN=bG}EmA6_s*OYTj`4lUkZslB44*3v2COzp-1f0i5VUO|bv3TO}$mJ$2 zcpE!;U=V(6`AN~FmMZX3?l{P*&K}d3ekeL+t%=f6K-Y*zWI{oPL^p3uq;Wz^pY4bU zwCt%O*cy`fX)Nl;3sp=hHy$TV*8@12hKvTQWo z-&%Qb5=VX@9x289vU9TBVg|_`d7`V$d0JMxAxc0$ylM5Wj!QI zLjKd?crV~d>~JaJc9u+-;KP;&+7n!Ie;>j#|3ML+XgZT6RL2pVk411qf3(f}uBguV z*BsT^xC*M%Codp;6wCS(Ui)uRrQ+EHI|kaB;n?5R9Q(VP-LhT%ERhsoxy#yTrY->i zwlZZQJB!?6%>G{+Irevjj{W_ca@RHg%^mx@koRVdECP7`U{Cvfw2IQ}a@Z9gdL8m8 z)mpx4p1BjyyI>lUcT4Q?1K{_LOthYNRrFua9|GG2_!XYG)hGh-y`B9Rb&91mYM1Tod1Z?W7%LBI$HcAIFN{?yn4s%YWdgN zdv@`zy(1j-8av)V0KD_@-hE><-uqbFzWDlUV0)+IeY~Upc&FPd;dqAz-?(3-DjG#; z=am%W9M+5TH4CJ0OFea}H%H}Z*?Tcz{z_*5D+r2QhHcECrzNgdC_+EgC z_Z{D&n~LMJOrn61qei**{sa55)fJ>RuJJm)25SmB{!Ego)4B57Cm@v3+sjvJ(MqZ1 zKcyc>75aDVfc_m)(!Uasq6lv%4(R53z&DaA1Xs$!|LT3haBWLU?fJ2R(bQ_-s@C#a zUZ;Z40`s4`F8a?ocRnp3DHx~L=1($wV}#WTCoOU33u8$WnQs8di;-5pQHvTEdh@+q z@a8keWu)Dz#JFkosR#VbRn=@e4)o?bM%~a($^S1deUB~*UHZBuqTuFNaOvwV9aEya z3XWgV-ID&;LQ46yO%vu<{(K5FECiHB?u_sjn*cHG6`BcWCpq&^LIaIEtr362g_M$u z+~P^K8@&5*{io^x{mwogM zjzXyR(_0IEPi%CA8_H1-`Iom2v&~wglWYKD_WL2&rTvI6#1YfYdijvHpPL>8RLg=} z7qCs<-t(myUxav7^FoTPCYjrjYDJ;gPyDjMfBPccCQq_Mrxy`Exr+V7lke4jV)z1f zrbOe0)Sme-ie6d$4avGb_4l#*YP*=JeHY4Ld~B`o*@A1-yMNS{CrVQF*PCS5EU{v@NAf|_bv`Q2HF`|y0Kf4hBkJ`BH;ECp9RFC*7I;vww;Hv!_JNVFmpsk(q%WbE)*0#JCxVe(dXsZdH;U zGJBG_9ic2C`rvi+55}3uoQK4}exT9d4wLwo#4S#ukY{BH5`XOuB>qw-_^P7BkJ=Di zvQYMd9^#t}ozlUn=?XR^x3x5G^g52!bepw+{M4b4KSE_u-jpJ={|iDs=7P}ovIyW8 z%t1ykmG?QCV5A*Q&{y8yTy5p`Cf6h5qX)E7(!7~#>T}&!-q+Ctlh)DQ4s#X*p%UqR( z!pwx5D=*RB;IHyGw=Y4wKxgne&N0z`Rj_1*nAJ%Ie;~_e$zkqcK1;+s#Q8bbLUM|0 zWC-%reuDj~;6F|7IVp4tQrHzn;c9uQR6Bn9)2kgnh3ibhQwNpx6nljV?g*H%e~@%f z7>>f5+y-bU-do@iB+jm`4Im0osT| zLdF|YGJP$hkkDTbi)4w|*HntMAOEigM0+kcE|>?%Xn#_!cz4!r2Gsd|OQm`%BEuWs6YT8%QnYw&nu}1L zA9Vem`QE_w`*AyW|Mk1xUUBQk!S_h(LGpLVgST*{4IZphD4`O# ze#5B990XgG+>U#e1bM^O_?QaTn9Rv0x&PLNvMM-&SapGT!Tz|j@vWaVaC{H+6XaI~ zFAIuyHoh%0`;YH8_DTUifAYVQAsJEWKxD9#3}0_Rl&^{O?M#Y#Uq*gk6~yjjFi3(n z@SlexJoSZtdHt#e8Q=1Lg7T_ht2~Uu@tMW1Ajnq_7}!%**AN9kzEy(!Bfn+gbS8t} zev$>O-CO`(ZvEp z{Yp4yhT&MP9N9X)uY$Vu0=Ju`6%G*L6PfSU<|l;fWA3TxQ{abHyYm0EDj1#1h?2-$ zg!sy8rS-csl;7Fr3Uk5K={w`TTc3KAET>Qn4wdL1h|{dkBf7Kt|2!*<`BoRAama>@ zQx<0*l?oe`$paA3Uj%Xx+c>3&kerWEq7lbP!6<>_Egt_~k9m(hDM{vw`wT6ySOctB zEH4{8*}lLpa(q#MK;M)+-%=vZhw6-z=9e(X-Km!~FHV}j={NfRd5r&}TIoip>=kWd z=$!Ix=BujQ0!j0I*k-b3{)kAB7lfT6z@EKW;^+Wbe(4F3EdMB1rTf3w??G{S?Vq>IIlANQ#irFO#g`5K+s5xd zJUJ4noc*hnsrSjqvnz*u?6UclqOk=xRU}ak+3B*d%=tBh8GUaEQxQHWOFH0V6+DU#7 zr*AA|f1yh!ZL=IMz@PmE7vMj^yMJx7H{qQ;j{Q+QiVSAc>&##_mGz*Lx7WlZC6U%) zFG(>|=GRCcFsYPKj@3eBj;&GpCf}~56sU4=kx4tKdxaj>b-}PbbdoKVDNf;W z`x&EzueVa}XK$}*)%Spl6TV-_4^e@cL#IGZ=zPnVKQh(iS;xrYcHR?ilMyeR{^=>3 z$=*6JKjm94Kjq@$=3#N;BatDc0AEjxxi|maKK2xdo`TIxqex7}W=-9K; z$lfr%VMqH3#5Y)Yuk?%VNS+)J-%!vm!uW(MTzWv2GEd+qp+v*S}jB!w8kp52*0o6(7@4Gg&jD)NZd5zpU+w zDY9n^cY`Y=X)uZUoSz1F^qUD0J2TI{n&x0vx{f!a=Q1@}EoMuls9Pg1qmjbPoVcvY zX@1q%j#KHKd8h&w__kGdGh{f*Yc8J#8F{Tgpg6w;D-g@YE9}$tvjxQiO#F1(8e|X_ zL7Xm0wL{D`y9>?JqC7jva|wMb$bUPEe=FwK;cS7z78&v(HlYFewGO>Aihr|Sa7JF1 z4$*s;TWePyM{DS0q>XooOaQhv(ukx68i%dhKb!npFZn;3{MQcoznc7hGynAan)%zq znJ0kWmXx_Jn78(@VX{+F7=1V|ZWiAAg^)RH0EY73jbbR~0r#hsx?HWSr(!Cz4r8~u zKQBQ)HvaKdAz{H^1;79MYSz;gF$qPRb4nPnu9Ap96gSfQa|+cmo76}yMsw8EsH2t;fH>MMf1(Roa|>94)&T6ZbFilIQ?UrT#4j%WVO~ z{?ANU#eM36e)s=8KXLY|f1RIPbh|*1gtc0D_=y%)h-rWTKOwFPeiA|LV0`7Lux_yh zGtWC%)?Rg;$)khuj|t_QF}IiN*wuD9t8%!}8wSB4J>bEN!wPH!QO^-cYKGgR`Rc-Y zL=SmZ%0H0K#O89r;XhUG#ia%Gvs|iI{!HX(5XP2mWlQu0ul-C!9SL}+Es<&&(rV=XIQ!STJN=bw75)h&mJ8_Fu5aHmLBMciffjln<#~tYCvwejIY?KmU8SOt|j(TMvb39yLH!u}z zkYUuS`vaNdwDpA?bUik)|BOGDbAFynKlvKAzESzAh@TG5ABX-l;*Zvm{`~PDKM_C{ z7Lk3x7gPdga1*gAc%h@f8Geer!@O`alY8(rRm!2Mj7lkort_PeBy?8EpwvG7vZ)2A zJ2zP+5qkh&RBj?~XejWm2;IHTb3ugMH~Aw_m_m(~bXQB=`$g3xu7l1xNg>dZe!_)9 z|3w}HWjH0dQ0RwvS^pxJ-|U#8nuCBHV{WNAfdv`x!aXS#%9ZXR&OjPD@u5bc!Mc zaQhjB%t6f`mZ2VehzX-l>Y$Q*?VC)&*dzs`BwzccDN;K&O;@QDjFNMe3;Eik)IoNx z^1q+2y(_h=rY}DlWn-zXB6#iN|HyVnGXwz+&=`PSKwE9oa%$k^uc?E<C4%ds*)4Hk)gL99Y!?tE?*!7y%K{qsKXH^1&@ z58qe24jj&1knZsZzxuec;R+*A^z8Q3`aCDqi%Ce@h^h=vx_Yxmm^wRkp zU*~5UO1Za`z`C7s@6p8%&e;L~MhJHN`(jKi@bRJw=r=wMdHnMa2TrT0rf_h-@p-R( z1-wt&z&Aa%GZ2#h*Z}@*-wsX^7wf~n9q8OLvJ_f=ofN4z=QfeLMDzfl#9c z0%PqCYD~l3O)UJmAHc%5v5P_?qk$Y;oq>ZpN_Xv6LJSIQTtFS%sy4ydQVmx$+@Vs$ z2XC)w1LW*D1j{Kc0Q3Pwm4ZG;O`(wzHm>5LhFdrUp?Y6^Qq0kwWB$ zMg9z*?BmaH^7rNcpf9TjgHtX_EoMx3@S1k^3u4rNJ7{}=!(bYlOWi#m&b-;^)7@DED&I_S9 z3%T3jxy4(C>viq{3(r;Yr$i_9ZoZ3845F8o;J5TsuS3Um8;#%$p0)X;l-k&!?#<)& z)WQzX9*MdnBRyZ&KTfLcmyzDuMDGq0{Vk(NI}glzbs}@2pBQ&x zYqEI<6C>MXabnub6ik|{uLxD)K5e8PO=SMljiSE}oZ936Y!v_1ZxjnK4}_zb&7&P! zRJEK1i|V_@m2>&v?j;(<|B`nCU%FP?_*4(YKf7hABYk!mu(}#ma@*MuJWU(99D^Oi=OvdF$F$ElJGvE=_irZKg`^2LN2V5HtT9rSx= z4$i<1GjXUO_Hd#x;1Y~vB)N@Tl`LAB)(fW}jOKSPe9r8NXIq|>z|_OrAZGGix+_sf>RY*OkcYMLNw3{B_0F|k z$D2$f+bOkW$-|3cNt_ewSj>+qSU`qM-_&-cf$ zVTiCRw!zljI^17pu$Q%~Z{FipB8QE$p$!t9)rADfv`vB;d{3c)*dwG$|5JIBsr|X1GEl8yE1SKz)R1!g5|Qo9H1;09gG&^sprDZ}^|Yzb(-M7gr|Z-E zwE^qX3i|Y2pLYQAf3iNi?V!_l3qSg-&(DeUb3$!=<(5Bq!7w_pOP&HJLCnUkvH>67t48RAu)DrXgQ$swr4wrWC;`YGBw#j>T- znf?)axy-Ki`rjK}{ha5oA(t?A*V8 zX{mqx)^;rsZ@84X=3l?S4^IVD+6ZOMT>#AK-w6`At8#yUs)T^=K~Cluj!6|<{???D zo6NDp&wL5ds3%HJ*37z1_O5-!7Q8`~uU6&uN6lrVEO~s`s2o!IGSErZXoq=@5Yrng z9vZx6K9$RYGoBURj<0bJJ>RO>)cc6afuUqgi9Dt)bVb)k=a-JBB6U)0n$XzBiVV#( z`iM@;Z?FgMs)Fb#Dzvl>f4f%GMTZL|4}~SB%4e~V>WSsOyF*WCvP|HEvRcJ&@Gz7@ z4FrV-W`+$cE0kOimdsTNO)6%+OLHJS8uiDig7ei>^Y^CmpoT(`lyJ3noSO!VaOBdCJ5 z1~_6Jw}0e_bqrS#{|NKV5K-Zij6(;ODSwQ4^K>jRoWNQcz@HRE4i;Qd~vw z!hV{RGN_=-wWD0oge#=GC+8;bF|=&*B4;nu;lD(Xf1zO^DQ4hDgVlfV6FaV7jNd?a z*^UX(>rmQp=01@jT=5DN>dh^63OSI&wEsxSF?4y-0O93U6(&FNy}K77^j&d{|KPFV zQFID{YCk1xj%mN+79c6TsHO4kLHo+ieta(1sY|6kPVD+@^D2dU5I&sO-!WZqW#pHVcBKegd618WkA zqNKJXXkf%siMm|FCJ^Un#&>l+9H`=G26wauSFgd<6XF0rdp}ir0w3r44v7!hmGJ;b z>w$>U^rpeN80w0|O8c2E{%H2QmN%Y0UZ^}9LK#B}($_8G0Hm=2ZqFQteASn5Esf=Y z*xkSahgPXQqdPn>7m`r`-6r@SSABFmbGn2=9pUq(T2nOq#xGSThi6Xg$q#k+vlr{r zE*L0ksa`D|LYO*@`N7v*V=t0lJ{Bb0%`$Gr=6@W$5Yr3$xz5IdT36>TIy*Kuotvnd zPc^Ue+a)C-RxrfeDJ8{|t>W<|B~vI#Esq+iw&w?yJQpSKI!92VV8BYJLqrLfPk_7z zzxpM*1DISj|A=qluUHFs1jio+cVbibkj_ z?8$u>Ia8?aj?JUPS|*e|A=<&36ZN_IC12-oBHGuu~PQxDcZ%d&t#Vl}K+7s+;*{ z&tsOfIyeS(Qo#3Ujp~Y{82>Zw@tf}sFXMDx_2-vrasKEF&tgV;gZU?_qsdQb#{SOH z^9^g&t8ddQ@*;Y59W`yth<=T4p*D)6>7Nt|dDuyljEcAx7qrKy5%+K{rB@tLyBG_j zXLQY)!*ITu%6itLm#&*=*Yawdu4|raC|+&&TW9Be-Yj{*tGmgbAzogm`*`MNi3hU1 zYt-@X>vXGD;+gB_*pm+1=HZEM?ORg5u4g&4+%{(sM|xI!zv_ncv(9N$$z8!8X?p6o zCTr-uJ!pR6&J<3w_C5ny&09zCUwa%@#ycuwve_@_Jw@Q_hNExjNz`YrYUt(1?Zy6R z8CNsyDptkif4a+0tKKNOzOF^-QdlsWb{=MYuvQB!$hhmF}%oq_z57}7M*!>BiR1%5I)uWtY-WA`CEIfqM-9W z>MB}ry8MWz#JVGvn#k zx?_B3cJFLDa`i6~*~i+fN4&Q^7{P~>X!Hl+ezLG`ZVP4Y-RQX=rPk$AqJfA%w4oJD zaL@&eaw_94xU*#Ocw|t)Q9rC8FQM1*6ZY5^v`sn-d3f`O5K!l}`H)JaMKLq1|KmY5 z*d3z!n&A24H{mEc|2&9{le#_-K*zHz41b`LlrCR3%MJ=7@^5lyD~KCb(htpFsg8#szkb`M$_w0&}YcP zNOydP9nq*#74%4`6tX(p-`&Ezhe!TwIdv=HSBLyJ;37)HIipCLDcjs!K_eoA2{a+9_$e zc+)2#O)-xN_z$~eDjhwNXO^0Cbm^{eb?*vSx4EYJJNC`nU4dZ1P5y=xOBWb*w}du% z?h|}$Z}(j-%>M3DwCNysDcV%yE@NEQxyx2Ak93z)md2*DJS9|%*##DHrLxtz#doVy zt<|ZfpM$N=g-5v6`DW6sPIYj@;ia@~4c5_<^{hbK@WIaQ!3xz=np?$HgrV9xc2key z7BpoYHs78fL*}r z1ICvAyAiSASJzdLh>Np%4hO*$(hfo0TPz~2x7wFfbDnVudoqu42B*DsLGR_9YS_W_ z{hWQ(%f zm3bx)h^LFIn#u7HkV$P%md|{LJAX2JevPkP2zP6iis(tnn;Y1c#b>>OUW1S0UPG&O5M|KI~#@gihmXHFe?H$69u%HqzlzyI+s1{6y zM#Ul5_2keAnm2xkf{|KC7F77h_rCW?pLD3Ftw^uP-=%dTA- zmM6wstpI}_dZP|mZlH*g0QKxN>%Z(Kus49!8tuqGgTSPd!>Ye zCx#gyOr=^R8mfw^M9QDcVo{UKpz-Maw)Q&y!C#bDXRF6cE#%3F8-k8t_2J+RlR$fl zb^)kk0-8o#SLd1G&qcUP=2}fla{my4!XF}qFI9(&Dl1GxIFoKGDtDVc-M)lGSM#h@ zuVV(23AFM5CpQe`5(CooMCQ&pTqhdeB>%=UE*@?XPARV@7bO~JRHoi{dB_v#4}ux% z3?Wt(XFmKOXL;torIRY$m$7Pioj3FKocuqqchChlFt1}*>jJo#u^wc8sE-4i$rZ)@ ziuS82%Q$Pdy$kyFSNy*oi-uqFi7d{_G)~l*n8H{lExEU(&4Vr#n+W@%WiiN;on?<; zNa-_NOxZG>o;<;{&x~K|k2|e3RSP+&;%aP)Xg~!Lo>s3+>||*kcUmk(s=^rSe6pV$ z#<@uyw#1TL$20?HY!u=qMQ(xl4Q*$YJ-FJN!eOGPkf`;?L>@Si%#TE}?Ag1@)%ZDK z5TK$ZUD|QDj?{sMtyg(paT~}U*Rk${TaxMwbN2)wt5*6Se@KFY36MI_qCP*@w zM+8%oCtL#PqT^Ln+YX##6wjW+X5b31;}5koS#pjM`#%y)$QwWqHWr#S!7JP+8k2J1 znXSrwc3$VJG8DXCcwOyhK-4aliin)QO4P!`1zWXU)aQ5es&?^43f@Svu7EEe&&uu? zAV6<9GC=-fRJR9f0+WvnlT4ZU^2J(7iF$T>GPi?{*I|SVPwM;A$0^*>rjTLx9Ohj& z|1gGdjHZyW@N7-+k>ny^WHtA4P7K2GH?2IJFPp1t_3n_;BT5#SOx1tn8HeuwmlJTF zeP5)+Mm*`FXaYED#Y#@3#Jiu^RKZ&s{Os{MUs30orsiDQD7%yzAzCh7q5o*%}wl%9Bll&(@z+j&~cts+s<*cikkt`xCtjQ?i-;UdN%vA&ybn6lpj!kw*|iUc0WR_aVWrODjYn zxze8tz5=kjk(Yjjs8HYz?&3gla(<5s=3w#!F0pHnrn^8oBM@!v2cjV!Ty-cz>w^dP z$M_zctKJd_^cfnot1ljuq%+0-?LLm&_b*|^X?(}{i&Ioim=*yAr?7}|A{vhg%Vzpn z&dy`%+2rs#{=A*t(<&b2e#cb_SvfLX>i@1`OpCQ#N9i5F;_oMf%ayy45<}i0|5`8S z>P?5cI<@JiQ%ic8{)m$6Rnkr}Cu5%J*ICHDI(y)Kr4-2LmCl5pv4#3?+LE7U$I%-FZkvN!Daakl4QKWi@XTN~_c>%(2~q=? zxYzjw9_3Eq&;LiEfHwk8tfT)EM-YE2b2tx8d` zQoK>>)MygrdcDeHY0J~vmOizuZS5nD1++295S&q4#Zo0saIRM%qDUN&_xoG>+$m7& z|NZyV7pEQq`c?a82$9eTRN`@4L3WXj!LQ9&9p{$m!+A?=Bor+ znXXeAjQt?kb(rkRi#unW?X1!-ptedOqaVuwS}^jN9ZEW9xsQSmA%@!f?@$jZF_#jZ zcaa(VBh1+tcFA&nrJSxXXJui|@09bqFlS+5&YzWYTbT3v!kmYcGcC+X73MsuoTe~G zmmH46#Gmcn-nWxECd{13^^Cck=ah3`nDYltl;v_(C};aH=hS`3VXYj0*S1Y2(hT*- z!D~&3P2D{Gwk_RRH5vwdax9B+UT#Sr(QXPQOlOF9^D3RJ28C6y^Ud2>p3IsiDcBuP zUQM*1DK>A_lK$BVq-)VxxvY8Dp*l(Gin1u9wT87Ubz5bR-jUe4j{g$ojGqq$6=~>4 z7dp}v3FhysrJG$X>sh8(D~}X)8-o)m7n6cQn4ZOe3bkVn($csb%d8Vv^QN&Nvlc?z zYn9=9@JJCXJMw1bl0z{?yOrH}X9BS3EA4%px28botlv*nZ^^FeU;iz?s$F2H=f9(V zA|vs2+b7#i8zWe&fzCmYLPkj}smvnwaEL2{BwymF!?(7o=N7A{->Q3}`{OO?(TZG} z#WzFxr=hD_D01P<Sc^^{>o90ymHg)`;PT3(j~IRTa4RJ zyd2DCCvE=zU|-$5164C{kx;S_#NEmsTPUBn|@E;O+E*;Y||AZg9J9ISrA2RD`BmAggc?HVpnP2#ucy!2YD4(JP+)7L0b zSfw^PUi8|>S%O;*a#r#>jw0pO!85i`AI^glnb4x8M}(jCQzeSXgVozceA}D5_SGod zI6L>!IuOW$zT-p#?h4`Ns7J93$3Am*xRM=bSnyfL9M0in*w=N5)b0rT^uJ)NqbfDd zD*XL5o-XaJV;|Qjt24DuC1#WdSl2YdavP!N^eBcnH2CowZipz=sv|k1(v3~k(DNz= z>t;76F%GcN)k_;IDnv?2XHPi1UBcl#%IALSx=MdRIZyLl_Ugb3hv#c}Tub_T+{|nd zjjx*V@kO;?^NAx1KtZEy)F`Vo%EQ#MuTeH-PSz-Kc6c$)$LeFhVNz^GX20Nnd)zQl z%v1@@M6%;7Fnwqe>8qQ?eJ5%bv4*(T07jz$L-vu*5~LFm!b1teA+&uq9Ora5PM5tp zI1DgIIYAu1E7YkBc}2$wUAH zQb+uhqXjW&Ne|yf6K@o7KRP#u#JaN@&p0dae>w;ejKF9iHxv^S&G$OKCrZuRa>@qZ zUbro;2*hNa3R&azKZ7;a8f(OwqEuszzdOoN;1VOD2r8<#kTvR}N?4&KI|{6#{V8yt z^7~QXB357pj1@eL&xLxfDhpV_+G-~bYK~;nnqJ(CuSl0C&2_;hve>K@&S}3sunwkY zS-^y+#R6=SB>G+VEzlF{WkWNvb7`1jP-Akc1U*yG8ZAedZTM_yCx&Uvr`EEiRax4J zg}U7yVWmA97nO?Gy276}xekagI0lpsQ|5+cyK-fpCudwc=MLHP_S$dSfK6ejiMLBS zBX>Awnt!5~)+LtUjl-obH&>xqM{915@Z+`rmVt!I(fZ&aE4NrAVtTOG<3tQi{W72- z;g-6xpcf=DVKk_@m>sros%)#vZ8;E?X&k%Y*Z%br6wEEbqDv?RzcWC#O)sOtH{O@- z`GJ4qB6UDj^k^uU+f_)r?VV?B-hzZ*O@q4k*K0q*Flde4JwM-#XUNsx%NdkhZ}!5!cV}r5<%u9vpLYUkOis-;iyY9 zCkEeIS->8*78AC`9)-D2d=tbmuM`Q0as~+w_&(bo{pd<8B@YYTf4NRN)6jcS!f~4d zJ2At9|J0ILAt9TRGuWAYmEz1A8O@cB-OoM%=mxB>Mftn14S7in5^+rva4ws;< zaQnEeM2c51z&lfE&IIVJ(pdjOX>uD@=>qy8mSea>5ihy}1Ri*MsuTB1++zzsKShTh#gpj;_GFC2QN*hz`p%0t5UXALZ~7 z^{D3l4iEr}Htuz}n+o*^b2z#1AmEk5^{i6u77rc;w+%I?6E+6EC){^v=~jk3AG}9a z#vpixSRwY|V}Jw5V}Ap`mgvsri;&@Af=v(nx`x-5gSWvcaW8II~Xgq%x? zL3}d7G=y0`6hAn1KExe&OQDWrtpzxKo8MzcBgJB=yFJ-{1O3s3QsqobsJyU#@0F{P1XJ)=|w* z`qlmsewEz;?%nsCU;3;}BX7P67`VH-$L7KK0^0q$;AeM&Bb#Q3=*Y&A#gVrT(TurJ z06v@k|6X!%>La&yu_d0r*4`n`w&e(IusCTCyxG~ixmTVQB9)z+>CXb3BDfFSa22PD zZR~#-@hjN>2(fjXa0o<|1l~__N&dA97zZDng>{|@l}wUY8mzg4btEY?21`L6g$0sv zYHHwikAumG5$X6K5vnF}29slI`mQ=abU?z4l@aqqPkAg9Z~CqxN{EQb6g-YIyJp)m za-OIZWGxhnk?!i;CgXE5ug43?IWQgU?YdodJXQV2AQjg1z4MnwR#chL(!#S8g2fM9Sdd@(kUE$D11Po2Af_Y6dAP%V%41t6*NfyBH zeFsCFNkXe-7KUB)vlxa-;d0Wec9e1Ta7N%DsFnYUQ=ptwEliLfQ23JY_#H3-_IgQ}GgUc72AR{toSDjzrF?#ESlh8-&RpdX zO{-*nW0*5$FV}_sP?ljG@BFXmWP*f~)5qZJyp?NYd9vdchEAh@S z@h~MCZRz5|fUOL$^h;b)f3Oyz5*QR`MYb*7Q@!gUA-H)zx>LZpLo-ra-yYu0mjP0t zj|z59)}Djl1zQN_NW_u7%cOJ??oa|UA}dcCc+M~*n~S=LeIYLGE=DG@a`ORhe*qmI z(*c!I+g8r3V+H~g>ON+IkWAXtw+4`s6mpx?xQ{Ye6Fq$I_;eX5+FZB?$ZSh+v$>%( z@DML9>8!R1SQBj7)yabw!}zkWDaOLhyQ%GvlmHaBGzow6ZQ2r%E2qM|jugvUOtLzX z1FTnQGd@FKA}Ff=5(QOd`iX(Ogt%jTZ~ki`l3c4EYy-iLG^q}T=@4wx{+bF06*q+5 zu!0k)APVa3PSN=#sI_R9+T%M&6*GB}{2D?HQBD~-b>1UHu*!~4u6aN~N|E%T9)9hX zn{?e-X9Nkt*_E!_3 znA$8X1?aL%$TnCkf`n%N{sxS+E&(=gLEPE8B#>Kg96n2+u^9uwjUHR7Ty9_|-?z)}b1e?28P^ zFJ{T`k~5X&RI8?9@pl{IOu-VC;9|n}pKQEP^#YEy+OQ+HP>aL>YcrB<^GoY6%L$<{{mZnXMR*F}_dCNxgisN> ze=}#r2DEKV8g=_w`0YH;!4H7R2Jy919Q;BSJi=Z>V_Fdl-Xkm+$!altTxw}WU|ly( z^*O3gY$p3#m}AhSY7s`byVtQ6*roN);~VZjrz9Bv`o=B6_D?yJt<42XYHOp)m)Lvx zj#^ByDVepX2vKtDE_iFR+`Vmkl9hIjW)yrd60+h?|6-*@!j-nEot5@0TWJRuthC79 zZl!_YL%&$|E!z2#396skP=G2DZdqqnjW1Sk+xJyl{r269))}46N~+G>D#D-H)m>QK z^UsZ23}eSJU;la^5Qy~fRTg`mf7pp!N^=Obd8{TJ95B=CdV4Dn3&E0=mR6|dK1qss zO$k%xs;a!C>2%I3D0~OVQV2+|3|sLbUBO@2Uzp7C^*b z3>tO?ED8LqhG4myP%dBWeJN7fvVGmH-i$KsYISqqCzg0K_@8be8J32GZu;KIHUv^* zt9gwyByZsVN%%m94eaBmt_7Z}X(3at7RE-xCaS-viIeh8R4Eig*hVAY*U|?6Px6b} zsC8}J;@YSU+i3ivHdZdp4Ff_kp*Cz|Ds42=2LDf*T+~LhYvW+oMswH(9*_STR9ENQ zU;#~Nc5SrH)Z8W7TKQ>6cDkS6iFxMQ8|--?P3721lPQ3_@d_5F3tf&_0qgPR`Yeq zo8{V&Xw$!lM|Lh;kplA0`tnCV!$KxJuCIWXb=ZuVqiVH~AMJAKf`Ze%hAKT}unt-U zl$(9~w(lf;du_9y8avf}wc4fBlG5l>{^n95q*S|s-c9p)Y}_ z)Kt#(jfe`sQ+IoE6_BovpI&W8>n&aa^1-EpO{Cpp*SEjge_5`Kjqp zys6dxn5m<6Mo0rpaR2mabmX)$DRk7L{eYS$;>~{Inle~(|*)$bR-B2YpZnV$t zHdv%B5Q>*A7;dM>mj=IOsD*8`+$C1eP-B%9!3;#X>^NJF$oCNX*xrF)~*JyV`IwES-H zKfLJ#KYRQm=a%Zw%I?t=;TJe6uoJhFmH1;$j(B%=Db0JNPkL3?6541RUsam@LfF6Ka8K!pd(`nw?yQ(vl>{Z7T4AM(y0E7#Z+H2IpVc# zVxY2dC2JKPg+0JUzE}S$N1f9@15KlCKO|<}*ZH0>6{kd^W5$(SId)`M`Udi1HG$VA zr7>D_L4=C|t)f*y(;})KqpCj+VVGo{cXSccd}++9{~&#`>P;eAur5YLxvM@u9$%Yn zjSfLvEX9bN$Ad$sB~&Gsf92BciMTXf6?6>&TiRt2}wmTDl{agEOkIr#}z$v@Qj z*Jzt~_I#3lk;jo;N;DplSfR(is&8Q@s&nUez!B{0*1lqD1G8tTbh)40P94DIpof$z zceVRoKQh!S;|3~2D~>r=ZBdKW>9&s&3GQCo^4QmjSR*ude@RBU(! zVX%f1|K%)%jB(JrC*u2X?dx#G*Y^{W!c1XZs{hl!?-f0 zwWMz8I33UtHPKm&c9NJmu7r+}1{64-ni=irYl0(3$!|a=&#EA(3fcsn8pxKrLpH){?{ndxQfjE9ACq5uN(DV zZ#g&JVSRWf-+^paZRYYkg3R<2Xa~tNsFom0)*mSo+vv{{lAn&%ys!QQ$kV>U5$m96 zVzMfrKNINBQ|b@Lm};#*UDkKo$A0K|QI*4@i7U#m;s04f49_ruz1otgh!s^@8AXWPI zloip`RXv%ZGmY~=?<~l&q2Q?3gz~Y{b(~NIEU+9Q{?y<*JF|eHxM#I;yJ*|u&!aC8b#IE~ zf_P=)gw(*hW2qCDR50X*()F1NjRl1hWrSRJHmLn2GKrKF_z7vHx?eas9=h7C^Hc~m z(ImtWI;9H~F(cvf#!5~EoTu( zc(-3_t&F8}QoMC6KRLFSn2m~aramGH@mrDcviu_pkL1`s(t*}S8HC)yj+q3@V0He&PX_oozC;u;crw$=WPn$Nv&8we;#n%VeJwX% zie<;A^rIeop8=--bRjxOA`VVq3bmqY-4^||M@#t@buJ)k55Pp z{A@yM%7*mNJK*>zJin(p%W@e`6~_Elt# z=BHN(f-4&+?x>4wzhB|adql=xJ>_v+Vq8nfSUhuk%f}+R_n8n$s4_;KIJ37RT~bth zrm@AuvUJ+0QmoSdXklr~cl}hIBQ!`ZZC#%W^filG8e^&9Sg)3po}Rky&n1kHc^dw6 zm>H@da8zV&fcEmu zqH+!07R6Wvz_f)i;#T>9AEVKYs?_NE6dJWYu+i-Z4P|hE>yT&yqPh&v;xiu#@qi_a zDibjO&WAcG#aQU6HbI2G93qIioA*I#q7*$86v#AkLIabuOr8nG>=1*XVxu!V7$soZ zSGen~&7YwGsunKHaTQ4Yo4wnw6Jn*t89JYu8V(~_0xHA(bMXMPSY@nb%4cp%?l?X( zJkC$8@grg{7=ksFz8B>#)zp+fLqY}yAX!gCDjtAjC-x{51Drg7sSE+`ZW0a!!+P8# zY_B;u4k-6jWJdO@Uo&H{_lc5Wpg-2oEHm2KH#7ssEA(Mt=+%>(fM`NfIy{_!%HX93 z!U;fTq7#URwh()m2v7DQ<^iQL$U;9x2#vBEd`SS2{{wJ+^;5!`Xu0Fo*3knF6QRTC zmg*4&s{-bs^tKk<2^vzPK+>g9rxo$N@_4z6yfO(Ns4?v4xDZ4+swj@4%g5Y``U?V% z9{D7=CbxIO{X6t~lKXI=T2&4!(7A*+iB~fR%fj*8{W&b;lMoMgG3%V!7oe%t#sZO| zK}yUII;AoCNK@;Z3P@#6|0<%FQ06%NQmjzIpF$~0s2oGBUiD-Ob#Z#6e4E7=j_BrG_Wm&ZQl;u_f zA85_BZ7%h0Pm$7)_#AGv_!% zR>zB$b6hm}!!qk~CFmOgeJhKrP$_4T17G(SzV3gYj7&5kB}dI?QPl$2N~ko2kDj7{ zqBt&9DEGwSu=mG!a;B)z26LW^@9OM-tOx?*BDdnO16E)W6&FuV07qouTqvwCIG~g9 zP$8e%Qichso?u!0!>&m8SVu0#RxqXALLw($AHT^F&By5<45T+x7o7RO8VN#LQdN$P zxPgq#%W9M~=3>=!84~w?Bv*q)D?sEp-v-p*%eM^m1LVQfgenrPw?vhhP?b5<&EFZ! z`HS%%VXvw%V7EKA{6m{y`Hd&8tnkXm_IbOqN#l&FbR)4-`umiaY4Rf`n2UH3@AH!q zL@~et4r#AnVcnqUGI-Vw=c3N2V5X3gjYc<^kxWQAh8eD4hR3Kqz{=-<4A}9&_<;c} zL#Rv|lx)u;X9}=&WcHWi{2_mK6VFGCmx*!kQt_PJCy2o~oyXOzDx*h_j!(&60)dwKzu~_lcszp=%8~ z(Vl9{{RNXRo-#Eu<;sIFbVO8cviK=cmpSsHr1#VysW?sd4JD*nzW1hYatA6yx#f>l+?FZo6znTLZ@#BI&)hguD zL;-0EVpvVaYd@5-{(`JM&Z4#XkF#F%=cU(RT@PC9E69>pCFVCwxBwli6}V-^RtnQY z3SD#a`Wl9k;MqgM{#jU~B_yTw&&aj)GZgy^#b>&|@U209X-57PGx#=hWTC`F{O3m+ zN@lR&RKJ6BP zQV96!4jb#&kOah;OS&umSY;Q_^7Ws`uaHXb`cwG`h4d?&S6(&0`c4Q}t27`pI?U6% z{#3pv{56#0yI$ViclTE6L4%OqtU4`2&nbt{eqvyy_sE${0nnK)MH736>v}A8Te$qz z1i$QZgnzX@MdV}BC5HpS(ZZ_opy8LorpH`6=3?^c|2Q1AUYV)y$%BOh#F!^Z`b~Gf0qw~Se z%8b9ZErRtCj8?(*V#y=Wk6CO!LayJ)euoA0@<+FzgejnxU)}N?PXzSxYg^n##Tegj zSrAKJgwQeOqRL3i9McaPhAq}b% zX&-U)HnGDMKRAB}Ts%eiK6hQF4Pjm^ybkCtKlN=$<0tj=-{GB=#dUIWHVVF~q%Q@A)Srn zElz*8F+n-McWL-gF7brJ`9DT4EsbxK=2(8iTE~7Z2llHRu~ktY*zf(HX4&sw?8(^g zBkpk@m0L!+EaRWevlzeCLCYHXC8`fPY-zNtG{^W~de60NIkfC@97Ct&@8nvZoNxJZ z_ZT66ntN1;*sI-REsxi^M}>&J#yx&Zy%Y^pFC`?nb_#@qOE)+n;Tx!k5*BV{ms(Uz z9dkm0zrUkdU6vv_;W$zp+N2-gPzT$Tx!Gw~^eP#$8#9MvpU&}L$FtD9FnySYZDOA0 zzh-m%ThY`hY=8}p*_Q8laNxV#WO32>RR=P?64cZ@eE4UXok0gQkJ~H-JcP$Esnye1aJVVQ$eIrrgX7y(>A87AlDxmR_E1Ns}e$A-@o%YZU{iz!$FWVyl8ufkx?*bKs>mo)-OBG>D5k3#62*Pgr zBtQVt_K#rDdbhaNZgjtgyre}2#dmV|>V2G;+l=fYav>CCnLST(IMQE8)k;lKt5aO7 z)dINsTW%7nqbk=2qAG&ClTvYEffn4c$;gt)&u zc3Zavv|L+}%vMMA(9Y4ZYrze$sg_-Nkf=QC;JWVCBB&j(x0^;xega~-y*}oM0*F0B zuv2tE$pgWL3d}Ok@|2%ZcY3#YM*jp;-g-u#+h{XNhd6^K6GD`D?XZUs8HC*B~#ESU0WLWV->HOHdvepTTE#&(HWwlZD?> zEm|V%xiGixEcFAUIK!A zDbK7HrD=?bAU_zBXOVOW)Y?`Ffj})pLb<+VyJ_k4?!4zGO2?%7FTL&F+15lI|DjFP zr0&}C6TWb&elw$}(|_C3Ex>zdNfCJG^4p*tyA?`cF3K~zs=ur^bXd~6NEexn7_vl@ z2Sk%sFgz`;w$0_!up+H7I>EAQdV8y$Dm3@LGQqZN?>(|p==cot;*fXnho6a7nf?r| z6JY_qfX_|^yTn5gu zKdB`nvZs+4v8~o=FCta<2Y=gJTMY`z_w)uw`4(Ijx$NQ}T&XE&WC!YBub82^J`&B^r3{}QtGGrC-yd4zq&+leRg8BNFe@nI`b9jTLdk33V3)Awv7bUA$f$K zysTh~h5{-_F8}i8R%6iw5tW$<+94FFLf>?(4(|qo|NF~Lk=&$;r)Ub&RKXPO$6Y_R zbR5uySSM(T#_i4&Rr3Vo^I#D?jGKd?;t&vn_+kCm)2d+hA^116ErKe(rhxe2H(6Ea z-LJUiIn}YkPw!+XK(Hw&eMW-{Z4rEB5T}YgG9&VBu!zg4SN@1{?9j`4{BeIwrJ1*K zUuOgG-(YQp7uHg>R+aSp-7-gn`w3b7xZnNnst)})JS z5!;6*+fwfqbw-NVRQ;leJr#AQK3i!}!Whz|lfS1Z0m=pAaTZYF-HX9f+#n&EHMP+E zsgGH{b#~8%p2oWyFUon0xkm{$Uw4nvg1+exes-*dm`Kk25~N*T`|x@!)b6>eo` zUh7QEO8-c*YSzB~4k|uo1ewUM*;h+W_I2G0^VxnV=#Jt0|6#|(<$Vq>pgif z|F@Jy+ZH2tx0^PhUIY8sFsu>9X7bSpE<(T^gK0F09*+TJtp?wyxy+kRn|aL)!#-r^ zT_mzTFiT_8yliDQT@1_lFg_t~Ha(F|Mf^KtIGtK#IGxIn(ywWP$ALL9Rptz*zm>Yy z@?X$09kcnVdL$eU)wNc}Bb~%>XC^OXfjf^?&e1P+P{U>huXp`fAb#mBnE!5l12)n=2TeuB7tPFNp!8cwz z7anG9&W+Mcn$@N((>E@4mVC5K3I?mIWOlvRb%k2=wYuxb#}cpoD4Oyl4~7#mmwGh* zE>*}M-Bb5f8T<$5VY;s}!DmmgGN{o$fN0MnQP-bSxkMSsRvmAs0w!}AUn8~!v&ShG zwGgDdbNfGX0N6xLh(lMf^A#wosjO6^Ayx3P)Vc`8unAZdo7@pCnW4*rpS^+00d(l5 z!2K?;6FA7Nt{xNruG-nHQrL7(B>ax0g(u96WH&0M#&HX;y+zQM$cXwaI5~fYG?Gw( z`}a)bv2xvq^>7_@5|iNpY-_c=D~5(<`g!o|gIx8vGS9wdYDnc8Qn*!6t%O=7$iIV` z!-<=oV_y%x{r4klqcCPJ;lNGKYlrc|@X2Kl$P+iaUFMBPQuAp>yXp&QVoxz!GLojf7JT zGiy#bZf69{nmx*zg&eD_@xK$pGNNG)Dm#W{jP%;}O+{E{x#rvIS-pe0@5s8_zWH#5 z1MO5-V2KsD%h5{+SCciEY1un-bm4^8vO?LT-)g)!^SQ!I{omKbP<@XxsR;8&as142Q9By30y>0N8e2Tvc_leUegMJ8P` z<>D)kLJz^CBiuF?@3@8Q0V(xBGH(V;CoT0tt#SIl3gzE|-(g!cPWqHbO%$zw)ZwB}oJ1IT;mpQMofejzdYi!^QncR`8y!LyA4H$_Rt{D_0 zP1~n-)u=@dV3!!F(#`Ja_xMLHR>R&x#<9-e?mUdekB_w1cCRpUVGp-Red-Te6ia+; zw_6>LV#|Zyy^y86#rLAm;@o3g+4oL+A0MuAfg5|t`l#Hf3Cn!?EB?ZF2jS%VvcK@n zLH?$Hph{1n0OYhPTmoX}yHmB?r&q>jo49wA_sE_z$}`E4T?G>ppXjG1m&;!WAI6z{z+mz2 zK8x?q1~zB${||fp(5YQM?exx1oehk-#k~B)D~hIcIbWUKOGMa~zlP`3GmlfU*KjkM zcn8_m#*e_c*NlHL>ZOeOIRZ}RyaBk5THXNRfLX6>o2)~k-RmWd)z)P3Fr7QV&+|g` z6JI$T zG_cam6J&wOT8zNK_T@A3iNBnWW0k$Jnm1Y=#zjj<12XeC(yg5~vi8?aQ-@?~#H`te zvDZB_hv!MC>=i)ut$zICl!2y?CJ)t_SyH>r{)l&8uQ`nU+&L8fx8aZcYp({9 zakY3gEsh$2!!2FKKQWs2#24CzT_|2 zfIbR-`vRL>5CUcwL|=qB@M-A}-%5`Wp#$6zccqzNOO@5a#ae&i8~DL+3{vqF5~m}# ztcj71IeaNVD4<{6PlOQuJMeY}`KWjLa#{PR3^JC1fZaf@UYmZ>Z{ePUN@!EC1)K6%!!s&GKa1e+vkHiw4HRPNR zO8}1d?g@E5hr_}roHxW_;S+h+!*v+$q_(f5~2y}(<<(ZR;=!u_%h&6yXzEKl{Zg*{dZHS(_ zBb}&c;A)nh`b@w=(Njl9jGo#V+@ETMZA+>}EHY#Bzyp8bB}^S|_acmAX>T0=7ahUj zL)ydF(kKlFMiyn;8%ujD)Sew_3hB4WhfB9;`xD_SmH@XWmqp?94W+D<=`fDP6$O%; z)y_re&t#r=P7;UCE}Y&%|3{tw3yoQAea#5!#%n`|iFywq${A>0-9ZMLW1#+!{)s~h z?K2Y2ZHpaY?+!Mg$0im9`zmd)IazcEuaj1n_@@HNUPC=H8BOC?;_GCIuU|V3 zO~zDQL^M+^%Z_I5Ou?4;3VzB2H~ty;nU#QGfGbXXU6{^_uif@!&JWMH#|Rr5)rTR) zh7zme)NJ9j;~$eejj|;3CXZu?ajqE3!}_X?<@dr z$1<2mdfI%M01q(S6nw%ymH<{8x{xC4I)4)T*kCB<(E;J`sx`bE4EGDNFg)0v42B1} zM;u7D4ZTqYJ&|Ji0QBT1diPV?f?j$}w)*w7vq^+KP^fB^K3sk02p~Wptjo2dKQ% z+6xc9J%D13!n3^JqxSi$(V@_6OwD)h3W*??h3HA>^Oj=^N{oClm)$}(s`g$*xg(#f z<4Z*F&Db}w$g<+=twW`)gb+OC-hruUyuFQE0y z=WoX&{q?>2r;ubu4PXNszwdaIGZ7un8bp}S&fO_xMvbSiZH=4=c#CfC`PCG+`@+Oy z=+ahk$AvVO)<3qKI_snA&?XI!ofW5SuD8attB z=eAnsMWXS@C09nKYF;Y*d6B6t-kpl|aI4O|a9M6Nxz231RAXkWl;H9s2N$XtN;T;SnXdjnRsG-JM*Y8V z^|u_it-8C;F@R^ciAUzXH#mKVPbIDz1)F?8cFwd0C%ZKm=`L7l6aX(ZMe=m@aZhTJ`-G;>T z_29}VIyV_5bczDo&avTs`Z$%81fOgla?*;>i$W(%U_53#;Yr;ylgHy#D*m(;UnC>p zt{6oY(%tGMIIWT`o$^CP$lCjU><{q^tObYxkL!D{?cN z!29qmau3s_t~~D#L)+f$FWfv(W~^g!TjrebTjJd^nZm)!!Ok-?{3x?)A-HQ5H&lEF zb0r)I5qn?^ArMURb>?v|od?FnZdY`8iQR3B%O$a8TwxRD1q0bpgDdw1BFSq*Q)SCX zwiJTP`E6jvdt+nVw0Y*g=O@Dr!z5E60p_ISy#oV>Ei5H9!un_Afysez5b zckwAqzY5WtG}AuS+%(2_7}<5ifSR!b31uWi9r;mk5?_YTGHO)wnHol{yREWSJx(<; z_E%yDZW_5Z^A%_Rz>ee9ufupy>L2)upBnYCpB(zJ)T{X0GE^J@3Mfp<`+nQUrB@x2 zK1038U1^SeLf?8o?@$!s-431i_dW^Txjqf}m}`A6>Y5pv3vhO8*6d2%hZRp*EpZ$G>U_av~Rn z72$`D*}oS}omYS#hrciUxETDnyrQA>!}OJg3~a9DOSSwX^BOZdo0*Lz@0r7oxomCX zOr{w^*~G~0|FkX2t|*2{aV8W4U*dJcyKZ*(aLMW9LpQm|Ly#~hog|2UlDDa-&pcW&URc`Fuzr?1P4uFMn(Yo&+j+20Jcd0h;L9dzt1wi zX*a)V3?$6&dgATq`isS4l_CIDIRYSXHq@}kXY>1wZO^Z*|5yqJmS6wtxo#zKA-H%M z^ZTB>pCSd5(V_WH&*g8yDZhbAgc~&yb*}tAcw}2nyh&kR@?!fVh@9R=+B^ zmE6pVAbxZ9*vRf|FXr%VD|t>Psi}k|^v7_TxxEXh5j|0t7vS6Jr(FMo<96)B>N+@D za|&g?qxFawUtvtJZQ&L~!I*y`mO6ZHkY7xa$8Rii5c~-8MA)mr90o7*hsk6%(D1wF zd9Q6B>Nzzz3eeM%{0m%Ic7nNT$axW7b3snpm8aF8)-vBk6=F%;0@3t3<^nZn z?o?>*O{{L&+aCSMv5%7ktY*=gMt^?f$RocNx$@$R@$_9nn0qJq;gYQjY>Tqee<&V^_$!^q^ed38=kHv`d@XyhQqg0$U}{?Ra#0Ka!k$fRdGd(-kx+7_V?p#!IaBL9~@R*RQ_q zuHMm~4ezlo3IA7KMwjO2hS|1|?Y3p!Es8pB9YoDl2jh$I`@=$mcpv{qZvEJ*RSrrWVGVcTwA{C+ck=?DvhLP0gXZ{KknzNO)+56$neOa)y(=!q-NJW#)1+KxrE8R$5sewSQGm ztJnSlG$nZET_l5UyQNnvY?~DT&a&+4m{?E+t0TqdThk90(|Jf+|9EJu;O)%@?P7th zLVbxQK91TV{g~6)T16cn)jcLS)O+JrBf#W0MW4@aik|+Q==ZSK*sNreU_JW?1KA5r z#}sCzZS!_s#~-Po?xU{K_`yDGxsHI#^Qjt5X52H$cy(FZ=L71!`qgcpZ^zFY(KfX` z*bw*}v@)Sb>Qv@uNToX*0cl}#vz-bw^Xr4z=^aXH|AHu<5w#IjLLcKdnj<+PH$OK# z`Iv2!fwAN$&|(4t-;?pv{N%vOJb^`~N8kBA`p);I?<};9XN3QbCy8G=W?*HUJv20- zB%1)<_=O;QOEUj4^zQL$Iu(3`c8&cvmY5o;Pc&C47LoKlc8xA5EDis)_>n#|5P6iy z0)!Z#-sPc&g<*3ADOc^{k2$X*jzM5m5c@v-mK~+`0T4EIWm+WN2S>`n1MQ|#rCVOK zQm>IUx6~gqv@*WE@#H(ZEchoh;U5}A@R;g@m$Z$mDg}n=1$^MArdKs2o`|-+`FV8H zKWr6ba9C*-ypsgU)MUNEB=PeWiWTu;h8zvC+YUm`|7c0=<<#=1X85l*&CGXvKz-sJ zw(E+%en*%PzqdZ|R_6D$A8G1fh;dJ;ErSSDoEg|wJFv8$#lH}MwIzxts@T8rL)p7A z&V}%S*!Q-;Bc2G%rmqo4|C9}vmLB3G6vaF);)j!kbN&5YtA#fyr!A}If9&t&W<0`xG3Z=pMk?p=9QSDU;R>0MM5U&R zcs0vnQA-E1CgNtFo+yEF(Z~&9BhAu)T{3zpRaWHM*+1XT!R}Fp;;#)m+ziE&ouT;N z@Z$no@z@2d&@SQ)fQ=3@Q z*>jG&x$+=FTGS<$+Mb72?QZtoZJ{Idz8&u~>MM6~2Us84DDt^TnEv^cxIq9nR6YSmHu%QE*RZMIBjCiG2KjXT}oy{Gs-Ml#kT}`k4 zq}erTC!Wn@2o7E@xgZtG(NME)V0C|0`Ap2V{P9P5H@M~!0j3^QP)L+8P<&gvIc-O> zpP|Mf1{GH>LqJ?GCrZ3) zE>Y2C^>Z`;l07TF8&Sn_89sA+D6-?U(6J`;AZcteZf(+ zTTZ)wzhCWI7!?YO@~&l{TC_%CfI9w{C)d&gMt>f2)5BrP&)D%wcPdei$_jK5>@e8@ zyjcU0q%7p0!>@~xGRqA(iMJ|gGCr~*Hw6d3WbUEXq2MP$8MkCA`5A(Q`bgjUUShgr zNOxrD=>|~jj zj!4ho`w)IiNJOBPA5%pP{nfrmrP_5`NcEu`nplQwvG zlE9EF4IXF1W`u~G{w4%f`@QtPhi(Ng?Jbo6Lu7Jdl|#l4?bgoQoX;MokVTK+v{?Nv zWA^T?Y}IHI%b4-1VX*+rVx+RiWRUtjEC;`-6j>T0MXgIhk>HxY2&@`-k=#wYXDZFf-BbHt?K8Qb zI4n=XnSe*m_y!P}(s|b(=O~m#llR(5)({_i1WnwToBfoV%wRp<&{Csb33-dhUcDBd zDs*n3&#rQ8rP&4k=(Jb2I$acxd&87ktGwMIn+e=^hM&TOMK&$%2GUy5(n`FJYd(R* zI1cp$w^W5r$y4nlwD>?P18{?2G#U)VWrlvq)4Tq>VU9rPcMk8$>*816X~vi97jnFe zU*+jte=6TdA^lp%$!q3a-w9|_dC&@(tY7l#Nsr2*DsF zW?BL=MQ>b^Jx(whUMild`*~0;gWLK(+Y)lrUaC@0d(;l2D4__C)|+yk1yNZsm8W<8 ziJi1s7l_iJUv0<;+%dqSiZXi@%X<*ZG78172q(~3W5iYEE~C*<)l0~0ed1$X3s4?> z^JgF)w8FWM%N!ob(LXj<*9C{PQvefCRQ7Ny35SZ`DP%q2HAu&d9C3sI7|&rafd&Af zt5$0$-5qjr>-^-FW`^~cNgctFcW*=_X&IGeQT`bBc?+S#xVMY}Dkb2zB@`5iFE`n1 zUj@`>xFar_O!@8rHT~$%pvyP*EU2m;e#`Ysxr%Hai`FI%W~d1ZUjIm!cxMyaD-~%_ zAKFNCKGP3vJLT!U$P&GWDOhe>7eq6B=KP7q?6rF^1x=x0Me^>-T2kdr_+<98ShAY+ zw@XR<5~cLeVL#dGs}$x@-eexN#2F5#*g^c{jJZlm#3b?EGmq!=gZz`{p9VH&xtG-7 zvYRw>LW;M%_S39Ccq6qtLX@1bOdv_lT&^ENN_yyZRq+LAD>xTF)$%@#8LlK-)pbR_ zd$1Vato*I6{IZt!GqbV`P-tcyc=yJS3bsshU0EcVMP5X%m@}ubp%T3N5y81?@F#D1 zDaKDl%QLYW(p&Hrl68u6(~*|>dT!ElRm-0RIkiMz`;BIgNi)?yul>6kcQ~fCTaAh6 z6y!Vjx$?*7$}ekKoA!Cj>5niUSi`E|r4kndvk484GcfM3BO#szNaV|=SaJl#%!z_{ zW1n(c6bsEO$3xW{#xXjIi57J6t9_(u2}7ebs#-I`iSPQE>Pa&nB%beW?wD5MDesX_ zeXhT)x==P{hsI=cs*+lQ?+_6}pje?Euz0NMnx2+}@FHy4FIEHDC8vdhm24^cHM3kF zEKIMT+`+%Bi{>YmRyhUzEKCM|qA3zfOs?`-9Sjz=nj2)M2r^-hoIm3R{I;EqGIb3u z7C1{1^qVl7T(I#bueIKtOJ(JowWzl2gR~CM<`!7TmfBmVRPKE1#7YkpX~PQ1lU}<{ z$goL$@DjI4T`px0136Y^>5^4UG!R2*6|msK;Dp=(@s4l*3)`P||MU0Q@)JWAR%G@V zH*&3_&$cb)5DH;fy!J|MlL9F>s4j5|QI7b_L}I}fh&3XQ<9=!y_Ks^XRGun(2fpkY z-ClT#w!CfQukj<=|Fyl{6gO^ow`o{Mac|1k#(rP2g~6Zzk9;yHFN1ZI z;uE|+7}qQ_gO1v_yq4A~6;d<{3nl}Ly%u|JU1^?D~mAI^}1)-_> zN5E6Wc!|;niBW;84K<&&q>ZIfSq!2S@Y_)Hj@SO7=nj%PAa}J8pWZ%xU24Ufc3Nl& z-&6ESit2Wg7?V&TMF}H^?JfHUt{T||Q_8Iu-9S>mv}k{MIQz?+ZGU+!wp9evHx$LN zt*`Xz|H|wRc|234n_7fR#0Rj-KS_xR6xaY+K1H@c~5e+(TmY;ua0>R0*-~4OtQ&SbeE5f## z_Fh>KcDu>j4FtFu;XuB|YwxDQf<{|rWk4WggiV2ezHM4@`%3%;HUg?bpq?q9)-w2| z{(;Z2VUJ2uOE0xwzaDbQe*IGJ-=MXj8w&R8*#;IoQ6qrouQLbak zwE6^a{bJCbqX`gJ1l1z|?gT?lZdfhCp4D94!1xS%G8OqYIsc~6U#M);Ko#;ODJFJY~YW(%EIHe9X~fHaI(Q1dL(R! z4)1LrigQql5?~EzbgOZqdYhx=A$1HULW8s?h0tTNXR6&@*lFs)55M8`56!jP{BNLcl{KNj z+yTafDfg(19cPP%U$y4G+AAzG*~-W~c1T#JHdp3@7hTQE1V9@{X;@~CfM;zzAC{S6 z;0*N;>*?RWuAV|NUBTa3!F!!ZkNj0-4Zqg1&(`;oAk>OT_luWsF%`IY2@&fdfd@pU zPa~P@W!XWP3;`_IffU7XbQdE?W*>_RfxWDulnDAczGJ7UnCTL$(#{Br%E(UI6n~~c z%x76FQ4pTi>!=1^-)c2OWu)VhULmEdG|__hC?9geQN?t7!!yk(}R*P+-;rW5e;Y zkydvui65Hf5YGR8ld-cpt8FoA0={3FmbWv9XGV10WOm&NkHioIN0`5qgcA3vY{=}59ivIhT1*^y=AzVdQFE{r?7SZ+gWZu9xxyQ)T+G-bn zM(fF`b5vKbst!82XjPrD{EJrAR;$PB=+r>;&*Rq+Mxyg#{;>_)kx$~*x#YYdC2rU0 zCs^wW=w*Suz3sipb&2Pgr>Jfs0X}0>1CR4B>=j{RA63)|vRt(w0$73%f58EdREzwP zFi!a{-XuyCj)7x{Hwo$RUA)O%c(QntL}&qrM|O=W^&VNS{c2x$FyuYm`5i;zf-6*u zOerwc&A$P}5-I!y+b2bK68I&@+Cno)d4DqrtES(sA(5`!zV#Eeg71mp)u$gmr{#Yg zonUlG_6p3=Lt5QmxT=lQ*EK>Iy2L3hMY6M|ZC1|D zSd+lAu*uOyOIt}s@e#rN|SzYM?=5Dkm_|~Dw0e?dsRsZtq zuaTWDp+o#Uy8`R;Sn3Lmw;}P~*5myFJmmYxe`DWZyr1|8k)ppQuW2{bjW_5&-Uf^* zN7BKvf)1Lzy-xD>G!s+S1c#q#4qB29Uy4GJaW@>#Dma}}Wue5q9s!DIWvxt%5Dok< zmbZ)iIYpY04>^~H`1h;K!TG^>PCn%O0`dDA@qq+kptqOs9aXshexmoO*3T`$ZifIy zv5mqSztsL?-&2s*FSGyXBlFvdY80BySXH|i@VO>Z@nBR%;`9zJJC}5}F2UPDc&?O9 zagnbd2fRvb>(VcKFW9x7#g)KMVT__?gwf#H=a3^HgMa5DqtI+ORVE+gxK=Gx{!kI{ z(gPKcKa_<(Yx`GlkLRRj*?AYSSRj(KTwv<(X6U(mPNvojF1D>C(_hqB5`qu@f!7bh!)&!FvV>hs?R)J%*`E~5Y?hN8rp0k{uXg(4 z&tv<%Nac+wP}f`oLDHX0ccx~muA9f;OVGb*0P#=OC-u%mJjN}!BQ^LFc7?-2LjH@avQ=wnR70H)Tmeu2jWk!c(YV&23W#7%=VUVl) z9!pC&$9&DrIe+`1pD>@J0j3!5|lI>-*uI> z+-{mej0x7g%6S+V7sgik?yX-UA*kIEkABlIN3Cb4p#VzK#tbA`5E=LTt!fHO3G6u_ z5662`FG7ys@rg{DZQBBnh_2{7RSII0(2;>o)^B#T*DRe!4@zJTh(pBeCC@H*@pg5~ zUz~Ed!%T_anKMDEdU%~Q0qeM=#RnF{MUvqC0`nKHLBUsryj@$} zT5J`12?>mA^h1Jsl$S*U%5+)T{%f(U>C3G}wJqLbq@XsU^F{Ji&#uS+8ub6kdc5@P zAtGnBGz^He()0k-YX#Fr{gXcr8BM0<7;9eUZ(6bUi_v7qGJq9LKD?YCf7nug;kp5r zeEyfqS3c6IYHB`_d&Oigb%L@tz3T71Hd9+9kD#66XcE?va<$-gn;vk-7>x)(1`ZBjW2`X4PmL3-yQoUR)3gx#&P83QlvSucxD*}1-C#3Ge36nA2iBW zUAoTdKTjH8yJKt8IPAxg&fFGje-b%0c=~TeB=VWA{}hS5Ni}VYMD8FT(JYC)3v3l7 zLt1icTvU>Kj2@~q838I;CCWjj{r01hDkCa6T~sonf>23RK+z5)wpOMybDpZ7E<$;% z2&GjkLb=bau0d$!&|KsCGINADjlK=`uXhx4x(J=sPlr@PmSPr=C{4dYlI6xBqIvz} z0_Sy*TqAqNJ1(&_0>6a=GeT-Pr&~@o^tmW6{VDh7A315-w=ci=>MKz8Iht8E?J})v zPFm6rqnV<&KK=bAcjfZ>uY6af!Ve|+EGR#60;>lu>*Cx8 z|5K?Eohjb=568DgtHS`m4?AwZ{bodEG$XZ|ky;hZ@-0j%G4|Y0`-riv>0qT}=u{C+ z$8PW~UyecY6`|~k3?7xQ2X~$9W&q+9)<*~QQFaCjqzd&e$Lj}l3i6LRAehVG`+s$F zQOML@v$U-t?%)le6aM!8f+MfK_}iCVFlm}kR1ra5q1u7`2*d9#Ui7yO$Zv09g#fZ> zmVMM-sj$68aF6tZ`{4&`945&KP%IP;H#i2Nr(k%M*73sO?Y52Keg0T6&(3mTur!BV z8j$)F%DJKF^0#mN|Hxo}-}oP4u+^V4;UNY34+^|H&^v%uE1>=78LXF*8y>v1Vec)O zQS9&N{K^;cQ;wb#^HV%8;iu8dp5Ka}#!_<&_-V|m-w;hc(#0^MHIImD{0n|s_Qy}~ zq+MEE*74JkYe%juyfYO4H{vUWl_qair6E6cX6r?cpZcYkVAcfQQDmpG{51S5%o{L5 za)|Yg6!BA#Hsq(T;Evp%pMFrSx}YJVnFU1Q|4!9N&DffszM7JMT}WQHQaP@DHp@?~ zGe+01o-fMtpU^vwR81jD7wH`jy-5bNLb7f!Uh4-ko27K2-Z5ITl<2p9VN>?opMH~< z(>rQaFiXENyKF=6usZ*Z-m&7u0=>iP6b+~DEDircz2k&=8d10d%hyI|%393u=$L`2p5dp#>Q>^CQ_!*KnrfaZt%vK1s z+HXJTsEk+cSgaUaYX~6tRj4c=b%^a|E>Qi3{&2dZ#E7hZL8=15LuFugd&rfoi|1G( z$PAZ1+r481E7yW5wHD}=zINaW8w!ztZ!O>$4Ol(K>9+ri$o`;ZQ}VFz9wCS&KwB`! zU{YNS6XMqlkcq87OlE6*w0@6%frSbF3ZDY!CZqy?N+eZwBI&hF;C;7)n)nx7WUf@7AjK+i!PP@lCZG)|1B(T zt0{(swLq`*^_PalnuiP)U6&TXqRU{>xD_liL$?8o6&e?<2KogS_S+8@DpLrH9+mx) zu(107Ei76`7sJ9@pjZ0(OT%L2gAOk)DS*XtgGKXJuvoS4Hek`GanWj-ND{EH-+r)A znL=2Us4TGH)OSC+L1c#<-SCra4HLzKwQY?EAp7Ns$36wb!-_fza_RBKP_ee?pQ`xM zP+9VTIM$y`*ACTUdMW}!B$1@EdV3vTm!v}PB%o^OP9c!q(_!C-+7>xg_N8(z3v+Bl zIdCcG>tW6c0hAnvRLVI%%$XPFxTU9@{lc8tVa`4JHJ&>l%$XkM%*f@W@7LHulNs$y z&gDEG=8O)%@m-GB{_+}*M&3_u`Wc?`CWlEgI}g}tVtylJ-MRg@M*gXk9lO~q0RoVD z?kgaLO}MN8(YA!G21lE{_WSIh$@<_YLqFNl);IX-H|i4I^K_3vz4x2GD_`=HgC3d$ zp2GO1N*9={QyeK%o^Pw1N&~?!-n5O0KYX;Pv}FVuiFm^B>^_auS|tSIx9aAxN;z12 zI@xX>yj7W9Ny&*A51sP=qkeEp{g=}ZzQ7p1`v#C;+q!|KMiy@^uX15H#lEaDeC^mF zC7q`UjynTrP4~)gIjBiU;Q*0NY~9nPt)~BX;-EYIcIbWi-WQ31f5yo(H%GOaBglz1 z-#ROz&6cyAe&8TcS-wL_=g+zDZ2>rL9X*HC~7xc_1x2_R-m`D*sZg?a3Gw0YjJI6U|{CvtON}O2^IDcII z{skrRmw2eMx+;!j??EVaBeZ%_~J5bSRJxY1s2axb;K#D73)wH~JO5YfYT zc_`Pz`8<^9;Vd3{HKG^~J$e|+!*V^Gz(bcFM)ELI4^=$0>frz$rs`o&9vbzqGY`!? zcpb|`$WTYR)DtEfO7(6q=Q_DwII&w;B=HzHYs$-m-)v7XXb{G}0AVB{gD_tE^;8uc zdoQ$CkuOwfb}69_P6e%kCe~B>o64lpCh%E}H1nH&&YI8K5@(qSFFij@G_FO-TIxvO zolOisuhr)U)SPNC%Y^aF^>uAqIGnf|?*_GJoQGQG@ImI=A3N&_iA{9AC-3BT$3#bco^cPj1aKROB`q7fXW15(@z%X5JbMZQb;qqGruXY2U) zRN~^_TSFZyTkg*M(fXhF|L|{oZwB3pC7x~26}QX$#0!36gYJ__;b$1M3A?!rtt5V! z?l6GcH9OzK!>QW^(bwk%-IChph#^Km+jFTW^7F0`5B*aW9QdAy=D^CnGVY3Z2Aop2 zHzTV72~B_v&HnDnR{dh1c>W~EXPN{){TcGt_g0a zRR_W@BMtg;8En*qjn7TkK7Vk-$_+iZ=S5Li2QaVWX%+Nd+fe!vw z3pB$9Rtg-Vx{%v3GU;ONy{v5H%BbQAO|r7K5poeKJX=bmGnL`_kOZM*h+1JCgH_CX0QE7K59sgkQ1Ijv*^`La>3|P5V-P|Wq6@g`ol8*ygs&T_#sQBQ5?CZ*FT6Xh z;yrUq-L0oEL3a8je!LbHrg!4I#u6I>1xRzKgzH%o-f?mi2lYO$6pTV=+=aiRpF-Fz z!6^^`^CbjTt_toUBXflg7wJmnVVekh5MB8B04Hs2AMGA*^Dea7k3->Hv3z37dBKH` zs5T2poIIDWKFAClxpE}Ix<;Iu8n{sqC9o1f)o}@18Q%#w=}g7<4g-j#uMrBZjEe^P z`I@I*5cbTZEtVplDjql}T#37M;D_eQV>}2#YBLC+jz*+5Q z44KMtF-$_llFrc?oj^#u+CVJX=T6?VCG(7`q+XrEMMT+?Yt(ZA0sqzc;yr%r{HfI; zU9iIOE_cZIv%7Z)eL@CDySeRwKYYz_Z!42IuUUsX+DE}|Mq2nJR#v>SqR?qg7>Tq5 zB_%`%no50TGqFGTASMLWjd2W1x%go68~J~DdlUF7t84!|kpNMnCn(jZC{a-pMGe+k zQoNc7k>}_+5bH!8(>fGqDkq3l0Zk$vkB8Fswza)pOM81;ZE2;pRn!{7l;D7ZBaX!R zIUJEF0zr`czrVGgGez`m-}nD{`DmW!>}QW_uW7Hn_S$&0R74UyCY6Tc8`8(Nbxh}; zLA>EQ2-C+6hgB5e7L`f4{nzEh%kbTYSUu_&5wutd-$e4 zygdIBz7?YAn>q7-UKq`+h59otG@%Efke+M&Wjq-a=}mD@s+UvK8h~OWi46}YZlF3k z{i@$+HO9)?I&M5N^(58EAN*G2Dz)#&OSbmV1V8Q*mhz7OCCN@OM8{lSPB0nZ0{NHd zVj~c=+ahuhpsv&=Ahn#15-Lh?nG~*Gmg7x?xw9Oh);Cn43cf?M#Q}KYvhij3=7q)) z(0yb@HvV9U8!}w@u{E57NeS{JxP4w5=tce@j2OE0%H}B{=NMr?Y8)MqlX}oiWX;<& zp#e;qu{(4vuG7*onc{tJR=m$0svl<7TRiRHbbYRJC!e9-P{X#&ahpRT@sn-( zgwWz82p(vNrWQC|5`};oI!%;5TL5N1;8>4Lm!RXH7=!E3)mH9Yo zArKLr3V}%0*ko|jxVxIVc!AJ#-Gumw-IA6BoO#v49U%M&hVi05^I(N+StqoE^1;NH z`QX>iGfbS2Jh5BKz=R~xV-tij2}aqrzogwBqdJ0WXWpM)jMs9gwG~ZAj$rd$R9z^d ziFqCMM0#Wn=A6IdxS{svxi}%=JO%`B{LiT&EbSPws_h}D3-1}8EwM|C#FtGMvcjAm z2iD>r#3z``t4?Uz>511mKjUnw3vU}LckX_n>IhMCs^O(tsfdBe9MGYscty_sFMl1@ z7^^G?>ZK;J$&=bp+oMi+&FDF+n}3)akW>!b`_CFNx%pDPqby<{YMztxO&`iB=jAOmx+{MSeQ3PKI{pdjiqD834HKy^pqpd{3Cv%7J8;$6(mJpe$$rE`uNH*U4&?Pxcbw4!dez;-P2HN{g*NS6APIC zvoQayUa^?}Rw7A-S}$OZATCKME*1GRG-9p9m*>se3e*naSdMNZ|MOMspET)M_$EnN)2n|VPpDo=&lZ;qEG2p;T40oIpt(*RE ztN@N$RgnS~$6<=~rIF-_HIevtIUR#Eu+<_6Xo_z*IkF2w`;2`v@*&)EGS`i3qR(1#Pq)Gm;9GN1(dw_ev$YON>Q@8Vu$lLVs^HsiuYTEK_8$z=aC_?_c>E;8iAbVHr1KvPj2EwvL#kC-TA!snhw9bCb1R zxDLqPa4tPC?`(FML7Y)fM7gz%J>R~NYJ$wYIICycaA4BHT|B%|uGt4@NOhVrPfpnf z;FN8rsW=#h+nmg}EXFVYe&8k%e3D1@gICMcgs1{5N|D33gI_#fi>4EiUOJ=t-Mclg z0GL>F!w6xwf(T%l8MJD^`6C#y8IcdOviXqnA6!gznb~d7?0(_GX*=&Zy9Y>R@dtb= zWm2=h3)YXNTIa-9M(Eab6w-0w_={ng@V^YPim1u|l})#cevm<|HGI%NAy&7&2Z-hK zLx|POGYg9hVg)`AhFf=)2y3Jn=qV$W`#s%{6yqZA$BxROa|X}U9fxPR3yklkbY{n3 z74Jbm=INDwEC`+*JpCSRCeUM*3H+x-ujTs5Z1m{Ku3)#GWb=9IAKOm)lPvwv8V*dHHFz{J0Yr35XAM*)Sk-?AbqO2EV=GZlxe4{*@IjXm zXx&u_w$!LuVU3<#93Ni?+Kv+{Pxmh&Y_M>Bvdm362WWN@CWGuw`x3shs0)0{R&t`CDlK0cO?8$$n9Mv)<~yhZ3$qt8P1l6avQ#(m z_8~DR-$~uWuT12EsR9oCkn=Hjp6Z+BV~!~=IULohKHg_8>aU?il%&VF^`}&hNtol{ zHxfdLTdk@@+||QrAKd{-F==;j5k+4KwWLp}z1AWypG{f0ln-*7RezpWk_# zJkq;l?3?5bFiRXL%)48c19dz{W_qV?DKu zJ?~=)q7v*qlQZA3l%UpiyAQE5xc*Qf(_ao(ugw^IhJ+bKr4A1+7-|-u`C;8}h)w1X zynqi`i%;*kcyD@64jOhIRH((WbsUwH2&{CO&c|-xCQKSy8?NpO>_M@S;lwoBF+*bm zO<6`O0viambyyXlcn5$=j}H1UV>e4p{fWe#^d?&7* zy_OFvnJDyA%&G0i{qFqCrc$5Z`z<*{qDDl%phkF!sTd9k%Zrk5@b|8H8GTv?wPP)xU|CPg>DD9vx838WMQvW2t=h=H8IPc?! z1m{9k)zvA@PO4K^`h7h04-u_THXWJ%2s4kN zL%PS9)dzZ_tz!H?&g&ma=zxbVQ0sQ}zGWHbNEJW4n_u;JmW?13?K`{%vfhRzS>N^DypFfZ`dmmLFMqSJ<6Zm~ zDwjK!LyX~nC?y$ig5-QRanLn(s1MK-PDo}h9WWi4Da&A0X5yt8%v0Bl8U~TyaKg}s zGpj$-?n?&2t45e6AnebQ%Y_{JXUYG*?BZ2J#0*8KP7Wc!o#R+caN( z{pVe3pl|@%45<`%(kMc0Cjgg}{_HGZ$I$)DSYsE&2e4?`7jw&$mbC;fTg~tyiNot3 z=Q#^AXL>*6EAr-i?1hpyaCa{OF1!{)=Ne12lkV7i5~7M|!BAfGs#n7LR|lI4T9}OX zqkEc&c_d@@|9fEeuMbUFk4x@v&=i398dq=geca~}i?XwT@5nM-?12Sx(4+F_y=vVK zI$asY#k zFK2`1z{fS%%$P&Lm~GOy=6CV>;iV#SbSzM8Tm8K1~)i6#=o@8=At7r(T^2Q^nI!m<5)-Y{OFkP zSHv!t)M?sFks-Qlz6l=0nZF_FlcMntatX0xcMcRto56q9Cm>J|4RJ%-aBw{{a4~YXr(269c=>c z?zo{$-BO^XvriJYA&>EvCVL^{WU+~y5yJcTwe{x_`%YC)kINt3IFiwCy?;kvPpGc{ zulo8vH)Qp7^lA>2iyeN6zV2o8_1ej$aGDZ=n1a~ECQMH={oho1#F00kDkl{*tSVGK z|DU7ekQQSbF)OB^mZlq zyB><(UP6|PhTSBUqtUNF!!&FWSsuIXhwuM_ep-9L|6ls)@csTT=%;_|40MtI3;OAt ziZAM?yZ!wCoqoEEc_`3Ni}4LLI(PbMC*KS8(^=onWeBzXp6~4qTC|k#CY7k?XwfqI zD4X-daS}aA8I{4wDWhD`=9E#35A+3PwB`(veStC>Hf8ifbroflUnrxi_!TIl&-2<} z8U5C|dA)2s4_?%MntF*v#Cmxez04_}>i1}+^wZrkY8%SuBe(r~%4eMX1grFzsauzQsq*=!LH~mCdHYC>L3+HYyZfreegpV-l+Ry;q7O#Egx3c^;x?h zQJfc%c`2gvg{#?SU#1OlFL518$M|x`g9o5UF0jOWxBk0`?fEwvHGw1tSOg-x546{rz{@)F=Btt5kA#hwW#5|b%&BR4ABfRW=%25m&F^XFLB8TiYTtW`&pr|m)Vq>}s@ z)q&RHRTGn$Ed%JHJa&+bXxdXy_m=w;DJ~O07(r(Ox_GI^J5)Sb{bj`dQ9+*5lEdCn zuOii-$MzzFHvZ{BS@78_PHX3Cp#RiNa7mSM&nS173PwI%D@O^d$Ya|!h+MDnLloR_ zmRnbtG4-b+HnYkeWHYO*qVWE!TR+sc04|l1wb-V%D~uz;6N6zSaio{H5+OX_ogvh9 zCf|@00aDIynzd_j6e0jDAmCjt8>(AH7&;J&AQqeV(uttnyp-55t!|r3>+g&f-BFq* zASP?Rj|7L~2MCm{K|NA-ke=KpU5sTX=tL6CS7^)4{x=hHw#SDGoLYx!(lDx{fn$}c z-r0&}W`kcbm(Nfq=1W2J#umJiatH!Dh5u<8Ygn7b zmGMUZWYt+0TnxC~*4wPSy)^%q>8#01W;LIcBonU!VpI zY4=g40H*$pS8nP{AC-x3*402R^0h2i)KCRoz`R4D_x-nS#%FLX%RuK%Eo3Y}aCJ%a zC~wl#jr=KGpUZz+70V69w!~UT%(CCIb7`Rj9p)TWyE)U^i{&4VMgSgB&1y9{FV-&|ZJ=aW+J)-J=IC)WvkntyMQZkai~ zxcNRUU&b;&>3glO{t@$Np=H^WEcqSY4Xn2tU<_lp&lkCKJPv<5Leus$B|~(!%c-KX20$n> zi7fmZPHNb1quU!I~%{vs*x-QD6{oBp@hA ztr_PyQn>>aL==R7 zc1u?!H(8cqI2)*o!;cWYVD9CR$G0I6|CVVGKHpR0#LnnxX=g)aQTk?k&CGF>GU%hj zm`46@*=DnhC0fC!hgsiqvn=*>fWq-N53avclk9XDbh%gkDW7F}oWn4hgFalJU_|Si z#kw>vqx0q^H>Y{_NH)ACX=>mzheS9M5Uu@``-y=%;i9Ff)ug!qLd&vB`=aHb_;8(= zIriUST;#`awfIAKL`EEh<{^fz>*!7$>t>|Ju_S~*s<(x1s~}OEx|J4TKZ5lO481_AAB3@uxu>+-ML{ydY#GiCr(_XKoQUC6 ze$_m!=yf9@XCZ1eFgB6Ap%@Io+BJkQS0nNZC3dyegc8&Nd3`28f5`a*uM8xm3Mxw(QZCb46g|1TZU znB_n0c7RWOebX3i4xb1Sd=UV+K-g4ZIS@W=uG@OTm;o|%fb#efg7TFn zDKc1cM$k!6D1#-e_hQ3j<7h6;(~biD`8Q}1Lim1YVq_IY;FPl^k(Cnslq$gTNh{Kp z?V)M-OLC{TL(rE_7JTwh2Csw|SBG%V>j4?P41Aa7E_JKiA9xlz^pPgK$k1Ql*!iAB4F@7{BTJo2A-f55gqXejBzavA1_PxF=evZnbEjdMc2vR$sd7 z3pAse)~r+5=-`{2#Pm)5USy^`TA%k6%J_t@rv>HX7gFbf|w*n&d-^UnuFe*EmCi-$%+4|FfmM!0_`1_L&M zJr_tgl5nnJT)kY%)yr7BFEq}%>l&L7Vs;qVHZmbxC6Jkd=8E(bR$+i{V?lcCJfkFVJ)fmY65*)^p*}M_+d76|pO> zldplk*n*npwf~{{o5ve#EqNV0$SZSoGfPV*%nB!6&~E=W5Wq{|sYn)Q)~lnRvz+T9 zc7y-1lH3CZ)}Vm91;WZCTE0AJD5MpP7Vf$MQ7e0`r3k%NLL(U+oO{KIK=x;Al`xpTx@*}XPGVwkA95m@M>S?d;&T_jCC|F zkbYdjJowum1Pjt2Rg6mNOf9bMw9S97Guq1ai$Nopm9sbW1d#6@X!@-%y+ZB#T%vVVl?U0_xR)Z!Ixq1>+7>xR;#<$ z3PMx+4t=?Vm@b1=O>Thu8LGO0`Q_%{4`s8v zyd?RB7u*T%&8&yoenXup{Skv|RK=jM z&_?(;nOx$>Q}hhhnxSb2Tj%Nd8^=4Cx$FVVtPY8=397_~Z~|{8!p2zr&J%2%e^5G$ zy?Lx6Zz_XMqVE3ma&f--K^R2@k|vps&ZFaUO=xYUhnnlrJk$GU^b?#JDkH?dQnpZQ zlkyuY9!+rRDxXlWUwP!p0Wl_pibWIcV#y6o6cF;xP} zR5eDK{g5VhZom{H5*B2NBz|XwwBEo)jrGO>;7X=fms_u}fEvV4$2RqD>`Ys3oE+Gu z8Z!D^1_M~+gDyl2ycb5Q8 zHnylaqgH+VL3TpmKB6NKN`x2aR872Mi^}rzP}|7Q-~;-Tt7LvqNt0-&+<E|BVjd3&=Dxu+16TzhzguoY)UO{-UhMdulo&*XtTyZrAYCouPe!`F$#-pt9scdl zK!62zs~|Tb^DrIaVj7VWXz9sI8M}bOJ?o`c2|-R(xNhwm|mp~ zTI9kC!Yl{;$Y-z_%D+13k)>t$Q7;+rlZx$6nd0UGEmt>DErf`&ed$qUAdV_iK4&>{U8u=);qsshlnJ^}_Z2g;P%Hzy z%p${)SAVXB-^4WKoT3kI5^`%YlFsge6xzemSR@LHa0Ef#>GK;eR&Iw|PM?3vQfz}u z$HEAzbO35+^O#f>XO}bhozVyPRiGr(4cErf{_iQO>t*YxQWeNO`4iop2D`kIZ>jhA z5il zpxDX&xL4X$CmoRR%?uIzL*QVDBcR7Ca=72;P{xf*4MQK7;Bq*?e#rz_80=}4fdtpZ zDcD`m;4&K`ra9QhfOjl8%JB|YAmAMWw)RC1w|$YlOcd;&>v6C@g4@F<{w{ClQSBOQ zmDtZbGn`riNM0t0btU_w#H+zT{jeR98p-AJF9cl<=S}3*D5WWZI3F{%91?}Gn-s%l z^Si_Na_iXADhj9fR-Nw4TDIlu7)iOF@KdJ;nfh+}Pqo8Qmp#ybtPZK~KUJ$zS!SB*-m0Go7l{y0 zTen5%)E6QLhwSR)I|tn{IHjwiv$mVKpHlBbxUYLA XPt@Y**0rNWf8l< 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�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

M>p(2&Czj4|Z8Ztnz%+6qYD`7T+uYh{N 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 z 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�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ⅆXxF{|qIu2S=mUMd;Prz!}gS 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

GQosqFr@X5C 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 RHuD>9^d|#H7^TG-7FKF}Ch{66 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

yg)&<-fNb*xek3!FId+!i75?~UW+ zyf*X=j$510B$ZEE4pCbti8w=w#e@8qpkzfZA}I7A(VpYONMO9|r=e5J*~1!T#wss0 zl2@S-%#B@QBrlh%9$0REkx=PI`()kF$-=p<_Qkn|2zm&`a`d6-*Y2tNfpOl;o(1ee z`6Tyag&12Ey~FS}p~=gPwSs=1%;(He77zgtcJj*d4|XBES529(xQu^sq~r>?|y1S2aM zl)4!$x$|1qT0XfNPh@RA(p`H%OPJO*7&nORNAO*E(yP!GD&%%8g`#V&n5F@ z$MfD)biYd1VKn{?Z-nltR9y2!E6l3hq5yP`z~fMKqYl$%0d$(=elrjI6upZPVBfHK zLEkqMqPocC>EVBg?Z7r{@1P|6m7cnm#H|~w_NvN!CKI$r4uqCOn8MYP))Xko8O6>6 zG_8P@%sk>AEff7e=fm_2$U_WCb3+f+^z2j6EGGLl>Xz*T#4nmz>&#K8?y2T293NmO zgbYaxDRvy7hZ06A-|Ez&a`10-o5R2aGF9dnBf&|ix#!oMZX|kx3~ELh z$zwS@SNkJIg3=AUL;M`pm$>NEJ#f*-;j!S;OnLKSjN~HF6F94ksmV|!DnEY3K=R5V6Y(M%)p ziipk&v1=K{AXHy(VhWKSF#Fyq`1nKPn?5s=-$A8;cugsG)EGnXI)S_yAJbtV?K`vp zMZR?^#J$+quUw}b3(iE2KhXLdJP;%iW(0>eVPvEy_n~vCF_qP05W1t@FjMt9bcY1C ze^_HGL6zw<{#3CB6B4ucRkV)$l~A$$BurX%s1r0iD2pJIc?lKz?g6afbrJ|Q>{y&% z3UePdq(WuYA;^ycB4E;5s1YkvCNaQtuLbuZJ)q|pxc5YXuWc}82bvvR)Hb*nE%~&X z-ePZi4O|*BdwP4h6AUB0Y(+`8myfW5?t6(o8aEYVpeoil6cSn=0Dt$Z!FN6<3*x>E zpyTAAdQ9%`FCc`iR>?2kVowJkcoo|<3UneE4S_6*W4l5|;xODZX>p(e<~o=uF1qWP zJ&Ir{FZgj$|^X5d1)aueRh zc7ea1MIU0jz!w&VM0zz!dW9YO&XmISMzRhUidI6!4))Ll+t)(p)IzRoiEr9iGdeoe zeo6S2C^VAGK#tA}lolwrj1y;%hVTb#Uw{_#g%2<}=BVxBf}SD&B~+#w1S84#tE;C{ zp<;aIJgn=puYse5a+&#hJjKirUR7q!L+lYH{!j4*kvDaNlK3l(Mu}UZLhnY0Gk4wU;*RgQkh zq4CNAMpC4^HsYNolo2^8ZSe3!FL%EOiV_|M;+#YAGUuP582DESftC$owIn8@gxlpC z0K4k4@G*Lw?$!EB@-aIPe1MMwnvVlTZGqyw@x<8%J*~#4Vx5DX7&s6rPwqUlAu}BG z&9~!?^AvSDG!k_dddpMEI2=PZ$v8W|0Wjd;Uy0`5V)s`tCNDuT=TG>)lmDi&D@Iu# z**}1k1P>XBJpm;I3Fh>!-WDqIMoCT&2OAK zLQ=+2sUGq6!rA4>U^V7VK(%q(k7O@kFm)!NUKib{%8NX8YEeMb!?t+)iP$o9l}M7w zO+w0i?fRq6_gVH>*S^-{iR`#^U_Wb^soWLh&p~D}?<2Nzn2|Jb;W|Muuo3e;Nj(wO zq>Mq7xAD-p7grj|KDe-l0AJ{Uamy|lEza_zo)2&nPM?XeJ|Dn2dL0jf z>2bi~8pP${yc>z9@CdtpCmpCTJcGRfWpOFQ0_Ol~_=}hKqR^wI_+zHV7lXON=}|pI zQI0|Z#bAMWrboAOC4kSYGaxI*V9^8uChJ8jKh<2z>cA?iUm~lBH4+FVHyF4604S_L zmibf7r=f^*EB?6n^rDH&FH|&#(mZYlYEGOr`&`#GPv9%!HxRi7>4?$y?0rP?u5=~C zhj<&Fv|c3W7Ud+2&p8Pp&dU!*5&L~W$5`qRbl|TvCU}tYxqzEgx))w5`!4-$>u32h zJ=%`0?NKurr;Ls(WgH}Ty zVeMl0=JdD>{p=YDqrO7eg2@N@7Wi90aVeG7p%z(*1!7hG=leP8eZ~Sm(WvJ-EcZQa zOL{Z3Eg!-!V7v;lSXDQi)$N1Q_9JjR043&138jPm6Fcm?)iVlAKBIkYr|}F;LR{H@ zd{Lxvqnd!!O6z>504 zo`oB`FNT0(l8Q-jmyexV38rAD9>Xs>rQ|OW&!~}8!_TMi^QRS#1iE5+x6#Z z^*J{+S2*FaH|H}7^=1I&q8zzpwZSK zD(}Lxc&mZrS-S>m1aA4%I4rOZ=#zKQvzNR72qaq$H%umkBMT2R-xC-oB51jjhr9 zL$4dj?}E|UJLwm?b3dR_J!LoLHR7S@Utrm(1Qb0pmYfAEdX>ln)t>4U8`ttj^1WE{ zOxU;Q7>WL9g~9j{_yrwWPYu9?@<#iFwTz7|4|0KItG(ne-Yz$PHcWwy*PF#Jk7P)00O~@;QyvZTy9UyaYAZOpXjz>14({YJC#Y zbC?jL4@dbTqbpV}{0{DQ3X5fvcHMLRMKoZBk+?%3-D2a|fb91{)Cpg^9U;_PaT#wv z!ART$PtKS}jUI3RzLBIy7NA)TyA2Uo+!?oWg(5kv8cLHo@vY{QROQZ5fT2nB^_50q zAZ7TB=nu30Y)@bXfZ|Y{s2&%PaVcdyLU^z=tdBlaBpcV1HeKxgCOhjX!E6*UA+G zv#W4Ldb&&rDEPwmB=>Ta=HCVXWT!TLGi^b3I{{7}^xo@=>%Kcl-r>OhP z5t{!M>nlHKDFSTSs0SUF)@*Ob<8x)NxN(mSe-)WYjlJnTQY)g95|@cwh}G?^2Aw4+ znMY~Iqh}bi4A6))JoM~MVi$1EM>Q<0Le6Y6^Fx-Gxj+_}DMsI0%@wLP6mTY^uU@zr z7-U~zQL;f4v48ips#d|!D#o=7e@{_iGOP>(Yk7yJ3fU#-D)h;D0&fThP2*&%!nysP zSU8B0WZ{+EI+hDDCOaQA2A4z&0rTH*YXJx+m>c>;8J$|!$y0fC3L z9=(mshDON^phxD1)0qRE`rsx^G7?GPC00GzNZf-9R<#$Zs5gE!>?}h|KtIiXYDN8WZ{BwltX6+fbuf%GQd1@|Z zi+#<@(sPFnKfihaCK@o|Fq>BT@vtyb;sgMaxnJm^5k;JrFp@w9(6T4V17bE0qEZdf zTJ_S;Sz|;WT5;>Kc(6YP)@uZ?I7f%K^F!NA{)EZP6n!1mtF0`LmS?Wc(JNF4EjU7c z*lPAb=6?rr?w2SFR+dC+f~o1@wvbK?-C|o%&p~T?7&-?cE&4bc@uq}EM<5i74FMSS z#xg0+KOusJAO==~HK}{R1UlyoaeXNv*y}}> zsc_Xto%I@*Q6hDesjr~}w&5`K!a)38E?_~@!rp=SszdNHbin37{GHDN@h1<)-2t0% z9e=XF{Q<-eb^kV?K+6}{KXot{1F;>@y1&MAT)`RN4@8Ws5k}%blJoU`UnBxssRzq4 zDX?aanm@3X>s3NYmJ7s(nSE+T;ye%DAR{2qHcaq{-C_V}KYI{tJ!mGRiM0l-v0>md za&R4n46%N!^COv#1PE*-bEL>c>Q10aM{o4B0_2LcWPLysqHcT4DpH}OyhNU<17^bM ziHOz-O6+#9KTVDzkmNQDgFm_$T^kxH%KWM+-hKe`RY?)?6-9MbuSI@jrVc{1vHd_J zu?Uaj?FU6SwDmj$mzmexc7tpeHvTw${p1Yu&0+ z6%C?^yQo!h1#!D$TyVn(N`CM6=iEDUCkZ5o-``)&3+~)|_VYQP?R?JXoWt+KfMi9; zV4fk;fLBNUGH26xB#`uM@d?|AeM(3ki3k%4&ZcyH2qcP;jgW{Pg%C^sL(zm#Y=DFn zINJJ;YmFU>9aa zN_^&+X}De?&4^$=&qD>_Fmqw1UgCq#U}%(80){4o3V(qkR)z@`;1gSdsULpfv%N#$ z!}DygNYBzEwFOBlQ6{-^ou~0iwAvzC&~N(~Qx8CY$03SamwxehoL-M5y^0+WnS-Y= z_6YRYq|j%&QRunSP*AAQrx!-v0%e3FmA)+eQs}lDo&Jm&g-+QD(rN7D&7jf`ifKs( zypz}4)_h_hnXQwJSzP==doW>{=!x7(6B)#6=+sC$c3y|SD_(}KO#1ffftWbJFa5XJ zjsurkePcG#N%?I})@~{uy2irdOaxxY(4uf@2kW#nB6o@9hjA^-z|vuq0v3Cs@n~WY z{PVfd%cqxTWy06ah0I`w*hPdkIvXnx^#~{OU|4~sLYrj-)8YgX%`%CVOokz`MrvoTjNs2c&l4vmy8&NQhQL?@Les5usa@|^_ib^*3a0eg_K z1o0NI$I`z`?KiacrgnkxP)G-iJDZ?3b|f4-_evyb(! z9Ch&ZdwQsUc<=T5^1gz7!J_elz`wiJ+WK$e-{HO2@67{`8Fc)?_upl&|8fQYLwm1Z z`XBuX`rq^`TmQ>c{YUj)zx4k(th631{eRVDtADAgKcn~hrT>3A>fr0Iwbx&x>hCN4 zy?o5U*Z&UgR*UnWpsL^5$Ns;WdGPh0(?k7-^|HD7Q_-_n%@BffK*1zc|!2jdy z^_%#AWFPCl?vK(1#Kl ziBG?c0lvtcq8_)28V;a1j2EFEHEg8zl#jbMp?!7Hx*j_*Nqw?wUHM9l!s(aLjf{2i zf}m1e!Cc9ku+K;?hpAhlBXjRtu z2`|Bq%dI?dBM)#&LB(3m_o1JPreng<#tUIhho8t1nm#WrdNvIGb(!M1QlvlQefhnj zrp?Z#*P-;7bEfca7}*a&d&9d^Lq9Vo3vyJWOv*GIu!nhVe9D74n5d9bQ$s_nsTUg~ zSGHoA3&#$XbZXp#pVE#4KH#T(tfg;9XKwf9wZrX7D&H)zp;#Bl6>~}_3v{BvVv}H+ zeHdH{iY}uS>TCPo6N3&d@E5D8^IxLSe}M5m=Od=h4`-3M9!NRA4_$N(rkR3^KSmGr z@&e*QtXaSLAm;s;I1Y}zjLtN>^;dBuiL+@P7`?gQa1~$SyW@^xaStiqDxwdK2gg1R zL27j6n&y6v_9K-33X54vAvU;2qu40y(eI$cGEK+Ul=ypWFZ1N#%&@Cov0#aFLr{SG zQO?5J(f0=YCi;(aO0520$@z{DgqHVu@Otz;&(y(RK`ShJIEEEt7I5{+Qacl;rVkTTXFa+Ryu+TIdEazN%EcPbhcv*-3 z2Jr+t)18NThK)yv2Kw?18}E(!h69u`^L8HQ8&&{vQ}xqWK%YID6T%-K1-e@Lmt?{@ z4;}QtP+Q>B?<1`j!d0i~fzPlKxRoczcvGGT?@6Kcajs#FZn!>I(WqNBh&zd-Pvj)Y^fq4QrzG{_CXqig$F|Zf(GG99qemn;yFDl$HVjPWSnvIaW z3S`j%w~bDBXn8X-oQ)pPrUiZDX6cgRL~C}_Hi1R^(QH2V5Q#mZ)ic~-aV04l_K~Kw zP^!?y(N}^aJzRopzUY#H?ckvz zj1KV?tp|@!<{u-xYWX`?Qe*IC4^k<6$&;HR8CcN|8)c!PTnG;vRiRY8^b^eHjxjR2 z@Dw<-w?c-*0e9pq3%06ixRr;$!%9oR36Q|cQmyN;OBbS)CmHSV&*<)GQ zutpgv&NMQ?NFSMRCOO1RA`NX?)=p$B$iPl+tUp$&ue65A)16J1%11X7M*!9)8;e2F zHd|%vj(bfzbs-5si~c_AE+mlim|!%G4*l2iftDBgHe-7}w%*cTVlvK?l_NHsjURr@ z1_^G+8C@1W_dMP_kEQWmWcktKZSq_ z#i|8;n7_;Xu{rG^$3@Uy@ZGo@wzwVy+XV==qn9PxZ1k~Al7MZ6Cr^cX{h{zAeB?Wu zp2deHu8liqDrUP0fx_mBu#g2VGwE1>z!$+@EvSXQNFAmF3qWhQ;XE?gIQk48KZ{*F zE^_XV<4pD*H@|nszh}T8Y<?FlgE18nyPY+#EwyX!j0KKS0ApM<_R!J*T?wU{&uEw^SXGTCxA zP6iXP$t*!+g^-*#tW@)cmB!HSIR^r@Y&n^Hl}f%UHt#(keRQN|=P)MbjHJve0BP)Z zePZpw;%!j`8+g!!lj;+r@Q50Pm4gZ+{){eqp*0Rc&dp?v%$K*v*|?*>;O}WadYwet zA>-i2pn_=-0<0eFP8L2}#flp``gtxWI)B}Gh zho{1R`3vVSfX{D#k$}%eB@P2ad!G+*ALT*GWmN6#q3S-^&xEgSK4|<%R;zAx^JA500TDgZ9bVm>>3LgszSKi8ZIVhVWw<=|BMHczx5WkQSbR<4=@{^evf2UJ7C4V-?? zi%ziQ%RcG%V9#e(^0R3-oC5o@a4uVju|427liQ&7Avjbog`6Ie&o_i#YS>Nnt)4#=0JAd>;9Ff$aF6YxMS> za~B)conbxGd(MY@&N;F7oWC@anBGvZ)kH@QU5t55G%&!u5t9{%Q6hya$D6Uq{up+8 zNSaRu^F*F28~lNtSKb2z9{gFaP-l{G6KBOKGCr2@L3e&YcibCkA`(BMW~RJDQktx{ z{iL4g`={y;x2k0J$b(L;u=AjK;61cMxlZiDgPe_T!(aJ8?KA&}JU^v;cpa9GUNHZ3 zYX9BwcOZg$$@x9aDBW|`_Fm^>J?H#=?>X05No=Tcs$Vca)x8mm6b{2Lg)7X*+3N-I zdB*=wc)tS19YStD{OvI_NkZAbixwdzz${bZi`^$zma-q)gN>m*fc|3ae(Pn>W}za> zC_>xBxA=}tpd-J1sZopEQ~;_pj$*U&tRttk)W!veTyf z>m|qnCU$FC(lSIBzc@QScG2gLLH-}l2cjdFO2t8TCb}fG%RF~K_1^OGLDXBQtJ@Pq zYop0tS@5B^?Oh-|(>Qsw;+9{!x^T*n;yj?D>p1To9>f0E{@&Kg;y+Cfu=t< z4*Q>kDVg6X$k{`U8HpN^N{(B!b>&%fUaA{|{Ryb9SZzGUj$w8ocyw$S!eQ@qhg(v_ zTqH*-84v?>A%-Kv+jtek6t?sNzQU8w32o6}wPvH3C zU{ePc$>k;(!=19F{f`zQOonx|3n5sGsq=t zTh}78O##=H#s3>`C(Sb0Bi%b@9juC)oG zlV!)gM{NQnvn9@^s}REWER}Zb^QIx?%x+E1o|UP69}{ODAc6f}Rsef z)TLyeQ1KNzHRj%cu3~?ha3|=V;IDtU#9SIRxzc0DDXw(&G32wY9Qv9#M|!8PeD{n;RK9$4ldhfqzFcVtD<0=-!@Wt1tufCov%I*@iJiSLk3=pg1 z>_ir@ZG<=z#h7P9e{P(Pk64)?N$*XwhUTW%ZC)8){{|%l5pp2h_HcU%_ppT6R+ex{ zX5@%44$f(eVE?>F?}Q(j@;$SAoOQT$xO#1etCs->Gw0d|QCN}wwD;v5MNN<4TxEQQ zJKvF1MI5tJW9BB9;5-*KCf9akRx_OF+QVi_99h_dirIwABz2v zkMV9@XQPHBzN!5}pJ|c%G^E2ld^pxJbYkpfn4E3^-hl;A!z-5K<=NTz2(tWWB{TAXMK51|iJCz#*I&b5 znJP8CgRt27(xl#dj`QcnzR}lfe`2%0Cb{4wi#YJdU;|4J*svJubxD{v<-#P)8{SNa z;ppuv=(qIWXaT&b(i*0~Z>bR!pC6!ckv(g&Z3yd0m?vm-VQumuGiO;!Mj{S`*k8(szFaij%osNlxKE?_?XOPbCo zx#gEuyzx26LiE)IXjKoRG8OUWsPwFiUxtza2p*sqOt)`!JuflhQ;;ThEW}Sj2{4wT zVE7dlV9T%wF|^O&Y@7{hioJqe!g<8GZS?sl89q_C|0Est%5S=R^*BOg#ZS3klQWSl$9 zzgYTrHofMu|1xDlY!8BsGnuC=cMqLp5lVE@kpD^&DW4;|k&aBp06rXi>^b7YPTA>O zk4j@9V6I^x$as&BcldankAL&=0v}KF@dO_&d_2U*{e0Zb$KUz5jgLR`aT6am@^Kv> z*YKh9(a6VYKCa*+#77+;OZceZqm++J`M8je^Y|#@L*rv6AJh5B<6|Nphld7X=Q>U;-fT=sYQH*40(;M;BRDkDz*z@HxP~k`{HY>Q z3e>eu*7`8$mS+P>%gw`~VjX)qWo;DvgTbrp=g4RJDUn^!{IpL$oi1YOS`e~`CEBOd z8pMJ5-=h9ci+@!8;`{6T3F=?kL;VB0`YH8nf0H&uFx)>{G^77V+3J^dAS|BjxBjH{ z5*(KZ{TcQDNPoh}4Gy$lv;4K+r-mi|+HyH?YwD4%*0pI!;fgf?HJULCNJ`%rPcQR& zyMK3VEi#yhWmzspOLATm72k4gSuR98#LfkSitne7x$$M%7Zrk9<=oo6oD-E-!-bLmsKK*$UW=2;`u~2cytztKaH>T6>rEXUoqniT4EEUHX1t>(3UQ z)724MNqEMV^3G^%CFe*S=s=%2>mY~rbfK#xR5DJa)h&4?PMxP&oC4_=XEoMRoGA$9 zew$>zvI^t5FU#t5z#9Bd_=(lfE4rsYS@EHhV*#lBNZfOPsWM! z=XH!%2WHX-t~IrPwl8vfHskeetzqGkT3eU_{4;K0DXLVfFb9JYg`tQXl`$tSzMnu= zCBCISt*J+3TV?aGT5a#`8 za(o)_{cuuq(}RFG;bZm@#qdP9ZMGgtX~x5>F(SaRI?*&0B!I9?M74%H2@UgJ;ccDQ zaeb<_e^RHy;Q|DvplE^^|FE|ZEf|JU1d(GW3rQ*bHOEWef*VHiA(mze8c9wQ%uPNC z+IRJuS)qltE`?kcee^x!Z&{Ja@vfACqhchm0JvS6zC{7s6}!Wx2kpE34LMl)GKaeY z2jgMHH(-=7Nlt>01Q9}CqSV+>Gy?p?1hfhEuJE=vf+{C=GBTR$?(y@pctqIbq)An_ zOsbrXq6X?X;O=F&{+u^{S3vt>;zwjA_r%TR&gDoyo~(7Kd3C@*uk)7Y>+^BfRc6~v zjyh23Ru_IXJ<6YOM-EOw?l?KP2#3=KSDIM;x$!2fSw3B*j2r`NcrZP3{di;m?*Ez- zGR*wUQ~YqJIVmdq_+(3G#OYgF3<#`Zodr_HS4 zmZMRP#xK|`N$87?9Xx{~Uo_^T=&F7)*)Z`3MmbD2j#iuW%*zW7q3! zo?npIWN0p?g;JH(b((`#*ES2*xRIvRo3gEEH`4@|amgRL7(@Cc9Y5LZzEIPjq|v~uzoI0cP3#3vY=%vh%GZ5ps(FIj zrwJhihHdct;x1BR2&pDX4!KN5WwG$a8(E%ABP}^}iAr(_w@W0;p-L>;cd6kYlHJY? z=d0}VL9M2&abE^%g}f<93r{}T*>o>~O(|p2Anqro*|m#kS=_5=Nor>@<0KOj(c+Ga zmJ3C+cnG|G^JR^B@V;k=6kL&^`_aiQLgDjzo{w;T+OB&C*iAQ+W-AjeR zoA-HeI#lpDI{>2g-VBQ!+%EDt31qpVf!U>Ta9Q#&#x)Klx0=3&DA-@68(f!IGU*b? zB#!=mWzvU~Nh!eO{R^ZV>4XK?SPgP1{m!P?busZlbFTx;xUP<43~x}PMC^0JaMLwB zlT{EJ7@m?EoE1l-r@1dW{1EdxaLaWBhm`7J$<4((n=tv9r7NRd!oJ5%-|?bW@2jYW zhd7)Nb~3`jdP^(VON>iUnpF_AgM38~$U^5IZ2CR{WvgPagm?|}*;TtB?t8J5({z=6 zdh86r#e%rP`fzfMUG$K0q&Dp)eLyr5-`m&8{KSq`&PEunyD$ighs4fSl^nP}^=hwZ z(?yT@6Ec{3%>L1>OTN3vY5)BF2RM&g4)!$4JIg|{PQYvCsWBaxpA7*g- z5XNj?8h1U^niER8(w#^+Dfut^)-2JPH0M9q{SR^esqAB*mk+4JdG)<&YV`FSZOtcX zwA3#^SZzpPp zpOrT{Y+!Vv1Aaq*I;T!(SO=nzA`Kz>eIxK}Ys$ovHRw%aaVdp92h*BC2HZ1I=q{V{@$F& z;AQI#zq`|y_wVi%ATZSKUh^(%@Z~(q+lrb9Dx5Hzf#z$_bMb?tPMnRu#E?a2?&Z1i zYd^w!QS_=q+znS9QsUD$5>B|>s^O|3xbWgwbkXW7UMG!mS?Tk}B3BO@!AIPgd4|pe*l%m9Gb4~@dHl7ofoZk2 z!gc0vv-wLMhT%7xzw6E4yUgDW{58(0>Fivys*xMER}X3{Y?R2d!oNr6KCF(P;$h~6 zEev+vxuvN^bI#tR>F?5qMxXmIE-TU2d?*-^^M#i8Yj|L{m{gh|Y$^~|58Z673=@dD|1RUj_lXAg5t2O}zQG^|d!SdJ!gHr)ojP44?+_=Gosw&^$r|2>3GcoV$h`px0Z{bK*dC*w7R zSH@qKVYQZCs!c?8`2ED%fELJ0_g0R(7l)slNC<>rA~GS|h2?Bq0gU3^BfOAO{5FV% z{ozU?1qzpO-al}cFd$HxscgtdJMwd#P4iI`%1VhAt9^){qWiqV*_3P3J#%%B4ZhiB892slGi?fe39!CtGv!@Z{>j5S9-VUg{df717hfsQq!^j zRg}i<&;l8*>0`2t`)?r}C0qi-)mZGkokgbT}aH=AgWEhDQpaNwcr<;=L_Qiw5ISeDF`KI-!Y%mOuq@QTxFCz5CP6E%n)&mjF4? zi{2*?R{B2xZH)i@3d5BcFP_+pIT`+^HRM$|o3hYI>K8cb&AJ0&4=hF4K0N~`cPz*M z#ToAKnK)taRIoKq92}vPPuy+F1zA_u*!b^PEj1@SX%#Z1sQ) zvVm5VFu8Yj8%G~Atq)GcwEWRrfK92t*~U$vn}msDn=uwHKUS&HBKyo8XL9T2{3{>x zFHzXFyyt?mp&+fY%rSkMf0^gM!PGnt?P>pu=sgo!ls;x}%+22@YE??lHe+Y^srVg) zLXu{0VUtG}P*NKeQDHN2k#FYLhu*e2YMLPbJGrdx;QQNzffnF=(NLP_sFncDQW)ig4N; zI}P;Gm(E%A#mk`%B)zg__YOR({C{Ko5?7Nv1F{^S#9+mMi+cbJ!chMPPA7Da8cY*N zg>g}YfE6_^wx)u%R2BskfY7@4D^98?D10BY700Mm~2Ssai_zW+|U=hpTQ;Hf<^ ztNpr)X1L3RzG}Z3$fV@I7Rk>t9zX(Se6Ed`KFUrCsvHOk{iS__vHY_SfSP7{m>^-5 z-W9~n6rZFSt6;5$FgmJ*bQ<2ick>3;yg9*7V^gbk+r*)oZ<;2&ZU&A)zDU7NZ%T(2 zS>6#J5>Zn*78G0=UR=`F1USdTC*x)OfsEx~2J$T>UDj!txHc{`U~4vPv7{U_vn(E)3i z3|pvp4Oa_Pw{YDs@74PEL$D5Akml=uD17nL2==p944jnH`MMm#4KKD*c_=q3P2`N*$`Hu~}$pquJCe2cW6I4S0g7`EknAnx4Ts zPb~aHTjKSEZfrO8Mqht8qs{41RZe>ZMYjKu@TLv;d#=?W*T}WQ*t0hUKmpeJ4?vOt zDn_l|@b^1$erHz31|p9yGI|A4XwI2WYPbqi!;BTA5G()#C}rW+y^mV74t9eD0lpr)qi~!s=wB({#9D<(P`wzG(qME zT67pb7oybzHGPVvqjx`Rf25*$t`@zsL5AUT0jxKHb^w)+qe;V zIZ|S(-Vt5LzzHpzV*S6;ZpZbMxcCW#zKskQ%TbRS146q&vL5o30Xmwdh1(jmytbt- zt^a^E{LX6&;JzbJa0CR)wwm`_#%}+}uD&+U(S+djJ;tvW@9xw#I9~bp!w>)M?hRW1 z{u&5>snhsf&`#i5WaX2_g$Od|2{u-s+SAseRhFYYE!Y4uDE2nEMS@v~{2TC_u>&1| znTa3K0oU2TVek3Dc!10aPJv|A^JD+R2}3+R`*czznkx6X1P_NIx2piA!|2bOHD}>t z3}$cR>DyY?+1j)5;x6rx`d%~ZqcENy%dywT`>|egUr?mCa*5(Oxt{tPlZG>W+*tBE zWb#DHh7qeSnJ0U|rG_{g3(;@mYU6`W6${k7B{m^x z#IQb7goCJIeuH}K)qg<$Nt}!6^?Nf4#HCx~c{Z<0i~K%oJpz3A$QDkXB&z34XxTM$ zSOzXtot2@_9OjKwr}?IWPh(3Gn+3s$66!#Rp9PO@Smij`*?0@Xf%EOaSCag7_(n1a z%c=TIkT5paoG^eia&C0k8NNJ7fL2e|BnM{sQBOk(Zl5;wDdd@Fo8kWfd7SqnC9q_1 z5(q7R1sQEN#o0Izsiiqhze%;4nYS3Mw;oV3=?^uF2$SlI^xgP9!%?Jv>&y8Pt;E;q zDVoy@BM6iVccgk4HHfB%(3=<+8bE%|#&7wO_nLWsHCTCCBe*x!0}syC1`;^0SqF7= zeM&GLQ0(Vyx&mK<3)uDUae8)QmW7|~h58qT`g z-*t!I?FX=Entp^d8u0Y!W!OOv>)mMd(;a>vW`tw#=84Q4;tqFUzx_YSdcvO~ydN8@ z$093-L9C9aur5YJMQRtw%cgfzu?1;p2CnxyU;mN`G=^ihfp=3!8agqgD3Tt2K1KiX z+(;^}nG0rR7NtOR?+PC7%WHKzf4#{w*_U;?vvCXi+%GiL8}8f-kmD=7;|Fi#%Asi* z_o(yqwmns6TRiK@QyttK0qW* zPD=j+`U0|<1RzZnI5`{T`fUtKlX`(Fxd&ah#^KuK_)uWxfdki6qfr39^V+otcZc`( zziPO9S1X{z^#k{=!VDb8z6P&ScoB-#4OFQ*bSLui<}(*NG8rB5VNk#eKtLW)5y+NY zfJaPYQ5-4U`r~eWb7FL_9mTdB|GFDnr>{CgQ#vMm5m14HOp4uE$eC69EdVPbV_nL=Yvj$u-$#zh$hxCdS7yk)~P3B=`h|V)^;Lluj*A zm{1-%F2ndW0C09Rb&8gUp}?6F2v-vTwO`VsKWWx@&1OJ?#TM#c#~w-a*Mk%G)71F> z5oP(HU8?bg89ix;y^;PteVYt0a+m|$>c*v+e@8px<3rY1KTTy=O zJ+#DxBkCP51%ZxYyiZ&{VmIN<&E0$e6Q2UamCU;x@JT?j=`jJ33ckp3 z?#?;mrIW!14cnB)XM_eLi?eAP%GI!~Us@L$0&2f%5d6r{rEEEbfpYW|j5eXbQ}EG9 zuU?qpb{p*~s$Dn_-`RAeNV^6EO6X*pJbjyC;m0+PzSSm8?fM5b zgm6bj@Ki0lJ0mzoi(G-OP}F~md&GeiP)CA4^Q;?@WjMBfKugOA%)6b9|4W2vE96R_ zqg}U+$1JGUXnyPnG^(O`Js>ZuCuVEW_=^w`AC@NGBMZHg-Qyy_^_ydP%xK{k)HC9T zpt`rMkX>|G)yAAiXFI1lTFiT02W zhb19BHUermTju@OP-P@F>no0>mbW!HpkcBjI3eDn)GUZ|8NIal=!Iru9k@8&0jvELXkalLcx-3{=0-($)pTID)yPLoe#Uf@neL9z?MOGN zYr5YW3*Sa(`V4>1>#F^)x4a2!E8u^q!2j*7?SljkZ*P75GsIZ!AaU6S0#~M*1M&KR zUmZWt@%mG5#@>GYilalBZ*P5b?0SUQ@^T;?uMb!#>9)n*-g?E|p*!Ck`|B>LesA0i zG$h(QS^x+dU%r7Bs_TgRU9uS_hnNeeZ8Xt59$(FX{UCg%BRGn=jKi?!hI&z6TX66t zu`+-I^F!9zx_I)?M77k5MNdj(Za@Z_C% z<=bNKX<7Y&1}~$*zDUSXn0I3EIMxL=`MI&ftgb(*vslw++y{PDnsM7!v>W+EgAx2`ZDOmVif828o@|wE4qyp ztuQNEgoUAaMHV~?b$@pIzY`FS`(x-|aeD5HjQw-}bSxZy3IJ`vco9HvpdeqQ5O%Fq znC?8LFLIL1QQUbWvV6|M z?W_;;^UsZqW|euU5;!Op4a@i?zC%MF%+nXX8a1@#soA2P52$&%_g9oHhut z_b$U=jKkG3z8pi4F>fob^AnNZ0uzAPq+y$YjbY1#r@Z>tINE@#rN7?f%lVkbwx&Om z8aRBL@G{{|Ozn$ctc-dNODoEGSJP7uJ2#r2#w}YxO@9IQV$PHS@6;?K8|YY+_q7k~ zkJA^(w@tw_eEQQk=Lly<7FaK`ntC%pM zr%(8z)fvVO5PkwIgcPP3nMlek1*_4s@TxRN@FGp;vE7ltWNm7oAb7c^=W5|r05E`w zqMv>nG$f&I#^23m-TEZ~4h<+FEq#DBW@g(h8i(Pfq8Y7lKg^aJFI|P&KvE~q-QC%K zheiLe--3pB7>!VMX`fe#+oMK*3T%CI>`+#uKM@PymvBd&8D5$n(>C-+Z*97Oj3c5{ zc%1+4KfPE9Y=w0F)^c8ic@bxuXwI`Xp+8;A$GTr)w9!5p<{z}^YG58HzO5zWa?9E` zYp3xDc7-GCu8RN(?AfXm|aq#Ln9V!_8Ok5;`u0g6nDoJ_p~JAs&* z>nVvQbgO@{z5eN{{_Pb#)_>P>Rif6X`WKq@Pw7(sgcjNirT4G^T;HNYA+>{Hkg*m0 z1R|0)+3(HlMXJbP0Rr$0ff+&pNc zK=Q_{W*`o^0F81t$~%xGi54}nQ)6CWEcrKS2P=wDgEL`VE6V%O8K#Lq+2_Jj$pXP1 z=v6_R7Oa?H+5$7vKx&ab~4}~x1J7d8s$Pn&;!D|;& za%Kf9Gp7ABe0e(p)1aJ~J_Vq}Oyi}OSv;n@aSC+Gh6F%$UNRLDE5A%XUZ=?uR)CVnwkXDA9NdZI91i;`Zt1O?<%d zWWdkoh!0R8h!38uIxcc8XYZ4-0PVnPg(u5p_)%t&o(~})Sa2FVx1F*=?VF1ANN4yP z8QPDTui8w4m+ zpd}PrS7f#uONXqyKoF!V9V~x?A6bS=w4HQe%fH6VpO?sA!yshi zr?43=r8nV35s>3! znsO%1*`$Sc?A*8epxs5)*;Go716z#K7g@Cd@YllIccR=Isc^6IOU>I?ltC=36Q4_%ueZgdYkNepQfYIS|6)PhOlcLxdxWcEh1j9BC;ySRov(Y3sEK>Yy9TZsWppmY!AU3_5eYX@xhTi)fU@BrHP zW^#W)Z?e9hY?-8yrfpUlZJeMlyk>B0+h%33OFZxw@^pwVzLNnkSnSxW5F)`T$_uK*|rSo2JhMDD@@ON+l z32%3WTV|~r*xC<#dQvp8{ISW-zP5)vvtH6S7 zig=btvF>##QY`EbF)-)ZpyA!#yr+E5Sx-%9fm?ZSnJIsr_vfd>F?M1Tn_T(ya!J0T;>5A0sZ0r&r#?}YSuce0V6=4pVpcR0}D0AMEzh7AsqZ< zk5lvQ4WMKGovGz*UY3t(Mv8IsJYo&zgw#pcq&Fabjol)pyHtSL+{rks&e#HzE8fSP zj(OD(*xlj313!rPT#h!1ZkX)V-!~@h`M&efL(wUo6Kj05nJf|FuGOdlbsMjJ4o#kF zAGRtyVdynP;?pn-qP66iFX(LcksA>=|DqdqA4=@@SpHC(jkiHvoE;5^>xA@suKta& z9L4LO%|{nwQ5^r702b#b@a1&R^+jtlI1=B_#Ws4MPS-Km(|?`@XPyBVlu%9)ykezI zA89FH8neI!DF*4!0q`pZuH+#WzKt}g57imdxfKvgEtOhiF$%m27rRY0a-@x)gDb;F z*=T=^`ZT!b6GjFiq$1wKa~pw${-4vz9zm#fIG4fMs3Rqm@4O!dO1K4J-UqeF-Rc>M zwGnJPK#!rvu%Xx%3&(=UX>9E8Fq4eUmRRUHY|WG6JZS18NqCVXc(D$)02Yn%>8|vI z%$(oA02%Lq*A+#^WVJT|2~L^_Bp3v1H{OT70pz$BHrYPn!zum<6fiK_ zFiHu0SOJf*1U@_j;F|c*T-z%?JO^ek`0&1k52n82i!RGh8-%_$2Yg%&%ZR)KYKCybaavSTM&c$XHXsu5b}jSdN; zVqePB7y9&~o6qx+H_Tn{qgth}f)%5)vlvr_!VT1iTA@DUR0-H?} z*d*5r`aI7gP5ZSF(P?p6Z=6V^Moy->=rV8Ki?{_<@clI?j_WNr80UgdcyR<7b*|{d zrc_C?NsFF!B-xep-J1gy<0I@gdc1qz5s1Ejr1qM8uVMXUAk>)r4$SkavYhm#NqMm| z)a(s^u#+>+Na2m%XmHZ^MSAQ4D1hrai=lK+%$f(=+r?-C)Tob)w@(8xapRUH&lGBK zu!P=-9{*yRw`3`_fO-=*G5ikWA0pK}fj<<7MY(x*LG-CBA+e8NtLTZiVH z@rD-7zi9-cq8GZb37NaJmd@7l-U)bd1mJ`Gw8r#lZPUm7w3L^@)?t9#YGrIc)RaHb z{EaNgxc58|3+{x+jn(*sT^{gQ5i@S0l|MS|^Q)x8Z0Fwy+&Sd+RRZ%-Z+X|A} zHYd+&({#28Uz?>#=FYK1TUH*`o^G{c^-;#SZf$@~G2C|4iVuw8svYOB9rxnhf^T2> z$=7!IvUVfUOXSNCz}#3Cv-6W2I_=VYOW)+<6WGX?kdJK-$J_6F9PNL=u(!W*k-h!5e;jXr!{xoUe)-aIwj{c{VTWriZK!`^YDQ5Hsd^Wozmqg zF0H^r4eViYnvpN!Z5JdNMf=`|OdjxraROUHL3a(&9D;7)qih<`vL$%-1Y~G4>Oe!t zrA4(&sz1S*Foes=gr6C60T%E-@0uT4{#fn^pwCkc=vP_6UF-w6PU;A*s1xI@f>c3^8BqGFM1rZS` zfXU1zCVmPLaREd`QDi9B_AJ&`V0;1t&$cs*j z3sXKoHV_wzB1_YZ@st3OB1jRaJDYv_^TucY;xKNb9(05mdC_G>d0)U+8Elg2Op$1K zNYdc3UBy7$WYDHe1_!dMRm4D1kQp2Vj$%UhyjW>Z`31_0D|DgV)#$EfYlr3 zU0ei*!>Xd3&nE1G$DVgnC-;6D*>Gwh<^spy$&(T~1xz>D-L-#jD|DXJg0GS z!_j_=5qks^JBwec`Nr9>03B{@hciCaRBOIbAd5n?;MyCXt~8^3*OGDvXCTV_j>!cK z)Y0XJwx&~PYbc0we$4Z4$~?-mX|9iOuzl!fk>ZZ%*`2!9fmPVIjPiV}V!Tq({2*n= zPUoiLj`oklo`iyp8xSU?Oh>9ju_r4}0oAO727dyVZ|r-&e4lz#8JyH~Ba_#~CFTZU6>A@$BE)p9|>m z(E>ii?FCwRbq4rmFbm$LCt^W!mDDkj5ldYHy@tDI^Oo0{ihj`2p zDn_$n8sjm;R7|lIb9p>wxQdx)#T3V5ex_m;STU!^V~$iYi>;Uu@t8~%Q)k8WvtoG1 z$D>E7*yV^djJp8?J>0;Q$~c)|amF*3LWzwI9oRVlY;5>Lt@xoRh2Nc~YXyk;d@qAE z4X+=m*Liq-PrWX{>o)be7_V=s*E+nusa}`k^>um0{8cZ8F?4u^)FC@)5c#Z%bRjYu zk?+^Dwsk_S(V-8h$nl7rjQ_<*aGeCLyP3#`OK{|?S;#&*yivso2}Xxrt>T2dqr>Y| zT#L$gg^Ck0jt;+6#R*A8hgPdNA=l_|O~q|j`7Tj$LYC3t(^Q<0NOY)2#R>UEhmTcp zLL||l>Z@7EOkd~VNJNJor;-RwM28-uvI|B9T@@#I6&?P$e67n?aZjl@!K~=;*Hqki6?eCa6Wodpe^kXyR&oEM z;)q!oj@wjR0l)O-2L31%Gws2THY3RR>r5b7+hdF8l{?xB(f~@NdMpDQsxstV=WC|C zwiUR{-)!@Dy!kuX{4FqlHS@RF{GDh1E--%=o4ASb)Ei%$6R$TW zUT;pku1~z)m3ZBdcx_3%KACvkl6c*kc-@|OH4?8o6R#bKR|f#dKQxk~FV zPDzTHtYS!v#$ib@c`AmqX?*)Pd)KF^7?P^-c2dl271P3)%}Fumsu&Wo@qbA%#VUq$ zZCsla^K%tLGB-j=G3Tk6?Too3DQ1p}Armm%NipZE81e+;q@baMFUGA&F*8(*i!qU;n3*ajn=!vgit(rz z@*?BHq?ke#L)K(WONu#5#S}2+grt~RDn?_>;G`H$#gLB~pRc#Wz^h`&){Iw@V$N1E z3mEfIQp`CjW-(*_loaDrG30^9+N78w6+@P2R3nDh_&}ZV=?x7Cf_TgjC+$XzA5xqH zH#X=3*&UGL(c$xPA5|Cq>uAO({p%R@O8sk$dR>6m6_Q7z{&kIdrT%rhdZqp~Leg3a z*MkzVj-;B1BYEQMSe23_i7%J>x>}X1&LRVo*7EyFkguo=IesQ>*B;K5yDJBY%pIN%vZbq^?Y3a`hU9K z^ynEtv!pez_d-HDC`DeoPY~iQ-d@Tp-^54TC`ptx0(DptzE)whIW}K3N zWr!bAf@8$V9xh=Y8qZVYuh~O8DY$Cr1S~_eB>Q8C$A+0?-OSA3+i@Fii>9B_>NzD- zd2l4^m&)lkDF!j^blL(s>h4Jv$h@Y*6g(0ef-(MRdTw@GbUoeUNbz!o;#& zKAL;-3P7MO4OQ`8$A+fv-Jd->7r7F)59W_uf)%wy5Zk-OR^F;f$r-xX$KT0Hj>ftY zPhkK+I4-l-6I&B5(BhtBtgQ?p#=!8KS@*dfb(bftICk4-v~=57xePRn}KFa3?K zcB#>vwcYS=&clU)Lx2m(?d>uBFqPhT3nMN0PD4{+&sO*{M~jxg9CI9<-iT$baCi&v zP6;0G-Y^uOkSh;-F#wkkP1t3e((wZphQ#lN{$lP8;#CwKy4FgNZc9MSz5)x4i3Van z($9y+_ai;>=HTT0NRtp}ET0hHk8~3fkfu(Mi8#6gUW$b&S?O5u>Ml zI|R8uMs8q9nU&L4H^$e#|HYh3!l-o?nrHaf1^!_6Q5uuvr@0Tj}4S;6{MaF(Ep1`A(qq&Rsv?QW^j=N02_A; z5B&lIyu7O)7j`=rWH@uUaabI@t?@^=hHzh2vG`OqEBs3U+VMHyx%QhMI%B`aSXMN9 zbZiX#OvVcU@7xkwiD2XOTNKyr56MFu{Y2KjpNP>%hTj?ZRrU#i-zH=?7zZy2|Z^d!ia?(*`W=B)Y@}soq94xf%mW5Wh)6U1a zSQt9M9edAqV&U8{ZYRTx%rP*W;s^m3QQ$Fn<5=;Ac*i)KxP%1a4)MK|be;wmMyoJ| zN6!2E(`68b^f^ZRYl${uJ-7HN_V>{6%#M`U3XHVk`_Xecc7{_@Vv8gM8Oq$i{RW#)VCf%>t^_ELpwI`#dzWi!1bM5IS6;O_68vb5$IU zRLpGuC*U6U54pjlzwos2PZB<-+t<7QY6M3DAO48_INkh5VwVGAar&^WhqoDL{!x(h z=G%azzrs?X&==g$qQmE+-&}&nX;gVzLMM}NC8)CNiu@5GK<^VP0>O~*{&nNK)H4IIY!-#^H{OSN5O zbMt0^{43|NyM_BuFyi|^fB%8Ne<1K52>b^E|AD}NAn^Yd0*n1sb&gZVPoC(?o;abx zUvc`xQ_KBljL&h*u632wR#%tSl)D0T{<6x7N`HB-qo_6zlKB7co5zcv&sDX*-bKFSrWbyb%x@w-Z03qzGvUg2$ z{vfgia;Bs^7M2Do%Sr;l`pTL`Q>K&@m6X-i;44%Xbk&5as$4a-LD$mKDje0BoU*j8 z&Rt^j2+vh$UtZzYIckcOmUTz)YS%D*~=DJmMwNw23(`B z2<5n@yMl`=17oKLDzETo=X8m6l$F-7t!4H8(xBfJ2$oNoveaJ|1RSeM>lgU};Kiji z0R8e3mEWOar%b8$2mJL*{qb+W0A*BF)s~f1)*vdF6jNHW$Zv(`y3&UZc7%{7_wqoO z&e);lSagMB;T5Oif0so5`qF^kF^)i?wSa%Qj$Hh6jko<}j34h9ojakbVsrq%i z!{J(j|3&ye3;)l@|Kb^4isxtwIJ$(_`|GMo%lutJrQiFHC@BpsPs&xYw9>z9%9P$m zu0){Tb+gB^>^mE=gU}r|oz22d5u0WT;CZs2*Y{!E0byWe}wXtZ$Qw z;@>891ccsg`T0G?<*D@tT+0@h28E=7el<&SRU!~JleqFrYgRCP(e(6mm+PWhS9$5O zMPpoE#Fo~VOSY;?kh>(VtzkgD`Uun_Rb40;j|wg}lU3HBuYMHAOu4GukP8UzDy>2; zAe?Iy5OkEQG{A(ey3+d6YJZS8UJG^;M6xPXDjHr}Q|3n*b4)m}w6SBWOY4`EgMr|K ze`nR!S2JlS$o8OmE8Z1YQ4=g(j{JqoORMXu{LF53Jy8rRG>h_ts_PQ`Q(VQ64+^h{ zZ~`q8w-Q4)#ii9QGo>0T303=Rf}oz-deBUHZIE4?;_}v1)VfL+5+zs?YO3-t^;fxa z0dl6uO(4Y-mw?0tjHp}eqQH&gi>nrhLEe*V;mZ`44;&;^x(JdLDNQVr@tZZMQHebCd~IT3({s$ft#XQ(Q%*U@^=r z5?karkvB35at{Z7ASc3^V}c2f@<= zq;=>zP$5DbZIj33I_g6;!OCiXNx8oc{UzdncQ!RYYrQipktH$kF5e}xvW%H`V!K;<9wj0(vQG(!J$S`Az298 zK)1~70)2K;QKsS=LfjU)<)*V@0#s;+z+@4*xnQl1^sztfABsG|1*|{MU*WF@Ai=dA zC!Y`936cWzf#1?luof)1vJAw%f*L9`ksx>r@&4ol8%yT!3)t2ZPH@evtqGE})mMJ0 zAkef?mLwfDJ%3#3^qERq?V8BsJ}ONQY_Ut3aZac*^uQv!Wax7d0R&=#F}C6*!(lnAzAk?wj9%6@W#xqb{_tsm)$*2u)jhzUYJ4g(NW;ZqGF~8 zN}*4Tf>5gs)j0x-!Jf;(g%;MA)~|3>)k496;4i7JEr&|u2#_c!)|Rhu1s1daP!qvU7J_^#sjO20Q#52JTH#IU0B5y}xB%&R5zG}e zeg$Yn=_^o&py?RVVgy%B?K{^ojuY0a9=TY^-lF-8K?~&Dn#VSp@%<&#;keHHPBp)8 zF~0|x-}ji`Jc@^ZuT(FPU$`^K-$paun#Wnc7rM`z?VUZ#Re0Wc=bqtRC}>zcrs<#^YLC%X2VC?6_-P+M7PAeawbczX8Y z%0-K-@IRQV3<^08s4XRBpjj5V(7&j%M!p=0*LYpFp!{jwi>5YW**TJnm6pcq={>LA z3^8R&Y4FF)tul-Eqq*vj53++p2Ibpvp}jJ zVl5N&HIXlURF)}$Q4h^#<0@)vL7?E5Rs`5~JOa`WwP0olfk3(xsZkn8A4Nm}!HRhd zJj65&*&40*bVwBcQMQzd+bI2ArD2G03kPZ*=crwH`8Y@2;@X-O;~X>QdVQV}kN3QB z4)=^XCB^V;vtb|$DUtF76QvD6yb8tH$Y()Ui(QWMFu7m_HZ9Vc@R<+{Kxmm$NPh_x zQ4~XY2d&IoAwZ1NFlKrb;fj}I-pbhsa=6Hk%gN|UF_sYbV`zU!$6K`w(=yD~{WKz%441!DkL>!we=K#L<2Q3XUX>JZ8eh~NW)?jj^}^{S^!i7t$2Hf#aq z!BPzrH6sWljrU=UYZ-J_!Tp4?6@W~XhPnJuYR+`Hr5xB?OnM+219WR^t6)Bl$5mtg zZ%&R>0@Zta5=FBn+yJ^|RG2y7RQ8~D z%=;>qSk%1$bI7_D(i6^D8kS;MmSr!_g$Q#0ar?rA<~2^3q+t_SaHo6e#LE-Av| zO%^^%Urq6aFmimrx3&sOQY99zddY2Otgi(;#*OPa`QlQvNi}tX#h_H}0D`nhO0iQL zBnsvjQ0K~)l)yw)#a1^aY%4ipkGaVpGo7LIp4pI>!+Y zBZsn=9FIsOw%S>0CbaRUc08}tKa0%e)ubZEPS&L|0q+C<}kqwzcV3tDl zgiQb-{nd3rO!)+e;Qq1{9M>a~rl=>aJgKXk7ZXW2*0reYh;gXYwQ`kGF`!^!-BZkz zl|iMCK{-!Xijk0-EiLTaLFgB36SzQ)niI3xarr9?U(^OG(m8ul^HE_>aZM<`Ad+ie zWi@$4iEWWtX#;95$fx>-sahmBR7c7V5Rx!kjFy-sutZ_ncgTWiZ#Gx&etdpf=v3X= zSl@xwjjK7+T^P!IOg7OuH7wKT=P)G{b8_c+LXwSGM<6#5u5{34&>m$%U1%p6dZyHtToAM?pahvt9e6Q#ED%#69jXQdEi(tyHmH^rXiRk-W@_~) zuA-`R5hf#*P*u6`F~(GZ@Zt}a$;@Ph1$6XcS?LOvjm}{1TM6|GTA5hys1XKGoSLPG zwg;G4t*pc{7#Be?tQZ29%WZ;#2vTpE?O|fVlm-nHQ;h3!YW|9*Ec+0%o{uq=nV#@d z3$DNsbiSPUNvRD>pWu_swdt9HHrM;Bv5ba3u*X!QQJ6J_G~*QVV&)L2Bd*6aTNBp^ zyvm@!1WK7gP+2HdFhqF@D=gS?3TPRx*weW2m68D3Du$xI++RP1-EvJ(<(geHEzlTA zHGdc7SBS{uCD}kEr43==)s)_XMNTfuJ5`mZ&<+Z_<-DWn#^eRO*H4Z{wFED}wWtzr>g3E)j7AxfxiUpUhL9(WDZClj}Qd6$9*4_zX>9v9> zKjVlB9~(>|QU54p4~&uqOw4t;LEBb&!hC;JI|vi}nXM5}_PHJDMf6Qt2o;LBUQ?bR zLjbn6O0bHyNZ26FX%hRT*qySl3#Q3}ohesnPV?7~mDON04TS=JLC`9(4nU-4O=G`B zsiZHOWMC{f3uuKI5lx=_R6$W!Y;Q#-z z_bxqlU0I%Aj5#vwVFSj^Dm98R)rt&=b%7`~TNk`|NY$1|O=-%0f4ZOhv@K z=j_MY>;2k+v3Apm0W0pS-R>mA0?2KjmL+1LEZ%$+>|S6_Ns>hL9@g~X{h7jydQ3V< zAaIdIlQ-d^u$$XH0v6(rY@IS387;}H_vZsJ_F-4r9qNcUB4-2X56iPcX+Eou<+7P8 z*p*C=&p?UbVMt4D_M89^lmqL>V9#NT&ddu5l?oU&1%r79Y-bOHNP#uMi=?#a@yYfn zsHafQ+|ET(N%Rc7e8Gp364y96mL%J3M}!Xg35^*a_wfG4-ifiAlO_;R2o2{+1Q7N~ zS@EvCCyNAPL5#p@{<`ILgb~YG7pn`*v{E9P{6H9W0|*>>=U%axdPkE*>^pubC!dhD5N#rLPESj==o#<6Q!*4u+l9oH(Cy==Vm5)CQ6{8#A z6tOoy{`xu*o5fi!pNQzA`n{r5toVM|Q;C8%65%CqLt2{@_2S@Vq~HW;|N56Ne_kuRcYJnA0F#KV@H>MB zZAcgwu-6xR=ja`1Ds~N(GE88KWngnK&>+F3+?&6dQ^KUfS7^Fu{s!o)%@XQ2K$S~^ zp;F0+0ESuT*aM#CQEAmek(rWKM8O^lXK0QlZ1Zz6jFhHys({IeiN|ba%ZgVysZW{0 zP7Se;WTB`ZR+o@Z4B}iTL2rwFii8fBad$4h0;hv>C;YWVbh5=rh3d}+XNO&{i74{5 z-#UIa_^krb;F1B-=CEaI{qtc+bsJJ>v`XndFu3c8c)07T@sPUc;ZkODqzgx^Q3bPg zJTFB2^?iYllp@qA8LYc=#8K(=&*o>Sb{Y@e?v|a>c$gg+$V@TuT*mQ^C5(rS+GA@L z@14qWlJ_tdCnQ@iC013FV;2XKJ)dKRA>`u@$1tK!$1KbXd_#uk z*xjqZY_uH^W($yp&q_i~!=!#Dwj=D5eROn!#LnTMXiPC7iDPjsm@>ESVw7RNV6lgc7lXJ*-sa9JIU0%tl|{m60Y71EW*aKzVNJx3jG$jeT&~MS20Ux^7XO-)6&nKNoANS&-hyF`HI;hpbkb?? zz8ufi$&z~Qc@>#!ld+raX{1s7n-&9A8TSzMF>ECzK~qc zK~kLH>_b;Le72F)KyW31C3J5Q)QA-;T#=5?T1pS8;=0L~4VZd$CVW+Oc9gZCq4{P-=Dr$S?O#PL8&Z=7&K0W;n%|!8#0nuij5l%*g1lUPlO>iJ9zQBVmqY z-H$cU4X+V?MjjS&@Mh`f!&H&3bYXe^Sd4m0gl>UsLKn^qn+WlCARocbp%ApOMr-CE zlS~l>1o6Hxn5ps@bMnz6`L?8CndYQ4<*zp;pUuzCPmdirT zpn>wAN+Q66@j_`CV$QPp6q+1wI8HFPysjW5k4G7hl`1kkfL3^S5sCJt0wEEvWDzGo zRMv15@eI&QR>5FnwX$E0kKI{;@ERvYhfZ)|O%8&;%*-*IOpCs+8sQ z3d39VwT2LzOi0Px%};h%Sg6b+GOZJ{RgkCG41+f&TUi1j9wFBP44t#%c=OTW{K!}q zlS&_Woz%hc*C$`W(On5aw(%obs3W^ah5i6lmD)*9W9VID@Zr!Vw2}ndb#)&kuu*=hqom zB_G?uHb*ELM}TnSS%llb7FMpK!W!{>;2l#rff09U;Vr%mxWnPe$yZ_k8nbpXDAm&w z0_cR6=Tndl4Pd=elo&5~2_NQ)!n1ma+Yj!NpVf#&BxHK97Q5}f!8~FF4Y{$HqvXl6 zXVwGKY1~!&DhkSd_^~e17Sw1xRy+s=j~VWx<=)VikCX{0E%*39#*2~&IA*CZtO;BL zai63{gBfmAXAAg}j@f!x5)5}(H7pE3ic`1+1wjC)^pkVtTldoU30j@pE5iv-fAz`7 zcc<5`tVIr1;aU7e{f#rSU~o>;yTsV$rB`}hh_(e(ve+1}OD4Qzm74XoJv7*c^1gw4-W}3dyJJH63c&Q1o`J1&5GSKJp%LO%Wvl7< zWgfsvoHh#;?o95y{dRN7OvCaS&7qfK>8N6LcnSD)7A7){GbAsiM~F(f;n!TN#K`80%$=2QcwnTx`|B)F>vDq^&?J!=5R zMh(Oqkry#pfbjU_L@D3O_79$OL>|kLvPf7Zqb<(PA8CgG0%WdL_iLttk>`Hh{K=xw z68Q=$ki+bJHakHWBcd|o63!=Ax32~+;`K&h#W~GLgqy!sBtzqP^*+b}Vt{;1q0$1u zDwS|NY2rZ^i6XI_8|9vO-sLcEbzmetDNSj|O0|_fcAF$HFh_^8W6SH)%}wL#rZH^u zVE+&&t>V3ozq&qDR07jv(l;g_!EfQ&=~GNEYp0|sMb~t!$zVK z9Rx!Z9ASA-PK2n=kIk@#xx_G;eK9vJF+zQ{y#x#NU&Wmw5l}c*59aBq{2K3*E6Wkz za(C1dBWR1UD5q~Ev%4eWyX$iLXH;Oad;omqnr3lG#hd)|!c(c7^8E{jYY$#J?wZpB zk^lPHXKOf@u1nH*-uJ@8PnA*_&pT8p)u{ZoC^tk~^nmn3I94)hGS9Ib!LOrK?-(bA z%$6N+&JnRk5Gl*Cz+S_yBpphyIeUT{sYK_Nu5fn37(%!quj_1Q0ePD%%6|yUWvnAy zf;-1^0?cWm-U`LV{GHQLpjddIp$rO}4vw?g3(4*}H9(Isuiirq)Mmz&!7U~s%@GuF zNDN(HvJsF}a*9KTq%~Q38emSGl!<#BLPtvyuPy7xe|v$U+r(N!1sbv~)9fi0=LAc` zIYa}AZ$J}byNEh;h!j=8`?)hVMv&SYHgN#`tgG%O7o0b_{T8wfzn6_W7)lm}T=7*04(Q1v)Bd$+>HAjFe#B;bG zT3vje-YI1D3B##sQaGOqbK4D|}{3$M}) zq6$#6M$)*OP+Xsofyo0O;<}J2>cxm{;+%B-;^aP&omi?+r(bMaB21AXz_QbmZx2vd z<``k*ox?_zZEiJ)71*cRyg5VlfQD^DmClq4Hm7dcN3}k9u+!Md48pj&FX8qWPkB^~ z!Amt_6UD5I06`{L$9K8&@*#l-Pf21d+b$BH1NH*VmMEsmab-p@9f##ocvkKVRU?(@ z2f?a>L)bIPK#yw{fpZv-7$)84E zM&i|QbnyZYUi0DoM(U{_it)biI0V?f&`A0jV+H@|s}dTovO{6-D}3JYlZJ90^Ch0| zSeIa52CXTrDqb_j$4blg1L?ocnpq$!15$O^^5TU)1)PVM$1;9^rU|k}T%Y2#o?eS6 z*M-He%kYqYba)&;c|FdX>yfKvzvTp%%*>-T=j-my?+`uZq~$M$Dj|dpxpRt?**V;4 zQYN1N`Foy~{}`FQDix|4OIvK(A>|b-W;*mgP#cOon^2(=s_Nt88ya>zE8n^h5KHmK zpZiio>h~zafp~CxH;AXaP|uTQEJMJqb{qhHAqvAKss? zmNYryhxdQd&?N`y`GNI^)L4={fIb}k0#_JN3A`SriRC$ zbQYGzujbh|$|A#!D92;H9v2oIk&U0oyWxM^{|k8_a7Ws3{FJOsu!wD* z5lUCW@mCyPk@iE*X~!1hlp=nH8v<3}VU>z^NiM_znt zva^GP+x4^gRIt)r9xin%)(R>$Ad}qZ!&Rn41N_Q`g4*AAD+%5QOI)!OCfJ>b%}yur zMl8tOlMe?LAN=&zir9tFg}tp+I@AxSaHeBXQ8uAWE#-dL^2m028U(&cvTMt8jSX+3hwC-DNbjlj zo|VRX@()eo2`gj7)YY?*oLCt^?W3g#V7mu zc<(?;0_Ycg{f4-jl^&9H%FRUL{=O)7w0DLRz?8Nk(UhywXF!LP7Y}+ptZY?l(M$qi zQ7$~>kz6<~EMsI1R;@P}Y>Hc9L5%UfLUgvfjXHL&+2gIJBUZIynE`I~5`l3zf%Zde z)-3aMbw)_kPoi zn!z_pZ{7v@%`oF^*P=wtr~cMHQ=eHJJoF-}SnqL?@$&KMwRAf2n5p5>A>FA+H{%Sz z%tAo#C`CrOt?cPJoF6}?9{_IyC51he8!ZB=co%vJ6?H(?^i@d30(>xIe2SiIjd1E! zx5-kq0g61t5No;MPS&IlO90B&afhjVYCImutD+dnRuxi22+?Vw5or$Tl*=xsqSh~H zt{OUNmGNq9uk;o=82~UqT!pN&VKXje)6C;)3fm~K5CUf3;M;Ko8Sxs}%-Hp2%|V?` zxNCVQ2+nB|{1xRnVo(v%gDBG_8~iifz#NU!>*Zj85%CmLvqo^st%`UDu|v(HvRpVc zN1yh+9Y{gROzOJ9%ECo%?d9Oi&2B|B3T(7_C;wXLFk50K@^B@$Oi0EjqNstlj-5D$qh^s!yX#0Z&rAoA!xWu>(z6xdZhC;brE)#OZ@{Q;A@b+CymJ~)8Zf=(7+ z0(_WvU}W{*Rbvu;k**&`ZLw?)Ip)NHk%FNM2DQhU2(;kyW*BA6q?V+6CorOpMQvAk zBjtu5s>}(6V9b;*ijQzacWYhm-iXs-l;+V5d=rNN3xnr0%t9GzY64VzQBIXt%%>eI z(=fSMIe3UDIj}!=-$(Tcg4W5x87zx(Y7`LVS1Ta$(Ac9zBsQj~FfB;HWH{U6K0-!5 z-bh8&(FyGsjn3M6N=aQqT7HZSK#C|rXUpe?_nD4n)0UKF$3QR*QmITa4m*YvA?{<< zIMwbsL7!BT1P(2^uG10x5q` zh{>0s0!nYW#qlLHHP+DgAWKMeO!sCTQ*uSDA;d>izN`D4)T{5StsNssQ~F-n zL+wMJjSnpbD%2}gq)o}=eJwrGg`_t(PBYQeiqL%}*rh>`kPi2AuzM6V{NO*ViqZGe zENEr)6w9tI^Bn6VK#^BnT1&<>X+J0KWKCpAE$9&raH9BcCw*1IY7r6-Fh=~d{!1Ft z@Eu>ZidC}#TI5zcid1!CD*AJt(se@4C)-4L*|HD54!Zpd%%n~ktXJkEJ~9g|`_rp( z6&4;=77h;Bjl|q&kgjwVda(Z1bUHx-^#v(Sxg$4ZRAukdVgZQ|ax`pPP-XZjmam?EX}MnX|YIwPLG#~+9l$rjg{;_ttxS^w6+$p z5EZM=Pl;E$Ik9#{9dS--6V~F)Y0uGAfhGpT9pQMZ%;&*+9yCDZ;w20ve64=dOI~WT z%>P)D?InY7V*>!-!s%3xiW()b_-wvcam{-y3}9uLn7Lr=TZf=xpsiAN+?w&AjN9)7R1^DWye z0A>o6`z9_5DZ>o}WH@xAv9T7w8SWJcCqk3a0;p6FDM9v>#ojbh3%1tMP_l?o6LXL| zsB4oeWnuc=cR7=^XM8fJXFvSl8Ul^VaIs~BC!7NI-IaGr8WieFv<9--Bazjgj8bu- zGQ4>1KQ3hnt2`MK;|FF4bCZb#PZmH}AB;OZ>v{}dR5Ye$Ly9t@O4oq}5%=ff6KgJ! z-nYkUkQ|-=j&fNw$w=%N;8**VYLr?w^WxY1V>x7`@!357_r~2Ns(kHT0KuSy;9B;h z{(X5DRxriaJ^;rCN~eVZz4igvG4|RAAUP1?Fy+>3AHZuLfZIEkg$rK1|JnyY&O-Pp zUi$!=BOz@a5ad!Hz#Eg#6xbJ+NmbMalXcU3?|&33xKn=gS8vOdx6VOoG-+-rVWKxI zx%lfzDA~-$V8VBP101+E zzVRAZ_4oGVQWmnvb0F(nj#%drVg<-}V6ECuQ`-r0_*p5#FX>^p%qNmVZ`Jj3QCH#e z+BmaVrmQ2asxyZo-Vlz1Gz?dJRaTi;vnSJw&Y}w!lB|4lZ*Qe@B;xcD_ji8L(;ZAc zt@*?IxW6LhqGCu9X;%h-BgqK_8^#5H3^fPkIReIbiI9q8lQ~lF`-q0A5sSvR;wLcH zYj2pF1&Qg#N&CGYAwr_tmpWbsx65?1hP6{K?OA|bZRvI?I^_-(-@;YdHfw9$r#B{F z9DMR%^Jr)9lLue6R&^}_r}CxZz{|n%qu+m?Lq(nhAfGL9>D2%3W~PCq#HS@h13aco!g%rV6L#H(c4ior%yUvulR`~Ch?YCEQ5n(X+&`r zdGKs7%cjT}w(FxJat>Fj#NaUHA?qPgKq@vK0%9?^iMlXl^}HrLBMV-2bq6S;vF4I4 zgG*(IqZA16w&1cgQ)MrCXy&0w$X?G?5SmyW;`tS1fY66BocF}DoSHfp0rQ*xCW zTg#p8@pkrcqsL)8EkjjoBpT>Gn_)NzIU0+T2IRG?OTl}d zv%?vGu8ac=SU%4;6*c+chk=`lXq$IXX_KzU8!br9R<_j{SK9C**^N2vm#Y`4=e)ud zYhnidLrN6=UA8h4W<}w1+0&6HzKNQM+N6)uGpyc;N}IST>TsJY?M{4Q@Uwn9t9DcC z)isqL=j&VT?OAMM^RpAu2v0U{li)o&JA2fG-SnkiyGPR6!QPK}@w2!->PNgu<=}Dm zn!r_T)RCLo_NB*kIV>V>rSUpt;Ib218?mYJUt@`VTPb~LzG8q1d|QwgOD%~%8cpw? zEK1@(_x)vYUCbL5b>)QJz4Igw)|HV?y0%iQ?6VE$Qq48#Q^FsqgfxoP>B zB|rC_>Ev9TkP3ymafvz+*((zMHQ`$##z?Cz=_o}(!wx|ZQcxQ1_=O*SK%tSZ-(is& z%bc#5WCUZ7g~V;nlz}VVpvp8jYWgQBU6x4$Xb3|kcxqFb@iHDZL5=*@;*S1s^8Ern zzOsmC3rPMKi}-uWn;v1g)Q`~qb%BK=G6Jdt;gM2A;)+_I1T>;7Ay7w?l1@W{Wwd6I zE;rwKl%7#)TSFAu+@#LLJzJWort=BA!florg&Gvj$hxg!d0K@4(^fN^=mH&xg-!&a z+9sA}zI6)%u`XBGv@lRCS9QnZtvhCtO{Z0hOD2&}FghW4eiTqfYfHGUTgR2E1TNfB zGg+x^Xs4q82Wov9Guc+P?hLNE>1?WZfVWR`bjr?T9U2o;f+!ir?JJ`H?4`q?{YQ)v zi0_m4xEI`^n`=ibgV9n21-cHd0XjAG6{%@i+qwL@f4*Xu#&l4Hgfn#>zxW`>t}$dS ziga4mf0!ZeVh1ky3dh)0==M&ibaQ3h38Ld+CmN^@Xp7&|fzf&>Wa3qYcZ2?imxh#0 zf{j4zn=k@u3zw`u8Gx}FZMxrLYFxo9vNByb5MBI?%=A;+h$>;$pVriJ>USm+q=l?o ze$AeACjD&AEU3VgWpf`dzO0^Ein-(~feJK0_Hs=8onggvWgNXA54@@5_L z@>)`U0J_&|{qG}t>9z%|G6G0k3KZWib5Uq(@hirs)OrcU_93=uXzl)#a~l22HzOja z_OzpS;jjy-OQ@0XPbQV z;PCy$4e@?FCcR&`alwD1XO^66>_OeFQMyHF+k8n+ma6>{-+cpTj2dhr?ptBEh$mP* zl+m+Pbweiy11+FzXR!dNjsNN9Baf$74iDhfQcL(_IzYM1~G2LX^3I zn|0VqaX3C7iqHAJnG9$m>p#&Y^(PBm6Rls-P%Fu6bmKw@V*9a%?@5?AIsJx~;OZ52 z;1=oIQuV6qDDKy{Xi^d2{=q+&T8pw8kBOn!&5&=%#b$2bzSJk6tWH4x!ezWZee=5- z=Lh-ad{s<$a&5nQCs~{Gs;YUKG;aQHpPtV;bH4Pv{v}<6HCv!uY~E8#8$Vw*qaH3+ z?it>!JzVl|=6Ln~#imd%WoM17NKG_K2W!Z`^i~6Y{*q)Y> z7s1>^;KVX!?hSCV48$B+CYzZ)8S~|EP7JX;W)8y8KHU>Jh|Bop1Mo% z0xqZ@RJv!|SMK{4&DlUJSEGnxq}+nZx-kzuAz0_D3oE zrUia%EJQ;{h92DIfo~dx#(i^)A)A%QD?!@(Rr0KQQs(vi)MJRX2gd5Z^-Zsq3@`M< zTzqK^+e_Z+UR$j)@LuFQ*P=eT|IuG=-@3DP@7H&?Z+&*>S3EHN%exQyT@rM^d;9Yb zx9{Em;FHfjzO{Alll$B8n;zarT0ZI@ujA!_$4$3;2#5lKjRyF;0Nd{uRCCPDJ5^=b zL8G2og8cN&{Gx~b=4bU(zpZ@m!ZEBK;$y|PhSvv}Ttc2XdMB$of*CMZOy)AiA=?Vl zf7?=ewJ;kN-;4JpQ>v*G(^4h?4rZ_P2`;*d7)uLM2Ojln+U|6V?gS!pR&D21g>;s! zq^u2%mEa3e+Qtt?^5V;G?9uccYw8}s30h}egxPVY zBze)x^P}Cl+G5R)PPojBevRA#tGbTScC^0K7gHr1mN(x9JihD4dr>+XPltZ_axY5Qe&t%t{KdnUD7}a*%i{Y-41W3A z3)Ih_qzB9rs$9@6`sEF$wt_WYM!gppPfxqWSmLMtOTB|4&E<;sPknG%l>^_&hiK1I z#oJ%{`9E9%-cWwWo;E#HjpkGP#W#cPX^q zBI?aC-aNsSOJ>|qF2t-0lY3Zo7Az$kdi+h1v70!AMT}n#pSxah{W9)P1rul%Q{~3Z zCUew({VA6X>>M&4_P68Y6$x-&jsAd#FO<`Nyhl;Is*HPYwA+v@BE)d7YqQ>WkHn+s zop{O4YN4OK>(ZR4Q?&z?0i&FvBXl#>e>zqYH2}j9@-1k8F@)d{<75ebJlFymjP`Q% z8}?W~ApoeWQS1=(offLPXN)0KDZo^~mAX72MC$;RsF%mH4#YkXb-t3XG*@e1Z7Y=z z_p@r*!>b=`oacAs2PsSoSFiUeuZl*jFber2cxTnH!jRHLW(F*(SL)rPMPK^mnB}#T z5w!k&I2rHgK$_3zl~V`anEZw=CZy3gy5_UjF*$lhx$=DPtNH#0)im#a^ig@F6PM6} zNjW(=<+3FyVo#qbPjLV6uo*s`I;GM>zMARl)DL5nwD?Mc;6rKGn@dmIpRl~r#Knce zF*I!nh6IKR(Grsjh3lq{l}q-Es~0WT%)3sGzaedEP110x8X|2hgT(t!(Xg;f3n(Y&;EKmgDJlbz+$BFQ7%hi42`{O_00U#JvOE5oz`iLb=fnP~k`LJZZQtodMR8vP|6BWiw6?Y`3kE~{1y8z?m-mzCy*8MUsbvlybXuljz@#^vS+J$Fde!HzT=}RjSyB$8vM=%?5CLgR zn^Pwp6bXNcQbqE!6(Dw-kqgHql9S0j6jblH-#*QAPHBWeuu$D97_QTC%rg|u&hvs+ zGP6_8g1BOUMYN>JSRBQ;XnCxY(2FGcVXmJwqS2{&g^7(B*XJ|(l}S&^#SOzoqWK+f zOP3lI#=r*R<~6}IG{x2L$E%+yO{064*`?!+!;=5u^^o{OHi8Js!)OIp-5%@ZTU2~l zx1RsQ>>*)f>J%i0_U8N9>0$4bq&)jjiF5jQiCyl`J3Tpn8vpHBgPH6;&BpoCLL~^R z%+Hs8K9~Sh(UW%yGwJUG6Hud#jd)6Ojy$Ur`?MJ65~;2UV&nPJ-JDq=(@VP{>D%j^ zO+M7ZqXW*6Er2L1<0sEvq^+ssqEEODQM2?lHZ- zB3iz0ttwC`2Um}kqJ|-v&K4^oIxly#MvTPQnGvUD1K6slE9B`QRt z)=UV6Y+tJ-uho)B44S9jx1Vv3&fj~A{>9y;xP?96~c zxiAWC>?slLYl1fWt#g>Hwk_R~XZu1NRcxO8*yt183>z(RFAXTTa&wzJoSm|vhm6wo z8D$oSb%+I`>PP*l^}#G*?Aqdd(X5eGP4Ab-lLOUbDtOO4mR0m{+#g z8b5=B>?wKj^d$J(@b?9lsITVx3PGtJ=oCX|tmTUNxWGNed+GN(UU^}PH1q7_QIKiz z45!Su0~dp*)@{#t`XPgxwy#+)C-vG{M%+{B>aVp@#hLzS4Of30>m8e(sf+5z_=}!>X4k(J zI%)U%E59FncWLY&Yv_v?!XB4Kdr3Qg!L^n)^asP9v0lxz4}V*^CC2MuFjaE(E$&Ys zAOyzyJEz~U$f|F^bhC?KGA)lqI)6qU0)~6-BOtltb?5@mc(ql2&5i%a?XQ0fHy-;4 z!kpWtkkf2+_;bXIBWFpsl`QGMFZ;as?k6~eCU-U}ZkX}AxU@j(>Y(-E&y<>ZM8WLw z87k<7m$Y6twz$=eBJEUn`8n{BnsHgHb`C41UOI8c7&CHdk8XNe(Z_ucmFh`p@=s@$ zN2xWFRB$f}=OZ183_A6dK}GNU(5%6QwYn$eV2^ZQba7uD8&MK@jhpkBkx}*&rWw6i z;^~Gwz+=PK#qVWxno|)dr0(~ha?AywzKn%$x%}Z^uh!4CGbG$TF2H_-lZK0DWVX0pLq@*JPVrFW!T8E{ z-_?-U?2Q0rFVNCjj6FoZT+dxsF6it@)d^c<@$6_2Tu%vhh|ZqD&9SfV3X+`WJdd#4|%)Ar+n=%Ef_Mop#m$ zKJxk%_DtnzY+L&V)eOKg0~9W@WOMi~MLCS-I&SSwhuv}{M(5Z9tjjwEO@Ce0mtu*p zQxwoXWzS@=T>;H%kdz;#BO?9+Wbtq1T@{2Hoc;ChTZ+P3AlH&BKjgLfdwnyK*(1)s zEVs*s8jt+q_l2|{OAcUJ%yy=eO@2VdT&@Hk4*?bNOJ{dSM?g7@#*0zVbVP?CNn0+X zS-ZkbGLW)s2L$LYB2DB;2Pm5)?;51TiCLLMkR{c6cQp{hEl38uW~L>^-W+VwHAc%R zzLc99k*pL5FUS!uQ_5kpJewJ@$Et7eL_4!=IVz!}PR08tCr6`f_Ire6=sorI4p)4r z?`^z1n8)kOuh1Uq=tvs8Pjx8J5TsCKUT4ewh-^9dq@kJh5AMxmyQ0MktCJZ-EmKF1 z1}I^vN$oH6*)LV&EWA^x7ONbzUjFv)B%+ql)io7;XBX0zAGb^-Lp< z$|L(HZRi`l^i;_ifJBwjhGmt2K~pI$LXH z8t#|4w)A(;7spQ~nzlUFVyWY&Ui`lH<$59_lBoTl{o%Q=H%?2)jhnvc6sg%cFZyzK8I?P6{#i>%iIas3_h^5bRM-F zlrS6RcnG)5aB=sr$O%coFh*h1al7%E8V800y_ z)%+QMR+(U%^Di8V7{4Qpo;ln67XBJeW1ED%9Ia9M`gPUG04v2bG*CBPj)cU0{FnpV z8IHMg8h*2L_|+s*f5e@E!T9L2P$;-IGK{6^q1Hvxi)jT#52K*^p{3nJjlCUPZyd>B zWRM2Px;gQoVR$FpnVf8WP9G^6??Lnjk7&rqc7cyD=5$U=KNWl^wu6W2>qedK`hT13?So;hO_DI5Dt($ITxOB zf`t~<&AFqbCU_?6g#g8+pxbNWDIbzs7nu48WH}+W2Tw>jSXF7@1U)a9ZS(f$_da@m z_V`$IB6aRoVh1RDJh{zq(#vl5ABKkg{teAV)vqc9NJDRuh(e*f>ywJEp#{sJAw{9r z{8+iwRotnO5NsmYtnkz|5PNjRsVXr&@dnqPCe7LrL^0 zwi}3cUj(8t0Cf390zhNw-|{kU_yULcZq-8eq?+E?U%i~Y7cFP`#E{3&KeFAO-;GyX zy&8H%*?-ZrV<;RQEF|nM9XE>jkxPZ?V-2L#X^uBhztA>Y&FzO?pqoyOd?@j8_}wzc z1&T`@lj_CUUoB{Kk_Qhu$cZVk4uq+v^gv?OfG|OcH*lYIXtQN$Te~WzE~$s?lyJMy zPN?R{m8`pv6~@kdIH{y4EUtwaQjO5KU?ooM`UG|m%1th2&)EX`hdf&PHyxeE@+;9Q zcKMY;j_5kM?(S%s}$;#d>yZgg-$m&p@-=* zyP3^G=Xh1NGrSif@gi?n%}eUN7xR=gnOv&lmyG}~AzDw67whTd>1-|jSW}>H57UaE z0t_cUq}SEj*%Mtwb>qf?Qv-HTJ!tmqf^chI{k?O(6{P5iu{KhN{$|C2xe z&;K#L|Ns7{_*w7Y(;d@R$tPtEgVIZX= z`t`cE5HZ~OV)_@6!u$=_;Y_A}T-QG%`?_cNQ~zQm`Nw4PnGLRxGqO0#%(ZwTKE9wg zdfD&x^4gu`RvenzKx>21m)z?Kb52f4OghD%5#yn;%ED8=NdWthd<(_kl{|stL)TR( zz7YTPI(D1h13hD8Zz{gN<-Y3+@>9-~y+T%qZZTG9oeG>t31Qq)L0CGg%U3$@5ASpQEJI?`c8QvvI<=Ij|stI zqk?qrzSeX?+?{9y|52ePTC2#^vA`!jj~p+ zdllBN9L7vE#y~m^Km?J3eVis48Dsz1Ii@jA1ozsQ@1#zf9{WdPAC(MHUY- zS3cFkq#Eao-)bMf1q1)|%YHpUN8M_68odPp=6FF)jgWpV-|{jcO(yX%&qmLhICuLr zXV0gyi_b3+TWHOV%**%sji?BAKAfoLoDQy%T0%_!+i6j`Ao1I2(fM!7T&&0S^TG;n zLbx+C31GJ9Jnsvkjs-am?G;IP0vU~AshdeUdfp1`Hj1Q0BJ&tbifrrHG*lNi|BV>-kKj3G0pp{^7i`X==z~bzvZ^g7d6Vh>Ie+|o{u zd?I<}3S`=u{AUk7xo=?zjl+!rl7k4H&km*?__e&1$(?*fKn-GL>)o3k+c0deZt-X+ zsfue?cgB@W6m0eYJOo=iDc;J*AKq_U?>Ol4^Tk=0UZ7I#M7WTn%OX8)VP!+YC!7eu zV@%;Q?&r)j;u@qa(R#$vgp6={it4xgu+`S3XB$Ufez-XO^7BU1diWLglAD1xbcYb| z7zl&BP36QYHg7lCa7~Tq0b2@$h^D=SHBM!b=%33At(!BF`g=k?%TyAWDK%C35*QJo zK`8^RsQy#>r5=1M!$Vo!hzqSN`-G0}?^Wa&ZB}2yclRe#4LkL`xuW3&J8gJ(uCev3 zH073Sx;uY-aIEW}i~!O*W9sox*{m#$GM;W|U7YqttRrz1jq5Z&=xvk%_Q{vL_Fy(s z@g-a&b`kE*_jVK=(>$#Y6?Ve3!_9v^y5oJ~* z62CE7yWiMtn8SLcQRQsyHaWxKqk*vUfqTb+n*(A_rc4+g;vG2I*WpgfS|5J?lm9vF z_^1C%{QSr*Tg;pe7MRR?Pl(V1e@Rr{2g6{`=ty55oSZKRZm1NC)-RO)?mam@IgSt4 zRnR5YWM@U(=|rN9pmN9W$m3b; z6J_2xJ~^esS4EzKq`X=MZLeUQ#uAN1t_M~gk_|}(yLG@jU!QOiXlRZ|9g$OgaE$X- z|7DhAJSmrLd%W(+g>{>pp1bqW#%EWy6z_TUZOR5;vCS*5xXlR)MYd~B=CJk=Cj{!O z-Pt+5Dz}r)%Xn-RYwZJ}g^=|K`x2C=tU}K?WU;N>q+J?nN}pW&++j6=TMzi7EB6R< zk>-%iStTJv>I*7okN1V|XQz-JzL^yRtioks^{4+=;PF4tpMRS_|7HICSNZebD6!HkA*0L;u-MrlW6-iyVcTRy$7sB6IT3hTN(f zJG;()iM#Vu;6rZ03DH_D4*ii#x6F!hMG52i=uf_~b4lkM(1^Bf(|&S<00z2)!1}mF zg2UhSmv{*TJ)=(f0T<7x@Hm=`)?{1ZcrIT6$i!ko^@nLK&aKeu8YtvwT0KLmg2O*) zNhni^ZRg<-)sYjy^ViglPHTH?NjcXz_~Z$5n3~UMEf9-KVYzv}INen8%i$(w!41p; zsSoR)o-7W&4J}~v&W+7a(>xJDvJ#Y@;q@ohD$$cf!kOir{9iLE*ABe0?!P2W*?BJNVJQi4| zM{t!Y3OYW$@G{%?1_qtc*e24Nph!8zfu+f%A0jFwL)z`}^|67`fG~N2HK7Jn&*BmQ z`5n(s_vV{iEP!%;p*^Tql!)>MG!6dI-xtEk_)@z0URs|#00b}J2 zsaW!$$U;dHURp`;?(vB*?dVKSK)5(fasAM9gma2TwE#;aSQa~(Z2VHee65@RdmEeC ztC`fi{8og&*nE6^3VFYNQC@MZ=uI1M&nXa%ttwo@s(qMMsjg7tXR3ikYba~Pz-dn&L-}H5iGSt zrxqb>+;nkCd(|r{re>k&hb0xxs&KcZLx>lt)ea_dAkzk3y^uhYb(Al#cwf=B4Cq1{ zux8{c;oMU=)bE;ib{c;P?KURA$+s#AM+YTq1B)@;HKYldl;XC1y7R=oU-PZL9DalXsUI?nd& z@cL|X)oVR7A2uXxVK7+UsdNfKP+|lddX!=k@OJ=soc(AR z9Z+%Wz#8dj7xj=Ex&XDIA^_?3XssX)q5HIWNGgpW)WuOZiK?D|d*f&CQA*N}ei2_U zVqGR8=>&iF-Ub6qKGI+Vh-%_Mh845lK)1SlR=*aeK*KHMD0gghGp8a8NaJ5SA6z&i zeii2>R)U6+O#VK0O|;Rd@zn5zYglaQAy4U#M=y!I2Wh2@_4Pcn((F^=ptGST0BU zF)-NzhsP5L1@jIpJ@eDBtf-e&aFZ$3N#1Pp7?U3gozk{jcC#@s;k=U%KJc7 z5RnaO2#B*51SX1~rcs>-DJ75OCe( zp_)PJJZ|4*H-z||Kyu|uPC{25Ytp$(0p-EL5m!RkV9{z^01?@%LkVDnnO2VB$|i=1 z%Oa$Oc!E69rnTa{$cmBX`5wNrkx2^{DIN^<6bH8)NS)ffoBcILtFt3zNU@G`K_FsG zWG@UgJm0dAtdkk=UZ|fCLBNURt;VaUoOM}EF~sG&j?qJ$g&;uf%9^66#hE;q+u%e+ zCffS6jyg|)a`w{AqAy;!pd908%QTg)Y$hlSM} zO12X3&4r4S=V1yp%$XWI2V&Y)g4WUr7Hq|tlJre%{puq9!3K`b3(>(iR$Cp4$>;@E z1y-;i*^eo%Rm&6$@Ec)UKvVImk^B9D?Onj@3n-l{mBcy3wxM8(d3_&nVeFn{dM6{~ zXN@BQv<-|S=GXwm?m7&d^?yiVZ_g=hVc1cat0ct8=T<#UwKj$W*V2zm2vK48cH(vz z^ozcF0rKYZxq5?YOUziCc6hIg7z((|-49o4^wsgXLs!Ph8H>|!9WKUci~l&v&;}#Y ztHo;f_6>?bNtF_=W?i6AG|qN%$$S*Mbf7gh%*Y~@L&JkO{Sj_&x=?Th{il0JyCXyJL`B-^R(rpwx$ZgcVjnzyP@tmpnbUfM~g7=MP({LnhJ~9IftRwDXHqJ7Ikreeg~?fky}5Ia{Q&h?4Sv zu{Z=_Lp7nDzZ)FV{k9mOVI53MR3PyMVjrRwiUSZ69CZIqw5AVQ)EIQ>G%Xtusexrj z9mdK?hP`H5v*sbX1v%yO1NMquvKJ5Qvt0K8rqbj(Mi3EMWQ0RPPW7PCoOm@`RYe{w z+OZuoh@SQ=(k{?m$(mrUEDkH5d+v(o1o5|Jvb35eIDy=M<}72!TI^JiZsmF}tZ1xy zt00p+#6Bsn9;n*Gc<@Fm4{Qa3BZS&j4%|@Lmvw!~1a`Z!w8lUBGRvCtQrguH$78;* z5O6%^P!_n%7W$$8erdIp-3fnIl-<<{{QgN;?$Hun567T+h>QZEgMWJZV(H;Go3 zHw_K?c4aHch#ifG?1R7u6}Op(L6IAF>nrIUF?J`m@j2IHYQrCwm7grjDjDPDV1Ne^ zSSG$B`dVvQm1S8~FemqhP9iOvps`}&?w!K80u3X>cy)V-3*R@wX)3r#Im-B)x`hEz zv0(;m@oT*dXi8fMJ$&&M46GB(F1Zh(kI7PoUojm4U+WJ;Ww582Oi*r0Z$3CnWF{e%Vw(^go&gIXs*>}&wv9M20x zGU80uQ9oo=;HD(Wh~<$tPBy>bz$u+lWpa8>pU_iZUaBQB@v(I5;Hu%X$nb2a*0G5B zw=6VH%-lYH6$BXIh+R@mK!P1x$?ib6z)o4Nd8WV#UjrROtBYt!jh+6C;}MMpE$ipjMWK)WO6y3&_!13LMduzH=7klFI@m0``(JiQLs)LCN z%dV}&WL>OmEQ(G2}2Mo1n&aR`UOd|IV7UC zko}4yQ%hMM_)45ZzmYhN8wu|OAlQF%@@_yl7J75^&i;ylZcLs&Il=wjttrONXZypy z;j?>6N+}16A2a~AcE#_CW^=H$$(!I9`CM1B`VGLj3U2sd_>I?cduz3pwfD~z-HGFA zVc9KO0?AIKgORB{l3LR1#Nh~sox9gu+>t;Q`Etp;<-xYLN&jD+?{FwI2mk}+zX4x! zY{{i7?F)z6APn+vo!K}%Ia>qcXSzRfJ`1h+Y(oux{E;>SiFBJv-YQg@t&O&ozMZnK zhdsqB{f0ms?dgQ_H*3;uXRQ60WPpsyjyk+}2XcK&-@bwnG0ka|^E3E?8@9>4>v*o; zJhD7Igi*5v!k=q*@O=0W9N_oG7XoukpOCER)weoYym39C&wW~7qb0!EYkMfOx#4wU z07HYPmKlV;XiEgq-P%sG+R85i$pZDv94Z$FgqljQP6Ivtr$^r>!0A(&QyTOyBJx~8r*|)??M8CV=*uDU?&$K54a{tc}(_cOeXJv zAmc5coj~e@i-?0)3mPvnU-;Shg?hLcliZ2T|5g0LWdZib#QR9$cL5i{KMV2VUU2Hx&JwG_R(Z4Xvm+J<2_nW~a$JZ^f{QmNh zh)>Z>?|7dtioK=Qo}$4G^=f)RKYg+AAOQ$iNQHuY(7WV;7*cHawVWre&y6nIK zY=X-ZP+h@X$u{u2wwA|v*-1eJLC2S$W**@`o>ekp9LgX~A}`AJ=DIV~L?r`SCCLh; zwWy*QvhkLdUFZiX3i(I4w?q?O*Osq_9CKQocv^yrxk8CLUyKgq+T-NS6(@nz%}~rG zpU%Z_@M^;W$fj_vFZnX)_Etn9kZf=Ufcw*|MIH zN?H<*2J|(fQ!cX8tZ;lEvR_h(Qa20)X=jEaHwY|1`d2%oK^#9mmzgGcq|Fi^HqeoZ z@pcFza;m>VpBHYAzcH1%Ivv_uDCttku!f-DKrsHsG2hm%z@XKrj1?YwKN!CJW8B%S zp1JH8V8^6UK9ddz!H+&87~Y9zt0&kF|MBIccA_0)UbNIi~c+5 zm1sz(w2*Lxm){`W_4BvidFQ=%h+)FC4}Pc6ow&npe)G&`|J=!ykd+{3kAl%`wQXxMeFOH#+aUAP`qrT7yBzde=(p!1q2?5;0pltz z46zH9Ih5={Qrln(`c&orU=5M-KWJ0{1?Pvn%-~aVV-$4np)Z^%Ka65OK;Qit_*p?& zh=iTARwc=lIQ#ZKwiO-OIZiqz=P%zQogbtA{V*woAit0>r(eyjse3C=|I6v*dz8KW z>v#TZo4;6){>32vm6zVh$NpRoT=~!E&r~Al#cu)qL7&3u?Qasd$rSlo@`qgrc=E!b zom&$D=Z9@nBEF|1riV!8-ymUhKK1$*9yE*JEF_e@SF%5m>Evs>y@^7py zKOn>p^BpZT3mNOf@iHTjD^kRRkX%+HB)@VsvhP9}h}itM+Rsd)Zn+VBtg^64tab;T zpps+-)0{EjtN-4dJe)oRnM6?FM-Ip@^)7g&CkjpSfl2$v0Ka`WS)WYb6h`UM?_;oQ z?Va0jps(gz*x5-X@Jsk@*TRfY#1FDCFtBH8PgB#68L8p{GNUj z-dLDJgr`ahsDHnGQ@{DapX;}MEG~{+RrmcvKnz_=0Ot!4S{Go+2tK5pcD^PO)$_+ZHo4I`~rSzJM|fq-;I5>C~f zXU^O2-0~kZhK>?17{qYoHjL+*E)v!>b!Nc~oJ>;X>YGGaL-@@q&#LR~XCjKRK3lfqGXaI7{aex=*Ayu3|#ZR{Ys9@{7G=J#Oer@BB1Xu&&l z=vyP6-;Q7{KPGSAj9+f%&!6Pa_58l2jPv(KezuX%{38GUMgILo z{vEv~aPwiAq+!nA|2n^A)nUrW@9;Vc^dPkERp7>v{B!-!N^oiP|qna;Xtw z>BB(Z=Oov1Edl&eJby{a+3ete0)$r)lZX z9a2HY0LT^JoKOaR`ph4FAE1fS{^bK19uqJ>jda$0&EN6D@JvnBKQ~(1_f41jzLbc- zycOs1JXxMcvhuC|uvb3-G&@Y<%&$v(1EV_VYL7lgAa*k#^qn8{=A|Xqp_zyP14wYw z>hRm~V}l=W(^kxholWXI$3zEH`3;rD+LbN|wR z{PN~d>ye}K;LUjCCo8}F=}%X^^8NR$`NF#N0c(@q+Aoc@-GY^56t{Yvp;Y2)IGjJC zU_0Alp#lR%s-eRzEb)M;+ittWNbLJtDAutbKBP|E>Sd2C>mbHuCguNX*$k zrL3ATFlg~X>n)4tsSO2tG1Cc%tEhAPvpaZgN$X16&IT}{Bd1}IrKlT|dtnmL#$6CN zK0n%(#f&<}zO?;pO!TKeccshn+oAaLa{l61{>+bB&a=F^@&IrgJA+O>tr^BXraR&y ztOh4kuyPwq)_t(@jnTcq$L_MIG#&OMz2Xp2n=YQxt^2v#gIX)IQ$X3s<=d z-KkBK4g)lNsiVsdFx5Wa`e5VF@K-6|5}S#E%BJA}ssL+}w}r6g4QhV~$KQw_-hI>c zHn=6`F+o8Gm)ZZJo|J`S^-nH6&E@wKfoXU^rw_Ta`WehL1!5TniIa38z+}s2J9c8r zHV1-(f*1Z{4W|4o&lWqH#z55CEKldPh)MVt?O?`$ryAqbH&xet_!U}alwE4?J_DXhv~sP_c(ihP{Tk0=t%rUIU&U-(8Yd}F+DM?_>P zFi8yHJd=~XDD6p4ox_58C>e{>Wl$TsMK#t|8N^zvcxL;?g#sctOcQrJW8*au?hKu? zK$T%LEn7U37xet`$C~yN?#X)JM zP#7kyj14W&`PX)>0|Et-I8G&5ks>b~b7Nw-wE7D$Fwy>e7l&+O1qGhxrvQaCu!vv5 z+c0f~OY9(+;;{52jDbAEifDg(OFD)tSAtcDB}h6%Xhpv5CjbvuZ=D$^E(Krc30rq3 zvu~V&|K#Kl2e@du)rm>ZXT0bWP?i}X7b=UhDOb27HI2}nZp|UNm?YGENayNzS4A0- zi7QBPI`eO0YO6WEzSk?k-%q*%4^_Glx6Ch+*mh?MlN>|OH)KFD{-{|D2TUm7tYFFu?aD3G3euGzdNr}|F1@>?t--Y#m^eiRSkY>zL@%?)x9tqF!r^U4yXs9SoGQJo5 zUrb6Ax?=VMr=k;i9#B*!v_F4aK`qb^q;i2&d%8oTSvomaq_b!Bo7hO?;OHfwGBK7T zgcuLbrX{FLW>LLw)EeW`y=ZG8!BBPe0mpbYqI`S{p~w@8#%u``iG^{r$+9327S_i& z;PHpLXFMFDCUlo%15o|pd8`bW6mvJCR>m3dsn%uo)KJT-7yy7%55a>l7-l<=`e8&L zG?t+E9a2?k<7&U3J-C%&)TBm|zVHQg>b+$oo56^;jWXcR7peCBEUrj-U@Rm6xPw~l za-Sk-1qOkby3siGBGD#%0)Wa2Xle*4N_5g1Pdw2gKbTo=D4z{+=;sEtD#9f`jy3_K zNuuX#(MK(a?CS$+?qpN#TvF6DG;_*T2d__FetzuzitGopAMNfHcoqLk2IpY-0_lQS_U)hrpYq=z(47Vxn7h2F(c7IQW(a}%7tFhgVINX?7;vEkN6xm; z^XKnf`N-Y)9`ijZ2n7Doz))D?>wJ3s+JI9wR$*{w-^`&LnH<2Zqo`~kq>KaUw6;M8 z3iaFl3|y;N-&T1o}>WJNLfom%|g{7WyuT{;GV-EQPLFi_<;2OKl>9 z32SjD0RRzEsdtxE0hR?%6Qi7eqI~+<+Oh00!W{zZ+9yiYX)H{ndGgfXKy3T-HHush z_t$RSxpViygHJwNd;9j?4?g+q?)IHeKK}Ub{jGJ{r(V0V_V$C%KltF@KkYt!`_>0r zcR%Ysn0$>;?YlRvtjsTR2YEoycWnC^TMrEmw!?A@gH#m>%795Ow zPIiU4XgJ%_rJ_!z{}nBfiRqHGP1g)G4%i612@auY8|SJHd9gmZ6vScdgNtmUU~N{^ zWdOK26f;HM$%Qt@*0$Mo*fznD3DvcbZH9(e4;Vp8k+X$aKl^bbt$-6~!b0wXHQ9{B zDG}OWi9gSSqfM=xK2|+4J}_q?fT*^mEPuKs5YnpCW=NgKD3DrHC?Iah{ z(eSU1hA%Lx@rgYF6rU#WvY5>1I(=(rvH$3;@`4ZZC&G1h(o|2%m;4MH##bJ*1Ai8C zw#8e(>a-%6EJun*eInDhbS=r!Tk#lh3M2%k8lv==sosc}f4fTyBs%gey+75bwizXa z-L*%bV2k(;6mfbn!s$Uh$7rY|oJ>gECfbsNkI20J@$dfMJMsI!ji1YXZYTNqJNffv z``p$9^u%_1@Ib5R`Y4QBDVW!*D+7Q!i|mm zkaWbSiwz0MXmB~2oS`mzFbQQ#dQtkRo{~TLEg4I)rEHQYlk)=fEkq)f)m5_$0k<+jRHvM^Vo6K z_b@_?t)|R+Kz5S~2GZ99*-78jl$Y&^RSh{K-Auxk;m?+BETTB0esh%aoypXQ_O^-9 z7MkbDO*(5u+2GSoQMnaji{f!QR+bFy8m@tNv&ko{)io5#bY*$yH|KQzV?8M#x>44( zP&)F!7Rp;?w$2P47;r)5|4@c5><1 zlHJn7mlZxhjvA_AC+=esS+OyTvBnt0gzelIY1PrWc7g@ArLc($i=lQ!1Pk3vpPuiM zn35E10pR5nkCpQQ3=RZlsFzv5mNTPkQW3Z|&w{E#ReRwO8O}Xd+4E$Y8_rl_P>o)* zs|u3>J9lXS0KmmQL6PH=0zX7Kl{b^!3=SSSEW>%55M-tZ3D-lLo9P=7Q__SVyr@17HZz&tH!-d6xu3F20R6-gYw)DkeYI$A^-=46|Ye1RS z!5V!7$pUt`R|fCW)-A}Jq|EU|jMtXdkI7U`htNKPpLtbeoukIFNb-^v^e@T2*^ETq zdbZg2=*XowI^%o7kUv8+=?CtoFEyUlq?rh!rL_`l9V(ANPa8v#*Tx+aH zQrS4&k&DV~L~FUQq`XNCrmX02mckFBST750iKHRs^c!i+a_$wt!66+Q0Aw9C zqmgSbXF@Ozdy)y)aHx+dIR#8vr))aVcBdO$4Crv|Ee@w0qnuIa zd%d(`9l=d<812W+V;&-$Zj>B!y*z6jP3#eGg$0S<2DPI@w3xa) zDf_O8q5~}(a({q<6fhJC?np$lM|K>;nZp6`VACm4AboKg>kI|22jl^s0Wf1hBUR1Y zu?QKe7BUXx8LU!9NLP_3Ke%_yD=wz0JSb9GQQ*^{LTJ$J-itnBHE*k-ywMADn^(5u z6(k&4r*2NYE&Zh!xPTxU8dyJ57cMm96hNx9rHao&4p$ZfJD#6XIT@*sDIXw|cml9WJ+;rmgO!<~>;Nh0m8xUkw(Pvtv6Cc9{4^)7bv=A8$$6u+S zUnOnUhoe@tT7{KXP_J~po#99v_hF{kw(Li3uRA3~nZkroKAfL#_W}!b$Wd(?imOwF zfTfi_48uD*%eXs40N&WJOV-jpSiQnzQ-2s`Wx9CgAo`9b zy3N*{fTI{^Z30KMFK%1AQV|i2JgYs3@;et$|FIlFKZ!%w_+=u*erI;I{%`W{zxnUt@4wBz|2D_{ zm-%yf34ilvG4H?1pP&BgEk8ne^+esyZDHsHD&7KIr?irUR)xZ_7{U7d*laGnyZR8` zb%o=S+=>9j+LbH6#;{^2RQDDvQ~)sQ4v{atukQ)6U5QiZQhR5!wO?nEL@O}2Qm`go zq41|pyP_zz={a2mAwy6T65b`F%ZMa-2(>}Tv;)c8CcHrWq_O~n3~Pn?$&DVNxMn66 z@-@}@AjAs8L~x}U6ap7j9Tqw1<|T44TiY@>LTnhrRZZ14G;AdhX?O?}zv7#dR%}Vz zNgi{>4G!{UW!zH0Gpq*pP%N>db&0yzH3gyM&a70%6Srf$W@=o6asIdV%hA-AgC)tz4f6?K*u<3s%6(O5JKxFx_VX(Dm9%9%t0lsP z>-?JJCYLB;GW)=(tBbJf{OLyPvY>nSN(9t4Ay1O8+M&Cs@fq&YG zH{mpkf;hMSC%Dj=ZEO&9(qkDwW-|Ov611D| z&v(xs^MHVTbMpzAfpIm=@J@b8v$Ds>?qA4SVWyd;V|9yj@i*Izv3^l0gH;`Y)0FG} z!s~=ukc_irpEH-t2Zn%-SvrTKgG!FYR`ieQ76OjUnTbD@N& zCK_9zXW;TaIQH^WvBl&9(C8y21reSX^~#~P>B1WMwNW#XJWEik%gA7oc+;aI zI~OTWrN0i3NFu?;Mto*eJI=Po<8`&$V2@9>$KTlN=p0r%m69yxY9R)i*S?JNinlzO z>y|ZJR2<{I3n_nv-C?Zg=>{9|qvh$nWGk@3ilk{PJBHhJN$|_opd`NCXQB@v$g2Xh z3}XGuJ86Kn{3EVsinZGe2Dz{@uJZ;7z|&1U=srrlxCJ6{(zsInWR0t(MX*&_6cTNc zc%16=Yx>pfl7evd%za_fft<^5!|eVEBT=+4jok5Nfc)Jt=q+@Pw;UUbvnqYtV9EOa z7va$@jy_T{F9UvV5Z<;L;fz+!^|k~3!Zv~D7}avX%jSD!RLk*}C;p=ybWmMn;BRNs zv=#g!D;R`g;*F;#>l$yiAf~_or z3cAZlIvXrjjG4{5M8nn`)3k|;4OPj#`-BUzQ@V)b6F`;_9hg<)07z3L`6V0`X=&hW z1ejOB=w^N;-9<7YlL)u*z@h1i%|D0zBkeZ%f2gDsTF5d8k#H@Ti5-7j?Z>U6@~9XC z%z~SU>gH^z5DlmyXMkl|F;oQeHmp$|;Dcwrb^d&M2eM)>Lp}L z&9tDjLEMnT-wO;Kjfrh~4XlNt42>YX0XzCdu|^hy=M`_2Q?tT7!<%#NH)RVshhC*c zmb1t|!u!|ffD50L$1_ZJ8TVd-+u?e4xPJN^=K+`83LQd;h$1Q-; zc@9B@U!^HQl8oWX1{is;U z*^{%QLvc<0+tP91EylUBv4N?x5x7IDv2jN~19yOn^c2owIWVt}s?OUb6snGpPR1@H zg&{C08yvwICNS0wb`Opz<^sgYF+%G64w~%wmFyHHw%CKvR{6>+%&mHzGUsx6k(WR- zgV1t>k$dMTtLuL3@)6{?dGF!6D_nHb|6x7GhD<) zMv*e=6)S@>Ao@;5G7$lg_CQPCD+fPTmo`C4${MoAb<>g_5^U{KnlwVQHS_) zK^63sOA>qEnb<=r4~q#xt*ZsPpt}&`@eK`#V1>esFxCQ~dMSr96e4(HLZV@q@8{Lg z8^3x7AqRCJ->|f>(d8(DeS<{rRBVo!vSG6LC;jfh9K^pf?w_j~pmX8U+LU&?a};W7 z=54vl$)tOQgBzF>Y#NQAU8EP2d8tdc>P-BM~6=~Ewh}7wq(g<&;+!*K+_yWpA-gn z;0#ShTw~>tl8uYl*OkdKg}jbozhIji=?EQ{wql#Ma(9gas5gn~-{9<7KHF6SCCthJR|;!$M|W>HevEHFko?V63kJNnz66ay zM_dKjyy=g;glKs0lM41t!e2D{K{6_EmZO0T3h?oNWizXoJgy8rYf3_yW#hKmkdx0E zW%;jmE_Q;yz&w)$V)RkfqjIZ|dRSlwN9RZO1FDt0E01JVqrlvE!+GnWi37RjaxS-r zIh}WB|9D1+-Ul8%D=poVSsrkK61NFnxsn#$5GWC;^Oe2!eka*EWrlSpe0&o2T#J%TC5_Bwn@6@3 zMqV5`)8Y-iKAF5Rxg+=CDF09lACN#{z9Yf=wR^h53TH+Gfu~gjj%Ojpy)tPTh-p|AUsE9Bjj5F5I8+Pi;26hf4H)id~5CflLv}4t+{P^oUY)* z^%3A>IR?Oj;>H;VFGN=A+8XFI)-R{QDW_{6!3FdxOGj9*#rXW40$|EyEwY5)uRiwUNd*I6MHq@>9jhS`BgM>K@G4q}YL9-@n72v{j?K94+1UeSz zlR@^!lm1M>=emT}*ImqL^=Z0~CLwn{@ z+HP&5XABZp!gTF(7n*lF$|0lv*rUe5vh?wQtDa!M6)S23^Ay zx8umQHbSDr(NlliXI!!T^QTU=^8S@OC`?{#&&IEiXf^)8%*&k3eHWh1&wj$vR(fI9 zWDHzj+s!TT9EaD<%KV6*Z{Tx-2O6{3qq8RH!hu?4Z=9p#Ha-1_82LjA48h||{(btN z-t{*R^XJq2`PcdLZ}R8z>vw&HoN+t&T4sTOP!ck|M$2)AI5MjNOZ4b~CW4BFFdqg?m^{Sww&C-a8H<3E+(;f3 zX)fj*G57L>lx=!{ZRq5ZFW6)~E_F2l_TRn}@ckF>{c(Q&_b)l`fBllr{TJ_!_wkDt zyjT1GKmKvNcm2=e=k5IY>-_mI^5;ML;%Dz3{i845JzC?p_x#_Vx4(aOwDwz4Cx3c) z_7`hEeawHpTz_MYn~;^1)_gAF?GT$)W>ErH$gRned5izIU%ps-`0$}_dwS!I$uBU% z@GIVgDgN>on>)YMhi^>Q-c<54h-h`)m7J2b%1VUBK{(+ef^R6czCKaESyyv?N73jH zUGtbXdG#1S7?&+Qq4jSojhwj?aOU*c^0&$63U{n8oPX z-5@@mQOEd$VXytDS|@rw`yINI{g4FtD?%#|!dG**_AvPkZF6in!?_|dR2#EIYoDJ>T3L%Qd$^H zt_M^qS2Es}@4or_S7JxDr{N(=1Cygwq4cX~)Jypr^C z_qCXAbZttN)%X{jHX17gvVEuo2`;K_Ks7_~fem@VdLV&hU$|F_V}{hCZaT(Aj0{f8 z2D3P`NH1#MN(^9=B0Rz+;FbNKsb1M~q&s=r``JGyd?76p-#8jx529=XdlR~4ks0co zMg15lJN8$h#EA3h2pzCds- zhjB*Fnsfpgu&zeV>mZ_Y03FdoRDWU2axQqbr-6=A(^f4a#=yhis1CQVV$4bnR{{Oq#*|#)8y7^1&&e5wbfyl+J7@FUc8c8 z)@W|QlECh7WdJm2F|5T9PY{pcei_6`tyYPxcwXd#M@+jmtx0n{ zxGS_yR!H)pFzQ>Ok+apkb}^D6nRZxQj&u2u0VunR+5xf4(a{XM2EE{kU9579kp(7| z9l9S;wi*cJyL<&Bq#3V8t^_=w5}{vHxW2S9I}w1;5@}q;>s?y1d|ZB6a;key19L~{ z;0ot>RSGG3z@O*Tr|~`%Y=UEI49|-x}&0d@dQF(`QphK3TI zc++U2YwTDb&d`t$9yWnk$3F&T&~}FR^B7LA}rV=%YIHdVX&Fb|J zYeUHb_`Mp5r)-U6ub}tjj4vj#B=qr_!F4X2)ZoT2K@G~3!I4&As?NS9_Ks- znp)1l-`Mtm@<^8eV`wM5bm^oAB@6|U5l>A!Y#4P|X&ZkOFsnsfj@_)H7~&XC>5v@J z+R3h>HbLaW)UN=f%41kY`>>(gkh4HTF1&p{3=?fwYDZE5zE=iZj^&kB^IjM(?H1Ny}HwK)8ymyocHsj%hGMB`B?a zbBTA*uFNc&jrZp&k;ckiz<6w&m|$W?q_UjUU~(|;2&lRjgjkuLT%JV03Mg)nuo0p+ zWv&Ife7i_+V(#Ryi5wWj3-f7&eixlj>T0KE(o`2R90^#Ow%?Bdta>|V4AS_0pL_H; z0f$0Ud`1t1pxX5*?P2!SIt#I!cp#4&^hC3Sq%67py7^F)i_-xY!Y?~5xN6!l3pKT_3L_X|GJh-=Kta;&+ z@6BFv$oGg8Ti^GBcbJaiZfyR93oN z$itwK0g0>N#RAO;ArMzf=4Idk141B}ff?{+7+&TH^EC3n185!)zyE)&wZHwHb0Rac zsx9ntmh3(m=X~GVd#}Cry05i=a>7kO%fI8I+OZ##2Y%vC=izueyapR0$bPJXKzNVT z$L5u6zV5-TS4If?+QD6Xic2hswYK6$DGc0)bgL~L42O)CFMrGn--G^H;0rQ zymlWQ(p?>_D(gE03$x6?j%2afiF>Zokhd~zoQt&@pf%rG2I71h5=ugVF)8t`im2w0 zGz`f?1eAz&+-%?JjwvT!x1h~JIoe=SCC7j>ODr^vfe$OuwXpIghfrG)pc2|hrkvam z9b#JH1QY#h%r*(#o1tVVjs=+t4)JJROOP#HwfVjoRkO{-pen|mTV}<2Uf+cN1au$6 z7dMx{k0WjD#Vxxiq~>aWHLb8d%S*#?BZ(bx(TBZRHsUjil%t6dhuyd2UMzHXsU588 zByTv2z961ZpMu7As@Hq;b@9!KRsip3P1TZQ#z_bt&ywJ1fKiLZR(<^kn|Q2#uxUH& z@<(6Mqk3|ah=??~*L80WDSXq1um8*|!UOL{FgRHEc%W!ScvDDK^kkGN;5}`M)j)X( zRNeO0PF@*QG=5o}zy5u0Kgq(dAE>S254gAKr40)B38ZgOzomcds&Nx7xcmpi5<-U) zO@pSB`3Lk!n5U$JuytHpCPlfADoDel zYsC0JRl#ke{6?n|bH&jE+uLiN*rk~-k%HFVq<9R*Epx%B(=oaojUY)OtN9j;}b z-F$ea8<)V6{N!Q` zm14+A`aFG1ES8Q>+o+hXC4;3#^Nl0#63X$0aU_TtszmS(wcAg?HNBrLz>s|fO=tuA0@)Ou1rl(n? zq@yoY?U6Qu{ZgWO2k|M-i~C=a3Lhzi1MHwqs}tpOg>;831UHj~ADwTfH_bX{kSDm1 zT>`frds>LYzPt!Sec7>Z6t(*xp`wVpwoDeNLlIfcOd>$g@aTA%%&og)Tif#A64eMcxS#-YXhm0C!Q=Tf9iCb zJ(jcR3+*<3m^-lj!`;b0ad8NR)6jXgGkL>}DnnIBriZ?baEOabHlFW!t<(w~Ivo_@ zE3vwMIa04&G#2S02ps(WxnxLFdSoM%ny(uu?b0zi`o$mwV%zzQG$OqooOU)TnbKNI?`q1ifnw3DDi$+?xb<_48Scn1ny&}Rm zx*~JKgVpvcNGHWfzMHC>D5|eGsN3ah`kPwPka1&6j*V$)LxU|R9ANA;kipqH?+ggZ zlnBQX(RZ_MydB1Wo ze8Sqn!8=o0L>2X z%?75TmMV;fKZ${pg$AV7u0`b8Gb&^4T^ygtifu=C%tqLuv?k@lfpT4o)T2~uev#NXpoJIEK%WU9M?XrGvCO23vQXE7&8U1-bVyX>Kwzb{QVP{CS*Gc{b8Adp=kJ@hp=470J` zP0ucJe(eK#z#UZRhqZzba2@(NYocIDH^y+&e`k@2iD{`ju7D~sU&%3R>rS^Q1Igco zQ(F15^3Q}){f`=0W12qScB4ievnCieq5R~XRTM}a;yK;SRknY!A9NLj<1BuiI4@~9 zb`{R7$VXA39?LXB^onJ{DJ3GxaupE|)i@MWH=s>&6AV_`v;$CfJY~=NjUQ1aPEy^7 zN~5qah21WLB~xcc!&yKTnb2KoLsvxL&K{Vl^}+lW25MF4$>ikXSY4$VN6|n2l~0&w zZf{@xc`-YP6D;G7ly@~>9Yh-XJim4V7r&;)=pefK7Siac@+*xyG zuktZ&!Rld41`ij&x-F_VX~_(Mus)|nE}m64PvY?P zpJYE->u57$Klv8LKCV*HfxaMkN{op86bBd2>+9#qdgqqF_8f*-hTDvSpWkuLNGp_Y$)4^V;@6tahSs8wB_vXTEP{_&;u{Ipb!D*sj zzRpv(xWG@2@tNUiv7(S+OrKXgwvU5XIB2Bm6gOT+nv)I??x0}smTyVvz)G{TBSH+_ z>CqFE0BxH1W_q|Jh>;wpL8NokTO#-R-BW=>qx4izK(_J;y=ETZ7!y)9_Z=*tMVcPw z2wg*T@UAEn<(Jgt&9^a*BM1{FOc)Sme+u9X`Dy5WN&wCSvP`yXw>Odg`tcLbb;tkv z(#A)_PRGBtKiZvqXLfc^>0oT9&wBsNy5D0%m{RP+DM-mzMd&o8D58*NHHTUxFdAdw zd@pEeZ=C8*(#g@q{-YmbYS`5vydRu@Z*S-KyOZ}6Uy@2c6PL@ci%kgqM4Gv>XAB_i z*liV?z|Rg(HgF?^|I&j!r4rYG{>8r>^^1Q#KmVot{MYmI*Yoo)<>$YfpZ`&Q{$_su z<^23F^7FsR&;KDm|9XD@UVi@8Z^yV_{hj#yJNa3E|C_%X-`8```&sW7-2d`#2fSa* z&+q5wettg6&qaQIlAnJ*KmUdN{MYjH*Yoq=&d>iKKYuen|MUF3;aI5s4t6)SL)=nj zUV2G^XAW(NEuyxfz@OZiyj|_ryI^rOQ;WDta~70^SO#^|#55|<`0w%b=uvh9A5313 zIucC!^^wg1sNU6Ks%4V(%HIPhj=iH{027sR;roS>5W=A$3T@uuc+*Fnm+Z>Z8+}yW z8e`0ibJV(-Yw5J2dDF}ePQzQFTXqi(HJq*pm5YT@WW+|Z^T`8lvY1L`_=Rg9 zWx_f_%4+I9F{gZ_mqun*sIRK~mIo>ut;IUyewfx6j|Bu`nwyI8l{T+C8q1WhCpcBg zL5r6~TF){~Sxx~;NLg-4p?!$@-Ox;v@-Iz<5FPz=HjgVe3dsTe+N?O0YYLmp;Yw6v zZ_0-|4orO*Gb&0ZIv@FK-zd;*ahd^71!q5|2|3^zm!^cB^`1Ole%55C)9aw@7j9@itQ?Knu$3U^W!2%=f~>6hH@EY`+4(4 z++0;Rfo*Nlmw5bDms?GpeC=yfqGFP{!#u!bCzDS@v&q^JJ1nQ63vy3cRfr52l3Ihk zjPOF^cTxfCtYfIjYh%V+5*XB;WNV3hUX8)L-qvrEklhi~oYmEMzk%iI-y%f;xjx*0 z6yxIXR)$LSwGA?|SJK56(STMawsT$L!e>z3ymj7_8#C4=dTB=jVlhE>Mf7w=nQ;~%FJS>mgySn7)G`PUSd}Ewt=g}48Fxt;0C{=2U71+nctYmF zsfQrPzMF_=O#H8LaL!~U_W;k5`*$5>0c$`ThkRi7dLYI4ncZY<4?#mjUWN0Pz4D@q<} zyI?-na=ugm9Hm z#7mZMn+*}V-rDJFr?mA){XtBWSb0>fQ2J`vtV{P^Uoi2De^?jZ%pG zmrC>`t}cyq6K^PR+N4HOAaeh7WK)~V(I0YZ$M~~eu;zwi5nj;oWmFQog$8eC-eQP7 zz46E!HT$gIgWw~eR~{{t_{u#SUqGxGF?c{+>9IY zBp#WoUKu>Mk#`6+=B(r7pK6ZH8bCEnq5`<}HGCp`1;upSk_yxS#Vid( z8ymm%ABLU%8^4*KzkS1ghTqE1zm}hWt3J~o@CW(%r+z1%pXBGpe->~qP9B{ozwoXs z(sqnx$qk>uZ!|n)OzjZFPgLy!kDwrKe>1%5Dvpw`f2fgC8PY{pVinU@hqh3) zrNsFH7`R>f**$>zwu*W_qp<9BJD<+yeMon#TZU)So+4b84XY~Xa4*BGDO&Gj)+RT$`^DIUdYmkrR4iyDqqq-_8d6vLh98 zwiAIlGHW2!9nz+cX9|{V+@&uF>G)zS#ls1xKznAZLRu0qr{eazcS}~HSD*VWNR=Yz zco&xcQula@)q0c&h*LaLFLA(QvwoyDRRuDeFNyRUv{J0v9D}e$Rd3RE14`8x3XBL& zEJH|hiX4o^+-_JG1hDM~KrKt7IpCcmZpNLM39P5afw` zDLXrBCoF3Rm0Va3OEhDX5u>b%Q1u zeIvfV8}m=-OgHs7=8XNaR5`V?@vhM6badT6YVjcAbi%q=IOGuMOy08bhT9Wy`s0g@ z+oG9?d1&EIq{f+;9?RG4>*Vj-Mi|=}!8^0%YVbk;CHgHc*cR~y{0%!BIuPtA-FCw@ zXuB+~&hDrdUPFIJ^Xc572uzGvd%G+9lTQXHpME;X$((~G_)_ujWHQnLQ0#v}jEa|0 zf?25sy!14;L~Qk?mGW;T>4`IKuBm#~Z^){&ycw_V6yA{T zgi^psRpqUyNvuWx{meAz^|$i#@9xFl|9^e{`+qjZf8NjK`Tmt9IRD-=)^#I)|K2Rd z{|nFfTz;<{C9o-Mg6SxE`R>1 z!;nY+;4?n|q5S6lC_Md@hvVnp{u74x_m|fDz5M&| z{>F@}NJ5#$F0l0=t(%t9kvX^2E;>!7>Hx#NB(i)-hQk)enXSTIIYZovT88J3ZQPzc zcCI9PcfO1ngX5SBX*S-JNyKBkA*&PXikfQ$P`K&jJ!RNQU6&IhJ4B+cFR*kmj)`5) zCf9czBniVqG0sObOpQCU<3sfzAbnAOOf5-$FqEo%z&$N;Sj)SG0T?~yAJ}H&0#Lc= zNO*GcpnBx0IsRQb(-_R`qeJ4cH?x~I#^B{v3zT z#vOM84@gXcw#9buKbhcPuR(Eo8T~4k#EU^K9v!#C4^DK2sQokzQO*8PKW1<6bFNW4 z+1dEY>l@pzZ@m8c#*e+e@e@B`vtr{ne>Ld-Z|CR#ou3!k7^`!*@VYiyzuxy}Fw*>C(@?6mD(4s;C~; za75TL{>%j)l#V(F?6M!KQ8=U;8#SH0vh#}EM7k`rKKG8M7bp12&luoTv1UG7X8lGw zr7P&2ChQ)xNVWI!l!zITFs5k91}0bn+WV@mc&vFpTD1<|5twg z-TeG}ek0!h)A{)i=jWI6^XJ1=9zA>_1$payu1+NSL!9~;wiY=qerR^^D)%aU>1TI- z>i%T%rGu9?KG}3mDUyJ=|b8~}#@B@FJKIG4LHecJ=RKgDb zj-={6|Ml7?u0Edoq<(w{FFKrFx$~Q!e)?L1;lp6QC%E`4H+T6AaQuUWD!$mnnSOCf zgEVF2@Iki6V#cSI;p>6w-%e%XkLW$ImyhRP?z6#RXTC8K*`Wxrmo zv<)XgF9G?|0iM`9(RA`Ng4)>l=3fuG`sw_ZNzyE>! z{7e69{Qc+tW_<4a@A3J~{Jfo?zmlJS|L@1|#7Slw_u#tpN8R}L?O(k8?sso*{M<+L z!-H>byf)b&4Q5FdL&#f$AReX~i0MT9Vq@cb|Hcpe`9Xf(_`N;<{pw%+r~LV^cpzkSl;Lg7=@(L6f5hZgZ|Xs1O&@ZVCmh_`k43enQ#DQ>)R5&e4Q#^ky!gIT2b zl2=pCe}o{nrP34G)b4Z}f-vg!;Iq2%;A9WQuTRq+zS*68KNQaoCU*gq&&hH903E0P zyW;ao0l7J^f+a6b^UInLw+}$s#1sD^iGD3d{6j@nq83L0B2Kn73^`Gx@n^pJRT_=D z!CIF_uCFUQMuFmcs*nc1QQ<^x&BjBtyS@F>i&{y1*0-!al;l`F;VLyWz|lNC<8JnI zg3F3WICqFq(GO5V$U;yf-vK#*9N-Cw&jluu*8t7`rAOU&*O1z;SV0WFuX{dR$sq>R z_>-L4>ieKcn-Vk+p|GF5Q)@ya2hn{mywsp0G@v3d6dM@}=)Ov25-WFjE28+g(KQ;+ z4B1n!i1d5;LkLuh882mP zw)0?zc81X^%TYVJX+%)&Yd^Jpk14Wu-}t)z#nc=WQ}T@|J6dXm&1K!!sgQ1yE0Sb? zrR&P9IlVZ;C{V7WGlp6QXv|MI+@5TH{Ee@x1%v+ev)`aN*Ca5{va$SQiM+BgB;*qf z_%A1{&-H$zsH>6FS|SSEvA&ooN-{!P;rS{HY}C4rh)9#+7%I7GAR+}PUn4u?v9ej% z!(k&B<@0R?^7-Q9+>GNXmD1i8(sS6BY&bPO{`KwB{`gs)ZeNSUq+In%STJKt!;w#@ z&-=c11_7g5+5sx#RK!X-nMQ0}TLSX#!?$&^#71LQO8jvCV$Pw8pV}l<)aD`dpJ7TqD6SIixcm`seX7;6UVN(+=n$a5YHr|6HIcwVaZO1d!O5y{EIxYG|e}oN9 zo65L6pdlyy5A67&JGx4SUuEBq>tCQQdh~)4 zA@sbHsY%PONpEcqw+pugI>BvSN-M|~FF>iab2dC%kJOn&(CrbP^M zfWDNYhZr|J`2gKAVWe^t(?|tCM^G*~wQaOFu`({tC2JX}BoAn5KSd(nW|ne^7`T&8 zqmpun;2tW2-Hi}Wj1-_en)wpon(mX8DzXX1vYoWbQ5k_>+E6rNbP66t zroovT5a&QLG|{203IIch z5Bgy47vRdLW?wXVRnnJi?CKo^j^C@|8V}+!ol>Zll&tC5amsc6)l{$J!&AzrOZ4-{ zH@@EfTzu`%e6_TK)6@O-&e`E&|D&({RKDcD+HbR;dX(Q&+ja6l-xqI@S>D)A@-Kb2 z#K81b$+@J(Oe-3+hm9WQ)!!d$50PmFW{XpU;;ZQqnj$+C**Zy8u^?&BYrv62*Qpe0 zTDPP_01Z+Y>kuW=^JF!lEJ7%)#8RxvLrBRL?qVjrx&d_2VS8)D8G3vV2uL<0`kV#B z#JHhg0{RCU?rNEJEeEcR={(tslS2~jJQ)HAO8=g>N2Rs};;maSErI)(AjYT&beKr6 zw{fY4?G_vPG9$ICH_!(kD|ix$&v53Qxt~oCPzH}wXCqu3p3uwDm`x4p&K&mQD)qoA z9I;JxMUQ3oya;;-qWr^}rdDc9`&Z`GG0ga(Hf~rTm==0sTK#6!b^&I1I@kc)BGWJ$ zrx$-xM5~_`a|s=Jex}UG3O@jjRI<`4KL-bl7X}Y|3qtHspm%)s6V#PA^mhsG=`Vx&t)%%4Bm-Wjsx7vyO6d zp0_V}_j{djvyBz6h5D##R#uh5_GkkCwDC!sz&VXM4$_f>rS!5DOL$4W>)yW$xnJ?M z&!)~@HW$`CR_V6T(bIytRH=LSPCb$$94Ldz5*!@G0J61nS2XVHh-3|&+Ppo`Wira@+dIqCIoCBO13#qRQ#nD21klHPxLQbn$L2!(Wm8agVJv81Ak+_KGKsiq+BvnZ!UioA}h8tr1@9P#I2`&aB{JajVMZ#wFdd#W>6 znsUiMy04cw=q0}8hppLQp-96If*+v<6?oc7kd;Oj|`TPo>o=_ z7#Zw{rFzn4k~WJ*N6g*0_(W^q51m>*rFRXisFVGCTl!sDmSg=%P|Odias^0BTq@=& z<&jjCE17(*yx@g_s{z%P+Q?4BZIxmnY;I|}Sw3H$et3B@;gMCPBuTxJ7j0E4(%Bbz!RMZM>tZk8P)%NEWJqOM+MkulJ?r<&_OIAyTV?Fu3jC|T|6Cin zGCcitoHHk1AJT%2D2IbQw0M&H?U$w)Z6H=QLj4mqPRY%jpU^G%{NWOQx?j4LU9U?- z^@b=st{4C%qvtPsOe=3iSSjX)gCR-f&dEybgm^0Q9i2)dbr0DQeP)1^W1FyT7POw@ z;kSm2EyD*ZHX?0jho`6wTs2Om*0*j0XnJuz$4jpIR#2!WTZ~VF1R{(|G0-$_5^7A1 zzv@u*MqcnsmkZkgrt}h{ksr#!QcD_;{(0erltLk}(h|MIBBYwdn?oU75|B~0L@(9a zN^M<@wm68wn{sy%XA!005gM2#(=B{zn#mkSxA)m#n)?h6HN=IX*GAEB>W%KNP7GFR=t z?_E5&2J{e&8a8`_ z@0%>#!$OI`Tz{<}hvf#UX_v-)IDWQ_)#5Tlo5)*!x*&k=Cd6tst4AGo2+bWJ9g%U- z>bNUT_nQe25)bm@{IAj-$O2xR=#Jp{uH<5i@vt6|pL}SU;ao-wrPm;Ws8DO!Hd;Tx z3Io~g2;%P|;HHrQTZ~Z@51kAYZ~Dw{I(mO!6xOD0%(opZMzKQcIzyiu-j#^{sia{J&E>-lYCu`+Y z4Rh6*;`QZIHN5e8PE?!+EIHo~^j736$*I&I9b@h}4$sq$4zQm4@LcWaB-LK|=mgO) zpJ$(&fxgD7YBVd5zdZ2RbW0rV;wPeo;azbCQ;LPq4kIf8?m=EuzOCNx9cs4vqr)$w zhU2d~$71khC)?QANP95y4ScS+x6r)PjE z-`b+y0KpyOx^FbK%&%!u-U?>oxddD=UhOi+KE(sA)0CiySin%>Xo)i{u5}qC+9?d_ za82a6c{ibZu#S!+zpp~LDv!An(Ym=Y;T^Zoqc((@OO6>sPy=jV9;^PIR~{AazWH03}0fD9qvN}1JZ?KQypy|e4Abeb+q`{tMx4`x^B2Du;hHETe&Tp+q6y-E8m^B`f@VC<3t9n86#U<~s!#GTo zNMNbfx|}6`JPX!npBca_g<#S*x;&O#B%=jb^_qc28(ErIDdcJWqU2u8elW0r<`fq6 z-BZ?M(Fg6*oeaP6DIIfAR^;3$<-pdumIQvH3vlg#uVL~k+>o~lmOMj3vh;Ta7m2-C zvefJaPC%rpm*8F9j`h`Y!evM+Pzn-F0o^Tam_w>3ke(eCMxZGjJ!%Y|o^J)KqlVO$ zf8Ne~9lrx7cR{9NhOzgjr_+1r`rKxmf!+`u_;CQ{&RqboCqn$;K#omyp$i8_b|Y(t zRt>$&ndVJMf5&91eK#LP-H9TupsnG6pI+RfgCoq%GtdN)fY6gLLzyw88NQ6eAmW@Eoh zyc&R(>Z=2+J)cC!6{BE3Q^@3SF-oQuRgxe$UppLq*jI;JLgyvpF!od)Q2skNDxbbE z+L*6h2IUuO)D)Qq{n4OkAl4U1be5{e!kfZ##1_QpG=Hd=|Dz+D994~xSYFlU~qRYt3qX5J~ZDCQc#DFh6neH_lF*(GzewtDnx37(Rn!ehy;xE8j>R=}0^D ziKOXoE-5Et*`%Aus6wh1fKs&V?qUXLTaQ@YoJI??Q~!mdDsO{#Vor!0=Ed1?I_?8q z&2p-)3WpFY%MK@uFB(&!{+UK1ISFY2A2@N4yDQ6|CZhYLxopR_udb52Q|UMHR;{*VD{mH6)Iv zzVL4MFqmv1O_F4`x1&6}E}7TU$iYnt9xba|JL3Qmjk8r~=89qt`GEGJUQYP4D~#;a zh=mAgBFHROqvJd;GKHwkkQhUq!p%z)1lr(JdrBIm_S>c)A>3EZr)oe_KcFzKATLpYNd0^UFuDyUwY9ObF1e>LWy!HE_)K%+Zp^&OnV?&3TTqhpib zCG%iPNnz5I#z-&~X6Bu?am;T-Zz_O*Q!s(+0E%Ix3r`@|8`ixnkH%mV;&r_iXP;ve z*m)XvXX7Lz>m1cwlQo3{NT*d3v2ROgWU>9?Q{6Lxdn}*tV{Ov|FX!>9w zr8jlbpuHM2LL+`W8>wrIk|l1pN=g+1hvu7F+;=HTm3nij6t11E0lIa2WMK5&?t_cz zp?+O)<0gDkY+lSj^wmG$(+;Q%J4J)=!21d&`UNSUQHYfOBn3ZfS%8$%M?#8Q52$4% z;Sw%sXJBgKk&52L;M1{SY&so3_ClGl8P{aA3{r78VtdSO3T0*8i>t{2p~ag=R@3)h z^a50>}GDb{-b&`Nm)=bDSn$2OrYsRZH3 zX>;I;5?>RVVOCULa{E1@r43{b9zVW@El6T?i50RlZKWF4!W;GjT%otnKyxBm{J)+HSvf)eh@(jOzwE9s5V_MhzQ z`m*E`tTqiW=`tNqn4B^u5NO?(xNNw%lPK@>%sk0Eod0f)X|M2u$@P{sp}1ezA)%1f z6-aCdjV4I37?Vtc_dF2B6ynJ_-WcPG8RcNtP~Mv6YLbpikx9d`wg^I+zG!skbWAP0!8Y5@BwMBy33|X$aA{E*(K%@SfKe0PbAe2 zlT&EfVy62(fITnQyA|$h+PFa9r6nu9Ptu)1S5KzHv^hiVlumFm8 zgxPN9D}I$cz1?6iRu_Pi`eAz@(z!^SQZk`Oh?^Abp;6gr*bdhpWk=sJ--Ed=Ajeg# zB`2PRL@ai~Bn+2#$FT|Z@9pTtYPjIFYt9s=l&}o)i^*%^#V)$?mQ-YX!|skZIrE%+ zk)n6=^$8t9KKUfg)lWZ_mjB5oX&fnjzNqic@H);;K8ioLw+~N{pWDLxX5RiPtr{h$ zE?3||G=Ane1XLEmi;Aq_+?7J>gTd!eDO1nHmfLYCl^~jUSdU4U zbi0@itd&mWa2{JN@{1)TL6y_R`g-UluPI6MBRY+Q+d&tOEJ2DN+?9jq8iKv~;4lv< zy|;Hy184y<>J~n;kYHXF0z4D0%JlPgEhvvxL~->kgo^i!%aCLlvj~r5%8l=HLCIFh=^^n4r*48Z9MVSh&4;sndoG8LAL?$_RWXkiW$Uej$iqcGk9>JOWxsrXYvN;W`z;a7rzgk zP7IlM(`PMk+_t)Uyqd8DmY;4p;4bx}JMO&qqVK;bO2uE+o!&Xuj|RmDrV>p1$xX z-pwFPJ2JsD@5z4G6GAh&{D&VM9;i25o@wdik00u``SRu{RQ&J|Lr;cLiiPGKPfzDS zz`|&YHZVh%Ru^o0{DPabo1eAIvK5k|7+$7=Ha?jQ7e;Z7sz~=xjxAI8ux&Pc*?z_i zn+bU3$+5MfeOcOdwWiUahd7xAd?Lm=skF@Wrfh87gNe}`)`@Kp z&hp>8T(o|wt3p8%Tl>i;OV4xP60{o|NJ6n-b;5;FmY)AC@IvHdm!1_x1)Fq=ZObgi z8K{FW$~VD?jJC?i+#F4sgnv_QGL{U*ux0C3oXl-A*Cr9u-Y0-C@YWO}l6HU^rfxcn zc}s?Hxz{Lpc1(-iC|mS@LuEJ0dlOEsV_nr7XU5yd@%b(k7P?Y3tUP!z7 z^wVq0uh}y>LQsDWbR}IIemD!e-Q;rcrQPQkZ2tHs|UeNq+&BW^`f3Erc zvNJK7>SgEb^T0F4%#_ys&uII7ny%x%aNuL0% z8@#a{n8Gt=Fr0atfjY8uxoJ_3vCSCM9lF`{lXg4^(le2n)1VW@0#ph}*d=7PjY$38 zQf?H1jd98uel~NmCD5976>^&9JPLazjg06y;ScLUg;0wf%sMm)mH#6KtvNRZf{ZqaVGTTqj+W@c1vab`rhz71a7;dC)8*=~R;QVL@ZP0ltowmLNWEViz8N+8J zgskWfV-=)h35mGz@0T(1@l$IgM&mEzCp&>L{^2D~}JHI=OYec7XaODQ_`RLjLPpX6Ke0|(ef zahJh+CWPErivVyLnq&B;zvElFly*2Gg<`jyVDayW;z^Lf4@l{N>$cc0*j}0PYn_3W zYUwARte-yHt3=pxg9A-QY%G1R0hWggb#8xz;rQ!W_{8L%+$@M^;X_x~Gy1C-+Lw1H z%Lo(;8D4n`_BI0qo?}qcFk%nr&>pf0w41L@xNQBk$-C~Qth>kf2J@CRcVBTGd+mH| z(cMZ|9b~Hf$C=8hSU~xoj-I^c9NnDOp4)846!+9~n}O;l3a#|3jO+d@eTSfCvyZ%W?>QeLXz)g>ld9=Rk0#`MtXxIzl7Ot)jn(Fn_@sd;q1^F|Eny}c!y z)5URoZ>8SUab~ryr`J?0#r=Y2}%i4e?E(2iv3BlambXyGrV?dNmPv=9GfA%km-){5~D=v z8yKbJJU;9e%s8Ju^0A)mFa`P4ckbv+EBze}-T}WCCpzO_+KLw^+I5-1(7u=n8iROS zueF4*EB)bVn#%xbMSHp8p)`aS2U4l1sH`sE0~`F;;TmQa_eC^DO z_TGN8^x_`{Z~saFJG+6Vr&fXYq~#AlyDzT-v9n2UL!GMA;5-ddI58fhX#Vlwxjy9vD~$xY==wM~7Gkj??CfGK{J$7of}OHobpe zMIKov8TkeP!}S(pD@i~|7*~iXwPo^4Djd}qg5~9vXE~ERn&~`#nT31WUJ$7?fM`#)?gG!fYKEU8JLN9;IG>+V!q_5N`KEl&Q8sYI#GC6^NK^`R zLz0TKZ1OV1^xz}a#pWZpkmQK~6@FN<32H!n!g{-Joi_A|I@NQk$$m{ZT(JJD0moHrLSzX;{YxEAK9zv6w>W&DyD9e| ztS&XxPp$mE%+;>9T+qQc#3EK_%JTswnHG^{GJXEfv{u`|`l5Z2!@v-K2cF^{nl4n1d+==!bVrc!ki-CXU z_cv{-k}y>bG8w?>aT+`N6U#f-W)g;J^n$IPBH&5MvYMNc8b=7IV3>~L>`aGvG=Chh zvs3e~DL^`@Ik<-!BM_mptnpqcNi%mj3;D;f);v=Gc+;Q`Y;MdBlzj zL4ouUUcqyO8CB|gvfZ{%Sx2g?L7bAJsX!gY8@lTC2$rWCc*ebMyw$+cjGkv3M)=5F zo*rlGejnri-HUTo`2;GK$$DiIekAa;2{CM6t*s2%#st?RyP^6WN$I*uDbdz4&?Bof zq5|`?A+8xN+)A(>?P9S9=u6#WxzBm1#Ocww?sw4Hl)kq~)I-cg>60eJHWOs+TLU~P zR$;hn#(QpfLDSUSD&rI|+MmV(wOm(J*oUIY=Jr=+cP7MB!J)$%j5bj&REr2!HA z+?9aSl;muB8a-9tqD+e>5}~!M;^)b@mqbj|d9;c>_^`RofWb2MzKHmihI9ScCR&z8k2)0hErnOwrQKef>I`mMj2%P5wVS( z$vJdH3hB0 zRryRQY5;u#4)VHp;gKh7X$WU7I$VP`P%6uU;egW*XsaO;RP=0bh z6W=T@{xT*_pQ*B(;z&7lgn6LZqs@w@-GRu6EBGrw(h_2>Zpn0S77I4H%7?9N`bV?L z_4oOmWoWvzV$x0GweQ$IJ+sop!fuPW8<3S$4QWv8JYA4IE+UMZm}i`#ah(Guj-5tp=8Osw1sFR~Uin2q$&`Ek|Ill%EK}vi5L5 z=qwwYwcL0cc%@(6ZB4lnjDxl2z)zcFxjq}DIAE1EU^vP&g#viWJtbg7hh|uLi#fM4=dLzbPYak~q*M+uAzwgLWh;?L zLx88L`1JPtzHS@}_om+WHn0Hqipw8z{6Hx_i(0bi)R+LtVRz(D7gWWFM`qhXE41kh zK)Db~n!t~{loMjmK_gX4H_&?Fvmx@&pPbeW9e^NL%kM7K^uUx@q$$aNZ^nrMTu>fW z)u7Rpi?lUlInYcb?^O;QujFcO=CLzL$Gk-AZ>bB=q%OV_jL-!|huLhb(1K$n(hGcQ z>)Q^Vd*84Z;y5W#q(mHD%s4kplY#D2!NaJw$dYm6bAV40)5AO_f{vz;_NQ3NDH@Rtwads125%VY8YL< zO=-KfnkhxQOiI$){3TYQG@s>wou|Ss6)8)k%pl$(fdA!t?xOi++)`Y%68kqhg6C)J z&JFi14jQwVmqrLm`Hwam zq0RPpr!M1%vuNT%UrwUxAZrijr_vhvPuvOO1H5%FZ{(qSB8L2rrgbqvq@FLW3Dpyv zCn*P{K$Z6)Psd?wCn)$Q)ro-+acP3l6=e{?-T4K6Bu|M7S4?pG=fN0@4 zx3qUOJ!wJBTEaf3hYRIsJR5Tpi8yUH$wwEx&Q#6q!?N@0i~OC~kK`jS@^|RTVlC$j z8SU?t=$D&PYJnKsMFO#R-uIeyl`|^0TI7;qfAap_yKfZ_^Vz=f?YG{3lkvuD5JBIWXL)zsY zjFiPuujx8BmMQy9ft;N19#Y`&`0$rQTqckA#0R&DWP`iJz|o@aRpOiJzZ@C`rqVC7 zs#;3eUos8AWjL@LE=@t1wZ7tnAdk`l11kFt7K!z)LiEOlC7Vv21i-&$#PCpM+x#^n zYb4l9qe&rxuh(;EVAtI(}{JFPfSe9uR%ur_EzC;+|IqB z#QfeNsK3Yl)c3PCL%)Q(zHDn1k}Ml|@%}U3k<$7$f;~fw(nHF-DFZ$4hVv1T|6fO| z*S1ANN|+7n4Anbtd}}jAypADqUWOn2I!ccG*^=()Ub8by8YDXNLS|b*XBJ1Chf6%$ z;n$vonZ^8KHdV(0m>x$~HRQOoXwFz}6x#=niFxRh5aU%@`|N~Cs+ooFcmmIH|8w1-U*WX3bUp~KxMsMCwkM(1g8!d zQ%9q3SfaahYAeF$*LKYL%ba8W&#`7JHTGh8_IjI5RC&)5T6QLlO!9&PS0+h4M5X-U z#f(+~2e5}6pDSkqOmraxm{j}+IK-vkE5?gck}iEhAPwKp{yFI`-wgJXjpBp@?sMk# z&F$@kxXo@YXuq<^<|Z~i@N<=`ISI0(A#v~7$Gk8>b2I#Htx%VakDI-O`%_DgfP}ef zP@TKz6>dfZV-;D`0q-ge$f<)30|A)(I@SiqhGZ9W5pX3vXt#3v1||P|(?CoZ)zysNx+%b{)=J_lj^fR8^);)s;5h z!P?O!wO#l?e{kpq=_~_AYY-xF2}GC39L&gMnG7>dF#(rqquR5|7GMl!sO_$hggpuJ-T?Hx=a{^5=KxUIGlt*j%7w`{!B1euOc^? zvU@f8T>qidm3RF4iEA7J6dPOWuq67CVCa0sLuhL3C)V3>u(N(KwTniA^I&hsNVo<2h6OHb?KZGw>1jo-AYYCbT?*oKajC z(tYA75ZIo-wcWf%tre@vUS>$1muqD00-+c2P3aMG7%{K% z8&$9lQNQ`RE+0i|DO3(eF*ZTZiy|WNBw@Kss<6UKtqXxZnY<_>`r}_j)N|)NK*4LT zfA`Hh@4oZq-mN#U-~IOcZ&En8`S!ct+I#!W@4Wf;>t7SQ<$#}xVHB6hKO2AeU~-FJ zY4S>dUrKox5h%{8`v&zhlvMUX&E$ zi$%o0st+aLQY3eQ8hb~}B;4FNK=0BTIVWnoQ0BsDjVLP|C7?w`)8tLfPQzUgxFw1^ zqvsP(Q}SLP8c7x*5SH_+@Dpe5IRsJGWSwzVQ}UqKT;;!c;A-Mj;u`!9NT}6 zAu$9BL9aI<1_PD>wA4yzsM@=GR^f-d-!V;D-uOU>yXLyI2m2JW`%<|S-9alU40U?c z$&T51!d8FP%imLwqKeBZ%@$Y2+nyM^5Y+L3fx;dwj|cYiyNbHly%xD^nL3lUm|)`( zGf=nwNIE=om#xHm5O|&*Z`$=E_Wk04^=lKYwV^Org1iv7_6ekaVx04lgNKc2?8sn* z6gQi>d2!-i>r;qH?zsM-)`sPIR*!q1<1$*#*i*t1?n2H{u7LwyAkeX_?h_DyD9Q!DlM;OvQOkS7r{vr+U_`& zSPp7tH_9Qz0FTB3PtU3GJuLop^b9X+1NsxuQ4k5TyH6d~$%rZ$ZiJl(;v%gdpK)Dps}2^UA$#@Z0O z1G_RwMiPf4t9hW zxe0tW+Fh>Z>Ukemkq_c;8oMc(q}&wQU=k5U>cZ91Eabkq6iz&=<;(E{um-pTYZ`b1 z!@Z%&4qXB6W~T1GloFlL;AF|)(Hsr-VK7K5+$lGM#t%35kky~d$e%XiuDZt5@=xi* z(1z+AB6#(_60Y~j1tPRx>_(Xn!tF+zl5QI`A*F6(~m6*4S4%JPN zwvFtMClt!Mc1YYuj!;kmmFX`}I|ul$YwTCJ|Td9ETD5rgbLGO8qRW8+d{E#s2hl%d0 z2!uZ?=%^j}FsAmQ6Vl}N9+1eG#$G@Ehj?r5<3c|<$d4vLnW@$Yr;yLN(b#kR&Yb`;_@kh&n0BMr#sh zxW~Pe#AWhL6YA~C-*VN|u3=KsrgS1>=aS+X~Tz-c| zT5Z;{I7wCmrURUSI|QXk8!6ZEfQoEjn2Pj8{2c@;^lf_pml*-=Lgdp(##3Mf{tsnR z&H7~5GpMd8vu^7PAQiJo3q}~*KO(-QFd%Nj{Xvf4w_nS5?3@VypF`EeG)$MO_9cBz?lCEQ_U}=qM)lZU64a#HV;tfZz za$lKI)v;pvA0zgJ>)2nhbD2q;(t_y&7&q>j2D2ePP>`Pw5ASh}6_#5j!Sg<_EL+|G zzr;b2R5vg*VZ)KP?VCVPRt_#`Ez(+cp2%)v*v1+Q17Wlh6{qAQD0dhp-0eC~owN@< zL@Nlb7@90**Y*R(u@>AoU_N9^veM3ojQsu~^g+y zf#M*fI-qs`x<#9aIPtJq)J*1cvIfYk!D>&5^<%KMYml5$;sJYM5Vw{dG3c2pck#}l2VsQITE9e;gw@=qr zO0Vnm1C*5U`y|vKYA&eC>mDC-iyxT|QbU#MF(@9ejdX&%P(AR|f(zH@ftD8>#GRsv zskiF5$Ornus~-J{eGbJV;36m?OGme7Fxy{97sS5Nzi5TVjYHY%YmnhcYlW+=(L8m%tr+P_7Lm;kq6uAxf=~tVC+E^S7mumMO*Ld|YRYJx5sywc^e;ZD!%5VNEukT4)s#(ONal2V*# zGk5lo_a4Ic5~4W=ToB)g&-C~T-uzaD_dZQ_gvjCD=)kv~q^{1dPZFTlJerWwVlZ~2 z515=yN||_O9i1z4&u?WT6mXqK$oQC@a8as)bohHYaE)--5x0+^AcxTjyu@s|Yu-mT zTM7Kw5Ivb8;XjgRQ! zo2(mYxPDFe$D>u@(*+@zY%CgX)6A8u-|wBxA5o-LJ}CB4%^$(J(t}vK#I&hX+e8W* z$JF;R_1^nLkPkoP#VUhygojr7jNLsB(1LIhi`bdm7=i$`Ic%g@BO7}1AS&7LA#16z z4<1IDF%T7-C*m$}v1(EH8J+n^x)W>i9iobjs8nC25%}3jvUKhmmP|C(0_jnTshRhK z*~z?i34)ZhYiu2eVjdh1Ie%#dLB?ogsEO!iG=XBO;mtEPO@PD1fu*!b1$prKsT>Hh zlk2+SJ~6t)*90Mw@VuWoWc$Lu<4C01sXs&F5$uV@`8HRfMXwek5_SS(V-Yxxe%got zLL9lZ)YQ7^t(E9S`#uPAI@FO)=R!LBbuo#yJ7y<5z`QDjG#Q({)J4PWG;7WwwZ?Y( z+FK40h8A-`vIg;i$mxt#h)^pxR^lY%D3Pw2!J9#=h>N3?G!v00H?k5slRmRR(P!$d zPzj_@jFH(6Xh}=)nH3R@G6qsUO#zgF=UAtOqs!2JvQNn0+cohl@<4HEjYB)I# zWm@8%;wJ_rZ%F{=)<$Tp3xum5g|dqoDbRin(%gzT5BKMHySr4={v&=6ETKj)aP8OHyyJl%ywR2Bv^q z?s8VAd`gDH_WabOYM!1HXQ-17WO1f0<%7HB(GWSKKC6S_$x=nvP;8zM4$Yd(G&8J> zj%KbKyY`~6=S2v`d{a3GbXWNzdqOwr=r^8MUp(D+$y2l$B&3iU_27^g-tRmT>mDC7 z%^r|`xzlQTr-KW$dx*3qbJ8)_lst~muT&8I1#bXarUxm#y1EmVWW<_?%3O32G^uI^ zE!U?E*fsJTcvo(~prtToh zz}2XLAbo+zKIPU*0EzTbWoq!2^^4pW#TUbUabNScV43PWbPeYw6#EAtgF5+^(86EV}-pjFKge|E*59k`0AR%=tRf#&x85=c<*?I znd`thUn!)nk7eb1MKXv&SRH(e){sow$#VvIO&d>#1Yg#&@1zYaXw_&ixQmLiebG=}Y!x(ZitS zr_Q|5zo<>AT}Zv;;^Y{Yv$dD8>L~LVdZBeC=%}>fT&@tm$4z%QqpAEk$G)c$&#H`; z-0j8Ab_LB9rYqTo7_-mz8yMG z*uOZGz>bI{gC3sYWXs9)o7+d5ukHdLc!dLe#N0(NqNiF`f=jPc+_d~c7c-q}i_$xg zreGb&kdiN2Tznyt3ICYrVwQyOo{+nKazGVMv^&H6=vHR)N+3)jsm*c;OT#NwVdJyqcKtkz&M~V5O2VlC9!y# znn~?UzSH-?3-%8JvU8#I^7%fREW3s)gcm02Hl~6{%V#yL(=O^u3gJK&jsT2(bvi?Q zA1U!VoDVf%hB0%iQ9%IJW~_aSFz4yT84aapatL%m1DAep5g2HOMio#L6>X$IM0Gh%G;`>>Okp8k88XifI~%5SKMNQCO(MO`Otq@K9g zB@g3t=ltVynMe2h563Ae0tLdSaXA`CD4IR&sh*Q7Hs&Y8NsNCj|K4n=58@Q)l*pei z+zH9?Jb4$^7aG`RR;|MGVY(_99p+Xksqx0ccp5D_2OWg!D-z+^3KS{vSQN~6fTJ)^ zg@qjW(B>kq1f93L$fN~(D@dodD`#{}Gh7|6$rcy@+U(;g;Wmd;D$H@8qpOpDBNY(;=W>mDGiEz z;X${Xmr|w!>h~3~NS)NZiIS73(?Ra4mzQ)hem~8ld~Tqo(Nlu%LD-7TPd-_u1R8XJ zy;B+uL52*KZSQ!v({KY|i%gmH1lI1_P(uT55QcWfMfAXH#q!cFmsOg6{VaSgBvT$8V zrCc)g-nHOmEDcj>cv`0YzXmVYyVI zQKVKcHR@1YLXEJ_AJ5!|w)4f*BqKb$!n@Da&Ln!EKud_d3yy?MEgp59Tcl3Gej}v7 z$h70o$chxSHF=jt!l?b!cy5qM5W^C+guyKp2U=r?25MXGLm;q9*ux+X{^yoq%-w1N z3WX=1y9K1&FEW16qd=2A5-Z=1c{8UyW@&PAacdJOqEL&3u{yNO4%X;J9Z2}ykN10e zEn1?A=PrUd&>x=3qnhMfV&46~JJsX1h_=Wxv1?5r$xiVspU)72jXN}bN3eG%Z&+YL zeERcw;H{`3IS0dmc$*4RCuE%-qKBQpz)V?qYA4i*;nY^^j$QtLPu03vU~O2z3Gn_X zVmI96*|j8BPmtlY9mtBiprcE83KSi8UQbmew2eF5a40o;F(kG*_lD=DM{3cbL^CfB zx{ExU?ifNK5Kyec%B(6z{Pdxd?hroo{y9?v1*18O-TQ0xlIN8M8E+^1GrgmRG<8xG zncgxEIpd;%7ODx@+U+1EbJl{L$>?jO;d;htTuU2dTJJe9tSz|3juO!%CbDU#_jNE&7K*hmen^Dru>rQT!! zBBxwHWr{BGgQYw6F6ReEEezrQ(Z&7y7&2sRxn13G_5(3{g|(9I?ffqN4r^#vvPL?s zl<&l@#Zep;4csvUz{aZfR^UAoidevPqTF-za4{PU)SB&x>35STu0YCf-hU=##@CN~ zA9M!O2yv5=M&gY%Y5q3&VRW_gngCo7v>@&ZN`RS*UWtC4%isN zYRd<5w2=O~iKyfR{EDH`ku>ueC!&{78yJs$#W@PlBz_hu;Sb!XLERA^>!!x%&NZI! z43&NjHC7u4yyb(Rx{iu)HM}!InJkJ@W0sX$Y_7RWh90g_zer7$rVGXqVCYu;E z(c29(J>tIl`|~{lsf+XBEa+dWzjGFJ#6>C}Ox`2t$b~JumgNHkr0|T8wsf6*1i*q=-PAY2q+0>bvbbw z#Uu?Gm6?S6$oa0wiVdZ_f3Am*pp4%9)X@-43X9Sg%e9-Tot#}Jda~1!Jtdvh5$FN+ z1@8X|cPDY0>4t|S=Uh#}RbQZt9^FxV@)23{q-UPVe`ULMAomdxq4nfkt&v-jMbOt$ zLD##3qM+zb)ht=_WFIIA3NAvIiuV51-_d5r(|G@~g_B3w6lnRMBHNaK$*Rh~s?>%? zo}q4sb2D_|YU~-DG&FztIz-rr!5YnWRrcho%faKBG?Ii_*;#|?ZDyi*@zVq|d02aS zS*&cpG;w8WXxpJZwa~c6R8n6WvtXu;NA!BIAQ(8}POu7Qd5-V<^D(@rz5$o(#KQNirIK~4NnSFN3*3-B^LWO5~VLz zfyz)F=-el*iQ7R5I*%X`GGK@Gfw2Rx0*7Lo`bEGiMXY!0B?E2V7tRD=`OFn3I} z(S;^sMD@t)kXA=;LV|}bY!{i2Uwk$2XeM6d(_v?8@v6a@wV`mXAbIVq#6eC`UdGY{ zdBS&{q4oCk9$uwfseW@%UyO07?m#CyrrlcI7<9n9Iv5jDq{-0y?Se@5_7CC65i)m( z0oJOm(FHxAO1t5CSpzFRET^VfP|Oni6iN2;oV>?^!Xt)>KoWd^o05QT;rT)we~Rtg z+Rt$W-V7hF_}*Z&Z*9g{%@yWZq2$(eb^CPGBygaw$M!B@0&`o%D9hn?We~$If|``- z2YXR(GW@20t^VHa_Rr%|Rt~6gR5*gevx9;#d{^+V^uBQQ-Y~T)g=t2cH*DMzzO+fn zfDkJen9Jgpz=GRlYIM7i)K8@>S@$m78t$0cyfzwbYZ+K+BBrRUB#Yj{!39Bt6Y)b_sIAd#I0*;LUJ47W&tx2`BdoVY7 zPtsG5X1&?w1Nxl_S)0d;kM@K0Xd2y{Iqhr7FUtOFvZ`?Ca*<{rjPM_!lJaiqDB7E7 z4Fkh5Hi-jP1scq6>0W5Z>{w)jFBWgFo5iri@9LB-h0+w3Sn*|FH?3UgzLi)|_yyLy z?dNjQ+FeF3woxaC8DQgMf0ML$^5BB|mpkWMl_cqAd)zMa9jXu%DaPOc%Lt7tsrL48 zeP2+#M9Iv{hxg$!y8qZr%ZJPZ=cv*!ZX)InW~}d9H+>&Xn^2aH=@@;NYqy{Xkt$DZ zyYhL>GFd+z+ZvH(FT98speI0;#-VAdMZ{+s4N1x!5k>0T)$w(P4ocvojc#T3g-0K(@-Z` zUOT0ju+=>j2A5iOmQ2S#VoK6nSOx#55+-~)vd4T3g2@U=-@45Tv{MgGxUGVHQ&^ag zWEl)rDr+pGl>a+Hg#pVtB4)P;8aUnXx=VM!&AMNjb{Ee?S-C~HNNj{*cZ0>*jarZ0dx;y#-HADmoi6sK7iT~to z;19(XqLSZ>Y_)88>%(DQ($3l>c(*oLx146hpi&Gix;d==s+gzEv1`L`v;@tm4Bs6j zv(odaJ@s!O*)(JQ_wwY;sIOM!rYE_&>SZ_$PZ{}Tw$jBdY?U0Nl0jLHFA^}}Z`Y|B zh%9V0bdjj9jKuU?Z~b_`kU)Kuh$^#jxXcP6;(pR6k6y$0p|i z6o>Y5i3KklYQ?JH8_U(f5G_oD#7rco)1V8&Te1&Vr(#>t5d@n3qG$FP4tHsM-)-u9 z@p!m~#U8(BCmK)x60HO}6LI|hvtAQUZ#KVSt;@P^E-B$@h43&Xh|R_~n#OHHz>%i_ zd96<1;3wvX`wtOEcuda6!qRB!m5V`GHH4qlvGn^%{Ewd&r6JL+(XN|~g`h1O-6s-x zH$6&1HMK4*mOQdkGD>|i9#VF_TS+JV``<;g@*$8*5!WUYjK4=a_!7sSs*UDS#&rbZ z8HGxH)$+67F^jW%O!y0+=4=_7P4!SbHd(5b5`}Bj$%SSwitBg90c;griA=zo**qSp zqr&y2h(i1ryMlFqD7g*jH@vNC}imA&{>+4-3$vs z`-&zJ)`N!w*EapO0FT`0@pjx(2J{P%O$mDbI&=DKr^5 z`t#Z;BRxe6;|vY|>AVuH$wvVh78zfYX`ns)`OX)xyfb0KUfk1J7HS4mshxa|Ip}o$ zIa~_W?I@q&-C9rK4hOXwOOwV4t5o<=8*LV8YGr1@AEo`~?N5;@HZ+rnHW9@+77GSVR%R^fDl-2dyMF4>d-9iA{P zdT@Xh?#uo?n`uWg;)X_SwxyO%97yVUi6M!du_E(=p^zg5OJ1!TD`+>WD_+T1Nyzq@ z550eK2HIh^n+Yq&F`7t08$z)a#=aC9Sdhj1aZVGt$7|vUoFGXWWlPj(BF;+Lti>*M zwU2im&YbiN8>nj@!d${-PfOxt2ji;bV zdPRQ0(-adlu>z&JlWG7hvJtAq&vfjKb$=eGOAs{Ux(``zr4uaC*JO*7!rU;%GXDUb z#gt@;@~7nz?VcbBGfJzdET~(c$XI)a@QQ23v`w(XG!WMG_*;JqnT@&*<&6Y@r!ffT zA)7%LyzZBg)s6+U-eFvs#B;hkj`ui%!SkbAh^kbh4BDw@PnF-v*5@Ujn%|mAMW9! z2bLFBjEs^41@_^S=?JgtNMv~UDh9S0vkSDxzcK2*?*s#12BBmn{()U$>?VWJw&l}X z&~dU3H(;w%TtdLY!t{c#@YNV7FE8+!l2bz^9B5{-=%^Ur(6;3?`1n+)RCY;*djDBD za&rAf{IQo-)=2;LWAzJqR>UYm(YiVGfOiQr2fdA&I`A0st`c{#uVE8$O+nU9!`iwR z$0}A#DsD0gm&4uE86p|f^r9mm8~~`0)v1;`WVtr80K0koAiL6(mEM*(E~Twrvk0+X zU~jMHZ>V{HZET^A(6_2WQO$FV;sT*vxBe}DD3>v7R#XPzg9=a^Um32PW}pq7o_MLK z+AE9^q4l7Ype)OF=>VQ-b)t(1@e7Kjh4Fli(3`(PXNQYGB$#gWl9Fj~w#wm5R(tS)}^Xpew5e0g4CdQ)o4nMyz`Db(^a&W)+PM~jb7 zLtV}7<;nHdjphhlk28UWG0;NptMZn~^@_2Uwze*dd--Wd;{D90^f_7Dvzkp$FoCcf zGOCg6>{`WCJkz7-t`=ZCxRv5S5SJaFrBkDQ%efRQiRpA?)=lZX{>V0cMJK#1A2g7WngL7Kbjv#+K1SHo(gJiB6-XVBz7|R z8KKA~ye)FfO7zC%JW$6wqD%y(v=SXae;3;c*`UY~RzazFf*fHnvbFK{yV^2hj|6hD zgHO{zjU(QdRknoGIuwB#;QQ%d9a%@o@r+51B*snC_-HAgmk%gKlmzypy`;eIip^zi zucvZSty~feDbnzkiZr{7TgmsTqZ%}i=4FkgE(^&@j;}#_K6tD3*Q^N-n^=ltQJPW6 zuDD&IHmGzxPgc_{CYj;p&4Sq>A&$}t>n;A?ISm>=9ph#QL&5A{v}*{DTRV>Et&Y={ z9wwVWxc$21ff|`AI-Z=P6qv^0i=+4y3xY3t;HXa3f0F;g$yMBN{YXE(BNcR2wS~c8 zK*M|GX$x)`{hRT#gf}Bbvw-th_&0P^;?7acpA*ghIZGD4K!r9P*L7hroJo%A%Fa=k zI_BFa?fvn;`)Q+7etL7T|9;6Bd}HiE@6kS_SB>9)+AE#)(Sx$f!$I3}GL3#6xqP+t z3z#on9`*>OBky{_Fu~b?W{_5kgx0v7lzxYT^?S6RhL{AbLMMQe&_FdxQO2E(7UCux zR4QmcS}1X49=Ux{r&clM?R=}rUmq+x1-h_ITUYcWM01ME<0U$R8wTMu0w?Swq)jH< zWwwE)CFwI;dw2x&}&KYPw;Y&-Y3t+3sdm9v^3-8;&O2fIXIdD?eAeKW# z?!?GDRl$nUx2hX7TG~yEf$3)L+X&byv0xWq%J3unT}I}hFNH5|314L|3ZHeWdZdrb z{ezxjbgo*{c{GZZ@zfiK3$h>x765kEmaS8#tqRo zyvLps@L-jguyR#uC$6i|RF`{3`#SI$7sf)*G}h<$j4wEiMaq_Zc1Z{TGfTufFU@&y z$2Uq0STb5=yz@UG=Z5jXcHXe_WPv*kf*OcFOzKWnQybuhB04dzF(KPNc-eUkJHZ>e zX6TB8l!ng83YSg~+clKVjF%r$1WY1{$aN zPMf;wsfB9fem9xmv0N8>Z`})5896o3JWt(dtVISb<#J~;<)(KMD84}Sw0gMr{RlGI zO>bb-)k;Ln+8FA@PXgSXT;VO@eyIYEe7FY>)Z;~lrDi6oSu=7rscDJz;)D*sq-Pt| z1iSXKI=OeMBT%@^)$J_b%LQp=HAJ-Y`AEiDNGpn>k0PoRgRqJ&#wMjkx4G~+C#O!C zmY_`f7gIcwW^;}v&9T*SR6g*UN-&>iTk;;U;X4r_R|Au=DJ~qzTqU$`6L58sOi#Gr zzqwVIRxN@b|#7vp}oNl<3Kay zkd4bg7NmYLk1&Cnm`~tM&>Boo1 z7sq3$(8dE2ji6~4q@g#QOn&wk6{|0F#6nF^Q2}lytp$lVh$tT(N3Z8&dILH$#-{{o zYfI&f;M*cpICr~K?Pu)33Db%gnuJCCtEz{R)JlSCbv30iMGP)4ozSe-&>3ubGY)E7 z0yCbEASbN51|xTb?P^+_L=}20c^+U^`2**N=NI;Ikf$qa-=#HHvkIWZr`Up5zO-5* zqET(8LV7#>qQDB0ip^PizF@YIVFe-(n&XU-pp&ikIG|VOD zmr4M%BTDO5+wvn+he6cjWYun6loq-;*FS}WrG{Ce^Vb0*sjw%QSQ~UqLE4Nvv%DI1 zj9ZKq+Of!#S?B3QU18W4HB77q3fkTlHn{X7yb(b~ipsKG`fqc48&Se_P1|m+Jbc?; zd;Jpn478+X5{uu65BRm-_HiKRGI*oE5qe|mBOqGOU-pcZ4meFU%I9^TIZv)_KpQOB z`Itc2WL@Iqky%}`CY^}2ylIGrMJy~Hir7;{5F41{Yl@O>WLiv#9)IR{g^&${zVI zeKwR%KFv2UO%xt7mzP`5TVV1sYlv2YQYYauuAKmwa}{9<=HAzB^M{Bh2BS=)%#g~c zJ*Rea2cfsQPOeQ$4*)FHLl+z~%SStNJeg5)usns;15)#oEwBGkzz-ck8EeV_Ch7^x z+PwD0o40mJ<#M5mMH-q$6?`G@j&<#iqJ^5C2a}L0@&%TT6~myRlZl1axPOMcZTdxCMnHkKbjJj=H_%$(#!dz0K5@GR$%#_6y-WBgqX(znv3mt@nf~Jm zzQV$U3v2u5^YGJ%y5Co#Ptmq@fm})`$M_^zl+ujFqb(3)%;8JVOvBCRkAm%JWc1WP zn6Bv4C7b?&e-9^yz>LQZIoMUuKe=T($#fcny>!)Sb2wg$}ilLmnl7?dy?oL<|)6o0Y8}B z7KS9?A{)I+SL|(l0emXFr+^XNyvZ#s_TBiDUmW(Sm%$`5aoyv0%gN&uMzo@j0IR~f z7GAF7r5z8!j-B}Mkej;R6@@=7eIIb;T+-Wt1QbT+E2l|{6&`0?Mr+COamB!p6AV=~ z0vfBWqojVyut*L*p6z{17VYA^X{~FwQ`JrJ__!Q=Lr?1vd%x=sHn(|nGAtme5qv3- z?SqesZ{uH^uXiP53@HC+fcLymwBt9Bxs**@=9tN3)SMKCS|*)u)~KvmNy~Hs!DDMN zQj-qfAXEI@FJJa{dow7M`PbU4OZ6KO zRkn=4s+rxeC;h79Z7)1>u47N5r%9Ix`!viY3~kTd!_(c#yY^yA)%8(nDI+c<=#U|X zA=S55U^VWBZhuHcLVcLnBTk7_)K)0@OHz;W8pPP=P&_L=e11xd02@}#l2L(iFKVkD zF)04uqm3D46eK9eP2eqGGEJ%*gH!fi`f0S>5hFM5Wkbu2(=qb&>gzPL-V4^v8^I#> z0hUKp_5wu1!D*>IAfUNLS(<}DUXIvDOnP`&I0qVB*#xj2ob=)bGR|qv26b`(&F%Uv;ndgw{;vi5xD6A1T2xlczh9h|tEDhwSWv7G-i4F*!Y-^0cK` zEJ8vBSX7R$g=#0v_2y{SB%Bk4T+l4@5Uzc7!f6aA&h;^|_RDLY788y<+PK)-mysmC zyw06#4e&5AHguB;T2&?K+SfK)q)qW5GnPoUSn{=7QkRNVMXIb~ z6#Bd#$~;g*M350vTO2#zzrEyRDnc-@FAep&Ok5`EWk} z*arT#7cCB&K+&**W|*a{4wB@GO~n3OaGQsBh}pK0!up4aEa#MkY9 z!FF?D9p~ShG%y{;?4)y2;(U1Oi-X+Iav-v2u{; zWzbPhg;KeGX6EBc6lmAceVJ2k*<(?yES7QIjT4-Z7YIt;f6g0h57zkU zD+&x5rkk@L)Wn373eKOR^oH-by>{YSQlO1w@Z%@mD0;+2wFSbrkwqpdkw=sxkk_F_ zywB3WaJ1lT*9`>9=XmfnF2eNa&P-+T{P6=^fVB7YxSX2OooIyr7%#@Nbas=QH&JQl zYp$#wQHm3aebCAA!56fI(?V$~p{dO7-}pUzp^;aji$_Xh$VaR+Xd-v-$D-@|f|xN` zNEob7k2NrM@%=n6as&@PDsOI*50ax?9*0~L}R@>paPY3G@ zx4JTIwKS>}Am9Fd&H6e{VvYr2 zQykf5Vp!TzVyL2>%FJ2Ww|HfY&wIlI2%kJ+!;JQZ9iDWv`D8i6!z;A|J5)^El6ne| z^Y<@DXf~uts3d4FeG3u|8hjL?##H*Wq$~QMFk{l+w`xzox}iEPw#}X&%TafH@^pbX zN!+7X80*8<;!0x$?5i#seKJq>_qE)8P*O9FKQ8d+lv5uHghQi~B%3iU?UYK5#v z*%KwX7BHaAI146bJt^uo%#BQ;O%xMT0Dl310e zoTD$JB>1)f7Gz`PPgpAWd3M%sDhd*%{924l;UVQdpuE`Ek^mbG>J~>%M4Lw6!#@+J z$vSZ6-gEKPIqd;*t)0R;eI?uCG=bJ&$>QMXVYSE5+gf`L(Fm>887;~(4xg@D@4%#! zPzu*#jSMVTN%0sf@tf96wHq7x_J(w6X9GAdz=7+IL?b?cadNu5gCZA4k9IcL>iaUr z2$N8N{HFI2jc=O6O&s!FF(CT=S+rODJq(x58ZzdFN2vhJD08!}*6ZdUY`=eP=i2u6 z`?ufzVEg8MpoK>l4<|;Q1ISng#5hD}bE}U$cM- zZA`)no%?DMhZr_Dw-%>+TaS*nMgw|tZ*L%(Z{sRi_B+n%Tfa1X`0-2|>BpxotqnJd zxMH6js$fJobH0+0~~s6+{VS_*}&_%A9KOD z-M@T!Ul@#wm~!k&grj{D)^-+@a$uCN&#ox@MH>=pYGh*_Z7mL{5&fx3voN=uvv0^m zBY#(Aa&_yM!vVEJ_~Z%2>6}Ldjqh~m+`j(K58m9o|!IB_3FvykjFs>13=wttEpB+EHfHsw_?0M*B!f zjSeeo?c%0ITr4^%AmKU)m$t4})8^f4MV3#GWwmX#LDy4D$xa6CFn* z>rOKeBCo}4+lZF>dbxqSRLXQPww$}lnDbbc`Q~uV$*EPYB_t**kgHy)40%2LHj$c> zC)pHzs)QwgB`vXE_Wl3_P-4g`iIvMm z{-`xa8rZWdM1%%Em*0OEDvz+4bMZ62&I8d}oYzfUBgn4#7}DqBAjK4txaakF7Td@Q;OtwZjWNpKP*TU%Z& z=%ja|<$_fX#kmE8Q@rit3$C>sq+c7TA+$;dtYC>C2= zgcg<(Svc2ID>4fIG89_lc!e7%y~gTeW5cayR=K=)Xr`o|cwAG7=84dt#L{!d2Kah6hHiS3T&=K^oP6kqTw9(Xg0hT?<5NO++rnyHxUh%_?Fn zgVb8dtZ5=3=e3c?ROr+KV!$n+BHqSkz)Mqu2%ApO-nN0 zFsba)-*8w|?t_}WsjCkiY6qLkD|zxUG1#Nt(Z)ei)=uS*d~&pVCc~!UqgZ)xBE4L- z$0MJc5yhfC=Oly0;j@4oC7864X$hO!(9h$OICixI@fXl?Sg}rpXhs}@6>y>4-Rwmc zaM&R1vT%kRb;eOBnShq+p^h8M9VR86*5XATkyV|;Sa`N`Bs#@#s zx@&oQks8v70q0YW2B4|)I-6P8$;#2%abV)fQyr{H+0tyN#lWBqr*9iiVRl|Fp=w0a zqT5J?-WiMTUh#Qd*_NI;SzMVDia4c+gXCIIZbQ=}>**48WAUyDt$)i070;uhkwsqqwgb6Lw+bBV2iy4a%_hjS?Wc)EkTYn-3_vk8p%nukKrsLFVWc>!Pw-4NMVbcK&M}rt$M{0F0)5RCl4UC z0-StkFps1;y6<)WCIN`bhK{mu=_)Js5B?T zp;qHS`H`(#r@W>>gv(P-B_SOZI`|1A0v}~{pB&rA2ZtoFT-3IIvS*!XOkwRXDKLJs zYN0BNm|O5$I0NSH=*%4g%{_8bkK%2sX|HR%%~H#@^bSfn5xq`=MN||4+{rJP%LDdXekN^2MCoodN0hK_IZ_V3a3DH& zk4fv3aVyJPv(PUzF*_mOLP+UQ-K+EA1_$B^e6oHu%->#HO9j8JRC)j+eSLF4eS7+B zc>Cbq_2JoXet+ltzc%ddp6-3h=i|dC3;)CSCr|di|7%AF0}1BG96RUxqi;xqk$Z$d zrS9R|p==H4CeDKghC}M`3$G8HFW~kLjF|6YF4>P&{jQI)(xh2aIXyRr`I_(~F9ks%0%*<}T&SR%TIZ85 zcJ>ZW_q1!DlNjRw46+1JkWKJ@VzE{_D=1%aNz-^%au+#4CZ6FwnHT0a|{L91ht{>d{Yd4{b2JEMyWxljcM(W9Efq` zkDW4WN|N^vc03q5BiB=3FT`D1}yexp!vnJ>Nrx^F-`^lb!VAu+X(S={GxfqAOeS*cw>vSBKXeUu5=IHZdz32xEk-0o4P?74hGNocvunz zeCmyeT4(L~(B^{;`0Zks)wnH>tH)dJC=~v)JtAAaBOHCm*4uq}TYB8q+KGqYRBl7U z>mny$_Y$ZWHRyN|-Xc%kv^L!uH{24_6Ss$s#$pTn+^&2>v*JWk4aZm`gt%>Jeu^U< z(xeTrf~|C&u{7MHjd)#OUgl+=d^S)FWT?Nt@w@)^FXiVfKR5I9jURvH`&a+lzvIuR zd*Sx|U;exJy>(4Tg~A7SPlv7R8T8!zqs7Vbu=xzjO*e;4REk3ulpn(;DOe|LdgYsv zjQr*BG22G`?P&KYF+u+xHZu{0N4H`SHRkT~FFuU%|7Cvu(ns;T{J}TLkSPY}Xe($c z*1V(6%MT_kBRp|!qm;smB*!T8TZTRos<`7knFoHx?O-l_i%wB;TiA>3s7pi@@wLrC z9r=mU*7}F6Nw;3&6_Wf;Pccv>u0ebfKS@_JI})j8xYm_lmAMlGnO4;6=SvVOoD`y3 z@xIdV)`}t0q_*LN=P)ip1LeZ2U{{2?;`UCvP3yz$$Q@8M1G-5OfE~Zh;HHy z&9Iq}Yl;mqO%R{=rD=?7=Cuf|Rh)z4yDN4=bzN|#}R+|aem&*&rkC6PxA98bwA(xBtJ*BN-7~M zza!6zmhAVXY!GC>gCltT_)-q<&;Gf;>u>*ke*UBU{NM8Pf6veVBR~JI{QMXH`FQWI z=jY$d&o}e)dVb!^&yVtRKR>_7&wn#N|K0rj5A*Xs&Cfr}&;L0;kN;Zq`)}muKhEo4 zCO`c@^Y>cb|CjUgm-F*de*SiTzL}p_@^d>s_ww^be%{H?e=9%#z5M)1e*S5G{#W_= zKji2CnxFqTKmSR7{dHndFiO)aD&!6PypXTSE<>#O0=U?RKU*_lV&&K<|l%KQw zd_6yZCqM7y=O_93BtL(gpMR2{KgrKO&Cfr}&p*%4zsS$O%+DYFXm|10y9~ejYN)Tn zkA4(~PH`>1v@1J%?b^;>ceTIVT}Qj_?&#O}j(#oO)ZHLc2ztnGTx(fe;u*R%y}%Qx zHP`+ACwF7tveScjx%)M}w{v{LE~=x4(`V|cdr`RrZmUCm-65@0E^sbEs`-PvNBafS z{HAM%58_ocruZ6PxJ6xf-}5KG+w>-LU2w-cI%5L5*Z<`1?rC+K-?)~uRs3k2mws{Y z!Rg`tqk}wLjk}ZITaMjl+EpoD{bcPYzn)XU~Syy#d~J{Mn%SwvT#f zc1IW_!Lbj+>T_&6Cgh)aZ`XM_!P`^jXs{SoIl%%%qQI)=n zz$c3g+1=Xj(!#P`Dd`V(C53W(A;ORXHB@#{sm;i-sv*pz=JT)>C!KGH#nYPZhQ6DZ z&kr`h6<$a~EA!-o){$6}O$?HGP&#%)n{xtQCKg&Og9>Y7s=@TNMHs#F#!4Poyx zb;Ok*a_rhon4fzuw|Uz1v7x0|%QG&g%>lL$uy9fibKy^2Y4C6ysQDaqx8iWFz2Z)X%p$IZE*aSFbA1SFU#u`Xi3b{xlFjxyLyB2M4$(4&l)v zdWvq%qRtOqI<~BmfOGta!7!U5;iQ#ZzaYeF`ZfnlUyNZsXqswCI3v$(0#^?ftM13` z(b$wFZSa<~%~(t{3VVjhcci9^*kZ?EJsG7KQH_s?+g|t%B5b0rFuuM0JQacBrD7$< zIa6fu@%Sw6nisIojj>S^cMG#!huCWrhFbwLDQ_(ExFG}cKN&#Ep+eB zSmJtba%1@=*(67o>ilVZU7A;H1&G33`Yj|8TQ6xt1Ys)2Egz)=)Jg@FHoL-1k>YMxC0YowAgHCco^9Y0)61b<`W61QOlRf9}QLIB#^W%vEIrA)4R>Uu!rqQ?;u}pwa0X#zwEzGf@ar`1S z*mSg~SVc-KN*jOb4O&=HHm0D45V`YzxxDA}6@+m$nV$P@e;` zi`g5}RtTgsa3pzdj8!6n=M^CLkdc%vONhZ|U%KVdhR%Z=p`qr#j@Vmi%B6nW-D|SP zCrwjX^jxI+kdoK|``4pFj|%Y^nQWRlLTVXW!+%{W07-w=xM-_*KyFoU9K!1viG6*# zSgp6a0L?)=c>X@Rl*^>EA4SfE1Bj9$?z>JB&@6RJ~9V9_(rBUjkvR&@sR&;-AXUea zN6c?|j@ed5Q9&LsD3WsG*DpJMcUZ70j<`R4ljz2#n=&!2T zNa{#~78}j+Iev7RYMVPZZ`|I#`~GXQ-@kqTgKO^w$0WzWX7IA;en}QD%v>u)o>b`+ zDKeJvMT^V)kL3=v!$P@2N)~M-qoT+w5Hxd%KD_dl1F=f6y}CqIOT;8XQ*=8HzMIY7 zwNAnW&QZti=kRn3mK=3v$T!a7Fs@_>2&e7-EFWVIkZ>Q+PYAt%NV1MrtGGZ@V;Yx8!sUQ@Q(Nac|b43CAN*_u4CEPJXG-Duj-A^+rZ6Mz6Xmx!X5P_Nx~9*Y`k zY9McE!RS58Zizjvg0&l-F7G$)p-yt@SeqBb830ZQ$qv|Un`KxenhSWWa)_2o9&15Z zI$Df%b{9jRU6iC;*` zn}f1o*GBBe-c+A27n7?Z*Rys;sUSSp%3uu@FLJrfsAjF(Jdg;&Ge63H@`hKC%Om)9 ze5rq%_r)c6N+0JM=eA@pxAj3ZtLx#bz8x~`jmsC0A|LoG9D+D2RKXDP8@ny#$ZBKm zMohi+yo_wW8QT)hCHddLl@)JG{9?G5Kn2tAl4$*fIVNrpVav}?xMaIp8J9_h?)#n) zR1T!04)v>Le9(pANr@%zTbpjgtmLKoWC&AA?FTX9NH>;qJ*KwS%YinUoZ*$QG-}h* zEGOA*4wlOU#Zl0kj}I$LCkVNC<;)Um-a5Eox|zya8yVR0(Ct`2oJ)N4dn8=sv!D8E z_^*O~rR&xjxs|284fYhQ=Y~vF_3$Ejwz-bzg0>d?c1@ZC)z=2_u%$aS`J7(w&552a ztZVFR&hdsy6CCSG3M;$(Wb+PCjW)6(d9+@gM^e@9LItL^=FU=f8Lit$qdT7rU_nC5PloLlWa4u5`T@E>vCdMK$?J-3QGyOW6v&e1?{1-YCHU3H9(w%xZ5E8WSCO?U`uC^Xd-5KeDa7yK`M|^!Jh*3VsGhxFt?8d@B@s-Easg% zueL+WeFGy@B^$J3FfxolbaZ#oc5`J!2w9g5A<(|X1)dXrke9tXwx%1zV|z7_s@Rdz zY86|OS!wE#aZgkD7@=>vINXb{5sE$@S(JCVFGBN+Qd?kwjxpmP@7q$uaW#a83UxYy z8MFr3vTYc+rHXSq@~I6DX%8)$r`b5^O!5U8U635B;2%75Dt0)YX*x>&kHz(^PEIp< zBav4H_QvTZ6zeEksfcmF%=*nc*WP~j=FW|~ci-E2@8-LA?_8o6P7kRioXc)rY>m6a zy04p`&S&U2IMWgX;#D%D(W3c|TG!UgXsG;L!khibxA!+8z z5@0;nR+y;F@i>`feh#8>l$oGvoL$U*^~&tS*?enj8MNbrUkQ9~Bi>e#N=u){+e>cs znKVt5cW_umZoup?--%b?MDhXfG^Ws!oNPS=gVnSZz|j@Sa~nl(z+M>)Dmf7JRC<1)v}|xK~V}! zhB+?=m8vU;>EsK>7#P-pDj`CxG#3mq{f7;2!*8keXd91GO3iMcAsS?GRgH4^w)ExQ zg&df2TEdWHXXr;k2W2%+I@op(t(F!4&&S40yN|7)o@%}8eVAWgY(A#Jdo+$kv`B{V~B zG^N3~IYFP$7_!VWq;@^vJ8s^OG^GO@BImG+&h?iHf>brRiO?*xT?)FBmZPcVKxR}_ zAp-(TXa}6wwU^DP>KS$i6}Yv*+lWQ&%)kwC1A9ke%Vfjv>@iV9gUK`iZ~qWMvvvA2 zkI2MZAQ67nbfR=Z4C1;eGfOZm&YpXNK?PS7>NsSm6$i-_X;AjXni zs_mc#SSKt2YlVG2T0tBRH4?HAO>9)^AcKif*OSv-990ej&T&l%GTL3DBgbPyLEkwI zUEIBh_uLRjE1q<1=0qx;b_~*5s|eFT4P$^1HF6nVQZeMZc?~lX)PUG0t-(BLWVsKi z1Ip|%rfqj3xumgeE;l3^HO^hQtO6B%OcjT={A_s9BHeitk%Y|;- zm`&tlqDC%PwK4^yz(83&7rqtg2s|h>wst4nLgDyj4ok@pX|T3Nv__F>@ciH`&Z<5% zs&jCU_dPP1>Y!L&$3LZ-0bCRw6(1@;DhF;S#|l{PPAm#nDhsVjd@0Wg^A4r#tiiVF z^9feXrZpW5bskj~83PMu>z-E&9E+lnPk z{?$h2l%tSixD)W@I#LQD_N5M`Z=eHe-R9Y`^YtxKJDA7v*HP$})4ZbNlg)tBCm}^U z5YOv!HL(x!M<{`I;#>JHrHi?U?v=A+lx_S#PsPCnqFQgzC6|xC@A8*qAg(Q`_+xJ27_}0TL6&DXx`~2ahkJJ`bG?#g2X$!0!Bi~U?UAf(=Ln(m1|xl1poMk2LMI_F7jMhAPyARI}H2cr*1 z{Lsu%$-I>u!e5$SMMpPgceCi5MN-sa3!11?*=$iIPS&_AAmyjBY-_-}R%(xypw_+4 zYK#u*35$dnlqzG$Ku0A4t8;?=iizVV6KB=if!asUr?x_&fc#V!Z0T1B_L@(IQ=d!L zv*aktEeDuGXRNyusFeKzR^$<59ykM1r16lP7^@t#BpR<20CZu^BmDFQ2eT#EmF&Eb zXpT6ODJIfLcNbkYuulDlYVYXm1no>ph>}(=(iprP{X{xGTdRVn9XBO)DVS96*IQO&Mp0`{0m2Y;R&lG~ON{^Q3$l7TgMwY? z2SR5{1hm96vRV(2quRh9h@&j#i`Twz2pbh8kU9l|zw5YUa-LTmwF1iymnSoCM59b3 z3E-@8pQjjsjOjcVU!6Q`IV7UR6^bu)dGaqDX9GZoiS~8vQXqr$81low05gAZuG8zq ziIdI7F_`dkr|%1QW)CTAlHiP@OCnNcqz%YAq|)aYv!Tixgms{q`JFU?k-gDSkuwZ% z$`sQ2^~2p5!8GAlH0$7wRRMUFGR%)pHl#%=d{Mz6HV;e1mjw_WX+N(h5s&Nv%~QPC zQ9TE`sX_^~6%07XCnFO|8oO;KkeiD$VGCfca3$Gk8kPM^bBAmJv(^~&L}G^*m1+SZ zVv`R@fkrJ&*sx-JIdRyyQ<I8MfptHC z7cz#WAghO}2zW$I8Lz>zpl|F>lAl>DV?|M4ARN&gpXRVt?aPyj!v0=E?FPk3&^zS-t5D-0{T0)`L2FE zA4myq%3zWN-F;{DU!=#BD{c(3dceAmhM}Nb`MqNN=M2CMGJr|5xpIeS{&$0J8=H6@ zZO`uh9)T_|TcYl;bN&yPtPW?ajcW1fOZaDXXOfuPve>2`TH%479sRS4bFox6;H#u8 zn@~YR9~w~B0-#WuVrx>8N`6ij12regJ|Zh}AzuOt#8{;9sS6G0L&n?IM2P*Rw%YiFOWs%?nxp^zs zV`&%x>oy8YZ|$VP6>4LhYzS>LCA+pn7K(efN=GLujMk^n`}iecy*O!B?xC$o_f}R& z7bl0Z)&DSLP#OBtqQS={2Fft&RiyZ$jmYYaN~7WMsWm ztCG}v)er2WU!gfS!wXgeTOt*@dWu$|FEuF+mS0CeW$Z)DIbD2L5d?88B!O+l5V5ES zN2G^UBBhoMDh)YvB~mPDJoBa{4&#;(tA-fqD=FW{fr@BSsm6Yw4-{6>Vktig!(f5% zf)FCeH>F{;*yLBzKt*#VGt!z#lPdkf5)PF-!4+OkyC2SbJf|*Lzgb~AykFWs>!NDq zAoakl9$0iTl_ojY$Oc{SwK(HTsV(G$waDW_l0r_ROQL18|r(;%lknwH*s^{B@={O%*^4@Rjsw^40hk~ zQoEp`Oeuh2FLHt0czLuVAufNs>B8Eu#Xk# z!IvnBuP;%1h;P~-C0yd`c(epR+QEYQK0U2ZI0Ub1M-A~)f7j#G7`un^Hb9Ot2qvwb zJ|zZ_C2}W-uc6nV(`9@@jadSg3NdD5NLi8p6c>7Bk-AEsLe0)V31{dCU=T-SLN@FD)+40Hk=QOzFRl*#BAvU**59tb;TAo=Z>6O!Y&0$ z?z1(cR$jF`501=NCq4+@T~tvT+~~`Kgfsvllm?MV*&Jq()`&kw7-|V3M)X>aulN&1 z(CdsxCHPDkgsHdP4-Qxd+JtK$ymA`g=)e)l%dWS%E|MY6p$+?@`P_R2a6N8AjH0)y z=+fx?i-RNHvePQm9+Sm3)70^6v_Kwd6^S(1O#700c{`xwddHiSFrMi+5vlnQQ__r! zlRCrLS#hYc-$F{Kn~rUMfV6sk@^nEtKa@S@>fTa|k#jM9JBV^Q)fy9^E_S|c=5{^D zBR$04GwLR?$Fv@q-H%YQoJb)XL&i(}GDtr?L<3;wkXVZoo$YQ4kF*%R;TXt$Asq8| z2geGnRrD&K@XV9xH~URl0U?#0AW6C#d83;3Xe#K4WmIXLf;%80<9*JR$bU~2NFKX3 zd`TaT{f4BFm%LU_fDE|m+zC7IV_jSa(o$=E`|gdqu^8ne(y*yb3v*$ugsun2c$L_& zatTK5!&1S4D9dLoV%9cym`3gVSJXaD5y!BsVbHGruE%M_h(tz*jrbJ130GU=`qJps zD+6}2eRT>Ihlfxxd!vSAolH9i5XZ?4aCe6+Dos+?(%pd`YwwgNpVRn=vwJY#*bQp@D8x2c6DW4 zx%yu^J*39{KKD)!Nn%W*5SSB-Ljnj`)qq*Ge74!|B=qtFWkGftefW8!Eu5{BHb9}O zmon>Pt$`xhy1|L4X{eWuz}efX%WkhFTfVCDd(swYO~SG2@EGTmxm_FeTnku(G`bs! zt)H9Ur&%816p}lLz|f31hDnxY@k6s1MAMD6S~znfk*PRBD!%zs6f(D>?+ek0D2j%X z{PTR~3UGywGpD|-x(0~`;-$)xNP-<#1>D4lG>6159Bw%a^vjxI6PCb~TBomdc#veL z%U9MT#P_8ttbRH2xG!Dc@z6_#`&exGL zRiBmcTXr$QD;8&*`>N%+qr)(G)7m}a*jYP%ut^#`4CEh3Wr0YGV2Zb;!fT#kUlnaR z$@hW>6=F9^_j~=PyvNkgOj_F8-PcyhP%K#5CBjawRsAWlDVbcwE-aGVD=jtiI9yg} z`)$fTOU}@p!C?u1MD;V*q*rTWN~=WHQba+%6ya3_6i9EE{dPHxIIa18+v%L=7p}>k zr5eS`38OYR-(}`^cPQsWa;d6jh%|(jAUo4=izosBa+%~ycbTj6v4Oe#Q!fA2QV=z% z@+pqM6E5_F@xHR0kXVUR*3+V>?58>lo6wx;88wBAM5R53fNu8JV!H3<{^xnfAQ-X|Ti1j|T^Dls~kj zlUy2BT!c#S``9!Mytt$qhEZ5PxIgDAIOiVRiOZr{EUBRdIG| z0jNQ=H`tIF0tI{jY+Si4D+J`!*&vA|`H+6cEqqk_Pai)icNd#7RS;|TC0^HbZCDHQ zj;#eE`Kldx(e9!(Y`+RMQV^a>9*(xnNrcACy9J_D@4!G~?O#o_d-b*1tKukp9-QrM z#_nZF&D4rfY!qQeoaTuu){#+-asNJj;%s#*+G8-BDq`Una`A#x<}|9={1sZdbNBw; z_qT}-vrCq2DxZ%?Gu_s4((ll2^!DaVr!$BTy^`vU# zg1A;&vO}NSKYgwfef`c<>+JkUX>Lc62n(2ir$mlKK?{v}4??zuR|~@rr3YYv@}H$y z4hEth$th18FkK3lJ$QV0wnb*gnYD`uU6MqkX($Eo<}*U#DxWfY{W9R)(|(+MA5>DZ ziH&A#&FE*vi*H=6v=~>SQDO?VHdXqgdP}bIiWlEp*`w#|Y5*DXYF*PrhrSN6y!GIeecnG=}g-Azmikd!FCmT%T2yP2(u~qx%Ws&4)$CU_X;T&XXH9<{) zyBYM*xdxMWO4*UNYHUhM%XZ&asi0u@HfVzirHf{@pf=jR;7txT%E@I*hsPUEsmM-L zgUH0)`AQcXG_yBUEjyJJ3yuZT&>@DaouS0n0oq@fL? z;E|%0E%BCw$YRyZM;}!? zlUrNVGn6to?P~JKh$mx<91A{KR>pREkl+}{FeJAb8iSARu0qQpGVwsUNb$5dGLPui z8l@&T2uOHZcHVsEgdX?|NRJ%NQbty>H70SO5rGke;|tQIXv6Ng_NI5RjT?~z^q=tF zT_vTOj7QAiE^C)_% zuZZ;{-r_;jFJ2{sX?@r|+u_%y3mI{Z4WWY%Oq-$S;+xW`Q^;L7H>`oBJlz~h3bOG! zBZbe0UzV=$;p-o7T-CS{nhQ?m`tnQ5`K8MnSFPwUy6W?npDn*Oxp4l4^CP>jY?No$ zqwj6F`ww=HIB(1=Jv59NNNp(n=ir#iMVaZ4LHy97TRfVF6m6Wk6RCo~cG z!IP5>n90czkuc{yhl!jgn^a+ytt~oHUKhRGWzS)4_?F>T)ttd-9D?#3f|&jI$0wFr ztu|>?5iLP30q5*>wPAA=34!thjMyj6a|Z2vbNQVsvEM?k(%=hUu5LE+l}#+$-VBQ# z#MT7W$>Dr30tYp4k3@8D@?z~i43oh?0J(T4=`zZ()l*22K!KyekkIyw4SkN#PoGzU zOhm^Ry*(C)Oiq90W&+HJ_S-jZ=4iBzS;iJ?*2OFWPq~ixHrKb3&%%T-%?6jc3G1%w z1yS$dr{JSSN7{-KX|PltQ@WkI?3dJMx+^(K zLnJ6O)Ppz(4EgkebStKA&06VMk^7siX)fV+Zs;DKeQtEASI)?a7mcDZk9aXNu(H8s z?&A6+eL#MY+-s_?`u8G(O63Jy>Zt)~vL-pv7o`GW?#Q9PGI{EDQGAXr(}Y?L!t*IX zl{4ko0FIEZwn~@Rq;&id;~X{dHnk{Kfhe!pfF1VdYoU38K$(Afi@%nnQ|xjZ!J&w^ znUMQ7@Y%acCf%lr*Da^3^n5zVkSkZjzFpF(a=P9r=06T6h-R}YvoPpU^$2sl*yx;y z0|z^D>NoaMe4Smtu`M@|D$d0m%cPorPQYtp_WOqm9ou^U?CJiY;vsf_q4&YCm4xJB z)GI;HEmE=cZYIQCp1t|{8^2XfT6*E<_s;jEt6$Syy!-1b-~IKMdiOV0zWW<5_3m%2 zeD}9r=G`~nT=njoZ+_jo&t%`~)jzPI>s*Q_9O8Pxa?Jnu%o(vKr+VjapIt|#;M{}i zWx95ADT;c|@p~<+k(a&J;)UV9gB^!r$I1te@|@DjuDm5{U zE6yg49elBIIXU&p)?EshpsNJ3XQMKOQ#K3XCj|0ZE{%E+AYm_)`?FhP-pbf^ZEX-%^@xybOt&zbPh*6^4sG9H#0R@{{ULE@r3-~EF*2lkkD|KQ1W!tNWt z{`&X7xB0rxnsK+Vt%f3S5vzl zT^iHqExL~E;E=qXij$+U_1M&*sUnB>z;$t#yRixqJqv@fF1U0URAZE}=Pt)!`iZrV z&N05TMrO{p*DjGm)4_-L*hd0~l_3gv4MHb(ZNBkGlEA^vI?^zs+elJ>86t@m@`Y98 zvdub7ZnydmQ@V-MB$hO(#Kjnu@1^E`+-sSm>0$#@~=@**Wb zLu{KKD(o+;n;)^Gk`nTlnn2GBu;7K-ynZC4gKr^c*RS_+md8(>x z+f7l^*!3upeixS?O)Gq0N)&TU0uI70aNst7O4Vrw@anJp==$9|w{E}l!TZ;?Z{NN1 z)vGxYfWp0-w{G3MzJ2@mZ|>ZC_uBTYyYIjE72Y@=+1LmI9M6xD=sZ|#R0z+i6*|`O zgdA6+){6*7t=2{a3gFzX$iRd;n508c1S&m>PDBT4X&~6Ak)Rl~l=Dmst{8<@b0qY# z-UL-Uxaoy(3IVFAdn4P5z8Or{iWUIXhqNpVL>(oiYKwXxw&+|4M^Q`Zr#(aa<`5L& z8gflh)NFFdpn!V{FRnI!2~kB7u# zFwUiJ{=cp+2qb988v^)7sH#^cnF+ZjcQV;VSd<3Lm{M;(0+b2LlX?y>z}x_#P2XM{ z5`YfQD*rbg3!Yf+(q2!>2Bh{IsChQknL?XDceK4aCFh$?LDQ{~3bDc^rpb-Xmx@zV z-FRt&1iXSX>qNUmMw~8?k;ctYWD|YA1A^)Bi%(DBAf8<|7LK3l3Sq6n+01sWd<*id zq-rBX#BC}%+LY`siDXDaWELf z9n1pHf9K<9%xD{c{lR|wloe!xH*7L1XLI)UL3rtyN(;RfjA=nRUNp72 zSL@&xo!9HBAV-u~_r&fWpvf?Kk~}~7S@gl!qw?8S_Nke&*iP&5l;sko^pJOHcYsou zO6fjY(4{6MzG{%-S87jagJOd7yr3TLx-9d^Nh}%@x#c7fVhgzH7UkxYz@jt6L@M6U zPjd_ib3`YpE!cfRrVeeUh3y?E@5p6E;Ym9d?m8kMY{=+#Q67U*xKsXZ)~@qHsHyNC z!v0l?M|ugkKod{M9pHtCD#<~sS+$vZg(Ja9*DJ&$C!>BpICykur#=kMl$slK7SsVi@}D?PT-@D~-v z26?ySjKTH7UcGur!yRYY{55@V;w=G|bj_Td>;$xS;&SQrH=mJkE!vvGvSsyj3(;ed zBBBw+kF;0jtv@Uc^B3oz+>@f4q*?UPLOttSTbzWD#!+{b$yGgoisvYqKAD|EdV)3T z?{rUiaUuDs@vo}uDlNDQR!xLQ{&U53Lo6D_Bp(7)tKpgkb-h{eyqhOzLW}Sg6w)e* z9y^sqLF4gTVa3C+T1UhJpKxA=>EK4X-9rZ;yNWymvTzn>Wf&*W@136PKP7+x)%15a zg)4!Lz)wK400DQ5{Wb)f8IVm`*JqurrU}iZ=$<^4_Nyb4vz_;SF7Vz-tzISh>jm1* zwg~MV;S@4IDvl*0tofb%8$}o&U9Bhaqz+KP|C*H$a%4_?PY|<%k6Q|{iJ&>AsStF?(h_R92 z#fMg)14WClBo9XLSkY!BbW9*%3Z=PDBMl2VodnHRTQR|%16A-rOc;mJ1$D7J>Y^h^6@4bKX`nBzw zH)fxnojqAxrunCsyL+Eva34N>ym@l^XzR(=qvNfR+Grang-5@AxPRq)ufJK8cTd4M zo5C-ivo#8|m<^-G#PoL%vTy^eXIGPG@Emr|%hC>3m6(x-a7}PD8*6(|8>Y5V6k1IN z(w4Iv?19W--zQVNU~ENLFF6cMLF-L?iUeMWEfu8{kJsM^$M%crJ@uCAu2OGD^p2yi zQCGv`m#i=}VQ~y|hip$13k^$pga!oZdAFg{A)QDqKW`HRu>){)g_Cm;74fq{`|KMj zaKhr&megeGsc$V#_b%)4d=if%HzU7HkDR~9!~I1mdeV+pbfG6H6f|EO?x@04pE(s0 zqm5sTsdS^w;Wm#d@k=6>Y&M{XR5yDF_cI{oVQCXeE}5_WA(hvpu{a-m5?|u6`KHpe z;U~j;)W71ei{f?8vl=XFEhC4=Bwl-9>=knS>qks2BuHFltFln-IM(gKl^GdHCUY@)je%Ynhx&fSXkyO*&Gq$9b zny8*}Wzb=2j*?#19Ia#bvsiv0$A3;Q@83ChGhcERSX7FNLOKIhUB6pm7(!r8jDq1H zoF2pH3;t6UMST2veEddy{FXo7d~+bWJg}}1yU8=<@_O`?{qO1< z@0W{uO^v0=q9{2drLY7oty$p^4jdgk>l#5GKRJ97ISlDlJ3~F!`4*2bo|#rS6SB<7 z&-bir_rDhTuV&BsIWl79^!M{KCISvWt1>c;_59ON8{q%98`jgQVcrr_Mn=$hT;?i? za1rx1172!GwqH3k0)Ng+m};+O@JEudyr#$@wu_WiNA}r^`nZhK*A=$qsVqFHJ+xp7DvW zy!!EX=YvYUg}$S2sS%~yqRPNw0UjNxCNn}UgOMOH8%S#FJ8e;geJ=y_Z5&IpA@|87k^s0zCR*bRCM%8TG_XeXn1 z>KadEWO1xk*vhy!)u&W8H`Wri^el!*+W;N~yejdh%;e}s4z=D<&%17{5JGyV7bg&I zwqEhf$b$by;Lw;(sTkE@TOe_dxh&rvByuTa)-^qJ&`H3N%JyQ&MCCsfsDvu;5>TF; zgvc1291#TcSrwd=uIyb0>)hRsH;SBP$QUt!y4MP>q#98>%tM`Mc&U)jG7ma<)O`$4L)&x zZN)bZb)FQQs|1?PEzxMbsfjQ7t_CCr6C{AYYu|PR9e7BF;FRB(O_bpjP4ubQTialU4sb@uR0 zMyp|b;+H-0ikD_f(+T|53>|n2E3Z)7^vSoFz&8iC=wKqKge{;E)TLXWXdtnS>w*p^ zSdhQ)O&5e&r4XKPO*OqK-WI$4E5V}If=J8Toz&1K8VH*(7aUFCg28fXZwj770P2)Q z9k^f+mGdB8#$<6Fmjlug6A&^vd?b<9(qdo|dlRio7hYZ!x=<5Zt^d$d786SP8{R9W zC1TR}#BYYw1{D+?!SB5mXN;M*h|lVhP$Djym*(YAt?ePpua{>(FsC$-5f}l|t?XUL z$c+B7e5Id!aj<+IU%MKLvbPGFj{2O|D;n@4s%yo8yW@e#5xMUbJ5(b@Us{9wmIG|t zSx}k$(vqTUY+a}U&7q#+v_*)9kbqLT;!#>^DxB25I!XWju~L20FEzA~UlP~wSvsYunvKI>p&msOrf=(?hH^^^lA zAzz&>V^5|vScR|?9vXPrXWJo;5->um)I_xT4U%+{9Ni=$I z6Tt0Bb@D`XWG;(N)!wnjpkPilB8{gdh_n`I%WcMDx-IQ~bACL{d0eRse3DH2B^!(*}N-a{X2Ol0||6*4Ae6Jc5Zjdk%MkAjhz1sKDjC60-RSB!ORfly6i`Rz+`yTrI{~ z+>h9`#Zj~MC@lpkA$LN9?t^SF9G(W){VZw@mI`1xA{Vw32Y=ETa2394t{lBhf_4wD z;5k(9q`otBl25E|{jS>n;&1^2=Ns*fuW9i@!^;V0Lm*|QR!n+rAV}z^TL!C!(b|8s zB+#r*+E_R6oVUZ8;3V;(as&rc1T%M34#w8hoyj0&_QT ~|Orf-7ptYdIF2O{Ekf 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 z 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≶WqxT?>G|4^S#O`j?4L^?|$72 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 z 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 Ye%=1vuP@ks{)@jZU%4u6Q2Mp;w;flrKmY&$ literal 0 HcmV?d00001 diff --git a/prebuilts/build-tools/linux-x64/bin/ninja b/prebuilts/build-tools/linux-x64/bin/ninja new file mode 100755 index 0000000000000000000000000000000000000000..3aaf2a9dc013ec0faae9c41f738482150cca841d GIT binary patch literal 265560 zcmdqK4SZD9wLUzP1PF+ph}1^K5;fLD6ca^FMC*hkat0?74Je8A@ z<#-&6R$J?>E%o+qt-Wn&>s3T02?2uGYQQh5RU&?H#()G=h@j+so^{Td>_DdNz5ieD z`@VPhkvVJaueH}+d+oK?Ui-}Q!oW2NUa!afBzV5(A(T7bCn)=`$CElZNnrl*d2&2M z@%K#6D9>QPg9OJEruq7P_c&F%-^r5d@g(A#HRdGPh@1qUJhP2Z^vX^N;!T+D)|7ZVx(bG@9_wVz!tQfZar{yng$~^P_Q5&ECsqg-q zefx6{n4>ZZ-wa&5@z98oj}FiO;}eHQc;*dy@(%y}XHhin=KzQwF+l2C;0D5f10n~) ze}VBD2>&Ap@j&>oaq3}T2g<)6gFX=cfnfvVPXI#)%0DkoyU{pwJ_bP_sGgEI^vsUa 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 <(R)nY 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%0A7t0V{WDKD!HkREeXB6;b!_i#SNxlY-!vo3M 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 z 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 literal 0 HcmV?d00001 -- Gitee From 286b3c7223501250f93834e74c5d8a8731b11db8 Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 11:18:52 +0800 Subject: [PATCH 2/8] upload libsec_static fork from OH 3.2 Release bounds_checking_function --- third_party/bounds_checking_function/BUILD.gn | 81 + third_party/bounds_checking_function/LICENSE | 124 + third_party/bounds_checking_function/OAT.xml | 56 + .../README.OpenSource | 11 + .../bounds_checking_function/README.en.md | 9 + .../bounds_checking_function/README.md | 6 + .../bounds_checking_function/bundle.json | 41 + .../include/securec.h | 623 +++++ .../include/securectype.h | 570 +++++ .../bounds_checking_function/libsec_src.gni | 58 + .../bounds_checking_function/src/fscanf_s.c | 54 + .../bounds_checking_function/src/fwscanf_s.c | 53 + .../bounds_checking_function/src/gets_s.c | 72 + .../bounds_checking_function/src/input.inl | 2227 +++++++++++++++++ .../bounds_checking_function/src/memcpy_s.c | 564 +++++ .../bounds_checking_function/src/memmove_s.c | 119 + .../bounds_checking_function/src/memset_s.c | 509 ++++ .../bounds_checking_function/src/output.inl | 1668 ++++++++++++ .../bounds_checking_function/src/scanf_s.c | 52 + .../bounds_checking_function/src/secinput.h | 194 ++ .../src/securecutil.c | 43 + .../src/securecutil.h | 559 +++++ .../src/secureinput_a.c | 39 + .../src/secureinput_w.c | 78 + .../src/secureprintoutput.h | 124 + .../src/secureprintoutput_a.c | 174 ++ .../src/secureprintoutput_w.c | 149 ++ .../bounds_checking_function/src/snprintf_s.c | 111 + .../bounds_checking_function/src/sprintf_s.c | 59 + .../bounds_checking_function/src/sscanf_s.c | 59 + .../bounds_checking_function/src/strcat_s.c | 102 + .../bounds_checking_function/src/strcpy_s.c | 349 +++ .../bounds_checking_function/src/strncat_s.c | 120 + .../bounds_checking_function/src/strncpy_s.c | 141 ++ .../bounds_checking_function/src/strtok_s.c | 117 + .../bounds_checking_function/src/swprintf_s.c | 49 + .../bounds_checking_function/src/swscanf_s.c | 55 + .../bounds_checking_function/src/vfscanf_s.c | 65 + .../bounds_checking_function/src/vfwscanf_s.c | 68 + .../bounds_checking_function/src/vscanf_s.c | 72 + .../src/vsnprintf_s.c | 139 + .../bounds_checking_function/src/vsprintf_s.c | 68 + .../bounds_checking_function/src/vsscanf_s.c | 88 + .../src/vswprintf_s.c | 63 + .../bounds_checking_function/src/vswscanf_s.c | 80 + .../bounds_checking_function/src/vwscanf_s.c | 73 + .../bounds_checking_function/src/wcscat_s.c | 108 + .../bounds_checking_function/src/wcscpy_s.c | 87 + .../bounds_checking_function/src/wcsncat_s.c | 114 + .../bounds_checking_function/src/wcsncpy_s.c | 108 + .../bounds_checking_function/src/wcstok_s.c | 113 + .../bounds_checking_function/src/wmemcpy_s.c | 67 + .../bounds_checking_function/src/wmemmove_s.c | 66 + .../bounds_checking_function/src/wscanf_s.c | 53 + 54 files changed, 10851 insertions(+) create mode 100644 third_party/bounds_checking_function/BUILD.gn create mode 100644 third_party/bounds_checking_function/LICENSE create mode 100644 third_party/bounds_checking_function/OAT.xml create mode 100644 third_party/bounds_checking_function/README.OpenSource create mode 100644 third_party/bounds_checking_function/README.en.md create mode 100644 third_party/bounds_checking_function/README.md create mode 100644 third_party/bounds_checking_function/bundle.json create mode 100644 third_party/bounds_checking_function/include/securec.h create mode 100644 third_party/bounds_checking_function/include/securectype.h create mode 100644 third_party/bounds_checking_function/libsec_src.gni create mode 100644 third_party/bounds_checking_function/src/fscanf_s.c create mode 100644 third_party/bounds_checking_function/src/fwscanf_s.c create mode 100644 third_party/bounds_checking_function/src/gets_s.c create mode 100644 third_party/bounds_checking_function/src/input.inl create mode 100644 third_party/bounds_checking_function/src/memcpy_s.c create mode 100644 third_party/bounds_checking_function/src/memmove_s.c create mode 100644 third_party/bounds_checking_function/src/memset_s.c create mode 100644 third_party/bounds_checking_function/src/output.inl create mode 100644 third_party/bounds_checking_function/src/scanf_s.c create mode 100644 third_party/bounds_checking_function/src/secinput.h create mode 100644 third_party/bounds_checking_function/src/securecutil.c create mode 100644 third_party/bounds_checking_function/src/securecutil.h create mode 100644 third_party/bounds_checking_function/src/secureinput_a.c create mode 100644 third_party/bounds_checking_function/src/secureinput_w.c create mode 100644 third_party/bounds_checking_function/src/secureprintoutput.h create mode 100644 third_party/bounds_checking_function/src/secureprintoutput_a.c create mode 100644 third_party/bounds_checking_function/src/secureprintoutput_w.c create mode 100644 third_party/bounds_checking_function/src/snprintf_s.c create mode 100644 third_party/bounds_checking_function/src/sprintf_s.c create mode 100644 third_party/bounds_checking_function/src/sscanf_s.c create mode 100644 third_party/bounds_checking_function/src/strcat_s.c create mode 100644 third_party/bounds_checking_function/src/strcpy_s.c create mode 100644 third_party/bounds_checking_function/src/strncat_s.c create mode 100644 third_party/bounds_checking_function/src/strncpy_s.c create mode 100644 third_party/bounds_checking_function/src/strtok_s.c create mode 100644 third_party/bounds_checking_function/src/swprintf_s.c create mode 100644 third_party/bounds_checking_function/src/swscanf_s.c create mode 100644 third_party/bounds_checking_function/src/vfscanf_s.c create mode 100644 third_party/bounds_checking_function/src/vfwscanf_s.c create mode 100644 third_party/bounds_checking_function/src/vscanf_s.c create mode 100644 third_party/bounds_checking_function/src/vsnprintf_s.c create mode 100644 third_party/bounds_checking_function/src/vsprintf_s.c create mode 100644 third_party/bounds_checking_function/src/vsscanf_s.c create mode 100644 third_party/bounds_checking_function/src/vswprintf_s.c create mode 100644 third_party/bounds_checking_function/src/vswscanf_s.c create mode 100644 third_party/bounds_checking_function/src/vwscanf_s.c create mode 100644 third_party/bounds_checking_function/src/wcscat_s.c create mode 100644 third_party/bounds_checking_function/src/wcscpy_s.c create mode 100644 third_party/bounds_checking_function/src/wcsncat_s.c create mode 100644 third_party/bounds_checking_function/src/wcsncpy_s.c create mode 100644 third_party/bounds_checking_function/src/wcstok_s.c create mode 100644 third_party/bounds_checking_function/src/wmemcpy_s.c create mode 100644 third_party/bounds_checking_function/src/wmemmove_s.c create mode 100644 third_party/bounds_checking_function/src/wscanf_s.c diff --git a/third_party/bounds_checking_function/BUILD.gn b/third_party/bounds_checking_function/BUILD.gn new file mode 100644 index 0000000..0622488 --- /dev/null +++ b/third_party/bounds_checking_function/BUILD.gn @@ -0,0 +1,81 @@ +# +# Copyright (c) 2020 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +if (defined(ohos_lite)) { + import("//build/lite/config/component/lite_component.gni") +} else { + import("//build/ohos.gni") +} +import("libsec_src.gni") + +config("libsec_public_config") { + include_dirs = [ "include" ] +} + +if (defined(ohos_lite)) { + # When the kernel is liteos_m, use //kernel/liteos_m/kal/libsec/BUILD.gn to compile. + if (ohos_kernel_type == "liteos_m") { + group("libsec_static") { + } + } else { + lite_library("libsec_static") { + target_type = "static_library" + sources = libsec_sources + public_configs = [ ":libsec_public_config" ] + } + } + lite_library("libsec_shared") { + target_type = "shared_library" + sources = libsec_sources + public_configs = [ ":libsec_public_config" ] + } + group("sec_shared") { + deps = [ ":libsec_shared" ] + } +} else { + ohos_static_library("libsec_static") { + sources = libsec_sources + all_dependent_configs = [ ":libsec_public_config" ] + cflags = [ + "-D_INC_STRING_S", + "-D_INC_WCHAR_S", + "-D_SECIMP=//", + "-D_STDIO_S_DEFINED", + "-D_INC_STDIO_S", + "-D_INC_STDLIB_S", + "-D_INC_MEMORY_S", + ] + part_name = "bounds_checking_function" + subsystem_name = "thirdparty" + } + ohos_shared_library("libsec_shared") { + sources = libsec_sources + all_dependent_configs = [ ":libsec_public_config" ] + cflags = [ + "-D_INC_STRING_S", + "-D_INC_WCHAR_S", + "-D_SECIMP=//", + "-D_STDIO_S_DEFINED", + "-D_INC_STDIO_S", + "-D_INC_STDLIB_S", + "-D_INC_MEMORY_S", + ] + part_name = "bounds_checking_function" + subsystem_name = "thirdparty" + install_images = [ + "system", + "updater", + ] + } +} diff --git a/third_party/bounds_checking_function/LICENSE b/third_party/bounds_checking_function/LICENSE new file mode 100644 index 0000000..42f2a83 --- /dev/null +++ b/third_party/bounds_checking_function/LICENSE @@ -0,0 +1,124 @@ +木兰宽松许可证, 第2版 + +2020年1月 http://license.coscl.org.cn/MulanPSL2 + +您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: + +0. 定义 + +“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 + +“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 + +“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 + +“法人实体” 是指提交贡献的机构及其“关联实体”。 + +“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 + +1. 授予版权许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 + +2. 授予专利许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 + +3. 无商标许可 + +“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 + +4. 分发限制 + +您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 + +5. 免责声明与责任限制 + +“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 + +6. 语言 + +“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 + +条款结束 + +如何将木兰宽松许可证,第2版,应用到您的软件 + +如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: + +1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; + +2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; + +3, 请将如下声明文本放入每个源文件的头部注释中。 + +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. +Mulan Permissive Software License,Version 2 +Mulan Permissive Software License,Version 2 (Mulan PSL v2) + +January 2020 http://license.coscl.org.cn/MulanPSL2 + +Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: + +0. Definition + +Software means the program and related documents which are licensed under this License and comprise all Contribution(s). + +Contribution means the copyrightable work licensed by a particular Contributor under this License. + +Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. + +Legal Entity means the entity making a Contribution and all its Affiliates. + +Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, 'control' means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. + +1. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. + +2. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. + +3. No Trademark License + +No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4. + +4. Distribution Restriction + +You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. + +5. Disclaimer of Warranty and Limitation of Liability + +THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT'S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +6. Language + +THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. + +END OF THE TERMS AND CONDITIONS + +How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software + +To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: + +Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; +Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package; +Attach the statement to the appropriate annotated syntax at the beginning of each source file. +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. \ No newline at end of file diff --git a/third_party/bounds_checking_function/OAT.xml b/third_party/bounds_checking_function/OAT.xml new file mode 100644 index 0000000..d7f574a --- /dev/null +++ b/third_party/bounds_checking_function/OAT.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + diff --git a/third_party/bounds_checking_function/README.OpenSource b/third_party/bounds_checking_function/README.OpenSource new file mode 100644 index 0000000..9c3a2bb --- /dev/null +++ b/third_party/bounds_checking_function/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name" : "bounds_checking_function", + "License" : "Mulan Permissive Software License,Version 2", + "License File" : "LICENSE", + "Version Number" : "v1.1.10", + "Owner" : "jianghan2@huawei.com", + "Upstream URL" : "https://gitee.com/openeuler/libboundscheck", + "Description" : "following the standard of C11 Annex K (bound-checking interfaces), functions of the common memory/string operation classes, such as memcpy_s, strcpy_s, are selected and implemented." + } +] diff --git a/third_party/bounds_checking_function/README.en.md b/third_party/bounds_checking_function/README.en.md new file mode 100644 index 0000000..c905d57 --- /dev/null +++ b/third_party/bounds_checking_function/README.en.md @@ -0,0 +1,9 @@ +# bounds_checking_function + +#### Description + +- following the standard of C11 Annex K (bound-checking interfaces), functions of the common memory/string operation classes, such as memcpy_s, strcpy_s, are selected and implemented. + +- other standard functions in C11 Annex K will be analyzed in the future and implemented in this organization if necessary. + +- handles the release, update, and maintenance of bounds_checking_function. diff --git a/third_party/bounds_checking_function/README.md b/third_party/bounds_checking_function/README.md new file mode 100644 index 0000000..4cb88ea --- /dev/null +++ b/third_party/bounds_checking_function/README.md @@ -0,0 +1,6 @@ +# bounds_checking_function + +#### 介绍 +- 遵循C11 Annex K (Bounds-checking interfaces)的标准,选取并实现了常见的内存/字符串操作类的函数,如memcpy_s、strcpy_s等函数。 +- 未来将分析C11 Annex K中的其他标准函数,如果有必要,将在该组织中实现。 +- 处理边界检查函数的版本发布、更新以及维护。 diff --git a/third_party/bounds_checking_function/bundle.json b/third_party/bounds_checking_function/bundle.json new file mode 100644 index 0000000..16cd84f --- /dev/null +++ b/third_party/bounds_checking_function/bundle.json @@ -0,0 +1,41 @@ +{ + "name": "@ohos/bounds_checking_function", + "description": "following the standard of C11 Annex K (bound-checking interfaces), functions of the common memory/string operation classes, such as memcpy_s, strcpy_s, are selected and implemented.", + "version": "3.1", + "license": "MulanPSL-2.0", + "publishAs": "code-segment", + "segment": { + "destPath": "third_party/bounds_checking_function" + }, + "dirs": {}, + "scripts": {}, + "component": { + "name": "bounds_checking_function", + "subsystem": "thirdparty", + "syscap": [], + "features": [], + "adapted_system_type": [ "mini", "small", "standard" ], + "rom": "", + "ram": "", + "deps": { + "components": [], + "third_party": [] + }, + "build": { + "sub_component": [ "//third_party/bounds_checking_function:libsec_shared" ], + "inner_kits": [ + { + "name": "//third_party/bounds_checking_function:libsec_shared", + "header": { + "header_files": [ + "securec.h", + "securectype.h" + ], + "header_base": "//third_party/bounds_checking_function/include" + } + } + ], + "test": [] + } + } +} \ No newline at end of file diff --git a/third_party/bounds_checking_function/include/securec.h b/third_party/bounds_checking_function/include/securec.h new file mode 100644 index 0000000..23bac2c --- /dev/null +++ b/third_party/bounds_checking_function/include/securec.h @@ -0,0 +1,623 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: The user of this secure c library should include this header file in you source code. + * This header file declare all supported API prototype of the library, + * such as memcpy_s, strcpy_s, wcscpy_s,strcat_s, strncat_s, sprintf_s, scanf_s, and so on. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECUREC_H_5D13A042_DC3F_4ED9_A8D1_882811274C27 +#define SECUREC_H_5D13A042_DC3F_4ED9_A8D1_882811274C27 + +#include "securectype.h" +#ifndef SECUREC_HAVE_STDARG_H +#define SECUREC_HAVE_STDARG_H 1 +#endif + +#if SECUREC_HAVE_STDARG_H +#include +#endif + +#ifndef SECUREC_HAVE_ERRNO_H +#define SECUREC_HAVE_ERRNO_H 1 +#endif + +/* EINVAL ERANGE may defined in errno.h */ +#if SECUREC_HAVE_ERRNO_H +#if SECUREC_IN_KERNEL +#include +#else +#include +#endif +#endif + +/* Define error code */ +#if defined(SECUREC_NEED_ERRNO_TYPE) || !defined(__STDC_WANT_LIB_EXT1__) || \ + (defined(__STDC_WANT_LIB_EXT1__) && (!__STDC_WANT_LIB_EXT1__)) +#ifndef SECUREC_DEFINED_ERRNO_TYPE +#define SECUREC_DEFINED_ERRNO_TYPE +/* Just check whether macrodefinition exists. */ +#ifndef errno_t +typedef int errno_t; +#endif +#endif +#endif + +/* Success */ +#ifndef EOK +#define EOK 0 +#endif + +#ifndef EINVAL +/* The src buffer is not correct and destination buffer cant not be reset */ +#define EINVAL 22 +#endif + +#ifndef EINVAL_AND_RESET +/* Once the error is detected, the dest buffer must be reseted! Value is 22 or 128 */ +#define EINVAL_AND_RESET 150 +#endif + +#ifndef ERANGE +/* The destination buffer is not long enough and destination buffer can not be reset */ +#define ERANGE 34 +#endif + +#ifndef ERANGE_AND_RESET +/* Once the error is detected, the dest buffer must be reseted! Value is 34 or 128 */ +#define ERANGE_AND_RESET 162 +#endif + +#ifndef EOVERLAP_AND_RESET +/* Once the buffer overlap is detected, the dest buffer must be reseted! Value is 54 or 128 */ +#define EOVERLAP_AND_RESET 182 +#endif + +/* If you need export the function of this library in Win32 dll, use __declspec(dllexport) */ +#ifndef SECUREC_API +#if defined(SECUREC_DLL_EXPORT) +#define SECUREC_API __declspec(dllexport) +#elif defined(SECUREC_DLL_IMPORT) +#define SECUREC_API __declspec(dllimport) +#else +/* + * Standardized function declaration. If a security function is declared in the your code, + * it may cause a compilation alarm,Please delete the security function you declared. + * Adding extern under windows will cause the system to have inline functions to expand, + * so do not add the extern in default + */ +#if defined(_MSC_VER) +#define SECUREC_API +#else +#define SECUREC_API extern +#endif +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#if SECUREC_ENABLE_MEMSET + /* + * Description: The memset_s function copies the value of c (converted to an unsigned char) into each of + * the first count characters of the object pointed to by dest. + * Parameter: dest - destination address + * Parameter: destMax - The maximum length of destination buffer + * Parameter: c - the value to be copied + * Parameter: count - copies count bytes of value to dest + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t memset_s(void *dest, size_t destMax, int c, size_t count); +#endif + +#ifndef SECUREC_ONLY_DECLARE_MEMSET +#define SECUREC_ONLY_DECLARE_MEMSET 0 +#endif + +#if !SECUREC_ONLY_DECLARE_MEMSET + +#if SECUREC_ENABLE_MEMMOVE + /* + * Description: The memmove_s function copies n characters from the object pointed to by src + * into the object pointed to by dest. + * Parameter: dest - destination address + * Parameter: destMax - The maximum length of destination buffer + * Parameter: src - source address + * Parameter: count - copies count bytes from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t memmove_s(void *dest, size_t destMax, const void *src, size_t count); +#endif + +#if SECUREC_ENABLE_MEMCPY + /* + * Description: The memcpy_s function copies n characters from the object pointed to + * by src into the object pointed to by dest. + * Parameter: dest - destination address + * Parameter: destMax - The maximum length of destination buffer + * Parameter: src - source address + * Parameter: count - copies count bytes from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t memcpy_s(void *dest, size_t destMax, const void *src, size_t count); +#endif + +#if SECUREC_ENABLE_STRCPY + /* + * Description: The strcpy_s function copies the string pointed to by strSrc (including + * the terminating null character) into the array pointed to by strDest + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating null character) + * Parameter: strSrc - source address + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t strcpy_s(char *strDest, size_t destMax, const char *strSrc); +#endif + +#if SECUREC_ENABLE_STRNCPY + /* + * Description: The strncpy_s function copies not more than n successive characters (not including + * the terminating null character) from the array pointed to by strSrc to the array pointed to by strDest. + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating null character) + * Parameter: strSrc - source address + * Parameter: count - copies count characters from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t strncpy_s(char *strDest, size_t destMax, const char *strSrc, size_t count); +#endif + +#if SECUREC_ENABLE_STRCAT + /* + * Description: The strcat_s function appends a copy of the string pointed to by strSrc (including + * the terminating null character) to the end of the string pointed to by strDest. + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating null wide character) + * Parameter: strSrc - source address + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t strcat_s(char *strDest, size_t destMax, const char *strSrc); +#endif + +#if SECUREC_ENABLE_STRNCAT + /* + * Description: The strncat_s function appends not more than n successive characters (not including + * the terminating null character) + * from the array pointed to by strSrc to the end of the string pointed to by strDest. + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating null character) + * Parameter: strSrc - source address + * Parameter: count - copies count characters from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t strncat_s(char *strDest, size_t destMax, const char *strSrc, size_t count); +#endif + +#if SECUREC_ENABLE_VSPRINTF + /* + * Description: The vsprintf_s function is equivalent to the vsprintf function except for the parameter destMax + * and the explicit runtime-constraints violation + * Parameter: strDest - produce output according to a format ,write to the character string strDest. + * Parameter: destMax - The maximum length of destination buffer(including the terminating null wide characte) + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of characters printed(not including the terminating null byte '\0'), + * If an error occurred Return: -1. + */ + SECUREC_API int vsprintf_s(char *strDest, size_t destMax, const char *format, + va_list argList) SECUREC_ATTRIBUTE(3, 0); +#endif + +#if SECUREC_ENABLE_SPRINTF + /* + * Description: The sprintf_s function is equivalent to the sprintf function except for the parameter destMax + * and the explicit runtime-constraints violation + * Parameter: strDest - produce output according to a format ,write to the character string strDest. + * Parameter: destMax - The maximum length of destination buffer(including the terminating null byte '\0') + * Parameter: format - fromat string + * Return: the number of characters printed(not including the terminating null byte '\0'), + * If an error occurred Return: -1. + */ + SECUREC_API int sprintf_s(char *strDest, size_t destMax, const char *format, ...) SECUREC_ATTRIBUTE(3, 4); +#endif + +#if SECUREC_ENABLE_VSNPRINTF + /* + * Description: The vsnprintf_s function is equivalent to the vsnprintf function except for + * the parameter destMax/count and the explicit runtime-constraints violation + * Parameter: strDest - produce output according to a format ,write to the character string strDest. + * Parameter: destMax - The maximum length of destination buffer(including the terminating null byte '\0') + * Parameter: count - do not write more than count bytes to strDest(not including the terminating null byte '\0') + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of characters printed(not including the terminating null byte '\0'), + * If an error occurred Return: -1.Pay special attention to returning -1 when truncation occurs + */ + SECUREC_API int vsnprintf_s(char *strDest, size_t destMax, size_t count, const char *format, + va_list argList) SECUREC_ATTRIBUTE(4, 0); +#endif + +#if SECUREC_ENABLE_SNPRINTF + /* + * Description: The snprintf_s function is equivalent to the snprintf function except for + * the parameter destMax/count and the explicit runtime-constraints violation + * Parameter: strDest - produce output according to a format ,write to the character string strDest. + * Parameter: destMax - The maximum length of destination buffer(including the terminating null byte '\0') + * Parameter: count - do not write more than count bytes to strDest(not including the terminating null byte '\0') + * Parameter: format - fromat string + * Return: the number of characters printed(not including the terminating null byte '\0'), + * If an error occurred Return: -1.Pay special attention to returning -1 when truncation occurs + */ + SECUREC_API int snprintf_s(char *strDest, size_t destMax, size_t count, const char *format, + ...) SECUREC_ATTRIBUTE(4, 5); +#endif + +#if SECUREC_SNPRINTF_TRUNCATED + /* + * Description: The vsnprintf_truncated_s function is equivalent to the vsnprintf_s function except + * no count parameter and return value + * Parameter: strDest - produce output according to a format ,write to the character string strDest + * Parameter: destMax - The maximum length of destination buffer(including the terminating null byte '\0') + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of characters printed(not including the terminating null byte '\0'), + * If an error occurred Return: -1.Pay special attention to returning destMax - 1 when truncation occurs + */ + SECUREC_API int vsnprintf_truncated_s(char *strDest, size_t destMax, const char *format, + va_list argList) SECUREC_ATTRIBUTE(3, 0); + + /* + * Description: The snprintf_truncated_s function is equivalent to the snprintf_2 function except + * no count parameter and return value + * Parameter: strDest - produce output according to a format ,write to the character string strDest. + * Parameter: destMax - The maximum length of destination buffer(including the terminating null byte '\0') + * Parameter: format - fromat string + * Return: the number of characters printed(not including the terminating null byte '\0'), + * If an error occurred Return: -1.Pay special attention to returning destMax - 1 when truncation occurs + */ + SECUREC_API int snprintf_truncated_s(char *strDest, size_t destMax, + const char *format, ...) SECUREC_ATTRIBUTE(3, 4); +#endif + +#if SECUREC_ENABLE_SCANF + /* + * Description: The scanf_s function is equivalent to fscanf_s with the argument stdin + * interposed before the arguments to scanf_s + * Parameter: format - fromat string + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int scanf_s(const char *format, ...); +#endif + +#if SECUREC_ENABLE_VSCANF + /* + * Description: The vscanf_s function is equivalent to scanf_s, with the variable argument list replaced by argList + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int vscanf_s(const char *format, va_list argList); +#endif + +#if SECUREC_ENABLE_SSCANF + /* + * Description: The sscanf_s function is equivalent to fscanf_s, except that input is obtained from a + * string (specified by the argument buffer) rather than from a stream + * Parameter: buffer - read character from buffer + * Parameter: format - fromat string + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int sscanf_s(const char *buffer, const char *format, ...); +#endif + +#if SECUREC_ENABLE_VSSCANF + /* + * Description: The vsscanf_s function is equivalent to sscanf_s, with the variable argument list + * replaced by argList + * Parameter: buffer - read character from buffer + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int vsscanf_s(const char *buffer, const char *format, va_list argList); +#endif + +#if SECUREC_ENABLE_FSCANF + /* + * Description: The fscanf_s function is equivalent to fscanf except that the c, s, and [ conversion specifiers + * apply to a pair of arguments (unless assignment suppression is indicated by a*) + * Parameter: stream - stdio file stream + * Parameter: format - fromat string + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int fscanf_s(FILE *stream, const char *format, ...); +#endif + +#if SECUREC_ENABLE_VFSCANF + /* + * Description: The vfscanf_s function is equivalent to fscanf_s, with the variable argument list + * replaced by argList + * Parameter: stream - stdio file stream + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int vfscanf_s(FILE *stream, const char *format, va_list argList); +#endif + +#if SECUREC_ENABLE_STRTOK + /* + * Description: The strtok_s function parses a string into a sequence of strToken, + * replace all characters in strToken string that match to strDelimit set with 0. + * On the first call to strtok_s the string to be parsed should be specified in strToken. + * In each subsequent call that should parse the same string, strToken should be NULL + * Parameter: strToken - the string to be delimited + * Parameter: strDelimit - specifies a set of characters that delimit the tokens in the parsed string + * Parameter: context - is a pointer to a char * variable that is used internally by strtok_s function + * Return: On the first call returns the address of the first non \0 character, otherwise NULL is returned. + * In subsequent calls, the strtoken is set to NULL, and the context set is the same as the previous call, + * return NULL if the *context string length is equal 0, otherwise return *context. + */ + SECUREC_API char *strtok_s(char *strToken, const char *strDelimit, char **context); +#endif + +#if SECUREC_ENABLE_GETS && !SECUREC_IN_KERNEL + /* + * Description: The gets_s function reads at most one less than the number of characters specified + * by destMax from the stream pointed to by stdin, into the array pointed to by buffer + * Parameter: buffer - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating null character) + * Return: buffer if there was no runtime-constraint violation,If an error occurred Return: NULL. + */ + SECUREC_API char *gets_s(char *buffer, size_t destMax); +#endif + +#if SECUREC_ENABLE_WCHAR_FUNC +#if SECUREC_ENABLE_MEMCPY + /* + * Description: The wmemcpy_s function copies n successive wide characters from the object pointed to + * by src into the object pointed to by dest. + * Parameter: dest - destination address + * Parameter: destMax - The maximum length of destination buffer + * Parameter: src - source address + * Parameter: count - copies count wide characters from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t wmemcpy_s(wchar_t *dest, size_t destMax, const wchar_t *src, size_t count); +#endif + +#if SECUREC_ENABLE_MEMMOVE + /* + * Description: The wmemmove_s function copies n successive wide characters from the object + * pointed to by src into the object pointed to by dest. + * Parameter: dest - destination address + * Parameter: destMax - The maximum length of destination buffer + * Parameter: src - source address + * Parameter: count - copies count wide characters from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t wmemmove_s(wchar_t *dest, size_t destMax, const wchar_t *src, size_t count); +#endif + +#if SECUREC_ENABLE_STRCPY + /* + * Description: The wcscpy_s function copies the wide string pointed to by strSrc (including theterminating + * null wide character) into the array pointed to by strDest + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer + * Parameter: strSrc - source address + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t wcscpy_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc); +#endif + +#if SECUREC_ENABLE_STRNCPY + /* + * Description: The wcsncpy_s function copies not more than n successive wide characters (not including the + * terminating null wide character) from the array pointed to by strSrc to the array pointed to by strDest + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating wide character) + * Parameter: strSrc - source address + * Parameter: count - copies count wide characters from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t wcsncpy_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc, size_t count); +#endif + +#if SECUREC_ENABLE_STRCAT + /* + * Description: The wcscat_s function appends a copy of the wide string pointed to by strSrc (including the + * terminating null wide character) to the end of the wide string pointed to by strDest + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating wide character) + * Parameter: strSrc - source address + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t wcscat_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc); +#endif + +#if SECUREC_ENABLE_STRNCAT + /* + * Description: The wcsncat_s function appends not more than n successive wide characters (not including the + * terminating null wide character) from the array pointed to by strSrc to the end of the wide string pointed to + * by strDest. + * Parameter: strDest - destination address + * Parameter: destMax - The maximum length of destination buffer(including the terminating wide character) + * Parameter: strSrc - source address + * Parameter: count - copies count wide characters from the src + * Return: EOK if there was no runtime-constraint violation + */ + SECUREC_API errno_t wcsncat_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc, size_t count); +#endif + +#if SECUREC_ENABLE_STRTOK + /* + * Description: The wcstok_s function is the wide-character equivalent of the strtok_s function + * Parameter: strToken - the string to be delimited + * Parameter: strDelimit - specifies a set of characters that delimit the tokens in the parsed string + * Parameter: context - is a pointer to a char * variable that is used internally by strtok_s function + * Return: a pointer to the first character of a token, or a null pointer if there is no token + * or there is a runtime-constraint violation. + */ + SECUREC_API wchar_t *wcstok_s(wchar_t *strToken, const wchar_t *strDelimit, wchar_t **context); +#endif + +#if SECUREC_ENABLE_VSPRINTF + /* + * Description: The vswprintf_s function is the wide-character equivalent of the vsprintf_s function + * Parameter: strDest - produce output according to a format ,write to the character string strDest + * Parameter: destMax - The maximum length of destination buffer(including the terminating null ) + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of characters printed(not including the terminating null wide characte), + * If an error occurred Return: -1. + */ + SECUREC_API int vswprintf_s(wchar_t *strDest, size_t destMax, const wchar_t *format, va_list argList); +#endif + +#if SECUREC_ENABLE_SPRINTF + + /* + * Description: The swprintf_s function is the wide-character equivalent of the sprintf_s function + * Parameter: strDest - produce output according to a format ,write to the character string strDest + * Parameter: destMax - The maximum length of destination buffer(including the terminating null ) + * Parameter: format - fromat string + * Return: the number of characters printed(not including the terminating null wide characte), + * If an error occurred Return: -1. + */ + SECUREC_API int swprintf_s(wchar_t *strDest, size_t destMax, const wchar_t *format, ...); +#endif + +#if SECUREC_ENABLE_FSCANF + /* + * Description: The fwscanf_s function is the wide-character equivalent of the fscanf_s function + * Parameter: stream - stdio file stream + * Parameter: format - fromat string + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int fwscanf_s(FILE *stream, const wchar_t *format, ...); +#endif + +#if SECUREC_ENABLE_VFSCANF + /* + * Description: The vfwscanf_s function is the wide-character equivalent of the vfscanf_s function + * Parameter: stream - stdio file stream + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int vfwscanf_s(FILE *stream, const wchar_t *format, va_list argList); +#endif + +#if SECUREC_ENABLE_SCANF + /* + * Description: The wscanf_s function is the wide-character equivalent of the scanf_s function + * Parameter: format - fromat string + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int wscanf_s(const wchar_t *format, ...); +#endif + +#if SECUREC_ENABLE_VSCANF + /* + * Description: The vwscanf_s function is the wide-character equivalent of the vscanf_s function + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int vwscanf_s(const wchar_t *format, va_list argList); +#endif + +#if SECUREC_ENABLE_SSCANF + /* + * Description: The swscanf_s function is the wide-character equivalent of the sscanf_s function + * Parameter: buffer - read character from buffer + * Parameter: format - fromat string + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int swscanf_s(const wchar_t *buffer, const wchar_t *format, ...); +#endif + +#if SECUREC_ENABLE_VSSCANF + /* + * Description: The vswscanf_s function is the wide-character equivalent of the vsscanf_s function + * Parameter: buffer - read character from buffer + * Parameter: format - fromat string + * Parameter: argList - instead of a variable number of arguments + * Return: the number of input items assigned, If an error occurred Return: -1. + */ + SECUREC_API int vswscanf_s(const wchar_t *buffer, const wchar_t *format, va_list argList); +#endif +#endif /* SECUREC_ENABLE_WCHAR_FUNC */ +#endif + + /* Those functions are used by macro ,must declare hare , also for without function declaration warning */ + extern errno_t strncpy_error(char *strDest, size_t destMax, const char *strSrc, size_t count); + extern errno_t strcpy_error(char *strDest, size_t destMax, const char *strSrc); + +#if SECUREC_WITH_PERFORMANCE_ADDONS + /* Those functions are used by macro */ + extern errno_t memset_sOptAsm(void *dest, size_t destMax, int c, size_t count); + extern errno_t memset_sOptTc(void *dest, size_t destMax, int c, size_t count); + extern errno_t memcpy_sOptAsm(void *dest, size_t destMax, const void *src, size_t count); + extern errno_t memcpy_sOptTc(void *dest, size_t destMax, const void *src, size_t count); + +/* The strcpy_sp is a macro, not a function in performance optimization mode. */ +#define strcpy_sp(dest, destMax, src) ((__builtin_constant_p((destMax)) && \ + __builtin_constant_p((src))) ? \ + SECUREC_STRCPY_SM((dest), (destMax), (src)) : \ + strcpy_s((dest), (destMax), (src))) + +/* The strncpy_sp is a macro, not a function in performance optimization mode. */ +#define strncpy_sp(dest, destMax, src, count) ((__builtin_constant_p((count)) && \ + __builtin_constant_p((destMax)) && \ + __builtin_constant_p((src))) ? \ + SECUREC_STRNCPY_SM((dest), (destMax), (src), (count)) : \ + strncpy_s((dest), (destMax), (src), (count))) + +/* The strcat_sp is a macro, not a function in performance optimization mode. */ +#define strcat_sp(dest, destMax, src) ((__builtin_constant_p((destMax)) && \ + __builtin_constant_p((src))) ? \ + SECUREC_STRCAT_SM((dest), (destMax), (src)) : \ + strcat_s((dest), (destMax), (src))) + +/* The strncat_sp is a macro, not a function in performance optimization mode. */ +#define strncat_sp(dest, destMax, src, count) ((__builtin_constant_p((count)) && \ + __builtin_constant_p((destMax)) && \ + __builtin_constant_p((src))) ? \ + SECUREC_STRNCAT_SM((dest), (destMax), (src), (count)) : \ + strncat_s((dest), (destMax), (src), (count))) + +/* The memcpy_sp is a macro, not a function in performance optimization mode. */ +#define memcpy_sp(dest, destMax, src, count) (__builtin_constant_p((count)) ? \ + (SECUREC_MEMCPY_SM((dest), (destMax), (src), (count))) : \ + (__builtin_constant_p((destMax)) ? \ + (((size_t)(destMax) > 0 && \ + (((unsigned long long)(destMax) & (unsigned long long)(-2)) < SECUREC_MEM_MAX_LEN)) ? \ + memcpy_sOptTc((dest), (destMax), (src), (count)) : ERANGE) : \ + memcpy_sOptAsm((dest), (destMax), (src), (count)))) + +/* The memset_sp is a macro, not a function in performance optimization mode. */ +#define memset_sp(dest, destMax, c, count) (__builtin_constant_p((count)) ? \ + (SECUREC_MEMSET_SM((dest), (destMax), (c), (count))) : \ + (__builtin_constant_p((destMax)) ? \ + (((((unsigned long long)(destMax) & (unsigned long long)(-2)) < SECUREC_MEM_MAX_LEN)) ? \ + memset_sOptTc((dest), (destMax), (c), (count)) : ERANGE) : \ + memset_sOptAsm((dest), (destMax), (c), (count)))) + +#endif + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/third_party/bounds_checking_function/include/securectype.h b/third_party/bounds_checking_function/include/securectype.h new file mode 100644 index 0000000..17cca94 --- /dev/null +++ b/third_party/bounds_checking_function/include/securectype.h @@ -0,0 +1,570 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Define internal used macro and data type. The marco of SECUREC_ON_64BITS + * will be determined in this header file, which is a switch for part + * of code. Some macro are used to supress warning by MS compiler. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECURECTYPE_H_A7BBB686_AADA_451B_B9F9_44DACDAE18A7 +#define SECURECTYPE_H_A7BBB686_AADA_451B_B9F9_44DACDAE18A7 + +#ifndef SECUREC_USING_STD_SECURE_LIB +#if defined(_MSC_VER) && _MSC_VER >= 1400 +#if defined(__STDC_WANT_SECURE_LIB__) && (!__STDC_WANT_SECURE_LIB__) +/* Security functions have been provided since vs2005, default use of system library functions */ +#define SECUREC_USING_STD_SECURE_LIB 0 +#else +#define SECUREC_USING_STD_SECURE_LIB 1 +#endif +#else +#define SECUREC_USING_STD_SECURE_LIB 0 +#endif +#endif + +/* Compatibility with older Secure C versions, shielding VC symbol redefinition warning */ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) && (!SECUREC_USING_STD_SECURE_LIB) +#ifndef SECUREC_DISABLE_CRT_FUNC +#define SECUREC_DISABLE_CRT_FUNC 1 +#endif +#ifndef SECUREC_DISABLE_CRT_IMP +#define SECUREC_DISABLE_CRT_IMP 1 +#endif +#else /* MSC VER */ +#ifndef SECUREC_DISABLE_CRT_FUNC +#define SECUREC_DISABLE_CRT_FUNC 0 +#endif +#ifndef SECUREC_DISABLE_CRT_IMP +#define SECUREC_DISABLE_CRT_IMP 0 +#endif +#endif + +#if SECUREC_DISABLE_CRT_FUNC +#ifdef __STDC_WANT_SECURE_LIB__ +#undef __STDC_WANT_SECURE_LIB__ +#endif +#define __STDC_WANT_SECURE_LIB__ 0 +#endif + +#if SECUREC_DISABLE_CRT_IMP +#ifdef _CRTIMP_ALTERNATIVE +#undef _CRTIMP_ALTERNATIVE +#endif +#define _CRTIMP_ALTERNATIVE /* Comment microsoft *_s function */ +#endif + +/* Compile in kernel under macro control */ +#ifndef SECUREC_IN_KERNEL +#ifdef __KERNEL__ +#define SECUREC_IN_KERNEL 1 +#else +#define SECUREC_IN_KERNEL 0 +#endif +#endif + +#if SECUREC_IN_KERNEL +#ifndef SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_SCANF_FILE 0 +#endif +#ifndef SECUREC_ENABLE_WCHAR_FUNC +#define SECUREC_ENABLE_WCHAR_FUNC 0 +#endif +#else /* SECUREC_IN_KERNEL */ +#ifndef SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_SCANF_FILE 1 +#endif +#ifndef SECUREC_ENABLE_WCHAR_FUNC +#define SECUREC_ENABLE_WCHAR_FUNC 1 +#endif +#endif + +/* Default secure function declaration, default declarations for non-standard functions */ +#ifndef SECUREC_SNPRINTF_TRUNCATED +#define SECUREC_SNPRINTF_TRUNCATED 1 +#endif + +#if SECUREC_USING_STD_SECURE_LIB +#if defined(_MSC_VER) && _MSC_VER >= 1400 +/* Declare secure functions that are not available in the VS compiler */ +#ifndef SECUREC_ENABLE_MEMSET +#define SECUREC_ENABLE_MEMSET 1 +#endif +/* VS 2005 have vsnprintf_s function */ +#ifndef SECUREC_ENABLE_VSNPRINTF +#define SECUREC_ENABLE_VSNPRINTF 0 +#endif +#ifndef SECUREC_ENABLE_SNPRINTF +/* VS 2005 have vsnprintf_s function Adapt the snprintf_s of the security function */ +#define snprintf_s _snprintf_s +#define SECUREC_ENABLE_SNPRINTF 0 +#endif +/* Before VS 2010 do not have v functions */ +#if _MSC_VER <= 1600 || defined(SECUREC_FOR_V_SCANFS) +#ifndef SECUREC_ENABLE_VFSCANF +#define SECUREC_ENABLE_VFSCANF 1 +#endif +#ifndef SECUREC_ENABLE_VSCANF +#define SECUREC_ENABLE_VSCANF 1 +#endif +#ifndef SECUREC_ENABLE_VSSCANF +#define SECUREC_ENABLE_VSSCANF 1 +#endif +#endif + +#else /* MSC VER */ +#ifndef SECUREC_ENABLE_MEMSET +#define SECUREC_ENABLE_MEMSET 0 +#endif +#ifndef SECUREC_ENABLE_SNPRINTF +#define SECUREC_ENABLE_SNPRINTF 0 +#endif +#ifndef SECUREC_ENABLE_VSNPRINTF +#define SECUREC_ENABLE_VSNPRINTF 0 +#endif +#endif + +#ifndef SECUREC_ENABLE_MEMMOVE +#define SECUREC_ENABLE_MEMMOVE 0 +#endif +#ifndef SECUREC_ENABLE_MEMCPY +#define SECUREC_ENABLE_MEMCPY 0 +#endif +#ifndef SECUREC_ENABLE_STRCPY +#define SECUREC_ENABLE_STRCPY 0 +#endif +#ifndef SECUREC_ENABLE_STRNCPY +#define SECUREC_ENABLE_STRNCPY 0 +#endif +#ifndef SECUREC_ENABLE_STRCAT +#define SECUREC_ENABLE_STRCAT 0 +#endif +#ifndef SECUREC_ENABLE_STRNCAT +#define SECUREC_ENABLE_STRNCAT 0 +#endif +#ifndef SECUREC_ENABLE_SPRINTF +#define SECUREC_ENABLE_SPRINTF 0 +#endif +#ifndef SECUREC_ENABLE_VSPRINTF +#define SECUREC_ENABLE_VSPRINTF 0 +#endif +#ifndef SECUREC_ENABLE_SSCANF +#define SECUREC_ENABLE_SSCANF 0 +#endif +#ifndef SECUREC_ENABLE_VSSCANF +#define SECUREC_ENABLE_VSSCANF 0 +#endif +#ifndef SECUREC_ENABLE_SCANF +#define SECUREC_ENABLE_SCANF 0 +#endif +#ifndef SECUREC_ENABLE_VSCANF +#define SECUREC_ENABLE_VSCANF 0 +#endif + +#ifndef SECUREC_ENABLE_FSCANF +#define SECUREC_ENABLE_FSCANF 0 +#endif +#ifndef SECUREC_ENABLE_VFSCANF +#define SECUREC_ENABLE_VFSCANF 0 +#endif +#ifndef SECUREC_ENABLE_STRTOK +#define SECUREC_ENABLE_STRTOK 0 +#endif +#ifndef SECUREC_ENABLE_GETS +#define SECUREC_ENABLE_GETS 0 +#endif + +#else /* SECUREC USE STD SECURE LIB */ + +#ifndef SECUREC_ENABLE_MEMSET +#define SECUREC_ENABLE_MEMSET 1 +#endif +#ifndef SECUREC_ENABLE_MEMMOVE +#define SECUREC_ENABLE_MEMMOVE 1 +#endif +#ifndef SECUREC_ENABLE_MEMCPY +#define SECUREC_ENABLE_MEMCPY 1 +#endif +#ifndef SECUREC_ENABLE_STRCPY +#define SECUREC_ENABLE_STRCPY 1 +#endif +#ifndef SECUREC_ENABLE_STRNCPY +#define SECUREC_ENABLE_STRNCPY 1 +#endif +#ifndef SECUREC_ENABLE_STRCAT +#define SECUREC_ENABLE_STRCAT 1 +#endif +#ifndef SECUREC_ENABLE_STRNCAT +#define SECUREC_ENABLE_STRNCAT 1 +#endif +#ifndef SECUREC_ENABLE_SPRINTF +#define SECUREC_ENABLE_SPRINTF 1 +#endif +#ifndef SECUREC_ENABLE_VSPRINTF +#define SECUREC_ENABLE_VSPRINTF 1 +#endif +#ifndef SECUREC_ENABLE_SNPRINTF +#define SECUREC_ENABLE_SNPRINTF 1 +#endif +#ifndef SECUREC_ENABLE_VSNPRINTF +#define SECUREC_ENABLE_VSNPRINTF 1 +#endif +#ifndef SECUREC_ENABLE_SSCANF +#define SECUREC_ENABLE_SSCANF 1 +#endif +#ifndef SECUREC_ENABLE_VSSCANF +#define SECUREC_ENABLE_VSSCANF 1 +#endif +#ifndef SECUREC_ENABLE_SCANF +#if SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_SCANF 1 +#else +#define SECUREC_ENABLE_SCANF 0 +#endif +#endif +#ifndef SECUREC_ENABLE_VSCANF +#if SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_VSCANF 1 +#else +#define SECUREC_ENABLE_VSCANF 0 +#endif +#endif + +#ifndef SECUREC_ENABLE_FSCANF +#if SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_FSCANF 1 +#else +#define SECUREC_ENABLE_FSCANF 0 +#endif +#endif +#ifndef SECUREC_ENABLE_VFSCANF +#if SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_VFSCANF 1 +#else +#define SECUREC_ENABLE_VFSCANF 0 +#endif +#endif + +#ifndef SECUREC_ENABLE_STRTOK +#define SECUREC_ENABLE_STRTOK 1 +#endif +#ifndef SECUREC_ENABLE_GETS +#define SECUREC_ENABLE_GETS 1 +#endif +#endif /* SECUREC_USE_STD_SECURE_LIB */ + +#if !SECUREC_ENABLE_SCANF_FILE +#if SECUREC_ENABLE_FSCANF +#undef SECUREC_ENABLE_FSCANF +#define SECUREC_ENABLE_FSCANF 0 +#endif +#if SECUREC_ENABLE_VFSCANF +#undef SECUREC_ENABLE_VFSCANF +#define SECUREC_ENABLE_VFSCANF 0 +#endif +#if SECUREC_ENABLE_SCANF +#undef SECUREC_ENABLE_SCANF +#define SECUREC_ENABLE_SCANF 0 +#endif +#if SECUREC_ENABLE_FSCANF +#undef SECUREC_ENABLE_FSCANF +#define SECUREC_ENABLE_FSCANF 0 +#endif + +#endif + +#if SECUREC_IN_KERNEL +#include +#include +#else +#ifndef SECUREC_HAVE_STDIO_H +#define SECUREC_HAVE_STDIO_H 1 +#endif +#ifndef SECUREC_HAVE_STRING_H +#define SECUREC_HAVE_STRING_H 1 +#endif +#ifndef SECUREC_HAVE_STDLIB_H +#define SECUREC_HAVE_STDLIB_H 1 +#endif +#if SECUREC_HAVE_STDIO_H +#include +#endif +#if SECUREC_HAVE_STRING_H +#include +#endif +#if SECUREC_HAVE_STDLIB_H +#include +#endif +#endif + +/* + * If you need high performance, enable the SECUREC_WITH_PERFORMANCE_ADDONS macro, default is enable. + * The macro is automatically closed on the windows platform and linux kernel + */ +#ifndef SECUREC_WITH_PERFORMANCE_ADDONS +#if SECUREC_IN_KERNEL +#define SECUREC_WITH_PERFORMANCE_ADDONS 0 +#else +#define SECUREC_WITH_PERFORMANCE_ADDONS 1 +#endif +#endif + +/* If enable SECUREC_COMPATIBLE_WIN_FORMAT, the output format will be compatible to Windows. */ +#if (defined(_WIN32) || defined(_WIN64) || defined(_MSC_VER)) && !defined(SECUREC_COMPATIBLE_LINUX_FORMAT) +#ifndef SECUREC_COMPATIBLE_WIN_FORMAT +#define SECUREC_COMPATIBLE_WIN_FORMAT +#endif +#endif + +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) +/* On windows platform, can't use optimized function for there is no __builtin_constant_p like function */ +/* If need optimized macro, can define this: define __builtin_constant_p(x) 0 */ +#ifdef SECUREC_WITH_PERFORMANCE_ADDONS +#undef SECUREC_WITH_PERFORMANCE_ADDONS +#define SECUREC_WITH_PERFORMANCE_ADDONS 0 +#endif +#endif + +#if defined(__VXWORKS__) || defined(__vxworks) || defined(__VXWORKS) || defined(_VXWORKS_PLATFORM_) || \ + defined(SECUREC_VXWORKS_VERSION_5_4) +#ifndef SECUREC_VXWORKS_PLATFORM +#define SECUREC_VXWORKS_PLATFORM +#endif +#endif + +/* If enable SECUREC_COMPATIBLE_LINUX_FORMAT, the output format will be compatible to Linux. */ +#if !defined(SECUREC_COMPATIBLE_WIN_FORMAT) && !defined(SECUREC_VXWORKS_PLATFORM) +#ifndef SECUREC_COMPATIBLE_LINUX_FORMAT +#define SECUREC_COMPATIBLE_LINUX_FORMAT +#endif +#endif + +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT +#ifndef SECUREC_HAVE_STDDEF_H +#define SECUREC_HAVE_STDDEF_H 1 +#endif +/* Some system may no stddef.h */ +#if SECUREC_HAVE_STDDEF_H +#if !SECUREC_IN_KERNEL +#include +#endif +#endif +#endif + +/* + * Add the -DSECUREC_SUPPORT_FORMAT_WARNING=1 compiler option to supoort -Wformat=2. + * Default does not check the format is that the same data type in the actual code. + * In the product is different in the original data type definition of VxWorks and Linux. + */ +#ifndef SECUREC_SUPPORT_FORMAT_WARNING +#define SECUREC_SUPPORT_FORMAT_WARNING 0 +#endif + +#if SECUREC_SUPPORT_FORMAT_WARNING +#define SECUREC_ATTRIBUTE(x, y) __attribute__((format(printf, (x), (y)))) +#else +#define SECUREC_ATTRIBUTE(x, y) +#endif + +/* + * Add the -DSECUREC_SUPPORT_BUILTIN_EXPECT=0 compiler option, if complier can not support __builtin_expect. + */ +#ifndef SECUREC_SUPPORT_BUILTIN_EXPECT +#define SECUREC_SUPPORT_BUILTIN_EXPECT 1 +#endif + +#if SECUREC_SUPPORT_BUILTIN_EXPECT && defined(__GNUC__) && ((__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 3))) +/* + * This is a built-in function that can be used without a declaration, if warning for declaration not found occurred, + * you can add -DSECUREC_NEED_BUILTIN_EXPECT_DECLARE to complier options + */ +#ifdef SECUREC_NEED_BUILTIN_EXPECT_DECLARE +long __builtin_expect(long exp, long c); +#endif + +#define SECUREC_LIKELY(x) __builtin_expect(!!(x), 1) +#define SECUREC_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else +#define SECUREC_LIKELY(x) (x) +#define SECUREC_UNLIKELY(x) (x) +#endif + +/* Define the max length of the string */ +#ifndef SECUREC_STRING_MAX_LEN +#define SECUREC_STRING_MAX_LEN 0x7fffffffUL +#endif +#define SECUREC_WCHAR_STRING_MAX_LEN (SECUREC_STRING_MAX_LEN / sizeof(wchar_t)) + +/* Add SECUREC_MEM_MAX_LEN for memcpy and memmove */ +#ifndef SECUREC_MEM_MAX_LEN +#define SECUREC_MEM_MAX_LEN 0x7fffffffUL +#endif +#define SECUREC_WCHAR_MEM_MAX_LEN (SECUREC_MEM_MAX_LEN / sizeof(wchar_t)) + +#if SECUREC_STRING_MAX_LEN > 0x7fffffffUL +#error "max string is 2G" +#endif + +#if (defined(__GNUC__) && defined(__SIZEOF_POINTER__)) +#if (__SIZEOF_POINTER__ != 4) && (__SIZEOF_POINTER__ != 8) +#error "unsupported system" +#endif +#endif + +#if defined(_WIN64) || defined(WIN64) || defined(__LP64__) || defined(_LP64) +#define SECUREC_ON_64BITS +#endif + +#if (!defined(SECUREC_ON_64BITS) && defined(__GNUC__) && defined(__SIZEOF_POINTER__)) +#if __SIZEOF_POINTER__ == 8 +#define SECUREC_ON_64BITS +#endif +#endif + +#if defined(__SVR4) || defined(__svr4__) +#define SECUREC_ON_SOLARIS +#endif + +#if (defined(__hpux) || defined(_AIX) || defined(SECUREC_ON_SOLARIS)) +#define SECUREC_ON_UNIX +#endif + +/* + * Codes should run under the macro SECUREC_COMPATIBLE_LINUX_FORMAT in unknow system on default, + * and strtold. + * The function strtold is referenced first at ISO9899:1999(C99), and some old compilers can + * not support these functions. Here provides a macro to open these functions: + * SECUREC_SUPPORT_STRTOLD -- If defined, strtold will be used + */ +#ifndef SECUREC_SUPPORT_STRTOLD +#define SECUREC_SUPPORT_STRTOLD 0 +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT)) +#if defined(__USE_ISOC99) || \ + (defined(_AIX) && defined(_ISOC99_SOURCE)) || \ + (defined(__hpux) && defined(__ia64)) || \ + (defined(SECUREC_ON_SOLARIS) && (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ + defined(_STDC_C99) || defined(__EXTENSIONS__)) +#undef SECUREC_SUPPORT_STRTOLD +#define SECUREC_SUPPORT_STRTOLD 1 +#endif +#endif +#if ((defined(SECUREC_WRLINUX_BELOW4) || defined(_WRLINUX_BELOW4_))) +#undef SECUREC_SUPPORT_STRTOLD +#define SECUREC_SUPPORT_STRTOLD 0 +#endif +#endif + +#if SECUREC_WITH_PERFORMANCE_ADDONS + +#ifndef SECUREC_TWO_MIN +#define SECUREC_TWO_MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + +/* For strncpy_s performance optimization */ +#define SECUREC_STRNCPY_SM(dest, destMax, src, count) \ + (((void *)(dest) != NULL && (void *)(src) != NULL && (size_t)(destMax) > 0 && \ + (((unsigned long long)(destMax) & (unsigned long long)(-2)) < SECUREC_STRING_MAX_LEN) && \ + (SECUREC_TWO_MIN((size_t)(count), strlen(src)) + 1) <= (size_t)(destMax)) ? \ + (((size_t)(count) < strlen(src)) ? (memcpy((dest), (src), (count)), *((char *)(dest) + (count)) = '\0', EOK) : \ + (memcpy((dest), (src), strlen(src) + 1), EOK)) : (strncpy_error((dest), (destMax), (src), (count)))) + +#define SECUREC_STRCPY_SM(dest, destMax, src) \ + (((void *)(dest) != NULL && (void *)(src) != NULL && (size_t)(destMax) > 0 && \ + (((unsigned long long)(destMax) & (unsigned long long)(-2)) < SECUREC_STRING_MAX_LEN) && \ + (strlen(src) + 1) <= (size_t)(destMax)) ? (memcpy((dest), (src), strlen(src) + 1), EOK) : \ + (strcpy_error((dest), (destMax), (src)))) + +/* For strcat_s performance optimization */ +#if defined(__GNUC__) +#define SECUREC_STRCAT_SM(dest, destMax, src) ({ \ + int catRet_ = EOK; \ + if ((void *)(dest) != NULL && (void *)(src) != NULL && (size_t)(destMax) > 0 && \ + (((unsigned long long)(destMax) & (unsigned long long)(-2)) < SECUREC_STRING_MAX_LEN)) { \ + char *catTmpDst_ = (char *)(dest); \ + size_t catRestSize_ = (destMax); \ + while (catRestSize_ > 0 && *catTmpDst_ != '\0') { \ + ++catTmpDst_; \ + --catRestSize_; \ + } \ + if (catRestSize_ == 0) { \ + catRet_ = EINVAL; \ + } else if ((strlen(src) + 1) <= catRestSize_) { \ + memcpy(catTmpDst_, (src), strlen(src) + 1); \ + catRet_ = EOK; \ + } else { \ + catRet_ = ERANGE; \ + } \ + if (catRet_ != EOK) { \ + catRet_ = strcat_s((dest), (destMax), (src)); \ + } \ + } else { \ + catRet_ = strcat_s((dest), (destMax), (src)); \ + } \ + catRet_; \ +}) +#else +#define SECUREC_STRCAT_SM(dest, destMax, src) strcat_s((dest), (destMax), (src)) +#endif + +/* For strncat_s performance optimization */ +#if defined(__GNUC__) +#define SECUREC_STRNCAT_SM(dest, destMax, src, count) ({ \ + int ncatRet_ = EOK; \ + if ((void *)(dest) != NULL && (void *)(src) != NULL && (size_t)(destMax) > 0 && \ + (((unsigned long long)(destMax) & (unsigned long long)(-2)) < SECUREC_STRING_MAX_LEN) && \ + (((unsigned long long)(count) & (unsigned long long)(-2)) < SECUREC_STRING_MAX_LEN)) { \ + char *ncatTmpDest_ = (char *)(dest); \ + size_t ncatRestSize_ = (size_t)(destMax); \ + while (ncatRestSize_ > 0 && *ncatTmpDest_ != '\0') { \ + ++ncatTmpDest_; \ + --ncatRestSize_; \ + } \ + if (ncatRestSize_ == 0) { \ + ncatRet_ = EINVAL; \ + } else if ((SECUREC_TWO_MIN((count), strlen(src)) + 1) <= ncatRestSize_) { \ + if ((size_t)(count) < strlen(src)) { \ + memcpy(ncatTmpDest_, (src), (count)); \ + *(ncatTmpDest_ + (count)) = '\0'; \ + } else { \ + memcpy(ncatTmpDest_, (src), strlen(src) + 1); \ + } \ + } else { \ + ncatRet_ = ERANGE; \ + } \ + if (ncatRet_ != EOK) { \ + ncatRet_ = strncat_s((dest), (destMax), (src), (count)); \ + } \ + } else { \ + ncatRet_ = strncat_s((dest), (destMax), (src), (count)); \ + } \ + ncatRet_; \ +}) +#else +#define SECUREC_STRNCAT_SM(dest, destMax, src, count) strncat_s((dest), (destMax), (src), (count)) +#endif + +/* This macro do not check buffer overlap by default */ +#define SECUREC_MEMCPY_SM(dest, destMax, src, count) \ + (!(((size_t)(destMax) == 0) || \ + (((unsigned long long)(destMax) & (unsigned long long)(-2)) > SECUREC_MEM_MAX_LEN) || \ + ((size_t)(count) > (size_t)(destMax)) || ((void *)(dest)) == NULL || ((void *)(src) == NULL)) ? \ + (memcpy((dest), (src), (count)), EOK) : \ + (memcpy_s((dest), (destMax), (src), (count)))) + +#define SECUREC_MEMSET_SM(dest, destMax, c, count) \ + (!((((unsigned long long)(destMax) & (unsigned long long)(-2)) > SECUREC_MEM_MAX_LEN) || \ + ((void *)(dest) == NULL) || ((size_t)(count) > (size_t)(destMax))) ? \ + (memset((dest), (c), (count)), EOK) : \ + (memset_s((dest), (destMax), (c), (count)))) + +#endif +#endif + diff --git a/third_party/bounds_checking_function/libsec_src.gni b/third_party/bounds_checking_function/libsec_src.gni new file mode 100644 index 0000000..a6f5df3 --- /dev/null +++ b/third_party/bounds_checking_function/libsec_src.gni @@ -0,0 +1,58 @@ +# +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +libsec_include_dirs = [ "//third_party/bounds_checking_function/include" ] + +libsec_sources = [ + "//third_party/bounds_checking_function/src/fscanf_s.c", + "//third_party/bounds_checking_function/src/fwscanf_s.c", + "//third_party/bounds_checking_function/src/gets_s.c", + "//third_party/bounds_checking_function/src/memcpy_s.c", + "//third_party/bounds_checking_function/src/memmove_s.c", + "//third_party/bounds_checking_function/src/memset_s.c", + "//third_party/bounds_checking_function/src/scanf_s.c", + "//third_party/bounds_checking_function/src/securecutil.c", + "//third_party/bounds_checking_function/src/secureinput_a.c", + "//third_party/bounds_checking_function/src/secureinput_w.c", + "//third_party/bounds_checking_function/src/secureprintoutput_a.c", + "//third_party/bounds_checking_function/src/secureprintoutput_w.c", + "//third_party/bounds_checking_function/src/snprintf_s.c", + "//third_party/bounds_checking_function/src/sprintf_s.c", + "//third_party/bounds_checking_function/src/sscanf_s.c", + "//third_party/bounds_checking_function/src/strcat_s.c", + "//third_party/bounds_checking_function/src/strcpy_s.c", + "//third_party/bounds_checking_function/src/strncat_s.c", + "//third_party/bounds_checking_function/src/strncpy_s.c", + "//third_party/bounds_checking_function/src/strtok_s.c", + "//third_party/bounds_checking_function/src/swprintf_s.c", + "//third_party/bounds_checking_function/src/swscanf_s.c", + "//third_party/bounds_checking_function/src/vfscanf_s.c", + "//third_party/bounds_checking_function/src/vfwscanf_s.c", + "//third_party/bounds_checking_function/src/vscanf_s.c", + "//third_party/bounds_checking_function/src/vsnprintf_s.c", + "//third_party/bounds_checking_function/src/vsprintf_s.c", + "//third_party/bounds_checking_function/src/vsscanf_s.c", + "//third_party/bounds_checking_function/src/vswprintf_s.c", + "//third_party/bounds_checking_function/src/vswscanf_s.c", + "//third_party/bounds_checking_function/src/vwscanf_s.c", + "//third_party/bounds_checking_function/src/wcscat_s.c", + "//third_party/bounds_checking_function/src/wcscpy_s.c", + "//third_party/bounds_checking_function/src/wcsncat_s.c", + "//third_party/bounds_checking_function/src/wcsncpy_s.c", + "//third_party/bounds_checking_function/src/wcstok_s.c", + "//third_party/bounds_checking_function/src/wmemcpy_s.c", + "//third_party/bounds_checking_function/src/wmemmove_s.c", + "//third_party/bounds_checking_function/src/wscanf_s.c", +] diff --git a/third_party/bounds_checking_function/src/fscanf_s.c b/third_party/bounds_checking_function/src/fscanf_s.c new file mode 100644 index 0000000..2d1e735 --- /dev/null +++ b/third_party/bounds_checking_function/src/fscanf_s.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: fscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The fscanf_s function is equivalent to fscanf except that the c, s, + * and [ conversion specifiers apply to a pair of arguments (unless assignment suppression is indicated by a*) + * The fscanf function reads data from the current position of stream into + * the locations given by argument (if any). Each argument must be a pointer + * to a variable of a type that corresponds to a type specifier in format. + * format controls the interpretation of the input fields and has the same + * form and function as the format argument for scanf. + * + * + * stream Pointer to FILE structure. + * format Format control string, see Format Specifications. + * ... Optional arguments. + * + * + * ... The convered value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int fscanf_s(FILE *stream, const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vfscanf_s(stream, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + diff --git a/third_party/bounds_checking_function/src/fwscanf_s.c b/third_party/bounds_checking_function/src/fwscanf_s.c new file mode 100644 index 0000000..ed2438b --- /dev/null +++ b/third_party/bounds_checking_function/src/fwscanf_s.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: fwscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The fwscanf_s function is the wide-character equivalent of the fscanf_s function + * The fwscanf_s function reads data from the current position of stream into + * the locations given by argument (if any). Each argument must be a pointer + * to a variable of a type that corresponds to a type specifier in format. + * format controls the interpretation of the input fields and has the same + * form and function as the format argument for scanf. + * + * + * stream Pointer to FILE structure. + * format Format control string, see Format Specifications. + * ... Optional arguments. + * + * + * ... The converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int fwscanf_s(FILE *stream, const wchar_t *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vfwscanf_s(stream, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + diff --git a/third_party/bounds_checking_function/src/gets_s.c b/third_party/bounds_checking_function/src/gets_s.c new file mode 100644 index 0000000..18d7858 --- /dev/null +++ b/third_party/bounds_checking_function/src/gets_s.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: gets_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * The parameter size is buffer size in byte + */ +SECUREC_INLINE void SecTrimCRLF(char *buffer, size_t size) +{ + size_t len = strlen(buffer); + --len; /* Unsigned integer wrapping is accepted and is checked afterwards */ + while (len < size && (buffer[len] == '\r' || buffer[len] == '\n')) { + buffer[len] = '\0'; + --len; /* Unsigned integer wrapping is accepted and is checked next loop */ + } +} + +/* + * + * The gets_s function reads at most one less than the number of characters + * specified by destMax from the std input stream, into the array pointed to by buffer + * The line consists of all characters up to and including + * the first newline character ('\n'). gets_s then replaces the newline + * character with a null character ('\0') before returning the line. + * If the first character read is the end-of-file character, a null character + * is stored at the beginning of buffer and NULL is returned. + * + * + * buffer Storage location for input string. + * destMax The size of the buffer. + * + * + * buffer is updated + * + * + * buffer Successful operation + * NULL Improper parameter or read fail + */ +char *gets_s(char *buffer, size_t destMax) +{ +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT + size_t bufferSize = ((destMax == (size_t)(-1)) ? SECUREC_STRING_MAX_LEN : destMax); +#else + size_t bufferSize = destMax; +#endif + + if (buffer == NULL || bufferSize == 0 || bufferSize > SECUREC_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_PARAMTER("gets_s"); + return NULL; + } + + if (fgets(buffer, (int)bufferSize, SECUREC_STREAM_STDIN) != NULL) { + SecTrimCRLF(buffer, bufferSize); + return buffer; + } + + return NULL; +} + diff --git a/third_party/bounds_checking_function/src/input.inl b/third_party/bounds_checking_function/src/input.inl new file mode 100644 index 0000000..06fff41 --- /dev/null +++ b/third_party/bounds_checking_function/src/input.inl @@ -0,0 +1,2227 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Used by secureinput_a.c and secureinput_w.c to include. + * This file provides a template function for ANSI and UNICODE compiling by + * different type definition. The functions of SecInputS or + * SecInputSW provides internal implementation for scanf family API, such as sscanf_s, fscanf_s. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef INPUT_INL_5D13A042_DC3F_4ED9_A8D1_882811274C27 +#define INPUT_INL_5D13A042_DC3F_4ED9_A8D1_882811274C27 + +#if SECUREC_IN_KERNEL +#if !defined(SECUREC_CTYPE_MACRO_ADAPT) +#include +#endif +#else +#if !defined(SECUREC_SYSAPI4VXWORKS) && !defined(SECUREC_CTYPE_MACRO_ADAPT) +#include +#ifdef SECUREC_FOR_WCHAR +#include /* For iswspace */ +#endif +#endif +#endif + +#ifndef EOF +#define EOF (-1) +#endif + +#define SECUREC_NUM_WIDTH_SHORT 0 +#define SECUREC_NUM_WIDTH_INT 1 +#define SECUREC_NUM_WIDTH_LONG 2 +#define SECUREC_NUM_WIDTH_LONG_LONG 3 /* Also long double */ + +#define SECUREC_BUFFERED_BLOK_SIZE 1024U + +#if defined(SECUREC_VXWORKS_PLATFORM) && !defined(va_copy) && !defined(__va_copy) +/* The name is the same as system macro. */ +#define __va_copy(dest, src) do { \ + size_t destSize_ = (size_t)sizeof(dest); \ + size_t srcSize_ = (size_t)sizeof(src); \ + if (destSize_ != srcSize_) { \ + (void)memcpy((dest), (src), sizeof(va_list)); \ + } else { \ + (void)memcpy(&(dest), &(src), sizeof(va_list)); \ + } \ +} SECUREC_WHILE_ZERO +#endif + +#define SECUREC_MULTI_BYTE_MAX_LEN 6 + +/* Compatibility macro name cannot be modifie */ +#ifndef UNALIGNED +#if !(defined(_M_IA64)) && !(defined(_M_AMD64)) +#define UNALIGNED +#else +#define UNALIGNED __unaligned +#endif +#endif + +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) +/* Max 64bit value is 0xffffffffffffffff */ +#define SECUREC_MAX_64BITS_VALUE 18446744073709551615ULL +#define SECUREC_MAX_64BITS_VALUE_DIV_TEN 1844674407370955161ULL +#define SECUREC_MAX_64BITS_VALUE_CUT_LAST_DIGIT 18446744073709551610ULL +#define SECUREC_MIN_64BITS_NEG_VALUE 9223372036854775808ULL +#define SECUREC_MAX_64BITS_POS_VALUE 9223372036854775807ULL +#define SECUREC_MIN_32BITS_NEG_VALUE 2147483648UL +#define SECUREC_MAX_32BITS_POS_VALUE 2147483647UL +#define SECUREC_MAX_32BITS_VALUE 4294967295UL +#define SECUREC_MAX_32BITS_VALUE_INC 4294967296UL +#define SECUREC_MAX_32BITS_VALUE_DIV_TEN 429496729UL +#define SECUREC_LONG_BIT_NUM ((unsigned int)(sizeof(long) << 3U)) +/* Use ULL to clean up cl6x compilation alerts */ +#define SECUREC_MAX_LONG_POS_VALUE ((unsigned long)(1ULL << (SECUREC_LONG_BIT_NUM - 1)) - 1) +#define SECUREC_MIN_LONG_NEG_VALUE ((unsigned long)(1ULL << (SECUREC_LONG_BIT_NUM - 1))) + +/* Covert to long long to clean up cl6x compilation alerts */ +#define SECUREC_LONG_HEX_BEYOND_MAX(number) (((unsigned long long)(number) >> (SECUREC_LONG_BIT_NUM - 4U)) > 0) +#define SECUREC_LONG_OCTAL_BEYOND_MAX(number) (((unsigned long long)(number) >> (SECUREC_LONG_BIT_NUM - 3U)) > 0) + +#define SECUREC_QWORD_HEX_BEYOND_MAX(number) (((number) >> (64U - 4U)) > 0) +#define SECUREC_QWORD_OCTAL_BEYOND_MAX(number) (((number) >> (64U - 3U)) > 0) + +#define SECUREC_LP64_BIT_WIDTH 64 +#define SECUREC_LP32_BIT_WIDTH 32 + +#define SECUREC_CONVERT_IS_SIGNED(conv) ((conv) == 'd' || (conv) == 'i') +#endif + +#define SECUREC_BRACE '{' /* [ to { */ +#define SECUREC_FILED_WIDTH_ENOUGH(spec) ((spec)->widthSet == 0 || (spec)->width > 0) +#define SECUREC_FILED_WIDTH_DEC(spec) do { \ + if ((spec)->widthSet != 0) { \ + --(spec)->width; \ + } \ +} SECUREC_WHILE_ZERO + +#ifdef SECUREC_FOR_WCHAR +/* Bits for all wchar, size is 65536/8, only supports wide characters with a maximum length of two bytes */ +#define SECUREC_BRACKET_TABLE_SIZE 8192 +#define SECUREC_EOF WEOF +#define SECUREC_MB_LEN 16 /* Max. # bytes in multibyte char ,see MB_LEN_MAX */ +#else +/* Bits for all char, size is 256/8 */ +#define SECUREC_BRACKET_TABLE_SIZE 32 +#define SECUREC_EOF EOF +#endif + +#if SECUREC_HAVE_WCHART +#define SECUREC_ARRAY_WIDTH_IS_WRONG(spec) ((spec).arrayWidth == 0 || \ + ((spec).isWCharOrLong <= 0 && (spec).arrayWidth > SECUREC_STRING_MAX_LEN) || \ + ((spec).isWCharOrLong > 0 && (spec).arrayWidth > SECUREC_WCHAR_STRING_MAX_LEN)) +#else +#define SECUREC_ARRAY_WIDTH_IS_WRONG(spec) ((spec).arrayWidth == 0 || (spec).arrayWidth > SECUREC_STRING_MAX_LEN) +#endif + +typedef struct { +#ifdef SECUREC_FOR_WCHAR + unsigned char *table; /* Default NULL */ +#else + unsigned char table[SECUREC_BRACKET_TABLE_SIZE]; /* Array length is large enough in application scenarios */ +#endif + unsigned char mask; /* Default 0 */ +} SecBracketTable; + +#ifdef SECUREC_FOR_WCHAR +#define SECUREC_INIT_BRACKET_TABLE { NULL, 0 } +#else +#define SECUREC_INIT_BRACKET_TABLE { {0}, 0 } +#endif + +#if SECUREC_ENABLE_SCANF_FLOAT +typedef struct { + size_t floatStrTotalLen; /* Initialization must be length of buffer in charater */ + size_t floatStrUsedLen; /* Store float string len */ + SecChar *floatStr; /* Initialization must point to buffer */ + SecChar *allocatedFloatStr; /* Initialization must be NULL to store alloced point */ + SecChar buffer[SECUREC_FLOAT_BUFSIZE + 1]; +} SecFloatSpec; +#endif + +#define SECUREC_NUMBER_STATE_DEFAULT 0U +#define SECUREC_NUMBER_STATE_STARTED 1U + +typedef struct { + SecInt ch; /* Char read from input */ + int charCount; /* Number of characters processed */ + void *argPtr; /* Variable parameter pointer, point to the end of the string */ + size_t arrayWidth; /* Length of pointer Variable parameter, in charaters */ + SecUnsignedInt64 number64; /* Store input number64 value */ + unsigned long number; /* Store input number32 value */ + int numberWidth; /* 0 = SHORT, 1 = int, > 1 long or L_DOUBLE */ + int numberArgType; /* 1 for 64-bit integer, 0 otherwise. use it as decode function index */ + unsigned int negative; /* 0 is positive */ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + unsigned int beyondMax; /* Non-zero means beyond */ +#endif + unsigned int numberState; /* Identifies whether to start processing numbers, 1 is can input number*/ + int width; /* Width number in format */ + int widthSet; /* 0 is not set width in format */ + int convChr; /* Lowercase format conversion characters */ + int oriConvChr; /* Store original format conversion, convChr may change when parsing integers */ + signed char isWCharOrLong; /* -1/0 not wchar or long, 1 for wchar or long */ + unsigned char suppress; /* 0 is not have %* in format */ +} SecScanSpec; + +#ifdef SECUREC_FOR_WCHAR +#define SECUREC_GETC fgetwc +#define SECUREC_UN_GETC ungetwc +/* Only supports wide characters with a maximum length of two bytes in format string */ +#define SECUREC_BRACKET_CHAR_MASK 0xffffU +#else +#define SECUREC_GETC fgetc +#define SECUREC_UN_GETC ungetc +#define SECUREC_BRACKET_CHAR_MASK 0xffU +#endif + +#define SECUREC_CHAR_SIZE ((unsigned int)(sizeof(SecChar))) +/* To avoid 648, mask high bit: 0x00ffffff 0x0000ffff or 0x00000000 */ +#define SECUREC_CHAR_MASK_HIGH (((((((((unsigned int)(-1) >> SECUREC_CHAR_SIZE) >> SECUREC_CHAR_SIZE) >> \ + SECUREC_CHAR_SIZE) >> SECUREC_CHAR_SIZE) >> \ + SECUREC_CHAR_SIZE) >> SECUREC_CHAR_SIZE) >> \ + SECUREC_CHAR_SIZE) >> SECUREC_CHAR_SIZE) + +/* For char is 0xff, wcahr_t is 0xffff or 0xffffffff. */ +#define SECUREC_CHAR_MASK (~((((((((((unsigned int)(-1) & SECUREC_CHAR_MASK_HIGH) << \ + SECUREC_CHAR_SIZE) << SECUREC_CHAR_SIZE) << \ + SECUREC_CHAR_SIZE) << SECUREC_CHAR_SIZE) << \ + SECUREC_CHAR_SIZE) << SECUREC_CHAR_SIZE) << \ + SECUREC_CHAR_SIZE) << SECUREC_CHAR_SIZE)) + +/* According wchar_t has multiple bytes, so use sizeof */ +#define SECUREC_GET_CHAR(stream, outCh) do { \ + if ((stream)->count >= sizeof(SecChar)) { \ + *(outCh) = (SecInt)(SECUREC_CHAR_MASK & \ + (unsigned int)(int)(*((const SecChar *)(const void *)(stream)->cur))); \ + (stream)->cur += sizeof(SecChar); \ + (stream)->count -= sizeof(SecChar); \ + } else { \ + *(outCh) = SECUREC_EOF; \ + } \ +} SECUREC_WHILE_ZERO + +#define SECUREC_UN_GET_CHAR(stream) do { \ + if ((stream)->cur > (stream)->base) { \ + (stream)->cur -= sizeof(SecChar); \ + (stream)->count += sizeof(SecChar); \ + } \ +} SECUREC_WHILE_ZERO + +/* Convert wchar_t to int and then to unsigned int to keep data clearing warning */ +#define SECUREC_TO_LOWERCASE(chr) ((int)((unsigned int)(int)(chr) | (unsigned int)('a' - 'A'))) + +/* Record a flag for each bit */ +#define SECUREC_BRACKET_INDEX(x) ((unsigned int)(x) >> 3U) +#define SECUREC_BRACKET_VALUE(x) ((unsigned char)(1U << ((unsigned int)(x) & 7U))) +#if SECUREC_IN_KERNEL +#define SECUREC_CONVERT_IS_UNSIGNED(conv) ((conv) == 'x' || (conv) == 'o' || (conv) == 'u') +#endif + +/* + * Set char in %[xxx] into table, only supports wide characters with a maximum length of two bytes + */ +SECUREC_INLINE void SecBracketSetBit(unsigned char *table, SecUnsignedChar ch) +{ + unsigned int tableIndex = SECUREC_BRACKET_INDEX(((unsigned int)(int)ch & SECUREC_BRACKET_CHAR_MASK)); + unsigned int tableValue = SECUREC_BRACKET_VALUE(((unsigned int)(int)ch & SECUREC_BRACKET_CHAR_MASK)); + /* Do not use |= optimize this code, it will cause compiling warning */ + table[tableIndex] = (unsigned char)(table[tableIndex] | tableValue); +} + +SECUREC_INLINE void SecBracketSetBitRange(unsigned char *table, SecUnsignedChar startCh, SecUnsignedChar endCh) +{ + SecUnsignedChar expCh; + /* %[a-z] %[a-a] Format %[a-\xff] end is 0xFF, condition (expCh <= endChar) cause dead loop */ + for (expCh = startCh; expCh < endCh; ++expCh) { + SecBracketSetBit(table, expCh); + } + SecBracketSetBit(table, endCh); +} +/* + * Determine whether the expression can be satisfied + */ +SECUREC_INLINE int SecCanInputForBracket(int convChr, SecInt ch, const SecBracketTable *bracketTable) +{ + unsigned int tableIndex = SECUREC_BRACKET_INDEX(((unsigned int)(int)ch & SECUREC_BRACKET_CHAR_MASK)); + unsigned int tableValue = SECUREC_BRACKET_VALUE(((unsigned int)(int)ch & SECUREC_BRACKET_CHAR_MASK)); +#ifdef SECUREC_FOR_WCHAR + if (((unsigned int)(int)ch & (~(SECUREC_BRACKET_CHAR_MASK))) != 0) { + /* The value of the wide character exceeds the size of two bytes */ + return 0; + } + return (int)(convChr == SECUREC_BRACE && bracketTable->table != NULL && + ((bracketTable->table[tableIndex] ^ bracketTable->mask) & tableValue) != 0); +#else + return (int)(convChr == SECUREC_BRACE && + ((bracketTable->table[tableIndex] ^ bracketTable->mask) & tableValue) != 0); +#endif +} + +/* + * String input ends when blank character is encountered + */ +SECUREC_INLINE int SecCanInputString(int convChr, SecInt ch) +{ + return (int)(convChr == 's' && + (!(ch >= SECUREC_CHAR('\t') && ch <= SECUREC_CHAR('\r')) && ch != SECUREC_CHAR(' '))); +} + +/* + * Can input a character when format is %c + */ +SECUREC_INLINE int SecCanInputCharacter(int convChr) +{ + return (int)(convChr == 'c'); +} + +/* + * Determine if it is a 64-bit pointer function + * Return 0 is not ,1 is 64bit pointer + */ +SECUREC_INLINE int SecNumberArgType(size_t sizeOfVoidStar) +{ + /* Point size is 4 or 8 , Under the 64 bit system, the value not 0 */ + /* To clear e778 */ + if ((sizeOfVoidStar & sizeof(SecInt64)) != 0) { + return 1; + } + return 0; +} +SECUREC_INLINE int SecIsDigit(SecInt ch); +SECUREC_INLINE int SecIsXdigit(SecInt ch); +SECUREC_INLINE int SecIsSpace(SecInt ch); +SECUREC_INLINE SecInt SecSkipSpaceChar(SecFileStream *stream, int *counter); +SECUREC_INLINE SecInt SecGetChar(SecFileStream *stream, int *counter); +SECUREC_INLINE void SecUnGetChar(SecInt ch, SecFileStream *stream, int *counter); + +#if SECUREC_ENABLE_SCANF_FLOAT + +/* + * Convert a floating point string to a floating point number + */ +SECUREC_INLINE void SecAssignFloat(const char *floatStr, int numberWidth, void *argPtr) +{ + char *endPtr = NULL; + double d; +#if SECUREC_SUPPORT_STRTOLD + if (numberWidth == SECUREC_NUM_WIDTH_LONG_LONG) { + long double d2 = strtold(floatStr, &endPtr); + *(long double UNALIGNED *)(argPtr) = d2; + return; + } +#endif + d = strtod(floatStr, &endPtr); + if (numberWidth > SECUREC_NUM_WIDTH_INT) { + *(double UNALIGNED *)(argPtr) = (double)d; + } else { + *(float UNALIGNED *)(argPtr) = (float)d; + } +} + +#ifdef SECUREC_FOR_WCHAR +/* + * Convert a floating point wchar string to a floating point number + * Success ret 0 + */ +SECUREC_INLINE int SecAssignFloatW(const SecFloatSpec *floatSpec, const SecScanSpec *spec) +{ + /* Convert float string */ + size_t mbsLen; + size_t tempFloatStrLen = (size_t)(floatSpec->floatStrTotalLen + 1) * sizeof(wchar_t); + char *tempFloatStr = (char *)SECUREC_MALLOC(tempFloatStrLen); + + if (tempFloatStr == NULL) { + return -1; + } + tempFloatStr[0] = '\0'; + SECUREC_MASK_MSVC_CRT_WARNING + mbsLen = wcstombs(tempFloatStr, floatSpec->floatStr, tempFloatStrLen - 1); + SECUREC_END_MASK_MSVC_CRT_WARNING + /* This condition must satisfy mbsLen is not -1 */ + if (mbsLen >= tempFloatStrLen) { + SECUREC_FREE(tempFloatStr); + return -1; + } + tempFloatStr[mbsLen] = '\0'; + SecAssignFloat(tempFloatStr, spec->numberWidth, spec->argPtr); + SECUREC_FREE(tempFloatStr); + return 0; +} +#endif + +/* + * Init SecFloatSpec befor parse format + */ +SECUREC_INLINE void SecInitFloatSpec(SecFloatSpec *floatSpec) +{ + floatSpec->floatStr = floatSpec->buffer; + floatSpec->allocatedFloatStr = NULL; + floatSpec->floatStrTotalLen = sizeof(floatSpec->buffer) / sizeof(floatSpec->buffer[0]); + floatSpec->floatStrUsedLen = 0; +} + +SECUREC_INLINE void SecFreeFloatSpec(SecFloatSpec *floatSpec, int *doneCount) +{ + /* LSD 2014.3.6 add, clear the stack data */ + if (memset_s(floatSpec->buffer, sizeof(floatSpec->buffer), 0, sizeof(floatSpec->buffer)) != EOK) { + *doneCount = 0; /* This code just to meet the coding requirements */ + } + /* The pFloatStr can be alloced in SecExtendFloatLen function, clear and free it */ + if (floatSpec->allocatedFloatStr != NULL) { + size_t bufferSize = floatSpec->floatStrTotalLen * sizeof(SecChar); + if (memset_s(floatSpec->allocatedFloatStr, bufferSize, 0, bufferSize) != EOK) { + *doneCount = 0; /* This code just to meet the coding requirements */ + } + SECUREC_FREE(floatSpec->allocatedFloatStr); + floatSpec->allocatedFloatStr = NULL; + floatSpec->floatStr = NULL; + } +} + +/* + * Splice floating point string + * Return 0 OK + */ +SECUREC_INLINE int SecExtendFloatLen(SecFloatSpec *floatSpec) +{ + if (floatSpec->floatStrUsedLen >= floatSpec->floatStrTotalLen) { + /* Buffer size is len x sizeof(SecChar) */ + size_t oriSize = floatSpec->floatStrTotalLen * sizeof(SecChar); + /* Add one character to clear tool warning */ + size_t nextSize = (oriSize * 2) + sizeof(SecChar); /* Multiply 2 to extend buffer size */ + + /* Prevents integer overflow, the maximum length of SECUREC_MAX_WIDTH_LEN is enough */ + if (nextSize <= (size_t)SECUREC_MAX_WIDTH_LEN) { + void *nextBuffer = (void *)SECUREC_MALLOC(nextSize); + if (nextBuffer == NULL) { + return -1; + } + if (memcpy_s(nextBuffer, nextSize, floatSpec->floatStr, oriSize) != EOK) { + SECUREC_FREE(nextBuffer); /* This is a dead code, just to meet the coding requirements */ + return -1; + } + /* Clear old buffer memory */ + if (memset_s(floatSpec->floatStr, oriSize, 0, oriSize) != EOK) { + SECUREC_FREE(nextBuffer); /* This is a dead code, just to meet the coding requirements */ + return -1; + } + /* Free old allocated buffer */ + if (floatSpec->allocatedFloatStr != NULL) { + SECUREC_FREE(floatSpec->allocatedFloatStr); + } + floatSpec->allocatedFloatStr = (SecChar *)(nextBuffer); /* Use to clear free on stack warning */ + floatSpec->floatStr = (SecChar *)(nextBuffer); + floatSpec->floatStrTotalLen = nextSize / sizeof(SecChar); /* Get buffer total len in character */ + return 0; + } + return -1; /* Next size is beyond max */ + } + return 0; +} + +/* Do not use localeconv()->decimal_pointif onlay support '.' */ +SECUREC_INLINE int SecIsFloatDecimal(SecChar ch) +{ + return (int)(ch == SECUREC_CHAR('.')); +} + +SECUREC_INLINE int SecInputFloatSign(SecFileStream *stream, SecScanSpec *spec, SecFloatSpec *floatSpec) +{ + if (!SECUREC_FILED_WIDTH_ENOUGH(spec)) { + return 0; + } + spec->ch = SecGetChar(stream, &(spec->charCount)); + if (spec->ch == SECUREC_CHAR('+') || spec->ch == SECUREC_CHAR('-')) { + SECUREC_FILED_WIDTH_DEC(spec); /* Make sure the count after un get char is correct */ + if (spec->ch == SECUREC_CHAR('-')) { + floatSpec->floatStr[floatSpec->floatStrUsedLen] = SECUREC_CHAR('-'); + ++floatSpec->floatStrUsedLen; + if (SecExtendFloatLen(floatSpec) != 0) { + return -1; + } + } + } else { + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + } + return 0; +} + +SECUREC_INLINE int SecInputFloatDigit(SecFileStream *stream, SecScanSpec *spec, SecFloatSpec *floatSpec) +{ + /* Now get integral part */ + while (SECUREC_FILED_WIDTH_ENOUGH(spec)) { + spec->ch = SecGetChar(stream, &(spec->charCount)); + if (SecIsDigit(spec->ch) == 0) { + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + return 0; + } + SECUREC_FILED_WIDTH_DEC(spec); /* Must be behind un get char, otherwise the logic is incorrect */ + spec->numberState = SECUREC_NUMBER_STATE_STARTED; + floatSpec->floatStr[floatSpec->floatStrUsedLen] = (SecChar)spec->ch; + ++floatSpec->floatStrUsedLen; + if (SecExtendFloatLen(floatSpec) != 0) { + return -1; + } + } + return 0; +} + +/* +* Scan value of exponent. +* Return 0 OK +*/ +SECUREC_INLINE int SecInputFloatE(SecFileStream *stream, SecScanSpec *spec, SecFloatSpec *floatSpec) +{ + if (SecInputFloatSign(stream, spec, floatSpec) == -1) { + return -1; + } + if (SecInputFloatDigit(stream, spec, floatSpec) != 0) { + return -1; + } + return 0; +} + +SECUREC_INLINE int SecInputFloatFractional(SecFileStream *stream, SecScanSpec *spec, SecFloatSpec *floatSpec) +{ + if (SECUREC_FILED_WIDTH_ENOUGH(spec)) { + spec->ch = SecGetChar(stream, &(spec->charCount)); + if (SecIsFloatDecimal((SecChar)spec->ch) == 0) { + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + return 0; + } + SECUREC_FILED_WIDTH_DEC(spec); /* Must be behind un get char, otherwise the logic is incorrect */ + /* Now check for decimal */ + floatSpec->floatStr[floatSpec->floatStrUsedLen] = (SecChar)spec->ch; + ++floatSpec->floatStrUsedLen; + if (SecExtendFloatLen(floatSpec) != 0) { + return -1; + } + if (SecInputFloatDigit(stream, spec, floatSpec) != 0) { + return -1; + } + } + return 0; +} + +SECUREC_INLINE int SecInputFloatExponent(SecFileStream *stream, SecScanSpec *spec, SecFloatSpec *floatSpec) +{ + /* Now get exponent part */ + if (spec->numberState == SECUREC_NUMBER_STATE_STARTED && SECUREC_FILED_WIDTH_ENOUGH(spec)) { + spec->ch = SecGetChar(stream, &(spec->charCount)); + if (spec->ch != SECUREC_CHAR('e') && spec->ch != SECUREC_CHAR('E')) { + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + return 0; + } + SECUREC_FILED_WIDTH_DEC(spec); /* Must be behind un get char, otherwise the logic is incorrect */ + floatSpec->floatStr[floatSpec->floatStrUsedLen] = SECUREC_CHAR('e'); + ++floatSpec->floatStrUsedLen; + if (SecExtendFloatLen(floatSpec) != 0) { + return -1; + } + if (SecInputFloatE(stream, spec, floatSpec) != 0) { + return -1; + } + } + return 0; +} + +/* +* Scan %f. +* Return 0 OK +*/ +SECUREC_INLINE int SecInputFloat(SecFileStream *stream, SecScanSpec *spec, SecFloatSpec *floatSpec) +{ + floatSpec->floatStrUsedLen = 0; + + /* The following code sequence is strict */ + if (SecInputFloatSign(stream, spec, floatSpec) != 0) { + return -1; + } + if (SecInputFloatDigit(stream, spec, floatSpec) != 0) { + return -1; + } + if (SecInputFloatFractional(stream, spec, floatSpec) != 0) { + return -1; + } + if (SecInputFloatExponent(stream, spec, floatSpec) != 0) { + return -1; + } + + /* Make sure have a string terminator, buffer is large enough */ + floatSpec->floatStr[floatSpec->floatStrUsedLen] = SECUREC_CHAR('\0'); + if (spec->numberState == SECUREC_NUMBER_STATE_STARTED) { + return 0; + } + return -1; +} +#endif + +#if (!defined(SECUREC_FOR_WCHAR) && SECUREC_HAVE_WCHART && SECUREC_HAVE_MBTOWC) || \ + (!defined(SECUREC_FOR_WCHAR) && defined(SECUREC_COMPATIBLE_VERSION)) +/* LSD only multi-bytes string need isleadbyte() function */ +SECUREC_INLINE int SecIsLeadByte(SecInt ch) +{ + unsigned int c = (unsigned int)ch; +#if !(defined(_MSC_VER) || defined(_INC_WCTYPE)) + return (int)(c & 0x80U); /* Use bitwise operation to check if the most significant bit is 1 */ +#else + return (int)isleadbyte((int)(c & 0xffU)); /* Use bitwise operations to limit character values to valid ranges */ +#endif +} +#endif + +/* + * Parsing whether it is a wide character + */ +SECUREC_INLINE void SecUpdateWcharFlagByType(SecUnsignedChar ch, SecScanSpec *spec) +{ + if (spec->isWCharOrLong != 0) { + /* Wide character identifiers have been explicitly set by l or h flag */ + return; + } + + /* Set default flag */ +#if defined(SECUREC_FOR_WCHAR) && defined(SECUREC_COMPATIBLE_WIN_FORMAT) + spec->isWCharOrLong = 1; /* On windows wide char version %c %s %[ is wide char */ +#else + spec->isWCharOrLong = -1; /* On linux all version %c %s %[ is multi char */ +#endif + + if (ch == SECUREC_CHAR('C') || ch == SECUREC_CHAR('S')) { +#if defined(SECUREC_FOR_WCHAR) && defined(SECUREC_COMPATIBLE_WIN_FORMAT) + spec->isWCharOrLong = -1; /* On windows wide char version %C %S is multi char */ +#else + spec->isWCharOrLong = 1; /* On linux all version %C %S is wide char */ +#endif + } + + return; +} +/* + * Decode %l %ll + */ +SECUREC_INLINE void SecDecodeScanQualifierL(const SecUnsignedChar **format, SecScanSpec *spec) +{ + const SecUnsignedChar *fmt = *format; + if (*(fmt + 1) == SECUREC_CHAR('l')) { + spec->numberArgType = 1; + spec->numberWidth = SECUREC_NUM_WIDTH_LONG_LONG; + ++fmt; + } else { + spec->numberWidth = SECUREC_NUM_WIDTH_LONG; +#if defined(SECUREC_ON_64BITS) && !(defined(SECUREC_COMPATIBLE_WIN_FORMAT)) + /* On window 64 system sizeof long is 32bit */ + spec->numberArgType = 1; +#endif + spec->isWCharOrLong = 1; + } + *format = fmt; +} + +/* + * Decode %I %I43 %I64 %Id %Ii %Io ... + * Set finishFlag to 1 finish Flag + */ +SECUREC_INLINE void SecDecodeScanQualifierI(const SecUnsignedChar **format, SecScanSpec *spec, int *finishFlag) +{ + const SecUnsignedChar *fmt = *format; + if ((*(fmt + 1) == SECUREC_CHAR('6')) && + (*(fmt + 2) == SECUREC_CHAR('4'))) { /* Offset 2 for I64 */ + spec->numberArgType = 1; + *format = *format + 2; /* Add 2 to skip I64 point to '4' next loop will inc */ + } else if ((*(fmt + 1) == SECUREC_CHAR('3')) && + (*(fmt + 2) == SECUREC_CHAR('2'))) { /* Offset 2 for I32 */ + *format = *format + 2; /* Add 2 to skip I32 point to '2' next loop will inc */ + } else if ((*(fmt + 1) == SECUREC_CHAR('d')) || + (*(fmt + 1) == SECUREC_CHAR('i')) || + (*(fmt + 1) == SECUREC_CHAR('o')) || + (*(fmt + 1) == SECUREC_CHAR('x')) || + (*(fmt + 1) == SECUREC_CHAR('X'))) { + spec->numberArgType = SecNumberArgType(sizeof(void *)); + } else { + /* For %I */ + spec->numberArgType = SecNumberArgType(sizeof(void *)); + *finishFlag = 1; + } +} + +SECUREC_INLINE int SecDecodeScanWidth(const SecUnsignedChar **format, SecScanSpec *spec) +{ + const SecUnsignedChar *fmt = *format; + while (SecIsDigit((SecInt)(int)(*fmt)) != 0) { + spec->widthSet = 1; + if (SECUREC_MUL_TEN_ADD_BEYOND_MAX(spec->width)) { + return -1; + } + spec->width = (int)SECUREC_MUL_TEN((unsigned int)spec->width) + (unsigned char)(*fmt - SECUREC_CHAR('0')); + ++fmt; + } + *format = fmt; + return 0; +} + +/* + * Init default flags for each format. do not init ch this variable is context-dependent + */ +SECUREC_INLINE void SecSetDefaultScanSpec(SecScanSpec *spec) +{ + /* The ch and charCount member variables cannot be initialized here */ + spec->argPtr = NULL; + spec->arrayWidth = 0; + spec->number64 = 0; + spec->number = 0; + spec->numberWidth = SECUREC_NUM_WIDTH_INT; /* 0 = SHORT, 1 = int, > 1 long or L_DOUBLE */ + spec->numberArgType = 0; /* 1 for 64-bit integer, 0 otherwise */ + spec->width = 0; + spec->widthSet = 0; + spec->convChr = 0; + spec->oriConvChr = 0; + spec->isWCharOrLong = 0; + spec->suppress = 0; +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + spec->beyondMax = 0; +#endif + spec->negative = 0; + spec->numberState = SECUREC_NUMBER_STATE_DEFAULT; +} + +/* + * Decode qualifier %I %L %h ... + * Set finishFlag to 1 finish Flag + */ +SECUREC_INLINE void SecDecodeScanQualifier(const SecUnsignedChar **format, SecScanSpec *spec, int *finishFlag) +{ + switch (**format) { + case SECUREC_CHAR('F'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('N'): + break; + case SECUREC_CHAR('h'): + --spec->numberWidth; /* The h for SHORT , hh for CHAR */ + spec->isWCharOrLong = -1; + break; +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT + case SECUREC_CHAR('j'): + spec->numberWidth = SECUREC_NUM_WIDTH_LONG_LONG; /* For intmax_t or uintmax_t */ + spec->numberArgType = 1; + break; + case SECUREC_CHAR('t'): /* fall-through */ /* FALLTHRU */ +#endif +#if SECUREC_IN_KERNEL + case SECUREC_CHAR('Z'): /* fall-through */ /* FALLTHRU */ +#endif + case SECUREC_CHAR('z'): +#ifdef SECUREC_ON_64BITS + spec->numberWidth = SECUREC_NUM_WIDTH_LONG_LONG; + spec->numberArgType = 1; +#else + spec->numberWidth = SECUREC_NUM_WIDTH_LONG; +#endif + break; + case SECUREC_CHAR('L'): /* For long double */ /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('q'): + spec->numberWidth = SECUREC_NUM_WIDTH_LONG_LONG; + spec->numberArgType = 1; + break; + case SECUREC_CHAR('l'): + SecDecodeScanQualifierL(format, spec); + break; + case SECUREC_CHAR('w'): + spec->isWCharOrLong = 1; + break; + case SECUREC_CHAR('*'): + spec->suppress = 1; + break; + case SECUREC_CHAR('I'): + SecDecodeScanQualifierI(format, spec, finishFlag); + break; + default: + *finishFlag = 1; + break; + } +} +/* + * Decode width and qualifier in format + */ +SECUREC_INLINE int SecDecodeScanFlag(const SecUnsignedChar **format, SecScanSpec *spec) +{ + const SecUnsignedChar *fmt = *format; + int finishFlag = 0; + + do { + ++fmt; /* First skip % , next seek fmt */ + /* May %*6d , so put it inside the loop */ + if (SecDecodeScanWidth(&fmt, spec) != 0) { + return -1; + } + SecDecodeScanQualifier(&fmt, spec, &finishFlag); + } while (finishFlag == 0); + *format = fmt; + return 0; +} + +/* + * Judging whether a zeroing buffer is needed according to different formats + */ +SECUREC_INLINE int SecDecodeClearFormat(const SecUnsignedChar *format, int *convChr) +{ + const SecUnsignedChar *fmt = format; + /* To lowercase */ + int ch = SECUREC_TO_LOWERCASE(*fmt); + if (!(ch == 'c' || ch == 's' || ch == SECUREC_BRACE)) { + return -1; /* First argument is not a string type */ + } + if (ch == SECUREC_BRACE) { +#if !(defined(SECUREC_COMPATIBLE_WIN_FORMAT)) + if (*fmt == SECUREC_CHAR('{')) { + return -1; + } +#endif + ++fmt; + if (*fmt == SECUREC_CHAR('^')) { + ++fmt; + } + if (*fmt == SECUREC_CHAR(']')) { + ++fmt; + } + while (*fmt != SECUREC_CHAR('\0') && *fmt != SECUREC_CHAR(']')) { + ++fmt; + } + if (*fmt == SECUREC_CHAR('\0')) { + return -1; /* Trunc'd format string */ + } + } + *convChr = ch; + return 0; +} + +/* + * Add L'\0' for wchar string , add '\0' for char string + */ +SECUREC_INLINE void SecAddEndingZero(void *ptr, const SecScanSpec *spec) +{ + if (spec->suppress == 0) { + *(char *)ptr = '\0'; +#if SECUREC_HAVE_WCHART + if (spec->isWCharOrLong > 0) { + *(wchar_t UNALIGNED *)ptr = L'\0'; + } +#endif + } +} + +SECUREC_INLINE void SecDecodeClearArg(SecScanSpec *spec, va_list argList) +{ + va_list argListSave; /* Backup for argList value, this variable don't need initialized */ + (void)memset(&argListSave, 0, sizeof(va_list)); /* To clear e530 argListSave not initialized */ +#if defined(va_copy) + va_copy(argListSave, argList); +#elif defined(__va_copy) /* For vxworks */ + __va_copy(argListSave, argList); +#else + argListSave = argList; +#endif + spec->argPtr = (void *)va_arg(argListSave, void *); + /* Get the next argument, size of the array in characters */ + /* Use 0xffffffffUL mask to Support pass integer as array length */ + spec->arrayWidth = ((size_t)(va_arg(argListSave, size_t))) & 0xffffffffUL; + va_end(argListSave); + /* To clear e438 last value assigned not used , the compiler will optimize this code */ + (void)argListSave; +} + +#ifdef SECUREC_FOR_WCHAR +/* + * Clean up the first %s %c buffer to zero for wchar version + */ +void SecClearDestBufW(const wchar_t *buffer, const wchar_t *format, va_list argList) +#else +/* + * Clean up the first %s %c buffer to zero for char version + */ +void SecClearDestBuf(const char *buffer, const char *format, va_list argList) +#endif +{ + SecScanSpec spec; + int convChr = 0; + const SecUnsignedChar *fmt = (const SecUnsignedChar *)format; + if (fmt == NULL) { + return; + } + + /* Find first % */ + while (*fmt != SECUREC_CHAR('\0') && *fmt != SECUREC_CHAR('%')) { + ++fmt; + } + if (*fmt == SECUREC_CHAR('\0')) { + return; + } + + SecSetDefaultScanSpec(&spec); + if (SecDecodeScanFlag(&fmt, &spec) != 0) { + return; + } + + /* Update wchar flag for %S %C */ + SecUpdateWcharFlagByType(*fmt, &spec); + if (spec.suppress != 0) { + return; + } + + if (SecDecodeClearFormat(fmt, &convChr) != 0) { + return; + } + + if (buffer != NULL && *buffer != SECUREC_CHAR('\0') && convChr != 's') { + /* + * When buffer not empty just clear %s. + * Example call sscanf by argment of (" \n", "%s", s, sizeof(s)) + */ + return; + } + + SecDecodeClearArg(&spec, argList); + /* There is no need to judge the upper limit */ + if (spec.arrayWidth == 0 || spec.argPtr == NULL) { + return; + } + /* Clear one char */ + SecAddEndingZero(spec.argPtr, &spec); + return; +} + +/* + * Assign number to output buffer + */ +SECUREC_INLINE void SecAssignNumber(const SecScanSpec *spec) +{ + void *argPtr = spec->argPtr; + if (spec->numberArgType != 0) { +#if defined(SECUREC_VXWORKS_PLATFORM) +#if defined(SECUREC_VXWORKS_PLATFORM_COMP) + *(SecInt64 UNALIGNED *)argPtr = (SecInt64)(spec->number64); +#else + /* Take number64 as unsigned number unsigned to int clear Compile warning */ + *(SecInt64 UNALIGNED *)argPtr = *(SecUnsignedInt64 *)(&(spec->number64)); +#endif +#else + /* Take number64 as unsigned number */ + *(SecInt64 UNALIGNED *)argPtr = (SecInt64)(spec->number64); +#endif + return; + } + if (spec->numberWidth > SECUREC_NUM_WIDTH_INT) { + /* Take number as unsigned number */ + *(long UNALIGNED *)argPtr = (long)(spec->number); + } else if (spec->numberWidth == SECUREC_NUM_WIDTH_INT) { + *(int UNALIGNED *)argPtr = (int)(spec->number); + } else if (spec->numberWidth == SECUREC_NUM_WIDTH_SHORT) { + /* Take number as unsigned number */ + *(short UNALIGNED *)argPtr = (short)(spec->number); + } else { /* < 0 for hh format modifier */ + /* Take number as unsigned number */ + *(char UNALIGNED *)argPtr = (char)(spec->number); + } +} + +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) +/* + * Judge the long bit width + */ +SECUREC_INLINE int SecIsLongBitEqual(int bitNum) +{ + return (int)((unsigned int)bitNum == SECUREC_LONG_BIT_NUM); +} +#endif + +/* + * Convert hexadecimal characters to decimal value + */ +SECUREC_INLINE int SecHexValueOfChar(SecInt ch) +{ + /* Use isdigt Causing tool false alarms */ + return (int)((ch >= '0' && ch <= '9') ? ((unsigned char)ch - '0') : + ((((unsigned char)ch | (unsigned char)('a' - 'A')) - ('a')) + 10)); /* Adding 10 is to hex value */ +} + +/* + * Parse decimal character to integer for 32bit . + */ +static void SecDecodeNumberDecimal(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + unsigned long decimalEdge = SECUREC_MAX_32BITS_VALUE_DIV_TEN; +#ifdef SECUREC_ON_64BITS + if (SecIsLongBitEqual(SECUREC_LP64_BIT_WIDTH) != 0) { + decimalEdge = (unsigned long)SECUREC_MAX_64BITS_VALUE_DIV_TEN; + } +#endif + if (spec->number > decimalEdge) { + spec->beyondMax = 1; + } +#endif + spec->number = SECUREC_MUL_TEN(spec->number); +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (spec->number == SECUREC_MUL_TEN(decimalEdge)) { + /* This code is specially converted to unsigned long type for compatibility */ + SecUnsignedInt64 number64As = (unsigned long)SECUREC_MAX_64BITS_VALUE - spec->number; + if (number64As < (SecUnsignedInt64)((SecUnsignedInt)spec->ch - SECUREC_CHAR('0'))) { + spec->beyondMax = 1; + } + } +#endif + spec->number += (unsigned long)((SecUnsignedInt)spec->ch - SECUREC_CHAR('0')); +} + +/* + * Parse Hex character to integer for 32bit . + */ +static void SecDecodeNumberHex(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (SECUREC_LONG_HEX_BEYOND_MAX(spec->number)) { + spec->beyondMax = 1; + } +#endif + spec->number = SECUREC_MUL_SIXTEEN(spec->number); + spec->number += (unsigned long)(unsigned int)SecHexValueOfChar(spec->ch); +} + +/* + * Parse Octal character to integer for 32bit . + */ +static void SecDecodeNumberOctal(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (SECUREC_LONG_OCTAL_BEYOND_MAX(spec->number)) { + spec->beyondMax = 1; + } +#endif + spec->number = SECUREC_MUL_EIGHT(spec->number); + spec->number += (unsigned long)((SecUnsignedInt)spec->ch - SECUREC_CHAR('0')); +} + +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) +/* Compatible with integer negative values other than int */ +SECUREC_INLINE void SecFinishNumberNegativeOther(SecScanSpec *spec) +{ + if (SECUREC_CONVERT_IS_SIGNED(spec->oriConvChr)) { + if (spec->number > SECUREC_MIN_LONG_NEG_VALUE) { + spec->number = SECUREC_MIN_LONG_NEG_VALUE; + } else { + spec->number = (unsigned long)(0U - spec->number); /* Wrap with unsigned long numbers */ + } + if (spec->beyondMax != 0) { + if (spec->numberWidth < SECUREC_NUM_WIDTH_INT) { + spec->number = 0; + } + if (spec->numberWidth == SECUREC_NUM_WIDTH_LONG) { + spec->number = SECUREC_MIN_LONG_NEG_VALUE; + } + } + } else { /* For o, u, x, X, p */ + spec->number = (unsigned long)(0U - spec->number); /* Wrap with unsigned long numbers */ + if (spec->beyondMax != 0) { + spec->number = (unsigned long)SECUREC_MAX_64BITS_VALUE; + } + } +} +/* Compatible processing of integer negative numbers */ +SECUREC_INLINE void SecFinishNumberNegativeInt(SecScanSpec *spec) +{ + if (SECUREC_CONVERT_IS_SIGNED(spec->oriConvChr)) { +#ifdef SECUREC_ON_64BITS + if (SecIsLongBitEqual(SECUREC_LP64_BIT_WIDTH) != 0) { + if ((spec->number > SECUREC_MIN_64BITS_NEG_VALUE)) { + spec->number = 0; + } else { + spec->number = (unsigned int)(0U - (unsigned int)spec->number); /* Wrap with unsigned int numbers */ + } + } +#else + if (SecIsLongBitEqual(SECUREC_LP32_BIT_WIDTH) != 0) { + if ((spec->number > SECUREC_MIN_32BITS_NEG_VALUE)) { + spec->number = SECUREC_MIN_32BITS_NEG_VALUE; + } else { + spec->number = (unsigned int)(0U - (unsigned int)spec->number); /* Wrap with unsigned int numbers */ + } + } +#endif + if (spec->beyondMax != 0) { +#ifdef SECUREC_ON_64BITS + if (SecIsLongBitEqual(SECUREC_LP64_BIT_WIDTH) != 0) { + spec->number = 0; + } +#else + if (SecIsLongBitEqual(SECUREC_LP32_BIT_WIDTH) != 0) { + spec->number = SECUREC_MIN_32BITS_NEG_VALUE; + } +#endif + } + } else { /* For o, u, x, X ,p */ +#ifdef SECUREC_ON_64BITS + if (spec->number > SECUREC_MAX_32BITS_VALUE_INC) { + spec->number = SECUREC_MAX_32BITS_VALUE; + } else { + spec->number = (unsigned int)(0U - (unsigned int)spec->number); /* Wrap with unsigned int numbers */ + } +#else + spec->number = (unsigned int)(0U - (unsigned int)spec->number); /* Wrap with unsigned int numbers */ +#endif + if (spec->beyondMax != 0) { + spec->number = (unsigned long)SECUREC_MAX_64BITS_VALUE; + } + } +} + +/* Compatible with integer positive values other than int */ +SECUREC_INLINE void SecFinishNumberPositiveOther(SecScanSpec *spec) +{ + if (SECUREC_CONVERT_IS_SIGNED(spec->oriConvChr)) { + if (spec->number > SECUREC_MAX_LONG_POS_VALUE) { + spec->number = SECUREC_MAX_LONG_POS_VALUE; + } + if ((spec->beyondMax != 0 && spec->numberWidth < SECUREC_NUM_WIDTH_INT)) { + spec->number = (unsigned long)SECUREC_MAX_64BITS_VALUE; + } + if (spec->beyondMax != 0 && spec->numberWidth == SECUREC_NUM_WIDTH_LONG) { + spec->number = SECUREC_MAX_LONG_POS_VALUE; + } + } else { + if (spec->beyondMax != 0) { + spec->number = (unsigned long)SECUREC_MAX_64BITS_VALUE; + } + } +} + +/* Compatible processing of integer positive numbers */ +SECUREC_INLINE void SecFinishNumberPositiveInt(SecScanSpec *spec) +{ + if (SECUREC_CONVERT_IS_SIGNED(spec->oriConvChr)) { +#ifdef SECUREC_ON_64BITS + if (SecIsLongBitEqual(SECUREC_LP64_BIT_WIDTH) != 0) { + if (spec->number > SECUREC_MAX_64BITS_POS_VALUE) { + spec->number = (unsigned long)SECUREC_MAX_64BITS_VALUE; + } + } + if (spec->beyondMax != 0 && SecIsLongBitEqual(SECUREC_LP64_BIT_WIDTH) != 0) { + spec->number = (unsigned long)SECUREC_MAX_64BITS_VALUE; + } +#else + if (SecIsLongBitEqual(SECUREC_LP32_BIT_WIDTH) != 0) { + if (spec->number > SECUREC_MAX_32BITS_POS_VALUE) { + spec->number = SECUREC_MAX_32BITS_POS_VALUE; + } + } + if (spec->beyondMax != 0 && SecIsLongBitEqual(SECUREC_LP32_BIT_WIDTH) != 0) { + spec->number = SECUREC_MAX_32BITS_POS_VALUE; + } +#endif + } else { /* For o,u,x,X,p */ + if (spec->beyondMax != 0) { + spec->number = SECUREC_MAX_32BITS_VALUE; + } + } +} + +#endif + +/* + * Parse decimal character to integer for 64bit . + */ +static void SecDecodeNumber64Decimal(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (spec->number64 > SECUREC_MAX_64BITS_VALUE_DIV_TEN) { + spec->beyondMax = 1; + } +#endif + spec->number64 = SECUREC_MUL_TEN(spec->number64); +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (spec->number64 == SECUREC_MAX_64BITS_VALUE_CUT_LAST_DIGIT) { + SecUnsignedInt64 number64As = (SecUnsignedInt64)SECUREC_MAX_64BITS_VALUE - spec->number64; + if (number64As < (SecUnsignedInt64)((SecUnsignedInt)spec->ch - SECUREC_CHAR('0'))) { + spec->beyondMax = 1; + } + } +#endif + spec->number64 += (SecUnsignedInt64)((SecUnsignedInt)spec->ch - SECUREC_CHAR('0')); +} + +/* + * Parse Hex character to integer for 64bit . + */ +static void SecDecodeNumber64Hex(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (SECUREC_QWORD_HEX_BEYOND_MAX(spec->number64)) { + spec->beyondMax = 1; + } +#endif + spec->number64 = SECUREC_MUL_SIXTEEN(spec->number64); + spec->number64 += (SecUnsignedInt64)(unsigned int)SecHexValueOfChar(spec->ch); +} + +/* + * Parse Octal character to integer for 64bit . + */ +static void SecDecodeNumber64Octal(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (SECUREC_QWORD_OCTAL_BEYOND_MAX(spec->number64)) { + spec->beyondMax = 1; + } +#endif + spec->number64 = SECUREC_MUL_EIGHT(spec->number64); + spec->number64 += (SecUnsignedInt64)((SecUnsignedInt)spec->ch - SECUREC_CHAR('0')); +} + +#define SECUREC_DECODE_NUMBER_FUNC_NUM 2 + +/* + * Parse 64-bit integer formatted input, return 0 when ch is a number. + */ +SECUREC_INLINE int SecDecodeNumber(SecScanSpec *spec) +{ + /* Function name cannot add address symbol, causing 546 alarm */ + static void (*secDecodeNumberHex[SECUREC_DECODE_NUMBER_FUNC_NUM])(SecScanSpec *spec) = { + SecDecodeNumberHex, SecDecodeNumber64Hex + }; + static void (*secDecodeNumberOctal[SECUREC_DECODE_NUMBER_FUNC_NUM])(SecScanSpec *spec) = { + SecDecodeNumberOctal, SecDecodeNumber64Octal + }; + static void (*secDecodeNumberDecimal[SECUREC_DECODE_NUMBER_FUNC_NUM])(SecScanSpec *spec) = { + SecDecodeNumberDecimal, SecDecodeNumber64Decimal + }; + if (spec->convChr == 'x' || spec->convChr == 'p') { + if (SecIsXdigit(spec->ch) != 0) { + (*secDecodeNumberHex[spec->numberArgType])(spec); + } else { + return -1; + } + return 0; + } + if (SecIsDigit(spec->ch) == 0) { + return -1; + } + if (spec->convChr == 'o') { + if (spec->ch < SECUREC_CHAR('8')) { /* Octal maximum limit '8' */ + (*secDecodeNumberOctal[spec->numberArgType])(spec); + } else { + return -1; + } + } else { /* The convChr is 'd' */ + (*secDecodeNumberDecimal[spec->numberArgType])(spec); + } + return 0; +} + +/* + * Complete the final 32-bit integer formatted input + */ +static void SecFinishNumber(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (spec->negative != 0) { + if (spec->numberWidth == SECUREC_NUM_WIDTH_INT) { + SecFinishNumberNegativeInt(spec); + } else { + SecFinishNumberNegativeOther(spec); + } + } else { + if (spec->numberWidth == SECUREC_NUM_WIDTH_INT) { + SecFinishNumberPositiveInt(spec); + } else { + SecFinishNumberPositiveOther(spec); + } + } +#else + if (spec->negative != 0) { +#if defined(__hpux) + if (spec->oriConvChr != 'p') { + spec->number = (unsigned long)(0U - spec->number); /* Wrap with unsigned long numbers */ + } +#else + spec->number = (unsigned long)(0U - spec->number); /* Wrap with unsigned long numbers */ +#endif + } +#endif + return; +} + +/* + * Complete the final 64-bit integer formatted input + */ +static void SecFinishNumber64(SecScanSpec *spec) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && !(defined(SECUREC_ON_UNIX))) + if (spec->negative != 0) { + if (SECUREC_CONVERT_IS_SIGNED(spec->oriConvChr)) { + if (spec->number64 > SECUREC_MIN_64BITS_NEG_VALUE) { + spec->number64 = SECUREC_MIN_64BITS_NEG_VALUE; + } else { + spec->number64 = (SecUnsignedInt64)(0U - spec->number64); /* Wrap with unsigned int64 numbers */ + } + if (spec->beyondMax != 0) { + spec->number64 = SECUREC_MIN_64BITS_NEG_VALUE; + } + } else { /* For o, u, x, X, p */ + spec->number64 = (SecUnsignedInt64)(0U - spec->number64); /* Wrap with unsigned int64 numbers */ + if (spec->beyondMax != 0) { + spec->number64 = SECUREC_MAX_64BITS_VALUE; + } + } + } else { + if (SECUREC_CONVERT_IS_SIGNED(spec->oriConvChr)) { + if (spec->number64 > SECUREC_MAX_64BITS_POS_VALUE) { + spec->number64 = SECUREC_MAX_64BITS_POS_VALUE; + } + if (spec->beyondMax != 0) { + spec->number64 = SECUREC_MAX_64BITS_POS_VALUE; + } + } else { + if (spec->beyondMax != 0) { + spec->number64 = SECUREC_MAX_64BITS_VALUE; + } + } + } +#else + if (spec->negative != 0) { +#if defined(__hpux) + if (spec->oriConvChr != 'p') { + spec->number64 = (SecUnsignedInt64)(0U - spec->number64); /* Wrap with unsigned int64 numbers */ + } +#else + spec->number64 = (SecUnsignedInt64)(0U - spec->number64); /* Wrap with unsigned int64 numbers */ +#endif + } +#endif + return; +} + +#if SECUREC_ENABLE_SCANF_FILE + +/* + * Adjust the pointer position of the file stream + */ +SECUREC_INLINE void SecSeekStream(SecFileStream *stream) +{ + if (stream->count == 0) { + if (feof(stream->pf) != 0) { + /* File pointer at the end of file, don't need to seek back */ + stream->base[0] = '\0'; + return; + } + } + /* Seek to original position, for file read, but nothing to input */ + if (fseek(stream->pf, stream->oriFilePos, SEEK_SET) != 0) { + /* Seek failed, ignore it */ + stream->oriFilePos = 0; + return; + } + + if (stream->fileRealRead > 0) { /* Do not seek without input data */ +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) + size_t residue = stream->fileRealRead % SECUREC_BUFFERED_BLOK_SIZE; + size_t loops; + for (loops = 0; loops < (stream->fileRealRead / SECUREC_BUFFERED_BLOK_SIZE); ++loops) { + if (fread(stream->base, (size_t)SECUREC_BUFFERED_BLOK_SIZE, (size_t)1, stream->pf) != (size_t)1) { + break; + } + } + if (residue != 0) { + long curFilePos; + if (fread(stream->base, residue, (size_t)1, stream->pf) != (size_t)1) { + return; + } + curFilePos = ftell(stream->pf); + if (curFilePos < stream->oriFilePos || + (size_t)(unsigned long)(curFilePos - stream->oriFilePos) < stream->fileRealRead) { + /* Try to remedy the problem */ + (void)fseek(stream->pf, (long)stream->fileRealRead, SEEK_CUR); + } + } +#else + /* Seek from oriFilePos. Regardless of the integer sign problem, call scanf will not read very large data */ + if (fseek(stream->pf, (long)stream->fileRealRead, SEEK_CUR) != 0) { + /* Seek failed, ignore it */ + stream->oriFilePos = 0; + return; + } +#endif + } + return; +} + +/* + * Adjust the pointer position of the file stream and free memory + */ +SECUREC_INLINE void SecAdjustStream(SecFileStream *stream) +{ + if (stream != NULL && (stream->flag & SECUREC_FILE_STREAM_FLAG) != 0 && stream->base != NULL) { + SecSeekStream(stream); + SECUREC_FREE(stream->base); + stream->base = NULL; + } + return; +} +#endif + +SECUREC_INLINE void SecSkipSpaceFormat(const SecUnsignedChar **format) +{ + const SecUnsignedChar *fmt = *format; + while (SecIsSpace((SecInt)(int)(*fmt)) != 0) { + ++fmt; + } + *format = fmt; +} + +#if !defined(SECUREC_FOR_WCHAR) && defined(SECUREC_COMPATIBLE_VERSION) +/* + * Handling multi-character characters + */ +SECUREC_INLINE int SecDecodeLeadByte(SecScanSpec *spec, const SecUnsignedChar **format, SecFileStream *stream) +{ +#if SECUREC_HAVE_MBTOWC + const SecUnsignedChar *fmt = *format; + int ch1 = (int)spec->ch; + int ch2 = SecGetChar(stream, &(spec->charCount)); + spec->ch = (SecInt)ch2; + if (*fmt == SECUREC_CHAR('\0') || (int)(*fmt) != ch2) { + /* LSD in console mode, ungetc twice may cause problem */ + SecUnGetChar(ch2, stream, &(spec->charCount)); + SecUnGetChar(ch1, stream, &(spec->charCount)); + return -1; + } + ++fmt; + if ((unsigned int)MB_CUR_MAX >= SECUREC_UTF8_BOM_HEADER_SIZE && + (((unsigned char)ch1 & SECUREC_UTF8_LEAD_1ST) == SECUREC_UTF8_LEAD_1ST) && + (((unsigned char)ch2 & SECUREC_UTF8_LEAD_2ND) == SECUREC_UTF8_LEAD_2ND)) { + /* This char is very likely to be a UTF-8 char */ + wchar_t tempWChar; + char temp[SECUREC_MULTI_BYTE_MAX_LEN]; + int ch3 = (int)SecGetChar(stream, &(spec->charCount)); + spec->ch = (SecInt)ch3; + if (*fmt == SECUREC_CHAR('\0') || (int)(*fmt) != ch3) { + SecUnGetChar(ch3, stream, &(spec->charCount)); + return -1; + } + temp[0] = (char)ch1; + temp[1] = (char)ch2; /* 1 index of second character */ + temp[2] = (char)ch3; /* 2 index of third character */ + temp[3] = '\0'; /* 3 of string terminator position */ + if (mbtowc(&tempWChar, temp, sizeof(temp)) > 0) { + /* Succeed */ + ++fmt; + --spec->charCount; + } else { + SecUnGetChar(ch3, stream, &(spec->charCount)); + } + } + --spec->charCount; /* Only count as one character read */ + *format = fmt; + return 0; +#else + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + (void)format; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + return -1; +#endif +} +#endif + +/* + * Resolving sequence of characters from %[ format, format wile point to ']' + */ +SECUREC_INLINE int SecSetupBracketTable(const SecUnsignedChar **format, SecBracketTable *bracketTable) +{ + const SecUnsignedChar *fmt = *format; + SecUnsignedChar prevChar = 0; +#if !(defined(SECUREC_COMPATIBLE_WIN_FORMAT)) + if (*fmt == SECUREC_CHAR('{')) { + return -1; + } +#endif + /* For building "table" data */ + ++fmt; /* Skip [ */ + bracketTable->mask = 0; /* Set all bits to 0 */ + if (*fmt == SECUREC_CHAR('^')) { + ++fmt; + bracketTable->mask = (unsigned char)0xffU; /* Use 0xffU to set all bits to 1 */ + } + if (*fmt == SECUREC_CHAR(']')) { + prevChar = SECUREC_CHAR(']'); + ++fmt; + SecBracketSetBit(bracketTable->table, SECUREC_CHAR(']')); + } + while (*fmt != SECUREC_CHAR('\0') && *fmt != SECUREC_CHAR(']')) { + SecUnsignedChar expCh = *fmt; + ++fmt; + if (expCh != SECUREC_CHAR('-') || prevChar == 0 || *fmt == SECUREC_CHAR(']')) { + /* Normal character */ + prevChar = expCh; + SecBracketSetBit(bracketTable->table, expCh); + } else { + /* For %[a-z] */ + expCh = *fmt; /* Get end of range */ + ++fmt; + if (prevChar <= expCh) { /* %[a-z] %[a-a] */ + SecBracketSetBitRange(bracketTable->table, prevChar, expCh); + } else { + /* For %[z-a] */ +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) + /* Swap start and end characters */ + SecBracketSetBitRange(bracketTable->table, expCh, prevChar); +#else + SecBracketSetBit(bracketTable->table, SECUREC_CHAR('-')); + SecBracketSetBit(bracketTable->table, expCh); +#endif + } + prevChar = 0; + } + } + *format = fmt; + return 0; +} + +#ifdef SECUREC_FOR_WCHAR +SECUREC_INLINE int SecInputForWchar(SecScanSpec *spec) +{ + void *endPtr = spec->argPtr; + if (spec->isWCharOrLong > 0) { + *(wchar_t UNALIGNED *)endPtr = (wchar_t)spec->ch; + endPtr = (wchar_t *)endPtr + 1; + --spec->arrayWidth; + } else { +#if SECUREC_HAVE_WCTOMB + int temp; + char tmpBuf[SECUREC_MB_LEN + 1]; + SECUREC_MASK_MSVC_CRT_WARNING temp = wctomb(tmpBuf, (wchar_t)spec->ch); + SECUREC_END_MASK_MSVC_CRT_WARNING + if (temp <= 0 || (size_t)(unsigned int)temp > sizeof(tmpBuf)) { + /* If wctomb error, then ignore character */ + return 0; + } + if (((size_t)(unsigned int)temp) > spec->arrayWidth) { + return -1; + } + if (memcpy_s(endPtr, spec->arrayWidth, tmpBuf, (size_t)(unsigned int)temp) != EOK) { + return -1; + } + endPtr = (char *)endPtr + temp; + spec->arrayWidth -= (size_t)(unsigned int)temp; +#else + return -1; +#endif + } + spec->argPtr = endPtr; + return 0; +} +#endif + +#ifndef SECUREC_FOR_WCHAR +#if SECUREC_HAVE_WCHART +SECUREC_INLINE wchar_t SecConvertInputCharToWchar(SecScanSpec *spec, SecFileStream *stream) +{ + wchar_t tempWChar = L'?'; /* Set default char is ? */ +#if SECUREC_HAVE_MBTOWC + char temp[SECUREC_MULTI_BYTE_MAX_LEN + 1]; + temp[0] = (char)spec->ch; + temp[1] = '\0'; +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) + if (SecIsLeadByte(spec->ch) != 0) { + spec->ch = SecGetChar(stream, &(spec->charCount)); + temp[1] = (char)spec->ch; + temp[2] = '\0'; /* 2 of string terminator position */ + } + if (mbtowc(&tempWChar, temp, sizeof(temp)) <= 0) { + /* No string termination error for tool */ + tempWChar = L'?'; + } +#else + if (SecIsLeadByte(spec->ch) != 0) { + int convRes = 0; + int di = 1; + /* On Linux like system, the string is encoded in UTF-8 */ + while (convRes <= 0 && di < (int)MB_CUR_MAX && di < SECUREC_MULTI_BYTE_MAX_LEN) { + spec->ch = SecGetChar(stream, &(spec->charCount)); + temp[di] = (char)spec->ch; + ++di; + temp[di] = '\0'; + convRes = mbtowc(&tempWChar, temp, sizeof(temp)); + } + if (convRes <= 0) { + tempWChar = L'?'; + } + } else { + if (mbtowc(&tempWChar, temp, sizeof(temp)) <= 0) { + tempWChar = L'?'; + } + } +#endif +#else + (void)spec; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + (void)stream; /* To clear e438 last value assigned not used , the compiler will optimize this code */ +#endif /* SECUREC_HAVE_MBTOWC */ + + return tempWChar; +} +#endif /* SECUREC_HAVE_WCHART */ + +SECUREC_INLINE int SecInputForChar(SecScanSpec *spec, SecFileStream *stream) +{ + void *endPtr = spec->argPtr; + if (spec->isWCharOrLong > 0) { +#if SECUREC_HAVE_WCHART + *(wchar_t UNALIGNED *)endPtr = SecConvertInputCharToWchar(spec, stream); + endPtr = (wchar_t *)endPtr + 1; + --spec->arrayWidth; +#else + (void)stream; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + return -1; +#endif + } else { + *(char *)endPtr = (char)spec->ch; + endPtr = (char *)endPtr + 1; + --spec->arrayWidth; + } + spec->argPtr = endPtr; + return 0; +} +#endif + +/* + * Scan digital part of %d %i %o %u %x %p. + * Return 0 OK + */ +SECUREC_INLINE int SecInputNumberDigital(SecFileStream *stream, SecScanSpec *spec) +{ + static void (*secFinishNumber[SECUREC_DECODE_NUMBER_FUNC_NUM])(SecScanSpec *spec) = { + SecFinishNumber, SecFinishNumber64 + }; + while (SECUREC_FILED_WIDTH_ENOUGH(spec)) { + spec->ch = SecGetChar(stream, &(spec->charCount)); + /* Decode ch to number */ + if (SecDecodeNumber(spec) != 0) { + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + break; + } + SECUREC_FILED_WIDTH_DEC(spec); /* Must be behind un get char, otherwise the logic is incorrect */ + spec->numberState = SECUREC_NUMBER_STATE_STARTED; + } + /* Handling integer negative numbers and beyond max */ + (*secFinishNumber[spec->numberArgType])(spec); + if (spec->numberState == SECUREC_NUMBER_STATE_STARTED) { + return 0; + } + return -1; +} + +/* + * Scan %d %i %o %u %x %p. + * Return 0 OK + */ +SECUREC_INLINE int SecInputNumber(SecFileStream *stream, SecScanSpec *spec) +{ + /* Character already read */ + if (spec->ch == SECUREC_CHAR('+') || spec->ch == SECUREC_CHAR('-')) { + if (spec->ch == SECUREC_CHAR('-')) { + spec->negative = 1; +#if SECUREC_IN_KERNEL + /* In kernel Refuse to enter negative number */ + if (SECUREC_CONVERT_IS_UNSIGNED(spec->oriConvChr)) { + return -1; + } +#endif + } + SECUREC_FILED_WIDTH_DEC(spec); /* Do not need to check width here, must be greater than 0 */ + spec->ch = SecGetChar(stream, &(spec->charCount)); /* Eat + or - */ + spec->ch = SecGetChar(stream, &(spec->charCount)); /* Get next character, used for the '0' judgments */ + SecUnGetChar(spec->ch, stream, &(spec->charCount)); /* Not sure if it was actually read, so push back */ + } + + if (spec->oriConvChr == 'i') { + spec->convChr = 'd'; /* The i could be d, o, or x, use d as default */ + } + + if (spec->ch == SECUREC_CHAR('0') && (spec->oriConvChr == 'x' || spec->oriConvChr == 'i') && + SECUREC_FILED_WIDTH_ENOUGH(spec)) { + /* Input string begin with 0, may be 0x123 0X123 0123 0x 01 0yy 09 0 0ab 00 */ + SECUREC_FILED_WIDTH_DEC(spec); + spec->ch = SecGetChar(stream, &(spec->charCount)); /* ch is '0' */ + + /* Read only '0' due to width limitation */ + if (!SECUREC_FILED_WIDTH_ENOUGH(spec)) { + /* The number or number64 in spec has been set 0 */ + return 0; + } + + spec->ch = SecGetChar(stream, &(spec->charCount)); /* Get next char to check x or X, do not dec width */ + if ((SecChar)spec->ch == SECUREC_CHAR('x') || (SecChar)spec->ch == SECUREC_CHAR('X')) { + spec->convChr = 'x'; + SECUREC_FILED_WIDTH_DEC(spec); /* Make incorrect width for x or X */ + } else { + if (spec->oriConvChr == 'i') { + spec->convChr = 'o'; + } + /* For "0y" "08" "01" "0a" ... ,push the 'y' '8' '1' 'a' back */ + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + /* Since 0 has been read, it indicates that a valid character has been read */ + spec->numberState = SECUREC_NUMBER_STATE_STARTED; + } + } + return SecInputNumberDigital(stream, spec); +} + +/* + * Scan %c %s %[ + * Return 0 OK + */ +SECUREC_INLINE int SecInputString(SecFileStream *stream, SecScanSpec *spec, + const SecBracketTable *bracketTable, int *doneCount) +{ + void *startPtr = spec->argPtr; + int suppressed = 0; + int errNoMem = 0; + + while (SECUREC_FILED_WIDTH_ENOUGH(spec)) { + SECUREC_FILED_WIDTH_DEC(spec); + spec->ch = SecGetChar(stream, &(spec->charCount)); + /* + * The char condition or string condition and bracket condition. + * Only supports wide characters with a maximum length of two bytes + */ + if (spec->ch != SECUREC_EOF && (SecCanInputCharacter(spec->convChr) != 0 || + SecCanInputString(spec->convChr, spec->ch) != 0 || + SecCanInputForBracket(spec->convChr, spec->ch, bracketTable) != 0)) { + if (spec->suppress != 0) { + /* Used to identify processed data for %*, use argPtr to identify will cause 613, so use suppressed */ + suppressed = 1; + continue; + } + /* Now suppress is not set */ + if (spec->arrayWidth == 0) { + errNoMem = 1; /* We have exhausted the user's buffer */ + break; + } +#ifdef SECUREC_FOR_WCHAR + errNoMem = SecInputForWchar(spec); +#else + errNoMem = SecInputForChar(spec, stream); +#endif + if (errNoMem != 0) { + break; + } + } else { + SecUnGetChar(spec->ch, stream, &(spec->charCount)); + break; + } + } + + if (errNoMem != 0) { + /* In case of error, blank out the input buffer */ + SecAddEndingZero(startPtr, spec); + return -1; + } + if ((spec->suppress != 0 && suppressed == 0) || + (spec->suppress == 0 && startPtr == spec->argPtr)) { + /* No input was scanned */ + return -1; + } + if (spec->convChr != 'c') { + /* Add null-terminate for strings */ + SecAddEndingZero(spec->argPtr, spec); + } + if (spec->suppress == 0) { + *doneCount = *doneCount + 1; + } + return 0; +} + +#ifdef SECUREC_FOR_WCHAR +/* + * Alloce buffer for wchar version of %[. + * Return 0 OK + */ +SECUREC_INLINE int SecAllocBracketTable(SecBracketTable *bracketTable) +{ + if (bracketTable->table == NULL) { + /* Table should be freed after use */ + bracketTable->table = (unsigned char *)SECUREC_MALLOC(SECUREC_BRACKET_TABLE_SIZE); + if (bracketTable->table == NULL) { + return -1; + } + } + return 0; +} + +/* + * Free buffer for wchar version of %[ + */ +SECUREC_INLINE void SecFreeBracketTable(SecBracketTable *bracketTable) +{ + if (bracketTable->table != NULL) { + SECUREC_FREE(bracketTable->table); + bracketTable->table = NULL; + } +} +#endif + +#ifdef SECUREC_FOR_WCHAR +/* + * Formatting input core functions for wchar version.Called by a function such as vswscanf_s + */ +int SecInputSW(SecFileStream *stream, const wchar_t *cFormat, va_list argList) +#else +/* + * Formatting input core functions for char version.Called by a function such as vsscanf_s + */ +int SecInputS(SecFileStream *stream, const char *cFormat, va_list argList) +#endif +{ + const SecUnsignedChar *format = (const SecUnsignedChar *)cFormat; + SecBracketTable bracketTable = SECUREC_INIT_BRACKET_TABLE; + SecScanSpec spec; + int doneCount = 0; + int formatError = 0; + int paraIsNull = 0; + int match = 0; /* When % is found , inc this value */ + int errRet = 0; +#if SECUREC_ENABLE_SCANF_FLOAT + SecFloatSpec floatSpec; + SecInitFloatSpec(&floatSpec); +#endif + spec.ch = 0; /* Need to initialize to 0 */ + spec.charCount = 0; /* Need to initialize to 0 */ + + /* Format must not NULL, use err < 1 to claer 845 */ + while (errRet < 1 && *format != SECUREC_CHAR('\0')) { + /* Skip space in format and space in input */ + if (SecIsSpace((SecInt)(int)(*format)) != 0) { + /* Read first no space char */ + spec.ch = SecSkipSpaceChar(stream, &(spec.charCount)); + /* Read the EOF cannot be returned directly here, because the case of " %n" needs to be handled */ + /* Put fist no space char backup. put EOF back is also OK, and to modify the character count */ + SecUnGetChar(spec.ch, stream, &(spec.charCount)); + SecSkipSpaceFormat(&format); + continue; + } + + if (*format != SECUREC_CHAR('%')) { + spec.ch = SecGetChar(stream, &(spec.charCount)); + if ((int)(*format) != (int)(spec.ch)) { + SecUnGetChar(spec.ch, stream, &(spec.charCount)); + break; + } + ++format; +#if !defined(SECUREC_FOR_WCHAR) && defined(SECUREC_COMPATIBLE_VERSION) + if (SecIsLeadByte(spec.ch) != 0) { + if (SecDecodeLeadByte(&spec, &format, stream) != 0) { + break; + } + } +#endif + continue; + } + + /* Now *format is % */ + /* Set default value for each % */ + SecSetDefaultScanSpec(&spec); + if (SecDecodeScanFlag(&format, &spec) != 0) { + formatError = 1; + ++errRet; + continue; + } + if (!SECUREC_FILED_WIDTH_ENOUGH(&spec)) { + /* 0 width in format */ + ++errRet; + continue; + } + + /* Update wchar flag for %S %C */ + SecUpdateWcharFlagByType(*format, &spec); + + spec.convChr = SECUREC_TO_LOWERCASE(*format); + spec.oriConvChr = spec.convChr; /* convChr may be modified to handle integer logic */ + if (spec.convChr != 'n') { + if (spec.convChr != 'c' && spec.convChr != SECUREC_BRACE) { + spec.ch = SecSkipSpaceChar(stream, &(spec.charCount)); + } else { + spec.ch = SecGetChar(stream, &(spec.charCount)); + } + if (spec.ch == SECUREC_EOF) { + ++errRet; + continue; + } + } + + /* Now no 0 width in format and get one char from input */ + switch (spec.oriConvChr) { + case 'c': /* Also 'C' */ + if (spec.widthSet == 0) { + spec.widthSet = 1; + spec.width = 1; + } + /* fall-through */ /* FALLTHRU */ + case 's': /* Also 'S': */ + /* fall-through */ /* FALLTHRU */ + case SECUREC_BRACE: + /* Unset last char to stream */ + SecUnGetChar(spec.ch, stream, &(spec.charCount)); + /* Check dest buffer and size */ + if (spec.suppress == 0) { + spec.argPtr = (void *)va_arg(argList, void *); + if (spec.argPtr == NULL) { + paraIsNull = 1; + ++errRet; + continue; + } + /* Get the next argument, size of the array in characters */ +#ifdef SECUREC_ON_64BITS + /* Use 0xffffffffUL mask to Support pass integer as array length */ + spec.arrayWidth = ((size_t)(va_arg(argList, size_t))) & 0xffffffffUL; +#else /* !SECUREC_ON_64BITS */ + spec.arrayWidth = (size_t)va_arg(argList, size_t); +#endif + if (SECUREC_ARRAY_WIDTH_IS_WRONG(spec)) { + /* Do not clear buffer just go error */ + ++errRet; + continue; + } + /* One element is needed for '\0' for %s and %[ */ + if (spec.convChr != 'c') { + --spec.arrayWidth; + } + } else { + /* Set argPtr to NULL is necessary, in supress mode we don't use argPtr to store data */ + spec.argPtr = NULL; + } + + if (spec.convChr == SECUREC_BRACE) { + /* Malloc when first %[ is meet for wchar version */ +#ifdef SECUREC_FOR_WCHAR + if (SecAllocBracketTable(&bracketTable) != 0) { + ++errRet; + continue; + } +#endif + (void)memset(bracketTable.table, 0, (size_t)SECUREC_BRACKET_TABLE_SIZE); + if (SecSetupBracketTable(&format, &bracketTable) != 0) { + ++errRet; + continue; + } + + if (*format == SECUREC_CHAR('\0')) { + /* Default add string terminator */ + SecAddEndingZero(spec.argPtr, &spec); + ++errRet; + /* Truncated format */ + continue; + } + } + + /* Set completed. Now read string or character */ + if (SecInputString(stream, &spec, &bracketTable, &doneCount) != 0) { + ++errRet; + continue; + } + break; + case 'p': + /* Make %hp same as %p */ + spec.numberWidth = SECUREC_NUM_WIDTH_INT; +#ifdef SECUREC_ON_64BITS + spec.numberArgType = 1; +#endif + /* fall-through */ /* FALLTHRU */ + case 'o': /* fall-through */ /* FALLTHRU */ + case 'u': /* fall-through */ /* FALLTHRU */ + case 'd': /* fall-through */ /* FALLTHRU */ + case 'i': /* fall-through */ /* FALLTHRU */ + case 'x': + /* Unset last char to stream */ + SecUnGetChar(spec.ch, stream, &(spec.charCount)); + if (SecInputNumber(stream, &spec) != 0) { + ++errRet; + continue; + } + if (spec.suppress == 0) { + spec.argPtr = (void *)va_arg(argList, void *); + if (spec.argPtr == NULL) { + paraIsNull = 1; + ++errRet; + continue; + } + SecAssignNumber(&spec); + ++doneCount; + } + break; + case 'n': /* Char count */ + if (spec.suppress == 0) { + spec.argPtr = (void *)va_arg(argList, void *); + if (spec.argPtr == NULL) { + paraIsNull = 1; + ++errRet; + continue; + } + spec.number = (unsigned long)(unsigned int)(spec.charCount); + spec.numberArgType = 0; + SecAssignNumber(&spec); + } + break; + case 'e': /* fall-through */ /* FALLTHRU */ + case 'f': /* fall-through */ /* FALLTHRU */ + case 'g': /* Scan a float */ + /* Unset last char to stream */ + SecUnGetChar(spec.ch, stream, &(spec.charCount)); +#if SECUREC_ENABLE_SCANF_FLOAT + if (SecInputFloat(stream, &spec, &floatSpec) != 0) { + ++errRet; + continue; + } + if (spec.suppress == 0) { + spec.argPtr = (void *)va_arg(argList, void *); + if (spec.argPtr == NULL) { + ++errRet; + paraIsNull = 1; + continue; + } +#ifdef SECUREC_FOR_WCHAR + if (SecAssignFloatW(&floatSpec, &spec) != 0) { + ++errRet; + continue; + } +#else + SecAssignFloat(floatSpec.floatStr, spec.numberWidth, spec.argPtr); +#endif + ++doneCount; + } + break; +#else /* SECUREC_ENABLE_SCANF_FLOAT */ + ++errRet; + continue; +#endif + default: + if ((int)(*format) != (int)spec.ch) { + SecUnGetChar(spec.ch, stream, &(spec.charCount)); + formatError = 1; + ++errRet; + continue; + } else { + --match; /* Compensate for the self-increment of the following code */ + } + break; + } + ++match; + ++format; + } + +#ifdef SECUREC_FOR_WCHAR + SecFreeBracketTable(&bracketTable); +#endif + +#if SECUREC_ENABLE_SCANF_FLOAT + SecFreeFloatSpec(&floatSpec, &doneCount); +#endif + +#if SECUREC_ENABLE_SCANF_FILE + SecAdjustStream(stream); +#endif + + if (spec.ch == SECUREC_EOF) { + return ((doneCount != 0 || match != 0) ? doneCount : SECUREC_SCANF_EINVAL); + } + if (formatError != 0 || paraIsNull != 0) { + /* Invalid Input Format or parameter, but not meet EOF */ + return SECUREC_SCANF_ERROR_PARA; + } + return doneCount; +} + +#if SECUREC_ENABLE_SCANF_FILE +#if SECUREC_USE_STD_UNGETC +/* + * Get char from stream use std function + */ +SECUREC_INLINE SecInt SecGetCharFromStream(const SecFileStream *stream) +{ + SecInt ch; + ch = SECUREC_GETC(stream->pf); + return ch; +} +#else +/* + * Get char from stream or buffer + */ +SECUREC_INLINE SecInt SecGetCharFromStream(SecFileStream *stream) +{ + SecInt ch; + if (stream->fUnGet == 1) { + ch = (SecInt) stream->lastChar; + stream->fUnGet = 0; + } else { + ch = SECUREC_GETC(stream->pf); + stream->lastChar = (unsigned int)ch; + } + return ch; +} +#endif + +/* + * Try to read the BOM header, when meet a BOM head, discard it, then data is Aligned to base + */ +SECUREC_INLINE void SecReadAndSkipBomHeader(SecFileStream *stream) +{ + /* Use size_t type conversion to clean e747 */ + stream->count = fread(stream->base, (size_t)1, (size_t)SECUREC_BOM_HEADER_SIZE, stream->pf); + if (stream->count > SECUREC_BOM_HEADER_SIZE) { + stream->count = 0; + } + if (SECUREC_BEGIN_WITH_BOM(stream->base, stream->count)) { + /* It's BOM header, discard it */ + stream->count = 0; + } +} + +/* + * Get char from file stream or buffer + */ +SECUREC_INLINE SecInt SecGetCharFromFile(SecFileStream *stream) +{ + SecInt ch; + if (stream->count < sizeof(SecChar)) { + /* Load file to buffer */ + size_t len; + if (stream->base != NULL) { + /* Put the last unread data in the buffer head */ + for (len = 0; len < stream->count; ++len) { + stream->base[len] = stream->cur[len]; + } + } else { + stream->oriFilePos = ftell(stream->pf); /* Save original file read position */ + if (stream->oriFilePos == -1) { + /* It may be a pipe stream */ + stream->flag = SECUREC_PIPE_STREAM_FLAG; + return SecGetCharFromStream(stream); + } + /* Reserve the length of BOM head */ + stream->base = (char *)SECUREC_MALLOC(SECUREC_BUFFERED_BLOK_SIZE + + SECUREC_BOM_HEADER_SIZE + sizeof(SecChar)); /* To store '\0' and aligned to wide char */ + if (stream->base == NULL) { + return SECUREC_EOF; + } + /* First read file */ + if (stream->oriFilePos == 0) { + /* Make sure the data is aligned to base */ + SecReadAndSkipBomHeader(stream); + } + } + + /* Skip existing data and read data */ + len = fread(stream->base + stream->count, (size_t)1, (size_t)SECUREC_BUFFERED_BLOK_SIZE, stream->pf); + if (len > SECUREC_BUFFERED_BLOK_SIZE) { /* It won't happen, */ + len = 0; + } + stream->count += len; + stream->cur = stream->base; + stream->flag |= SECUREC_LOAD_FILE_TO_MEM_FLAG; + stream->base[stream->count] = '\0'; /* For tool Warning string null */ + } + + SECUREC_GET_CHAR(stream, &ch); + if (ch != SECUREC_EOF) { + stream->fileRealRead += sizeof(SecChar); + } + return ch; +} +#endif + +/* + * Get char for wchar version + */ +SECUREC_INLINE SecInt SecGetChar(SecFileStream *stream, int *counter) +{ + *counter = *counter + 1; /* Always plus 1 */ + /* The main scenario is scanf str */ + if ((stream->flag & SECUREC_MEM_STR_FLAG) != 0) { + SecInt ch; + SECUREC_GET_CHAR(stream, &ch); + return ch; + } +#if SECUREC_ENABLE_SCANF_FILE + if ((stream->flag & SECUREC_FILE_STREAM_FLAG) != 0) { + return SecGetCharFromFile(stream); + } + if ((stream->flag & SECUREC_PIPE_STREAM_FLAG) != 0) { + return SecGetCharFromStream(stream); + } +#endif + return SECUREC_EOF; +} + +/* + * Unget Public realizatio char for wchar and char version + */ +SECUREC_INLINE void SecUnGetCharImpl(SecInt ch, SecFileStream *stream) +{ + if ((stream->flag & SECUREC_MEM_STR_FLAG) != 0) { + SECUREC_UN_GET_CHAR(stream); + return; + } +#if SECUREC_ENABLE_SCANF_FILE + if ((stream->flag & SECUREC_LOAD_FILE_TO_MEM_FLAG) != 0) { + SECUREC_UN_GET_CHAR(stream); + if (stream->fileRealRead > 0) { + stream->fileRealRead -= sizeof(SecChar); + } + return; + } + if ((stream->flag & SECUREC_PIPE_STREAM_FLAG) != 0) { +#if SECUREC_USE_STD_UNGETC + (void)SECUREC_UN_GETC(ch, stream->pf); +#else + stream->lastChar = (unsigned int)ch; + stream->fUnGet = 1; +#endif + return; + } +#else + (void)ch; /* To clear e438 last value assigned not used , the compiler will optimize this code */ +#endif +} + +/* + * Unget char for char version + */ +SECUREC_INLINE void SecUnGetChar(SecInt ch, SecFileStream *stream, int *counter) +{ + *counter = *counter - 1; /* Always mius 1 */ + if (ch != SECUREC_EOF) { + SecUnGetCharImpl(ch, stream); + } +} + +/* + * Skip space char by isspace + */ +SECUREC_INLINE SecInt SecSkipSpaceChar(SecFileStream *stream, int *counter) +{ + SecInt ch; + do { + ch = SecGetChar(stream, counter); + if (ch == SECUREC_EOF) { + break; + } + } while (SecIsSpace(ch) != 0); + return ch; +} +#endif /* INPUT_INL_5D13A042_DC3F_4ED9_A8D1_882811274C27 */ + diff --git a/third_party/bounds_checking_function/src/memcpy_s.c b/third_party/bounds_checking_function/src/memcpy_s.c new file mode 100644 index 0000000..4062a32 --- /dev/null +++ b/third_party/bounds_checking_function/src/memcpy_s.c @@ -0,0 +1,564 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: memcpy_s function + * Author: lishunda + * Create: 2014-02-25 + */ +/* + * [Standardize-exceptions] Use unsafe function: Portability + * [reason] Use unsafe function to implement security function to maintain platform compatibility. + * And sufficient input validation is performed before calling + */ + +#include "securecutil.h" + +#ifndef SECUREC_MEMCOPY_WITH_PERFORMANCE +#define SECUREC_MEMCOPY_WITH_PERFORMANCE 0 +#endif + +#if SECUREC_WITH_PERFORMANCE_ADDONS || SECUREC_MEMCOPY_WITH_PERFORMANCE +#ifndef SECUREC_MEMCOPY_THRESHOLD_SIZE +#define SECUREC_MEMCOPY_THRESHOLD_SIZE 64UL +#endif + +#define SECUREC_SMALL_MEM_COPY(dest, src, count) do { \ + if (SECUREC_ADDR_ALIGNED_8(dest) && SECUREC_ADDR_ALIGNED_8(src)) { \ + /* Use struct assignment */ \ + switch (count) { \ + case 1: \ + *(unsigned char *)(dest) = *(const unsigned char *)(src); \ + break; \ + case 2: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 2); \ + break; \ + case 3: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 3); \ + break; \ + case 4: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 4); \ + break; \ + case 5: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 5); \ + break; \ + case 6: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 6); \ + break; \ + case 7: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 7); \ + break; \ + case 8: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 8); \ + break; \ + case 9: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 9); \ + break; \ + case 10: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 10); \ + break; \ + case 11: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 11); \ + break; \ + case 12: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 12); \ + break; \ + case 13: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 13); \ + break; \ + case 14: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 14); \ + break; \ + case 15: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 15); \ + break; \ + case 16: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 16); \ + break; \ + case 17: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 17); \ + break; \ + case 18: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 18); \ + break; \ + case 19: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 19); \ + break; \ + case 20: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 20); \ + break; \ + case 21: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 21); \ + break; \ + case 22: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 22); \ + break; \ + case 23: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 23); \ + break; \ + case 24: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 24); \ + break; \ + case 25: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 25); \ + break; \ + case 26: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 26); \ + break; \ + case 27: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 27); \ + break; \ + case 28: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 28); \ + break; \ + case 29: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 29); \ + break; \ + case 30: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 30); \ + break; \ + case 31: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 31); \ + break; \ + case 32: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 32); \ + break; \ + case 33: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 33); \ + break; \ + case 34: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 34); \ + break; \ + case 35: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 35); \ + break; \ + case 36: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 36); \ + break; \ + case 37: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 37); \ + break; \ + case 38: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 38); \ + break; \ + case 39: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 39); \ + break; \ + case 40: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 40); \ + break; \ + case 41: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 41); \ + break; \ + case 42: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 42); \ + break; \ + case 43: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 43); \ + break; \ + case 44: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 44); \ + break; \ + case 45: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 45); \ + break; \ + case 46: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 46); \ + break; \ + case 47: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 47); \ + break; \ + case 48: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 48); \ + break; \ + case 49: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 49); \ + break; \ + case 50: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 50); \ + break; \ + case 51: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 51); \ + break; \ + case 52: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 52); \ + break; \ + case 53: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 53); \ + break; \ + case 54: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 54); \ + break; \ + case 55: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 55); \ + break; \ + case 56: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 56); \ + break; \ + case 57: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 57); \ + break; \ + case 58: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 58); \ + break; \ + case 59: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 59); \ + break; \ + case 60: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 60); \ + break; \ + case 61: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 61); \ + break; \ + case 62: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 62); \ + break; \ + case 63: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 63); \ + break; \ + case 64: \ + SECUREC_COPY_VALUE_BY_STRUCT((dest), (src), 64); \ + break; \ + default: \ + /* Do nothing */ \ + break; \ + } /* END switch */ \ + } else { \ + unsigned char *tmpDest_ = (unsigned char *)(dest); \ + const unsigned char *tmpSrc_ = (const unsigned char *)(src); \ + switch (count) { \ + case 64: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 63: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 62: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 61: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 60: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 59: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 58: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 57: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 56: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 55: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 54: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 53: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 52: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 51: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 50: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 49: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 48: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 47: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 46: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 45: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 44: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 43: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 42: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 41: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 40: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 39: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 38: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 37: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 36: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 35: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 34: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 33: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 32: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 31: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 30: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 29: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 28: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 27: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 26: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 25: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 24: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 23: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 22: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 21: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 20: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 19: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 18: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 17: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 16: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 15: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 14: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 13: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 12: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 11: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 10: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 9: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 8: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 7: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 6: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 5: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 4: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 3: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 2: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 1: \ + *(tmpDest_++) = *(tmpSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + default: \ + /* Do nothing */ \ + break; \ + } \ + } \ +} SECUREC_WHILE_ZERO + +/* + * Performance optimization + */ +#define SECUREC_MEMCPY_OPT(dest, src, count) do { \ + if ((count) > SECUREC_MEMCOPY_THRESHOLD_SIZE) { \ + SECUREC_MEMCPY_WARP_OPT((dest), (src), (count)); \ + } else { \ + SECUREC_SMALL_MEM_COPY((dest), (src), (count)); \ + } \ +} SECUREC_WHILE_ZERO +#endif + +/* + * Handling errors + */ +SECUREC_INLINE errno_t SecMemcpyError(void *dest, size_t destMax, const void *src, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_MEM_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("memcpy_s"); + return ERANGE; + } + if (dest == NULL || src == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("memcpy_s"); + if (dest != NULL) { + (void)memset(dest, 0, destMax); + return EINVAL_AND_RESET; + } + return EINVAL; + } + if (count > destMax) { + (void)memset(dest, 0, destMax); + SECUREC_ERROR_INVALID_RANGE("memcpy_s"); + return ERANGE_AND_RESET; + } + if (SECUREC_MEMORY_IS_OVERLAP(dest, src, count)) { + (void)memset(dest, 0, destMax); + SECUREC_ERROR_BUFFER_OVERLAP("memcpy_s"); + return EOVERLAP_AND_RESET; + } + /* Count is 0 or dest equal src also ret EOK */ + return EOK; +} + +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) + /* + * The fread API in windows will call memcpy_s and pass 0xffffffff to destMax. + * To avoid the failure of fread, we don't check desMax limit. + */ +#define SECUREC_MEMCPY_PARAM_OK(dest, destMax, src, count) (SECUREC_LIKELY((count) <= (destMax) && \ + (dest) != NULL && (src) != NULL && \ + (count) > 0 && SECUREC_MEMORY_NO_OVERLAP((dest), (src), (count)))) +#else +#define SECUREC_MEMCPY_PARAM_OK(dest, destMax, src, count) (SECUREC_LIKELY((count) <= (destMax) && \ + (dest) != NULL && (src) != NULL && (destMax) <= SECUREC_MEM_MAX_LEN && \ + (count) > 0 && SECUREC_MEMORY_NO_OVERLAP((dest), (src), (count)))) +#endif + +/* + * + * The memcpy_s function copies n characters from the object pointed to by src into the object pointed to by dest + * + * + * dest Destination buffer. + * destMax Size of the destination buffer. + * src Buffer to copy from. + * count Number of characters to copy + * + * + * dest buffer is updated. + * + * + * EOK Success + * EINVAL dest is NULL and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN + * EINVAL_AND_RESET dest != NULL and src is NULLL and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN + * ERANGE destMax > SECUREC_MEM_MAX_LEN or destMax is 0 + * ERANGE_AND_RESET count > destMax and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN + * and dest != NULL and src != NULL + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and + * count <= destMax destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN and dest != NULL + * and src != NULL and dest != src + * + * if an error occured, dest will be filled with 0. + * If the source and destination overlap, the behavior of memcpy_s is undefined. + * Use memmove_s to handle overlapping regions. + */ +errno_t memcpy_s(void *dest, size_t destMax, const void *src, size_t count) +{ + if (SECUREC_MEMCPY_PARAM_OK(dest, destMax, src, count)) { +#if SECUREC_MEMCOPY_WITH_PERFORMANCE + SECUREC_MEMCPY_OPT(dest, src, count); +#else + SECUREC_MEMCPY_WARP_OPT(dest, src, count); +#endif + return EOK; + } + /* Meet some runtime violation, return error code */ + return SecMemcpyError(dest, destMax, src, count); +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(memcpy_s); +#endif + +#if SECUREC_WITH_PERFORMANCE_ADDONS +/* + * Performance optimization + */ +errno_t memcpy_sOptAsm(void *dest, size_t destMax, const void *src, size_t count) +{ + if (SECUREC_MEMCPY_PARAM_OK(dest, destMax, src, count)) { + SECUREC_MEMCPY_OPT(dest, src, count); + return EOK; + } + /* Meet some runtime violation, return error code */ + return SecMemcpyError(dest, destMax, src, count); +} + +/* Trim judgement on "destMax <= SECUREC_MEM_MAX_LEN" */ +errno_t memcpy_sOptTc(void *dest, size_t destMax, const void *src, size_t count) +{ + if (SECUREC_LIKELY(count <= destMax && dest != NULL && src != NULL && \ + count > 0 && SECUREC_MEMORY_NO_OVERLAP((dest), (src), (count)))) { + SECUREC_MEMCPY_OPT(dest, src, count); + return EOK; + } + /* Meet some runtime violation, return error code */ + return SecMemcpyError(dest, destMax, src, count); +} +#endif + diff --git a/third_party/bounds_checking_function/src/memmove_s.c b/third_party/bounds_checking_function/src/memmove_s.c new file mode 100644 index 0000000..417df88 --- /dev/null +++ b/third_party/bounds_checking_function/src/memmove_s.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: memmove_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +#ifdef SECUREC_NOT_CALL_LIBC_CORE_API +/* + * Implementing memory data movement + */ +SECUREC_INLINE void SecUtilMemmove(void *dst, const void *src, size_t count) +{ + unsigned char *pDest = (unsigned char *)dst; + const unsigned char *pSrc = (const unsigned char *)src; + size_t maxCount = count; + + if (dst <= src || pDest >= (pSrc + maxCount)) { + /* + * Non-Overlapping Buffers + * Copy from lower addresses to higher addresses + */ + while (maxCount > 0) { + --maxCount; + *pDest = *pSrc; + ++pDest; + ++pSrc; + } + } else { + /* + * Overlapping Buffers + * Copy from higher addresses to lower addresses + */ + pDest = pDest + maxCount - 1; + pSrc = pSrc + maxCount - 1; + while (maxCount > 0) { + --maxCount; + *pDest = *pSrc; + --pDest; + --pSrc; + } + } +} +#endif + +/* + * + * The memmove_s function copies count bytes of characters from src to dest. + * This function can be assigned correctly when memory overlaps. + * + * dest Destination object. + * destMax Size of the destination buffer. + * src Source object. + * count Number of characters to copy. + * + * + * dest buffer is uptdated. + * + * + * EOK Success + * EINVAL dest is NULL and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN + * EINVAL_AND_RESET dest != NULL and src is NULLL and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN + * ERANGE destMax > SECUREC_MEM_MAX_LEN or destMax is 0 + * ERANGE_AND_RESET count > destMax and dest != NULL and src != NULL and destMax != 0 + * and destMax <= SECUREC_MEM_MAX_LEN + * + * If an error occured, dest will be filled with 0 when dest and destMax valid. + * If some regions of the source area and the destination overlap, memmove_s + * ensures that the original source bytes in the overlapping region are copied + * before being overwritten. + */ +errno_t memmove_s(void *dest, size_t destMax, const void *src, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_MEM_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("memmove_s"); + return ERANGE; + } + if (dest == NULL || src == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("memmove_s"); + if (dest != NULL) { + (void)memset(dest, 0, destMax); + return EINVAL_AND_RESET; + } + return EINVAL; + } + if (count > destMax) { + (void)memset(dest, 0, destMax); + SECUREC_ERROR_INVALID_RANGE("memmove_s"); + return ERANGE_AND_RESET; + } + if (dest == src) { + return EOK; + } + + if (count > 0) { +#ifdef SECUREC_NOT_CALL_LIBC_CORE_API + SecUtilMemmove(dest, src, count); +#else + /* Use underlying memmove for performance consideration */ + (void)memmove(dest, src, count); +#endif + } + return EOK; +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(memmove_s); +#endif + diff --git a/third_party/bounds_checking_function/src/memset_s.c b/third_party/bounds_checking_function/src/memset_s.c new file mode 100644 index 0000000..fc0cdbe --- /dev/null +++ b/third_party/bounds_checking_function/src/memset_s.c @@ -0,0 +1,509 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: memset_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +#define SECUREC_MEMSET_PARAM_OK(dest, destMax, count) (SECUREC_LIKELY((destMax) <= SECUREC_MEM_MAX_LEN && \ + (dest) != NULL && (count) <= (destMax))) + +#if SECUREC_WITH_PERFORMANCE_ADDONS + +/* Use union to clear strict-aliasing warning */ +typedef union { + SecStrBuf32 buf32; + SecStrBuf31 buf31; + SecStrBuf30 buf30; + SecStrBuf29 buf29; + SecStrBuf28 buf28; + SecStrBuf27 buf27; + SecStrBuf26 buf26; + SecStrBuf25 buf25; + SecStrBuf24 buf24; + SecStrBuf23 buf23; + SecStrBuf22 buf22; + SecStrBuf21 buf21; + SecStrBuf20 buf20; + SecStrBuf19 buf19; + SecStrBuf18 buf18; + SecStrBuf17 buf17; + SecStrBuf16 buf16; + SecStrBuf15 buf15; + SecStrBuf14 buf14; + SecStrBuf13 buf13; + SecStrBuf12 buf12; + SecStrBuf11 buf11; + SecStrBuf10 buf10; + SecStrBuf9 buf9; + SecStrBuf8 buf8; + SecStrBuf7 buf7; + SecStrBuf6 buf6; + SecStrBuf5 buf5; + SecStrBuf4 buf4; + SecStrBuf3 buf3; + SecStrBuf2 buf2; +} SecStrBuf32Union; +/* C standard initializes the first member of the consortium. */ +static const SecStrBuf32 g_allZero = {{ + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' +}}; +static const SecStrBuf32 g_allFF = {{ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}}; + +/* Clear coversion warning strict aliasing" */ +SECUREC_INLINE const SecStrBuf32Union *SecStrictAliasingCast(const SecStrBuf32 *buf) +{ + return (const SecStrBuf32Union *)buf; +} + +#ifndef SECUREC_MEMSET_THRESHOLD_SIZE +#define SECUREC_MEMSET_THRESHOLD_SIZE 32UL +#endif + +#define SECUREC_UNALIGNED_SET(dest, c, count) do { \ + unsigned char *pDest_ = (unsigned char *)(dest); \ + switch (count) { \ + case 32: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 31: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 30: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 29: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 28: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 27: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 26: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 25: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 24: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 23: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 22: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 21: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 20: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 19: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 18: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 17: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 16: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 15: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 14: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 13: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 12: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 11: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 10: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 9: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 8: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 7: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 6: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 5: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 4: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 3: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 2: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + case 1: \ + *(pDest_++) = (unsigned char)(c); \ + /* fall-through */ /* FALLTHRU */ \ + default: \ + /* Do nothing */ \ + break; \ + } \ +} SECUREC_WHILE_ZERO + +#define SECUREC_SET_VALUE_BY_STRUCT(dest, dataName, n) do { \ + *(SecStrBuf##n *)(dest) = *(const SecStrBuf##n *)(&((SecStrictAliasingCast(&(dataName)))->buf##n)); \ +} SECUREC_WHILE_ZERO + +#define SECUREC_ALIGNED_SET_OPT_ZERO_FF(dest, c, count) do { \ + switch (c) { \ + case 0: \ + switch (count) { \ + case 1: \ + *(unsigned char *)(dest) = (unsigned char)0; \ + break; \ + case 2: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 2); \ + break; \ + case 3: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 3); \ + break; \ + case 4: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 4); \ + break; \ + case 5: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 5); \ + break; \ + case 6: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 6); \ + break; \ + case 7: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 7); \ + break; \ + case 8: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 8); \ + break; \ + case 9: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 9); \ + break; \ + case 10: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 10); \ + break; \ + case 11: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 11); \ + break; \ + case 12: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 12); \ + break; \ + case 13: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 13); \ + break; \ + case 14: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 14); \ + break; \ + case 15: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 15); \ + break; \ + case 16: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 16); \ + break; \ + case 17: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 17); \ + break; \ + case 18: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 18); \ + break; \ + case 19: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 19); \ + break; \ + case 20: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 20); \ + break; \ + case 21: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 21); \ + break; \ + case 22: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 22); \ + break; \ + case 23: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 23); \ + break; \ + case 24: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 24); \ + break; \ + case 25: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 25); \ + break; \ + case 26: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 26); \ + break; \ + case 27: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 27); \ + break; \ + case 28: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 28); \ + break; \ + case 29: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 29); \ + break; \ + case 30: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 30); \ + break; \ + case 31: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 31); \ + break; \ + case 32: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allZero, 32); \ + break; \ + default: \ + /* Do nothing */ \ + break; \ + } \ + break; \ + case 0xFF: \ + switch (count) { \ + case 1: \ + *(unsigned char *)(dest) = (unsigned char)0xffU; \ + break; \ + case 2: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 2); \ + break; \ + case 3: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 3); \ + break; \ + case 4: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 4); \ + break; \ + case 5: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 5); \ + break; \ + case 6: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 6); \ + break; \ + case 7: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 7); \ + break; \ + case 8: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 8); \ + break; \ + case 9: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 9); \ + break; \ + case 10: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 10); \ + break; \ + case 11: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 11); \ + break; \ + case 12: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 12); \ + break; \ + case 13: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 13); \ + break; \ + case 14: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 14); \ + break; \ + case 15: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 15); \ + break; \ + case 16: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 16); \ + break; \ + case 17: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 17); \ + break; \ + case 18: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 18); \ + break; \ + case 19: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 19); \ + break; \ + case 20: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 20); \ + break; \ + case 21: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 21); \ + break; \ + case 22: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 22); \ + break; \ + case 23: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 23); \ + break; \ + case 24: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 24); \ + break; \ + case 25: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 25); \ + break; \ + case 26: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 26); \ + break; \ + case 27: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 27); \ + break; \ + case 28: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 28); \ + break; \ + case 29: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 29); \ + break; \ + case 30: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 30); \ + break; \ + case 31: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 31); \ + break; \ + case 32: \ + SECUREC_SET_VALUE_BY_STRUCT((dest), g_allFF, 32); \ + break; \ + default: \ + /* Do nothing */ \ + break; \ + } \ + break; \ + default: \ + SECUREC_UNALIGNED_SET((dest), (c), (count)); \ + break; \ + } /* END switch */ \ +} SECUREC_WHILE_ZERO + +#define SECUREC_SMALL_MEM_SET(dest, c, count) do { \ + if (SECUREC_ADDR_ALIGNED_8((dest))) { \ + SECUREC_ALIGNED_SET_OPT_ZERO_FF((dest), (c), (count)); \ + } else { \ + SECUREC_UNALIGNED_SET((dest), (c), (count)); \ + } \ +} SECUREC_WHILE_ZERO + +/* + * Performance optimization + */ +#define SECUREC_MEMSET_OPT(dest, c, count) do { \ + if ((count) > SECUREC_MEMSET_THRESHOLD_SIZE) { \ + SECUREC_MEMSET_WARP_OPT((dest), (c), (count)); \ + } else { \ + SECUREC_SMALL_MEM_SET((dest), (c), (count)); \ + } \ +} SECUREC_WHILE_ZERO +#endif + +/* + * Handling errors + */ +SECUREC_INLINE errno_t SecMemsetError(void *dest, size_t destMax, int c, size_t count) +{ + /* Check destMax is 0 compatible with _sp macro */ + if (destMax == 0 || destMax > SECUREC_MEM_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("memset_s"); + return ERANGE; + } + if (dest == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("memset_s"); + return EINVAL; + } + if (count > destMax) { + (void)memset(dest, c, destMax); /* Set entire buffer to value c */ + SECUREC_ERROR_INVALID_RANGE("memset_s"); + return ERANGE_AND_RESET; + } + return EOK; +} + +/* + * + * The memset_s function copies the value of c (converted to an unsigned char) + * into each of the first count characters of the object pointed to by dest. + * + * + * dest Pointer to destination. + * destMax The size of the buffer. + * c Character to set. + * count Number of characters. + * + * + * dest buffer is uptdated. + * + * + * EOK Success + * EINVAL dest == NULL and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN + * ERANGE destMax > SECUREC_MEM_MAX_LEN or (destMax is 0 and count > destMax) + * ERANGE_AND_RESET count > destMax and destMax != 0 and destMax <= SECUREC_MEM_MAX_LEN and dest != NULL + * + * if return ERANGE_AND_RESET then fill dest to c ,fill length is destMax + */ +errno_t memset_s(void *dest, size_t destMax, int c, size_t count) +{ + if (SECUREC_MEMSET_PARAM_OK(dest, destMax, count)) { + SECUREC_MEMSET_WARP_OPT(dest, c, count); + return EOK; + } + /* Meet some runtime violation, return error code */ + return SecMemsetError(dest, destMax, c, count); +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(memset_s); +#endif + +#if SECUREC_WITH_PERFORMANCE_ADDONS +/* + * Performance optimization + */ +errno_t memset_sOptAsm(void *dest, size_t destMax, int c, size_t count) +{ + if (SECUREC_MEMSET_PARAM_OK(dest, destMax, count)) { + SECUREC_MEMSET_OPT(dest, c, count); + return EOK; + } + /* Meet some runtime violation, return error code */ + return SecMemsetError(dest, destMax, c, count); +} + +/* + * Performance optimization, trim judgement on "destMax <= SECUREC_MEM_MAX_LEN" + */ +errno_t memset_sOptTc(void *dest, size_t destMax, int c, size_t count) +{ + if (SECUREC_LIKELY(count <= destMax && dest != NULL)) { + SECUREC_MEMSET_OPT(dest, c, count); + return EOK; + } + /* Meet some runtime violation, return error code */ + return SecMemsetError(dest, destMax, c, count); +} +#endif + diff --git a/third_party/bounds_checking_function/src/output.inl b/third_party/bounds_checking_function/src/output.inl new file mode 100644 index 0000000..20dd4b3 --- /dev/null +++ b/third_party/bounds_checking_function/src/output.inl @@ -0,0 +1,1668 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Used by secureprintoutput_a.c and secureprintoutput_w.c to include. + * This file provides a template function for ANSI and UNICODE compiling + * by different type definition. The functions of SecOutputS or + * SecOutputSW provides internal implementation for printf family API, such as sprintf, swprintf_s. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef OUTPUT_INL_2B263E9C_43D8_44BB_B17A_6D2033DECEE5 +#define OUTPUT_INL_2B263E9C_43D8_44BB_B17A_6D2033DECEE5 + +#ifndef SECUREC_ENABLE_SPRINTF_LONG_DOUBLE +/* Some compilers do not support long double */ +#define SECUREC_ENABLE_SPRINTF_LONG_DOUBLE 1 +#endif + +#define SECUREC_NULL_STRING_SIZE 8 +#define SECUREC_STATE_TABLE_SIZE 337 + +#if defined(SECUREC_VXWORKS_VERSION_5_4) && !defined(SECUREC_ON_64BITS) +#define SECUREC_DIV_QUOTIENT_OCTAL(val64) ((val64) >> 3ULL) +#define SECUREC_DIV_RESIDUE_OCTAL(val64) ((val64) & 7ULL) + +#define SECUREC_DIV_QUOTIENT_HEX(val64) ((val64) >> 4ULL) +#define SECUREC_DIV_RESIDUE_HEX(val64) ((val64) & 0xfULL) +#endif + +#define SECUREC_RADIX_OCTAL 8U +#define SECUREC_RADIX_DECIMAL 10U +#define SECUREC_RADIX_HEX 16U +#define SECUREC_PREFIX_LEN 2 +/* Size include '+' and '\0' */ +#define SECUREC_FLOAT_BUF_EXT 2 + +/* Sign extend or Zero-extend */ +#define SECUREC_GET_LONG_FROM_ARG(attr) ((((attr).flags & SECUREC_FLAG_SIGNED) != 0) ? \ + (SecInt64)(long)va_arg(argList, long) : \ + (SecInt64)(unsigned long)va_arg(argList, long)) + +/* Sign extend or Zero-extend */ +#define SECUREC_GET_CHAR_FROM_ARG(attr) ((((attr).flags & SECUREC_FLAG_SIGNED) != 0) ? \ + SecUpdateNegativeChar(&(attr), ((char)va_arg(argList, int))) : \ + (SecInt64)(unsigned char)va_arg(argList, int)) + +/* Sign extend or Zero-extend */ +#define SECUREC_GET_SHORT_FROM_ARG(attr) ((((attr).flags & SECUREC_FLAG_SIGNED) != 0) ? \ + (SecInt64)(short)va_arg(argList, int) : \ + (SecInt64)(unsigned short)va_arg(argList, int)) + +/* Sign extend or Zero-extend */ +#define SECUREC_GET_INT_FROM_ARG(attr) ((((attr).flags & SECUREC_FLAG_SIGNED) != 0) ? \ + (SecInt64)(int)va_arg(argList, int) : \ + (SecInt64)(unsigned int)va_arg(argList, int)) + +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT +/* Sign extend or Zero-extend. No suitable macros were found to handle the branch */ +#define SECUREC_GET_SIZE_FROM_ARG(attr) ((((attr).flags & SECUREC_FLAG_SIGNED) != 0) ? \ + ((SecIsSameSize(sizeof(size_t), sizeof(long)) != 0) ? (SecInt64)(long)va_arg(argList, long) : \ + ((SecIsSameSize(sizeof(size_t), sizeof(long long)) != 0) ? (SecInt64)(long long)va_arg(argList, long long) : \ + (SecInt64)(int)va_arg(argList, int))) : \ + (SecInt64)(size_t)va_arg(argList, size_t)) +#endif + +typedef union { + /* Integer formatting refers to the end of the buffer, plus 1 to prevent tool alarms */ + char str[SECUREC_BUFFER_SIZE + 1]; +#if SECUREC_HAVE_WCHART + wchar_t wStr[SECUREC_WCHAR_BUFFER_SIZE]; /* Just for %lc */ +#endif +} SecBuffer; + +typedef union { + char *str; /* Not a null terminated string */ +#if SECUREC_HAVE_WCHART + wchar_t *wStr; +#endif +} SecFormatBuf; + +typedef struct { + const char *digits; /* Point to the hexadecimal subset */ + SecFormatBuf text; /* Point to formated string */ + int textLen; /* Length of the text */ + int textIsWide; /* Flag for text is wide chars ; 0 is not wide char */ + unsigned int radix; /* Use for output number , default set to 10 */ + unsigned int flags; + int fldWidth; + int precision; + int dynWidth; /* %* 1 width from variable parameter ;0 not */ + int dynPrecision; /* %.* 1 precision from variable parameter ;0 not */ + int padding; /* Padding len */ + int prefixLen; /* Length of prefix, 0 or 1 or 2 */ + SecChar prefix[SECUREC_PREFIX_LEN]; /* Prefix is 0 or 0x */ + SecBuffer buffer; +} SecFormatAttr; + +#if SECUREC_ENABLE_SPRINTF_FLOAT +#ifdef SECUREC_STACK_SIZE_LESS_THAN_1K +#define SECUREC_FMT_STR_LEN 8 +#else +#define SECUREC_FMT_STR_LEN 16 +#endif +typedef struct { + char buffer[SECUREC_FMT_STR_LEN]; + char *fmtStr; /* Initialization must point to buffer */ + char *allocatedFmtStr; /* Initialization must be NULL to store alloced point */ + char *floatBuffer; /* Use heap memory if the SecFormatAttr.buffer is not enough */ + int bufferSize; /* The size of floatBuffer */ +} SecFloatAdapt; +#endif + +/* Use 20 to Align the data */ +#define SECUREC_DIGITS_BUF_SIZE 20 +/* Some systems can not use pointers to point to string literals, but can use string arrays. */ +/* For example, when handling code under uboot, there is a problem with the pointer */ +static const char g_itoaUpperDigits[SECUREC_DIGITS_BUF_SIZE] = "0123456789ABCDEFX"; +static const char g_itoaLowerDigits[SECUREC_DIGITS_BUF_SIZE] = "0123456789abcdefx"; + +#if SECUREC_ENABLE_SPRINTF_FLOAT +/* Call system sprintf to format float value */ +SECUREC_INLINE int SecFormatFloat(char *strDest, const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + SECUREC_MASK_MSVC_CRT_WARNING + ret = vsprintf(strDest, format, argList); + SECUREC_END_MASK_MSVC_CRT_WARNING + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + +#if defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && SECUREC_ENABLE_SPRINTF_LONG_DOUBLE +/* Out put long double value to dest */ +SECUREC_INLINE void SecFormatLongDouble(SecFormatAttr *attr, const SecFloatAdapt *floatAdapt, long double ldValue) +{ + int fldWidth = (((attr->flags & SECUREC_FLAG_LEFT) != 0) ? (-attr->fldWidth) : attr->fldWidth); + if (attr->dynWidth != 0 && attr->dynPrecision != 0) { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, fldWidth, attr->precision, ldValue); + } else if (attr->dynWidth != 0) { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, fldWidth, ldValue); + } else if (attr->dynPrecision != 0) { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, attr->precision, ldValue); + } else { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, ldValue); + } + if (attr->textLen < 0 || attr->textLen >= floatAdapt->bufferSize) { + attr->textLen = 0; + } +} +#endif + +/* Out put double value to dest */ +SECUREC_INLINE void SecFormatDouble(SecFormatAttr *attr, const SecFloatAdapt *floatAdapt, double dValue) +{ + int fldWidth = (((attr->flags & SECUREC_FLAG_LEFT) != 0) ? (-attr->fldWidth) : attr->fldWidth); + if (attr->dynWidth != 0 && attr->dynPrecision != 0) { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, fldWidth, attr->precision, dValue); + } else if (attr->dynWidth != 0) { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, fldWidth, dValue); + } else if (attr->dynPrecision != 0) { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, attr->precision, dValue); + } else { + attr->textLen = SecFormatFloat(attr->text.str, floatAdapt->fmtStr, dValue); + } + if (attr->textLen < 0 || attr->textLen >= floatAdapt->bufferSize) { + attr->textLen = 0; + } +} +#endif + +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT +/* To clear e506 warning */ +SECUREC_INLINE int SecIsSameSize(size_t sizeA, size_t sizeB) +{ + return (int)(sizeA == sizeB); +} +#endif + +#ifndef SECUREC_ON_64BITS +/* + * Compiler Optimized Division 8. + * The text.str point to buffer end, must be Large enough + */ +SECUREC_INLINE void SecNumber32ToOctalString(SecUnsignedInt32 number, SecFormatAttr *attr) +{ + SecUnsignedInt32 val32 = number; + do { + --attr->text.str; + /* Just use lowerDigits for 0 - 9 */ + *(attr->text.str) = g_itoaLowerDigits[val32 % SECUREC_RADIX_OCTAL]; + val32 /= SECUREC_RADIX_OCTAL; + } while (val32 != 0); +} + +#ifdef _AIX +/* + * Compiler Optimized Division 10. + * The text.str point to buffer end, must be Large enough + */ +SECUREC_INLINE void SecNumber32ToDecString(SecUnsignedInt32 number, SecFormatAttr *attr) +{ + SecUnsignedInt32 val32 = number; + do { + --attr->text.str; + /* Just use lowerDigits for 0 - 9 */ + *(attr->text.str) = g_itoaLowerDigits[val32 % SECUREC_RADIX_DECIMAL]; + val32 /= SECUREC_RADIX_DECIMAL; + } while (val32 != 0); +} +#endif +/* + * Compiler Optimized Division 16. + * The text.str point to buffer end, must be Large enough + */ +SECUREC_INLINE void SecNumber32ToHexString(SecUnsignedInt32 number, SecFormatAttr *attr) +{ + SecUnsignedInt32 val32 = number; + do { + --attr->text.str; + *(attr->text.str) = attr->digits[val32 % SECUREC_RADIX_HEX]; + val32 /= SECUREC_RADIX_HEX; + } while (val32 != 0); +} + +#ifndef _AIX +/* Use fast div 10 */ +SECUREC_INLINE void SecNumber32ToDecStringFast(SecUnsignedInt32 number, SecFormatAttr *attr) +{ + SecUnsignedInt32 val32 = number; + do { + SecUnsignedInt32 quotient; + SecUnsignedInt32 remain; + --attr->text.str; + *(attr->text.str) = g_itoaLowerDigits[val32 % SECUREC_RADIX_DECIMAL]; + quotient = (val32 >> 1U) + (val32 >> 2U); /* Fast div magic 2 */ + quotient = quotient + (quotient >> 4U); /* Fast div magic 4 */ + quotient = quotient + (quotient >> 8U); /* Fast div magic 8 */ + quotient = quotient + (quotient >> 16U); /* Fast div magic 16 */ + quotient = quotient >> 3U; /* Fast div magic 3 */ + remain = val32 - SECUREC_MUL_TEN(quotient); + val32 = (remain > 9U) ? (quotient + 1U) : quotient; /* Fast div magic 9 */ + } while (val32 != 0); +} +#endif + +SECUREC_INLINE void SecNumber32ToString(SecUnsignedInt32 number, SecFormatAttr *attr) +{ + switch (attr->radix) { + case SECUREC_RADIX_HEX: + SecNumber32ToHexString(number, attr); + break; + case SECUREC_RADIX_OCTAL: + SecNumber32ToOctalString(number, attr); + break; + case SECUREC_RADIX_DECIMAL: +#ifdef _AIX + /* The compiler will optimize div 10 */ + SecNumber32ToDecString(number, attr); +#else + SecNumber32ToDecStringFast(number, attr); +#endif + break; + default: + /* Do nothing */ + break; + } +} +#endif + +#if defined(SECUREC_USE_SPECIAL_DIV64) || (defined(SECUREC_VXWORKS_VERSION_5_4) && !defined(SECUREC_ON_64BITS)) +/* + * This function just to clear warning, on sume vxworks compiler shift 32 bit make warnigs + */ +SECUREC_INLINE SecUnsignedInt64 SecU64Shr32(SecUnsignedInt64 number) +{ + return (((number) >> 16U) >> 16U); /* Two shifts of 16 bits to realize shifts of 32 bits */ +} +/* + * Fast divide by 10 algorithm. + * Calculation divisor multiply 0xcccccccccccccccdULL, resultHi64 >> 3 as quotient + */ +SECUREC_INLINE void SecU64Div10(SecUnsignedInt64 divisor, SecUnsignedInt64 *quotient, SecUnsignedInt32 *residue) +{ + SecUnsignedInt64 mask = 0xffffffffULL; /* Use 0xffffffffULL as 32 bit mask */ + SecUnsignedInt64 magicHi = 0xccccccccULL; /* Fast divide 10 magic numbers high 32bit 0xccccccccULL */ + SecUnsignedInt64 magicLow = 0xcccccccdULL; /* Fast divide 10 magic numbers low 32bit 0xcccccccdULL */ + SecUnsignedInt64 divisorHi = (SecUnsignedInt64)(SecU64Shr32(divisor)); /* High 32 bit use */ + SecUnsignedInt64 divisorLow = (SecUnsignedInt64)(divisor & mask); /* Low 32 bit mask */ + SecUnsignedInt64 factorHi = divisorHi * magicHi; + SecUnsignedInt64 factorLow1 = divisorHi * magicLow; + SecUnsignedInt64 factorLow2 = divisorLow * magicHi; + SecUnsignedInt64 factorLow3 = divisorLow * magicLow; + SecUnsignedInt64 carry = (factorLow1 & mask) + (factorLow2 & mask) + SecU64Shr32(factorLow3); + SecUnsignedInt64 resultHi64 = factorHi + SecU64Shr32(factorLow1) + SecU64Shr32(factorLow2) + SecU64Shr32(carry); + + *quotient = resultHi64 >> 3U; /* Fast divide 10 magic numbers 3 */ + *residue = (SecUnsignedInt32)(divisor - ((*quotient) * 10)); /* Quotient mul 10 */ + return; +} +#if defined(SECUREC_VXWORKS_VERSION_5_4) && !defined(SECUREC_ON_64BITS) +/* + * Divide function for VXWORKS + */ +SECUREC_INLINE int SecU64Div32(SecUnsignedInt64 divisor, SecUnsignedInt32 radix, + SecUnsignedInt64 *quotient, SecUnsignedInt32 *residue) +{ + switch (radix) { + case SECUREC_RADIX_DECIMAL: + SecU64Div10(divisor, quotient, residue); + break; + case SECUREC_RADIX_HEX: + *quotient = SECUREC_DIV_QUOTIENT_HEX(divisor); + *residue = (SecUnsignedInt32)SECUREC_DIV_RESIDUE_HEX(divisor); + break; + case SECUREC_RADIX_OCTAL: + *quotient = SECUREC_DIV_QUOTIENT_OCTAL(divisor); + *residue = (SecUnsignedInt32)SECUREC_DIV_RESIDUE_OCTAL(divisor); + break; + default: + return -1; /* This does not happen in the current file */ + } + return 0; +} +SECUREC_INLINE void SecNumber64ToStringSpecial(SecUnsignedInt64 number, SecFormatAttr *attr) +{ + SecUnsignedInt64 val64 = number; + do { + SecUnsignedInt32 digit = 0; /* Ascii value of digit */ + SecUnsignedInt64 quotient = 0; + if (SecU64Div32(val64, (SecUnsignedInt32)attr->radix, "ient, &digit) != 0) { + /* Just break, when enter this function, no error is returned */ + break; + } + --attr->text.str; + *(attr->text.str) = attr->digits[digit]; + val64 = quotient; + } while (val64 != 0); +} +#endif +#endif + +#if defined(SECUREC_ON_64BITS) || !defined(SECUREC_VXWORKS_VERSION_5_4) +#if defined(SECUREC_USE_SPECIAL_DIV64) +/* The compiler does not provide 64 bit division problems */ +SECUREC_INLINE void SecNumber64ToDecString(SecUnsignedInt64 number, SecFormatAttr *attr) +{ + SecUnsignedInt64 val64 = number; + do { + SecUnsignedInt64 quotient = 0; + SecUnsignedInt32 digit = 0; + SecU64Div10(val64, "ient, &digit); + --attr->text.str; + /* Just use lowerDigits for 0 - 9 */ + *(attr->text.str) = g_itoaLowerDigits[digit]; + val64 = quotient; + } while (val64 != 0); +} +#else +/* + * Compiler Optimized Division 10. + * The text.str point to buffer end, must be Large enough + */ +SECUREC_INLINE void SecNumber64ToDecString(SecUnsignedInt64 number, SecFormatAttr *attr) +{ + SecUnsignedInt64 val64 = number; + do { + --attr->text.str; + /* Just use lowerDigits for 0 - 9 */ + *(attr->text.str) = g_itoaLowerDigits[val64 % SECUREC_RADIX_DECIMAL]; + val64 /= SECUREC_RADIX_DECIMAL; + } while (val64 != 0); +} +#endif + +/* + * Compiler Optimized Division 8. + * The text.str point to buffer end, must be Large enough + */ +SECUREC_INLINE void SecNumber64ToOctalString(SecUnsignedInt64 number, SecFormatAttr *attr) +{ + SecUnsignedInt64 val64 = number; + do { + --attr->text.str; + /* Just use lowerDigits for 0 - 9 */ + *(attr->text.str) = g_itoaLowerDigits[val64 % SECUREC_RADIX_OCTAL]; + val64 /= SECUREC_RADIX_OCTAL; + } while (val64 != 0); +} +/* + * Compiler Optimized Division 16. + * The text.str point to buffer end, must be Large enough + */ +SECUREC_INLINE void SecNumber64ToHexString(SecUnsignedInt64 number, SecFormatAttr *attr) +{ + SecUnsignedInt64 val64 = number; + do { + --attr->text.str; + *(attr->text.str) = attr->digits[val64 % SECUREC_RADIX_HEX]; + val64 /= SECUREC_RADIX_HEX; + } while (val64 != 0); +} + +SECUREC_INLINE void SecNumber64ToString(SecUnsignedInt64 number, SecFormatAttr *attr) +{ + switch (attr->radix) { + /* The compiler will optimize div 10 */ + case SECUREC_RADIX_DECIMAL: + SecNumber64ToDecString(number, attr); + break; + case SECUREC_RADIX_OCTAL: + SecNumber64ToOctalString(number, attr); + break; + case SECUREC_RADIX_HEX: + SecNumber64ToHexString(number, attr); + break; + default: + /* Do nothing */ + break; + } +} +#endif + +/* + * Converting integers to string + */ +SECUREC_INLINE void SecNumberToString(SecUnsignedInt64 number, SecFormatAttr *attr) +{ +#ifdef SECUREC_ON_64BITS + SecNumber64ToString(number, attr); +#else /* For 32 bits system */ + if (number <= 0xffffffffUL) { /* Use 0xffffffffUL to check if the value is in the 32-bit range */ + /* In most case, the value to be converted is small value */ + SecUnsignedInt32 n32Tmp = (SecUnsignedInt32)number; + SecNumber32ToString(n32Tmp, attr); + } else { + /* The value to be converted is greater than 4G */ +#if defined(SECUREC_VXWORKS_VERSION_5_4) + SecNumber64ToStringSpecial(number, attr); +#else + SecNumber64ToString(number, attr); +#endif + } +#endif +} + +SECUREC_INLINE int SecIsNumberNeedTo32Bit(const SecFormatAttr *attr) +{ + return (int)(((attr->flags & SECUREC_FLAG_I64) == 0) && +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT + ((attr->flags & SECUREC_FLAG_INTMAX) == 0) && +#endif +#ifdef SECUREC_ON_64BITS + ((attr->flags & SECUREC_FLAG_PTRDIFF) == 0) && + ((attr->flags & SECUREC_FLAG_SIZE) == 0) && +#if !defined(SECUREC_COMPATIBLE_WIN_FORMAT) /* on window 64 system sizeof long is 32bit */ + ((attr->flags & SECUREC_FLAG_LONG) == 0) && +#endif +#endif + ((attr->flags & SECUREC_FLAG_LONGLONG) == 0)); +} + +SECUREC_INLINE void SecNumberToBuffer(SecFormatAttr *attr, SecInt64 num64) +{ + SecUnsignedInt64 number; + /* Check for negative; copy into number */ + if ((attr->flags & SECUREC_FLAG_SIGNED) != 0 && num64 < 0) { + number = (SecUnsignedInt64)(0 - (SecUnsignedInt64)num64); /* Wrap with unsigned int64 numbers */ + attr->flags |= SECUREC_FLAG_NEGATIVE; + } else { + number = (SecUnsignedInt64)num64; + } + if (SecIsNumberNeedTo32Bit(attr) != 0) { + number = (number & (SecUnsignedInt64)0xffffffffUL); /* Use 0xffffffff as 32 bit mask */ + } + + /* The text.str must be point to buffer.str, this pointer is used outside the function */ + attr->text.str = &attr->buffer.str[SECUREC_BUFFER_SIZE]; + + if (number == 0) { + /* Turn off hex prefix default, and textLen is zero */ + attr->prefixLen = 0; + attr->textLen = 0; + return; + } + + /* Convert integer to string. It must be invoked when number > 0, otherwise the following logic is incorrect */ + SecNumberToString(number, attr); + /* Compute length of number, text.str must be in buffer.str */ + attr->textLen = (int)(size_t)((char *)&attr->buffer.str[SECUREC_BUFFER_SIZE] - attr->text.str); +} + +/* Use loop copy char or wchar_t string */ +SECUREC_INLINE void SecWriteStringToStreamOpt(SecPrintfStream *stream, const SecChar *str, int len) +{ + int i; + const SecChar *tmp = str; + for (i = 0; i < len; ++i) { + *((SecChar *)(void *)(stream->cur)) = *(const SecChar *)(tmp); + stream->cur += sizeof(SecChar); + tmp = tmp + 1; + } + stream->count -= len * (int)(sizeof(SecChar)); +} + +SECUREC_INLINE void SecWriteStringToStream(SecPrintfStream *stream, const SecChar *str, int len) +{ + if (len < 12) { /* Performance optimization for mobile number length 12 */ + SecWriteStringToStreamOpt(stream, str, len); + } else { + size_t count = (size_t)(unsigned int)len * (sizeof(SecChar)); + SECUREC_MEMCPY_WARP_OPT(stream->cur, str, count); + stream->cur += (size_t)((size_t)(unsigned int)len * (sizeof(SecChar))); + stream->count -= len * (int)(sizeof(SecChar)); + } +} + +/* + * Return if buffer length is enough + * The count variable can be reduced to 0, and the external function complements the \0 terminator. + */ +SECUREC_INLINE int SecIsStreamBufEnough(const SecPrintfStream *stream, int needLen) +{ + return ((int)(stream->count - (needLen * (int)(sizeof(SecChar)))) >= 0); +} + +#ifdef SECUREC_FOR_WCHAR +SECUREC_INLINE void SecWriteMultiCharW(wchar_t ch, int num, SecPrintfStream *f, int *pnumwritten); +SECUREC_INLINE void SecWriteStringW(const wchar_t *string, int len, SecPrintfStream *f, int *pnumwritten); +#define SECUREC_WRITE_MULTI_CHAR SecWriteMultiCharW +#define SECUREC_WRITE_STRING SecWriteStringW +#else +SECUREC_INLINE void SecWriteMultiChar(char ch, int num, SecPrintfStream *f, int *pnumwritten); +SECUREC_INLINE void SecWriteString(const char *string, int len, SecPrintfStream *f, int *pnumwritten); +#define SECUREC_WRITE_MULTI_CHAR SecWriteMultiChar +#define SECUREC_WRITE_STRING SecWriteString +#endif + +/* Write left padding */ +SECUREC_INLINE void SecWriteLeftPadding(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ + if ((attr->flags & (SECUREC_FLAG_LEFT | SECUREC_FLAG_LEADZERO)) == 0 && attr->padding > 0) { + /* Pad on left with blanks */ + SECUREC_WRITE_MULTI_CHAR(SECUREC_CHAR(' '), attr->padding, stream, charsOut); + } +} + +/* Write prefix */ +SECUREC_INLINE void SecWritePrefix(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ + if (attr->prefixLen > 0) { + if (SecIsStreamBufEnough(stream, attr->prefixLen) != 0) { + /* Max prefix len is 2, use loop copy */ + SecWriteStringToStreamOpt(stream, attr->prefix, attr->prefixLen); + *charsOut += attr->prefixLen; + } else { + SECUREC_WRITE_STRING(attr->prefix, attr->prefixLen, stream, charsOut); + } + } +} + +/* Write leading zeros */ +SECUREC_INLINE void SecWriteLeadingZero(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ + if ((attr->flags & SECUREC_FLAG_LEADZERO) != 0 && (attr->flags & SECUREC_FLAG_LEFT) == 0 && + attr->padding > 0) { + SECUREC_WRITE_MULTI_CHAR(SECUREC_CHAR('0'), attr->padding, stream, charsOut); + } +} + +/* Write right padding */ +SECUREC_INLINE void SecWriteRightPadding(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ + if (*charsOut >= 0 && (attr->flags & SECUREC_FLAG_LEFT) != 0 && attr->padding > 0) { + /* Pad on right with blanks */ + SECUREC_WRITE_MULTI_CHAR(SECUREC_CHAR(' '), attr->padding, stream, charsOut); + } +} + +/* Write text string */ +SECUREC_INLINE void SecWriteStringChk(SecPrintfStream *stream, const SecChar *str, int len, int *charsOut) +{ + if (SecIsStreamBufEnough(stream, len) != 0) { + SecWriteStringToStream(stream, str, len); + *charsOut += len; + } else { + SECUREC_WRITE_STRING(str, len, stream, charsOut); + } +} + +#ifdef SECUREC_FOR_WCHAR +#if SECUREC_HAVE_MBTOWC +SECUREC_INLINE void SecWriteTextAfterMbtowc(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ + const char *p = attr->text.str; + int count = attr->textLen; + while (count > 0) { + wchar_t wChar = L'\0'; + int retVal = mbtowc(&wChar, p, (size_t)MB_CUR_MAX); + if (retVal <= 0) { + *charsOut = -1; + break; + } + SecWriteCharW(wChar, stream, charsOut); + if (*charsOut == -1) { + break; + } + p += retVal; + count -= retVal; + } +} +#endif +#else /* Not SECUREC_FOR_WCHAR */ +#if SECUREC_HAVE_WCTOMB +SECUREC_INLINE void SecWriteTextAfterWctomb(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ + const wchar_t *p = attr->text.wStr; + int count = attr->textLen; + while (count > 0) { + char tmpBuf[SECUREC_MB_LEN + 1]; + SECUREC_MASK_MSVC_CRT_WARNING + int retVal = wctomb(tmpBuf, *p); + SECUREC_END_MASK_MSVC_CRT_WARNING + if (retVal <= 0) { + *charsOut = -1; + break; + } + SecWriteString(tmpBuf, retVal, stream, charsOut); + if (*charsOut == -1) { + break; + } + --count; + ++p; + } +} +#endif +#endif + +#if SECUREC_ENABLE_SPRINTF_FLOAT +/* + * Write text of float + * Using independent functions to optimize the expansion of inline functions by the compiler + */ +SECUREC_INLINE void SecWriteFloatText(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ +#ifdef SECUREC_FOR_WCHAR +#if SECUREC_HAVE_MBTOWC + SecWriteTextAfterMbtowc(stream, attr, charsOut); +#else + *charsOut = -1; + (void)stream; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + (void)attr; /* To clear e438 last value assigned not used , the compiler will optimize this code */ +#endif +#else /* Not SECUREC_FOR_WCHAR */ + SecWriteString(attr->text.str, attr->textLen, stream, charsOut); +#endif +} +#endif + +/* Write text of integer or string ... */ +SECUREC_INLINE void SecWriteText(SecPrintfStream *stream, const SecFormatAttr *attr, int *charsOut) +{ +#ifdef SECUREC_FOR_WCHAR + if (attr->textIsWide != 0) { + SecWriteStringChk(stream, attr->text.wStr, attr->textLen, charsOut); + } else { +#if SECUREC_HAVE_MBTOWC + SecWriteTextAfterMbtowc(stream, attr, charsOut); +#else + *charsOut = -1; +#endif + } + +#else /* Not SECUREC_FOR_WCHAR */ + if (attr->textIsWide != 0) { +#if SECUREC_HAVE_WCTOMB + SecWriteTextAfterWctomb(stream, attr, charsOut); +#else + *charsOut = -1; +#endif + } else { + SecWriteStringChk(stream, attr->text.str, attr->textLen, charsOut); + } +#endif +} + +#define SECUREC_FMT_STATE_OFFSET 256 + +SECUREC_INLINE SecFmtState SecDecodeState(SecChar ch, SecFmtState lastState) +{ + static const unsigned char stateTable[SECUREC_STATE_TABLE_SIZE] = { + /* + * Type + * 0: nospecial meanin; + * 1: '%' + * 2: '.' + * 3: '*' + * 4: '0' + * 5: '1' ... '9' + * 6: ' ', '+', '-', '#' + * 7: 'h', 'l', 'L', 'w' , 'N', 'z', 'q', 't', 'j' + * 8: 'd', 'o', 'u', 'i', 'x', 'X', 'e', 'f', 'g', 'E', 'F', 'G', 's', 'c', '[', 'p' + */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x06, 0x02, 0x00, + 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, 0x08, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x08, 0x07, 0x00, 0x07, 0x00, 0x00, 0x08, + 0x08, 0x07, 0x00, 0x08, 0x07, 0x08, 0x00, 0x07, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + /* Fill zero for normal char 128 byte for 0x80 - 0xff */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* + * State + * 0: normal + * 1: percent + * 2: flag + * 3: width + * 4: dot + * 5: precis + * 6: size + * 7: type + * 8: invalid + */ + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x01, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x01, 0x00, 0x00, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x03, 0x03, 0x08, 0x05, + 0x08, 0x08, 0x00, 0x00, 0x00, 0x02, 0x02, 0x03, 0x05, 0x05, 0x08, 0x00, 0x00, 0x00, 0x03, 0x03, + 0x03, 0x05, 0x05, 0x08, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, + 0x00 + }; + +#ifdef SECUREC_FOR_WCHAR + /* Convert to unsigned char to clear gcc 4.3.4 warning */ + unsigned char fmtType = (unsigned char)((((unsigned int)(int)(ch)) <= (unsigned int)(int)(L'~')) ? \ + (stateTable[(unsigned char)(ch)]) : 0); + return (SecFmtState)(stateTable[fmtType * ((unsigned char)STAT_INVALID + 1) + + (unsigned char)(lastState) + SECUREC_FMT_STATE_OFFSET]); +#else + unsigned char fmtType = stateTable[(unsigned char)(ch)]; + return (SecFmtState)(stateTable[fmtType * ((unsigned char)STAT_INVALID + 1) + + (unsigned char)(lastState) + SECUREC_FMT_STATE_OFFSET]); +#endif +} + +SECUREC_INLINE void SecDecodeFlags(SecChar ch, SecFormatAttr *attr) +{ + switch (ch) { + case SECUREC_CHAR(' '): + attr->flags |= SECUREC_FLAG_SIGN_SPACE; + break; + case SECUREC_CHAR('+'): + attr->flags |= SECUREC_FLAG_SIGN; + break; + case SECUREC_CHAR('-'): + attr->flags |= SECUREC_FLAG_LEFT; + break; + case SECUREC_CHAR('0'): + attr->flags |= SECUREC_FLAG_LEADZERO; /* Add zero th the front */ + break; + case SECUREC_CHAR('#'): + attr->flags |= SECUREC_FLAG_ALTERNATE; /* Output %x with 0x */ + break; + default: + /* Do nothing */ + break; + } + return; +} + +/* + * Decoded size identifier in format string to Reduce the number of lines of function code + */ +SECUREC_INLINE int SecDecodeSizeI(SecFormatAttr *attr, const SecChar **format) +{ +#ifdef SECUREC_ON_64BITS + attr->flags |= SECUREC_FLAG_I64; /* %I to INT64 */ +#endif + if ((**format == SECUREC_CHAR('6')) && (*((*format) + 1) == SECUREC_CHAR('4'))) { + (*format) += 2; /* Add 2 to skip I64 */ + attr->flags |= SECUREC_FLAG_I64; /* %I64 to INT64 */ + } else if ((**format == SECUREC_CHAR('3')) && (*((*format) + 1) == SECUREC_CHAR('2'))) { + (*format) += 2; /* Add 2 to skip I32 */ + attr->flags &= ~SECUREC_FLAG_I64; /* %I64 to INT32 */ + } else if ((**format == SECUREC_CHAR('d')) || (**format == SECUREC_CHAR('i')) || + (**format == SECUREC_CHAR('o')) || (**format == SECUREC_CHAR('u')) || + (**format == SECUREC_CHAR('x')) || (**format == SECUREC_CHAR('X'))) { + /* Do nothing */ + } else { + /* Compatibility code for "%I" just print I */ + return -1; + } + return 0; +} +/* + * Decoded size identifier in format string, and skip format to next charater + */ +SECUREC_INLINE int SecDecodeSize(SecChar ch, SecFormatAttr *attr, const SecChar **format) +{ + switch (ch) { + case SECUREC_CHAR('l'): + if (**format == SECUREC_CHAR('l')) { + *format = *format + 1; + attr->flags |= SECUREC_FLAG_LONGLONG; /* For long long */ + } else { + attr->flags |= SECUREC_FLAG_LONG; /* For long int or wchar_t */ + } + break; +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT + case SECUREC_CHAR('z'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('Z'): + attr->flags |= SECUREC_FLAG_SIZE; + break; + case SECUREC_CHAR('j'): + attr->flags |= SECUREC_FLAG_INTMAX; + break; +#endif + case SECUREC_CHAR('t'): + attr->flags |= SECUREC_FLAG_PTRDIFF; + break; + case SECUREC_CHAR('q'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('L'): + attr->flags |= (SECUREC_FLAG_LONGLONG | SECUREC_FLAG_LONG_DOUBLE); + break; + case SECUREC_CHAR('I'): + if (SecDecodeSizeI(attr, format) != 0) { + /* Compatibility code for "%I" just print I */ + return -1; + } + break; + case SECUREC_CHAR('h'): + if (**format == SECUREC_CHAR('h')) { + *format = *format + 1; + attr->flags |= SECUREC_FLAG_CHAR; /* For char */ + } else { + attr->flags |= SECUREC_FLAG_SHORT; /* For short int */ + } + break; + case SECUREC_CHAR('w'): + attr->flags |= SECUREC_FLAG_WIDECHAR; /* For wide char */ + break; + default: + /* Do nothing */ + break; + } + return 0; +} + +/* + * Decoded char type identifier + */ +SECUREC_INLINE void SecDecodeTypeC(SecFormatAttr *attr, unsigned int c) +{ + attr->textLen = 1; /* Only 1 wide character */ + +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT)) && !(defined(__hpux)) && !(defined(SECUREC_ON_SOLARIS)) + attr->flags &= ~SECUREC_FLAG_LEADZERO; +#endif + +#ifdef SECUREC_FOR_WCHAR + if ((attr->flags & SECUREC_FLAG_SHORT) != 0) { + /* Get multibyte character from argument */ + attr->buffer.str[0] = (char)c; + attr->text.str = attr->buffer.str; + attr->textIsWide = 0; + } else { + attr->buffer.wStr[0] = (wchar_t)c; + attr->text.wStr = attr->buffer.wStr; + attr->textIsWide = 1; + } +#else /* Not SECUREC_FOR_WCHAR */ + if ((attr->flags & (SECUREC_FLAG_LONG | SECUREC_FLAG_WIDECHAR)) != 0) { +#if SECUREC_HAVE_WCHART + attr->buffer.wStr[0] = (wchar_t)c; + attr->text.wStr = attr->buffer.wStr; + attr->textIsWide = 1; +#else + attr->textLen = 0; /* Ignore unsupported characters */ + attr->fldWidth = 0; /* No paddings */ +#endif + } else { + /* Get multibyte character from argument */ + attr->buffer.str[0] = (char)c; + attr->text.str = attr->buffer.str; + attr->textIsWide = 0; + } +#endif +} + +SECUREC_INLINE void SecDecodeTypeSchar(SecFormatAttr *attr) +{ + if (attr->text.str == NULL) { + /* + * Literal string to print null ptr, define it as array rather than const text area + * To avoid gcc warning with pointing const text with variable + */ + static char strNullString[SECUREC_NULL_STRING_SIZE] = "(null)"; + attr->text.str = strNullString; + } + if (attr->precision == -1) { + /* Precision NOT assigned */ + /* The strlen performance is high when the string length is greater than 32 */ + attr->textLen = (int)strlen(attr->text.str); + } else { + /* Precision assigned */ + size_t textLen; + SECUREC_CALC_STR_LEN(attr->text.str, (size_t)(unsigned int)attr->precision, &textLen); + attr->textLen = (int)textLen; + } +} + +SECUREC_INLINE void SecDecodeTypeSwchar(SecFormatAttr *attr) +{ +#if SECUREC_HAVE_WCHART + size_t textLen; + attr->textIsWide = 1; + if (attr->text.wStr == NULL) { + /* + * Literal string to print null ptr, define it as array rather than const text area + * To avoid gcc warning with pointing const text with variable + */ + static wchar_t wStrNullString[SECUREC_NULL_STRING_SIZE] = { L'(', L'n', L'u', L'l', L'l', L')', L'\0', L'\0' }; + attr->text.wStr = wStrNullString; + } + /* The textLen in wchar_t,when precision is -1, it is unlimited */ + SECUREC_CALC_WSTR_LEN(attr->text.wStr, (size_t)(unsigned int)attr->precision, &textLen); + attr->textLen = (int)textLen; +#else + attr->textLen = 0; +#endif +} + +/* + * Decoded string identifier + */ +SECUREC_INLINE void SecDecodeTypeS(SecFormatAttr *attr, char *argPtr) +{ +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT)) && (!defined(SECUREC_ON_UNIX)) + attr->flags &= ~SECUREC_FLAG_LEADZERO; +#endif + attr->text.str = argPtr; +#ifdef SECUREC_FOR_WCHAR +#if defined(SECUREC_COMPATIBLE_LINUX_FORMAT) + if ((attr->flags & SECUREC_FLAG_LONG) == 0) { + attr->flags |= SECUREC_FLAG_SHORT; + } +#endif + if ((attr->flags & SECUREC_FLAG_SHORT) != 0) { + /* The textLen now contains length in multibyte chars */ + SecDecodeTypeSchar(attr); + } else { + /* The textLen now contains length in wide chars */ + SecDecodeTypeSwchar(attr); + } +#else /* SECUREC_FOR_WCHAR */ + if ((attr->flags & (SECUREC_FLAG_LONG | SECUREC_FLAG_WIDECHAR)) != 0) { + /* The textLen now contains length in wide chars */ + SecDecodeTypeSwchar(attr); + } else { + /* The textLen now contains length in multibyte chars */ + SecDecodeTypeSchar(attr); + } +#endif /* SECUREC_FOR_WCHAR */ + if (attr->textLen < 0) { + attr->textLen = 0; + } +} + +/* + * Write one character to dest buffer + */ +SECUREC_INLINE void SecOutputOneChar(SecChar ch, SecPrintfStream *stream, int *counter) +{ + /* Count must be reduced first, In order to identify insufficient length */ + stream->count -= (int)(sizeof(SecChar)); + if (stream->count >= 0) { + *((SecChar *)(void *)(stream->cur)) = (SecChar)ch; + stream->cur += sizeof(SecChar); + *counter = *(counter) + 1; + return; + } + /* No enough length */ + *counter = -1; +} + +/* + * Check precison in format + */ +SECUREC_INLINE int SecDecodePrecision(SecChar ch, SecFormatAttr *attr) +{ + if (attr->dynPrecision == 0) { + /* Add digit to current precision */ + if (SECUREC_MUL_TEN_ADD_BEYOND_MAX(attr->precision)) { + return -1; + } + attr->precision = (int)SECUREC_MUL_TEN((unsigned int)attr->precision) + + (unsigned char)(ch - SECUREC_CHAR('0')); + } else { + if (attr->precision < 0) { + attr->precision = -1; + } + if (attr->precision > SECUREC_MAX_WIDTH_LEN) { + return -1; + } + } + return 0; +} + +/* + * Check width in format + */ +SECUREC_INLINE int SecDecodeWidth(SecChar ch, SecFormatAttr *attr, SecFmtState lastState) +{ + if (attr->dynWidth == 0) { + if (lastState != STAT_WIDTH) { + attr->fldWidth = 0; + } + if (SECUREC_MUL_TEN_ADD_BEYOND_MAX(attr->fldWidth)) { + return -1; + } + attr->fldWidth = (int)SECUREC_MUL_TEN((unsigned int)attr->fldWidth) + + (unsigned char)(ch - SECUREC_CHAR('0')); + } else { + if (attr->fldWidth < 0) { + attr->flags |= SECUREC_FLAG_LEFT; + attr->fldWidth = (-attr->fldWidth); + if (attr->fldWidth > SECUREC_MAX_WIDTH_LEN) { + return -1; + } + } + } + return 0; +} + +/* + * The sprintf_s function processes the wide character as a parameter for %C + * The swprintf_s function processes the multiple character as a parameter for %C + */ +SECUREC_INLINE void SecUpdateWcharFlags(SecFormatAttr *attr) +{ + if ((attr->flags & (SECUREC_FLAG_SHORT | SECUREC_FLAG_LONG | SECUREC_FLAG_WIDECHAR)) == 0) { +#ifdef SECUREC_FOR_WCHAR + attr->flags |= SECUREC_FLAG_SHORT; +#else + attr->flags |= SECUREC_FLAG_WIDECHAR; +#endif + } +} +/* + * When encountering %S, current just same as %C + */ +SECUREC_INLINE void SecUpdateWstringFlags(SecFormatAttr *attr) +{ + SecUpdateWcharFlags(attr); +} + +#if SECUREC_IN_KERNEL +SECUREC_INLINE void SecUpdatePointFlagsForKernel(SecFormatAttr *attr) +{ + /* Width is not set */ + if (attr->fldWidth <= 0) { + attr->flags |= SECUREC_FLAG_LEADZERO; + attr->fldWidth = 2 * sizeof(void *); /* 2 x byte number is the length of hex */ + } + if ((attr->flags & SECUREC_FLAG_ALTERNATE) != 0) { + /* Alternate form means '0x' prefix */ + attr->prefix[0] = SECUREC_CHAR('0'); + attr->prefix[1] = SECUREC_CHAR('x'); + attr->prefixLen = SECUREC_PREFIX_LEN; + } + attr->flags |= SECUREC_FLAG_LONG; /* Converting a long */ +} +#endif + +SECUREC_INLINE void SecUpdatePointFlags(SecFormatAttr *attr) +{ + attr->flags |= SECUREC_FLAG_POINTER; +#if SECUREC_IN_KERNEL + SecUpdatePointFlagsForKernel(attr); +#else +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) || defined(SECUREC_VXWORKS_PLATFORM)) && (!defined(SECUREC_ON_UNIX)) +#if defined(SECUREC_VXWORKS_PLATFORM) + attr->precision = 1; +#else + attr->precision = 0; +#endif + attr->flags |= SECUREC_FLAG_ALTERNATE; /* "0x" is not default prefix in UNIX */ + attr->digits = g_itoaLowerDigits; +#else /* On unix or win */ +#if defined(_AIX) || defined(SECUREC_ON_SOLARIS) + attr->precision = 1; +#else + attr->precision = 2 * sizeof(void *); /* 2 x byte number is the length of hex */ +#endif +#if defined(SECUREC_ON_UNIX) + attr->digits = g_itoaLowerDigits; +#else + attr->digits = g_itoaUpperDigits; +#endif +#endif + +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) + attr->flags &= ~SECUREC_FLAG_LEADZERO; +#endif + +#ifdef SECUREC_ON_64BITS + attr->flags |= SECUREC_FLAG_I64; /* Converting an int64 */ +#else + attr->flags |= SECUREC_FLAG_LONG; /* Converting a long */ +#endif + /* Set up for %#p on different system */ + if ((attr->flags & SECUREC_FLAG_ALTERNATE) != 0) { + /* Alternate form means '0x' prefix */ + attr->prefix[0] = SECUREC_CHAR('0'); +#if (defined(SECUREC_COMPATIBLE_LINUX_FORMAT) || defined(SECUREC_VXWORKS_PLATFORM)) + attr->prefix[1] = SECUREC_CHAR('x'); +#else + attr->prefix[1] = (SecChar)(attr->digits[16]); /* 16 for 'x' or 'X' */ +#endif +#if defined(_AIX) || defined(SECUREC_ON_SOLARIS) + attr->prefixLen = 0; +#else + attr->prefixLen = SECUREC_PREFIX_LEN; +#endif + } +#endif +} + +SECUREC_INLINE void SecUpdateXpxFlags(SecFormatAttr *attr, SecChar ch) +{ + /* Use unsigned lower hex output for 'x' */ + attr->digits = g_itoaLowerDigits; + attr->radix = SECUREC_RADIX_HEX; + switch (ch) { + case SECUREC_CHAR('p'): + /* Print a pointer */ + SecUpdatePointFlags(attr); + break; + case SECUREC_CHAR('X'): /* fall-through */ /* FALLTHRU */ + /* Unsigned upper hex output */ + attr->digits = g_itoaUpperDigits; + /* fall-through */ /* FALLTHRU */ + default: + /* For %#x or %#X */ + if ((attr->flags & SECUREC_FLAG_ALTERNATE) != 0) { + /* Alternate form means '0x' prefix */ + attr->prefix[0] = SECUREC_CHAR('0'); + attr->prefix[1] = (SecChar)(attr->digits[16]); /* 16 for 'x' or 'X' */ + attr->prefixLen = SECUREC_PREFIX_LEN; + } + break; + } +} +SECUREC_INLINE void SecUpdateOudiFlags(SecFormatAttr *attr, SecChar ch) +{ + /* Do not set digits here */ + switch (ch) { + case SECUREC_CHAR('i'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('d'): /* fall-through */ /* FALLTHRU */ + /* For signed decimal output */ + attr->flags |= SECUREC_FLAG_SIGNED; + /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('u'): + attr->radix = SECUREC_RADIX_DECIMAL; + attr->digits = g_itoaLowerDigits; + break; + case SECUREC_CHAR('o'): + /* For unsigned octal output */ + attr->radix = SECUREC_RADIX_OCTAL; + attr->digits = g_itoaLowerDigits; + if ((attr->flags & SECUREC_FLAG_ALTERNATE) != 0) { + /* Alternate form means force a leading 0 */ + attr->flags |= SECUREC_FLAG_FORCE_OCTAL; + } + break; + default: + /* Do nothing */ + break; + } +} + +#if SECUREC_ENABLE_SPRINTF_FLOAT +SECUREC_INLINE void SecFreeFloatBuffer(SecFloatAdapt *floatAdapt) +{ + if (floatAdapt->floatBuffer != NULL) { + SECUREC_FREE(floatAdapt->floatBuffer); + } + if (floatAdapt->allocatedFmtStr != NULL) { + SECUREC_FREE(floatAdapt->allocatedFmtStr); + } + floatAdapt->floatBuffer = NULL; + floatAdapt->allocatedFmtStr = NULL; + floatAdapt->fmtStr = NULL; + floatAdapt->bufferSize = 0; +} + +SECUREC_INLINE void SecSeekToFrontPercent(const SecChar **format) +{ + const SecChar *fmt = *format; + while (*fmt != SECUREC_CHAR('%')) { /* Must meet '%' */ + --fmt; + } + *format = fmt; +} + +/* Init float format, return 0 is OK */ +SECUREC_INLINE int SecInitFloatFmt(SecFloatAdapt *floatFmt, const SecChar *format) +{ + const SecChar *fmt = format - 2; /* Sub 2 to the position before 'f' or 'g' */ + int fmtStrLen; + int i; + + SecSeekToFrontPercent(&fmt); + /* Now fmt point to '%' */ + fmtStrLen = (int)(size_t)(format - fmt) + 1; /* With ending terminator */ + if (fmtStrLen > (int)sizeof(floatFmt->buffer)) { + /* When buffer is NOT enough, alloc a new buffer */ + floatFmt->allocatedFmtStr = (char *)SECUREC_MALLOC((size_t)((unsigned int)fmtStrLen)); + if (floatFmt->allocatedFmtStr == NULL) { + return -1; + } + floatFmt->fmtStr = floatFmt->allocatedFmtStr; + } else { + floatFmt->fmtStr = floatFmt->buffer; + floatFmt->allocatedFmtStr = NULL; /* Must set to NULL, later code free memory based on this identity */ + } + + for (i = 0; i < fmtStrLen - 1; ++i) { + /* Convert wchar to char */ + floatFmt->fmtStr[i] = (char)(fmt[i]); /* Copy the format string */ + } + floatFmt->fmtStr[fmtStrLen - 1] = '\0'; + + return 0; +} + +/* Init float buffer and format, return 0 is OK */ +SECUREC_INLINE int SecInitFloatBuffer(SecFloatAdapt *floatAdapt, const SecChar *format, SecFormatAttr *attr) +{ + floatAdapt->allocatedFmtStr = NULL; + floatAdapt->fmtStr = NULL; + floatAdapt->floatBuffer = NULL; + /* Compute the precision value */ + if (attr->precision < 0) { + attr->precision = SECUREC_FLOAT_DEFAULT_PRECISION; + } + /* + * Calc buffer size to store double value + * The maximum length of SECUREC_MAX_WIDTH_LEN is enough + */ + if ((attr->flags & SECUREC_FLAG_LONG_DOUBLE) != 0) { + if (attr->precision > (SECUREC_MAX_WIDTH_LEN - SECUREC_FLOAT_BUFSIZE_LB)) { + return -1; + } + /* Long double needs to meet the basic print length */ + floatAdapt->bufferSize = SECUREC_FLOAT_BUFSIZE_LB + attr->precision + SECUREC_FLOAT_BUF_EXT; + } else { + if (attr->precision > (SECUREC_MAX_WIDTH_LEN - SECUREC_FLOAT_BUFSIZE)) { + return -1; + } + /* Double needs to meet the basic print length */ + floatAdapt->bufferSize = SECUREC_FLOAT_BUFSIZE + attr->precision + SECUREC_FLOAT_BUF_EXT; + } + if (attr->fldWidth > floatAdapt->bufferSize) { + floatAdapt->bufferSize = attr->fldWidth + SECUREC_FLOAT_BUF_EXT; + } + + if (floatAdapt->bufferSize > SECUREC_BUFFER_SIZE) { + /* The current vlaue of SECUREC_BUFFER_SIZE could NOT store the formatted float string */ + floatAdapt->floatBuffer = (char *)SECUREC_MALLOC(((size_t)(unsigned int)floatAdapt->bufferSize)); + if (floatAdapt->floatBuffer == NULL) { + return -1; + } + attr->text.str = floatAdapt->floatBuffer; + } else { + attr->text.str = attr->buffer.str; /* Output buffer for float string with default size */ + } + + if (SecInitFloatFmt(floatAdapt, format) != 0) { + if (floatAdapt->floatBuffer != NULL) { + SECUREC_FREE(floatAdapt->floatBuffer); + floatAdapt->floatBuffer = NULL; + } + return -1; + } + return 0; +} +#endif + +SECUREC_INLINE SecInt64 SecUpdateNegativeChar(SecFormatAttr *attr, char ch) +{ + SecInt64 num64 = ch; /* Sign extend */ + if (num64 >= 128) { /* 128 on some platform, char is always unsigned */ + unsigned char tmp = (unsigned char)(~((unsigned char)ch)); + num64 = tmp + 1; + attr->flags |= SECUREC_FLAG_NEGATIVE; + } + return num64; +} + +/* + * If the precision is not satisfied, zero is added before the string + */ +SECUREC_INLINE void SecNumberSatisfyPrecision(SecFormatAttr *attr) +{ + int precision; + if (attr->precision < 0) { + precision = 1; /* Default precision 1 */ + } else { +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) + attr->flags &= ~SECUREC_FLAG_LEADZERO; +#else + if ((attr->flags & SECUREC_FLAG_POINTER) == 0) { + attr->flags &= ~SECUREC_FLAG_LEADZERO; + } +#endif + if (attr->precision > SECUREC_MAX_PRECISION) { + attr->precision = SECUREC_MAX_PRECISION; + } + precision = attr->precision; + } + while (attr->textLen < precision) { + --attr->text.str; + *(attr->text.str) = '0'; + ++attr->textLen; + } +} + +/* + * Add leading zero for %#o + */ +SECUREC_INLINE void SecNumberForceOctal(SecFormatAttr *attr) +{ + /* Force a leading zero if FORCEOCTAL flag set */ + if ((attr->flags & SECUREC_FLAG_FORCE_OCTAL) != 0 && + (attr->textLen == 0 || attr->text.str[0] != '0')) { + --attr->text.str; + *(attr->text.str) = '0'; + ++attr->textLen; + } +} + +SECUREC_INLINE void SecUpdateSignedNumberPrefix(SecFormatAttr *attr) +{ + if ((attr->flags & SECUREC_FLAG_SIGNED) == 0) { + return; + } + if ((attr->flags & SECUREC_FLAG_NEGATIVE) != 0) { + /* Prefix is '-' */ + attr->prefix[0] = SECUREC_CHAR('-'); + attr->prefixLen = 1; + return; + } + if ((attr->flags & SECUREC_FLAG_SIGN) != 0) { + /* Prefix is '+' */ + attr->prefix[0] = SECUREC_CHAR('+'); + attr->prefixLen = 1; + return; + } + if ((attr->flags & SECUREC_FLAG_SIGN_SPACE) != 0) { + /* Prefix is ' ' */ + attr->prefix[0] = SECUREC_CHAR(' '); + attr->prefixLen = 1; + return; + } + return; +} + +SECUREC_INLINE void SecNumberCompatZero(SecFormatAttr *attr) +{ +#if SECUREC_IN_KERNEL + if ((attr->flags & SECUREC_FLAG_POINTER) != 0) { + static char strNullPointer[SECUREC_NULL_STRING_SIZE] = "(null)"; + attr->text.str = strNullPointer; + attr->textLen = 6; /* Length of (null) is 6 */ + attr->flags &= ~SECUREC_FLAG_LEADZERO; + attr->prefixLen = 0; + if (attr->precision >= 0 && attr->precision < attr->textLen) { + attr->textLen = attr->precision; + } + } + if ((attr->flags & SECUREC_FLAG_POINTER) == 0 && attr->radix == SECUREC_RADIX_HEX && + (attr->flags & SECUREC_FLAG_ALTERNATE) != 0) { + /* Add 0x prefix for %x or %X, the prefix string has been set before */ + attr->prefixLen = SECUREC_PREFIX_LEN; + } +#elif defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && (!defined(SECUREC_ON_UNIX)) + if ((attr->flags & SECUREC_FLAG_POINTER) != 0) { + static char strNullPointer[SECUREC_NULL_STRING_SIZE] = "(nil)"; + attr->text.str = strNullPointer; + attr->textLen = 5; /* Length of (nil) is 5 */ + attr->flags &= ~SECUREC_FLAG_LEADZERO; + } +#elif defined(SECUREC_VXWORKS_PLATFORM) || defined(__hpux) + if ((attr->flags & SECUREC_FLAG_POINTER) != 0 && (attr->flags & SECUREC_FLAG_ALTERNATE) != 0) { + /* Add 0x prefix for %p, the prefix string has been set before */ + attr->prefixLen = SECUREC_PREFIX_LEN; + } +#endif + (void)attr; /* To clear e438 last value assigned not used , the compiler will optimize this code */ +} + +#ifdef SECUREC_FOR_WCHAR +/* + * Formatting output core functions for wchar version.Called by a function such as vswprintf_s + * The argList must not be declare as const + */ +SECUREC_INLINE int SecOutputSW(SecPrintfStream *stream, const wchar_t *cFormat, va_list argList) +#else +/* + * Formatting output core functions for char version.Called by a function such as vsnprintf_s + */ +SECUREC_INLINE int SecOutputS(SecPrintfStream *stream, const char *cFormat, va_list argList) +#endif +{ + const SecChar *format = cFormat; + int charsOut; /* Characters written */ + int noOutput = 0; /* Must be initialized or compiler alerts */ + SecFmtState state; + SecFormatAttr formatAttr; + + formatAttr.flags = 0; + formatAttr.textIsWide = 0; /* Flag for buffer contains wide chars */ + formatAttr.fldWidth = 0; + formatAttr.precision = 0; + formatAttr.dynWidth = 0; + formatAttr.dynPrecision = 0; + formatAttr.digits = g_itoaUpperDigits; + formatAttr.radix = SECUREC_RADIX_DECIMAL; + formatAttr.padding = 0; + formatAttr.textLen = 0; + formatAttr.text.str = NULL; + formatAttr.prefixLen = 0; + formatAttr.prefix[0] = SECUREC_CHAR('\0'); + formatAttr.prefix[1] = SECUREC_CHAR('\0'); + charsOut = 0; + state = STAT_NORMAL; /* Starting state */ + + /* Loop each format character */ + while (*format != SECUREC_CHAR('\0') && charsOut >= 0) { + SecFmtState lastState = state; + SecChar ch = *format; /* Currently read character */ + ++format; + state = SecDecodeState(ch, lastState); + switch (state) { + case STAT_NORMAL: + SecOutputOneChar(ch, stream, &charsOut); + continue; + case STAT_PERCENT: + /* Set default values */ + noOutput = 0; + formatAttr.prefixLen = 0; + formatAttr.textLen = 0; + formatAttr.flags = 0; + formatAttr.fldWidth = 0; + formatAttr.precision = -1; + formatAttr.textIsWide = 0; + formatAttr.dynWidth = 0; + formatAttr.dynPrecision = 0; + break; + case STAT_FLAG: + /* Set flag based on which flag character */ + SecDecodeFlags(ch, &formatAttr); + break; + case STAT_WIDTH: + /* Update width value */ + if (ch == SECUREC_CHAR('*')) { + /* get width from arg list */ + formatAttr.fldWidth = (int)va_arg(argList, int); + formatAttr.dynWidth = 1; + } + if (SecDecodeWidth(ch, &formatAttr, lastState) != 0) { + return -1; + } + break; + case STAT_DOT: + formatAttr.precision = 0; + break; + case STAT_PRECIS: + /* Update precison value */ + if (ch == SECUREC_CHAR('*')) { + /* Get precision from arg list */ + formatAttr.precision = (int)va_arg(argList, int); + formatAttr.dynPrecision = 1; + } + if (SecDecodePrecision(ch, &formatAttr) != 0) { + return -1; + } + break; + case STAT_SIZE: + /* Read a size specifier, set the formatAttr.flags based on it, and skip format to next charater */ + if (SecDecodeSize(ch, &formatAttr, &format) != 0) { + /* Compatibility code for "%I" just print I */ + SecOutputOneChar(ch, stream, &charsOut); + state = STAT_NORMAL; + continue; + } + break; + case STAT_TYPE: + switch (ch) { + case SECUREC_CHAR('C'): /* Wide char */ + SecUpdateWcharFlags(&formatAttr); + /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('c'): { + unsigned int cValue = (unsigned int)va_arg(argList, int); + SecDecodeTypeC(&formatAttr, cValue); + break; + } + case SECUREC_CHAR('S'): /* Wide char string */ + SecUpdateWstringFlags(&formatAttr); + /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('s'): { + char *argPtr = (char *)va_arg(argList, char *); + SecDecodeTypeS(&formatAttr, argPtr); + break; + } + case SECUREC_CHAR('G'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('g'): /* fall-through */ /* FALLTHRU */ + /* Default precision is 1 for g or G */ + if (formatAttr.precision == 0) { + formatAttr.precision = 1; + } + /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('E'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('F'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('e'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('f'): { +#if SECUREC_ENABLE_SPRINTF_FLOAT + /* Add following code to call system sprintf API for float number */ + SecFloatAdapt floatAdapt; + noOutput = 1; /* It's no more data needs to be written */ + + /* Now format is pointer to the next character of 'f' */ + if (SecInitFloatBuffer(&floatAdapt, format, &formatAttr) != 0) { + break; + } + + if ((formatAttr.flags & SECUREC_FLAG_LONG_DOUBLE) != 0) { +#if defined(SECUREC_COMPATIBLE_LINUX_FORMAT) && SECUREC_ENABLE_SPRINTF_LONG_DOUBLE + long double tmp = (long double)va_arg(argList, long double); + SecFormatLongDouble(&formatAttr, &floatAdapt, tmp); +#else + double tmp = (double)va_arg(argList, double); + SecFormatDouble(&formatAttr, &floatAdapt, tmp); +#endif + } else { + double tmp = (double)va_arg(argList, double); + SecFormatDouble(&formatAttr, &floatAdapt, tmp); + } + + /* Only need write formated float string */ + SecWriteFloatText(stream, &formatAttr, &charsOut); + SecFreeFloatBuffer(&floatAdapt); + break; +#else + return -1; +#endif + } + case SECUREC_CHAR('X'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('p'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('x'): /* fall-through */ /* FALLTHRU */ + SecUpdateXpxFlags(&formatAttr, ch); + /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('i'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('d'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('u'): /* fall-through */ /* FALLTHRU */ + case SECUREC_CHAR('o'): { + SecInt64 num64; + SecUpdateOudiFlags(&formatAttr, ch); + /* Read argument into variable num64. Be careful, depend on the order of judgment */ + if ((formatAttr.flags & SECUREC_FLAG_I64) != 0 || + (formatAttr.flags & SECUREC_FLAG_LONGLONG) != 0) { + num64 = (SecInt64)va_arg(argList, SecInt64); /* Maximum Bit Width sign bit unchanged */ + } else if ((formatAttr.flags & SECUREC_FLAG_LONG) != 0) { + num64 = SECUREC_GET_LONG_FROM_ARG(formatAttr); + } else if ((formatAttr.flags & SECUREC_FLAG_CHAR) != 0) { + num64 = SECUREC_GET_CHAR_FROM_ARG(formatAttr); + } else if ((formatAttr.flags & SECUREC_FLAG_SHORT) != 0) { + num64 = SECUREC_GET_SHORT_FROM_ARG(formatAttr); +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT + } else if ((formatAttr.flags & SECUREC_FLAG_PTRDIFF) != 0) { + num64 = (ptrdiff_t)va_arg(argList, ptrdiff_t); /* Sign extend */ + } else if ((formatAttr.flags & SECUREC_FLAG_SIZE) != 0) { + num64 = SECUREC_GET_SIZE_FROM_ARG(formatAttr); + } else if ((formatAttr.flags & SECUREC_FLAG_INTMAX) != 0) { + num64 = (SecInt64)va_arg(argList, SecInt64); +#endif + } else { + num64 = SECUREC_GET_INT_FROM_ARG(formatAttr); + } + + /* The order of the following calls must be correct */ + SecNumberToBuffer(&formatAttr, num64); + SecNumberSatisfyPrecision(&formatAttr); + SecNumberForceOctal(&formatAttr); + SecUpdateSignedNumberPrefix(&formatAttr); + if (num64 == 0) { + SecNumberCompatZero(&formatAttr); + } + break; + } + default: + /* Do nothing */ + break; + } + + if (noOutput == 0) { + /* Calculate amount of padding */ + formatAttr.padding = (formatAttr.fldWidth - formatAttr.textLen) - formatAttr.prefixLen; + + /* Put out the padding, prefix, and text, in the correct order */ + SecWriteLeftPadding(stream, &formatAttr, &charsOut); + SecWritePrefix(stream, &formatAttr, &charsOut); + SecWriteLeadingZero(stream, &formatAttr, &charsOut); + SecWriteText(stream, &formatAttr, &charsOut); + SecWriteRightPadding(stream, &formatAttr, &charsOut); + } + break; + case STAT_INVALID: /* fall-through */ /* FALLTHRU */ + default: + return -1; /* Input format is wrong(STAT_INVALID), directly return */ + } + } + + if (state != STAT_NORMAL && state != STAT_TYPE) { + return -1; + } + + return charsOut; /* The number of characters written */ +} + +/* + * Output one zero character zero into the SecPrintfStream structure + * If there is not enough space, make sure f->count is less than 0 + */ +SECUREC_INLINE int SecPutZeroChar(SecPrintfStream *str) +{ + --str->count; + if (str->count >= 0) { + *(str->cur) = '\0'; + str->cur = str->cur + 1; + return 0; + } + return -1; +} + +#endif /* OUTPUT_INL_2B263E9C_43D8_44BB_B17A_6D2033DECEE5 */ + diff --git a/third_party/bounds_checking_function/src/scanf_s.c b/third_party/bounds_checking_function/src/scanf_s.c new file mode 100644 index 0000000..0ae200e --- /dev/null +++ b/third_party/bounds_checking_function/src/scanf_s.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: scanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The scanf_s function is equivalent to fscanf_s with the argument stdin interposed before the arguments to scanf_s + * The scanf_s function reads data from the standard input stream stdin and + * writes the data into the location that's given by argument. Each argument + * must be a pointer to a variable of a type that corresponds to a type specifier + * in format. If copying occurs between strings that overlap, the behavior is + * undefined. + * + * + * format Format control string. + * ... Optional arguments. + * + * + * ... The converted value stored in user assigned address + * + * + * Returns the number of fields successfully converted and assigned; + * the return value does not include fields that were read but not assigned. + * A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int scanf_s(const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vscanf_s(format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + diff --git a/third_party/bounds_checking_function/src/secinput.h b/third_party/bounds_checking_function/src/secinput.h new file mode 100644 index 0000000..15c1045 --- /dev/null +++ b/third_party/bounds_checking_function/src/secinput.h @@ -0,0 +1,194 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Define macro, data struct, and declare function prototype, + * which is used by input.inl, secureinput_a.c and secureinput_w.c. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SEC_INPUT_H_E950DA2C_902F_4B15_BECD_948E99090D9C +#define SEC_INPUT_H_E950DA2C_902F_4B15_BECD_948E99090D9C +#include "securecutil.h" + +#define SECUREC_SCANF_EINVAL (-1) +#define SECUREC_SCANF_ERROR_PARA (-2) + +/* For internal stream flag */ +#define SECUREC_MEM_STR_FLAG 0x01U +#define SECUREC_FILE_STREAM_FLAG 0x02U +#define SECUREC_PIPE_STREAM_FLAG 0x04U +#define SECUREC_LOAD_FILE_TO_MEM_FLAG 0x08U + +#define SECUREC_UCS_BOM_HEADER_SIZE 2U +#define SECUREC_UCS_BOM_HEADER_BE_1ST 0xfeU +#define SECUREC_UCS_BOM_HEADER_BE_2ST 0xffU +#define SECUREC_UCS_BOM_HEADER_LE_1ST 0xffU +#define SECUREC_UCS_BOM_HEADER_LE_2ST 0xfeU +#define SECUREC_UTF8_BOM_HEADER_SIZE 3U +#define SECUREC_UTF8_BOM_HEADER_1ST 0xefU +#define SECUREC_UTF8_BOM_HEADER_2ND 0xbbU +#define SECUREC_UTF8_BOM_HEADER_3RD 0xbfU +#define SECUREC_UTF8_LEAD_1ST 0xe0U +#define SECUREC_UTF8_LEAD_2ND 0x80U + +#define SECUREC_BEGIN_WITH_UCS_BOM(s, len) ((len) >= SECUREC_UCS_BOM_HEADER_SIZE && \ + (((unsigned char)((s)[0]) == SECUREC_UCS_BOM_HEADER_LE_1ST && \ + (unsigned char)((s)[1]) == SECUREC_UCS_BOM_HEADER_LE_2ST) || \ + ((unsigned char)((s)[0]) == SECUREC_UCS_BOM_HEADER_BE_1ST && \ + (unsigned char)((s)[1]) == SECUREC_UCS_BOM_HEADER_BE_2ST))) + +#define SECUREC_BEGIN_WITH_UTF8_BOM(s, len) ((len) >= SECUREC_UTF8_BOM_HEADER_SIZE && \ + (unsigned char)((s)[0]) == SECUREC_UTF8_BOM_HEADER_1ST && \ + (unsigned char)((s)[1]) == SECUREC_UTF8_BOM_HEADER_2ND && \ + (unsigned char)((s)[2]) == SECUREC_UTF8_BOM_HEADER_3RD) + +#ifdef SECUREC_FOR_WCHAR +#define SECUREC_BOM_HEADER_SIZE SECUREC_UCS_BOM_HEADER_SIZE +#define SECUREC_BEGIN_WITH_BOM(s, len) SECUREC_BEGIN_WITH_UCS_BOM((s), (len)) +#else +#define SECUREC_BOM_HEADER_SIZE SECUREC_UTF8_BOM_HEADER_SIZE +#define SECUREC_BEGIN_WITH_BOM(s, len) SECUREC_BEGIN_WITH_UTF8_BOM((s), (len)) +#endif + +typedef struct { + unsigned int flag; /* Mark the properties of input stream */ + char *base; /* The pointer to the header of buffered string */ + const char *cur; /* The pointer to next read position */ + size_t count; /* The size of buffered string in bytes */ +#if SECUREC_ENABLE_SCANF_FILE + FILE *pf; /* The file pointer */ + size_t fileRealRead; + long oriFilePos; /* The original position of file offset when fscanf is called */ +#if !SECUREC_USE_STD_UNGETC + unsigned int lastChar; /* The char code of last input */ + int fUnGet; /* The boolean flag of pushing a char back to read stream */ +#endif +#endif +} SecFileStream; + +#if SECUREC_ENABLE_SCANF_FILE && !SECUREC_USE_STD_UNGETC +#define SECUREC_FILE_STREAM_INIT_FILE(stream, fp) do { \ + (stream)->pf = (fp); \ + (stream)->fileRealRead = 0; \ + (stream)->oriFilePos = 0; \ + (stream)->lastChar = 0; \ + (stream)->fUnGet = 0; \ +} SECUREC_WHILE_ZERO +#elif SECUREC_ENABLE_SCANF_FILE && SECUREC_USE_STD_UNGETC +#define SECUREC_FILE_STREAM_INIT_FILE(stream, fp) do { \ + (stream)->pf = (fp); \ + (stream)->fileRealRead = 0; \ + (stream)->oriFilePos = 0; \ +} SECUREC_WHILE_ZERO +#else +/* Disable file */ +#define SECUREC_FILE_STREAM_INIT_FILE(stream, fp) +#endif + +/* This initialization for eliminating redundant initialization. */ +#define SECUREC_FILE_STREAM_FROM_STRING(stream, buf, cnt) do { \ + (stream)->flag = SECUREC_MEM_STR_FLAG; \ + (stream)->base = NULL; \ + (stream)->cur = (buf); \ + (stream)->count = (cnt); \ + SECUREC_FILE_STREAM_INIT_FILE((stream), NULL); \ +} SECUREC_WHILE_ZERO + +/* This initialization for eliminating redundant initialization. */ +#define SECUREC_FILE_STREAM_FROM_FILE(stream, fp) do { \ + (stream)->flag = SECUREC_FILE_STREAM_FLAG; \ + (stream)->base = NULL; \ + (stream)->cur = NULL; \ + (stream)->count = 0; \ + SECUREC_FILE_STREAM_INIT_FILE((stream), (fp)); \ +} SECUREC_WHILE_ZERO + +/* This initialization for eliminating redundant initialization. */ +#define SECUREC_FILE_STREAM_FROM_STDIN(stream) do { \ + (stream)->flag = SECUREC_PIPE_STREAM_FLAG; \ + (stream)->base = NULL; \ + (stream)->cur = NULL; \ + (stream)->count = 0; \ + SECUREC_FILE_STREAM_INIT_FILE((stream), SECUREC_STREAM_STDIN); \ +} SECUREC_WHILE_ZERO + +#ifdef __cplusplus +extern "C" { +#endif + int SecInputS(SecFileStream *stream, const char *cFormat, va_list argList); + void SecClearDestBuf(const char *buffer, const char *format, va_list argList); +#ifdef SECUREC_FOR_WCHAR + int SecInputSW(SecFileStream *stream, const wchar_t *cFormat, va_list argList); + void SecClearDestBufW(const wchar_t *buffer, const wchar_t *format, va_list argList); +#endif + +/* 20150105 For software and hardware decoupling,such as UMG */ +#ifdef SECUREC_SYSAPI4VXWORKS +#ifdef feof +#undef feof +#endif + extern int feof(FILE *stream); +#endif + +#if defined(SECUREC_SYSAPI4VXWORKS) || defined(SECUREC_CTYPE_MACRO_ADAPT) +#ifndef isspace +#define isspace(c) (((c) == ' ') || ((c) == '\t') || ((c) == '\r') || ((c) == '\n')) +#endif +#ifndef iswspace +#define iswspace(c) (((c) == L' ') || ((c) == L'\t') || ((c) == L'\r') || ((c) == L'\n')) +#endif +#ifndef isascii +#define isascii(c) (((unsigned char)(c)) <= 0x7f) +#endif +#ifndef isupper +#define isupper(c) ((c) >= 'A' && (c) <= 'Z') +#endif +#ifndef islower +#define islower(c) ((c) >= 'a' && (c) <= 'z') +#endif +#ifndef isalpha +#define isalpha(c) (isupper(c) || (islower(c))) +#endif +#ifndef isdigit +#define isdigit(c) ((c) >= '0' && (c) <= '9') +#endif +#ifndef isxupper +#define isxupper(c) ((c) >= 'A' && (c) <= 'F') +#endif +#ifndef isxlower +#define isxlower(c) ((c) >= 'a' && (c) <= 'f') +#endif +#ifndef isxdigit +#define isxdigit(c) (isdigit(c) || isxupper(c) || isxlower(c)) +#endif +#endif + +#ifdef __cplusplus +} +#endif +/* Reserved file operation macro interface, s is FILE *, i is fileno zero. */ +#ifndef SECUREC_LOCK_FILE +#define SECUREC_LOCK_FILE(s) +#endif + +#ifndef SECUREC_UNLOCK_FILE +#define SECUREC_UNLOCK_FILE(s) +#endif + +#ifndef SECUREC_LOCK_STDIN +#define SECUREC_LOCK_STDIN(i, s) +#endif + +#ifndef SECUREC_UNLOCK_STDIN +#define SECUREC_UNLOCK_STDIN(i, s) +#endif +#endif + diff --git a/third_party/bounds_checking_function/src/securecutil.c b/third_party/bounds_checking_function/src/securecutil.c new file mode 100644 index 0000000..70774b2 --- /dev/null +++ b/third_party/bounds_checking_function/src/securecutil.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Provides internal functions used by this library, such as memory + * copy and memory move. Besides, include some helper function for + * printf family API, such as SecVsnprintfImpl + * Author: lishunda + * Create: 2014-02-25 + */ + +/* Avoid duplicate header files,not include securecutil.h */ +#include "securecutil.h" + +#if defined(ANDROID) && (SECUREC_HAVE_WCTOMB || SECUREC_HAVE_MBTOWC) +#include +#if SECUREC_HAVE_WCTOMB +/* + * Convert wide characters to narrow multi-bytes + */ +int wctomb(char *s, wchar_t wc) +{ + return wcrtomb(s, wc, NULL); +} +#endif + +#if SECUREC_HAVE_MBTOWC +/* + * Converting narrow multi-byte characters to wide characters + */ +int mbtowc(wchar_t *pwc, const char *s, size_t n) +{ + return mbrtowc(pwc, s, n, NULL); +} +#endif +#endif + diff --git a/third_party/bounds_checking_function/src/securecutil.h b/third_party/bounds_checking_function/src/securecutil.h new file mode 100644 index 0000000..38cbd3e --- /dev/null +++ b/third_party/bounds_checking_function/src/securecutil.h @@ -0,0 +1,559 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Define macro, data struct, and declare internal used function prototype, + * which is used by secure functions. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECURECUTIL_H_46C86578_F8FF_4E49_8E64_9B175241761F +#define SECURECUTIL_H_46C86578_F8FF_4E49_8E64_9B175241761F +#include "securec.h" + +#if (defined(_MSC_VER)) && (_MSC_VER >= 1400) +/* Shield compilation alerts using discarded functions and Constant expression to maximize code compatibility */ +#define SECUREC_MASK_MSVC_CRT_WARNING __pragma(warning(push)) \ + __pragma(warning(disable : 4996 4127)) +#define SECUREC_END_MASK_MSVC_CRT_WARNING __pragma(warning(pop)) +#else +#define SECUREC_MASK_MSVC_CRT_WARNING +#define SECUREC_END_MASK_MSVC_CRT_WARNING +#endif +#define SECUREC_WHILE_ZERO SECUREC_MASK_MSVC_CRT_WARNING while (0) SECUREC_END_MASK_MSVC_CRT_WARNING + +/* Automatically identify the platform that supports strnlen function, and use this function to improve performance */ +#ifndef SECUREC_HAVE_STRNLEN +#if (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 700) || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200809L) +#if SECUREC_IN_KERNEL +#define SECUREC_HAVE_STRNLEN 0 +#else +#if defined(__GLIBC__) && __GLIBC__ >= 2 && defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 10 +#define SECUREC_HAVE_STRNLEN 1 +#else +#define SECUREC_HAVE_STRNLEN 0 +#endif +#endif +#else +#define SECUREC_HAVE_STRNLEN 0 +#endif +#endif + +#if SECUREC_IN_KERNEL +/* In kernel disbale functions */ +#ifndef SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_SCANF_FILE 0 +#endif +#ifndef SECUREC_ENABLE_SCANF_FLOAT +#define SECUREC_ENABLE_SCANF_FLOAT 0 +#endif +#ifndef SECUREC_ENABLE_SPRINTF_FLOAT +#define SECUREC_ENABLE_SPRINTF_FLOAT 0 +#endif +#ifndef SECUREC_HAVE_MBTOWC +#define SECUREC_HAVE_MBTOWC 0 +#endif +#ifndef SECUREC_HAVE_WCTOMB +#define SECUREC_HAVE_WCTOMB 0 +#endif +#ifndef SECUREC_HAVE_WCHART +#define SECUREC_HAVE_WCHART 0 +#endif +#else /* Not in kernel */ +/* Systems that do not support file, can define this macro to 0. */ +#ifndef SECUREC_ENABLE_SCANF_FILE +#define SECUREC_ENABLE_SCANF_FILE 1 +#endif +#ifndef SECUREC_ENABLE_SCANF_FLOAT +#define SECUREC_ENABLE_SCANF_FLOAT 1 +#endif +/* Systems that do not support float, can define this macro to 0. */ +#ifndef SECUREC_ENABLE_SPRINTF_FLOAT +#define SECUREC_ENABLE_SPRINTF_FLOAT 1 +#endif +#ifndef SECUREC_HAVE_MBTOWC +#define SECUREC_HAVE_MBTOWC 1 +#endif +#ifndef SECUREC_HAVE_WCTOMB +#define SECUREC_HAVE_WCTOMB 1 +#endif +#ifndef SECUREC_HAVE_WCHART +#define SECUREC_HAVE_WCHART 1 +#endif +#endif + +#ifndef SECUREC_USE_STD_UNGETC +#define SECUREC_USE_STD_UNGETC 1 +#endif + +#ifndef SECUREC_ENABLE_INLINE +#define SECUREC_ENABLE_INLINE 0 +#endif + +#ifndef SECUREC_INLINE +#if SECUREC_ENABLE_INLINE +#define SECUREC_INLINE static inline +#else +#define SECUREC_INLINE static +#endif +#endif + +#ifndef SECUREC_WARP_OUTPUT +#if SECUREC_IN_KERNEL +#define SECUREC_WARP_OUTPUT 1 +#else +#define SECUREC_WARP_OUTPUT 0 +#endif +#endif + +#ifndef SECUREC_STREAM_STDIN +#define SECUREC_STREAM_STDIN stdin +#endif + +#define SECUREC_MUL_SIXTEEN(x) ((x) << 4U) +#define SECUREC_MUL_EIGHT(x) ((x) << 3U) +#define SECUREC_MUL_TEN(x) ((((x) << 2U) + (x)) << 1U) +/* Limited format input and output width, use signed integer */ +#define SECUREC_MAX_WIDTH_LEN_DIV_TEN 21474836 +#define SECUREC_MAX_WIDTH_LEN (SECUREC_MAX_WIDTH_LEN_DIV_TEN * 10) +/* Is the x multiplied by 10 greater than */ +#define SECUREC_MUL_TEN_ADD_BEYOND_MAX(x) (((x) > SECUREC_MAX_WIDTH_LEN_DIV_TEN)) + +#define SECUREC_FLOAT_BUFSIZE (309 + 40) /* Max length of double value */ +#define SECUREC_FLOAT_BUFSIZE_LB (4932 + 40) /* Max length of long double value */ +#define SECUREC_FLOAT_DEFAULT_PRECISION 6 + +/* This macro does not handle pointer equality or integer overflow */ +#define SECUREC_MEMORY_NO_OVERLAP(dest, src, count) \ + (((src) < (dest) && ((const char *)(src) + (count)) <= (char *)(dest)) || \ + ((dest) < (src) && ((char *)(dest) + (count)) <= (const char *)(src))) + +#define SECUREC_MEMORY_IS_OVERLAP(dest, src, count) \ + (((src) < (dest) && ((const char *)(src) + (count)) > (char *)(dest)) || \ + ((dest) < (src) && ((char *)(dest) + (count)) > (const char *)(src))) + +/* + * Check whether the strings overlap, len is the length of the string not include terminator + * Length is related to data type char or wchar , do not force conversion of types + */ +#define SECUREC_STRING_NO_OVERLAP(dest, src, len) \ + (((src) < (dest) && ((src) + (len)) < (dest)) || \ + ((dest) < (src) && ((dest) + (len)) < (src))) + +/* + * Check whether the strings overlap for strcpy wcscpy function, dest len and src Len are not include terminator + * Length is related to data type char or wchar , do not force conversion of types + */ +#define SECUREC_STRING_IS_OVERLAP(dest, src, len) \ + (((src) < (dest) && ((src) + (len)) >= (dest)) || \ + ((dest) < (src) && ((dest) + (len)) >= (src))) + +/* + * Check whether the strings overlap for strcat wcscat function, dest len and src Len are not include terminator + * Length is related to data type char or wchar , do not force conversion of types + */ +#define SECUREC_CAT_STRING_IS_OVERLAP(dest, destLen, src, srcLen) \ + (((dest) < (src) && ((dest) + (destLen) + (srcLen)) >= (src)) || \ + ((src) < (dest) && ((src) + (srcLen)) >= (dest))) + +#if SECUREC_HAVE_STRNLEN +#define SECUREC_CALC_STR_LEN(str, maxLen, outLen) do { \ + *(outLen) = strnlen((str), (maxLen)); \ +} SECUREC_WHILE_ZERO +#define SECUREC_CALC_STR_LEN_OPT(str, maxLen, outLen) do { \ + if ((maxLen) > 8) { \ + /* Optimization or len less then 8 */ \ + if (*((str) + 0) == '\0') { \ + *(outLen) = 0; \ + } else if (*((str) + 1) == '\0') { \ + *(outLen) = 1; \ + } else if (*((str) + 2) == '\0') { \ + *(outLen) = 2; \ + } else if (*((str) + 3) == '\0') { \ + *(outLen) = 3; \ + } else if (*((str) + 4) == '\0') { \ + *(outLen) = 4; \ + } else if (*((str) + 5) == '\0') { \ + *(outLen) = 5; \ + } else if (*((str) + 6) == '\0') { \ + *(outLen) = 6; \ + } else if (*((str) + 7) == '\0') { \ + *(outLen) = 7; \ + } else if (*((str) + 8) == '\0') { \ + /* Optimization with a length of 8 */ \ + *(outLen) = 8; \ + } else { \ + /* The offset is 8 because the performance of 8 byte alignment is high */ \ + *(outLen) = 8 + strnlen((str) + 8, (maxLen) - 8); \ + } \ + } else { \ + SECUREC_CALC_STR_LEN((str), (maxLen), (outLen)); \ + } \ +} SECUREC_WHILE_ZERO +#else +#define SECUREC_CALC_STR_LEN(str, maxLen, outLen) do { \ + const char *strEnd_ = (const char *)(str); \ + size_t availableSize_ = (size_t)(maxLen); \ + while (availableSize_ > 0 && *strEnd_ != '\0') { \ + --availableSize_; \ + ++strEnd_; \ + } \ + *(outLen) = (size_t)(strEnd_ - (str)); \ +} SECUREC_WHILE_ZERO +#define SECUREC_CALC_STR_LEN_OPT SECUREC_CALC_STR_LEN +#endif + +#define SECUREC_CALC_WSTR_LEN(str, maxLen, outLen) do { \ + const wchar_t *strEnd_ = (const wchar_t *)(str); \ + size_t len_ = 0; \ + while (len_ < (maxLen) && *strEnd_ != L'\0') { \ + ++len_; \ + ++strEnd_; \ + } \ + *(outLen) = len_; \ +} SECUREC_WHILE_ZERO + +/* + * Performance optimization, product may disable inline function. + * Using function pointer for MEMSET to prevent compiler optimization when cleaning up memory. + */ +#ifdef SECUREC_USE_ASM +#define SECUREC_MEMSET_FUNC_OPT memset_opt +#define SECUREC_MEMCPY_FUNC_OPT memcpy_opt +#else +#define SECUREC_MEMSET_FUNC_OPT memset +#define SECUREC_MEMCPY_FUNC_OPT memcpy +#endif + +#define SECUREC_MEMCPY_WARP_OPT(dest, src, count) (void)SECUREC_MEMCPY_FUNC_OPT((dest), (src), (count)) + +#ifndef SECUREC_MEMSET_INDIRECT_USE +/* Can be turned off for scenarios that do not allow pointer calls */ +#define SECUREC_MEMSET_INDIRECT_USE 1 +#endif + +#if SECUREC_MEMSET_INDIRECT_USE +#define SECUREC_MEMSET_WARP_OPT(dest, value, count) do { \ + void *(* const volatile fn_)(void *s_, int c_, size_t n_) = SECUREC_MEMSET_FUNC_OPT; \ + (void)(*fn_)((dest), (value), (count)); \ +} SECUREC_WHILE_ZERO +#else +#define SECUREC_MEMSET_WARP_OPT(dest, value, count) (void)SECUREC_MEMSET_FUNC_OPT((dest), (value), (count)) +#endif + +#ifdef SECUREC_FORMAT_OUTPUT_INPUT +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) || defined(__ARMCC_VERSION) +typedef __int64 SecInt64; +typedef unsigned __int64 SecUnsignedInt64; +#if defined(__ARMCC_VERSION) +typedef unsigned int SecUnsignedInt32; +#else +typedef unsigned __int32 SecUnsignedInt32; +#endif +#else +typedef unsigned int SecUnsignedInt32; +typedef long long SecInt64; +typedef unsigned long long SecUnsignedInt64; +#endif + +#ifdef SECUREC_FOR_WCHAR +#if defined(SECUREC_VXWORKS_PLATFORM) && !defined(__WINT_TYPE__) +typedef wchar_t wint_t; +#endif +#ifndef WEOF +#define WEOF ((wchar_t)(-1)) +#endif +#define SECUREC_CHAR(x) L ## x +typedef wchar_t SecChar; +typedef wchar_t SecUnsignedChar; +typedef wint_t SecInt; +typedef wint_t SecUnsignedInt; +#else /* no SECUREC_FOR_WCHAR */ +#define SECUREC_CHAR(x) (x) +typedef char SecChar; +typedef unsigned char SecUnsignedChar; +typedef int SecInt; +typedef unsigned int SecUnsignedInt; +#endif +#endif + +/* + * Determine whether the address is 8-byte aligned + * Some systems do not have uintptr_t type, so use NULL to clear tool alarm 507 + */ +#define SECUREC_ADDR_ALIGNED_8(addr) ((((size_t)(addr)) & 7U) == 0) /* Use 7 to check aligned 8 */ + +/* + * If you define the memory allocation function, you need to define the function prototype. + * You can define this macro as a header file. + */ +#if defined(SECUREC_MALLOC_PROTOTYPE) +SECUREC_MALLOC_PROTOTYPE +#endif + +#ifndef SECUREC_MALLOC +#define SECUREC_MALLOC(x) malloc((size_t)(x)) +#endif + +#ifndef SECUREC_FREE +#define SECUREC_FREE(x) free((void *)(x)) +#endif + +/* Improve performance with struct assignment, buf1 is not defined to avoid tool false positive */ +#define SECUREC_COPY_VALUE_BY_STRUCT(dest, src, n) do { \ + *(SecStrBuf##n *)(void *)(dest) = *(const SecStrBuf##n *)(const void *)(src); \ +} SECUREC_WHILE_ZERO + +typedef struct { + unsigned char buf[2]; /* Performance optimization code structure assignment length 2 bytes */ +} SecStrBuf2; +typedef struct { + unsigned char buf[3]; /* Performance optimization code structure assignment length 3 bytes */ +} SecStrBuf3; +typedef struct { + unsigned char buf[4]; /* Performance optimization code structure assignment length 4 bytes */ +} SecStrBuf4; +typedef struct { + unsigned char buf[5]; /* Performance optimization code structure assignment length 5 bytes */ +} SecStrBuf5; +typedef struct { + unsigned char buf[6]; /* Performance optimization code structure assignment length 6 bytes */ +} SecStrBuf6; +typedef struct { + unsigned char buf[7]; /* Performance optimization code structure assignment length 7 bytes */ +} SecStrBuf7; +typedef struct { + unsigned char buf[8]; /* Performance optimization code structure assignment length 8 bytes */ +} SecStrBuf8; +typedef struct { + unsigned char buf[9]; /* Performance optimization code structure assignment length 9 bytes */ +} SecStrBuf9; +typedef struct { + unsigned char buf[10]; /* Performance optimization code structure assignment length 10 bytes */ +} SecStrBuf10; +typedef struct { + unsigned char buf[11]; /* Performance optimization code structure assignment length 11 bytes */ +} SecStrBuf11; +typedef struct { + unsigned char buf[12]; /* Performance optimization code structure assignment length 12 bytes */ +} SecStrBuf12; +typedef struct { + unsigned char buf[13]; /* Performance optimization code structure assignment length 13 bytes */ +} SecStrBuf13; +typedef struct { + unsigned char buf[14]; /* Performance optimization code structure assignment length 14 bytes */ +} SecStrBuf14; +typedef struct { + unsigned char buf[15]; /* Performance optimization code structure assignment length 15 bytes */ +} SecStrBuf15; +typedef struct { + unsigned char buf[16]; /* Performance optimization code structure assignment length 16 bytes */ +} SecStrBuf16; +typedef struct { + unsigned char buf[17]; /* Performance optimization code structure assignment length 17 bytes */ +} SecStrBuf17; +typedef struct { + unsigned char buf[18]; /* Performance optimization code structure assignment length 18 bytes */ +} SecStrBuf18; +typedef struct { + unsigned char buf[19]; /* Performance optimization code structure assignment length 19 bytes */ +} SecStrBuf19; +typedef struct { + unsigned char buf[20]; /* Performance optimization code structure assignment length 20 bytes */ +} SecStrBuf20; +typedef struct { + unsigned char buf[21]; /* Performance optimization code structure assignment length 21 bytes */ +} SecStrBuf21; +typedef struct { + unsigned char buf[22]; /* Performance optimization code structure assignment length 22 bytes */ +} SecStrBuf22; +typedef struct { + unsigned char buf[23]; /* Performance optimization code structure assignment length 23 bytes */ +} SecStrBuf23; +typedef struct { + unsigned char buf[24]; /* Performance optimization code structure assignment length 24 bytes */ +} SecStrBuf24; +typedef struct { + unsigned char buf[25]; /* Performance optimization code structure assignment length 25 bytes */ +} SecStrBuf25; +typedef struct { + unsigned char buf[26]; /* Performance optimization code structure assignment length 26 bytes */ +} SecStrBuf26; +typedef struct { + unsigned char buf[27]; /* Performance optimization code structure assignment length 27 bytes */ +} SecStrBuf27; +typedef struct { + unsigned char buf[28]; /* Performance optimization code structure assignment length 28 bytes */ +} SecStrBuf28; +typedef struct { + unsigned char buf[29]; /* Performance optimization code structure assignment length 29 bytes */ +} SecStrBuf29; +typedef struct { + unsigned char buf[30]; /* Performance optimization code structure assignment length 30 bytes */ +} SecStrBuf30; +typedef struct { + unsigned char buf[31]; /* Performance optimization code structure assignment length 31 bytes */ +} SecStrBuf31; +typedef struct { + unsigned char buf[32]; /* Performance optimization code structure assignment length 32 bytes */ +} SecStrBuf32; +typedef struct { + unsigned char buf[33]; /* Performance optimization code structure assignment length 33 bytes */ +} SecStrBuf33; +typedef struct { + unsigned char buf[34]; /* Performance optimization code structure assignment length 34 bytes */ +} SecStrBuf34; +typedef struct { + unsigned char buf[35]; /* Performance optimization code structure assignment length 35 bytes */ +} SecStrBuf35; +typedef struct { + unsigned char buf[36]; /* Performance optimization code structure assignment length 36 bytes */ +} SecStrBuf36; +typedef struct { + unsigned char buf[37]; /* Performance optimization code structure assignment length 37 bytes */ +} SecStrBuf37; +typedef struct { + unsigned char buf[38]; /* Performance optimization code structure assignment length 38 bytes */ +} SecStrBuf38; +typedef struct { + unsigned char buf[39]; /* Performance optimization code structure assignment length 39 bytes */ +} SecStrBuf39; +typedef struct { + unsigned char buf[40]; /* Performance optimization code structure assignment length 40 bytes */ +} SecStrBuf40; +typedef struct { + unsigned char buf[41]; /* Performance optimization code structure assignment length 41 bytes */ +} SecStrBuf41; +typedef struct { + unsigned char buf[42]; /* Performance optimization code structure assignment length 42 bytes */ +} SecStrBuf42; +typedef struct { + unsigned char buf[43]; /* Performance optimization code structure assignment length 43 bytes */ +} SecStrBuf43; +typedef struct { + unsigned char buf[44]; /* Performance optimization code structure assignment length 44 bytes */ +} SecStrBuf44; +typedef struct { + unsigned char buf[45]; /* Performance optimization code structure assignment length 45 bytes */ +} SecStrBuf45; +typedef struct { + unsigned char buf[46]; /* Performance optimization code structure assignment length 46 bytes */ +} SecStrBuf46; +typedef struct { + unsigned char buf[47]; /* Performance optimization code structure assignment length 47 bytes */ +} SecStrBuf47; +typedef struct { + unsigned char buf[48]; /* Performance optimization code structure assignment length 48 bytes */ +} SecStrBuf48; +typedef struct { + unsigned char buf[49]; /* Performance optimization code structure assignment length 49 bytes */ +} SecStrBuf49; +typedef struct { + unsigned char buf[50]; /* Performance optimization code structure assignment length 50 bytes */ +} SecStrBuf50; +typedef struct { + unsigned char buf[51]; /* Performance optimization code structure assignment length 51 bytes */ +} SecStrBuf51; +typedef struct { + unsigned char buf[52]; /* Performance optimization code structure assignment length 52 bytes */ +} SecStrBuf52; +typedef struct { + unsigned char buf[53]; /* Performance optimization code structure assignment length 53 bytes */ +} SecStrBuf53; +typedef struct { + unsigned char buf[54]; /* Performance optimization code structure assignment length 54 bytes */ +} SecStrBuf54; +typedef struct { + unsigned char buf[55]; /* Performance optimization code structure assignment length 55 bytes */ +} SecStrBuf55; +typedef struct { + unsigned char buf[56]; /* Performance optimization code structure assignment length 56 bytes */ +} SecStrBuf56; +typedef struct { + unsigned char buf[57]; /* Performance optimization code structure assignment length 57 bytes */ +} SecStrBuf57; +typedef struct { + unsigned char buf[58]; /* Performance optimization code structure assignment length 58 bytes */ +} SecStrBuf58; +typedef struct { + unsigned char buf[59]; /* Performance optimization code structure assignment length 59 bytes */ +} SecStrBuf59; +typedef struct { + unsigned char buf[60]; /* Performance optimization code structure assignment length 60 bytes */ +} SecStrBuf60; +typedef struct { + unsigned char buf[61]; /* Performance optimization code structure assignment length 61 bytes */ +} SecStrBuf61; +typedef struct { + unsigned char buf[62]; /* Performance optimization code structure assignment length 62 bytes */ +} SecStrBuf62; +typedef struct { + unsigned char buf[63]; /* Performance optimization code structure assignment length 63 bytes */ +} SecStrBuf63; +typedef struct { + unsigned char buf[64]; /* Performance optimization code structure assignment length 64 bytes */ +} SecStrBuf64; + +/* + * User can change the error handler by modify the following definition, + * such as logging the detail error in file. + */ +#if defined(_DEBUG) || defined(DEBUG) +#if defined(SECUREC_ERROR_HANDLER_BY_ASSERT) +#define SECUREC_ERROR_INVALID_PARAMTER(msg) assert(msg "invalid argument" == NULL) +#define SECUREC_ERROR_INVALID_RANGE(msg) assert(msg "invalid dest buffer size" == NULL) +#define SECUREC_ERROR_BUFFER_OVERLAP(msg) assert(msg "buffer overlap" == NULL) +#elif defined(SECUREC_ERROR_HANDLER_BY_PRINTF) +#if SECUREC_IN_KERNEL +#define SECUREC_ERROR_INVALID_PARAMTER(msg) printk("%s invalid argument\n", msg) +#define SECUREC_ERROR_INVALID_RANGE(msg) printk("%s invalid dest buffer size\n", msg) +#define SECUREC_ERROR_BUFFER_OVERLAP(msg) printk("%s buffer overlap\n", msg) +#else +#define SECUREC_ERROR_INVALID_PARAMTER(msg) printf("%s invalid argument\n", msg) +#define SECUREC_ERROR_INVALID_RANGE(msg) printf("%s invalid dest buffer size\n", msg) +#define SECUREC_ERROR_BUFFER_OVERLAP(msg) printf("%s buffer overlap\n", msg) +#endif +#elif defined(SECUREC_ERROR_HANDLER_BY_FILE_LOG) +#define SECUREC_ERROR_INVALID_PARAMTER(msg) LogSecureCRuntimeError(msg " EINVAL\n") +#define SECUREC_ERROR_INVALID_RANGE(msg) LogSecureCRuntimeError(msg " ERANGE\n") +#define SECUREC_ERROR_BUFFER_OVERLAP(msg) LogSecureCRuntimeError(msg " EOVERLAP\n") +#endif +#endif + +/* Default handler is none */ +#ifndef SECUREC_ERROR_INVALID_PARAMTER +#define SECUREC_ERROR_INVALID_PARAMTER(msg) +#endif +#ifndef SECUREC_ERROR_INVALID_RANGE +#define SECUREC_ERROR_INVALID_RANGE(msg) +#endif +#ifndef SECUREC_ERROR_BUFFER_OVERLAP +#define SECUREC_ERROR_BUFFER_OVERLAP(msg) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Assembly language memory copy and memory set for X86 or MIPS ... */ +#ifdef SECUREC_USE_ASM + void *memcpy_opt(void *dest, const void *src, size_t n); + void *memset_opt(void *s, int c, size_t n); +#endif + +#if defined(SECUREC_ERROR_HANDLER_BY_FILE_LOG) + void LogSecureCRuntimeError(const char *errDetail); +#endif + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif + diff --git a/third_party/bounds_checking_function/src/secureinput_a.c b/third_party/bounds_checking_function/src/secureinput_a.c new file mode 100644 index 0000000..10b7f35 --- /dev/null +++ b/third_party/bounds_checking_function/src/secureinput_a.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: By defining data type for ANSI string and including "input.inl", + * this file generates real underlying function used by scanf family API. + * Author: lishunda + * Create: 2014-02-25 + */ + +#define SECUREC_FORMAT_OUTPUT_INPUT 1 +#ifdef SECUREC_FOR_WCHAR +#undef SECUREC_FOR_WCHAR +#endif + +#include "secinput.h" + +#include "input.inl" + +SECUREC_INLINE int SecIsDigit(SecInt ch) +{ + /* SecInt to unsigned char clear 571, use bit mask to clear negative return of ch */ + return isdigit((int)((unsigned int)(unsigned char)(ch) & 0xffU)); +} +SECUREC_INLINE int SecIsXdigit(SecInt ch) +{ + return isxdigit((int)((unsigned int)(unsigned char)(ch) & 0xffU)); +} +SECUREC_INLINE int SecIsSpace(SecInt ch) +{ + return isspace((int)((unsigned int)(unsigned char)(ch) & 0xffU)); +} + diff --git a/third_party/bounds_checking_function/src/secureinput_w.c b/third_party/bounds_checking_function/src/secureinput_w.c new file mode 100644 index 0000000..5adc3c0 --- /dev/null +++ b/third_party/bounds_checking_function/src/secureinput_w.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: By defining data type for UNICODE string and including "input.inl", + * this file generates real underlying function used by scanf family API. + * Author: lishunda + * Create: 2014-02-25 + */ + +/* If some platforms don't have wchar.h, dont't include it */ +#if !(defined(SECUREC_VXWORKS_PLATFORM)) +/* If there is no macro below, it will cause vs2010 compiling alarm */ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +#ifndef __STDC_WANT_SECURE_LIB__ +/* The order of adjustment is to eliminate alarm of Duplicate Block */ +#define __STDC_WANT_SECURE_LIB__ 0 +#endif +#ifndef _CRTIMP_ALTERNATIVE +#define _CRTIMP_ALTERNATIVE /* Comment microsoft *_s function */ +#endif +#endif +#include +#endif + +/* fix redefined */ +#undef SECUREC_ENABLE_WCHAR_FUNC +/* Disable wchar func to clear vs warning */ +#define SECUREC_ENABLE_WCHAR_FUNC 0 +#define SECUREC_FORMAT_OUTPUT_INPUT 1 + +#ifndef SECUREC_FOR_WCHAR +#define SECUREC_FOR_WCHAR +#endif + +#include "secinput.h" + +#include "input.inl" + +SECUREC_INLINE unsigned int SecWcharHighBits(SecInt ch) +{ + /* Convert int to unsigned int clear 571 */ + return ((unsigned int)(int)ch & (~0xffU)); +} + +SECUREC_INLINE unsigned char SecWcharLowByte(SecInt ch) +{ + /* Convert int to unsigned int clear 571 */ + return (unsigned char)((unsigned int)(int)ch & 0xffU); +} + +SECUREC_INLINE int SecIsDigit(SecInt ch) +{ + if (SecWcharHighBits(ch) != 0) { + return 0; /* Same as isdigit */ + } + return isdigit((int)SecWcharLowByte(ch)); +} + +SECUREC_INLINE int SecIsXdigit(SecInt ch) +{ + if (SecWcharHighBits(ch) != 0) { + return 0; /* Same as isxdigit */ + } + return isxdigit((int)SecWcharLowByte(ch)); +} + +SECUREC_INLINE int SecIsSpace(SecInt ch) +{ + return iswspace((wint_t)(int)(ch)); +} + diff --git a/third_party/bounds_checking_function/src/secureprintoutput.h b/third_party/bounds_checking_function/src/secureprintoutput.h new file mode 100644 index 0000000..843217a --- /dev/null +++ b/third_party/bounds_checking_function/src/secureprintoutput.h @@ -0,0 +1,124 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: Define macro, enum, data struct, and declare internal used function + * prototype, which is used by output.inl, secureprintoutput_w.c and + * secureprintoutput_a.c. + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECUREPRINTOUTPUT_H_E950DA2C_902F_4B15_BECD_948E99090D9C +#define SECUREPRINTOUTPUT_H_E950DA2C_902F_4B15_BECD_948E99090D9C +#include "securecutil.h" + +/* + * Flag definitions. + * Using macros instead of enumerations is because some of the enumerated types under the compiler are 16bit. + */ +#define SECUREC_FLAG_SIGN 0x00001U +#define SECUREC_FLAG_SIGN_SPACE 0x00002U +#define SECUREC_FLAG_LEFT 0x00004U +#define SECUREC_FLAG_LEADZERO 0x00008U +#define SECUREC_FLAG_LONG 0x00010U +#define SECUREC_FLAG_SHORT 0x00020U +#define SECUREC_FLAG_SIGNED 0x00040U +#define SECUREC_FLAG_ALTERNATE 0x00080U +#define SECUREC_FLAG_NEGATIVE 0x00100U +#define SECUREC_FLAG_FORCE_OCTAL 0x00200U +#define SECUREC_FLAG_LONG_DOUBLE 0x00400U +#define SECUREC_FLAG_WIDECHAR 0x00800U +#define SECUREC_FLAG_LONGLONG 0x01000U +#define SECUREC_FLAG_CHAR 0x02000U +#define SECUREC_FLAG_POINTER 0x04000U +#define SECUREC_FLAG_I64 0x08000U +#define SECUREC_FLAG_PTRDIFF 0x10000U +#define SECUREC_FLAG_SIZE 0x20000U +#ifdef SECUREC_COMPATIBLE_LINUX_FORMAT +#define SECUREC_FLAG_INTMAX 0x40000U +#endif + +/* State definitions. Identify the status of the current format */ +typedef enum { + STAT_NORMAL, + STAT_PERCENT, + STAT_FLAG, + STAT_WIDTH, + STAT_DOT, + STAT_PRECIS, + STAT_SIZE, + STAT_TYPE, + STAT_INVALID +} SecFmtState; + +/* Format output buffer pointer and available size */ +typedef struct { + int count; + char *cur; +} SecPrintfStream; + +#ifndef SECUREC_BUFFER_SIZE +#if SECUREC_IN_KERNEL +#define SECUREC_BUFFER_SIZE 32 +#elif defined(SECUREC_STACK_SIZE_LESS_THAN_1K) +/* + * SECUREC BUFFER SIZE Can not be less than 23 + * The length of the octal representation of 64-bit integers with zero lead + */ +#define SECUREC_BUFFER_SIZE 256 +#else +#define SECUREC_BUFFER_SIZE 512 +#endif +#endif +#if SECUREC_BUFFER_SIZE < 23 +#error SECUREC_BUFFER_SIZE Can not be less than 23 +#endif +/* Buffer size for wchar, use 4 to make the compiler aligns as 8 bytes as possible */ +#define SECUREC_WCHAR_BUFFER_SIZE 4 + +#define SECUREC_MAX_PRECISION SECUREC_BUFFER_SIZE +/* Max. # bytes in multibyte char ,see MB_LEN_MAX */ +#define SECUREC_MB_LEN 16 +/* The return value of the internal function, which is returned when truncated */ +#define SECUREC_PRINTF_TRUNCATE (-2) + +#define SECUREC_VSPRINTF_PARAM_ERROR(format, strDest, destMax, maxLimit) \ + ((format) == NULL || (strDest) == NULL || (destMax) == 0 || (destMax) > (maxLimit)) + +#define SECUREC_VSPRINTF_CLEAR_DEST(strDest, destMax, maxLimit) do { \ + if ((strDest) != NULL && (destMax) > 0 && (destMax) <= (maxLimit)) { \ + *(strDest) = '\0'; \ + } \ +} SECUREC_WHILE_ZERO + +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT +#define SECUREC_VSNPRINTF_PARAM_ERROR(format, strDest, destMax, count, maxLimit) \ + (((format) == NULL || (strDest) == NULL || (destMax) == 0 || (destMax) > (maxLimit)) || \ + ((count) > (SECUREC_STRING_MAX_LEN - 1) && (count) != (size_t)(-1))) + +#else +#define SECUREC_VSNPRINTF_PARAM_ERROR(format, strDest, destMax, count, maxLimit) \ + (((format) == NULL || (strDest) == NULL || (destMax) == 0 || (destMax) > (maxLimit)) || \ + ((count) > (SECUREC_STRING_MAX_LEN - 1))) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + int SecVsnprintfImpl(char *string, size_t count, const char *format, va_list argList); +#ifdef SECUREC_FOR_WCHAR + int SecVswprintfImpl(wchar_t *string, size_t sizeInWchar, const wchar_t *format, va_list argList); +#endif +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/third_party/bounds_checking_function/src/secureprintoutput_a.c b/third_party/bounds_checking_function/src/secureprintoutput_a.c new file mode 100644 index 0000000..64762c0 --- /dev/null +++ b/third_party/bounds_checking_function/src/secureprintoutput_a.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: By defining corresponding macro for ANSI string and including "output.inl", + * this file generates real underlying function used by printf family API. + * Author: lishunda + * Create: 2014-02-25 + */ + +#define SECUREC_FORMAT_OUTPUT_INPUT 1 + +#ifdef SECUREC_FOR_WCHAR +#undef SECUREC_FOR_WCHAR +#endif + +#include "secureprintoutput.h" +#if SECUREC_WARP_OUTPUT +#define SECUREC_FORMAT_FLAG_TABLE_SIZE 128 +SECUREC_INLINE const char *SecSkipKnownFlags(const char *format) +{ + static const unsigned char flagTable[SECUREC_FORMAT_FLAG_TABLE_SIZE] = { + /* + * Known flag is "0123456789 +-#hlLwZzjqt*I$" + */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + const char *fmt = format; + while (*fmt != '\0') { + char fmtChar = *fmt; + if ((unsigned char)fmtChar > 0x7f) { /* 0x7f is upper limit of format char value */ + break; + } + if (flagTable[(unsigned char)fmtChar] == 0) { + break; + } + ++fmt; + } + return fmt; +} + +SECUREC_INLINE int SecFormatContainN(const char *format) +{ + const char *fmt = format; + while (*fmt != '\0') { + ++fmt; + /* Skip normal char */ + if (*(fmt - 1) != '%') { + continue; + } + /* Meet %% */ + if (*fmt == '%') { + ++fmt; /* Point to the character after the %. Correct handling %%xx */ + continue; + } + /* Now parse %..., fmt point to the character after the % */ + fmt = SecSkipKnownFlags(fmt); + if (*fmt == 'n') { + return 1; + } + } + return 0; +} +/* + * Multi character formatted output implementation, the count include \0 character, must be greater than zero + */ +int SecVsnprintfImpl(char *string, size_t count, const char *format, va_list argList) +{ + int retVal; + if (SecFormatContainN(format) != 0) { + string[0] = '\0'; + return -1; + } + retVal = vsnprintf(string, count, format, argList); + if (retVal >= (int)count) { /* The size_t to int is ok, count max is SECUREC_STRING_MAX_LEN */ + /* The buffer was too small; we return truncation */ + string[count - 1] = '\0'; + return SECUREC_PRINTF_TRUNCATE; + } + if (retVal < 0) { + string[0] = '\0'; /* Empty the dest strDest */ + return -1; + } + return retVal; +} +#else +#if SECUREC_IN_KERNEL +#include +#endif + +#ifndef EOF +#define EOF (-1) +#endif + +#include "output.inl" + +/* + * Multi character formatted output implementation + */ +int SecVsnprintfImpl(char *string, size_t count, const char *format, va_list argList) +{ + SecPrintfStream str; + int retVal; + + str.count = (int)count; /* The count include \0 character, must be greater than zero */ + str.cur = string; + + retVal = SecOutputS(&str, format, argList); + if (retVal >= 0) { + if (SecPutZeroChar(&str) == 0) { + return retVal; + } + } + if (str.count < 0) { + /* The buffer was too small, then truncate */ + string[count - 1] = '\0'; + return SECUREC_PRINTF_TRUNCATE; + } + string[0] = '\0'; /* Empty the dest string */ + return -1; +} + +/* + * Write a wide character + */ +SECUREC_INLINE void SecWriteMultiChar(char ch, int num, SecPrintfStream *f, int *pnumwritten) +{ + int count; + for (count = num; count > 0; --count) { + --f->count; /* f -> count may be negative,indicating insufficient space */ + if (f->count < 0) { + *pnumwritten = -1; + return; + } + *(f->cur) = ch; + ++f->cur; + *pnumwritten = *pnumwritten + 1; + } +} + +/* + * Write string function, where this function is called, make sure that len is greater than 0 + */ +SECUREC_INLINE void SecWriteString(const char *string, int len, SecPrintfStream *f, int *pnumwritten) +{ + const char *str = string; + int count; + for (count = len; count > 0; --count) { + --f->count; /* f -> count may be negative,indicating insufficient space */ + if (f->count < 0) { + *pnumwritten = -1; + return; + } + *(f->cur) = *str; + ++f->cur; + ++str; + } + *pnumwritten = *pnumwritten + (int)(size_t)(str - string); +} +#endif + diff --git a/third_party/bounds_checking_function/src/secureprintoutput_w.c b/third_party/bounds_checking_function/src/secureprintoutput_w.c new file mode 100644 index 0000000..753d465 --- /dev/null +++ b/third_party/bounds_checking_function/src/secureprintoutput_w.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: By defining corresponding macro for UNICODE string and including "output.inl", + * this file generates real underlying function used by printf family API. + * Author: lishunda + * Create: 2014-02-25 + */ + +/* If some platforms don't have wchar.h, dont't include it */ +#if !(defined(SECUREC_VXWORKS_PLATFORM)) +/* If there is no macro above, it will cause compiling alarm */ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +#ifndef _CRTIMP_ALTERNATIVE +#define _CRTIMP_ALTERNATIVE /* Comment microsoft *_s function */ +#endif +#ifndef __STDC_WANT_SECURE_LIB__ +#define __STDC_WANT_SECURE_LIB__ 0 +#endif +#endif +#include +#endif + +/* fix redefined */ +#undef SECUREC_ENABLE_WCHAR_FUNC +/* Disable wchar func to clear vs warning */ +#define SECUREC_ENABLE_WCHAR_FUNC 0 +#define SECUREC_FORMAT_OUTPUT_INPUT 1 + +#ifndef SECUREC_FOR_WCHAR +#define SECUREC_FOR_WCHAR +#endif + +#if defined(SECUREC_WARP_OUTPUT) && SECUREC_WARP_OUTPUT +#undef SECUREC_WARP_OUTPUT +#define SECUREC_WARP_OUTPUT 0 +#endif + +#include "secureprintoutput.h" + +SECUREC_INLINE void SecWriteCharW(wchar_t ch, SecPrintfStream *f, int *pnumwritten); +SECUREC_INLINE int SecPutWcharStrEndingZero(SecPrintfStream *str, int zeroCount); + +#include "output.inl" + +/* + * Wide character formatted output implementation + */ +int SecVswprintfImpl(wchar_t *string, size_t sizeInWchar, const wchar_t *format, va_list argList) +{ + SecPrintfStream str; + int retVal; /* If initialization causes e838 */ + + str.cur = (char *)string; + /* This count include \0 character, Must be greater than zero */ + str.count = (int)(sizeInWchar * sizeof(wchar_t)); + + retVal = SecOutputSW(&str, format, argList); + if (retVal >= 0) { + if (SecPutWcharStrEndingZero(&str, (int)sizeof(wchar_t)) == 0) { + return retVal; + } + } + if (str.count < 0) { + /* The buffer was too small, then truncate */ + string[sizeInWchar - 1] = L'\0'; + return SECUREC_PRINTF_TRUNCATE; + } + string[0] = L'\0'; /* Empty the dest string */ + return -1; +} + +/* + * Output a wide character zero end into the SecPrintfStream structure + */ +SECUREC_INLINE int SecPutWcharStrEndingZero(SecPrintfStream *str, int zeroCount) +{ + int count; + for (count = zeroCount; count > 0; --count) { + if (SecPutZeroChar(str) != 0) { + return -1; + } + } + return 0; +} + +/* + * Output a wide character into the SecPrintfStream structure + */ +SECUREC_INLINE int SecPutCharW(wchar_t ch, SecPrintfStream *f) +{ + f->count -= (int)sizeof(wchar_t); /* f -> count may be negative,indicating insufficient space */ + if (f->count >= 0) { + *(wchar_t *)(void *)(f->cur) = ch; + f->cur += sizeof(wchar_t); + return 0; + } + return -1; +} + +/* + * Output a wide character into the SecPrintfStream structure, returns the number of characters written + */ +SECUREC_INLINE void SecWriteCharW(wchar_t ch, SecPrintfStream *f, int *pnumwritten) +{ + if (SecPutCharW(ch, f) == 0) { + *pnumwritten = *pnumwritten + 1; + } else { + *pnumwritten = -1; + } +} + +/* + * Output multiple wide character into the SecPrintfStream structure, returns the number of characters written + */ +SECUREC_INLINE void SecWriteMultiCharW(wchar_t ch, int num, SecPrintfStream *f, int *pnumwritten) +{ + int count; + for (count = num; count > 0; --count) { + SecWriteCharW(ch, f, pnumwritten); + if (*pnumwritten == -1) { + break; + } + } +} + +/* + * Output a wide string into the SecPrintfStream structure, returns the number of characters written + */ +SECUREC_INLINE void SecWriteStringW(const wchar_t *string, int len, SecPrintfStream *f, int *pnumwritten) +{ + const wchar_t *str = string; + int count; + for (count = len; count > 0; --count) { + SecWriteCharW(*str, f, pnumwritten); + ++str; + if (*pnumwritten == -1) { + break; + } + } +} + diff --git a/third_party/bounds_checking_function/src/snprintf_s.c b/third_party/bounds_checking_function/src/snprintf_s.c new file mode 100644 index 0000000..491c0a8 --- /dev/null +++ b/third_party/bounds_checking_function/src/snprintf_s.c @@ -0,0 +1,111 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: snprintf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +#if SECUREC_ENABLE_SNPRINTF +/* + * + * The snprintf_s function is equivalent to the snprintf function + * except for the parameter destMax/count and the explicit runtime-constraints violation + * The snprintf_s function formats and stores count or fewer characters in + * strDest and appends a terminating null. Each argument (if any) is converted + * and output according to the corresponding format specification in format. + * The formatting is consistent with the printf family of functions; If copying + * occurs between strings that overlap, the behavior is undefined. + * + * + * strDest Storage location for the output. + * destMax The size of the storage location for output. Size + * in bytes for snprintf_s or size in words for snwprintf_s. + * count Maximum number of character to store. + * format Format-control string. + * ... Optional arguments. + * + * + * strDest is updated + * + * + * return the number of characters written, not including the terminating null + * return -1 if an error occurs. + * return -1 if count < destMax and the output string has been truncated + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + * + */ +int snprintf_s(char *strDest, size_t destMax, size_t count, const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vsnprintf_s(strDest, destMax, count, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(snprintf_s); +#endif +#endif + +#if SECUREC_SNPRINTF_TRUNCATED +/* + * + * The snprintf_truncated_s function is equivalent to the snprintf function + * except for the parameter destMax/count and the explicit runtime-constraints violation + * The snprintf_truncated_s function formats and stores count or fewer characters in + * strDest and appends a terminating null. Each argument (if any) is converted + * and output according to the corresponding format specification in format. + * The formatting is consistent with the printf family of functions; If copying + * occurs between strings that overlap, the behavior is undefined. + * + * + * strDest Storage location for the output. + * destMax The size of the storage location for output. Size + * in bytes for snprintf_truncated_s or size in words for snwprintf_s. + * format Format-control string. + * ... Optional arguments. + * + * + * strDest is updated + * + * + * return the number of characters written, not including the terminating null + * return -1 if an error occurs. + * return destMax-1 if output string has been truncated + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + * + */ +int snprintf_truncated_s(char *strDest, size_t destMax, const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vsnprintf_truncated_s(strDest, destMax, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(snprintf_truncated_s); +#endif + +#endif + diff --git a/third_party/bounds_checking_function/src/sprintf_s.c b/third_party/bounds_checking_function/src/sprintf_s.c new file mode 100644 index 0000000..95b4485 --- /dev/null +++ b/third_party/bounds_checking_function/src/sprintf_s.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: sprintf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The sprintf_s function is equivalent to the sprintf function + * except for the parameter destMax and the explicit runtime-constraints violation + * The sprintf_s function formats and stores a series of characters and values + * in strDest. Each argument (if any) is converted and output according to + * the corresponding format specification in format. The format consists of + * ordinary characters and has the same form and function as the format argument + * for printf. A null character is appended after the last character written. + * If copying occurs between strings that overlap, the behavior is undefined. + * + * + * strDest Storage location for output. + * destMax Maximum number of characters to store. + * format Format-control string. + * ... Optional arguments + * + * + * strDest is updated + * + * + * return the number of bytes stored in strDest, not counting the terminating null character. + * return -1 if an error occurred. + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +int sprintf_s(char *strDest, size_t destMax, const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vsprintf_s(strDest, destMax, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(sprintf_s); +#endif + diff --git a/third_party/bounds_checking_function/src/sscanf_s.c b/third_party/bounds_checking_function/src/sscanf_s.c new file mode 100644 index 0000000..ba5680f --- /dev/null +++ b/third_party/bounds_checking_function/src/sscanf_s.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: sscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The sscanf_s function is equivalent to fscanf_s, + * except that input is obtained from a string (specified by the argument buffer) rather than from a stream + * The sscanf function reads data from buffer into the location given by each + * argument. Every argument must be a pointer to a variable with a type that + * corresponds to a type specifier in format. The format argument controls the + * interpretation of the input fields and has the same form and function as + * the format argument for the scanf function. + * If copying takes place between strings that overlap, the behavior is undefined. + * + * + * buffer Stored data. + * format Format control string, see Format Specifications. + * ... Optional arguments. + * + * + * ... The converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. + * A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int sscanf_s(const char *buffer, const char *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vsscanf_s(buffer, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(sscanf_s); +#endif + diff --git a/third_party/bounds_checking_function/src/strcat_s.c b/third_party/bounds_checking_function/src/strcat_s.c new file mode 100644 index 0000000..05c1c32 --- /dev/null +++ b/third_party/bounds_checking_function/src/strcat_s.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: strcat_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * Befor this function, the basic parameter checking has been done + */ +SECUREC_INLINE errno_t SecDoCat(char *strDest, size_t destMax, const char *strSrc) +{ + size_t destLen; + size_t srcLen; + size_t maxSrcLen; + SECUREC_CALC_STR_LEN(strDest, destMax, &destLen); + /* Only optimize strSrc, do not apply this function to strDest */ + maxSrcLen = destMax - destLen; + SECUREC_CALC_STR_LEN_OPT(strSrc, maxSrcLen, &srcLen); + + if (SECUREC_CAT_STRING_IS_OVERLAP(strDest, destLen, strSrc, srcLen)) { + strDest[0] = '\0'; + if (strDest + destLen <= strSrc && destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("strcat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_BUFFER_OVERLAP("strcat_s"); + return EOVERLAP_AND_RESET; + } + if (srcLen + destLen >= destMax || strDest == strSrc) { + strDest[0] = '\0'; + if (destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("strcat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_INVALID_RANGE("strcat_s"); + return ERANGE_AND_RESET; + } + SECUREC_MEMCPY_WARP_OPT(strDest + destLen, strSrc, srcLen + 1); /* Single character length include \0 */ + return EOK; +} + +/* + * + * The strcat_s function appends a copy of the string pointed to by strSrc (including the terminating null character) + * to the end of the string pointed to by strDest. + * The initial character of strSrc overwrites the terminating null character of strDest. + * strcat_s will return EOVERLAP_AND_RESET if the source and destination strings overlap. + * + * Note that the second parameter is the total size of the buffer, not the + * remaining size. + * + * + * strDest Null-terminated destination string buffer. + * destMax Size of the destination string buffer. + * strSrc Null-terminated source string buffer. + * + * + * strDest is updated + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN + * EINVAL_AND_RESET (strDest unterminated and all other parameters are valid) or + * (strDest != NULL and strSrc is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN) + * ERANGE destMax is 0 and destMax > SECUREC_STRING_MAX_LEN + * ERANGE_AND_RESET strDest have not enough space and all other parameters are valid and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t strcat_s(char *strDest, size_t destMax, const char *strSrc) +{ + if (destMax == 0 || destMax > SECUREC_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("strcat_s"); + return ERANGE; + } + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("strcat_s"); + if (strDest != NULL) { + strDest[0] = '\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + return SecDoCat(strDest, destMax, strSrc); +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(strcat_s); +#endif + diff --git a/third_party/bounds_checking_function/src/strcpy_s.c b/third_party/bounds_checking_function/src/strcpy_s.c new file mode 100644 index 0000000..e7921ea --- /dev/null +++ b/third_party/bounds_checking_function/src/strcpy_s.c @@ -0,0 +1,349 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: strcpy_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +#ifndef SECUREC_STRCPY_WITH_PERFORMANCE +#define SECUREC_STRCPY_WITH_PERFORMANCE 1 +#endif + +#define SECUREC_STRCPY_PARAM_OK(strDest, destMax, strSrc) ((destMax) > 0 && \ + (destMax) <= SECUREC_STRING_MAX_LEN && (strDest) != NULL && (strSrc) != NULL && (strDest) != (strSrc)) + +#if (!SECUREC_IN_KERNEL) && SECUREC_STRCPY_WITH_PERFORMANCE +#ifndef SECUREC_STRCOPY_THRESHOLD_SIZE +#define SECUREC_STRCOPY_THRESHOLD_SIZE 32UL +#endif +/* The purpose of converting to void is to clean up the alarm */ +#define SECUREC_SMALL_STR_COPY(strDest, strSrc, lenWithTerm) do { \ + if (SECUREC_ADDR_ALIGNED_8(strDest) && SECUREC_ADDR_ALIGNED_8(strSrc)) { \ + /* Use struct assignment */ \ + switch (lenWithTerm) { \ + case 1: \ + *(strDest) = *(strSrc); \ + break; \ + case 2: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 2); \ + break; \ + case 3: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 3); \ + break; \ + case 4: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 4); \ + break; \ + case 5: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 5); \ + break; \ + case 6: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 6); \ + break; \ + case 7: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 7); \ + break; \ + case 8: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 8); \ + break; \ + case 9: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 9); \ + break; \ + case 10: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 10); \ + break; \ + case 11: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 11); \ + break; \ + case 12: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 12); \ + break; \ + case 13: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 13); \ + break; \ + case 14: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 14); \ + break; \ + case 15: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 15); \ + break; \ + case 16: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 16); \ + break; \ + case 17: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 17); \ + break; \ + case 18: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 18); \ + break; \ + case 19: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 19); \ + break; \ + case 20: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 20); \ + break; \ + case 21: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 21); \ + break; \ + case 22: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 22); \ + break; \ + case 23: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 23); \ + break; \ + case 24: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 24); \ + break; \ + case 25: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 25); \ + break; \ + case 26: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 26); \ + break; \ + case 27: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 27); \ + break; \ + case 28: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 28); \ + break; \ + case 29: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 29); \ + break; \ + case 30: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 30); \ + break; \ + case 31: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 31); \ + break; \ + case 32: \ + SECUREC_COPY_VALUE_BY_STRUCT((strDest), (strSrc), 32); \ + break; \ + default: \ + /* Do nothing */ \ + break; \ + } /* END switch */ \ + } else { \ + char *tmpStrDest_ = (char *)(strDest); \ + const char *tmpStrSrc_ = (const char *)(strSrc); \ + switch (lenWithTerm) { \ + case 32: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 31: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 30: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 29: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 28: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 27: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 26: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 25: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 24: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 23: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 22: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 21: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 20: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 19: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 18: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 17: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 16: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 15: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 14: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 13: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 12: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 11: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 10: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 9: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 8: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 7: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 6: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 5: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 4: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 3: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 2: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + case 1: \ + *(tmpStrDest_++) = *(tmpStrSrc_++); \ + /* fall-through */ /* FALLTHRU */ \ + default: \ + /* Do nothing */ \ + break; \ + } \ + } \ +} SECUREC_WHILE_ZERO +#endif + +#if SECUREC_IN_KERNEL || (!SECUREC_STRCPY_WITH_PERFORMANCE) +#define SECUREC_STRCPY_OPT(dest, src, lenWithTerm) SECUREC_MEMCPY_WARP_OPT((dest), (src), (lenWithTerm)) +#else +/* + * Performance optimization. lenWithTerm include '\0' + */ +#define SECUREC_STRCPY_OPT(dest, src, lenWithTerm) do { \ + if ((lenWithTerm) > SECUREC_STRCOPY_THRESHOLD_SIZE) { \ + SECUREC_MEMCPY_WARP_OPT((dest), (src), (lenWithTerm)); \ + } else { \ + SECUREC_SMALL_STR_COPY((dest), (src), (lenWithTerm)); \ + } \ +} SECUREC_WHILE_ZERO +#endif + +/* + * Check Src Range + */ +SECUREC_INLINE errno_t CheckSrcRange(char *strDest, size_t destMax, const char *strSrc) +{ + size_t tmpDestMax = destMax; + const char *tmpSrc = strSrc; + /* Use destMax as boundary checker and destMax must be greater than zero */ + while (*tmpSrc != '\0' && tmpDestMax > 0) { + ++tmpSrc; + --tmpDestMax; + } + if (tmpDestMax == 0) { + strDest[0] = '\0'; + SECUREC_ERROR_INVALID_RANGE("strcpy_s"); + return ERANGE_AND_RESET; + } + return EOK; +} + +/* + * Handling errors + */ +errno_t strcpy_error(char *strDest, size_t destMax, const char *strSrc) +{ + if (destMax == 0 || destMax > SECUREC_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("strcpy_s"); + return ERANGE; + } + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("strcpy_s"); + if (strDest != NULL) { + strDest[0] = '\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + return CheckSrcRange(strDest, destMax, strSrc); +} + +/* + * + * The strcpy_s function copies the string pointed to strSrc + * (including the terminating null character) into the array pointed to by strDest + * The destination string must be large enough to hold the source string, + * including the terminating null character. strcpy_s will return EOVERLAP_AND_RESET + * if the source and destination strings overlap. + * + * + * strDest Location of destination string buffer + * destMax Size of the destination string buffer. + * strSrc Null-terminated source string buffer. + * + * + * strDest is updated. + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN + * EINVAL_AND_RESET strDest != NULL and strSrc is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN + * ERANGE destMax is 0 and destMax > SECUREC_STRING_MAX_LEN + * ERANGE_AND_RESET strDest have not enough space and all other parameters are valid and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t strcpy_s(char *strDest, size_t destMax, const char *strSrc) +{ + if (SECUREC_STRCPY_PARAM_OK(strDest, destMax, strSrc)) { + size_t srcStrLen; + SECUREC_CALC_STR_LEN(strSrc, destMax, &srcStrLen); + ++srcStrLen; /* The length include '\0' */ + + if (srcStrLen <= destMax) { + /* Use mem overlap check include '\0' */ + if (SECUREC_MEMORY_NO_OVERLAP(strDest, strSrc, srcStrLen)) { + /* Performance optimization srcStrLen include '\0' */ + SECUREC_STRCPY_OPT(strDest, strSrc, srcStrLen); + return EOK; + } else { + strDest[0] = '\0'; + SECUREC_ERROR_BUFFER_OVERLAP("strcpy_s"); + return EOVERLAP_AND_RESET; + } + } + } + return strcpy_error(strDest, destMax, strSrc); +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(strcpy_s); +#endif + diff --git a/third_party/bounds_checking_function/src/strncat_s.c b/third_party/bounds_checking_function/src/strncat_s.c new file mode 100644 index 0000000..3baf9bf --- /dev/null +++ b/third_party/bounds_checking_function/src/strncat_s.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: strncat_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * Befor this function, the basic parameter checking has been done + */ +SECUREC_INLINE errno_t SecDoCatLimit(char *strDest, size_t destMax, const char *strSrc, size_t count) +{ + size_t destLen; + size_t srcLen; + SECUREC_CALC_STR_LEN(strDest, destMax, &destLen); + /* + * The strSrc is no longer optimized. The reason is that when count is small, + * the efficiency of strnlen is higher than that of self realization. + */ + SECUREC_CALC_STR_LEN(strSrc, count, &srcLen); + + if (SECUREC_CAT_STRING_IS_OVERLAP(strDest, destLen, strSrc, srcLen)) { + strDest[0] = '\0'; + if (strDest + destLen <= strSrc && destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("strncat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_BUFFER_OVERLAP("strncat_s"); + return EOVERLAP_AND_RESET; + } + if (srcLen + destLen >= destMax || strDest == strSrc) { + strDest[0] = '\0'; + if (destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("strncat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_INVALID_RANGE("strncat_s"); + return ERANGE_AND_RESET; + } + SECUREC_MEMCPY_WARP_OPT(strDest + destLen, strSrc, srcLen); /* No terminator */ + *(strDest + destLen + srcLen) = '\0'; + return EOK; +} + +/* + * + * The strncat_s function appends not more than n successive characters + * (not including the terminating null character) + * from the array pointed to by strSrc to the end of the string pointed to by strDest + * The strncat_s function try to append the first D characters of strSrc to + * the end of strDest, where D is the lesser of count and the length of strSrc. + * If appending those D characters will fit within strDest (whose size is given + * as destMax) and still leave room for a null terminator, then those characters + * are appended, starting at the original terminating null of strDest, and a + * new terminating null is appended; otherwise, strDest[0] is set to the null + * character. + * + * + * strDest Null-terminated destination string. + * destMax Size of the destination buffer. + * strSrc Null-terminated source string. + * count Number of character to append, or truncate. + * + * + * strDest is updated + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN + * EINVAL_AND_RESET (strDest unterminated and all other parameters are valid)or + * (strDest != NULL and strSrc is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN) + * ERANGE destMax is 0 and destMax > SECUREC_STRING_MAX_LEN + * ERANGE_AND_RESET strDest have not enough space and all other parameters are valid and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t strncat_s(char *strDest, size_t destMax, const char *strSrc, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("strncat_s"); + return ERANGE; + } + + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("strncat_s"); + if (strDest != NULL) { + strDest[0] = '\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + if (count > SECUREC_STRING_MAX_LEN) { +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT + if (count == (size_t)(-1)) { + /* Windows internal functions may pass in -1 when calling this function */ + return SecDoCatLimit(strDest, destMax, strSrc, destMax); + } +#endif + strDest[0] = '\0'; + SECUREC_ERROR_INVALID_RANGE("strncat_s"); + return ERANGE_AND_RESET; + } + return SecDoCatLimit(strDest, destMax, strSrc, count); +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(strncat_s); +#endif + diff --git a/third_party/bounds_checking_function/src/strncpy_s.c b/third_party/bounds_checking_function/src/strncpy_s.c new file mode 100644 index 0000000..5bbf081 --- /dev/null +++ b/third_party/bounds_checking_function/src/strncpy_s.c @@ -0,0 +1,141 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: strncpy_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +#if defined(SECUREC_COMPATIBLE_WIN_FORMAT) +#define SECUREC_STRNCPY_PARAM_OK(strDest, destMax, strSrc, count) \ + (((destMax) > 0 && (destMax) <= SECUREC_STRING_MAX_LEN && (strDest) != NULL && (strSrc) != NULL && \ + ((count) <= SECUREC_STRING_MAX_LEN || (count) == ((size_t)(-1))) && (count) > 0)) +#else +#define SECUREC_STRNCPY_PARAM_OK(strDest, destMax, strSrc, count) \ + (((destMax) > 0 && (destMax) <= SECUREC_STRING_MAX_LEN && (strDest) != NULL && (strSrc) != NULL && \ + (count) <= SECUREC_STRING_MAX_LEN && (count) > 0)) +#endif + +/* + * Check Src Count Range + */ +SECUREC_INLINE errno_t CheckSrcCountRange(char *strDest, size_t destMax, const char *strSrc, size_t count) +{ + size_t tmpDestMax = destMax; + size_t tmpCount = count; + const char *endPos = strSrc; + + /* Use destMax and count as boundary checker and destMax must be greater than zero */ + while (*(endPos) != '\0' && tmpDestMax > 0 && tmpCount > 0) { + ++endPos; + --tmpCount; + --tmpDestMax; + } + if (tmpDestMax == 0) { + strDest[0] = '\0'; + SECUREC_ERROR_INVALID_RANGE("strncpy_s"); + return ERANGE_AND_RESET; + } + return EOK; +} + +/* + * Handling errors, when dest euqal src return EOK + */ +errno_t strncpy_error(char *strDest, size_t destMax, const char *strSrc, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("strncpy_s"); + return ERANGE; + } + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("strncpy_s"); + if (strDest != NULL) { + strDest[0] = '\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + if (count > SECUREC_STRING_MAX_LEN) { + strDest[0] = '\0'; /* Clear dest string */ + SECUREC_ERROR_INVALID_RANGE("strncpy_s"); + return ERANGE_AND_RESET; + } + if (count == 0) { + strDest[0] = '\0'; + return EOK; + } + return CheckSrcCountRange(strDest, destMax, strSrc, count); +} + +/* + * + * The strncpy_s function copies not more than n successive characters (not including the terminating null character) + * from the array pointed to by strSrc to the array pointed to by strDest. + * + * + * strDest Destination string. + * destMax The size of the destination string, in characters. + * strSrc Source string. + * count Number of characters to be copied. + * + * + * strDest is updated + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN + * EINVAL_AND_RESET strDest != NULL and strSrc is NULL and destMax != 0 and destMax <= SECUREC_STRING_MAX_LEN + * ERANGE destMax is 0 and destMax > SECUREC_STRING_MAX_LEN + * ERANGE_AND_RESET strDest have not enough space and all other parameters are valid and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t strncpy_s(char *strDest, size_t destMax, const char *strSrc, size_t count) +{ + if (SECUREC_STRNCPY_PARAM_OK(strDest, destMax, strSrc, count)) { + size_t minCpLen; /* Use it to store the maxi length limit */ + if (count < destMax) { + SECUREC_CALC_STR_LEN(strSrc, count, &minCpLen); /* No ending terminator */ + } else { + size_t tmpCount = destMax; +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT + if (count == ((size_t)(-1))) { + tmpCount = destMax - 1; + } +#endif + SECUREC_CALC_STR_LEN(strSrc, tmpCount, &minCpLen); /* No ending terminator */ + if (minCpLen == destMax) { + strDest[0] = '\0'; + SECUREC_ERROR_INVALID_RANGE("strncpy_s"); + return ERANGE_AND_RESET; + } + } + if (SECUREC_STRING_NO_OVERLAP(strDest, strSrc, minCpLen) || strDest == strSrc) { + /* Not overlap */ + SECUREC_MEMCPY_WARP_OPT(strDest, strSrc, minCpLen); /* Copy string without terminator */ + strDest[minCpLen] = '\0'; + return EOK; + } else { + strDest[0] = '\0'; + SECUREC_ERROR_BUFFER_OVERLAP("strncpy_s"); + return EOVERLAP_AND_RESET; + } + } + return strncpy_error(strDest, destMax, strSrc, count); +} + +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(strncpy_s); +#endif + diff --git a/third_party/bounds_checking_function/src/strtok_s.c b/third_party/bounds_checking_function/src/strtok_s.c new file mode 100644 index 0000000..b04793b --- /dev/null +++ b/third_party/bounds_checking_function/src/strtok_s.c @@ -0,0 +1,117 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: strtok_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +SECUREC_INLINE int SecIsInDelimit(char ch, const char *strDelimit) +{ + const char *ctl = strDelimit; + while (*ctl != '\0' && *ctl != ch) { + ++ctl; + } + return (int)(*ctl != '\0'); +} + +/* + * Find beginning of token (skip over leading delimiters). + * Note that there is no token if this loop sets string to point to the terminal null. + */ +SECUREC_INLINE char *SecFindBegin(char *strToken, const char *strDelimit) +{ + char *token = strToken; + while (*token != '\0') { + if (SecIsInDelimit(*token, strDelimit) != 0) { + ++token; + continue; + } + /* Don't find any delimiter in string header, break the loop */ + break; + } + return token; +} + +/* + * Find rest of token + */ +SECUREC_INLINE char *SecFindRest(char *strToken, const char *strDelimit) +{ + /* Find the rest of the token. If it is not the end of the string, put a null there */ + char *token = strToken; + while (*token != '\0') { + if (SecIsInDelimit(*token, strDelimit) != 0) { + /* Find a delimiter, set string termintor */ + *token = '\0'; + ++token; + break; + } + ++token; + } + return token; +} + +/* + * Find the final position pointer + */ +SECUREC_INLINE char *SecUpdateToken(char *strToken, const char *strDelimit, char **context) +{ + /* Point to updated position. Record string position for next search in the context */ + *context = SecFindRest(strToken, strDelimit); + /* Determine if a token has been found. */ + if (*context == strToken) { + return NULL; + } + return strToken; +} + +/* + * + * The strtok_s function parses a string into a sequence of strToken, + * replace all characters in strToken string that match to strDelimit set with 0. + * On the first call to strtok_s the string to be parsed should be specified in strToken. + * In each subsequent call that should parse the same string, strToken should be NULL + * + * strToken String containing token or tokens. + * strDelimit Set of delimiter characters. + * context Used to store position information between calls + * to strtok_s + * + * context is updated + * + * On the first call returns the address of the first non \0 character, otherwise NULL is returned. + * In subsequent calls, the strtoken is set to NULL, and the context set is the same as the previous call, + * return NULL if the *context string length is equal 0, otherwise return *context. + */ +char *strtok_s(char *strToken, const char *strDelimit, char **context) +{ + char *orgToken = strToken; + /* Validate delimiter and string context */ + if (context == NULL || strDelimit == NULL) { + return NULL; + } + /* Valid input string and string pointer from where to search */ + if (orgToken == NULL && *context == NULL) { + return NULL; + } + /* If string is null, continue searching from previous string position stored in context */ + if (orgToken == NULL) { + orgToken = *context; + } + orgToken = SecFindBegin(orgToken, strDelimit); + return SecUpdateToken(orgToken, strDelimit, context); +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(strtok_s); +#endif + diff --git a/third_party/bounds_checking_function/src/swprintf_s.c b/third_party/bounds_checking_function/src/swprintf_s.c new file mode 100644 index 0000000..2d2ad42 --- /dev/null +++ b/third_party/bounds_checking_function/src/swprintf_s.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: swprintf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The swprintf_s function is the wide-character equivalent of the sprintf_s function + * + * + * strDest Storage location for the output. + * destMax Maximum number of characters to store. + * format Format-control string. + * ... Optional arguments + * + * + * strDest is updated + * + * + * return the number of wide characters stored in strDest, not counting the terminating null wide character. + * return -1 if an error occurred. + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +int swprintf_s(wchar_t *strDest, size_t destMax, const wchar_t *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vswprintf_s(strDest, destMax, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + diff --git a/third_party/bounds_checking_function/src/swscanf_s.c b/third_party/bounds_checking_function/src/swscanf_s.c new file mode 100644 index 0000000..987b689 --- /dev/null +++ b/third_party/bounds_checking_function/src/swscanf_s.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: swscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * The swscanf_s function is the wide-character equivalent of the sscanf_s function + * The swscanf_s function reads data from buffer into the location given by + * each argument. Every argument must be a pointer to a variable with a type + * that corresponds to a type specifier in format. The format argument controls + * the interpretation of the input fields and has the same form and function + * as the format argument for the scanf function. If copying takes place between + * strings that overlap, the behavior is undefined. + * + * + * buffer Stored data. + * format Format control string, see Format Specifications. + * ... Optional arguments. + * + * + * ... the converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; The return value does not include fields that were read but not + * assigned. + * A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int swscanf_s(const wchar_t *buffer, const wchar_t *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vswscanf_s(buffer, format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + diff --git a/third_party/bounds_checking_function/src/vfscanf_s.c b/third_party/bounds_checking_function/src/vfscanf_s.c new file mode 100644 index 0000000..96aee67 --- /dev/null +++ b/third_party/bounds_checking_function/src/vfscanf_s.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vfscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "secinput.h" + +/* + * + * The vfscanf_s function is equivalent to fscanf_s, with the variable argument list replaced by argList + * The vfscanf_s function reads data from the current position of stream into + * the locations given by argument (if any). Each argument must be a pointer + * to a variable of a type that corresponds to a type specifier in format. + * format controls the interpretation of the input fields and has the same + * form and function as the format argument for scanf. + * + * + * stream Pointer to FILE structure. + * format Format control string, see Format Specifications. + * argList pointer to list of arguments + * + * + * argList the converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int vfscanf_s(FILE *stream, const char *format, va_list argList) +{ + int retVal; /* If initialization causes e838 */ + SecFileStream fStr; + + if (stream == NULL || format == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("vfscanf_s"); + return SECUREC_SCANF_EINVAL; + } + if (stream == SECUREC_STREAM_STDIN) { + return vscanf_s(format, argList); + } + + SECUREC_LOCK_FILE(stream); + SECUREC_FILE_STREAM_FROM_FILE(&fStr, stream); + retVal = SecInputS(&fStr, format, argList); + SECUREC_UNLOCK_FILE(stream); + if (retVal < 0) { + SECUREC_ERROR_INVALID_PARAMTER("vfscanf_s"); + return SECUREC_SCANF_EINVAL; + } + + return retVal; +} + diff --git a/third_party/bounds_checking_function/src/vfwscanf_s.c b/third_party/bounds_checking_function/src/vfwscanf_s.c new file mode 100644 index 0000000..0fd0c35 --- /dev/null +++ b/third_party/bounds_checking_function/src/vfwscanf_s.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vfwscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECUREC_FOR_WCHAR +#define SECUREC_FOR_WCHAR +#endif + +#include "secinput.h" + +/* + * + * The vfwscanf_s function is the wide-character equivalent of the vfscanf_s function + * The vfwscanf_s function reads data from the current position of stream into + * the locations given by argument (if any). Each argument must be a pointer + * to a variable of a type that corresponds to a type specifier in format. + * format controls the interpretation of the input fields and has the same form + * and function as the format argument for scanf. + * + * + * stream Pointer to FILE structure. + * format Format control string, see Format Specifications. + * argList pointer to list of arguments + * + * + * argList the converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int vfwscanf_s(FILE *stream, const wchar_t *format, va_list argList) +{ + int retVal; /* If initialization causes e838 */ + SecFileStream fStr; + + if (stream == NULL || format == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("vfwscanf_s"); + return SECUREC_SCANF_EINVAL; + } + if (stream == SECUREC_STREAM_STDIN) { + return vwscanf_s(format, argList); + } + + SECUREC_LOCK_FILE(stream); + SECUREC_FILE_STREAM_FROM_FILE(&fStr, stream); + retVal = SecInputSW(&fStr, format, argList); + SECUREC_UNLOCK_FILE(stream); + if (retVal < 0) { + SECUREC_ERROR_INVALID_PARAMTER("vfwscanf_s"); + return SECUREC_SCANF_EINVAL; + } + return retVal; +} + diff --git a/third_party/bounds_checking_function/src/vscanf_s.c b/third_party/bounds_checking_function/src/vscanf_s.c new file mode 100644 index 0000000..02e84f4 --- /dev/null +++ b/third_party/bounds_checking_function/src/vscanf_s.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "secinput.h" + +/* + * + * The vscanf_s function is equivalent to scanf_s, with the variable argument list replaced by argList, + * The vscanf_s function reads data from the standard input stream stdin and + * writes the data into the location that's given by argument. Each argument + * must be a pointer to a variable of a type that corresponds to a type specifier + * in format. If copying occurs between strings that overlap, the behavior is + * undefined. + * + * + * format Format control string. + * argList pointer to list of arguments + * + * + * argList the converted value stored in user assigned address + * + * + * Returns the number of fields successfully converted and assigned; + * the return value does not include fields that were read but not assigned. + * A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int vscanf_s(const char *format, va_list argList) +{ + int retVal; /* If initialization causes e838 */ + SecFileStream fStr; + SECUREC_FILE_STREAM_FROM_STDIN(&fStr); + /* + * The "va_list" has different definition on different platform, so we can't use argList == NULL + * To determine it's invalid. If you has fixed platform, you can check some fields to validate it, + * such as "argList == NULL" or argList.xxx != NULL or *(size_t *)&argList != 0. + */ +#if SECUREC_ENABLE_SCANF_FILE + if (format == NULL || fStr.pf == NULL) { +#else + if (format == NULL) { +#endif + SECUREC_ERROR_INVALID_PARAMTER("vscanf_s"); + return SECUREC_SCANF_EINVAL; + } + +#if SECUREC_ENABLE_SCANF_FILE + SECUREC_LOCK_STDIN(0, fStr.pf); +#endif + retVal = SecInputS(&fStr, format, argList); +#if SECUREC_ENABLE_SCANF_FILE + SECUREC_UNLOCK_STDIN(0, fStr.pf); +#endif + if (retVal < 0) { + SECUREC_ERROR_INVALID_PARAMTER("vscanf_s"); + return SECUREC_SCANF_EINVAL; + } + return retVal; +} + diff --git a/third_party/bounds_checking_function/src/vsnprintf_s.c b/third_party/bounds_checking_function/src/vsnprintf_s.c new file mode 100644 index 0000000..36619d8 --- /dev/null +++ b/third_party/bounds_checking_function/src/vsnprintf_s.c @@ -0,0 +1,139 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vsnprintf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "secureprintoutput.h" + +#if SECUREC_ENABLE_VSNPRINTF +/* + * + * The vsnprintf_s function is equivalent to the vsnprintf function + * except for the parameter destMax/count and the explicit runtime-constraints violation + * The vsnprintf_s function takes a pointer to an argument list, then formats + * and writes up to count characters of the given data to the memory pointed + * to by strDest and appends a terminating null. + * + * + * strDest Storage location for the output. + * destMax The size of the strDest for output. + * count Maximum number of character to write(not including + * the terminating NULL) + * format Format-control string. + * argList pointer to list of arguments. + * + * + * strDest is updated + * + * + * return the number of characters written, not including the terminating null + * return -1 if an error occurs. + * return -1 if count < destMax and the output string has been truncated + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +int vsnprintf_s(char *strDest, size_t destMax, size_t count, const char *format, va_list argList) +{ + int retVal; + + if (SECUREC_VSNPRINTF_PARAM_ERROR(format, strDest, destMax, count, SECUREC_STRING_MAX_LEN)) { + SECUREC_VSPRINTF_CLEAR_DEST(strDest, destMax, SECUREC_STRING_MAX_LEN); + SECUREC_ERROR_INVALID_PARAMTER("vsnprintf_s"); + return -1; + } + + if (destMax > count) { + retVal = SecVsnprintfImpl(strDest, count + 1, format, argList); + if (retVal == SECUREC_PRINTF_TRUNCATE) { /* To keep dest buffer not destroyed 2014.2.18 */ + /* The string has been truncated, return -1 */ + return -1; /* To skip error handler, return strlen(strDest) or -1 */ + } + } else { + retVal = SecVsnprintfImpl(strDest, destMax, format, argList); +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT + if (retVal == SECUREC_PRINTF_TRUNCATE && count == (size_t)(-1)) { + return -1; + } +#endif + } + + if (retVal < 0) { + strDest[0] = '\0'; /* Empty the dest strDest */ + if (retVal == SECUREC_PRINTF_TRUNCATE) { + /* Buffer too small */ + SECUREC_ERROR_INVALID_RANGE("vsnprintf_s"); + } + SECUREC_ERROR_INVALID_PARAMTER("vsnprintf_s"); + return -1; + } + + return retVal; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(vsnprintf_s); +#endif +#endif + +#if SECUREC_SNPRINTF_TRUNCATED +/* + * + * The vsnprintf_truncated_s function is equivalent to the vsnprintf function + * except for the parameter destMax/count and the explicit runtime-constraints violation + * The vsnprintf_truncated_s function takes a pointer to an argument list, then formats + * and writes up to count characters of the given data to the memory pointed + * to by strDest and appends a terminating null. + * + * + * strDest Storage location for the output. + * destMax The size of the strDest for output. + * the terminating NULL) + * format Format-control string. + * argList pointer to list of arguments. + * + * + * strDest is updated + * + * + * return the number of characters written, not including the terminating null + * return -1 if an error occurs. + * return destMax-1 if output string has been truncated + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +int vsnprintf_truncated_s(char *strDest, size_t destMax, const char *format, va_list argList) +{ + int retVal; + + if (SECUREC_VSPRINTF_PARAM_ERROR(format, strDest, destMax, SECUREC_STRING_MAX_LEN)) { + SECUREC_VSPRINTF_CLEAR_DEST(strDest, destMax, SECUREC_STRING_MAX_LEN); + SECUREC_ERROR_INVALID_PARAMTER("vsnprintf_truncated_s"); + return -1; + } + + retVal = SecVsnprintfImpl(strDest, destMax, format, argList); + if (retVal < 0) { + if (retVal == SECUREC_PRINTF_TRUNCATE) { + return (int)(destMax - 1); /* To skip error handler, return strlen(strDest) */ + } + strDest[0] = '\0'; /* Empty the dest strDest */ + SECUREC_ERROR_INVALID_PARAMTER("vsnprintf_truncated_s"); + return -1; + } + + return retVal; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(vsnprintf_truncated_s); +#endif +#endif + diff --git a/third_party/bounds_checking_function/src/vsprintf_s.c b/third_party/bounds_checking_function/src/vsprintf_s.c new file mode 100644 index 0000000..012f522 --- /dev/null +++ b/third_party/bounds_checking_function/src/vsprintf_s.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vsprintf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "secureprintoutput.h" + +/* + * + * The vsprintf_s function is equivalent to the vsprintf function + * except for the parameter destMax and the explicit runtime-constraints violation + * The vsprintf_s function takes a pointer to an argument list, and then formats + * and writes the given data to the memory pointed to by strDest. + * The function differ from the non-secure versions only in that the secure + * versions support positional parameters. + * + * + * strDest Storage location for the output. + * destMax Size of strDest + * format Format specification. + * argList pointer to list of arguments + * + * + * strDest is updated + * + * + * return the number of characters written, not including the terminating null character, + * return -1 if an error occurs. + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +int vsprintf_s(char *strDest, size_t destMax, const char *format, va_list argList) +{ + int retVal; /* If initialization causes e838 */ + + if (SECUREC_VSPRINTF_PARAM_ERROR(format, strDest, destMax, SECUREC_STRING_MAX_LEN)) { + SECUREC_VSPRINTF_CLEAR_DEST(strDest, destMax, SECUREC_STRING_MAX_LEN); + SECUREC_ERROR_INVALID_PARAMTER("vsprintf_s"); + return -1; + } + + retVal = SecVsnprintfImpl(strDest, destMax, format, argList); + if (retVal < 0) { + strDest[0] = '\0'; + if (retVal == SECUREC_PRINTF_TRUNCATE) { + /* Buffer is too small */ + SECUREC_ERROR_INVALID_RANGE("vsprintf_s"); + } + SECUREC_ERROR_INVALID_PARAMTER("vsprintf_s"); + return -1; + } + + return retVal; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(vsprintf_s); +#endif + diff --git a/third_party/bounds_checking_function/src/vsscanf_s.c b/third_party/bounds_checking_function/src/vsscanf_s.c new file mode 100644 index 0000000..6612d2f --- /dev/null +++ b/third_party/bounds_checking_function/src/vsscanf_s.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vsscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "secinput.h" +#if defined(SECUREC_VXWORKS_PLATFORM) && !SECUREC_IN_KERNEL && \ + (!defined(SECUREC_SYSAPI4VXWORKS) && !defined(SECUREC_CTYPE_MACRO_ADAPT)) +#include +#endif + +/* + * + * vsscanf_s + * + * + * + * The vsscanf_s function is equivalent to sscanf_s, with the variable argument list replaced by argList + * The vsscanf_s function reads data from buffer into the location given by + * each argument. Every argument must be a pointer to a variable with a type + * that corresponds to a type specifier in format. The format argument controls + * the interpretation of the input fields and has the same form and function + * as the format argument for the scanf function. + * If copying takes place between strings that overlap, the behavior is undefined. + * + * + * buffer Stored data + * format Format control string, see Format Specifications. + * argList pointer to list of arguments + * + * + * argList the converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int vsscanf_s(const char *buffer, const char *format, va_list argList) +{ + size_t count; /* If initialization causes e838 */ + int retVal; + SecFileStream fStr; + + /* Validation section */ + if (buffer == NULL || format == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("vsscanf_s"); + return SECUREC_SCANF_EINVAL; + } + count = strlen(buffer); + if (count == 0 || count > SECUREC_STRING_MAX_LEN) { + SecClearDestBuf(buffer, format, argList); + SECUREC_ERROR_INVALID_PARAMTER("vsscanf_s"); + return SECUREC_SCANF_EINVAL; + } +#if defined(SECUREC_VXWORKS_PLATFORM) && !SECUREC_IN_KERNEL + /* + * On vxworks platform when buffer is white string, will set first %s argument tu zero.like following useage: + * " \v\f\t\r\n", "%s", str, strSize + * Do not check all character, just first and last character then consider it is white string + */ + if (isspace((int)(unsigned char)buffer[0]) != 0 && isspace((int)(unsigned char)buffer[count - 1]) != 0) { + SecClearDestBuf(buffer, format, argList); + } +#endif + SECUREC_FILE_STREAM_FROM_STRING(&fStr, buffer, count); + retVal = SecInputS(&fStr, format, argList); + if (retVal < 0) { + SECUREC_ERROR_INVALID_PARAMTER("vsscanf_s"); + return SECUREC_SCANF_EINVAL; + } + return retVal; +} +#if SECUREC_IN_KERNEL +EXPORT_SYMBOL(vsscanf_s); +#endif + diff --git a/third_party/bounds_checking_function/src/vswprintf_s.c b/third_party/bounds_checking_function/src/vswprintf_s.c new file mode 100644 index 0000000..38b0b40 --- /dev/null +++ b/third_party/bounds_checking_function/src/vswprintf_s.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vswprintf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECUREC_FOR_WCHAR +#define SECUREC_FOR_WCHAR +#endif + +#include "secureprintoutput.h" + +/* + * + * The vswprintf_s function is the wide-character equivalent of the vsprintf_s function + * + * + * strDest Storage location for the output. + * destMax Maximum number of characters to store + * format Format specification. + * argList pointer to list of arguments + * + * + * strDest is updated + * + * + * return the number of wide characters stored in strDest, not counting the terminating null wide character. + * return -1 if an error occurred. + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +int vswprintf_s(wchar_t *strDest, size_t destMax, const wchar_t *format, va_list argList) +{ + int retVal; /* If initialization causes e838 */ + if (SECUREC_VSPRINTF_PARAM_ERROR(format, strDest, destMax, SECUREC_WCHAR_STRING_MAX_LEN)) { + SECUREC_VSPRINTF_CLEAR_DEST(strDest, destMax, SECUREC_WCHAR_STRING_MAX_LEN); + SECUREC_ERROR_INVALID_PARAMTER("vswprintf_s"); + return -1; + } + + retVal = SecVswprintfImpl(strDest, destMax, format, argList); + if (retVal < 0) { + strDest[0] = L'\0'; + if (retVal == SECUREC_PRINTF_TRUNCATE) { + /* Buffer too small */ + SECUREC_ERROR_INVALID_RANGE("vswprintf_s"); + } + SECUREC_ERROR_INVALID_PARAMTER("vswprintf_s"); + return -1; + } + + return retVal; +} + diff --git a/third_party/bounds_checking_function/src/vswscanf_s.c b/third_party/bounds_checking_function/src/vswscanf_s.c new file mode 100644 index 0000000..d416b96 --- /dev/null +++ b/third_party/bounds_checking_function/src/vswscanf_s.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vswscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECUREC_FOR_WCHAR +#define SECUREC_FOR_WCHAR +#endif + +#include "secinput.h" + +SECUREC_INLINE size_t SecWcslen(const wchar_t *s) +{ + const wchar_t *end = s; + while (*end != L'\0') { + ++end; + } + return ((size_t)((end - s))); +} + +/* + * + * The vswscanf_s function is the wide-character equivalent of the vsscanf_s function + * The vsscanf_s function reads data from buffer into the location given by + * each argument. Every argument must be a pointer to a variable with a type + * that corresponds to a type specifier in format. + * The format argument controls the interpretation of the input fields and + * has the same form and function as the format argument for the scanf function. + * If copying takes place between strings that overlap, the behavior is undefined. + * + * + * buffer Stored data + * format Format control string, see Format Specifications. + * argList pointer to list of arguments + * + * + * argList the converted value stored in user assigned address + * + * + * Each of these functions returns the number of fields successfully converted + * and assigned; the return value does not include fields that were read but + * not assigned. A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int vswscanf_s(const wchar_t *buffer, const wchar_t *format, va_list argList) +{ + size_t count; /* If initialization causes e838 */ + SecFileStream fStr; + int retVal; + + /* Validation section */ + if (buffer == NULL || format == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("vswscanf_s"); + return SECUREC_SCANF_EINVAL; + } + count = SecWcslen(buffer); + if (count == 0 || count > SECUREC_WCHAR_STRING_MAX_LEN) { + SecClearDestBufW(buffer, format, argList); + SECUREC_ERROR_INVALID_PARAMTER("vswscanf_s"); + return SECUREC_SCANF_EINVAL; + } + SECUREC_FILE_STREAM_FROM_STRING(&fStr, (const char *)buffer, count * sizeof(wchar_t)); + retVal = SecInputSW(&fStr, format, argList); + if (retVal < 0) { + SECUREC_ERROR_INVALID_PARAMTER("vswscanf_s"); + return SECUREC_SCANF_EINVAL; + } + return retVal; +} + diff --git a/third_party/bounds_checking_function/src/vwscanf_s.c b/third_party/bounds_checking_function/src/vwscanf_s.c new file mode 100644 index 0000000..634abc2 --- /dev/null +++ b/third_party/bounds_checking_function/src/vwscanf_s.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: vwscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#ifndef SECUREC_FOR_WCHAR +#define SECUREC_FOR_WCHAR +#endif + +#include "secinput.h" + +/* + * + * The vwscanf_s function is the wide-character equivalent of the vscanf_s function + * The vwscanf_s function is the wide-character version of vscanf_s. The + * function reads data from the standard input stream stdin and writes the + * data into the location that's given by argument. Each argument must be a + * pointer to a variable of a type that corresponds to a type specifier in + * format. If copying occurs between strings that overlap, the behavior is + * undefined. + * + * + * format Format control string. + * argList pointer to list of arguments + * + * + * argList the converted value stored in user assigned address + * + * + * Returns the number of fields successfully converted and assigned; + * the return value does not include fields that were read but not assigned. + * A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int vwscanf_s(const wchar_t *format, va_list argList) +{ + int retVal; /* If initialization causes e838 */ + SecFileStream fStr; + SECUREC_FILE_STREAM_FROM_STDIN(&fStr); +#if SECUREC_ENABLE_SCANF_FILE + if (format == NULL || fStr.pf == NULL) { +#else + if (format == NULL) { +#endif + SECUREC_ERROR_INVALID_PARAMTER("vwscanf_s"); + return SECUREC_SCANF_EINVAL; + } + +#if SECUREC_ENABLE_SCANF_FILE + SECUREC_LOCK_STDIN(0, fStr.pf); +#endif + retVal = SecInputSW(&fStr, format, argList); +#if SECUREC_ENABLE_SCANF_FILE + SECUREC_UNLOCK_STDIN(0, fStr.pf); +#endif + if (retVal < 0) { + SECUREC_ERROR_INVALID_PARAMTER("vwscanf_s"); + return SECUREC_SCANF_EINVAL; + } + + return retVal; +} + diff --git a/third_party/bounds_checking_function/src/wcscat_s.c b/third_party/bounds_checking_function/src/wcscat_s.c new file mode 100644 index 0000000..780907b --- /dev/null +++ b/third_party/bounds_checking_function/src/wcscat_s.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wcscat_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * Befor this function, the basic parameter checking has been done + */ +SECUREC_INLINE errno_t SecDoCatW(wchar_t *strDest, size_t destMax, const wchar_t *strSrc) +{ + size_t destLen; + size_t srcLen; + size_t maxCount; /* Store the maximum available count */ + + /* To calculate the length of a wide character, the parameter must be a wide character */ + SECUREC_CALC_WSTR_LEN(strDest, destMax, &destLen); + maxCount = destMax - destLen; + SECUREC_CALC_WSTR_LEN(strSrc, maxCount, &srcLen); + + if (SECUREC_CAT_STRING_IS_OVERLAP(strDest, destLen, strSrc, srcLen)) { + strDest[0] = L'\0'; + if (strDest + destLen <= strSrc && destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("wcscat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_BUFFER_OVERLAP("wcscat_s"); + return EOVERLAP_AND_RESET; + } + if (srcLen + destLen >= destMax || strDest == strSrc) { + strDest[0] = L'\0'; + if (destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("wcscat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_INVALID_RANGE("wcscat_s"); + return ERANGE_AND_RESET; + } + /* Copy single character length include \0 */ + SECUREC_MEMCPY_WARP_OPT(strDest + destLen, strSrc, (srcLen + 1) * sizeof(wchar_t)); + return EOK; +} + +/* + * + * The wcscat_s function appends a copy of the wide string pointed to by strSrc +* (including the terminating null wide character) + * to the end of the wide string pointed to by strDest. + * The arguments and return value of wcscat_s are wide-character strings. + * + * The wcscat_s function appends strSrc to strDest and terminates the resulting + * string with a null character. The initial character of strSrc overwrites the + * terminating null character of strDest. wcscat_s will return EOVERLAP_AND_RESET if the + * source and destination strings overlap. + * + * Note that the second parameter is the total size of the buffer, not the + * remaining size. + * + * + * strDest Null-terminated destination string buffer. + * destMax Size of the destination string buffer. + * strSrc Null-terminated source string buffer. + * + * + * strDest is updated + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * EINVAL_AND_RESET (strDest unterminated and all other parameters are valid) or + * (strDest != NULL and strSrc is NULLL and destMax != 0 + * and destMax <= SECUREC_WCHAR_STRING_MAX_LEN) + * ERANGE destMax > SECUREC_WCHAR_STRING_MAX_LEN or destMax is 0 + * ERANGE_AND_RESET strDest have not enough space and all other parameters are valid and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t wcscat_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc) +{ + if (destMax == 0 || destMax > SECUREC_WCHAR_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("wcscat_s"); + return ERANGE; + } + + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("wcscat_s"); + if (strDest != NULL) { + strDest[0] = L'\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + + return SecDoCatW(strDest, destMax, strSrc); +} + diff --git a/third_party/bounds_checking_function/src/wcscpy_s.c b/third_party/bounds_checking_function/src/wcscpy_s.c new file mode 100644 index 0000000..89c281d --- /dev/null +++ b/third_party/bounds_checking_function/src/wcscpy_s.c @@ -0,0 +1,87 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wcscpy_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +SECUREC_INLINE errno_t SecDoCpyW(wchar_t *strDest, size_t destMax, const wchar_t *strSrc) +{ + size_t srcStrLen; + SECUREC_CALC_WSTR_LEN(strSrc, destMax, &srcStrLen); + + if (srcStrLen == destMax) { + strDest[0] = L'\0'; + SECUREC_ERROR_INVALID_RANGE("wcscpy_s"); + return ERANGE_AND_RESET; + } + if (strDest == strSrc) { + return EOK; + } + + if (SECUREC_STRING_NO_OVERLAP(strDest, strSrc, srcStrLen)) { + /* Performance optimization, srcStrLen is single character length include '\0' */ + SECUREC_MEMCPY_WARP_OPT(strDest, strSrc, (srcStrLen + 1) * sizeof(wchar_t)); + return EOK; + } else { + strDest[0] = L'\0'; + SECUREC_ERROR_BUFFER_OVERLAP("wcscpy_s"); + return EOVERLAP_AND_RESET; + } +} + +/* + * + * The wcscpy_s function copies the wide string pointed to by strSrc + * (including theterminating null wide character) into the array pointed to by strDest + + * + * strDest Destination string buffer + * destMax Size of the destination string buffer. + * strSrc Null-terminated source string buffer. + * + * + * strDest is updated. + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * EINVAL_AND_RESET strDest != NULL and strSrc is NULLL and destMax != 0 + * and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * ERANGE destMax > SECUREC_WCHAR_STRING_MAX_LEN or destMax is 0 + * ERANGE_AND_RESET destMax <= length of strSrc and strDest != strSrc + * and strDest != NULL and strSrc != NULL and destMax != 0 + * and destMax <= SECUREC_WCHAR_STRING_MAX_LEN and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and destMax != 0 + * and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * and strDest != NULL and strSrc !=NULL and strDest != strSrc + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t wcscpy_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc) +{ + if (destMax == 0 || destMax > SECUREC_WCHAR_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("wcscpy_s"); + return ERANGE; + } + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("wcscpy_s"); + if (strDest != NULL) { + strDest[0] = L'\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + return SecDoCpyW(strDest, destMax, strSrc); +} + diff --git a/third_party/bounds_checking_function/src/wcsncat_s.c b/third_party/bounds_checking_function/src/wcsncat_s.c new file mode 100644 index 0000000..6151da4 --- /dev/null +++ b/third_party/bounds_checking_function/src/wcsncat_s.c @@ -0,0 +1,114 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wcsncat_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * Befor this function, the basic parameter checking has been done + */ +SECUREC_INLINE errno_t SecDoCatLimitW(wchar_t *strDest, size_t destMax, const wchar_t *strSrc, size_t count) +{ + /* To calculate the length of a wide character, the parameter must be a wide character */ + size_t destLen; + size_t srcLen; + SECUREC_CALC_WSTR_LEN(strDest, destMax, &destLen); + SECUREC_CALC_WSTR_LEN(strSrc, count, &srcLen); + + if (SECUREC_CAT_STRING_IS_OVERLAP(strDest, destLen, strSrc, srcLen)) { + strDest[0] = L'\0'; + if (strDest + destLen <= strSrc && destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("wcsncat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_BUFFER_OVERLAP("wcsncat_s"); + return EOVERLAP_AND_RESET; + } + if (srcLen + destLen >= destMax || strDest == strSrc) { + strDest[0] = L'\0'; + if (destLen == destMax) { + SECUREC_ERROR_INVALID_PARAMTER("wcsncat_s"); + return EINVAL_AND_RESET; + } + SECUREC_ERROR_INVALID_RANGE("wcsncat_s"); + return ERANGE_AND_RESET; + } + SECUREC_MEMCPY_WARP_OPT(strDest + destLen, strSrc, srcLen * sizeof(wchar_t)); /* no terminator */ + *(strDest + destLen + srcLen) = L'\0'; + return EOK; +} + +/* + * + * The wcsncat_s function appends not more than n successive wide characters + * (not including the terminating null wide character) + * from the array pointed to by strSrc to the end of the wide string pointed to by strDest. + * + * The wcsncat_s function try to append the first D characters of strSrc to + * the end of strDest, where D is the lesser of count and the length of strSrc. + * If appending those D characters will fit within strDest (whose size is + * given as destMax) and still leave room for a null terminator, then those + * characters are appended, starting at the original terminating null of + * strDest, and a new terminating null is appended; otherwise, strDest[0] is + * set to the null character. + * + * + * strDest Null-terminated destination string. + * destMax Size of the destination buffer. + * strSrc Null-terminated source string. + * count Number of character to append, or truncate. + * + * + * strDest is updated + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * EINVAL_AND_RESET (strDest unterminated and all other parameters are valid) or + * (strDest != NULL and strSrc is NULLL and destMax != 0 and + * destMax <= SECUREC_WCHAR_STRING_MAX_LEN) + * ERANGE destMax > SECUREC_WCHAR_STRING_MAX_LEN or destMax is 0 + * ERANGE_AND_RESET strDest have not enough space and all other parameters are valid and not overlap + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t wcsncat_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_WCHAR_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("wcsncat_s"); + return ERANGE; + } + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("wcsncat_s"); + if (strDest != NULL) { + strDest[0] = L'\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + if (count > SECUREC_WCHAR_STRING_MAX_LEN) { +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT + if (count == ((size_t)(-1))) { + /* Windows internal functions may pass in -1 when calling this function */ + return SecDoCatLimitW(strDest, destMax, strSrc, destMax); + } +#endif + strDest[0] = L'\0'; + SECUREC_ERROR_INVALID_RANGE("wcsncat_s"); + return ERANGE_AND_RESET; + } + return SecDoCatLimitW(strDest, destMax, strSrc, count); +} + diff --git a/third_party/bounds_checking_function/src/wcsncpy_s.c b/third_party/bounds_checking_function/src/wcsncpy_s.c new file mode 100644 index 0000000..8bd5737 --- /dev/null +++ b/third_party/bounds_checking_function/src/wcsncpy_s.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wcsncpy_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +SECUREC_INLINE errno_t SecDoCpyLimitW(wchar_t *strDest, size_t destMax, const wchar_t *strSrc, size_t count) +{ + size_t srcStrLen; + if (count < destMax) { + SECUREC_CALC_WSTR_LEN(strSrc, count, &srcStrLen); + } else { + SECUREC_CALC_WSTR_LEN(strSrc, destMax, &srcStrLen); + } + if (srcStrLen == destMax) { + strDest[0] = L'\0'; + SECUREC_ERROR_INVALID_RANGE("wcsncpy_s"); + return ERANGE_AND_RESET; + } + if (strDest == strSrc) { + return EOK; + } + if (SECUREC_STRING_NO_OVERLAP(strDest, strSrc, srcStrLen)) { + /* Performance optimization srcStrLen not include '\0' */ + SECUREC_MEMCPY_WARP_OPT(strDest, strSrc, srcStrLen * sizeof(wchar_t)); + *(strDest + srcStrLen) = L'\0'; + return EOK; + } else { + strDest[0] = L'\0'; + SECUREC_ERROR_BUFFER_OVERLAP("wcsncpy_s"); + return EOVERLAP_AND_RESET; + } +} + +/* + * + * The wcsncpy_s function copies not more than n successive wide characters + * (not including the terminating null wide character) + * from the array pointed to by strSrc to the array pointed to by strDest + * + * + * strDest Destination string. + * destMax The size of the destination string, in characters. + * strSrc Source string. + * count Number of characters to be copied. + * + * + * strDest is updated + * + * + * EOK Success + * EINVAL strDest is NULL and destMax != 0 and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * EINVAL_AND_RESET strDest != NULL and strSrc is NULLL and destMax != 0 + * and destMax <= SECUREC_WCHAR_STRING_MAX_LEN + * ERANGE destMax > SECUREC_WCHAR_STRING_MAX_LEN or destMax is 0 + * ERANGE_AND_RESET count > SECUREC_WCHAR_STRING_MAX_LEN or + * (destMax <= length of strSrc and destMax <= count and strDest != strSrc + * and strDest != NULL and strSrc != NULL and destMax != 0 and + * destMax <= SECUREC_WCHAR_STRING_MAX_LEN and not overlap) + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and all parameters are valid + * + * + * If there is a runtime-constraint violation, strDest[0] will be set to the '\0' when strDest and destMax valid + */ +errno_t wcsncpy_s(wchar_t *strDest, size_t destMax, const wchar_t *strSrc, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_WCHAR_STRING_MAX_LEN) { + SECUREC_ERROR_INVALID_RANGE("wcsncpy_s"); + return ERANGE; + } + if (strDest == NULL || strSrc == NULL) { + SECUREC_ERROR_INVALID_PARAMTER("wcsncpy_s"); + if (strDest != NULL) { + strDest[0] = L'\0'; + return EINVAL_AND_RESET; + } + return EINVAL; + } + if (count > SECUREC_WCHAR_STRING_MAX_LEN) { +#ifdef SECUREC_COMPATIBLE_WIN_FORMAT + if (count == (size_t)(-1)) { + return SecDoCpyLimitW(strDest, destMax, strSrc, destMax - 1); + } +#endif + strDest[0] = L'\0'; /* Clear dest string */ + SECUREC_ERROR_INVALID_RANGE("wcsncpy_s"); + return ERANGE_AND_RESET; + } + + if (count == 0) { + strDest[0] = L'\0'; + return EOK; + } + + return SecDoCpyLimitW(strDest, destMax, strSrc, count); +} + diff --git a/third_party/bounds_checking_function/src/wcstok_s.c b/third_party/bounds_checking_function/src/wcstok_s.c new file mode 100644 index 0000000..19284f3 --- /dev/null +++ b/third_party/bounds_checking_function/src/wcstok_s.c @@ -0,0 +1,113 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wcstok_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +SECUREC_INLINE int SecIsInDelimitW(wchar_t ch, const wchar_t *strDelimit) +{ + const wchar_t *ctl = strDelimit; + while (*ctl != L'\0' && *ctl != ch) { + ++ctl; + } + return (int)(*ctl != L'\0'); +} + +/* + * Find beginning of token (skip over leading delimiters). + * Note that there is no token if this loop sets string to point to the terminal null. + */ +SECUREC_INLINE wchar_t *SecFindBeginW(wchar_t *strToken, const wchar_t *strDelimit) +{ + wchar_t *token = strToken; + while (*token != L'\0') { + if (SecIsInDelimitW(*token, strDelimit) != 0) { + ++token; + continue; + } + /* Don't find any delimiter in string header, break the loop */ + break; + } + return token; +} + +/* + * Find the end of the token. If it is not the end of the string, put a null there. + */ +SECUREC_INLINE wchar_t *SecFindRestW(wchar_t *strToken, const wchar_t *strDelimit) +{ + wchar_t *token = strToken; + while (*token != L'\0') { + if (SecIsInDelimitW(*token, strDelimit) != 0) { + /* Find a delimiter, set string termintor */ + *token = L'\0'; + ++token; + break; + } + ++token; + } + return token; +} + +/* + * Update Token wide character function + */ +SECUREC_INLINE wchar_t *SecUpdateTokenW(wchar_t *strToken, const wchar_t *strDelimit, wchar_t **context) +{ + /* Point to updated position. Record string position for next search in the context */ + *context = SecFindRestW(strToken, strDelimit); + /* Determine if a token has been found */ + if (*context == strToken) { + return NULL; + } + return strToken; +} + +/* + * + * wcstok_s + * + * + * + * The wcstok_s function is the wide-character equivalent of the strtok_s function + * + * + * strToken String containing token or tokens. + * strDelimit Set of delimiter characters. + * context Used to store position information between calls to + * wcstok_s. + * + * + * context is updated + * + * The wcstok_s function is the wide-character equivalent of the strtok_s function + */ +wchar_t *wcstok_s(wchar_t *strToken, const wchar_t *strDelimit, wchar_t **context) +{ + wchar_t *orgToken = strToken; + /* Validation section */ + if (context == NULL || strDelimit == NULL) { + return NULL; + } + if (orgToken == NULL && *context == NULL) { + return NULL; + } + /* If string==NULL, continue with previous string */ + if (orgToken == NULL) { + orgToken = *context; + } + orgToken = SecFindBeginW(orgToken, strDelimit); + return SecUpdateTokenW(orgToken, strDelimit, context); +} + diff --git a/third_party/bounds_checking_function/src/wmemcpy_s.c b/third_party/bounds_checking_function/src/wmemcpy_s.c new file mode 100644 index 0000000..9961180 --- /dev/null +++ b/third_party/bounds_checking_function/src/wmemcpy_s.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wmemcpy_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * + * The wmemcpy_s function copies n successive wide characters + * from the object pointed to by src into the object pointed to by dest.t. + * + * + * dest Destination buffer. + * destMax Size of the destination buffer. + * src Buffer to copy from. + * count Number of characters to copy. + * + * + * dest buffer is uptdated. + * + * + * EOK Success + * EINVAL dest is NULL and destMax != 0 and count <= destMax + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN + * EINVAL_AND_RESET dest != NULL and src is NULLL and destMax != 0 + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN and count <= destMax + * ERANGE destMax > SECUREC_WCHAR_MEM_MAX_LEN or destMax is 0 or + * (count > destMax and dest is NULL and destMax != 0 + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN) + * ERANGE_AND_RESET count > destMax and dest != NULL and destMax != 0 + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN + * EOVERLAP_AND_RESET dest buffer and source buffer are overlapped and + * count <= destMax destMax != 0 and destMax <= SECUREC_WCHAR_MEM_MAX_LEN + * and dest != NULL and src != NULL and dest != src + * + * if an error occured, dest will be filled with 0 when dest and destMax valid . + * If the source and destination overlap, the behavior of wmemcpy_s is undefined. + * Use wmemmove_s to handle overlapping regions. + */ +errno_t wmemcpy_s(wchar_t *dest, size_t destMax, const wchar_t *src, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_WCHAR_MEM_MAX_LEN) { + SECUREC_ERROR_INVALID_PARAMTER("wmemcpy_s"); + return ERANGE; + } + if (count > destMax) { + SECUREC_ERROR_INVALID_PARAMTER("wmemcpy_s"); + if (dest != NULL) { + (void)memset(dest, 0, destMax * sizeof(wchar_t)); + return ERANGE_AND_RESET; + } + return ERANGE; + } + return memcpy_s(dest, destMax * sizeof(wchar_t), src, count * sizeof(wchar_t)); +} + diff --git a/third_party/bounds_checking_function/src/wmemmove_s.c b/third_party/bounds_checking_function/src/wmemmove_s.c new file mode 100644 index 0000000..e66e29b --- /dev/null +++ b/third_party/bounds_checking_function/src/wmemmove_s.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wmemmove_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securecutil.h" + +/* + * + * The wmemmove_s function copies n successive wide characters from the object pointed + * to by src into the object pointed to by dest. + * + * + * dest Destination buffer. + * destMax Size of the destination buffer. + * src Source object. + * count Number of bytes or character to copy. + * + * + * dest is updated. + * + * + * EOK Success + * EINVAL dest is NULL and destMax != 0 and count <= destMax + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN + * EINVAL_AND_RESET dest != NULL and src is NULLL and destMax != 0 + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN and count <= destMax + * ERANGE destMax > SECUREC_WCHAR_MEM_MAX_LEN or destMax is 0 or + * (count > destMax and dest is NULL and destMax != 0 + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN) + * ERANGE_AND_RESET count > destMax and dest != NULL and destMax != 0 + * and destMax <= SECUREC_WCHAR_MEM_MAX_LEN + * + * + * If an error occured, dest will be filled with 0 when dest and destMax valid. + * If some regions of the source area and the destination overlap, wmemmove_s + * ensures that the original source bytes in the overlapping region are copied + * before being overwritten + */ +errno_t wmemmove_s(wchar_t *dest, size_t destMax, const wchar_t *src, size_t count) +{ + if (destMax == 0 || destMax > SECUREC_WCHAR_MEM_MAX_LEN) { + SECUREC_ERROR_INVALID_PARAMTER("wmemmove_s"); + return ERANGE; + } + if (count > destMax) { + SECUREC_ERROR_INVALID_PARAMTER("wmemmove_s"); + if (dest != NULL) { + (void)memset(dest, 0, destMax * sizeof(wchar_t)); + return ERANGE_AND_RESET; + } + return ERANGE; + } + return memmove_s(dest, destMax * sizeof(wchar_t), src, count * sizeof(wchar_t)); +} + diff --git a/third_party/bounds_checking_function/src/wscanf_s.c b/third_party/bounds_checking_function/src/wscanf_s.c new file mode 100644 index 0000000..0a3df77 --- /dev/null +++ b/third_party/bounds_checking_function/src/wscanf_s.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2014-2020. All rights reserved. + * Licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * Description: wscanf_s function + * Author: lishunda + * Create: 2014-02-25 + */ + +#include "securec.h" + +/* + * + * + * The wscanf_s function is the wide-character equivalent of the scanf_s function + * The wscanf_s function reads data from the standard input stream stdin and + * writes the data into the location that's given by argument. Each argument + * must be a pointer to a variable of a type that corresponds to a type specifier + * in format. If copying occurs between strings that overlap, the behavior is + * undefined. + * + * + * format Format control string. + * ... Optional arguments. + * + * + * ... the converted value stored in user assigned address + * + * + * Returns the number of fields successfully converted and assigned; + * the return value does not include fields that were read but not assigned. + * A return value of 0 indicates that no fields were assigned. + * return -1 if an error occurs. + */ +int wscanf_s(const wchar_t *format, ...) +{ + int ret; /* If initialization causes e838 */ + va_list argList; + + va_start(argList, format); + ret = vwscanf_s(format, argList); + va_end(argList); + (void)argList; /* To clear e438 last value assigned not used , the compiler will optimize this code */ + + return ret; +} + -- Gitee From 491b1005cb70c3151ab83ddcc665a75a2faca85b Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 11:19:40 +0800 Subject: [PATCH 3/8] build libsec_static --- build/gn/BUILD.gn | 1 + .../ft_build/BUILD.gn | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 third_party/bounds_checking_function/ft_build/BUILD.gn diff --git a/build/gn/BUILD.gn b/build/gn/BUILD.gn index 4056c61..90a6155 100644 --- a/build/gn/BUILD.gn +++ b/build/gn/BUILD.gn @@ -13,5 +13,6 @@ group("ft_engine") { deps = [ + "//third_party/bounds_checking_function/ft_build:libsec_static", ] } diff --git a/third_party/bounds_checking_function/ft_build/BUILD.gn b/third_party/bounds_checking_function/ft_build/BUILD.gn new file mode 100644 index 0000000..b2a38b0 --- /dev/null +++ b/third_party/bounds_checking_function/ft_build/BUILD.gn @@ -0,0 +1,37 @@ +# Copyright (c) 2023 Huawei Technologies Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import("//build/gn/fangtian.gni") +import("../libsec_src.gni") + +config("libsec_public_config") { + include_dirs = [ "../include" ] +} + +ft_static_library("libsec_static") { + sources = libsec_sources + all_dependent_configs = [ ":libsec_public_config" ] + cflags = [ + "-D_INC_STRING_S", + "-D_INC_WCHAR_S", + "-D_SECIMP=//", + "-D_STDIO_S_DEFINED", + "-D_INC_STDIO_S", + "-D_INC_STDLIB_S", + "-D_INC_MEMORY_S", + ] + + part_name = "bounds_checking_function" + subsystem_name = "thirdparty" +} -- Gitee From 0c293cb6dabcac180c3fc189b5b7eb22cb5c5b71 Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 11:37:53 +0800 Subject: [PATCH 4/8] add python builder deps --- build/build.sh | 3 ++- build/configs/requirements.txt | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100755 build/configs/requirements.txt diff --git a/build/build.sh b/build/build.sh index 8b9587d..159a53b 100755 --- a/build/build.sh +++ b/build/build.sh @@ -35,7 +35,8 @@ if [[ "${PROJECT_DIR}x" == "x" ]]; then echo "\033[31m[!] project root dir cannot be empty.\033[0m" exit 1 fi - +# install deps +pip3 install -r configs/requirements.txt # Exec builder python3 ${PROJECT_DIR}/build/builder.py --project-dir ${PROJECT_DIR} build $* diff --git a/build/configs/requirements.txt b/build/configs/requirements.txt new file mode 100755 index 0000000..d2c1420 --- /dev/null +++ b/build/configs/requirements.txt @@ -0,0 +1,15 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +rich==13.3.1 +toml==0.10.2 -- Gitee From 98342141b3d1d8a736f8aff8bf59c47f1f38ed81 Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 11:59:47 +0800 Subject: [PATCH 5/8] fix requirements path --- build/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/build.sh b/build/build.sh index 159a53b..4785ec5 100755 --- a/build/build.sh +++ b/build/build.sh @@ -36,7 +36,7 @@ if [[ "${PROJECT_DIR}x" == "x" ]]; then exit 1 fi # install deps -pip3 install -r configs/requirements.txt +pip3 install -r ${PROJECT_DIR}/build/configs/requirements.txt # Exec builder python3 ${PROJECT_DIR}/build/builder.py --project-dir ${PROJECT_DIR} build $* -- Gitee From 5ff3d19ecd1936ac6ca936898bb9aa714f64417f Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 14:24:27 +0800 Subject: [PATCH 6/8] add prebuild --- build/build.sh | 3 +-- build/prebuild.sh | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100755 build/prebuild.sh diff --git a/build/build.sh b/build/build.sh index 4785ec5..8b9587d 100755 --- a/build/build.sh +++ b/build/build.sh @@ -35,8 +35,7 @@ if [[ "${PROJECT_DIR}x" == "x" ]]; then echo "\033[31m[!] project root dir cannot be empty.\033[0m" exit 1 fi -# install deps -pip3 install -r ${PROJECT_DIR}/build/configs/requirements.txt + # Exec builder python3 ${PROJECT_DIR}/build/builder.py --project-dir ${PROJECT_DIR} build $* diff --git a/build/prebuild.sh b/build/prebuild.sh new file mode 100755 index 0000000..9b6d36c --- /dev/null +++ b/build/prebuild.sh @@ -0,0 +1,62 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +# ============================================================================= +# Python +# ============================================================================= +# +# check python3 in current system. +PYTHON_REQUIRED_VERSION="3.9.2" + +echo -e "\e[36m[-] Prepare python3 packages...\e[0m" + +# Check if python3 is installed +if ! command -v python3 &> /dev/null; then + echo "python3 is not installed" + exit 1 +fi +if ! command -v pip3 &> /dev/null; then + echo "pip3 is not installed" + exit 1 +fi + +# Check python version +PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}') + +# Compare the versions +if [ "$(printf '%s\n' "$PYTHON_REQUIRED_VERSION" "$PYTHON_VERSION" | sort -V | head -n1)" = "$PYTHON_REQUIRED_VERSION" ]; then + echo "The python3 version is $PYTHON_VERSION" +else + echo "The python3 version is less than $PYTHON_REQUIRED_VERSION" +fi + +# Install python packages +SCRIPT_DIR=$(cd $(dirname $0);pwd) +PROJECT_DIR=$(dirname ${SCRIPT_DIR}) + +pip3 install -r ${SCRIPT_DIR}/configs/requirements.txt + +# ============================================================================= +# System Packages +# ============================================================================= +# +# check system packages in current system by calling builder.py + +echo -e "\e[36m[-] Prepare system packages...\e[0m" + +# Check & Install required system packages +python3 ${PROJECT_DIR}/build/builder.py check --install-packages $* + +echo -e "\033[32m[*] Pre-build Done. You can exec 'build.sh' now.\033[0m" -- Gitee From a580c37a66ad8bcfef5bbc70a6c8e1736f7ebda4 Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 14:55:56 +0800 Subject: [PATCH 7/8] call prebuild befor first build --- .gitignore | 1 + build/build.sh | 5 ++++- build/builder/common/env_checker.py | 2 +- build/prebuild.sh | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ada3096..1e5f882 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ **/__pycache__ +build/.pre_build_done out diff --git a/build/build.sh b/build/build.sh index 8b9587d..2e9ac21 100755 --- a/build/build.sh +++ b/build/build.sh @@ -35,7 +35,10 @@ if [[ "${PROJECT_DIR}x" == "x" ]]; then echo "\033[31m[!] project root dir cannot be empty.\033[0m" exit 1 fi - +# call prebuild.sh before first build +if [ ! -f "${PROJECT_DIR}/build/.prebuild_done" ];then + exec ${PROJECT_DIR}/build/prebuild.sh +fi # Exec builder python3 ${PROJECT_DIR}/build/builder.py --project-dir ${PROJECT_DIR} build $* diff --git a/build/builder/common/env_checker.py b/build/builder/common/env_checker.py index 0094390..ed1bb19 100755 --- a/build/builder/common/env_checker.py +++ b/build/builder/common/env_checker.py @@ -46,7 +46,7 @@ class Checker: def _install_packages(self, pkgs: list) -> bool: logger.info('Try install system packages: {} ...'.format(', '.join(pkgs))) - is_success, _output = exec_sys_command(['sudo', 'yum', 'install', '-y', ' '.join(pkgs)]) + is_success, _output = exec_sys_command(['yum', 'install', '-y', ' '.join(pkgs)]) return is_success def check_system_env(self, project_dir: str, install_missing_pkg: bool = False) -> bool: diff --git a/build/prebuild.sh b/build/prebuild.sh index 9b6d36c..fc77681 100755 --- a/build/prebuild.sh +++ b/build/prebuild.sh @@ -60,3 +60,4 @@ echo -e "\e[36m[-] Prepare system packages...\e[0m" python3 ${PROJECT_DIR}/build/builder.py check --install-packages $* echo -e "\033[32m[*] Pre-build Done. You can exec 'build.sh' now.\033[0m" +echo "done" > ${PROJECT_DIR}/build/.prebuild_done -- Gitee From 24c74db5b3aa3e4171e7325bc058fa1d2f69d046 Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Thu, 1 Jun 2023 15:07:42 +0800 Subject: [PATCH 8/8] revert last commit, call prebuild before build --- .gitignore | 1 - build/build.sh | 5 +---- build/builder/common/env_checker.py | 2 +- build/prebuild.sh | 1 - 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 1e5f882..ada3096 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ **/__pycache__ -build/.pre_build_done out diff --git a/build/build.sh b/build/build.sh index 2e9ac21..8b9587d 100755 --- a/build/build.sh +++ b/build/build.sh @@ -35,10 +35,7 @@ if [[ "${PROJECT_DIR}x" == "x" ]]; then echo "\033[31m[!] project root dir cannot be empty.\033[0m" exit 1 fi -# call prebuild.sh before first build -if [ ! -f "${PROJECT_DIR}/build/.prebuild_done" ];then - exec ${PROJECT_DIR}/build/prebuild.sh -fi + # Exec builder python3 ${PROJECT_DIR}/build/builder.py --project-dir ${PROJECT_DIR} build $* diff --git a/build/builder/common/env_checker.py b/build/builder/common/env_checker.py index ed1bb19..0094390 100755 --- a/build/builder/common/env_checker.py +++ b/build/builder/common/env_checker.py @@ -46,7 +46,7 @@ class Checker: def _install_packages(self, pkgs: list) -> bool: logger.info('Try install system packages: {} ...'.format(', '.join(pkgs))) - is_success, _output = exec_sys_command(['yum', 'install', '-y', ' '.join(pkgs)]) + is_success, _output = exec_sys_command(['sudo', 'yum', 'install', '-y', ' '.join(pkgs)]) return is_success def check_system_env(self, project_dir: str, install_missing_pkg: bool = False) -> bool: diff --git a/build/prebuild.sh b/build/prebuild.sh index fc77681..9b6d36c 100755 --- a/build/prebuild.sh +++ b/build/prebuild.sh @@ -60,4 +60,3 @@ echo -e "\e[36m[-] Prepare system packages...\e[0m" python3 ${PROJECT_DIR}/build/builder.py check --install-packages $* echo -e "\033[32m[*] Pre-build Done. You can exec 'build.sh' now.\033[0m" -echo "done" > ${PROJECT_DIR}/build/.prebuild_done -- Gitee