From 0a24c1af5ddcb0300ddd6acd53bf784cf4ae1414 Mon Sep 17 00:00:00 2001 From: Alan Carvalho de Assis Date: Tue, 1 Sep 2026 17:14:06 -0300 Subject: [PATCH 1/2] boards/gd32vm55x: Add support to GD32VW553-HMQ This commit add support to GD32VW553-HMQ board based on GigaDevice GD32VM553K_START as base. No AI used for this board, the but GD32VM553K_START was developed by Jorge Guzman with help from Claude Code. Signed-off-by: Alan C. Assis --- boards/Kconfig | 14 + boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig | 24 ++ .../gd32vw553-hmq/configs/ble/defconfig | 83 +++++ .../gd32vw553-hmq/configs/nsh/defconfig | 51 +++ .../gd32vw553-hmq/configs/ostest/defconfig | 52 +++ .../configs/sta_softap/defconfig | 85 +++++ .../gd32vw553-hmq/configs/wapi/defconfig | 81 +++++ .../gd32vw55x/gd32vw553-hmq/include/board.h | 172 ++++++++++ .../gd32vw55x/gd32vw553-hmq/scripts/Make.defs | 52 +++ .../gd32vw55x/gd32vw553-hmq/scripts/ld.script | 122 +++++++ .../gd32vw55x/gd32vw553-hmq/src/Makefile | 41 +++ .../gd32vw553-hmq/src/gd32_appinit.c | 58 ++++ .../gd32vw553-hmq/src/gd32_autoleds.c | 139 ++++++++ .../gd32vw55x/gd32vw553-hmq/src/gd32_boot.c | 73 ++++ .../gd32vw553-hmq/src/gd32_bringup.c | 323 ++++++++++++++++++ .../gd32vw55x/gd32vw553-hmq/src/gd32_reset.c | 79 +++++ .../gd32vw553-hmq/src/gd32_userleds.c | 101 ++++++ .../gd32vw553-hmq/src/gd32vw553-hmq.h | 52 +++ .../gd32vw553k-start/include/board.h | 10 +- 19 files changed, 1607 insertions(+), 5 deletions(-) create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ble/defconfig create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/nsh/defconfig create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ostest/defconfig create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/sta_softap/defconfig create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/wapi/defconfig create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/include/board.h create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/Make.defs create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/ld.script create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/Makefile create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_appinit.c create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_autoleds.c create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_boot.c create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_bringup.c create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_reset.c create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_userleds.c create mode 100644 boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32vw553-hmq.h diff --git a/boards/Kconfig b/boards/Kconfig index 132459811f9a6..76bb2fbfcd994 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -126,6 +126,16 @@ config ARCH_BOARD_GD32VW553K_START GigaDevice GD32VW553K-START devkit (GD32VW553KMQ7, QFN32, 4 MB flash, on-board GD-Link with VCP wired to UART2). +config ARCH_BOARD_GD32VW553_HMQ + bool "GD32VW553-HMQ Board" + depends on ARCH_CHIP_GD32VW55X + select ARCH_HAVE_LEDS + select ARCH_HAVE_RESET + ---help--- + This is the board configuration for the port of NuttX to the + GD32VW553K-HMQ devkit (GD32VW553HMQ6, QFN40, + 4 MB flash, on-board USB/Serial to UART0). + config ARCH_BOARD_C5471EVM bool "Spectrum Digital C5471 evaluation board" depends on ARCH_CHIP_C5471 @@ -3932,6 +3942,7 @@ config ARCH_BOARD default "gd32f470zk-aiotbox" if ARCH_BOARD_GD32F470ZK_AIOTBOX default "gd32f470ik-eval" if ARCH_BOARD_GD32F470IK_EVAL default "gd32vw553k-start" if ARCH_BOARD_GD32VW553K_START + default "gd32vw553-hmq" if ARCH_BOARD_GD32VW553_HMQ default "hifive1-revb" if ARCH_BOARD_HIFIVE1_REVB default "hymini-stm32v" if ARCH_BOARD_HYMINI_STM32V default "imxrt1020-evk" if ARCH_BOARD_IMXRT1020_EVK @@ -5412,6 +5423,9 @@ endif if ARCH_BOARD_GD32VW553K_START source "boards/risc-v/gd32vw55x/gd32vw553k-start/Kconfig" endif +if ARCH_BOARD_GD32VW553_HMQ +source "boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig" +endif if ARCH_BOARD_PHY6222 source "boards/arm/phy62xx/phy6222/Kconfig" endif diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig b/boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig new file mode 100644 index 0000000000000..fb88d13ddbde1 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig @@ -0,0 +1,24 @@ +# ############################################################################## +# boards/risc-v/gd32vw55x/gd32vw553-hmq/Kconfig +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you 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 ARCH_BOARD_GD32VW553_HMQ +endif diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ble/defconfig b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ble/defconfig new file mode 100644 index 0000000000000..ed16ef6229f7c --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ble/defconfig @@ -0,0 +1,83 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="gd32vw553-hmq" +CONFIG_ARCH_BOARD_GD32VW553_HMQ=y +CONFIG_ARCH_CHIP="gd32vw55x" +CONFIG_ARCH_CHIP_GD32VW553HM=y +CONFIG_ARCH_CHIP_GD32VW55X=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_INITTHREAD_STACKSIZE=2048 +CONFIG_BOARD_LOOPSPERMSEC=16000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_DEV_URANDOM=y +CONFIG_DHCPC_RENEW_STACKSIZE=2048 +CONFIG_EXPERIMENTAL=y +CONFIG_FS_PROCFS=y +CONFIG_GD32VW55X_BLE=y +CONFIG_GD32VW55X_BLE_GATT_DEMO=y +CONFIG_GD32VW55X_UART2=y +CONFIG_GD32VW55X_WIFI=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=8192 +CONFIG_INTELHEX_BINARY=y +CONFIG_IOB_NBUFFERS=64 +CONFIG_IOB_THROTTLE=8 +CONFIG_IRQ_WORK_STACKSIZE=2048 +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MM_REGIONS=2 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETINIT_NETLOCAL=y +CONFIG_NETUTILS_DHCPC_BOOTP_FLAGS=0x8000 +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1514 +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=64 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=2048 +CONFIG_PTHREAD_STACK_DEFAULT=2048 +CONFIG_RAM_SIZE=294400 +CONFIG_RAM_START=0x20000200 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_RTC=y +CONFIG_RTC_DATETIME=y +CONFIG_SCHED_HPWORKSTACKSIZE=2048 +CONFIG_SCHED_LPWORKSTACKSIZE=2048 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=13 +CONFIG_START_MONTH=7 +CONFIG_START_YEAR=2026 +CONFIG_SYSTEM_DD_STACKSIZE=2048 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NSH_STACKSIZE=2048 +CONFIG_SYSTEM_PING=y +CONFIG_SYSTEM_PING_STACKSIZE=2048 +CONFIG_TASK_NAME_SIZE=15 +CONFIG_UART2_SERIAL_CONSOLE=y +CONFIG_USEC_PER_TICK=1000 +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=2048 diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/nsh/defconfig b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/nsh/defconfig new file mode 100644 index 0000000000000..0545db2e8557e --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/nsh/defconfig @@ -0,0 +1,51 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="gd32vw553-hmq" +CONFIG_ARCH_BOARD_GD32VW553_HMQ=y +CONFIG_ARCH_CHIP="gd32vw55x" +CONFIG_ARCH_CHIP_GD32VW553HM=y +CONFIG_ARCH_CHIP_GD32VW55X=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=16000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_FS_PROCFS=y +CONFIG_GD32VW55X_UART2=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=64 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_RAM_SIZE=294400 +CONFIG_RAM_START=0x20000200 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=13 +CONFIG_START_MONTH=7 +CONFIG_START_YEAR=2026 +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=12 +CONFIG_UART2_RXBUFSIZE=128 +CONFIG_UART2_SERIAL_CONSOLE=y +CONFIG_UART2_TXBUFSIZE=128 diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ostest/defconfig b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ostest/defconfig new file mode 100644 index 0000000000000..82ad70b75f59b --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/ostest/defconfig @@ -0,0 +1,52 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="gd32vw553-hmq" +CONFIG_ARCH_BOARD_GD32VW553_HMQ=y +CONFIG_ARCH_CHIP="gd32vw55x" +CONFIG_ARCH_CHIP_GD32VW553HM=y +CONFIG_ARCH_CHIP_GD32VW55X=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=16000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_FS_PROCFS=y +CONFIG_GD32VW55X_UART2=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=64 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_RAM_SIZE=294400 +CONFIG_RAM_START=0x20000200 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=13 +CONFIG_START_MONTH=7 +CONFIG_START_YEAR=2026 +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=12 +CONFIG_TESTING_OSTEST=y +CONFIG_UART2_RXBUFSIZE=128 +CONFIG_UART2_SERIAL_CONSOLE=y +CONFIG_UART2_TXBUFSIZE=128 diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/sta_softap/defconfig b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/sta_softap/defconfig new file mode 100644 index 0000000000000..1241fc50f1656 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/sta_softap/defconfig @@ -0,0 +1,85 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="gd32vw553-hmq" +CONFIG_ARCH_BOARD_GD32VW553_HMQ=y +CONFIG_ARCH_CHIP="gd32vw55x" +CONFIG_ARCH_CHIP_GD32VW553HM=y +CONFIG_ARCH_CHIP_GD32VW55X=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_INITTHREAD_STACKSIZE=2048 +CONFIG_BOARD_LOOPSPERMSEC=16000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_DEV_URANDOM=y +CONFIG_DHCPC_RENEW_STACKSIZE=2048 +CONFIG_EXAMPLES_DHCPD=y +CONFIG_FS_PROCFS=y +CONFIG_GD32VW55X_UART2=y +CONFIG_GD32VW55X_WIFI=y +CONFIG_GD32VW55X_WIFI_MGMT_STACKSIZE=8192 +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=8192 +CONFIG_INTELHEX_BINARY=y +CONFIG_IOB_NBUFFERS=64 +CONFIG_IOB_THROTTLE=8 +CONFIG_IRQ_WORK_STACKSIZE=2048 +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MM_REGIONS=2 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETINIT_NETLOCAL=y +CONFIG_NETUTILS_DHCPC_BOOTP_FLAGS=0x8000 +CONFIG_NETUTILS_DHCPD=y +CONFIG_NETUTILS_DHCPD_STACKSIZE=2048 +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1514 +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=64 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=2048 +CONFIG_PTHREAD_STACK_DEFAULT=2048 +CONFIG_RAM_SIZE=294400 +CONFIG_RAM_START=0x20000200 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_RTC=y +CONFIG_RTC_DATETIME=y +CONFIG_SCHED_HPWORKSTACKSIZE=2048 +CONFIG_SCHED_LPWORKSTACKSIZE=2048 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=13 +CONFIG_START_MONTH=7 +CONFIG_START_YEAR=2026 +CONFIG_SYSTEM_DD_STACKSIZE=2048 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NSH_STACKSIZE=2048 +CONFIG_SYSTEM_PING=y +CONFIG_SYSTEM_PING_STACKSIZE=2048 +CONFIG_TASK_NAME_SIZE=15 +CONFIG_UART2_SERIAL_CONSOLE=y +CONFIG_USEC_PER_TICK=1000 +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=2048 diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/wapi/defconfig b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/wapi/defconfig new file mode 100644 index 0000000000000..207d174148314 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/configs/wapi/defconfig @@ -0,0 +1,81 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="gd32vw553-hmq" +CONFIG_ARCH_BOARD_GD32VW553_HMQ=y +CONFIG_ARCH_CHIP="gd32vw55x" +CONFIG_ARCH_CHIP_GD32VW553HM=y +CONFIG_ARCH_CHIP_GD32VW55X=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_INITTHREAD_STACKSIZE=2048 +CONFIG_BOARD_LOOPSPERMSEC=16000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_DEV_URANDOM=y +CONFIG_DHCPC_RENEW_STACKSIZE=2048 +CONFIG_FS_PROCFS=y +CONFIG_GD32VW55X_UART2=y +CONFIG_GD32VW55X_WIFI=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=8192 +CONFIG_INTELHEX_BINARY=y +CONFIG_IOB_NBUFFERS=64 +CONFIG_IOB_THROTTLE=8 +CONFIG_IRQ_WORK_STACKSIZE=2048 +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MM_REGIONS=2 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETINIT_NETLOCAL=y +CONFIG_NETUTILS_DHCPC_BOOTP_FLAGS=0x8000 +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1514 +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=64 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=2048 +CONFIG_PTHREAD_STACK_DEFAULT=2048 +CONFIG_RAM_SIZE=294400 +CONFIG_RAM_START=0x20000200 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_RTC=y +CONFIG_RTC_DATETIME=y +CONFIG_SCHED_HPWORKSTACKSIZE=2048 +CONFIG_SCHED_LPWORKSTACKSIZE=2048 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=13 +CONFIG_START_MONTH=7 +CONFIG_START_YEAR=2026 +CONFIG_SYSTEM_DD_STACKSIZE=2048 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NSH_STACKSIZE=2048 +CONFIG_SYSTEM_PING=y +CONFIG_SYSTEM_PING_STACKSIZE=2048 +CONFIG_TASK_NAME_SIZE=15 +CONFIG_UART2_SERIAL_CONSOLE=y +CONFIG_USEC_PER_TICK=1000 +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=2048 diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/include/board.h b/boards/risc-v/gd32vw55x/gd32vw553-hmq/include/board.h new file mode 100644 index 0000000000000..e5d14dda989c0 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/include/board.h @@ -0,0 +1,172 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/include/board.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +#ifndef __BOARDS_RISCV_GD32VW55X_GD32VW553_HMQ_INCLUDE_BOARD_H +#define __BOARDS_RISCV_GD32VW55X_GD32VW553_HMQ_INCLUDE_BOARD_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Clocking: 40 MHz HXTAL -> PLLDIG -> 160 MHz SYSCLK (see + * gd32vw55x_clockconfig.c). These are informational for board code. + */ + +#define BOARD_HXTAL_FREQUENCY 40000000 +#define BOARD_IRC32K_FREQUENCY 32000 /* Internal 32 kHz RC (FWDGT, RTC) */ +#define BOARD_SYSCLK_FREQUENCY 160000000 + +/* UART pin muxing. The GD32VW553-HMQ wires UART0 (PA8/PB15) to the + * on-board UBS/Serial port. Pin/AF assignments follow the + * vendor SDK (plf/src/uart/uart.h, ASIC boards). + */ + +#define BOARD_UART2_TX_GPIO GD32VW55X_GPIOA_BASE +#define BOARD_UART2_TX_PIN 6 +#define BOARD_UART2_TX_AF 10 +#define BOARD_UART2_RX_GPIO GD32VW55X_GPIOA_BASE +#define BOARD_UART2_RX_PIN 7 +#define BOARD_UART2_RX_AF 8 + +#define BOARD_UART1_TX_GPIO GD32VW55X_GPIOB_BASE +#define BOARD_UART1_TX_PIN 15 +#define BOARD_UART1_TX_AF 7 +#define BOARD_UART1_RX_GPIO GD32VW55X_GPIOA_BASE +#define BOARD_UART1_RX_PIN 8 +#define BOARD_UART1_RX_AF 3 + +/* This is the console: PA8 as RX and PB15 ad TX */ + +#define BOARD_USART0_TX_GPIO GD32VW55X_GPIOB_BASE +#define BOARD_USART0_TX_PIN 15 +#define BOARD_USART0_TX_AF 8 +#define BOARD_USART0_RX_GPIO GD32VW55X_GPIOA_BASE +#define BOARD_USART0_RX_PIN 8 +#define BOARD_USART0_RX_AF 2 + +/* Peripheral pin selection *************************************************/ + +/* The pin options come from arch/risc-v/src/gd32vw55x/hardware/ + * gd32vw55x_pinmap.h. Avoid PA6/PA7: they are the UART2 console. + */ + +#ifdef CONFIG_GD32VW55X_SPI +# define GPIO_SPI_SCK GPIO_SPI_SCK_1 /* PA2, AF5 */ +# define GPIO_SPI_MISO GPIO_SPI_MISO_1 /* PA1, AF5 */ +# define GPIO_SPI_MOSI GPIO_SPI_MOSI_1 /* PA0, AF5 */ + +/* SPI0 chip select for the SD card: a plain GPIO output on PA4 (J1), + * driven by gd32_spi0select(). Active low, idles high. + */ + +# define GPIO_SPI0_CSPIN (GPIO_CFG_MODE_OUTPUT | GPIO_CFG_PUPD_NONE | \ + GPIO_CFG_PP | GPIO_CFG_SPEED_MAX | \ + GPIO_CFG_OUTPUT_SET | GPIO_CFG_PORT_A | \ + GPIO_CFG_PIN_4) +#endif + +/* I2C0 uses PA2 (SCL) / PA3 (SDA) on AF4, the pins broken out on the J1 + * header (datasheet Table 2-5), so a sensor such as the SHT3x can be wired + * there directly. When SPI is enabled it claims PA2 (SPI SCK), so I2C0 + * falls back to PB0/PB1 (AF6); PB1 (SDA) is not broken out on J1/J2, so that + * pairing only registers the bus (the periph case). + */ + +#ifdef CONFIG_GD32VW55X_I2C0 +# ifdef CONFIG_GD32VW55X_SPI +# define GPIO_I2C0_SCL GPIO_I2C0_SCL_3 /* PB0, AF6 */ +# define GPIO_I2C0_SDA GPIO_I2C0_SDA_3 /* PB1, AF6 (not on a header) */ +# else +# define GPIO_I2C0_SCL GPIO_I2C0_SCL_1 /* PA2, AF4 (J1) */ +# define GPIO_I2C0_SDA GPIO_I2C0_SDA_1 /* PA3, AF4 (J1) */ +# endif +#endif + +#ifdef CONFIG_GD32VW55X_I2C1 +# define GPIO_I2C1_SCL GPIO_I2C1_SCL_4 /* PB12, AF6 */ +# define GPIO_I2C1_SDA GPIO_I2C1_SDA_4 /* PB13, AF6 */ +#endif + +/* PWM. The board bringup registers /dev/pwm0 on TIMER1. Route its channel + * 0 (TIMER1_CH0) to PA0 on the J1 header (AF1; TIMER1 lives on AF1) so the + * output can be probed there. The other channels stay unrouted. + */ + +#ifdef CONFIG_GD32VW55X_PWM +# define GPIO_TIMER1_CH0OUT (GPIO_CFG_MODE_AF | GPIO_CFG_PUPD_NONE | \ + GPIO_CFG_PP | GPIO_CFG_SPEED_MAX | \ + GPIO_CFG_AF_1 | GPIO_CFG_PORT_A | GPIO_CFG_PIN_0) +#endif + +/* ADC. Route ADC channel 8 (ADC_IN8) to PB0 on the J1 header (datasheet + * Table 2-5) so an analog signal can be applied there. When SPI is enabled + * PB0 is instead claimed by the I2C0 fallback (see above), so the analog pin + * is only routed when SPI is off. The board bringup samples this channel + * when the macro is defined. + */ + +#if defined(CONFIG_GD32VW55X_ADC) && !defined(CONFIG_GD32VW55X_SPI) +# define GPIO_ADC_IN8 (GPIO_CFG_MODE_ANALOG | GPIO_CFG_PUPD_NONE | \ + GPIO_CFG_PORT_B | GPIO_CFG_PIN_0) +#endif + +/* LEDs *********************************************************************/ + +/* The GD32VW553-HMQ has one LED on GPIO PC13, driven push-pull and + * active HIGH (the vendor demo turns them on with gpio_bit_set(); see + * MSDK/plf/src/gd32vw55x_platform.h, where they are named LED_RUN, + * LED_SLEEP and LED_RX). + * + * LED1 PC13 + */ + +#define GPIO_LED1 (GPIO_CFG_MODE_OUTPUT | GPIO_CFG_PUPD_NONE | GPIO_CFG_PP | \ + GPIO_CFG_SPEED_MAX | GPIO_CFG_OUTPUT_RESET | \ + GPIO_CFG_PORT_C | GPIO_CFG_PIN_0) + +/* LED index values for use with board_userled() */ + +#define BOARD_LED1 0 +#define BOARD_NLEDS 1 + +/* LED bits for use with board_userled_all() */ + +#define BOARD_LED1_BIT (1 << BOARD_LED1) + +/* If CONFIG_ARCH_LEDS is defined, the LEDs are used by the OS to signal + * its state, and are not available to the application. Otherwise they are + * fully under application control. + * + * SYMBOL MEANING LED1 LED2 LED3 + * ------------------ ------------------------ ---- ---- ---- + */ + +#define LED_STARTED 0 /* NuttX has been started ON */ +#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF */ +#define LED_IRQSENABLED 2 /* Interrupts enabled OFF */ +#define LED_STACKCREATED 3 /* Idle stack created OFF */ +#define LED_INIRQ 4 /* In an interrupt OFF */ +#define LED_SIGNAL 5 /* In a signal handler OFF */ +#define LED_ASSERTION 6 /* An assertion failed OFF */ +#define LED_PANIC 7 /* The system has crashed BLINK */ + +#endif /* __BOARDS_RISCV_GD32VW55X_GD32VW553_HMQ_INCLUDE_BOARD_H */ diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/Make.defs b/boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/Make.defs new file mode 100644 index 0000000000000..b2eb4b42d86e8 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/Make.defs @@ -0,0 +1,52 @@ +############################################################################ +# boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/Make.defs +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you 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. +# +############################################################################ + +include $(TOPDIR)/.config +include $(TOPDIR)/tools/Config.mk +include $(TOPDIR)/arch/risc-v/src/common/Toolchain.defs + +ARCH_SRCDIR = $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src +ARCH_INCDIR = $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)include + +LDSCRIPT = ld.script +ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) + +# The Wi-Fi/BLE prebuilt libraries are built with -march=rv32imafcbp and +# -mabi=ilp32f. NuttX code is compiled rv32imafc/ilp32f (B/P extensions +# are not used by the kernel) which links cleanly against them. + +ARCHCPUFLAGS += -mno-relax + +ifeq ($(CONFIG_STACK_OVERFLOW_CHECK),y) + ARCHCFLAGS += -finstrument-functions -ffixed-s11 +endif + +ARCHDEFINES += -DARCH_RISCV + +CFLAGS = $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) +CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS) +CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +AFLAGS += $(CFLAGS) -D__ASSEMBLY__ + +LDELFFLAGS += -melf32lriscv diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/ld.script b/boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/ld.script new file mode 100644 index 0000000000000..0147fe6a63b68 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/ld.script @@ -0,0 +1,122 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/scripts/ld.script + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/* NuttX is flashed directly at the start of the SIP flash (MBL bypassed). + * + * FLASH: the part has 4096K, but this board does not give all of it to the + * firmware. Two regions sit at the top and must survive a firmware update, + * so the linker only gets what is left below them: + * + * 0x083db000 progmem (128K): the MTD device / LittleFS. This split is a + * DECISION OF THIS BOARD, not a property of the chip -- another + * board may size it differently, or not carve it out at all. + * It must match CONFIG_GD32VW55X_PROGMEM_START_ADDR/_SIZE. + * 0x083fb000 Wi-Fi NVDS (20K): RF calibration data and the MAC address. + * This one IS fixed by the chip's radio firmware. + * + * That leaves 3948K (0x3db000) for the firmware. Overflowing it is a link + * error, which is the point: a firmware that grew over these regions would + * take the filesystem, or the radio calibration, with it at the next flash. + * + * SRAM: the first 0x200 bytes belong to the boot ROM runtime data (the + * ROM mbedtls/IBL state) and must stay untouched - the vendor SDK links + * applications at 0x20000200 for the same reason. The top 32 KB shared + * SRAM is reserved for the Wi-Fi firmware RX buffers, so the region has to + * end at 0x20048000: the origin goes up by 0x200 and the length goes down + * by the same 0x200. + */ + +MEMORY +{ + flash (rx) : ORIGIN = 0x08000000, LENGTH = 3948K + sram (rwx) : ORIGIN = 0x20000200, LENGTH = 288K - 0x200 +} + +OUTPUT_ARCH("riscv") + +ENTRY(_stext) +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.srodata .srodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + } > flash + + .init_section : ALIGN(4) { + _sinit = ABSOLUTE(.); + KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP(*(.init_array EXCLUDE_FILE(*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o) .ctors)) + _einit = ABSOLUTE(.); + } > flash + + _eronly = ABSOLUTE(.); + + .data : ALIGN(4) { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.sdata .sdata.* .sdata2.*) + *(.gnu.linkonce.d.*) + *(.gnu.linkonce.s.*) + CONSTRUCTORS + . = ALIGN(4); + _edata = ABSOLUTE(.); + } > sram AT > flash + + PROVIDE(__global_pointer$ = _sdata + ((_edata - _sdata) / 2)); + + .bss : ALIGN(4) { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.sbss .sbss.*) + *(.gnu.linkonce.b.*) + *(.gnu.linkonce.sb.*) + *(COMMON) + . = ALIGN(32); + _ebss = ABSOLUTE(.); + } > sram + + /* Stabs debugging sections. */ + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/Makefile b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/Makefile new file mode 100644 index 0000000000000..67584a8190f56 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/Makefile @@ -0,0 +1,41 @@ +############################################################################ +# boards/risc-v/gd32vw55x/gd32vw553-hmq/src/Makefile +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you 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. +# +############################################################################ + +include $(TOPDIR)/Make.defs + +CSRCS = gd32_boot.c gd32_bringup.c + +ifeq ($(CONFIG_ARCH_LEDS),y) +CSRCS += gd32_autoleds.c +else ifeq ($(CONFIG_USERLED),y) +CSRCS += gd32_userleds.c +endif + +ifeq ($(CONFIG_BOARDCTL),y) +CSRCS += gd32_appinit.c +endif + +ifeq ($(CONFIG_BOARDCTL_RESET),y) +CSRCS += gd32_reset.c +endif + +include $(TOPDIR)/boards/Board.mk diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_appinit.c b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_appinit.c new file mode 100644 index 0000000000000..e5b280b37ea0a --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_appinit.c @@ -0,0 +1,58 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_appinit.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#include "gd32vw553-hmq.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform application specific initialization. This function is never + * called directly from application code, but only indirectly via the + * (non-standard) boardctl() interface using the command BOARDIOC_INIT. + * + ****************************************************************************/ + +int board_app_initialize(uintptr_t arg) +{ +#ifdef CONFIG_BOARD_LATE_INITIALIZE + /* Board initialization already performed by board_late_initialize() */ + + return OK; +#else + return gd32_bringup(); +#endif +} diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_autoleds.c b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_autoleds.c new file mode 100644 index 0000000000000..8de8f33bf84b3 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_autoleds.c @@ -0,0 +1,139 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_autoleds.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include + +#include "gd32vw55x_gpio.h" +#include "gd32vw553-hmq.h" + +#ifdef CONFIG_ARCH_LEDS + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* The three LEDs are on GPIOC and are active HIGH. When CONFIG_ARCH_LEDS is + * selected they show the OS state and are not available to the application; + * the meaning of each state is tabulated in board.h. + */ + +static const uint32_t g_led_map[BOARD_NLEDS] = +{ + GPIO_LED1, + GPIO_LED2, + GPIO_LED3 +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +static void led_set(int led, bool ledon) +{ + gd32_gpio_write(g_led_map[led], ledon); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_autoled_initialize + ****************************************************************************/ + +void board_autoled_initialize(void) +{ + int i; + + for (i = 0; i < BOARD_NLEDS; i++) + { + gd32_gpio_config(g_led_map[i]); + } +} + +/**************************************************************************** + * Name: board_autoled_on + ****************************************************************************/ + +void board_autoled_on(int led) +{ + switch (led) + { + case LED_STARTED: + case LED_HEAPALLOCATE: + case LED_IRQSENABLED: + led_set(BOARD_LED1, true); + break; + + case LED_STACKCREATED: + led_set(BOARD_LED1, true); + led_set(BOARD_LED2, true); + break; + + case LED_ASSERTION: + case LED_PANIC: + led_set(BOARD_LED3, true); + break; + + case LED_INIRQ: + case LED_SIGNAL: + default: + + /* These states leave the LEDs alone: toggling them on every + * interrupt would make the display useless. + */ + + break; + } +} + +/**************************************************************************** + * Name: board_autoled_off + ****************************************************************************/ + +void board_autoled_off(int led) +{ + switch (led) + { + case LED_ASSERTION: + case LED_PANIC: + led_set(BOARD_LED3, false); + break; + + case LED_INIRQ: + case LED_SIGNAL: + default: + break; + } +} + +#endif /* CONFIG_ARCH_LEDS */ diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_boot.c b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_boot.c new file mode 100644 index 0000000000000..c731bcced65a3 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_boot.c @@ -0,0 +1,73 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_boot.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include +#include + +#include "gd32vw55x.h" +#include "gd32vw553-hmq.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: gd32vw55x_boardinitialize + * + * Description: + * All GD32VW55x architectures must provide the following entry point. + * This entry point is called early in the initialization -- after all + * memory has been configured and mapped but before any devices have + * been initialized. + * + ****************************************************************************/ + +void gd32vw55x_boardinitialize(void) +{ +} + +/**************************************************************************** + * Name: board_late_initialize + * + * Description: + * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional + * initialization call will be performed in the boot-up sequence to a + * function called board_late_initialize(). board_late_initialize() + * will be called after up_initialize() is called and just before the + * initial application is started. + * + ****************************************************************************/ + +#ifdef CONFIG_BOARD_LATE_INITIALIZE +void board_late_initialize(void) +{ + gd32_bringup(); +} +#endif diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_bringup.c b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_bringup.c new file mode 100644 index 0000000000000..f2235dfd331d6 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_bringup.c @@ -0,0 +1,323 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_bringup.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include + +#ifdef CONFIG_I2C_DRIVER +# include +#endif +#ifdef CONFIG_SPI_DRIVER +# include +#endif +#ifdef CONFIG_MMCSD_SPI +# include +#endif +#ifdef CONFIG_GD32VW55X_ADC +# include +#endif +#ifdef CONFIG_GD32VW55X_PWM +# include +#endif +#ifdef CONFIG_GD32VW55X_CAPTURE +# include +#endif +#ifdef CONFIG_USERLED_LOWER +# include +#endif +#ifdef CONFIG_SENSORS_SHT3X +# include +#endif +#ifdef CONFIG_MTD_PROGMEM +# include +#endif + +#include "gd32vw55x_i2c.h" +#include "gd32vw55x_spi.h" +#include "gd32vw55x_adc.h" +#include "gd32vw55x_pwm.h" +#include "gd32vw55x_capture.h" +#include "gd32vw55x_fwdgt.h" +#include "gd32vw55x_wwdgt.h" + +#include + +#include "gd32vw553-hmq.h" + +#ifdef CONFIG_GD32VW55X_WIFI +/* Brings the radio up at boot and registers wlan0 -- same pattern as the + * board_wlan_init() of the Espressif boards. It must happen before the NSH + * netinit, which looks for the interface. + */ + +int gdwifi_start(void); +#endif + +#ifdef CONFIG_GD32VW55X_BLE +int gd32_ble_initialize(void); +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: gd32_bringup + ****************************************************************************/ + +int gd32_bringup(void) +{ +#ifdef CONFIG_GD32VW55X_I2C0 + struct i2c_master_s *i2c; +#endif +#ifdef CONFIG_GD32VW55X_SPI + struct spi_dev_s *spi; +#endif +#ifdef CONFIG_GD32VW55X_ADC + static const uint8_t chanlist[1] = + { +#ifdef GPIO_ADC_IN8 + 8 /* ADC_IN8 (PB0) on J1, routed by the adc example */ +#else + 0 /* ADC_IN0 (PA0); no analog pin routed, registers the device only */ +#endif + }; + + struct adc_dev_s *adc; +#endif +#ifdef CONFIG_GD32VW55X_PWM + struct pwm_lowerhalf_s *pwm; +#endif +#ifdef CONFIG_GD32VW55X_CAPTURE + struct cap_lowerhalf_s *cap; +#endif +#ifdef CONFIG_MTD_PROGMEM + struct mtd_dev_s *mtd; +#endif + int ret = OK; + +#ifdef CONFIG_GD32VW55X_WIFI + /* Initialize the platform + the SDK Wi-Fi stack. The SDK calls + * net_if_add() when it creates the VIF, and that is where wlan0 is + * registered. + */ + + if (gdwifi_start() != 0) + { + ferr("ERROR: failed to start Wi-Fi\n"); + } +#endif + +#ifdef CONFIG_GD32VW55X_BLE + /* After Wi-Fi: the platform (clocks, RF, NVDS) is brought up there, and + * the BLE controller reuses it. + */ + + if (gd32_ble_initialize() < 0) + { + ferr("ERROR: failed to start BLE\n"); + } +#endif + +#ifdef CONFIG_GD32VW55X_I2C0 + i2c = gd32_i2cbus_initialize(0); + if (i2c == NULL) + { + ferr("ERROR: failed to initialize I2C0\n"); + } + else + { +#ifdef CONFIG_I2C_DRIVER + /* Expose the bus as /dev/i2c0 for the i2ctool (i2c dev/get/set...) */ + + if (i2c_register(i2c, 0) < 0) + { + ferr("ERROR: failed to register /dev/i2c0\n"); + } +#endif + +#ifdef CONFIG_SENSORS_SHT3X + /* Sensirion SHT3x on I2C0 -> /dev/temp0. The default I2C address is + * 0x44 (0x45 with ADDR tied high); confirm it first with + * "i2c dev 0x44 0x45" from NSH. + */ + + if (sht3x_register("/dev/temp0", i2c, 0x44) < 0) + { + ferr("ERROR: failed to register SHT3x at 0x44 on I2C0\n"); + } +#endif + } +#endif + +#ifdef CONFIG_GD32VW55X_SPI + /* The family has a single SPI instance: bus 0. Configure the chip select + * GPIOs first, then bring the bus up. + */ + + gd32_spidev_initialize(); + + spi = gd32_spibus_initialize(0); + if (spi == NULL) + { + ferr("ERROR: failed to initialize SPI0\n"); + } + else + { +#ifdef CONFIG_SPI_DRIVER + if (spi_register(spi, 0) < 0) + { + ferr("ERROR: failed to register /dev/spi0\n"); + } +#endif + +#ifdef CONFIG_MMCSD_SPI + /* Bind SPI0 to the MMC/SD SPI slot (/dev/mmcsd0) and mount it as FAT. + * The SD card is wired to SPI0 (SCK PA2, MISO PA1, MOSI PA0) with the + * chip select on PA4 -- all on the J1 header. + */ + + ret = mmcsd_spislotinitialize(0, 0, spi); + if (ret < 0) + { + ferr("ERROR: failed to bind SPI0 to the MMC/SD slot: %d\n", ret); + } + else + { + ret = nx_mount("/dev/mmcsd0", "/mnt/sd", "vfat", 0, NULL); + if (ret < 0) + { + ferr("ERROR: failed to mount /mnt/sd: %d\n", ret); + } + } +#endif + } +#endif + +#ifdef CONFIG_GD32VW55X_ADC + adc = gd32_adc_initialize(0, chanlist, 1); + if (adc == NULL) + { + ferr("ERROR: failed to initialize the ADC\n"); + } + else if (adc_register("/dev/adc0", adc) < 0) + { + ferr("ERROR: failed to register /dev/adc0\n"); + } +#endif + +#ifdef CONFIG_GD32VW55X_PWM + pwm = gd32_pwminitialize(1); + if (pwm == NULL) + { + ferr("ERROR: failed to initialize PWM on TIMER1\n"); + } + else if (pwm_register("/dev/pwm0", pwm) < 0) + { + ferr("ERROR: failed to register /dev/pwm0\n"); + } +#endif + +#ifdef CONFIG_GD32VW55X_CAPTURE + cap = gd32_cap_initialize(2); + if (cap == NULL) + { + ferr("ERROR: failed to initialize capture on TIMER2\n"); + } + else if (cap_register("/dev/capture0", cap) < 0) + { + ferr("ERROR: failed to register /dev/capture0\n"); + } +#endif + +#ifdef CONFIG_MTD_PROGMEM + /* The progmem region of the internal flash as an MTD device. It sits + * below the Wi-Fi NVDS -- see CONFIG_GD32VW55X_PROGMEM_START_ADDR. + */ + + mtd = progmem_initialize(); + if (mtd == NULL) + { + ferr("ERROR: progmem_initialize failed\n"); + } + else + { + ret = register_mtddriver("/dev/gd32flash", mtd, 0750, NULL); + if (ret < 0) + { + ferr("ERROR: failed to register /dev/gd32flash: %d\n", ret); + } + +#ifdef CONFIG_FS_LITTLEFS + /* Mount it as LittleFS, formatting it on the first boot */ + + else + { + ret = nx_mount("/dev/gd32flash", "/data", "littlefs", 0, + "autoformat"); + if (ret < 0) + { + ferr("ERROR: failed to mount /data: %d\n", ret); + } + } +#endif + } +#endif + +#ifdef CONFIG_USERLED_LOWER + /* The three board LEDs -> /dev/userleds */ + + ret = userled_lower_initialize("/dev/userleds"); + if (ret < 0) + { + ferr("ERROR: failed to register /dev/userleds: %d\n", ret); + } +#endif + +#ifdef CONFIG_GD32VW55X_FWDGT + gd32_fwdgt_initialize("/dev/watchdog0", BOARD_IRC32K_FREQUENCY); +#endif + +#ifdef CONFIG_GD32VW55X_WWDGT + gd32_wwdgt_initialize("/dev/watchdog1"); +#endif + +#ifdef CONFIG_FS_PROCFS + /* Mount the procfs file system */ + + ret = nx_mount(NULL, "/proc", "procfs", 0, NULL); + if (ret < 0) + { + ferr("ERROR: Failed to mount procfs at /proc: %d\n", ret); + } +#endif + + return ret; +} diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_reset.c b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_reset.c new file mode 100644 index 0000000000000..f88c137b5ecce --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_reset.c @@ -0,0 +1,79 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_reset.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include "riscv_internal.h" +#include "gd32vw55x_memorymap.h" + +#ifdef CONFIG_BOARDCTL_RESET + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* The Nuclei SysTimer carries the software reset request register. Writing + * the key asks the SoC for a reset; the core is reset a few cycles later, + * so the write never returns. + */ + +#define GD32VW55X_SYSTIMER_MSFTRST (GD32VW55X_SYSTIMER_BASE + 0x0ff0) +#define SYSTIMER_MSFTRST_KEY 0x80000a5f + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_reset + * + * Description: + * Reset the board. Called by the "reset" NSH command and by + * boardctl(BOARDIOC_RESET). + * + * Input Parameters: + * status - Reset status, ignored here. + * + * Returned Value: + * Does not return. + * + ****************************************************************************/ + +int board_reset(int status) +{ + putreg32(SYSTIMER_MSFTRST_KEY, GD32VW55X_SYSTIMER_MSFTRST); + + for (; ; ) + { + /* Wait for the reset to arrive */ + } + + return 0; +} + +#endif /* CONFIG_BOARDCTL_RESET */ diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_userleds.c b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_userleds.c new file mode 100644 index 0000000000000..a197e258630b5 --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_userleds.c @@ -0,0 +1,101 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32_userleds.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include + +#include "gd32vw55x_gpio.h" +#include "gd32vw553-hmq.h" + +#ifndef CONFIG_ARCH_LEDS + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* The three LEDs are on GPIOC and are active HIGH: driving the pin high + * lights the LED. + */ + +static const uint32_t g_led_map[BOARD_NLEDS] = +{ + GPIO_LED1, + GPIO_LED2, + GPIO_LED3 +}; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_userled_initialize + ****************************************************************************/ + +uint32_t board_userled_initialize(void) +{ + int i; + + for (i = 0; i < BOARD_NLEDS; i++) + { + gd32_gpio_config(g_led_map[i]); + } + + return BOARD_NLEDS; +} + +/**************************************************************************** + * Name: board_userled + ****************************************************************************/ + +void board_userled(int led, bool ledon) +{ + if ((unsigned int)led < BOARD_NLEDS) + { + gd32_gpio_write(g_led_map[led], ledon); + } +} + +/**************************************************************************** + * Name: board_userled_all + ****************************************************************************/ + +void board_userled_all(uint32_t ledset) +{ + int i; + + for (i = 0; i < BOARD_NLEDS; i++) + { + gd32_gpio_write(g_led_map[i], (ledset & (1 << i)) != 0); + } +} + +#endif /* !CONFIG_ARCH_LEDS */ diff --git a/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32vw553-hmq.h b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32vw553-hmq.h new file mode 100644 index 0000000000000..92af7ff31bedd --- /dev/null +++ b/boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32vw553-hmq.h @@ -0,0 +1,52 @@ +/**************************************************************************** + * boards/risc-v/gd32vw55x/gd32vw553-hmq/src/gd32vw553-hmq.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + ****************************************************************************/ + +#ifndef __BOARDS_RISCV_GD32VW55X_GD32VW553_HMQ_SRC_GD32VW553_HMQ_H +#define __BOARDS_RISCV_GD32VW55X_GD32VW553_HMQ_SRC_GD32VW553_HMQ_H + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: gd32_bringup + * + * Description: + * Perform architecture-specific initialization + * + ****************************************************************************/ + +int gd32_bringup(void); + +/**************************************************************************** + * Name: gd32_spidev_initialize + * + * Description: + * Configure the SPI chip select GPIO(s) used by the board. + * + ****************************************************************************/ + +#ifdef CONFIG_GD32VW55X_SPI +void gd32_spidev_initialize(void); +#endif + +#endif /* __BOARDS_RISCV_GD32VW55X_GD32VW553_HMQ_SRC_GD32VW553_HMQ_H */ diff --git a/boards/risc-v/gd32vw55x/gd32vw553k-start/include/board.h b/boards/risc-v/gd32vw55x/gd32vw553k-start/include/board.h index 1e7b41f9bf8cf..6ae5fc8545c58 100644 --- a/boards/risc-v/gd32vw55x/gd32vw553k-start/include/board.h +++ b/boards/risc-v/gd32vw55x/gd32vw553k-start/include/board.h @@ -54,12 +54,12 @@ #define BOARD_UART1_RX_PIN 8 #define BOARD_UART1_RX_AF 3 -#define BOARD_USART0_TX_GPIO GD32VW55X_GPIOA_BASE -#define BOARD_USART0_TX_PIN 0 -#define BOARD_USART0_TX_AF 0 +#define BOARD_USART0_TX_GPIO GD32VW55X_GPIOB_BASE +#define BOARD_USART0_TX_PIN 15 +#define BOARD_USART0_TX_AF 8 #define BOARD_USART0_RX_GPIO GD32VW55X_GPIOA_BASE -#define BOARD_USART0_RX_PIN 1 -#define BOARD_USART0_RX_AF 0 +#define BOARD_USART0_RX_PIN 8 +#define BOARD_USART0_RX_AF 2 /* Peripheral pin selection *************************************************/ From 7d0c2a44d820eef76520dc168fad6d39e1846dae Mon Sep 17 00:00:00 2001 From: Alan Carvalho de Assis Date: Tue, 1 Sep 2026 18:46:02 -0300 Subject: [PATCH 2/2] doc/boards: Add Documentation to GD32VW553-HMQ board This PR adds Documentatio to GD32VM553-HMQ board. Signed-off-by: Alan C. Assis --- .../boards/gd32vw553-hmq/gd35vw553-hmq.png | Bin 0 -> 167940 bytes .../gd32vw55x/boards/gd32vw553-hmq/index.rst | 254 ++++++++++++++++++ 2 files changed, 254 insertions(+) create mode 100644 Documentation/platforms/risc-v/gd32vw55x/boards/gd32vw553-hmq/gd35vw553-hmq.png create mode 100644 Documentation/platforms/risc-v/gd32vw55x/boards/gd32vw553-hmq/index.rst diff --git a/Documentation/platforms/risc-v/gd32vw55x/boards/gd32vw553-hmq/gd35vw553-hmq.png b/Documentation/platforms/risc-v/gd32vw55x/boards/gd32vw553-hmq/gd35vw553-hmq.png new file mode 100644 index 0000000000000000000000000000000000000000..e096140eb12c072b17f47ec9bd679143803aced6 GIT binary patch literal 167940 zcmafaWl$Z#5-t$j-CYk7+}&LdPH+hj+&O4)x8T9u-QC?KxVyXS)@NN^$29wd>B6^+8t!Qc zW8s@FqI^JinOk8MQg`IrLmc@yq{pz3)+4Z=M&Ej$aZg~7J|XHJ+xRws_Y28XH8mWe zF;^q$>Nathp){|72WKHJC+N{i%K_tj>4uz=x;Hfn41^WX$^c zXD(TukIs|lo0$u5K45|1%pEkhKvFL6U4*xR0`Y5 z3QLR1^7yE!sSix%rBaJZl8^tUUX-fHLqd#>}Cr*WXXuBE}D z=SyoG8&Ny5u+DC+c{gf%E`RE%k&|1`VB7p(dH+ngTfqL`V^ZyE?)R1d3efdOy~O{M zQQL?{i~ow;@_%3aPfOeOKjqx-W=;Q7t}i(I|0sV>0pF@P|A3XgZBR5EUw+bk^8p!l z-plRNXQ4v|?VPq2tn*E3np5mw8W5Yz9d_Pk4i~C;lDr-$sBKoO8mt#E|A@7#c`fad z+I(YrOxt{SJN?*w-^O^KJfk#V+aifV`RDesmn?K|llA&y-eu|5?9dPrw{Gvr-|1i;7$L`s-pcC}#%_@xbW19NrJJ;i?eYn?Y+NX`w zXY%IFP04GgaE$}^XRY2xK-;sPheT-EwWw|&QycNWDa?$rk0^yXGo+8hb4 z60L~14YT(r^WKl~ow3vAWHZd#V;~gtQze3?wf+L9tI(0qWplk{b6|(wy6(94E~QKN^YLV-^>`p0N$@%O%E$nEb5Z{JXJ^Z0>iy;5 zPg;h@;m|5J_)gIHMDP3SRF%*M^|zuSZ&^;C5B?&RJ&8cYwmk1_Md#4+bC1cT0Y8s(SH+Tq}Rw=9CkhC>ExT%1y`%C}X`g?o-e zFCoEpbCmgHo8v2(u94D?P2$q3?SW2_`elNaLp&Edaih7V6Z+jmzT#%{_Ne_)>W|NF z$jj8bTRw&1#hxGslZiB3>)ROp3!eB_kn4@j6zKM^oCJ;cu1CDNo58@l%jAA?vz|@s zXe2&qhQB#YiH4tiGL>1s4?F{hk+GDXDr)4dt zC3D&iw5aU8F=#W?gVMLi(;xT#k~V8t4*Sx)?GAI=cAfMP?uVm~w&@XchsE_L1k5{J zl9t&4eonB9nuU+EGv<&R+2UL;ML<39)})$AsW1pU#2G|@3h@KNhq zasC?WZ4p%DPpx)1on(Y1n7rJK&r?U?Ahs(Up6PCJwRF+cY6}M1EZ;56YAMsL@z;@61}}<|*lM0Sgw~MP+P5m6zJ${b^7V0J?ql|N=Z2P2KW_I8N%;D6Gb>+>H zi4qHYrvPEA#+DpQG31YW_vd{aEqz;uvnATXqMsw-5cQ0y%M=hYe;v<9u^9E*`{$HC zV{KNcxfp3?yO`al(yBT}|1otM{&Y>kD9WOoBHDQUpu$2!udu9~yuFq>_CAAKzm;bfOVr9jXBex?+* z%UjvrEwG(IH!wO%TG6^Bu*|@g8fJxe!ErzA(5_ZE5{`Cn+ zCUtcTb9poAX~)dLH_}Jr>wizW)Cs0u05;BxSM_nh;CblkbP_gHEh`LZ0PhV+4t3j9 zd7Xx%Z)j?f5?_>Mm@O!7ds98N@4gjQe=zqb)V)WP>G3cm?oi-n!Uc+jPj-1euksyO z|A!SV^v2BRc0t7^VQ}37G^EsVx{a7>vEMeye4kOm%leCOxE7(6ki%c`y{hvDB3Ys>2~Mc$KU2dRC4}xopw> zuBND%V~}}at7FI$?k$2wqgU!OD{on6$9(EDvYvNYb9h#DN!G#bnzQTeo@w~jKfZ|A z$ip?M-5yeM%^vQ=p?~PIYvlgfivN?wx94aHa|g0Q#7pVBUo>y-V@ zjQOxUHX`}5GJZ|8R%=K154-gJd5R+UttFZMd-qn|CS=J0zN)VN*UKz(cjt7eDSjCs zUOz9%gG%@A3|dO=SQ%4Se9+*!+P%0eA>2mZ!3!r=WxbFH(XyM#@t`mkH% zW^Kbn9(1kd+`B%o+WtH^#{ar&p0e%@cFh^;qYm#)WkD{;`^j0=b&cQVcCr0bGIVW` zueOm3$%J|e8_xlHK0~n1O5aJ%dLxX1R!L}ux`xLBRqDR|PS$@z;;nQ%8An+X6bPw- zDpiZ@VZNfY>^-gO5_Pf(^8HNqjf%E1(-D1<1e2YyVZ258yz-qsuIF)iQE|Nh{q9X- z{o!ojqp=gnROvfdR@Kq3l>f8$sCNQ=`e#H~U4kgIKu z!?rzCKj;d6A8X9*fcA!9?XPdl6r+zKp_G;tAhMtus)c^If@X?!Vevq_!zuA$rDDsa zbXFEiB2t1j!jfrsMb0^?>gwSKlkvdZB(JlA;^H1AbG4qqyOYaul&|jLPQ_8HkXthQ6f{-Su@T!^vSm4-mK!^~9$<|FhQc?NJ)k}_ z|D4e^W@fb5c=liP{Uo0xNUwAMu~kmS6}-k>+iP6QVg1UuULc{C|GMBH#8AK>!5QPm zHSHKw*Y&!o{X=`mQz|p$8B0PW$=o>td9t4DM?r@(Q4RG~4$f5vq5nYRMRns9Pu!2~ zxkrP;hh7(DL-+s|Xe)?M+`}v5u>7%?bpqTu(c>ulVn_cQc&fjv2D(%~T6%7FBsK&d zJ;TZKR?m&){hYAlvhV7-b!(zWuxoyz1&NfCBKLpk*Z7|{O6N-m=xy(!7>JkI8YuHn zaYGRYeP?KxN0p0zxN%8f6~Sr)(s%@E;BVS&uS7(m@K)-($0r6sv4<-r#qC3ZRAO;> zK$&D9MeCI>%j9}3pd4Bu>3}PeRU)jfQo05`Tanmb-#!X|+1FvvFujL2qz3sEo;;(b z-af7!git}~k5nrev=jmipIqUXeZr>h>RwL%pm)f>&aK|LuDr7y*v>Fiz_4R7`N7rq zmM+@D%#|+n%n3Th?sSU378&|c_3?MV?Uvi_$hEGUPy1ON(=>yc^M}#>B!@k5D4H=T z1P~K$!$rHpJ2j_tJAO+4Yp$DOIm317YkPZx%1i#`M_b;L{f447ox(FZqGiAyKGZ7k z5Jx@qwn@W+>`c@81#C3>##eB1UAe5oq|tvTR=wF z{-hhyX%*jDA-SG7FE4un3%-J(5R}|sal5s>p6+g#)GR1oHtl|Czp>rFd!29D8x%9; zWIu&D^|pnko0+$p0I0}Gl%y4TPA_*NP-VF8&cP%0I0D!A+$Ch=b5$+l0F)2##ke7- zZ?y*3ung4XIjK=7ow4n(iw?lig$E>N5{$3dxK6QiKTHc2n!9azVKJd?B$G|d8eo0{ zxn&L!uTS0eqvDETQUU0S0V0-2vs6}kd4eg|dl(_15-DAobylCYwd6zF*Be3CL~15e zGvDF~*VvFiX#nh8Zb_?9X7N4D(xj4 zHro4cg?xicFG&Yu=V633{RaThXZQmzE|S6QG)g37W7t~yvMHIXQbW%E|IQ&D7|Sz4 zLr~b4xc-q&eYY$KpM?v@-3Q+saJ5By=1?SDpAhEQzUSIJxT*;mK?tZrKKyPR@R;#q zEYn6k`eI$Otu0!X;*TsxAe2PjbhB5O^*J<*Ta4pdj<%rJC1F7P5H3DG;W7sH9TJt43GBy+DDN%wKbi4vKR%F;cU-p0Vi=~dZ4Sn#ZeJ*AI0 zOUK(@iqo!LATs8VPLB?>CxVyovooM^L?Gnh?%DoU=k+iG<$B2Nw?IXz`I|9#)9ZNa}kv zU*Zvn{H~MV08dw$Py!Z{hRJB79E?@&aYGzzBvlllaW|>a3#i45JDJrVQ@&<)KwR(L zk_bT7ut!(d`k}x5wpw+Y?CSu(>vR=8*(xSgR$LFyD;chSbD>997@!TY*b#6a@ZO%` zCWs3%gLDCbQk|P6$f0PJ%f~Uyc+d+h;K>&YR@R2Yja1}PIc#c6l=C5i%Q|62SbpW>CKfrV3m<*|a}0U8u~mvfk|bJ}|2 zU9wTOi8UTwA5-R=xNDPH=}9hgFpJJwXRC=AIki6tDiA7u19 zR$gLUF$EC#CrvJI9Vhc(s)*)ej{ay}cVW*|bd5JQi^>P0^iIPXBg(FDulE1!5woXW zh1>yD=s+oAp1NHEN$%9t2vBeMh<09ZMX`F~T#{IR1_4fT(}%Ff>R0J;O|BT>$tqc4 z;??Nd-9CsOCXkrjEzosEJfERuGF2_r90Z3}u?xLnvN*`-qc~N!DkRiB^sBboX*7D` z(dTmMZ4xw6%1IYlWPr-fNV1^xjsP|{G`p*He0~3+k}K={22t+O!{D@AO&K>WwUr*M z-V;_z%OF6s{p5BXMDn`iDhJ*7fF=d&4e-m$nj^8NbqeDVJ}b5S0C%xNW zTCWaz0a~(&4fcgzYT-46O8&9ys&3~MCrwO@au{U1XKjJPHb0as;z~oe+w}xh!m%=@ zN@^2=5y%1G8Fq7rD9AErBvf70>6)T6pfA4xTvuQC0JRR;hiDhxYop)~d-aZNpSqo_ z5R_AYgXZK+&y-dg|u_2Y}>hx1FRB=N67F5x=$jMeJS!fyb02eDQE7YtUmk@D0@+?0`Z^$Hb zCkWQumWAFuu`MU^e^lX!3k}TA=+c4T5oNIeHDnGXGO%{ifnvLf9Wd-Fq=*qYh1SaK zg%NHl!^iGH_r&G`CE?TL`K8I-T-jDe`U1)k!M%Ism6hnHxJ2~fxe?Ne!23{bsRYBi z$R*dXcB&b;(4kh>VT{ldiotewbEHBx^KEg=X(Z#y%O?Oj0Q7wuokzTaI4x(F5U=oz^zDdd4Y`SlR5M|@EDI0r@FYaB5bOxAd1)zM^FB>ddP1dy|F z>^L%_={sPeH1XA#HVL-N^U@khG_iCDi5983h;%W7>=U4BAu1e02^|PC$LiWq+OMdV zC};m_G;QtIG2J#zWr;>mMH$O4ZcQMmsSUP zHv%4v(!06AiSzqmF0*i{lEfLDH318DbCzzQJFrBS#^+%k`)ZRgKC@(Z7i0C`(6r38 zv^&J8h``hGMp&MW;kxd`9U|S8&;yphj4`0r8R+w*6Pg2nf-lusIy`hc)y6X=66FPT zouc{1_Q-L_VXhWf3EEU)4zps7b#U`o7jkDDWF}V1dw@0w5VYcUI7j>Mcno#S-e1jq4w0fJ;e?uBA59LlEea~F%yEefWduKJ zz1#7IdvFYlXw)WnM@!VR(^?FWl!CYW_Chm@Z-%uX1qhqg!7WwS*3ti2(-A(~yVp=9pG_tTxFUFra|0%5|vBMq+l_;vFM)$HsM9-6df&f8}b%1L#w9D=E6TKilF5=Ovd3zfW3*6no_Ft z?z~|cXRxxf4^9u`R!-w?lA(jcY(NHTr08Kz>lf_fe|%#~Vvm*vj{T#@X$GBge)|W_ zHpga7KteOcPFK05O~F(fORrXXw=u>`Pt~tThJHgHch1V5&9bg;tKX$ygvs}KK~uQ^ zaE$o20~mNsX=e_NhG3SEaKBcY!#7xKmOQ+-StvUGvj4@RxWzbRc&>j0R#MJ-Nm+3w~v5JXtG%7^1uyX%q6NDwqFtm=mRbkFg z*zzbgsW^6Jlb<02VgMF%R51G2_D>q*v`kXc(+z*U`rIf6I^auuGf~x@^2DKiBqLRl zu-d8jkH<{^*{srsH`bsuHD}o*6CbG8=E}y+D!|Y~F!z8O#d)HS^O!kjOQ}EM2 zV-*299y8A0@9)mS4wQyQTE9b7SeT{cX(66p$u zpSSu@wDt7%w|WB3Qql(Sf8_RakmH|H?O}F^N;zoNIc;HT5Y%hc*X4(imllmrZSL&^ zMIa)h)Hu2FQHTZLnm}wGg&yd@l+1_Gv$$X7PJ84n5tsa?%!a3PnOZL>bJj?fF`jrD zNBovZwqg@N4$mWkb#Gkf_h(+gc~bRBy!(XI>&`=-}nHOG7Yr zR|G=*)3G&+kzJi*(ugI%BHaz4s{hc10snOs;ozFC@Tpu%3DB%qDiAm5k)@a}4z}w3 zLvyXwhr?Y?CE%r-TPh~Y(A9%ry^%uI5+*oEAiRgO=)OqZr2?|DHI}_DWcHwJn%Y_brTQ#=LJW&UPqbcJ=r}}+jj9~IZkJDxroMYzTZA006)q9c zehp3LUQZs%>5o$8;iEXL`HLinvZpOnmSg)Sg2;y76+WrpR|ZT90oe zO6-^$>^J7Nym+2JWxCTV6}u|1$s@bSK{L2$6r1-Z2L;#)08%vFOc{Nj*g0M z5=4tM19?rggVOUu>2E&&_1-SG2I+Tuy2G=w&+&;0cYYGhc8$a5rqow?9X$$U!eA)=&*= z#>`zYs3mFn1^r)hPu!yj()4e=drlAkuBVam*IEt9;#!8{U)gl`Q%1sW&?-$&+? z_ETJMIjQ}NohRP_ow|8leT1;5m2GF}Tpt}{r2D*C);9h=0@JATBjG~a25W{R)(*Tu zYmm(dO1o`;yf|f8>l|2F;a#lq8J#~PoDzKfN=t4Ku_jl5HOaW5If2(OA;KUj%zy~O zs`mpN-Dbxy#iAfZG^ z3F#i2y>%?hZxNB^-4F9_y~57l7e8f+^q9Zm-cvs(*ktDo+5(c})wD?X0$qP%t)Z69p8kCB>xQn~ zw#3m-J)hUKWbNjL-tKP5Jc>Sce0AFjXP(!SSN`|8qT*t9(j*A0gq)sk_g2j&%>@~C z;Lvii!S=b^WKLdS+%;`%=qf10_vx~0YwB|c)M%F`0x!k{Mp$0a&F(LH3>(i=9X%>M zx>IrbCiHoZgDJ_<=&e-EUa{NM zUawL&qezfh)Y~1_BuH~oFW&?`6LbKRjgkKSwCaMEkEyLHVVVg|DWSjpeGtaW{ew5^ zg@LcIC^Qcq0RbW1`<|lk5SfKpYsiy%5OTO~7650yT2?nJ2qy5SzW4ljto`lf$DRfY zuS@7k{!dF#;^%9Y&q&vMlke!-8ge^QF%wy@Tp+MRrzSR!kQm?C%MhC7yM_kNSIID0 z>&J-n4lSJw(jg(!=Yw}Y($!O{RQHe;y|j^>k_L=Xp{zwSU~p(~#ukpb-RA;{(aR^U z=LNRy;ha30-3>e0{rJrM?Kq3*Yk|iI5dNT4PL~&rk`lF&|qz`1ibn zxVCHU1DEwbmWo8aCF8{77JM9`*K{|*x5)Jnr5YQr z@Z7|@dhRJc60iQHMs3$AB08%x*igj=6^fOzjCqT}5Gk2FOe@C?uU#U#do<$LZHL+V z-q8~}9Knv^Q@i#F4D-p~uppx&Q;B1TB+xwYs5Fy})IS`!;jxQ!aA`^?@F4~r0v#3~ zs3iFDTk~r^^Jm2PmI39czy9G9Wd*j%!?`4bPtVdj)KHcj+;a)-oZM4UHxZd|SjMZV z{;dG%``i->`MUne(Lp*?=+-E%jrCRaMZDy{e*wGyg;l{ZCU@%fG=ejKqI!nAO7Kgp zV*BKu-0-FT0ZfdLB>H|oCIPSNv8Sn0l}5dR*c->pppXu39gghMQEqh{Ti9;s{y!>4 zACI7xbsCLy@Qv;FAS`qIEHgnr+KT?&Y5Hx(3uDj#ngS;!$?29Iie^^ z@qQ9w(;^{_#;7!C8yQeCFn_(n53mfpZzQDeZhD=d@xTrN_REY%A#iEw+SEMmsSXiW0iz5kuU;UyH{4bxN!os+eTQh_VCf6rY50NGdRbw75n=lFI2)>gcMPAk+1%F*6^yq76O5jZLPI7( zFL-%*CTjQ`*w}|WZXW{rphvo?&m(Zi>PE~vogh*RAt_8*?46sN48BKbPW-LAn2*29 z-a{pYNDHe;V|MQXm)=igCK&OEYTrUfJW00Z$=|P);SY_~SRhp5$GGgAKrIs^b3%t# zGl#h4N=6E4WjOl#vq5g!I$V(oN;@{ny*+8`M}KC-%ybTCRH7Dsg~%mqa@#+t5PLm= zf}xx85{i~5xIYh0b<+&Cr@uLcMswjq-_hB5Z~;TSrRiv8={G)~oPNc>az8IQoh`kC z$u186Z2~NENGfwmBZ1w_rKu;130C=BUEaD-F6v8b_d&KF{nd{|vK%QBsY9 zA%$_^x$JsJ5bS(HUTr+ji+kuM_KAl?*rGoqZ1@#*97c-{MdI@$h!O9^e?#+$V2K|) z#v8Wuc}2A$`1;6DQOQzg#hp!+fdJT=aI6VAuI=k@?Yr5rxnPjue?Ig5>G5bZ4X)g9 zIqc;1G-=oTF@P?Gd@eOyJsFf<6OFddwc|v0W<@Af&Ox*gdA(#Z#UkkR+cY~EYix8! zT~P3oH_O{2o{a`2Y3nblqp9jaP%gwjb^|D2i1WC>Ym01BDwJg21Txfv;P5EUWgft#l%%P4wo3hF z5;&CgK`;69F*zQ=;UW(u+VOpqhj##9Oa;@6K;1)5Kra__g`N;C5sBs1=1pPq&TaUT108G=rK7*1injsM9v9)l7!-m z74R|gGlK%RRgTK_jEi*!$hc)30OFtoMlo#O`9mt1NLhOKYxxPngBqI8;F?r{_YQnw zznsC_wWl{5_}!Om7?0n7W>;p-L>qw>*@>|P5*3_-CNZBpo-yyFdmX6IVuSkwlvQ*!8f^Kqt+ zt!YkW#g=gzplw(Sm%zp zC61%)e~GKbfTOzlJ$tHh)I56LrT{Hj_%w6tJ1~5Q>}7~o=!SA@=SsZuzWK?e%O$2s z=e|>W#K#zwhqO&4F0M24i(_ORck2DP%lu+kmCQjab7bw#cY8w9XT+mTE{|7QL-zsXm@G=V& zwrT|h*}6p*`QBklDe@B`_lv2=*jxW3NPJXX;7jV6fsISCr9t5#g0Mg&>eiI0= zyv_yieoOZ{^DV47huxs1EQQi1EV&(z`H-^Jdj(U9yvILu*0x$XMcy0ZFJ=~G5iMwy zEL%36>SU9@3Oncv_R1|EAIO} zCwUV7Xs((Cpa;%M*hdq|ei%hkwlWG1MO zts}^9-*(sD?ih?2c#)xDRgNu_Wrr!at7Pc=P-qp&(5s7EYfoQ{ zxs;(x=hCW)^KY86Vy;`;}JbV1XClSjk1W*y)lc6Z)R!?K_i+8N>H1ogJ8-r zOSec^q?!UKyEp^QhA!T7mIF`J9}~X<3HMWX0HsXE{=NTwBY6eN7A4A~cyIF#(ftak zVCD2(@B9XZd)W*lC2_7a>M5$8*-&O5>Hxs+-_MBcIF)kxRoBFgB5pE;vPdQQxe1EK zb3s{eV}gx?qhSmwV#;iP7#dgQ5~S=_Jc)y1jk5g};cew#bMLBulS(mA6sv7qv9Ha< z#gYw-e}|?nXA}eSZPb_w^3=MXwGDz{tYIBoQfi1i19GpCcY~tq_8JY{f8wl~i!PF? zg~#4Sapb8Y9Bog+Q+f}23hskswK+5)34 z;1P+j6mhKiMWY|Tq~Tr{SdJhwG;nc=plX$Wp*~NCF#rMQDwWxPB-ixxjh&qnY~nGr zR1;e0*B`OPqEy2dkR*pB!&D=BA=AV}ks=<6&7IP#9BU9(#xSAPdHN9L&k-Ylfdz3O@HKsg>C{a);PRr_&Wy(e;iKv=~T ze?&$ilTF_H;lJB+p#Pa+G_&@C$uq$SoeKR!Jguv|LNNGnQK>VETAdOhJE--~JAFH{R)}xu?G$a|6@Qz!O3- zKw2^%vI~^p{GrFpbN&628OAKx@AQj24gkN!Lkh!4<$(@GTEF$sYuFIg8+(otth4435O>@ z7h!#yA=O6;`iVi+ic_J&D=LK+N);Y(17sY0Nf=4h(>i?}%s!EN9X$dr3q*Lr6VH=; z1-@6z6sw&2Mp;;P_{$S0=@-gf`VapVnQ&*eU@A3p9nN9! zC?3pN@eMRegzxe6* zs{;FlQFdO6KfIp|@w7}FC?=8QdWvnFq)dkr{O2Zgv<8&69Y?2Wt4pD16&V$!iU|_V zey9t}0pMpCddvP<5Eb}o4j0Y<8wC)_tI?MHJBX?8ez^X~<8jBGp%DTIe+6TpB6F@% z4-7x0ym$DMFKY!tGceunfIsi2H0Z0>#3d%!*JSFPxLAh?-Ep7$)HCe^gY%s$1{CO2 z%;{ z#=XA8#l2;^jYCsVj}(dC*3z|Wkne1Sh?$h9&N@WGT)v94OKM+2Y! z284}R+pt~SgtY(_Yt9gjcx%o!KjPoE@<`dtn98ae8fIo@`|gLHQ|*rreJ$$0i3xLT zMP{=aely=wg-g2hUyv?6KYavJ)`n04bti=OOMkwi^y-zsD2B> zhNX~-2xM;>Q4dp-FpU@FRaIpaW=TJC7v|;ZW&&CJcmzb9)LksMWdJ0`cX-~=0H z`N4ESH=!!8OB0Po==snrw7t+zS%|xK4vU7L1!c)LBd$-u9Oh&-S++U%zw6BZiOhIFJ$mC&)}&dyiKt z1B^H38E^c{brk!j`ZMlBO8@YurmV1d(rWnF?(;DP3< z$(zo+DsEy6bF}(cltn!~)P8B(PzsPdGP5T9{Mic(buBJwmmlvj&*wr$={2ZUpf2s!Y83*oX(exJv_&qCa{R}u4c-=Xttx2rp7 zde#K?z5|WO8~hT@BVYI+uTlG|{Rm4iV&NC>g{>%wWnZ)WRtEHP6yyaE@xvm}X)OgM zAMH%gjGiH=$Zxp)opp6>iUssvP0#kKVh6KPs)iKH1PhZR2=e`bhQm(X&UuQAj>dKeUEhpG653d> z=7nKmIrDbAIq6RM@5NFoT)naSEbsTBRNaim2=47yy`!YKVkPEVXa`~lQMhk05O zii_2MzB9BS6-JrEw~Ai-eq3ky&mEL~Ze=m!Dxnr?dyy4!IeRx@DB|yN7uWkK1e>{3 z&z>F`Nm>*1#|=InKF^>qUL8zTT}^#l8N?1etCjsx<@#B3!=i5aqQ#nz44+b^0p(38 z)Xj_@c*9a+|LPiI=lu%P{?xFUBTy&l#@^e_aKs|-f<;!83>FV-_ZKPQh@IjPIc$YO zL*hU##lP!q>~dO1fBy|9^C$O(k&Xs9W%C#mrlZFbExK7YB69^{UuYQ3t8gHhD#M}_ zH}vNF#;R_|!eNu|W7eM{o&$Dz7q>CedOyyK6CrWYXWh)14juvGYFkj$-w5{=Vz&vAPe4fxwbvk`TpgeZ)Vsyi${oq zOOo3+&c?K7oN}kOYc;XrEh)W zn6AB^-{D2ac0}oA^JTuphswK!V4OC8*J)6u_0u122p3ZPiCoL827sp(Q!xjs~|eN<-B)4!iicCjsHxcPhP^ zURT+t+6ZDh(*Fa&Kt8{PL24T0LLgKCx`L8*GTB54d5`|2?-mwK=_E=^v~WmV4_BH5 zSq~|;iTf2yVItMtS}U7OIYg>VMrmp;)Ay!4Ll-R#io%44VSzkOD)$J)B^=L3g>x7^ z7q6<>?jG>({>^te_srM0@0pj`?Hpj3HX<)Jgi|B)XWJjdR8Rj*Rx^Id$?jLG_<8TW z_waq6dZR&}Wf*25z)KC8&>(UgDREI4GQm&^b1GElmLRcQQdI=dHRkk|E66MpLz&Y` z8w10zuuL1)6z)zsBLU8`zc+(4$&YS|Cybb7q< z<8M=`Ml3HhaXb&1OAb0iHaBlEH^0UUFa0KQ>Y#E1(~v-lZRD7Udlq#q3zLPTH2E;b zwIr4~L5LWI#&v7R)Xn#e=Kug807*naROj`#-{-NXpG7++qbx(<6c-?Ks&h@v7=>O` z=#7Rs#SN(tM@5(@9Lq!C@Usi=Q=L1)=@XAJiejXel15btcI>pjcu(J?&uE+l2As0Tq%41Ky zfW#xypo|wvAvgq&)M#ox6Qx^VH{-B8I4#}L>m zVg1sFC>=9VDZSxTz@9DrG5f#|f7@9kx0>p8V36Irs46^twZA z!!F=*LKdc*se@EWNu^TZ_19nH{&QzId**cUE}zzBiT|$-ySudM_uhLC$8o4utAt^Q zZCOm>1YtS&r7~d_72#i*QZJPt$v_r2oG{8rGO%oCdQ+3+W(sLYBaBI=E5C zH0mHj>LraSOf1txDoC@8QIe8rmn1DpTuY@A0*M|E5J^m>LY}3IoEeu1Gs{w&o!P0_~ zZ{v9i%Pd|rmf;gk3@poGFbUE21lw0=Wur5PD9S-Q7?!~HjVVwTa$P`<9oHpr417zY z(j25ot_8|=NTnbdD$0(=Hex`MDn%k3Qf-iHJ*`J6maeEA-+{U(K*yMtL7qddN({mb z%e4t7A#oZr)2bn5K4oOu^bW^ZwnL*?AYc@Ct9DkQ&P<%o=Hu;Twv&YhnTh1s^a?Qld1$tyCC9Vu)v}zbQ8cM<;Hx)4nVK~MW0?(P2f||vF z?^-p|fn@!Yb%x^!?YS8ikIrG)5uWQ2D@jU*NsgmUOx*-6nPefkrLaAx_`UNS&vVGr z3{yb0RHxsK`S{{xtg^@PvnTN_K{_0xMUEuKD+OrjW8?v$k&`$BOj}?kAj1qH6^&92 zJ1e-O`}-Y24D5!<;_(`dc9Y>?K$;{4{lzlygpVVt#fo1lvMggV93k_ZO1X?}7O{+W ztBE+Z|^ZBuPe4tI}?@2&0Il*?EpGEaN)?+jq9v z+`P$fG~_E^{VM10zaL)+q>dQA`xfQz{}kaX0^fo#D`XuFrtd+uMDE*^mKX3^ErwMa zvAvIXZI?m6N4H%f`}*%vYqb%=VEfKCfBeUPOrEQI1+7_@qohRUIn7p!Fr3hC)tR4P z;@H}0x}7e!Zr^4w?lYPUIov;_)oSsFfAmMpRxIKl{D|}iudzJWpkqu>;|L1_-}6b6 z6w`NU9X|rCHnMdT6-re1D)MlHe3UTR2$5^2vH!*IF$pVtyes+64==F0-^UO()k+&s zNEPAP{&ZDja%8Pdqv7G1Cf&UuoxOzaUPuz{ar$JLFFkjjcH2hgitm2^7N1-if$b19 zY%-aE)|4ENL8niv-DGij21Je$28W$7skG^I2lNknv@41ipI+pNhgLC_;FHUHym6(^ zrJaOa7S&6pSzIQ<@sP#Y77Md8ls%71xy1f{pKxrlbEiwEzfZYjal{+(o4<3O#g!^s z*JFP8`W>!x3Pzz{Dr1`#T0)j~@!gDit<1{O!gOD+i7k&S+kJ-pl%{Q=`kVaLH=p42 znHF(qaCu|MPv7{M@dT1YV_8P=+_j`!DbZ{NSa!lg51k{=6x+A=+3iFe^fP3VqM{LV z4b6Z1j~~Hz4Q}n({Pk;FT)MtRtsIbMDN;&o$EF-OIG#YOoFhk9u|1pKWJsq!WVk1Z zyEzsD*Xr=~ub$(92UnORJznp;!v|X*5snWD1T4=la@ZLXB{`Oo99f=YrdGqTDx{gg zusa|OV`3&GVt^gE>`(T2;nYh!JM%mTa>S1>{G8pvO{`KvremZuijG1<;CmGsr82JP z5_k>=odd8kb`N(LM=6G9)9>{--CpMFkNgI0<0zMIUE}T1Ya~&QC-IDuMwD4l2megbcY*zHyIB5)XEj?T$5)R=Nqd$JM$Qo zg~zyfu)#0Z|CWRCKH4;}eV0t;l-z*1${cgGMe6lgLIsDT1NINrNx~jU91@gENFCyg z4Ze8)OB`E#02Nx?{CJ(e`QG2sJLsUbrdqC|vSON?otfq6(N#>#;>wjz*xx_E^L(A>G%@i zB*GkoB$Eu&fVdf8ef_^Gw(m-lq>@iQxk5M|7dGSRkL@}*w!@8^H?S<54?c`21y$e` zhQlGQ=P?OKATlh|C~V{kY^}&ITtd9}0rp%SBaaBI0Hr6y>5x{b&UlhAx^RI=Xv|8J z^e`oi_L*HS5$+Fh2R^CtF!Kyk3r3;I`gTHZPm@Lmv}SXL;{?l`#WumRawel4?DubD zIwrmokc|>_298<9F?}pc@bu$l5Riz3&BGEGuWS)fA{Q2}9Z?PhGK~=VkmkPRop(1G z#|g^tD3$9(X-J$WcxHuRKjjJOVw3`+q2k(h#I2o_ejg4Gd$@K9*DE6oi#QJG_EO$> z_hZ6jj9ac_8Ue(DnqMYPO$ZgUGbNHllgk{}ZE)k(Z9crEsE7!uQoLE0pxhwqI%JcW zQNDxccM5Ud3y4BNnuY`(+)_3w4tex}P0pN~!*DY8CW?%nyEg2W`3xdy-0Hj>Cg3oN_>|RHhmf8i~@1OnKbc%Gtf+b8XneE?La9s`L+g zI6;N5KfkxwgKJ z=~R$mLc3bxaQznhSxmcLCl3=S1!&J82@?+cT`&?F9y}92iYWN`+{kv=%dcZ8$$syU zJk!X$z+eToL*LSXmZ`fkvR{adX$s;C`p#`*2YJycdioZ zA#s{u$Ucd1@oC}O4%*8Z_F}5_IU+U0RzoJe0o7KMY@+ELb~x5-^7N4h@NJWWsLz{w z*U6e=vPnc5r_4CunHAm}ZjfDho!Ryrrdy>S-)0y_D3wxgRxz`Tyf>yLsyrqllm%H} z@af@AF7I7o_DGx9iI@zAxVg(Ho^bPO4|DxpEW65nXUrt&F*oO7)5gYPGMq5z57Amttv9%Gb)666i&&0{W7#B=kZQRy4c?n{ z4-Y9CL@P_=MX~_n(SDn+(`G3RRc3WN`)v4Id<+GVH9z&x5tUKQzUVWpZR#chvhh^IHsXp4o8x? z^XItH8&Qi)N+(xH)B&Z*05OUvl`E)R;Y)$`Jt~nVPR96+8o5>+IeC;$$w85$ltrgI zrq!OqG!1;uBLyWVTYLlxjwe5<5+oO0d8|B&k?FC4T|koFTiqjqVRAS0MFM>}ZFeRzAv}((%n*iq z_^v?aO-eP3a>)fIgqb3W6es6hnn#Z?$t=RK!zdgwnN(S9ma$cj)@+;I{T$0|kjFh* zP08xn6WqAm!OT1Y-!Fp2nM7e>3(Xf!H0U%HL8-;1Pqy%!IS3;RZ^YRLj?xMH+}s`@ zM9RXF&)U4pVK-*Cn~+)tmKR`}F0s;>j^qpHW?3x7sH}psnDF|=U3|xTc4-INbMO)!lJArt&yf?Pcw^x`u4YH>Y6OGl-ByvoxQem~R zK-!Clm1aJuBhwyX(xus0V!7^7u9T5uNymjCFerC5<;EPMI?L|OOH_nGEfoxvLlh^B zq8>}jWwJqyjIK>Mf8R+WF+>kSNp1D?~}k2NyqJVP%OU%d32H;X^#jrrn+; z%~HZi$f?t3*gM>(*=TU(;-?r!QK;ML4arl@gp8($XwRP^7&XX;T@nM@?FRAT1k-Dg zxjuKg>r^e5rn0G&D-6;hMn&ODuh5@`{tQ0x`NQp3L_z;jxUhSZozOgd|9KRedacRM z-X4ejA*autXZ_kbKYsP6OvYoL{o-?6y!a7cdf`jdYBlzE_c_?xBS}NjtPt6Al@o^( z0>j3fnPKI(zmB|Y90un75svOJnsm!(+(`9maNSH==tqRUu1IIN< zb&g@V=DS!aj+Pp`6Y_9T{5rTf!2S(=|k z9xEeM%FI&_VcQ;+Qk5ivolZtgdn5?LFhnVfXP0G}2bOvInKd@I_xY1+KW3&?;{0ljue@}UE7!Vw`!6pL2@hoz zrh?9RLQsZB9xOArw7|`)Lo7F?8i3Xz51m<|+NfZeCO0;_+)ny@;mKLfugy>~a$3z4 ztO(z9F-2Omd~1j0y5>tytS=!V`Zf!J$1_i?GMw}|wswS1u5Pf^&6r

iHuP#8yVlA-SRk7UBIzQ93DNvmAzdCslYTr#~M=@q*+dKtHVEh`S%!P z7O#B#7NM2X4p#Zvk!NrhC0A~)W6syP6uTU6%yWL#<7faSJ;&|KJpx;xb%I4qX%Mk} zaFu4z=69d|8rL^(^2X(#VUV#F)cL~f5_5*b^_iTVJ0ZF|;5Qz65TO)lb(Nppc5w2b zsBY0FhUs8o;3Ni5J@q99hXYJ!AH0Z`UFPA%2RY|7a2$^h?i{kW(dVTvzJ!t_tqebr^Dl(X#BIXicThbtbj9<$xM&4J!y zTs8=TBEX!4F{C-Jq0u=QfsK+ex)<`qlP__2bDy7Id7H!?@xa%aRCx$xdQe0=pHc9QYj3ol|`v3TM6FESqX$di;Kt7}}nc9kSfa2=10 zjSVK@ga;mak~61HW0@wCNr>Z^EUq1;-DjZM|u7ApOVU)?)Z?PW->V((kKa@IQ|41SGU+Ut`ZFnIV%>q|NI(}&PYmvnWtg&)28W2)6UOG`^!xpE1=T;j@=EBx^L-{*n*ALQ9DK0~A4Kr4l?L7OQm z?o;z52OArF`d5F=O3kBUrNl|M2t=zYbL}Rh!yfJ=#IBX;B@`+WheQ z-(z8>#nVqd&RlzjvKL?|17QnFmVxYcx%Tsm92Y*p{cSuwz*apbquUrI7#osOxx}u_ zDTgWDH$LWIlraC&Q#2lV1f7F4B$j2;Xw0&ojd}b1D;(VE^6X2G5PJeyb?KXupMCN^ z+G-({MVfhBz0#r6xj}b-$U{$_;GqYWP|Thz`GYd;_)w><=F8G zz8%wUHVJc+^^4aqq@v&7!#mk#cPr=T?|jU{{4tKM9ff2Bxq%b{9FN=_ljI3M{O%PL zCeMBK*Jv(x+1%VCQggiX{&j5Eq}8rd3Ig_aCVc$S0b88`vMg!M&S2h+r`QIVE~Bo= zm76#C@ee*=VWCyjD!E;#R{8r2R|!XleC@^OIb6R*wPdor-{aj^KVqTP;Gr+BqT)RQ z%O;H#qhZXQ{)kuJyUvI2hgep^6VD$fXnRyDP2RlN;mX!N&AQ8rPoKrUywBdj9_t@} z0(PBx$-y;>PO-u(nUN#|vQnK_KDfsFA6#H=eulFTo<>v*5H^4OXWu8yHQ)Hg{mi#} zEX%3M9y!;u-8Ffgih_N|za+2`ri zr})v^ZxiqCuyTF@PipGgVa;CS)py@Or~A~-A4fXt9 zzPdqBF4Od9SS%ms%AGAP3@&rxu`jS7JdQl@5T9JX0nq_g5OQ|uDOMZDATbd*xUNsd zE75kU91l+LX}n2O*BEbaaO~I&A|CM<@BN(Br6p{d%q-3^#^on({DO^xPtcCw`0OmU z9grx2V;aPHLaAQo(c|Y?t1r>d6mMRC6Q6|p?|+Ps-@VGHbHM8I629Z$#ty5;R*18d zJXZ{cLrevhlGuicVM=_VsiaWWCM?a;yP7i??Qwdzz*u^$Z*S92`z#+hLaE+hH;sA! zqc>6GArG&fs^XfY7W|I>qPhlhY%2&QZ62<)M+uL+UeJszTwKUJ=o7Z{k=Wj6X_j&H|r#W@% zBx#m2KQl{d+az%-JaXbJ&8&pI_BfZ{`vheO63ge+OP?_4?r`GVB5|IO3(4iHSD8c! zVVWRJ6E_I3EEAdC%hcZkp#T4J*!>4a6$Je#p*uxdYz<4~O*=%B(CPpT)qKxpuCDM;C zvtU%Y(~LRpA7QZ5$Gv==qpdc(#|&zxj& zNaKva@hJHM*|u3-Y_i+cMENdneR>1jH3B1|?9{QXfQ>6RvHgS~XaEUe7-75hshdsH z9rb9mkJ1?pk-Ca$1ej>{_qH*lhf3uhPOZzPZ;cv+1|KLy|&DF?9w=M z1Yx+$%`Kpm#9U(}3;@YiCwC9g-ekS0` z&5yBFkM+?GZp$W2yPUK<7J@S8+9$YBxsBz_a_iO}^P)_}uaRd4qcmpVY8)+Sc~yS+ z^Vi7gE`Cxb??#+>;vC<*w$JU}0h9IjF*;>#M_b$o2lzFMnaLJUE}zFqVl1bI)|zhT z5SipOf-19v4wv$625A>c9=qca!yN8J60x7MHtS(!fgAwlrq2~xr_|bY+Dof^aPu0~asw~$iIm2*1eLimV!zC;RQR^RPBNm~A7EEpQp1Bv z!1~rrPR~4w5P~F%NM!;jT-)K|g%2q?HX4a#84S~$u4Q4@G#$oRwK^YeULo`}!q7Yz zg(SP1JazmjtXz=`iD6lc!wJ<|jl=z2Y#~rtPOsBtpiO@G(^s(!O|@EOd*c?9a7?G$ zMXCz@;fOE_xqWMsz$+CQPRBv!n$dWOUoNq|eH+KN$>WrdKKPJwqt3?021+Ta%{q?n z5yc6eZUNlr_BxDvBcdqe#F5juflot}2zRXlgQh zg5_!^ors;?4o0O6o<*LU?4=P4O8O@v`HojQmJVTPf;Tyg(fv}LOVuUFkdoB^D%Zg zC-*FRw{~bdCYJ4xC{2Gj0&4f@0Ly|Fbs#$C?ZJ{e*K%@ z-vt_>d z)ib>H!F8@(zRB|s9R<$;Z0y`-r6O2+c8>jXF2_%tgmV%n^)dsf7hqI;IZ6n(c9goGjEZn8P#%=JiUWsI>;m-$s!!L@Wd-AA*j=;%wYC2 zaBF-xxz0=}!05YphKooH3@2ciC8%1H-Pnw&g#ijrxtn~m`N8Y0(NSon^O zP6c74aRZml&L)=cV~9B%OqyPuTPnqhOsYnMdb@-a8BZRWM<(0YwI%%6BOOQho`+V7 zC{9?b&fp7={lPA!*)?1dFjI3G4G)OYF-@z6m(=iD^GM61V#Mqw9co%rsWmY~0kk$u z6UVY>m21p3miWQu`$*U1+^G|69_*0WK5nJKVk;pSC@Mh1tFllRj4Kk;t8=Voa=Q*u z9OIPA$SkK5jydwcS!~n7wlp>Ek@g~Hm*?n>Cg?jOS|VfNfq8D+x`UD?(Kuu4<`#a_ z!pcqDDfS~x5^U3A62?f=;pXNoPSqlwJ9?h0H;1gvuhQG=qx&&4%M0{-W6I4s(d{Ak zRhD@EOOLa0^E$oGpva@;63=(hrlh7<=%gOogPWWoJM8am^WyVgsWqC+%*+smA?>+2c6RPC>JN#d7}s@3Gf8JSz%)&Iaf02d@=#+5 z-=1e;w2W;NBLEzfV&9p!$Mxz0nTQ_;`xi1o{44F$X4feZ-RI3#xlaNvn zOui?nbO`k0}&NIJXW>(dyvoCjF`u4t| z(Ete$ARq!%e;O{515Y==G&scBw$cN3i`j!n-ajm$+i1)2g; ztO>m`MqAq3Z4P!i%+H@7ieP^~p+C|L(mg6Og0Pul3L8B3>~V~;d~kgo;iVWk0HIuy zX$A|k(*)sZkV_Q&8dbkQpfg5;9?e>V^JmUbuasF@T%c44m}yNB`if%<3sig$Pp2rM z(WFRUQmRk0zBb^4TRU9eOsKRPEH6)E(gCwGA=nt{#k6-f2@6FE0etrJPjl_sb*{W~ z2d&*Wt4v!)@rb>Hh$JrY{*4c~cK<$`?R`oGkIq3GX@->afVp~w*_nAxEuE${H$x{H zxu`IWiG_!f?l=sGL#(l+iDq{vi-`0zom9 zcu_*N2&L+H?rDZlhLJUFZ|yK2&T^u-NK2H7HVzoIJFIVR5mc&ReJZtSL|9^|Gmf7) z#rb0oF;`lodk`_ShHf-KS%pVPrCg+1n`Tb6@HS&+MU$E05^1l%-ViroNE%Mm8!*b~ zNzKh(2a3|km2 z*c@&X)`!#=EqD5N`K=ef&L6(}ZT{8Q{#S1F)<8O^q=djL6qxcno}62tY0IqMSts4w z=kl48thVnU$|)wz@FSn|2FiU+t1(5QOWeN~6Nq_|jz>|?B0M)#zMl@5t4(vfI>(Gx z^hZ5@@bU``ce>10rx2dO+6>>9jG`V( zQztk#eUT;Eps=4&2&+uZwAkL?MTP}3B-$!GYbiz}PL~@ze(V%GTbrz|-y}*pXrb_f zkZ2TRtsshq%+Ael{l<0v_)ovZ-hQ9?<{ZP#J=%9x3618FhcDoj0uIuMq~IZZkKNtf zJnD=|;)E>A=yv<0Y09;0*U-lB!V53(`Wvrv``$fjtp>$XnVZ+I^USB7VP)wUyPMmD zL4lQ(6{_V5l|m8USM&ybM$w2!S=z$`n!^JgYR)llHHFS5RX@aN$7V$Xh0S1RbqCLQ z7$qrG%IGYkR;o}5i@6AZ#M-}2SNAs^7nUns8DlAh1#aKG&aDq`^6;gHdFIof##qht z)D$nj^di6V%l|oE0Gn5Dq5ObR9HX^iX>k#$Bw?X|kiv~;!Xws({=q(BrA~2inO;!A z$TF?!G~K;D5>GHyE;H)(N#hZn_8!fTorB(xbfb-T>LjBiMM^~+N0iGI0Kzb&+v~A< z?>^;voliXVH1%4Oa;3uT%nZBjHvjM+f0;Mle3xtQU8mV-VYQ*x?GnckN-6sNKGU@l zJ5p1bpQ5|FO83<_QSV;k{3oAeFYt)B4k*Qjg@-S*w;jm;` zpMRHXrO1E$^G~u=-bZH!fk$R7rWml^_xa{4SGjlRJ`bIm<-&z?*l33+O+kccB%@)9 zSMr&emdu_!L6}Hh{LZ_Sm?cz>)3^CJQIlFec>fx|_lK+0W*VG(ti^n@LHphYVX46= za~mlw#B2|D*tvI~*6boCjM!=4;&`D>xlq8GK2kxN8an%eH{aOe)|%iTKH%vmW{{~z zV(aXhJ7m5k31RzS1F2&^{^%1F3N2py!96Oi3R3h5)go!;QEAlJ?62|XKV0XBZ)^N; zkFyv16iZDyS;p38%Gz3&lP7D$nP7jt!!RDQ*V8OcPf=}7(e90$%DoU23L(~Hw0jxf zdgUg&dzRw$@AA_>_c^w9V{Y8L!Fqd-*5V~9!7{VcBeKlkc`?->!&4EG!~RZVGFqVz zHlj9D;l%t5#m6o)TPl$3UZ*qblZX!16Nn_E_h6M;*{2)DM56&>)@L{BlM*4x5L&vS z1ic>Ra*cB*&NB3OuwlRsDJzS|hyq2>Dp0)JW4JYF`)$Bv)k&TySKS0C`qxyLv$cbYU!2z)n~yId*r=<-QUt2!4>UM4IlvU`1ogH4ud zQ$(E+8L*`VyUB=Jq0IT?ALpIx_qnmN&0y3a5gL;h1y-t6!eWuR`8noh=eTy|9Ug4& za`BNT$r4RzewLzCynp2_e*Vi}X4=A9cb|p%S*GhPx=EX*<16^Zkp6Ipr+k(ckF&P* zArC$D5U;=T3hmW3Or|+?;Vg;HkV?|t*9+BEQMHFl*16=*BKn#V|H;CL_)W> zOQ|F%NeRX<7HSx4jUJtiInlHG8#I;6zfqrEenn$63-gQ2%*-%5Gs9z#KhDP5I%%A+ zv9>`W2)KIXU8;>Ld%JDQwF(Q%3zUil9)9F9H*el#duyAZP#}p?j2GZfH5t?c%AdZ> z?wKi~lS}BKBwg=Qj1A>xgKQKr*gK%20(7rW>HH~lSfJWV2x3d%`xxyayU}RGn{T~| z5Q0Y@ew3x9Wq$G}zJyW%`v(V33dS1Vdh1Qzzjlr3Ruii;O2vR`rOe}xJ4=4v&$-i0PAt#UC{|fq zS^*7}T9v1szRV++=6U$?Dc-w&kImga2mKC>=@!LGh5oQdP%h$o9@ZFwAi(oHJReq$ zO>zEQlTZElS*GWG_I7ufnXmEe=O3e7jX?D2cQk<)(wHi+a;(f$BP7dGk~GN&T}z6I zX0BQztd@EG>RY^V=PGZmUS+viBP>g*Li5nfF+SE@;>S*&qPxAp=H@zKt;${$b7y0n zdNHIV#&ZFE{2*X{ex4mW`Rz6hxDHV}Ug4b76UwOS5Nr_{?L}PcG8+ zA~)kxKxQ??a*>s#I#+ML!vFcL-{Pe!-^G_*3IZ<7&U4zYu~J%L<@m=4{3;(`zQi$m zhCloIt2|iU=lI!EPJBEcwWf8(o!hsFMiGk(i!3fI^5iF;qET)#8pbplO|D*jkM;Ej zyzECgYusrmtz9(st=XU}r;_HCq6NFk||tL(OSxpV6_mo8l3{Dq5r{1cB6 zmPrh#I_>1u(?l@mPv&@ zp1Pb@%pLz&o=Av8xuUOMw6PR@iOCE~dHl(re3MhBPI2qzb$;TxFL3!+ewksX!?(WmP4@TqDVNK{ zqnP>XGveeV+5--DI#lY@^s^%CTU~bhF}1Z_ z_E%$m;kl)Y$LtGhLkG_{vp+wL@O|z**yGmq zdo)@n*xTQse4r3(TUb$HFx+9bX$guM>#IA=R2E5-jBdBXY|V|i>K$|$^tQQlZXSeU4&bp6`AC6?QkeG(R&%wIcZ3Gau)ZPZZeL-ar^dX51LM znkUiw_qZ^7l7-KmpxuW!5Zruon>~An)>EhX%%?9AWer|<vw4tPxI+#9;dy(&BlXO?%i&K z)m(h|QA+iYD<8bY)(2Pk>8E~%%vh9E9JB{0Ss|4^uYULr+p>pQAM&ZilMF2!j1E|t zZPBWicyRj`_io)_?)W^a;MyNs^>nnzO$cLS~ z+`IQaoz90evo=#Ra~yQ{Nk{uUedz+{9WL?W+PkdYzJur}rW&Vd z1PyuzTWlu}$g&Y(Q4oe98lN9tzrm|l-o-EV3B4Bec!But4t_)P=%t5gRc7c6Trtx1 z_1iRR1*U~ZebD0m{XHI=KgFqvPq|!W6pgqO#l(d^uN~Z==EbyhjI;wbI&BL3^E~y) z!w}YZ@Ai9acODSliFjn`GS%6Wyt?@geYMMH7e3?Wo_dNT(Y*ZNhukqcY%C}24nM%x z9yWpYR>YGJKZdH#@a}szp+BN20%okomw)1?$xan`u=*yW?f}&kWG2I!l$8@Jy!8DS zdG52%a{l}|g0RZ-FT6~*w@aoYE?mAqt6Aax{rkN3y%*TO|A64sdA{`Aa~$-0y!P6w zJa}*qAtY(4SzlkL-EQ;#l`H(hFaA79oYEf*cXq^398$M_kNAP4b>!r9|KZz07bpc6v; z9XPv57-{*VKmG>YP7hCcY;JB+u9SJ>hi#NpC?UCf=MKAD+ssv){Q1B8eO|4Usn_dl zZEv%=wMDPjLr8v%VI>CD&Yc4CINS81I+$^KLcyW6MT)znKh_8)X8 zhavla{5FI50PDkaZ@{qMqtt8>M_pR=GIKLi+`4&#>+ifxu~=kpuZ>qMAU%(_Uww_? zsLRyU6bE~Iyu7}F=LdZ4cfZ1@KO`Cq!5YG_z}osM3yUWiRO)Q+^_YJ7J$P%CXlsY0 z+oN14a=&fyx?So!cWEUldk5Rt*#_dhHrx09n514|cyEo$BTu^qNt2*gMtJBCcBRF#hy7I^EW z`)u96hbIiWwuH`7EG0rK&>hV;zV>};l_^H4M(8$~lt?A{&JV9~r+b0z_Jq%u^>MMlv8o#IrvQ;7Nr2ctf% z+A^7p*&L>H88M12fAZmL6oLZ9N|A&30MAog*}2D+oqH6tNAjS+`PxYefy<|q`~aCA zaP#JO=q4TN^E1SmU~6xKI32Ll5BS5EzD*D|h?AS!*06Q=9;K;8qSPbpySALD-)Cl~#UH%*B4H`SR|?83HS zt>0#=*WpB^$?bc0II(bs(Z!T<$?5;adxF2%xk}&#H0#s!2LlENF=?7`Z*-U2$sVP! zfXob`l6>Q}?@}rJfMfH^Y~Jj$b!U~drQPIzoiaB&MY&Yu!Tl}1^ZZLBNyPp^n^LvJ z_VyOv{N^U*YK8tNVW~OA3xD=J^;&~J`onLqxVT8S-{;=lyM%=zX{OOuGBwpgNuTZQ zZGPi7euKH$S+?6d_WE=? zpXzjr0P;W$zuoQ#T?Lh^t|?;x?L@S5KQz%_6k;M!@OLsU3~Tx9XFkh~>(|l7^2no) zqLdq$+}_z?x-~_Trf97x7EA2y?YmJnqY-B=oTU&HSXo)dW*VU+ecv*A>>|jYV6b^W zRxB}_6v?LhWXF$lFziu2U8g3UvbHpaSb6mJI*=J;rb*A7VsT*!tpxGVaQ5^vKm9Xb zVDtVO8z0`GS*D);W(VR3$eQlTMZza0Po zAOJ~3K~%{8{yx)F^Tc5p|H&^>3YXBu5~ElnAC?sT0z12HfJ6XF?lCvx^Y?%93~_Ae?2qX6BI@-ij;$=Szu%?3 z+eLYT;-jaL{%M3?;O^ZIs8!2UN+tH%J6yQ%306+Gi1iSZWMR3;PyEy)c)ns3TLKj@ z=+~H?nZ_6x4I&C&NN2yt-fo9ly-u}S$>*h}q^V|Uv4U4r2xDlKeLiujMwKN>K?R*; zRHngts41Qmsli9-(tu%ug*Vv$ITxCnzY1pK6|7eu9nQ0ljF5 z774NdrDB2o?OmEnO-!PRMkAE(lU6d9>d=NT4A|Y+M5~y~$1f0OlF$m43e%jLeh8gd z{9_))AVev_*48F|A)ryO(cNmJW6inqr`g-tr&bCWb{!b&j0Rjj^*F8aBAHbb1I783 z^Nf-ao?oHSDAQE)lte<-AK*0tnzKy~R0m%b5z`)*D?K-FHgH3}NBtfbjxSLy)exy+ zK~D39^Pi)$zl#wmexR_@5|v`)v>+%39PAxntws5YQYEAi7T9gKkx0^(rK;*IH&2mf z8MC6sbEm(+aHh{F6Pz3FQx6K*G$rcwY1C_^NkXMuCW>MTVMw>y!vfWEnSQU&;wPS< zBz!yqRIEw&20T0WQ-s9;DczYUS1KSZqv42X6pIwxx67I*L8ray=X`~qp3vbVoa z6h~Mr$BwP=%%?uX@e?NjICJhaXU?2sVW~;AT1I*bloPy;GfltS#V-_CTwGw(9Wv9J zA&w*V_xFjSh`EJ%ipnP}6lhf|BrNiD;~9JzFn@8L&VGk1OD4lZYPBl0T9wX0hxZ2W zv9!2^=LOX2P5Rv){b--C8nU}HO*$(GLnno0bESt|L&-@A3FC&*{|#Ca{@R0}ZSLfR z5WMxy6)Keq)6-K#QG%2nT4zY*ktQ*rUm(sGSRfG6LwMdKGE_>DX^Tx`gcVo}zKp4u zh*4&+Uf^U#v`2~{2m`dq4kc2wL0OQ-Luf@b9HFJ57mT>Keh+~pO`&_xM@JbaR#tfE z;zJm1$gC3>v{JZnG*&yQ87x*Cl&`>mCwwxaT||<>NI@gjlrv2vAqy1JlVF9D((ybe z6O_4$+{T!E9Fo98=JGR!R6>HrT8)tb!mFS>4^LzW86$;8Yq!qY7&2{~3=V*ic*f0% zGuo0Fi5Dm=ZcwqtLkS-x3b}w}EWc1takED(#iB_ zqrgg}R7fS9R+wXJT1VQNJbFfa@NeJY4_MbMndcD9}gB8LZXC;x^V6{e~(5XZ# z#i%fFc?&5)Xac}9mNZK63V!a)HJNrp+Jz9Vau*+gB{eY$i?4k^5y^zi%TQwjVl4=T z&ID2@tgv`Ol0_LxSbQX&aFci~nn)U?EaDp<&-kQL6L}FiN*q>G^P|5 zDM}w@B}taxNr^DIQneHaWs$}ZBq7=e27ZPPGGu;Ut#RWugmlW=);QUj@jqxME-Hl} zHJP(TR^lZFp`9evAQ-y3S!>ar#1|f3CJ3a5aQOOA7#NFm0)Qma(oG`@L5NH;qz02f zdw-j9u|%`kL>P-y(hV%gBN8cHX}!$tgcSnmdl(Ex3WR5oM#D&8Mi!%SgEFK<=61o8 z&dFF~KuF5vkXXmO`pV0E?dxCXU~dm06+uuSPGa`jyFBykv;69>{#OhKeUwzBvF5@0 zJ*KCdOieY=`JOWZgjB>y!p$2uIeq3dGtFs6y@4CduRKhaBBjLhd<4*o2aIgQ?!gY8 zrHI}flOp6;I?LH^=lK4gD^>p5&d#{X6r_~A`S!a=DVUm?CQCDv=VP>HZEX!d z2v}NJ#8~5ur;?c50}CP0X~u&G4`?(Rv|3HH*7-o_3`tB9(OX7(OJgL+aGY^^hti{mwt(tUVasU;^fM4KDd6JpZ(dN zV|I3iD2|a*97?*6RoA7+MSOF_pmRmgTpTo2f267@P}&&= zfj~LLRfrh8TGsD@9(m-yo~gH23DX26M0RE(@K*lq|FVS z)1JYaTp2sRGhxl4i4qnqoeKF_{8$-sLCd_XOFGGv3=d-ijFcFwkwRmoTPGn5!a7+} zWG*6Vav{m_O$sm9T+?Xl*4ncc-%1i7RpX?4el)F{|EG-8N|Y9q&F29g8S3s7-`pNB zLJ|crA{XV92s~|^fU8tF&110A%MF-CSb?%mpj05S()9rf)ipp<={1Pd^?n zZykLrGPn1Q1C3&Acua_}+DYF?&@!W7GyFu84kH$e4Wd?=y`=Aep_LB4W08~JYbOeT zZfpB^HUnXaRf?7wDqkaE#YEIqSUYh@ZlI#d#aYFnnzqmw>nbK~E_$1Ji8Gl(V59)8 z@U@38Jd|*fR>nBZJtf^(Ib|%72dOVnnVZI9ZHC35q;lXn%f=GplV|#9TFBuPt8-T> zo!!$S12nz~kS1^~Ro0MY4g^oC5XUycSax=I=yrN&tLb)oZYTsGrO)Nd5A*e}eI115 zKln%g08i!Bj#A-y(g9_yb1Q9g+vo-?7?WE-;eh?2GPwk6aJ#@b&=oiVW+AMrYz8FK z!8+^Yww#oW$mvIcAVXMq*x4d1SLV`200&WCY6WP4&`{hmw!JuI6^qdcWov@ zjwX%qFkE^29i)Lv4_%_WyUXJ2EY)&_JKejSJh_CihUMiI{``C2=JQ|pJdZv4aSryo z1cd@mKlL=b`+IC`uCsh>nK+3jMr4fEKH?K{nRhAWBq3@Ms2p`!o1;4fQu)}-MQ~EO z=*Bq)n~Q$B?sgZM8DwUWLXeH~pB50Aa~DM%mcO_On7b6=fmZkHy%D=1TEc zq{y!+osg%+86qRxVA=dG z95`^!%zf7w<9c`m6JRk>^cDH8w$1=rGBCm&JSz}J<)XN*KU7TApG6LG#;DS|&uN1z zj&)!_=7v?|;+95`824;){a_w}RN9&G(62fz-5iAIU zwffM$Os-^)TJHbX$nJ0C?8cXs0zBWx^E`~vNC|!rFgHK%4#XH8NM}5-?oe1`P)c$9 zlS1q(CXj&6_t^T$p2Nah@!Vb0;Py3q6TRa)!!Ink)_xltb;g1icU_0fW(y zOq^}*pk2t#Ah-)l7dlVA1G`9W4X<0P!3rH`(am{_iCf(g|+KDYvlv^h0uZ0-y*xAw*{05&&3j2%5H zcZ?Eb4kN^&W0O|qZAk7nV>Q;uJetlNJD?pnu%1UR9yT{2ueq zou z?9Y6O*||AZS0C`qv!5o4MgWY45rr^hYI+83G^5dwix)58`vtVlCI)yMO$x_GO_0i= z(XxpAKCQGa7nMg1N=ddhw#bZTWn~4Wa_ZGekS5>!`BjWNkV<(js?*vTk#Wz6ogAS& z3XzlbGr19#;;{9@9nM2fJtiIO7`aa32s=T?AW*rp7FOU%g^)hR?We`MR4obnN5+R-gzlsk4jhZVjSn>+CA2o;EMj>C+j1!MBa zl!=4QQ#OYYa1H`2Ir5k4Fj~pi&gS&Y1dj-TlFH=*^MutHz(~kxEC;|03MD;+$en?8 zQLV8WB?ML|=Z@6jp_h4HPC1Y|F~}yfByob3(gid|O!BH2w;x@u5~NZnA@G%)L||6B z`*cR%0hlyNC*NaYzy#Jf_8};SNRba>5(1U8@j?oekZ9|e11m&6Cp2M{t7jjDOym7s z4nvf3*Yk3WFG%yXmo5)wEXP-l@z4MHf5&hC)^GF54_@J&x8LPAfAhEaXaDW55vQHp zw~2h;nvckd36zWQg-bI`PK>jL4hRbK5ob4vAOsV7ZhRI*zRq&8+nF#p(z+DXq0r-h6PWuvwa&WL;OM+TPR=> zO%@%{s({QgMh9!e-43Z|86^=>G$e`E5JFI?)bTx^!RUZ~zs>aY5}{}yZA_X);3@9h zze89mfzJ2sgkp8?NQ(T~0V}1;!RH-s#^hA6vrvz2($Q1&BJt^?m^n5LweYtHrjfO@^b^i+#dsl@*N0p&`W>6saJ_jYNuW{^@* ztyEA_u)VYEgk0m4)2B}#b_?3WsE2$%T5+UPU+@uUf_0ntaDog>wWje39!jYR>K8fc zJtRlRmvKpDBjhA}Jle)#rF7AnJxsVeN9V4iv&Mh>fkkH-5{Xg@ zZ4KI*d|sh*x}!nQRe?>lTw}ZEBc;MC1SCnqpx=i)3bH?voIfP%@}^FgaLcKXoQley zJxiU@6X5cs_7LT|&&j;e+)T`<6z;w)8g1OQYUMIgxqO;bo?9nvCIuAZsw|u5DWwod zUojeu=ytn!o^l_}*IWugsaDH#p%$w(X_n;$4$iC>ywD*^VJ75Bp;Y9c*C$QfFaRlB zo&^L!SjHH)PmM7|Nkp2ZlYJ&JC@E3WbJQ*p-w&vURYs%HVIU)%c?nB_qtT4ZePnUO za4;l}vf6Z7!N@lkLdRfuxX4E7B2`0 z{31$~5y}TEC|1fer>2NTL$q-j*Bq4+h6VbAJ_q~z=p?};G3hA58aIii+wW1Tl%0NB zzCVBb3qQ_&r^DOtzQgm+f0rjd`2NJzd0mk^Gdnrw=FoWCaeh-yiX7ZN z|Iuo8fw4LVBJSA&UvuU4*I3TUdOcuk>ur=&kh-&03Ka3M z4OTGf?V&S^CFbVsYxwFKpZ;`_t&ImR|Apn)@-jxJlb~Wu890WBL-r~UM5Ga8R(+Dj z5;>#r(J*Kn>E%?ewUf1jBWrhvy^j=)h(kunib=EhnAsP(PZ-;gAEiY<68>ZUb|SkU zZ9zEt?<6ZA#N_24itUL>;@AkAqb80JVn-?laug(_L>fuCR3?sM;y9sPt+2LwkByBD z+Piza_~J`kdiY^>_xIS`-r}9N-^EzXojZ59`QeAOcXw&G+Z;cBf}1x!LsZPM@Yf7?8vArlnVN30a(o%36z{zIE?2L(3g9$NA)hE=wILcMq-lnd!WBaafv*%{VjHPcF{wV4WI6xm+Yk61u$}!(oRgNzev7<)b{GdcDCH zzW7C+eDaeFhXeN>GfkyhVRdztuYBdJ42OM$H57cGMx#o#QlVC@F&qxKe*Fdq{VvwJ zVZloIoIQ7eU-{4eQwMZ%hbN^ZO=G_L)vs{%>NV#ijG@(PaQ5^9v(pW-BxPfBliRoN z(QbDz#zRUUD}4URfAmW{_r)*L>FgtvhtZa>Sl}yP{R*$V{4#Mgq`SXIK}n7;A7f#D zfpV!tcR1kIojdHd_g#8nG(rl&?A#nmN)l`N`q#eB<%b_eDnXWJ2q6zCMwvGco5Pex zDGUkx!0kk1Tv3q}lfEl^l&U{cRC@GhHmC8Ap8hdaJkHr3^^d|Hq2k8HFyoYiILt3v zD-Q43jtj3GnDac3?d@%%XvFl)48HG^W*H_MkeMP^uD;19o|r?Z6q6Z*l=wm53WqRx zlw>ecVvWXX^0mtA2y8|)%CI8l#L5!i`OZr$pLo=@6Ijc0Kk*!&e5%i#JGW^y>on`F z{JhyouF*`=*A97^2?DT3Xk|Mwg@=3!&aT_MpzR0^c{EptwG$v>^1R--5KdYqMSb=! zSBo5>Sote*b$`o|-A87ONpUm)o8;J!((H%6>j*74*)(=i3?byWk%MlB-Ti(3#lQNOXsuaVT;%MTvo2wr z-JEKCo2S++dF{Y9>`n##q8IB-7auggO4N z#2Q>h>tQK_EBQ7MmMSbR7x6vc@#^DuJr31OPKd-QfAk06U~Tn2)q0(scANg7pXV-B zp4XF(E0+$Wyz%Di7-RAhXo!-CMy<-T&pu0(X;)BWU6RR+BXBDwhd>-5ImbmNVq9Qg z4E0)_a;ZGY0WcXiXQ)&wc_jK#ra%Zmr`y2~e0;CK?p~Y!{?~t<-Q8VU%?4Q<^SRG_ zmP-#kgp`UTPI&LV_j&d0x9A*nD3ppWBGQHzUwV;$_G|wQ7azLFXcVE8q}goohu`=E z{_y$+2^nSb(+{xKiB{0M_Vmww!5ZSyXF@QpvAb1*>3 z5QNA2+9s|APzhJlBrWE@0ItP5>@kjW{FMgWi$CePn zXKSZTty19|-~1B>QH-&I;V|OXtvmRh$1nf#FC&yQbd_?6um9ek@XGgpKopPgJ=YBL z#m_y^WXmOEX>by@!~}ey8Fz}&-2Yc z{ZoGb_r6Y8ED{zJ<%-XVfPo}$ya52i?^JVhZWVJ&1vyFw7Fam=(uD3?+-#-O#u_X32pgoQFY z?FWp~Aqz{(w3-bzwhyqzurxP|Cj_Aqc%GW%p~olBsByuX3slUQ#=tizJ29XU;P-x5(+!rzsSC ztkwj9&)s`>dG(do@O+QKV8HzR9KIj$(o5fGZf=e`m&Ui5Cr@ezxt~j?C&@9H){hf3sb7#Z}I?I9|(Exsq72qgdWlrl?S&WQh_*QnDy6;0BQ*1{`1pgIRl- z?!LGCF7I}hd^qR6_x1p!NSV%jnHtQXyYIW4=Xw6mf6+Yj&_n$6fB#dQ*;qr`3WY

v4^0)r>|3atRK}p4zzVs!2`!_$z#fL9aj>ed3%vv|);d9$8_1EZhx(rSZ*xYLI z@FQo4;uhKpYHcX%iqC)kbNu#i{RThrfe$dA=8Q+j{L+U$h;y2yUYkxkqm?L@ms)IZ zFH=@2Lam{aoL;YksRdEormP%slu}Hm{Gb2F|Ha?=U;hqUTbt-g^Dlnx=eTwACJ#RJ z04b6b$JT0>m98Wo?Gi;PnQ}ytXF@Oc`Xp%w6?=&Ev!DG8{eGXH{^_4a2*D>l@o_%$ znNM@(>>A^Vr={z1#L4jvbzU(xk|b4Vonwq4ic*$(YZwu+8pY&!!3Y1t2l?xN&A5ZhLwJou_{Po#l_h9?N9&!AOJ~3K~zT`VR@y` z`0f}Pr4SkV{dKCcU_6=9?RLEtU|9yZQ2S%a2Evx~dwtJ9EIkBYmaML>a{KOWmisII z`FA$RBSb@nXclWMGG+Z4)$HC_2nL-W4X1veLpO7V>SBXt7aB-wEjxF2NYj+f&COH0 z>29|h&I!-hlp-dMBvM7Z?XBO#wO5W%qD3s*I2Yp_BvFg3-KMH5v^JDwPCLsGQZ&rY zq9~~9iYybPEs3a7*4EZhk@5_FA<%V6ECs8}OASIZ+YiqsFc;3`rVVI(SQm<2gUoT? zwsWq<<~};yoD_F@+I9f}688-guPbQ6&ClW2O?Hyg0-Zl;v1>>i?$mOyd61g!CP0`L zqzn&*oh^=CgNJ+V6+wXO2^({~J$xMJ8WCq*mLLR|-t-t3FFj6KX{OVu4}VP)B01X` zNw&Ao^YlC31vpymHl21GDHKInl4Xe(MC(9MaW=5%ZL?#VEvHd_a;0IJo!(EnMLAg@ zwFse3E!9tV8~z^~qrLXU*=90pWC}u1YaO~%&zi8-dDfH=6h+ZMfPi;bPg6QshtY7z z@yUpMGDSoYE6Xc%TOG=xpug0k4q6`%`-EbNL?nJUCY2rXE;P8Nd@y~ybzw$r+ z6|~X(m?TtX3murNDpI6ri;w*3 zM;K3Xo_XdOe)U&=l`B`i&eqvY^68ZE=meoFZr^?dZ5~CaidH*gG#+qtG@zIoigJRn zo~0Tm2|IUp_$UA5pYoS}>c8V-zx^>j`qAHD``kGuCnGAMuyxJLFJC5+&$4y)EXb6k zx500G^kWQ$L$WrEMmdG9$@82ziuv_l|8;hEcaci+>%aC9I^7nXPTM>3XD!CVDfjlS z^2kG5xFSN^V_u#faCk7r)P}*y3CI{BeERm~uV3bW|9gLrcfIo+{KCKa1r7&?oZH?e zi6X4Ev@^+_$qs|#UCj1?C=m=s6Y}zy$@GN0%!!=E8poZxcPPq|^|f{W#$W&IT)1$7 z@p#<8NIyoUpV*cP$zt8*L_kL8C`qygKM22^EQONzeqfIQ# zYTsyJxQ~>_0^9ihwT}Njp80w1+;$-Dd0nz6f6VsQ{@tE6`K_!2PErq9_WM`+cl66h(=(j;b!ec}RXbEf`M=mU^DJqDzggN-r@I&hK!Y zJaxu7Ie&*|N41r+*Lm(>BAj@G(j*$v6W>7fHbcD@jJGt+79Mi{^S9eAtaWJZX|bNYX2DsaIH8rb5JGxK7wag? z0v+<;-Mp$T;P(sXx)ZN^_+RhQHVc!rvmv)xrAmhvvAX%fT-Z6qSt{j=lrxQ1M;n9I znlqc5WGZ6+?j2$!*&mPC+u!5NnX_DY@Bvnrm%Yn@5VX_GzueAGl0v9JO7WFD7K)1x zJ6F# z85obj5u+?CdP;Hq`fD8CJH%SY-tHdQidIrH9Npq%5@Sq`kV~A5cbVqL2$ldC4v#2m z?cqn`A<366zsO`d<@wKlkvBc^2ogcBogxJs4fnaX{|Zh;oQ%fYxO0oiq@u38I9vq= zq^=F)$uY(`{?*U_JiqYs{|~!+dqh#>*_=`$g?H9@`RX6>8^3kHQa@$=>>AHM|8?%% zy~}cc!*|>jpaj!=LahxieEG|K zO_sTK{km^L!?bRU^+w6saD05sfBcWX&e7pvkT9$ur65Z(K$2u#CVL0$U44O0yUXEl zz?I8aIoKbdqJ%mi2XX8Tr;iQ~IUWx98l9-&&+}VFw0MM2yB`%Ccl_ zZIy1f%g*jDmoLA>kNw!6_M{?rdK8;WT)w$)qWiXr-NL)SIPlHbwIP-!P5tCGolXOr z)}KYrSxk^kc%7XkN>cvi&;Cok`q|I%KmXMqrku(!BnV&Rag=4*5CLmlk!CHFQcR~) zs?u{Bl$3tZaF#eqxpwV3o#hKG_0M9AZcG;tbHa#J$|FRf$!J*O3x)IjxrA~ zx>@%WG#k#MM1+t~7CD2H0XR#$-63)Y6~{!%yA$|sQZkntIx1tSY@k#J`LJA|l;gZ= z-(&lVG)V)y%P!~xebq8nlOz#)d-wSIOLwu>Qk5l>an9D(HY;nZ7~x2>%okyScVm#^ zwA`XGCAHz_eZ6sZ^P-6v18PQ(cc=7zGx2rP!!#Yz+(pHPLk$E+2Z!`JZR)z@smC9q zzucj&r@ZrB@8H#Iui`MxG%g#;v-LD?;cbUhAnL?%!jJ#>kMZsw{2{EFG8hc_?mzW5 z?%f-LP@EillVlY~{y=iF5e@^sVTn|8au^eKvdu1c&Tm%vUbWe z&w2aX-^N21F7S{3@jt>ELp~XTv%Gr!6^@QxBa0#Hw77ZW8gcA{ToI6_Ei$RRh}>Ex zlL@cgc#R}YdHnH5y_M7Q5=Pe;AvhVAeBsMqVK5r7vvWY!S|y1$DasrfInQ)dF=-U} zNw_STPAzp^^WcLIa&j_4DQ|%85VTuMXearjuiapIIi-8+fWc8kx7!CHiQ^a*DKA42 z5GRgW*PI+5bMZ|V85|x`lsVmQCy10GiM#9#HNXA4UqVDFE?&YqLDp_lYmE{Sop#HU z8i2uINGr=&U0nkllgWrqr%RF~-qb;+jo;1X~9Q{P2hSN@C& zyD?oG@?uP@-9pMJpf(GI&d#)~-&$PU;`Kf?Ex$nl6QS{bqvqiov?GmG#CJZtbwL|~ zkd(!ggL}JxMahUNA2A(i^6`MW_PQSH;Na+pI7wMrTJkOffs7!G!CBv_Vl?CF2~tL^ zuC9Vjs4LB6bWB-RXkB|Zjqm`;u-CG>CQ&Kl(U`$t?EN8>obRxl!zo3#*I{jA9Vz_I zrmjk?wWug2&Z4j%s5!g2$>0A6f1fXZ=?__2T1F|s=w!nC-uEN?&A;`x*t>U+y`w|= ztE+Uoo#37j#F9Z9_eSE;(=Uf>7Syw`a0c1pjNilCAgm0QPaYOs)S%5?;5o@AiV~8f zMWt&Dj-%rPZr{C5UX8eY`!#Ogxrx=9D2@El5ndweJX1_c<=?kJ-8Ruly(6!a=tmSGw9b@ zihP81&O7;@0 z>sq6=MNkLXg5!>jdGX74F~)+a=wuPAD{JUdqhjAIl$FL9OB~1K`II6riKB?3u7m$= z2G&x=5xAI7|Nb4S>N>U77+0}%?kp=C8-Y;er3D5hKqLfz@xT2GeEN4kNnMYLWE)-QWN{Cx zEs09e#!Foq7Gof_RkfzmX%QzegQLQS(K^{v@}gnQ{})Xv_eQji zlam3jynGpf$AfW(JTI6`a}N&+FRVpL?8q`Wxa0RS&YRa_0!`Rhv^B(0gi11WT`-;W z07q3-)OC%~I*2jBIPcfyDh*{pPbC{0x$SfO%+LHY>dLazU&7hY4~dzHw+z->{(D$so8SN4zyC%4?Z5uNxp?s+ z>+7rBxN(>FzwgI6JR0)MGtZF48RN;=dp!ntQVM~qE3RIBg{5|vSShAOPPf0z>c*C5 zX)V}$+0YdySxk|Sknm%;FumtTIF3l|=u+xBVmWm$3W@Q}5YK3Oce za`hgE`#Tgxjo*G8DyL?8jYxp#X3*{=CW2ZElYaVV6;X{K~WZn+QUytQgd>0LRl7A?WlE$k(PF+ z9o|8&H=OxCN+~GI(nD%O1_on=(Z1nPQqpQAn5w`SO;y*_MtZ|xl~PP9jI$`AsEwko zJ%nzZpO&pL6lE3QX9Gs_z=P+xcW;kLKBd;0ye!$++(M}YA^rY5NxjcwQIuSH`DLzM zdzA|pE;NNi%0;TAYb>^ekUaRnL#(Z@Qarok{0x|7b0RE}bQIG8x++;(S@&nAj0jFzjUAd)f@xLqsXzDwuDyJP2OqqEDGgFt ztf{aTR5oL7nmODT{;ZVOlDYsgO z7Tz6SdC~W*+o*yT#0kM87arul`3pZu97n!ODh)sL&whrZqa*I^-=i!Gj*gFc?1{%H zs@nfdk!Kz@Cd>0Y-3EG`!FMwwGM|LtZHq+soML9Q8aym#o#IHJk0??Z7jpl zi1L=Du8iL+3CYgRT@DYA_*37#ju3*P$Z5AbVYlR^GV^ZUe^#X=wW%48#!Mz-w$E+z z@WYQZL?^6dI%lt&FZ?Q)9z4Ar^Kxk3?xb7S1xrKygMC5UU}b0 zF=w;KN^5UNRB$kNm&9Ry0?BfK&-l zq==)4C`#DeT;fN5zp*2mLj?{~Tb_L4NiIBa z!S7eBVQ2R?-~WBj@|8b)flvJ2@6zdZJOtP1BLkgSEIPP=v4*o}w|MV+-^=k}$jZtJ zE33y0_WsO6QLtt&q;b4bheZt+_FCs9EM6{UMZxllnMTsgiAzCiXsq>m-R)A9Wnjt%w;5e~!dKX> zT0hYNAWI|O} zNa4SR?rM_Q5ydgJHeP;Wl_$-F2|!2>IT~Y8az^-qyE{8xr0*PB*Jx`ftCIDNb%sYr z3{Q@!tC~28X}8<-drPdXtu;Gd7Pd1pqhxQiBPi>dvaFa)#;8bfZ-1X#w{G+B!w;i% zg>#WVKNfaKYNo$iFnpK`!QFzq=v&;`HHP6qGb~+0SQE}t7E`LSV0&Ygb}L5LhA;im zOH@@snzor1HP%2JN5pZ&-Me=nXA zUY!k-wDZrIwK~xE!>T~|iT*wB`60ghng5z!{qV2x{PUmZnP;A5JRYB7lzLIVXpBGP zeFT(7JH22GecEVy5yhIPVtk{iZoZy*{f_T-TeL;-_P2D0{-l%LLKUv7B7`6=p@c!s zirxaf)ZOPo@&^0G0R4s7jaiWr3wZE-`$9Q$42LEZh7cCy-A87OCb3}OGhaSSvFOz8 znv?-2l{dB(5lNhQCY?}pJ8iNwV|96jd%HV~PmZ~G@e!1Y8reWJBdg4mB?}~snaX2E zv7dF83dv|PVmcaOO@WYt&QhOVcbPbD;jBYRL7k5&@*xjC(4&?1v9)FY;D~#BJ8YkO zAQ;(taz~bB6#0~*sC>#qUQlaIzrReo)8)#`FNbS1gDZmpt&AI2`kBnbGx*v}ikwe< z`qTWm5BxbEz4Rz?9MNvK!X84?%GwwgU{T|O9hfDFC5QKRNZm29EKvy3mf>i4NV;?e zC(>{j7=&;{GUoQ}t6cf&@A1TibBqeZmoC4?r6=D;tJ9~fYY$@wL?Di1y1gz;eD`jx zB~CLsy*@>Cgiwj!e^oW5DuSnF8UhlmCq+orz;7Zr)WmUuRk|_Fc5?0w8f1Y!YfmX0 z)=NWhjjy7!&Z8DVgBZ(*NO*|Q8b@7gin7L7gF`m9Ur0$=Rj4?^)IN#YlXe_ddx0?4 zH+FFnW339XBt&sSh#5c%UvT0iYam4z-1cXLC+lX-r+;3(bBkwfx*$llAr@%{O&aS+ zvosVl)5uDMkXWq)xhrkhqDsXWQ#B`mbpowDL@R~jcsN4qTjbN6s`ThUmSi~PuW4P^ zWLXvxDI8M8-v81r`glvG`IK|#w|VY8&#}C`#0xKciSgL)B%25^H}^sE^>+q=&fPm^ zg-$NKr{AJ&)C>xlx94uY#In{QtmW3#D_r^VA?s^PXzRGOH{jxpeu-;EGJ3xc}x*_cQ{oFx8x)_xcfA?ZSed#;d3Cm0?N zIRC&llh7oIrU4QQHjcr;HH>v`(aw=mQnv*pZ$3RQn!3*|1K;?%&ie&=SABNZLXmpIVs$?pDi*aA3xxhKVKwHsa!y4*4L@+o zKT*zv$Ox2B*aaYQo(^E=bfP9FDmXI8ISIs@j#|G6PW__2-O7+sax@r_qzRpNJ7~;2 z^ng*Q>U(Kijy%*i6m~PjLQ+Pz4mn;e)w_LRx`A9#3JH&bi~zb zU*w?&H)&@pC?xwg@3M1n!p6p`&n3eVDal|k#A?lCIw2oT$R}gQlMy#>-sEs_#CSR- z$+CuVCRKDFL&`M`jdOw|iMhLbmn&DU@azw~o435}tvF|?jisy#A9*AsF2H>=W~X+Z zP1$KBv}Hmof>K-RohenVDJowKk**P*YYWw6$cj5)c;gmcsWqk`XlQ$qx z%25;^mNh0!_0C~zjR`O0cs!=6HC0)&nVuzzlQ|6<*~F|EZReD4=SY$SXFW7#w82=z z$;mNQU4c{NVIRG;yaYmGj3Z4`FR8JY34j7EoCz5E3xgI%r) zN9hF1XCDD9W$Dk+I7)Fiw6Um2QP-C7$q9qO9adL{lzE?a+cU|9jJ+nBdHdra$3HVzuo}GJU#Y%k#9tjCAeUgJ9ifdj3-Ou zm@+f7ow>WaS)SRBfx4&6z{90M7=ZW9IKRpJ0S@puD@h zzu8{qfOA-B5lM{Jp2=2KwNC*K;>)Tky)mwtI}FGLGv=A4kYGOJhgT1rVgJreZVYY{ zCpm?y*&WtwZJ!T1MPKxtDYM>!lG@pu2XzdM(WSlir}`NEzi$EvIQR(Rjl0Qja8c7;TtLCoJ`s!5NI6nF-6e z`7Sg&i@NsvFk^IphM?bHp{i?ityx`NLq(BKBM(!b(b^|=yZN)_3(KNwC{5Z!r`=(F zZJoNV{DE&YTGu40pWdR#Q}V4b)K%#Z(x4F)fyq3BGF7B#wc9+zXKdLD@}O#p$9O=-)9|Ipq`FSaK9lutF|Fm zL{UVfd?G`Vq~xU|%>;d*+v`$Snw8ZRrjrRt;&+&F5+Q`3DyuL7(4;iD*I9T8bW^PS zisO~5uW;q-SE$O8_x$h=@$f?r&27A#TR3k*{OAI!IgVpwXqJVP)K%3S(C!;^<-bAE zbElClhi7w-4zPC2+FF7!6*VbK{g#K?tzdbnk5Eyws})jmu(yM}cn%>8qBtjJz<8`l zk~Tu6NE!KO!V0WYjsDrMWprrl{G?h{j&{p(JiX1)U`RVl8IF9w^~%aBwPW1k=?%O2f%q_C-DZ*G8`N|0|n9f>=e-1Vhhm}QuEK%ZIH@QO#g^v z7T~iL(xW6Q?JJ!<~OZwd~_bBIfz1#j2^SF|Rh;R>_oUqsEzwowt zi&h19f!P)OcRKh~Rkf_N3~j_x`qrJ`bcO~+qefI*%7lqZzhEh4W{}Av3p+IW$IA17 zJG##=b^UIcM+S&DHZ~4SQJiKwsWevh@-)s^BV9s0wIn(KB&KOJdED|k;jnbp9lZhX z$p;H6ST?vBW%!p!0E#9UvO?WUx^sXCk_v`70tcNfylGK*PxUBLoHNU@-mz$`K8p3h zq2_mgw<hvf|U9Sc5YW=Qp+L~@@G7L-PT`L_96-m&LpD_H?V!@|*PtRl!7JaR! zTVg#Obp-@5S&RJ^1rmgnH6K_L4~*n{sse9D0YlN7sSIs|ahp<_)4zwUKw+X4X;(TB zjmLp4N9m_wCaXeZj%lkrF4&(jp;<6`O~S#x?0Gi^kS4XiOv?i|?!Dn?9a##r0?C)M z@@h=CofIl{{Q)cAfT;bnVzMENsiDYJ$$e;B_$u|x!U2)cAYxCYpEelKeBHHx=%9iw z#u!j5_rBs&Oqd{%Rot=&wqV>1xJM#_)a`yJLDFmel>l34O^EpebJY*7JB3F1;_}Lg z7vuzdKfjaqC3Zdwx9K+0R7_Ir`Mw^xoJB5YsC$P~>Fgg(S5U!IiI|K0yqF}XHhE`T zs4Zbv@sgnqx4MVQeMi0aI_7cw9##E25m71wwG5jU9YN+u0nyfdejb0*IRd@B2!V|g2f_-L=z zfAZnqw4(CARihSUKkSID2Mq)A8A|ALLsnvtWk$%2P|pI>@NTfdPdww_VCYCv>n6r^ zTtEdYSsa;;i#zalhqQo;`nXn6B^X z5z&{EB>5x~a}10y1{^z4lxUCFTj0sz@8{>|i^=(P6TLq7k^Ak46eZdXot^zZIg7R| z!IkED<0GB_>4?>Z-I&D?Mc-bWewY~tEKR;|gXh-)`!cz9oj65=@FXuwmB38~JVP`S z!CUIMLWtBnte4m^ST0*cO0ps9)?>13OV35=MuzZ}Xqnq?yKU-fTOWDO8@D;4z^vc4 zy;MtBjEDhvEtaQkYP-5Hh`@|x>$^sKnAnATxX@qPop>FtP}o;GPUe1f4GXJ5SNQR0b7ERp(@2J{dtrRahEcNRW6`159N@NZCTv{_IpN_vp z?h_C3GL%_gk_Pp6#RR2o|5#O_F1Bc5{uT(_FTEJ%2TNUNvK)~WSICne=|!ixqnc0F zCri1}CI?Bc-5jrXf3X7d?6KQ8@3%K>J<<@-%=HG2XrUD^0*dma9iA0jJq^t&#`s)b zi9$zkCt!KP$&OlGTN~0=kYlKrf1}dAp3HB0tW>0?s-PZT6s@D27z|$txV*eV6+@|V z%LIds{gGs&mob{EyPoyM;J<$*SX<5Osh8E#_@j7WJ{6O72p?L;Fv0A%KjZT&=))Vh z?47!H02C{5<-@`{9e-q-^UOt_+p=v(Bs@k7i}#!tBFA0G75*?rjb=|Uae@3WS~WVbo8zFmLrV&6Rh7;V$DrQ zu1`E?L|}YV5qqCT!%Ba7)vb-ivkRuQr{E!XSB|qq>SueSU9;w%hH^W35)3X z@(q~@5>2Qx&8MAMIZb#8RMa7tUt?CVMKVlfhe_vI$*r5x<;7Lirhj@!<|v%H@C;f; zu>Gtw$cAYW-8)QHX zWAZnh!urX`xMCi$3`^aCD!n{*C>c8AIm~(W)GZz3aSwQuQ44(PL_q<>WwYrp)qRpI z71i|tx~6KXyR7CjwlP>LB;u`Z-^kdHWqZI008NbpLU>;JeB7z)>>ehK<=r=2xe=T; zTv7b1J4?bPk|ioxyt=h!$cfF$a5y=-!A2IM#lKFMsz{>S|N2S}>>p)yi!Il+Pi+Q& z9dem84;2UXef9&%<8A7iUohEISgLnAWn684GwE~Y4*MyWm*f6gT2d=-zxxL7EsS~9 zlZ$S{f}nj~cB2_tR>?8-19qRPV8xDwpZ`%H_EtEplgd|ITPePT+`57m1Ok2IX~xCN zv%uQzvDC`5o*~oKGdRB4C2%d~B8Ud|1az^rQRxCIGhTv3EWaJD1~(d+PnPp?VVwz& zeKhEOG733hD#U^>H1AdxasSJ&X==Qp%BPnCDD z8@mUUsU~ifHW5pqQY=s_75%XeTK@OuA)|c_v3TiX+0sE~31{oe0tsC~U$$?-*aUDN~+3dExqG<=dZhN`(0+@*rN(_Pbpcx=*g%|ky6XaCg z^QOM~X-`GuZqK;3^?3{#o&t|b_T&{PEkf^P=Scf%;8mY!D6oIJQ$=SCp2VrFK5b+! zN>Ei3Q#&jI+QAo!@hU5HSHlLSAf}aEwW-LJlm?v^N4P{Xn#bzXs8Z6D8yt_|9Z}~l z-O{!vm`cpNt%Io2CcE9h6iQ^PoDE<4l`xBuY;CI?k1jBUy(Y>FfFlU5apj6Aj)<1G z_~w{}DF0MAI2d>n*Dn!;sqD5}PX%_?xeNEcl~u=Mebx7|%$13?B`!KVdpK|Gpyhp@ z9rzcrs3sYk0w=Tn0^yd^3_mR`I)6O*QaYLdVJlPJ;{m7B(KZm|AQ_*4r7xHpjsw)9ifN#WZEkIWLu!1I8T<~JDX!*sctzASesA985PAwM_zaHSP+6oxySOa~ zA~!4*K!+|!{p7v6zGO+4KT^rNM>@_zlqDr~SYB9AOS-uh_&f3Ujjw>r%)uurx(h5d zVp;hRw-N|RB`ocC{Uk6mb`w`#DV4g6hrMAP4^n=mHeyZ>e$#St;x+NK^puB4?-LPf zy|gZalNG9&N{DATaLi)FhSvmMtb8~mCTs%F@-D(_oM>@$Px%ZJK>s%ojT@zUGyxe) z>fl^f9%iEFmD3_3B6|Fdm*51!W5;10F6p969C%J!xJ-)nEhq>8DXtcr z=wVR+C|XcLMFUt_&GWyLD1yAx70_w3LdfLe!*v5I$n7(;T`)YnPRg}}5 zoWAQ%Cr%ysWMo>ZVwtKe-^CleLFc|rntR@bQ{sT|>uHt&<>{->^8lgQ+q>uX{ibuY zX}ZIGF8CkyVI#ge(Ty60WeV!Zw(joorEmB15LPPyR07n=I?A0WRTy?gOxrZkrsXWI z2C*zj{Wial`Do8q@7(<5`F{*wE(p z9YZW?n9`-gcArcfFE@|K6rkO)ONSy$+y2(Tke0eDAc^r2b_PsIV~nLOhzc=WIMJ)? z>x0}#U3S@P@M4?sCVB+^?=aK0o|wB~elG(iRlgsiG3wnSB53#F=iP)#7liR-P{Vf{ ziGQns@y586}yu^zj-6M64_@<)OdE8PIc z(i;F}to|4#m?uYm{>#@7zttucK8kyyB8);uM52}#+bNP`kUsCA079(*V22veyewS{ z*(XX`k%po4Nm8f^58khNKl}{1_FU=cZQZ?KqCJY>jKLd!oixs8&uG}tX_a(xexl#f zk1elOjL#KMQYLP2nC=yOHCi)R%iFq*xmXzg=Ke?pvT*AAv;N7vT-V(!U%EA{xsV2y zr$lqnOKe(~EIx7JF0%Z^*MT1##N&R&NDw<#p9Bmtfcu>?@N!@fW}DEdtxmjdg}{gY z7b9OGQjtxZtUwKDk1j5wdwVF_*7dB!46s1*aALxjkc^g0EC-6>l#G#sT-@5Lt6O1D z5#{3s=bq&FwPNMet%LJ;bz{pAJo&wXw&D*JNw{%T6CkSBm(Mj(DvLQrB_tI4dTN7~ z{VMjJku6a0cZkQL&|h5dZxrhO`+zi>f-iD;8gdDzc(v01z0Y~1cl}C07HGXv?dSto zrZN9|$#lML3G}|)AO9&2Y+o+26mOW;XIz5j$0Y6&WIrx+j$xHLdGs>;u}dV)MUbjW zPa=*=PE8Y0CM{R7Gz=+M!jv&JB}Z@I7jE!AWKcNCM}218^8$Q`d=o4)mGw=oDM16i z-8b*||Kl%VR}FM8&0jzK&m=YDcjZ~$Zo%QBWGIR3@imi7{*S91?UW?y$k{keqECdY3ZXu> zxjrL7qlc@W$}%oB#sqDJiPYdwWUSNEv~2;|u=a=v^P!2CXwI?E6-(}+JO4kJEBuT5 zO>aNwViE$+XX5e#@i=0W%!2Y0t;o6*^<}G)=^?5EEvWh3_i5{a;e~{q_bLVEY=Xp8 z6?%OiR$0dTiOb(>TN5vrJDxe-9dFo%DAMsw?Zm>PY<V33N~1LMx?O=M+ig@KDAP z?Rn$QsN{GY&yrH2pqVF>>5zdT7O0U0KxE>-{?|uHB!@aaPbsZqTV{1BC9quI-27en zXHZCBbLg~Fu8aa-AK*fd?>DS6eA{Ht)X~vz{9%48#cDG^W<7WLBe96O#ctc^a#AZr zxO)p;E{>+4+=^bWU9@9q|Jh^oXqlo;8E6EMX2bDUE~ux5wUQq${7w+7 zEP!BI6;+u$fBj>@D!Y&h?(yldZn$>wT17)`fL>KP-*#%Nqhk|~fN6|&pGsU>G8R$G zK<_^ANA(cY)_Z9vUMS>KBYs;A){JfWN)l20uV(yz z5x&=KPXYP#m{Zo{ISImtg`bj=Zbm7nM0_R;&?FDNDHw?Ps*F%K>r(}lW9xkC%QMVV zlz&q-`d-ZcXEgl=^UGd;+CKN#{$Ep1bkqEZl@`N$EJ;`$hE&SUvHu;VmcD*TInd=3 zwq=>o)cRLbwscE;_aWLbizxUnuAFfkC;M~`IfHW?P3w1*cjfc%km<#hI|lrNflPmG zMg)vWrty^q1C=+u?P)M5ZnT2xPb^4}dHgYDMKiD&&udHIUkX{|nmHjAX8e#gpLcOz zZA%F@kM$^^k+f$^gT>xu4Oph&#_J14;nrpcTO9n64Uf+!jez`Pb@EkRu%bhmy(? z24x~lEU!~I(#IXcJ;T4l9${#z@lGYVl%b@(a6{uNxdbV#@GjBRbBi|xV`{Er$s!KbCC52=jPaQe1C z^Z8zuTW(4y2})^T6UgqESe6?o8t5|7en9+v8cbBU1Dque4lbj{3SA-c9nledL+c|k zt0fCIP1^q-fj1r|F!^trUn?PQh?*I_Lu);-2@~A8cYAa4$1}WO)L+k*uF4HoSUHLO z;~(?W<5Mr!JlOzlG&(;Yu8y*n#KGs+!bG%)@Rr*0^7U&U(wYCF)h-b71`NHAr!PJ8 z>}owSyC$o4HFwS*P=JlqBX-P0y2xmM@VYbm=3=7|tS$%eQ`8mVw%DP<{Caw~~^whJmiE!Uft z@XHFJBQ9Ptm6cUa;3I?tPRPA{DPq%F(g|MSL@ZU)fVqDeGw}Ozwe~XgixWQ*(gfZT z{c{@3r@dsFRQBzzr+*fU6$E1BaYB+t#1-sUf)~vwYi;o{D`)|5=rkZt4GO$_`=`eG zUbt)O>ld(N(A;@70S1*%N=mRXpd)y_QXJg8Hr7cY({4hy# zXaZagiZQVHLsL5R)(u8BG zmPZmxCbjppLlb?%VEd)KPSqM#Mldkg;b4droyPxUX&9N335%W=9h&wLFOhM`H{

  • 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 icvYZoYVeoz?EVkO;C58N4nL&;0000 connect + Device position in JTAG chain (IRPre,DRPre) : -1,-1 => Auto-detect + JTAGConf> + Specify target interface speed [kHz]. : 4000 kHz + Speed> + The selected device "GD32VW533HMQ6" is unknown to this software version. + Device "GD32VW553HMQ6" selected. + J-Link> loadbin nuttx.hex, 0 + +Flash layout +============ + +The full map is in the :doc:`chip documentation <../../index>`. What matters +when flashing this board: + +======================== ============== ==================================== +Range Size Purpose +======================== ============== ==================================== +0x08000000 -- 0x083db000 3948 KiB Available to the firmware. This is + what the linker script gives out; + overflowing it is a link error +0x083db000 -- 0x083fb000 128 KiB progmem / LittleFS +0x083fb000 -- 0x08400000 20 KiB **Wi-Fi NVDS** -- do not erase +======================== ============== ==================================== + +For reference, the configurations use a small part of that budget: ``nsh`` +135 KiB (3%), ``wifi`` 610 KiB (15%) and ``sta_softap`` 613 KiB (16%). +The ``ble`` config (BLE on top of ``wifi``) brings the image to about 971 KiB (25%). + +.. warning:: + The **last** pages of the flash are not free: the Wi-Fi NVDS holds the RF + calibration data and the MAC address, and erasing it breaks the radio. The + progmem region ends exactly where the NVDS begins. + +The region handed to progmem is set with +``CONFIG_GD32VW55X_PROGMEM_START_ADDR`` and ``CONFIG_GD32VW55X_PROGMEM_SIZE``; +nothing outside it is ever erased or written. + +Configurations +============== + +Each configuration is built with:: + + $ ./tools/configure.sh gd32vw553k-start: + $ make + +nsh +--- + +Basic NuttShell configuration over the UART2 console. No radio. + +wifi +---- + +NSH plus the Wi-Fi station support. The interface is registered as ``wlan0`` +with the MAC address read from the chip eFuse, and is driven with the standard +network tools:: + + nsh> wapi scan wlan0 + nsh> wapi psk wlan0 3 + nsh> wapi essid wlan0 1 + nsh> ifup wlan0 + nsh> renew wlan0 + nsh> ifconfig + nsh> ping 8.8.8.8 + +.. note:: + Use ``ifup wlan0``, not ``ifconfig wlan0 up``: ``ifconfig`` interprets its + second argument as an IP address. + +.. note:: + The station is WPA2-only. A WPA3-transition network (WPA2/WPA3 mixed + mode) associates through WPA2-PSK; a WPA3(SAE)-only network is refused + up front with ``ENOTSUP`` and a console message naming the unsupported + AKM, instead of letting the prebuilt supplicant attempt the SAE + handshake (which faults). + +The RTC and the SNTP client are enabled, so the clock can be set from the +network:: + + nsh> ntpcstart + nsh> date + +sta_softap +---------- + +NSH plus the Wi-Fi softAP: the board becomes an access point and a DHCP server. +The single-VIF firmware does station *or* AP at a time (not both at once), so +this is a softAP, not the simultaneous STA+AP of some other parts. + +Bring it up with the standard tools:: + + nsh> wapi mode wlan0 3 # 3 = master (softAP) + nsh> wapi psk wlan0 12345678 3 # WPA2-PSK + nsh> wapi essid wlan0 nuttxwifi 1 # start the AP + nsh> dhcpd_start wlan0 # DHCP server, in the background + +A client then sees ``nuttxwifi``, associates with WPA2, and gets an address +from the 10.0.0.0/24 pool (the AP is 10.0.0.1). + +.. note:: + Use WPA2, not WPA3. The SAE (WPA3) handshake on the AP side is deep on the + stack; with the default task stacks it overflows inside the elliptic-curve + crypto and faults. This configuration raises ``CONFIG_INIT_STACKSIZE`` to + 8192 and ``CONFIG_DEFAULT_TASK_STACKSIZE`` to 4096 for the same reason -- the + radio tasks need the headroom. + +.. note:: + ``dhcpd_start`` spawns the server as a background task and returns. The + plain ``dhcpd`` command, confusingly, runs the server *blocking* in the + foreground. + +ble +--- + +``wapi`` plus BLE (``CONFIG_GD32VW55X_BLE``) and the demo GATT service +(``CONFIG_GD32VW55X_BLE_GATT_DEMO``). The board advertises a connectable set +named ``NuttX`` and registers a minimal "transparent UART" service (16-bit +UUIDs ``0xffe0`` / RX ``0xffe1`` / TX ``0xffe2``). Advertising restarts on +every disconnection, so the device stays discoverable across connections. A +central connects, discovers the service, and a write to the RX characteristic +is logged on the board console:: + + nsh> BLE RX (11): Hello world + +.. note:: + The central -> board write is exercised with a write command + (write-without-response), which is reliable. The prebuilt vendor + controller does not complete a write-request (write-with-response) or the + CCCD subscribe issued by a Linux BlueZ host, so the TX **notification** echo + (board -> central) is best exercised from a phone app such as nRF Connect. + This is why BLE keeps ``CONFIG_EXPERIMENTAL``. + +ostest +------ + +``nsh`` plus the NuttX OS test suite (``CONFIG_TESTING_OSTEST``). Run it from +the shell to exercise the scheduler, synchronisation primitives and the FPU +context switch:: + + nsh> ostest + ... + ostest_main: Exiting with status 0 + +The ``rr_test`` (round-robin with a 30000-prime workload) makes the full run +take a couple of minutes on this core; every sub-test reports ``nerrors=0``. + +Status +====== + +All seven configurations were validated on hardware: + +- ``nsh``: boots, console, heap and task list are healthy. +- ``wifi``: full station path over a live AP -- ``wapi scan`` lists the nearby + networks, WPA2 associates through the four-way handshake, DHCP obtains an + address, and ``ping`` reaches the internet. +- ``sta_softap``: the board's own AP -- a client sees the SSID, associates with + WPA2, gets an address from the board's DHCP server, and pings the board. +- ``ble``: advertises ``NuttX``, a central connects, the demo GATT service + enumerates, and a write to the RX characteristic is received on the board + console (central -> board). +- ``ostest``: the OS test suite runs to completion (every sub-test reports + ``nerrors=0`` and it ends with ``ostest_main: Exiting with status 0``). + +BLE (``CONFIG_GD32VW55X_BLE``) is marked EXPERIMENTAL and off by default. The +prebuilt ``libble`` is an all-in-one controller plus RivieraWaves host with no +HCI transport, so the port drives the vendor host directly (it does not +register a NuttX ``bt_driver_s``). The ``ble`` configuration enables it along +with a demo GATT service; see that section above for what is validated and the +notification caveat. A reusable test tool for this is kept with the +out-of-tree port notes. + +.. note:: + ``CONFIG_ARCH_LEDS`` must stay off on this board. With the OS driving the + LEDs, the serial console dies in the Wi-Fi configurations (the console UART + shares the work queue path); the LEDs belong to the application + (``CONFIG_USERLED``), and every defconfig here disables ``ARCH_LEDS`` + explicitly.