From 8892c058040e64628999a2183824148f12d5c7a0 Mon Sep 17 00:00:00 2001 From: liuyongkai2 Date: Mon, 22 Sep 2025 21:48:00 +0800 Subject: [PATCH] add native_node Signed-off-by: liuyongkai2 --- .../entry/oh-package-lock.json5 | 18 - .../native_type_sample/oh-package-lock.json5 | 27 - .../.gitignore | 0 .../AppScope/app.json5 | 0 .../resources/base/element/string.json | 0 .../resources/base/media/background.png | Bin .../resources/base/media/foreground.png | Bin .../resources/base/media/layered_image.json | 0 ArkUIKit/NativeNodeBaseSample/README.md | 74 + .../NativeNodeBaseSample/build-profile.json5 | 70 + .../code-linter.json5 | 0 .../entry/.gitignore | 0 .../entry/build-profile.json5 | 57 + .../entry/hvigorfile.ts | 0 .../entry/obfuscation-rules.txt | 0 .../entry/oh-package.json5 | 0 .../entry/src/main/cpp/CMakeLists.txt | 5 +- .../entry/src/main/cpp/TextMaker.cpp | 1206 +++++++++++++++++ .../entry/src/main/cpp/TextMaker.h | 28 + .../entry/src/main/cpp/baseUtils.cpp | 40 + .../entry/src/main/cpp/baseUtils.h | 0 .../entry/src/main/cpp/manager.cpp | 6 +- .../entry/src/main/cpp/manager.h | 40 + .../entry/src/main/cpp/napi_init.cpp | 52 + .../src/main/cpp/types/libentry/Index.d.ts | 2 +- .../main/cpp/types/libentry/oh-package.json5 | 0 .../main/ets/entryability/EntryAbility.ets | 0 .../entrybackupability/EntryBackupAbility.ets | 0 .../entry/src/main/ets/pages/Index.ets | 74 + .../entry/src/main/ets/pages/page_text.ets | 34 + .../entry/src/main/module.json5 | 0 .../main/resources/base/element/color.json | 0 .../main/resources/base/element/float.json | 0 .../main/resources/base/element/string.json | 0 .../main/resources/base/media/background.png | Bin .../main/resources/base/media/foreground.png | Bin .../resources/base/media/layered_image.json | 0 .../main/resources/base/media/startIcon.png | Bin .../resources/base/profile/backup_config.json | 0 .../resources/base/profile/main_pages.json | 2 +- .../main/resources/dark/element/color.json | 0 .../src/ohosTest/ets/test/Ability.test.ets | 0 .../entry/src/ohosTest/ets/test/List.test.ets | 0 .../entry/src/ohosTest/module.json5 | 0 .../entry/src/test/List.test.ets | 0 .../entry/src/test/LocalUnit.test.ets | 0 .../hvigor/hvigor-config.json5 | 0 .../hvigorfile.ts | 0 ArkUIKit/NativeNodeBaseSample/log.txt | 642 +++++++++ .../NativeNodeBaseSample/oh-package.json5 | 24 + ArkUIKit/NativeNodeBaseSample/ohosTest.md | 8 + .../screenshot/nativeNode.png | Bin 0 -> 129979 bytes .../.gitignore | 0 .../AppScope/app.json5 | 0 .../resources/base/element/string.json | 0 .../resources/base/media/background.png | Bin .../resources/base/media/foreground.png | Bin .../resources/base/media/layered_image.json | 0 .../build-profile.json5 | 0 .../code-linter.json5 | 0 .../entry/.gitignore | 0 .../entry/build-profile.json5 | 0 .../entry/hvigorfile.ts | 0 .../entry/obfuscation-rules.txt | 0 .../entry/oh-package-lock.json5 | 0 .../entry/oh-package.json5 | 0 .../entry/src/main/cpp/CMakeLists.txt | 0 .../entry/src/main/cpp/NavigationContext.cpp | 0 .../entry/src/main/cpp/NavigationContext.h | 0 .../entry/src/main/cpp/manager.cpp | 0 .../entry/src/main/cpp/manager.h | 0 .../entry/src/main/cpp/napi_init.cpp | 0 .../src/main/cpp/types/libentry/Index.d.ts | 0 .../main/cpp/types/libentry/oh-package.json5 | 0 .../main/ets/entryability/EntryAbility.ets | 0 .../entrybackupability/EntryBackupAbility.ets | 0 .../entry/src/main/ets/pages/Index.ets | 0 .../src/main/ets/pages/page_navigation.ets | 0 .../entry/src/main/module.json5 | 0 .../main/resources/base/element/color.json | 0 .../main/resources/base/element/float.json | 0 .../main/resources/base/element/string.json | 0 .../main/resources/base/media/background.png | Bin .../main/resources/base/media/foreground.png | Bin .../resources/base/media/layered_image.json | 0 .../main/resources/base/media/startIcon.png | Bin .../resources/base/profile/backup_config.json | 0 .../resources/base/profile/main_pages.json | 0 .../main/resources/dark/element/color.json | 0 .../src/ohosTest/ets/test/Ability.test.ets | 0 .../entry/src/ohosTest/ets/test/List.test.ets | 0 .../entry/src/ohosTest/module.json5 | 0 .../entry/src/test/List.test.ets | 0 .../entry/src/test/LocalUnit.test.ets | 0 .../hvigor/hvigor-config.json5 | 0 .../hvigorfile.ts | 0 .../oh-package-lock.json5 | 0 .../oh-package.json5 | 0 .../ohosTest.md | 0 ArkUIKit/NativeTypeSample/.gitignore | 12 + ArkUIKit/NativeTypeSample/AppScope/app.json5 | 24 + .../resources/base/element/string.json | 8 + .../resources/base/media/background.png | Bin 0 -> 91942 bytes .../resources/base/media/foreground.png | Bin 0 -> 8805 bytes .../resources/base/media/layered_image.json | 7 + ArkUIKit/NativeTypeSample/README.md | 75 + .../build-profile.json5 | 0 ArkUIKit/NativeTypeSample/code-linter.json5 | 47 + ArkUIKit/NativeTypeSample/entry/.gitignore | 6 + .../entry/build-profile.json5 | 0 ArkUIKit/NativeTypeSample/entry/hvigorfile.ts | 21 + .../entry/obfuscation-rules.txt | 23 + .../NativeTypeSample/entry/oh-package.json5 | 26 + .../entry/src/main/cpp/CMakeLists.txt | 20 + .../entry/src/main/cpp/SwiperMaker.cpp | 0 .../entry/src/main/cpp/SwiperMaker.h | 0 .../entry/src/main/cpp/TextMaker.cpp | 405 ++++++ .../entry/src/main/cpp/TextMaker.h | 29 + .../entry/src/main/cpp/baseUtils.cpp | 0 .../entry/src/main/cpp/baseUtils.h | 30 + .../entry/src/main/cpp/manager.cpp | 90 ++ .../entry/src/main/cpp/manager.h | 3 +- .../entry/src/main/cpp/napi_init.cpp | 2 + .../src/main/cpp/types/libentry/Index.d.ts | 17 + .../main/cpp/types/libentry/oh-package.json5 | 21 + .../main/ets/entryability/EntryAbility.ets | 84 ++ .../entrybackupability/EntryBackupAbility.ets | 31 + .../entry/src/main/ets/pages/Index.ets | 2 +- .../entry/src/main/ets/pages/page_swiper.ets | 0 .../entry/src/main/ets/pages/page_text.ets | 34 + .../entry/src/main/module.json5 | 66 + .../main/resources/base/element/color.json | 12 + .../main/resources/base/element/float.json | 8 + .../main/resources/base/element/string.json | 16 + .../main/resources/base/media/background.png | Bin 0 -> 91942 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 8805 bytes .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 7 + .../main/resources/dark/element/color.json | 12 + .../src/ohosTest/ets/test/Ability.test.ets | 50 + .../entry/src/ohosTest/ets/test/List.test.ets | 20 + .../entry/src/ohosTest/module.json5 | 27 + .../entry/src/test/List.test.ets | 20 + .../entry/src/test/LocalUnit.test.ets | 48 + .../hvigor/hvigor-config.json5 | 37 + ArkUIKit/NativeTypeSample/hvigorfile.ts | 21 + .../oh-package.json5 | 0 .../ohosTest.md | 4 +- .../screenshot/nativeType.png | Bin 0 -> 105738 bytes 151 files changed, 3729 insertions(+), 55 deletions(-) delete mode 100644 ArkUIKit/CapiSample/NativeType/native_type_sample/entry/oh-package-lock.json5 delete mode 100644 ArkUIKit/CapiSample/NativeType/native_type_sample/oh-package-lock.json5 rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/.gitignore (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/AppScope/app.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/AppScope/resources/base/element/string.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/AppScope/resources/base/media/background.png (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/AppScope/resources/base/media/foreground.png (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/AppScope/resources/base/media/layered_image.json (100%) create mode 100644 ArkUIKit/NativeNodeBaseSample/README.md create mode 100644 ArkUIKit/NativeNodeBaseSample/build-profile.json5 rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/code-linter.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/.gitignore (100%) create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/hvigorfile.ts (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/obfuscation-rules.txt (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/oh-package.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/cpp/CMakeLists.txt (78%) create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.cpp create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/baseUtils.cpp rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/cpp/baseUtils.h (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/cpp/manager.cpp (92%) create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/cpp/types/libentry/Index.d.ts (90%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/cpp/types/libentry/oh-package.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/ets/entryability/EntryAbility.ets (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets (100%) create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets create mode 100644 ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_text.ets rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/module.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/resources/base/element/color.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/resources/base/element/float.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/resources/base/element/string.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/resources/base/media/background.png (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/resources/base/media/foreground.png (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/resources/base/media/layered_image.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/resources/base/media/startIcon.png (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/entry/src/main/resources/base/profile/backup_config.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/resources/base/profile/main_pages.json (61%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/main/resources/dark/element/color.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/ohosTest/ets/test/Ability.test.ets (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/ohosTest/ets/test/List.test.ets (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/ohosTest/module.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/test/List.test.ets (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeBaseSample}/entry/src/test/LocalUnit.test.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/hvigor/hvigor-config.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeBaseSample}/hvigorfile.ts (100%) create mode 100644 ArkUIKit/NativeNodeBaseSample/log.txt create mode 100644 ArkUIKit/NativeNodeBaseSample/oh-package.json5 create mode 100644 ArkUIKit/NativeNodeBaseSample/ohosTest.md create mode 100644 ArkUIKit/NativeNodeBaseSample/screenshot/nativeNode.png rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/.gitignore (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/AppScope/app.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/AppScope/resources/base/element/string.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/AppScope/resources/base/media/background.png (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/AppScope/resources/base/media/foreground.png (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/AppScope/resources/base/media/layered_image.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/build-profile.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/code-linter.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/.gitignore (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/build-profile.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/hvigorfile.ts (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/obfuscation-rules.txt (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/oh-package-lock.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/oh-package.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/CMakeLists.txt (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/NavigationContext.cpp (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/NavigationContext.h (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/manager.cpp (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/manager.h (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/napi_init.cpp (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/cpp/types/libentry/Index.d.ts (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/cpp/types/libentry/oh-package.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/ets/entryability/EntryAbility.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/ets/pages/Index.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/ets/pages/page_navigation.ets (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/module.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/resources/base/element/color.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/resources/base/element/float.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/resources/base/element/string.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/resources/base/media/background.png (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/resources/base/media/foreground.png (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/resources/base/media/layered_image.json (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/resources/base/media/startIcon.png (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/entry/src/main/resources/base/profile/backup_config.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/resources/base/profile/main_pages.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/main/resources/dark/element/color.json (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/ohosTest/ets/test/Ability.test.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/ohosTest/ets/test/List.test.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/ohosTest/module.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/test/List.test.ets (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/entry/src/test/LocalUnit.test.ets (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/hvigor/hvigor-config.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeNodeNapiSample}/hvigorfile.ts (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/oh-package-lock.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/oh-package.json5 (100%) rename ArkUIKit/{CapiSample/NativeNodeNapi/native_node_napi => NativeNodeNapiSample}/ohosTest.md (100%) create mode 100644 ArkUIKit/NativeTypeSample/.gitignore create mode 100644 ArkUIKit/NativeTypeSample/AppScope/app.json5 create mode 100644 ArkUIKit/NativeTypeSample/AppScope/resources/base/element/string.json create mode 100644 ArkUIKit/NativeTypeSample/AppScope/resources/base/media/background.png create mode 100644 ArkUIKit/NativeTypeSample/AppScope/resources/base/media/foreground.png create mode 100644 ArkUIKit/NativeTypeSample/AppScope/resources/base/media/layered_image.json create mode 100644 ArkUIKit/NativeTypeSample/README.md rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/build-profile.json5 (100%) create mode 100644 ArkUIKit/NativeTypeSample/code-linter.json5 create mode 100644 ArkUIKit/NativeTypeSample/entry/.gitignore rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/build-profile.json5 (100%) create mode 100644 ArkUIKit/NativeTypeSample/entry/hvigorfile.ts create mode 100644 ArkUIKit/NativeTypeSample/entry/obfuscation-rules.txt create mode 100644 ArkUIKit/NativeTypeSample/entry/oh-package.json5 create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/CMakeLists.txt rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/cpp/SwiperMaker.cpp (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/cpp/SwiperMaker.h (100%) create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.cpp create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.h rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/cpp/baseUtils.cpp (100%) create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/baseUtils.h create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.cpp rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/cpp/manager.h (93%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/cpp/napi_init.cpp (93%) create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/Index.d.ts create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/oh-package.json5 create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/ets/pages/Index.ets (97%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/entry/src/main/ets/pages/page_swiper.ets (100%) create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/page_text.ets create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/module.json5 create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/color.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/float.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/string.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/media/background.png create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/media/foreground.png create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/media/layered_image.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/media/startIcon.png create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/backup_config.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/main_pages.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/main/resources/dark/element/color.json create mode 100644 ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 ArkUIKit/NativeTypeSample/entry/src/ohosTest/module.json5 create mode 100644 ArkUIKit/NativeTypeSample/entry/src/test/List.test.ets create mode 100644 ArkUIKit/NativeTypeSample/entry/src/test/LocalUnit.test.ets create mode 100644 ArkUIKit/NativeTypeSample/hvigor/hvigor-config.json5 create mode 100644 ArkUIKit/NativeTypeSample/hvigorfile.ts rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/oh-package.json5 (100%) rename ArkUIKit/{CapiSample/NativeType/native_type_sample => NativeTypeSample}/ohosTest.md (75%) create mode 100644 ArkUIKit/NativeTypeSample/screenshot/nativeType.png diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/oh-package-lock.json5 b/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/oh-package-lock.json5 deleted file mode 100644 index 5c8c8d647..000000000 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/oh-package-lock.json5 +++ /dev/null @@ -1,18 +0,0 @@ -{ - "meta": { - "stableOrder": true - }, - "lockfileVersion": 3, - "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", - "specifiers": { - "libentry.so@src/main/cpp/types/libentry": "libentry.so@src/main/cpp/types/libentry" - }, - "packages": { - "libentry.so@src/main/cpp/types/libentry": { - "name": "libentry.so", - "version": "1.0.0", - "resolved": "src/main/cpp/types/libentry", - "registryType": "local" - } - } -} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/oh-package-lock.json5 b/ArkUIKit/CapiSample/NativeType/native_type_sample/oh-package-lock.json5 deleted file mode 100644 index 7fcf81827..000000000 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/oh-package-lock.json5 +++ /dev/null @@ -1,27 +0,0 @@ -{ - "meta": { - "stableOrder": true - }, - "lockfileVersion": 3, - "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", - "specifiers": { - "@ohos/hamock@1.0.0": "@ohos/hamock@1.0.0", - "@ohos/hypium@1.0.21": "@ohos/hypium@1.0.21" - }, - "packages": { - "@ohos/hamock@1.0.0": { - "name": "@ohos/hamock", - "version": "1.0.0", - "integrity": "sha512-K6lDPYc6VkKe6ZBNQa9aoG+ZZMiwqfcR/7yAVFSUGIuOAhPvCJAo9+t1fZnpe0dBRBPxj2bxPPbKh69VuyAtDg==", - "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hamock/-/hamock-1.0.0.har", - "registryType": "ohpm" - }, - "@ohos/hypium@1.0.21": { - "name": "@ohos/hypium", - "version": "1.0.21", - "integrity": "sha512-iyKGMXxE+9PpCkqEwu0VykN/7hNpb+QOeIuHwkmZnxOpI+dFZt6yhPB7k89EgV1MiSK/ieV/hMjr5Z2mWwRfMQ==", - "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.21.har", - "registryType": "ohpm" - } - } -} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/.gitignore b/ArkUIKit/NativeNodeBaseSample/.gitignore similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/.gitignore rename to ArkUIKit/NativeNodeBaseSample/.gitignore diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/AppScope/app.json5 b/ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/AppScope/app.json5 rename to ArkUIKit/NativeNodeBaseSample/AppScope/app.json5 diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/AppScope/resources/base/element/string.json b/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/element/string.json similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/AppScope/resources/base/element/string.json rename to ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/element/string.json diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/AppScope/resources/base/media/background.png b/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/media/background.png similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/AppScope/resources/base/media/background.png rename to ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/media/background.png diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/AppScope/resources/base/media/foreground.png b/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/media/foreground.png similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/AppScope/resources/base/media/foreground.png rename to ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/media/foreground.png diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/AppScope/resources/base/media/layered_image.json b/ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/media/layered_image.json similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/AppScope/resources/base/media/layered_image.json rename to ArkUIKit/NativeNodeBaseSample/AppScope/resources/base/media/layered_image.json diff --git a/ArkUIKit/NativeNodeBaseSample/README.md b/ArkUIKit/NativeNodeBaseSample/README.md new file mode 100644 index 000000000..c6eb7de06 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/README.md @@ -0,0 +1,74 @@ +# Native_node_Sample + +## 介绍 + +本示例展示了如何创建文本、输入框、文本域等组件,配置其样式、属性与事件,还含 UI 任务、反色设置等功能,构建文本页面。 + +## 效果预览 + +| 预览 | +| -------------------------------------------- | + + +## 使用说明 +1. 安装编译生成的hap包,并打开应用; +2. 首页面会出现对应text选择框,点击选择框进入text界面; + + +## 工程目录 + +``` +StyledStringNDK +entry/src/main/ets/ +└── pages + ├── Index.ets (获取导航页面) + └── page_text.ets (文本界面) +entry/src/main/ +├── cpp +│ ├── types +│ │ └── libentry +│ │ └── Index.d.ts (函数对应的js映射) +│ ├── CMakeLists.txt (CMake脚本) +| ├── manager.cpp +| ├── manager.h +│ ├── napi_init.cpp +| ├── baseUtils.cpp +| ├── baseUtils.h +| ├── TextMaker.cpp +│ └── TextMaker.h +└── resources + ├── base + │ ├── element + │ │ ├── color.json + │ │ ├── float.json + │ │ └── string.json + │ └── media +``` + +## 相关权限 + +不涉及 + +## 依赖 + +不涉及 + +## 约束和限制 + +1. 本示例支持标准系统上运行,支持设备:RK3568; + +2. 本示例支持API20版本SDK,版本号:6.0.0.36; + +3. 本示例已支持使DevEco Studio 5.1.1 Release (构建版本:5.1.1.840,构建 2025年9月20日)编译运行 + +## 下载 + +如需单独下载本工程,执行如下命令: + +``` +git init +git config core.sparsecheckout true +echo code/DocsSample/ArkUISample/native_node_sample > .git/info/sparse-checkout +git remote add origin https://gitcode.com/openharmony/applications_app_samples.git +git pull origin master +``` \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/build-profile.json5 b/ArkUIKit/NativeNodeBaseSample/build-profile.json5 new file mode 100644 index 000000000..fad9fdc84 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/build-profile.json5 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": 20, + "compatibleSdkVersion": 20, + "runtimeOS": "OpenHarmony", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true, + "useNormalizedOHMUrl": true + } + } + } + ], + "buildModeSet": [ + { + "name": "debug" + }, + { + "name": "release" + } + ], + "signingConfigs": [ + { + "name": "default", + "material": { + "certpath": "C:/Users/mengbin/.ohos/config/openharmony/default_native_node_sample_chM8J6e_8dDNvGCBjfAkjWpumQsw6Odr2vOZoY9aYsQ=.cer", + "keyAlias": "debugKey", + "keyPassword": "0000001B93DC0C18E4E80E972908BD6DDAD1A7A23708F713AE4EAC9F4A8150864E9BF213DAE8CCD1EAE461", + "profile": "C:/Users/mengbin/.ohos/config/openharmony/default_native_node_sample_chM8J6e_8dDNvGCBjfAkjWpumQsw6Odr2vOZoY9aYsQ=.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "C:/Users/mengbin/.ohos/config/openharmony/default_native_node_sample_chM8J6e_8dDNvGCBjfAkjWpumQsw6Odr2vOZoY9aYsQ=.p12", + "storePassword": "0000001B14C8C965757EEB795058C932CF032B4275280291C134D1B8C12CA7DAF6B9EE19C0061639ADE130" + } + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/code-linter.json5 b/ArkUIKit/NativeNodeBaseSample/code-linter.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/code-linter.json5 rename to ArkUIKit/NativeNodeBaseSample/code-linter.json5 diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/.gitignore b/ArkUIKit/NativeNodeBaseSample/entry/.gitignore similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/.gitignore rename to ArkUIKit/NativeNodeBaseSample/entry/.gitignore diff --git a/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 b/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 new file mode 100644 index 000000000..400a41af2 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/build-profile.json5 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + "externalNativeOptions": { + "path": "./src/main/cpp/CMakeLists.txt", + "arguments": "", + "cppFlags": "", + "abiFilters": [ + "armeabi-v7a","arm64-v8a", "x86_64" + ] + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + }, + "nativeLib": { + "debugSymbol": { + "strip": true, + "exclude": [] + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/hvigorfile.ts b/ArkUIKit/NativeNodeBaseSample/entry/hvigorfile.ts similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/hvigorfile.ts rename to ArkUIKit/NativeNodeBaseSample/entry/hvigorfile.ts diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/obfuscation-rules.txt b/ArkUIKit/NativeNodeBaseSample/entry/obfuscation-rules.txt similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/obfuscation-rules.txt rename to ArkUIKit/NativeNodeBaseSample/entry/obfuscation-rules.txt diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/oh-package.json5 b/ArkUIKit/NativeNodeBaseSample/entry/oh-package.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/oh-package.json5 rename to ArkUIKit/NativeNodeBaseSample/entry/oh-package.json5 diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/CMakeLists.txt b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt similarity index 78% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/CMakeLists.txt rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt index a2f3bdcb2..3b5c8ddf0 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/CMakeLists.txt +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/CMakeLists.txt @@ -7,7 +7,7 @@ set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${NATIVERENDER_ROOT_PATH} ${NATIVERENDER_ROOT_PATH}/include) -add_library(entry SHARED napi_init.cpp manager.cpp baseUtils.cpp SwiperMaker.cpp) +add_library(entry SHARED napi_init.cpp manager.cpp baseUtils.cpp TextMaker.cpp) find_library(hilog-lib hilog_ndk.z) @@ -16,4 +16,5 @@ find_library(libace-lib ace_ndk.z) find_library(libnapi-lib ace_napi.z) -target_link_libraries(entry PUBLIC ${hilog-lib} ${libace-lib} ${libnapi-lib}) \ No newline at end of file +target_link_libraries(entry PUBLIC ${hilog-lib} ${libace-lib} ${libnapi-lib}) +target_link_libraries(entry PUBLIC ${libace-lib} libace_napi.z.so libnative_drawing.so libhilog_ndk.z.so) \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.cpp new file mode 100644 index 000000000..39734a5e3 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.cpp @@ -0,0 +1,1206 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TextMaker.h" +#include "baseUtils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "manager" +#define LOG_INFO(...) OH_LOG_Print(LOG_APP, LOG_INFO, 0xD001400, LOG_TAG, __VA_ARGS__) + +#define VALUE_0 0 +#define VALUE_1 1 +#define VALUE_2 2 +#define VALUE_3 3 +#define VALUE_4 4 +#define VALUE_5 5 +#define VALUE_8 8 +#define VALUE_10 10 +#define VALUE_11 11 +#define VALUE_20 20 +#define VALUE_28 28 +#define VALUE_30 30 +#define VALUE_50 50 +#define VALUE_100 100 +#define VALUE_300 300 +#define VALUE_380 380 +#define VALUE_400 400 +#define EVENT_SPAN_LONG_PRESS 1 +#define EVENT_TEXT_INPUT_CHANGE 2 +#define EVENT_TEXT_INPUT_SUBMIT 3 +#define EVENT_TEXT_INPUT_CUT 4 +#define EVENT_TEXT_INPUT_PASTE 5 +#define EVENT_TEXT_INPUT_SELECTION_CHANGE 6 +#define EVENT_TEXT_INPUT_EDIT_CHANGE 7 +#define EVENT_TEXT_INPUT_CONTENT_SIZE_CHANGE 8 +#define EVENT_TEXT_INPUT_FILTER_ERROR 9 +#define EVENT_TEXT_INPUT_CONTENT_SCROLL 10 +#define EVENT_TEXT_INPUT_WILL_INSERT 11 +#define EVENT_TEXT_INPUT_DID_INSERT 12 +#define EVENT_TEXT_INPUT_WILL_DELETE 13 +#define EVENT_TEXT_INPUT_DID_DELETE 14 +#define EVENT_TEXT_INPUT_CHANGE_PREVIEW 15 +#define EVENT_TEXT_INPUT_WILL_CHANGE 16 +#define EVENT_TEXT_AREA_CHANGE 17 +#define EVENT_TEXT_AREA_PASTE 18 +#define EVENT_TEXT_AREA_SELECTION_CHANGE 19 +#define EVENT_TEXT_AREA_CONTENT_SCROLL 20 +#define EVENT_TEXT_AREA_EDIT_CHANGE 21 +#define EVENT_TEXT_AREA_SUBMIT 22 +#define EVENT_TEXT_AREA_CONTENT_SIZE_CHANGE 23 +#define EVENT_TEXT_AREA_DID_INSERT 24 +#define EVENT_TEXT_AREA_DID_DELETE 25 +#define EVENT_TEXT_AREA_CHANGE_PREVIEW 26 +#define EVENT_TEXT_AREA_FILTER_ERROR 27 +#define EVENT_TEXT_AREA_WILL_INSERT 28 +#define EVENT_TEXT_AREA_WILL_DELETE 29 +#define EVENT_TEXT_AREA_WILL_CHANGE 30 +#define EVENT_TEXT_DETECT_RESULT_UPDATE 31 + +// 处理Span事件 +static void HandleSpanEvent(int32_t eventId) +{ + if (eventId == EVENT_SPAN_LONG_PRESS) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "spanOnLongPress回调函数被执行"); + } +} + +// 处理TextInput事件(1) +static void HandleTextInputEvent1(int32_t eventId) +{ + switch (eventId) { + case EVENT_TEXT_INPUT_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnChange回调函数被执行"); + break; + case EVENT_TEXT_INPUT_SUBMIT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnSubmit回调函数被执行"); + break; + case EVENT_TEXT_INPUT_CUT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnCut回调函数被执行"); + break; + case EVENT_TEXT_INPUT_PASTE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnPaste回调函数被执行"); + break; + case EVENT_TEXT_INPUT_SELECTION_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnSelectionChange回调函数被执行"); + break; + case EVENT_TEXT_INPUT_EDIT_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnEditChange回调函数被执行"); + break; + case EVENT_TEXT_INPUT_CONTENT_SIZE_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnContentSizeChange回调函数被执行"); + break; + default: + break; + } +} + +// 处理TextInput事件(2) +static void HandleTextInputEvent2(int32_t eventId) +{ + switch (eventId) { + case EVENT_TEXT_INPUT_FILTER_ERROR: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnInputFiterError回调函数被执行"); + break; + case EVENT_TEXT_INPUT_CONTENT_SCROLL: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnontentScroll回调函数被执行"); + break; + case EVENT_TEXT_INPUT_WILL_INSERT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnWillInsert回调函数被执行"); + break; + case EVENT_TEXT_INPUT_DID_INSERT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnDidInsert回调函数被执行"); + break; + case EVENT_TEXT_INPUT_WILL_DELETE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnWillDelete回调函数被执行"); + break; + case EVENT_TEXT_INPUT_DID_DELETE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnDidDelete回调函数被执行"); + break; + case EVENT_TEXT_INPUT_CHANGE_PREVIEW: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnChangeWithPreviewText回调函数被执行"); + break; + case EVENT_TEXT_INPUT_WILL_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textInputOnWillChange回调函数被执行"); + break; + default: + break; + } +} + +// 处理TextArea事件(1) +static void HandleTextAreaEvent1(int32_t eventId) +{ + switch (eventId) { + case EVENT_TEXT_AREA_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnChange回调函数被执行"); + break; + case EVENT_TEXT_AREA_PASTE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnPaste回调函数被执行"); + break; + case EVENT_TEXT_AREA_SELECTION_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnTextSelectionChange回调函数被执行"); + break; + case EVENT_TEXT_AREA_CONTENT_SCROLL: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnContentScroll回调函数被执行"); + break; + case EVENT_TEXT_AREA_EDIT_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnEditChange回调函数被执行"); + break; + case EVENT_TEXT_AREA_SUBMIT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnSubmit回调函数被执行"); + break; + case EVENT_TEXT_AREA_CONTENT_SIZE_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnContentSizeChange回调函数被执行"); + break; + default: + break; + } +} + +// 处理TextArea事件(2) +static void HandleTextAreaEvent2(int32_t eventId) +{ + switch (eventId) { + case EVENT_TEXT_AREA_DID_INSERT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnDidInsert回调函数被执行"); + break; + case EVENT_TEXT_AREA_DID_DELETE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnDidDelete回调函数被执行"); + break; + case EVENT_TEXT_AREA_CHANGE_PREVIEW: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnChangeWithPreviewText回调函数被执行"); + break; + case EVENT_TEXT_AREA_FILTER_ERROR: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnInputFilterError回调函数被执行"); + break; + case EVENT_TEXT_AREA_WILL_INSERT: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnWillInsert回调函数被执行"); + break; + case EVENT_TEXT_AREA_WILL_DELETE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnWillDelete回调函数被执行"); + break; + case EVENT_TEXT_AREA_WILL_CHANGE: + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textAreaOnWillChange回调函数被执行"); + break; + default: + break; + } +} + +// 处理其他事件 +static void HandleOtherEvent(int32_t eventId) +{ + if (eventId == EVENT_TEXT_DETECT_RESULT_UPDATE) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textOnDetectResultUpdate回调函数被执行"); + } +} + +// 主事件处理函数 +static void OnEventReceive(ArkUI_NodeEvent *event) +{ + if (event == nullptr) { + return; + } + // 处理字符串异步事件 + ArkUI_StringAsyncEvent *asyncEvent = OH_ArkUI_NodeEvent_GetStringAsyncEvent(event); + if (asyncEvent != nullptr) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "text组件事件数据获取成功"); + } + // 处理文本变化事件 + ArkUI_TextChangeEvent *textChangeEvent = OH_ArkUI_NodeEvent_GetTextChangeEvent(event); + if (asyncEvent != nullptr) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "textChange组件事件数据获取成功"); + } + // 处理字符串值 + char *eventStr = nullptr; + int32_t strSize = VALUE_0; + int32_t ret = OH_ArkUI_NodeEvent_GetStringValue(event, VALUE_0, &eventStr, &strSize); + if (ret == ARKUI_ERROR_CODE_NO_ERROR) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "text组件事件数据获取成功"); + } + // 分发事件处理 + int32_t eventId = OH_ArkUI_NodeEvent_GetTargetId(event); + HandleSpanEvent(eventId); + HandleTextInputEvent1(eventId); + HandleTextInputEvent2(eventId); + HandleTextAreaEvent1(eventId); + HandleTextAreaEvent2(eventId); + HandleOtherEvent(eventId); +} + +void setText1(ArkUI_NodeHandle &text) +{ + ArkUI_NumberValue textWidth[] = {{.f32 = VALUE_380}}; + ArkUI_AttributeItem textWidthItem = {.value = textWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text, NODE_WIDTH, &textWidthItem); + ArkUI_NumberValue textHeight[] = {{.f32 = VALUE_100}}; + ArkUI_AttributeItem textHeightItem = {.value = textHeight, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text, NODE_HEIGHT, &textHeightItem); + if (text != nullptr) { + // span仅作为text的子组件形式展示 + ArkUI_NodeHandle span = Manager::nodeAPI_->createNode(ARKUI_NODE_SPAN); + const char *spanContent = "This is a span"; + ArkUI_AttributeItem spanContentItem = {.string = spanContent}; + Manager::nodeAPI_->setAttribute(span, NODE_SPAN_CONTENT, &spanContentItem); + if (span != nullptr) { + // 设置Span背景样式 + ArkUI_NumberValue spanBackground[] = { + {.u32 = 0xFFFF0000}, // 背景颜色 + {.f32 = 5.0f}, // 左上角半径 + {.f32 = 5.0f}, // 右上角半径 + {.f32 = 5.0f}, // 左下角半径 + {.f32 = 5.0f} // 右下角半径 + }; + ArkUI_AttributeItem spanBackgroundItem = {.value = spanBackground, .size = VALUE_5}; + Manager::nodeAPI_->setAttribute(span, NODE_SPAN_TEXT_BACKGROUND_STYLE, &spanBackgroundItem); + + // 文本基线的偏移量属性 + ArkUI_NumberValue baselineOffsetVal = {.f32 = VALUE_10}; + ArkUI_AttributeItem baselineOffsetItem = {&baselineOffsetVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text, NODE_SPAN_BASELINE_OFFSET, &baselineOffsetItem); + // 长按span组件,触发回调 + Manager::nodeAPI_->registerNodeEvent(span, NODE_TEXT_SPAN_ON_LONG_PRESS, EVENT_SPAN_LONG_PRESS, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + } + Manager::nodeAPI_->addChild(text, span); + } +} + +static void setTextInput1Base(ArkUI_NodeHandle &textInput1) +{ + // 控制单行文本输入框编辑态属性 + ArkUI_NumberValue inputEditing = {.i32 = true}; + ArkUI_AttributeItem inputEditingItem = {&inputEditing, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_EDITING, &inputEditingItem); + // 单行文本设置文本选中并高亮的区域 + ArkUI_NumberValue inputTextSelection[] = {{.i32 = VALUE_0}, {.i32 = VALUE_10}}; + ArkUI_AttributeItem inputTextSelectionItem = {inputTextSelection, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_TEXT_SELECTION, &inputTextSelectionItem); + // 设置是否启用自动填充 + ArkUI_NumberValue enableAutoFill = {.i32 = false}; + ArkUI_AttributeItem enableAutoFillItem = {&enableAutoFill, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_ENABLE_AUTO_FILL, &enableAutoFillItem); + // 设置是否启用自动填充动效 + ArkUI_NumberValue enableFillAnimation = {.i32 = false}; + ArkUI_AttributeItem enableFillAnimationItem = {&enableFillAnimation, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_ENABLE_FILL_ANIMATION, &enableFillAnimationItem); + // 自动填充类型(密码保险箱支持) + ArkUI_NumberValue inputContentType = {.i32 = ARKUI_TEXTINPUT_CONTENT_TYPE_PASSWORD}; + ArkUI_AttributeItem inputContentTypeItem = {&inputContentType, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_CONTENT_TYPE, &inputContentTypeItem); + // 定义生成密码规则 + const char *passwordRulesVal = "这是密码规则"; + ArkUI_AttributeItem passwordRulesItem = {.string = passwordRulesVal}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_PASSWORD_RULES, &passwordRulesItem); + // 设置初始状态,是否全选文本 + ArkUI_NumberValue inputSelectAll = {.i32 = false}; + ArkUI_AttributeItem inputSelectAllItem = {&inputSelectAll, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_SELECT_ALL, &inputSelectAllItem); +} + +// 设置TextInput1的基础属性(提示文本、光标、字体、输入模式等) +static void SetTextInput1BaseAttrs(ArkUI_NodeHandle &textInput1) +{ + // 默认提示文本内容 + const char *inputPlaceHolederVal = "please info password"; + ArkUI_AttributeItem placeHolederItem = {.string = inputPlaceHolederVal}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_PLACEHOLDER, &placeHolederItem); + // 光标颜色属性 + ArkUI_NumberValue caretColor = {.u32 = 0xFFFF0000}; + ArkUI_AttributeItem caretColorItem = {&caretColor, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_CARET_COLOR, &caretColorItem); + // 光标风格属性,光标宽度 + ArkUI_NumberValue caretStyle = {.f32 = VALUE_2}; + ArkUI_AttributeItem caretStyleItem = {&caretStyle, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_CARET_STYLE, &caretStyleItem); + // 无输入时默认字体颜色属性 + ArkUI_NumberValue placeholderColor = {.u32 = 0xFFFF0000}; + ArkUI_AttributeItem placeholderColorItem = {&placeholderColor, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_PLACEHOLDER_COLOR, &placeholderColorItem); + // 无输入时默认字体配置(斜体,字体大小 20) + ArkUI_NumberValue placeholderFont[] = {{.f32 = VALUE_20}, {.i32 = ARKUI_FONT_STYLE_ITALIC}}; + ArkUI_AttributeItem placeholderFontItem = {placeholderFont, VALUE_2}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_PLACEHOLDER_FONT, &placeholderFontItem); + // 聚焦是否绑定输入法 + ArkUI_NumberValue enableKeyboard = {.i32 = false}; + ArkUI_AttributeItem enableKeyboardItem = {&enableKeyboard, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS, &enableKeyboardItem); + // 输入框类型属性(密码输入模式) + ArkUI_NumberValue inputTyple = {.i32 = ARKUI_TEXTINPUT_TYPE_PASSWORD}; + ArkUI_AttributeItem inputTypleItem = {&inputTyple, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_TYPE, &inputTypleItem); + // 密码输入模式是否显示末尾图标属性 + ArkUI_NumberValue showPasswordIcon = {.i32 = false}; + ArkUI_AttributeItem showPasswordIconItem = {&showPasswordIcon, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON, &showPasswordIconItem); + // 输入框文本被选中时的背景色 + ArkUI_NumberValue selectedBackgroundColor = {.u32 = 0xFFFFFF00}; + ArkUI_AttributeItem selectedBackgroundColorItem = {&selectedBackgroundColor, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput1, NODE_TEXT_INPUT_SELECTED_BACKGROUND_COLOR, + &selectedBackgroundColorItem); + setTextInput1Base(textInput1); +} + +// 注册 TextInput1 的所有事件 +static void RegisterTextInput1Events(ArkUI_NodeHandle &textInput1) +{ + // TextInput 输入内容发生变化时触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_CHANGE, EVENT_TEXT_INPUT_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // TextInput 按下输入法回车键触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_SUBMIT, EVENT_TEXT_INPUT_SUBMIT, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 长按弹出剪贴板后点击剪切触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_CUT, EVENT_TEXT_INPUT_CUT, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 长按弹出剪贴板后点击粘贴触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_PASTE, EVENT_TEXT_INPUT_PASTE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 文本选择变化触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_TEXT_SELECTION_CHANGE, + EVENT_TEXT_INPUT_SELECTION_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 输入状态变化触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_EDIT_CHANGE, EVENT_TEXT_INPUT_EDIT_CHANGE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 文本内容滚动触发 + Manager::nodeAPI_->registerNodeEvent(textInput1, NODE_TEXT_INPUT_ON_CONTENT_SCROLL, EVENT_TEXT_INPUT_CONTENT_SCROLL, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); +} + +void setTextInput1(ArkUI_NodeHandle &textInput1) +{ + SetTextInput1BaseAttrs(textInput1); + RegisterTextInput1Events(textInput1); +} + +static void setTextInputVal(ArkUI_NodeHandle &textInput2) +{ + // 设置输入框风格,(内联只支持输入框类型设置为normal) + ArkUI_NumberValue textInputStyle = {.i32 = ARKUI_TEXTINPUT_STYLE_INLINE}; + ArkUI_AttributeItem textInputStyleItem = {&textInputStyle, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_STYLE, &textInputStyleItem); + + // 单行文本输入框的默认文本内容属性 + ArkUI_AttributeItem textInputText = {.string = "this is textinput 2"}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_TEXT, &textInputText); + + // 设置长按、双击输入框或者右键输入框时,是否不弹出文本选择菜单(true是隐藏,false是显示,默认值是false) + ArkUI_NumberValue selelctionMenuHidden = {.i32 = true}; + ArkUI_AttributeItem selelctionMenuHiddenItem = {&selelctionMenuHidden, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_SELECTION_MENU_HIDDEN, &selelctionMenuHiddenItem); + + // 回车键类型 + ArkUI_NumberValue enterKeyType = {.i32 = ARKUI_ENTER_KEY_TYPE_SEND}; + ArkUI_AttributeItem enterKeyTypeItem = {&enterKeyType, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_ENTER_KEY_TYPE, &enterKeyTypeItem); + + // 是否弹出键盘(默认true,false将不弹出键盘) + ArkUI_NumberValue showKeyboardOnFocus = {.i32 = true}; + ArkUI_AttributeItem showKeyboardOnFocusItem = {&showKeyboardOnFocus, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_SHOW_KEYBOARD_ON_FOCUS, &showKeyboardOnFocusItem); + + // 调整textInput组件之间的字符间距 + ArkUI_NumberValue inputLetterSpacing = {.f32 = VALUE_10}; + ArkUI_AttributeItem inputLetterSpacingItem = {&inputLetterSpacing, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_LETTER_SPACING, &inputLetterSpacingItem); + + // 是否开启输入预上屏 + ArkUI_NumberValue enablePreviewText = {.i32 = false}; + ArkUI_AttributeItem enablePreviewTextItem = {&enablePreviewText, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_ENABLE_PREVIEW_TEXT, &enablePreviewTextItem); + + // 设置文本将行间距平分至行的顶部与底部 + ArkUI_NumberValue inputHalfLeading = {.i32 = true}; + ArkUI_AttributeItem inputHalfLeadingItem = {&inputHalfLeading, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_HALF_LEADING, &inputHalfLeadingItem); + + // 设置输入框拉起的键盘样式 + ArkUI_NumberValue keyboardAppenrance = {.i32 = ARKUI_KEYBOARD_APPEARANCE_DARK_IMMERSIVE}; + ArkUI_AttributeItem keyboardAppenranceItem = {&keyboardAppenrance, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_KEYBOARD_APPEARANCE, &keyboardAppenranceItem); + + // 设置输入框文本的高度(设置为undefined时,文本的高度设置为5) + ArkUI_NumberValue inputLineHeight = {.i32 = VALUE_30}; + ArkUI_AttributeItem inputLineHeightItem = {&inputLineHeight, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_LINE_HEIGHT, &inputLineHeightItem); +} + +void setTextInput2(ArkUI_NodeHandle &textInput2) +{ + setTextInputVal(textInput2); + // 获取已编辑文本内容区域相对组件的位置和大小 + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", + "NODE_TEXT_INPUT_CARET_OFFSET:%{public}f、%{public}f、%{public}f、%{public}f", + Manager::nodeAPI_->getAttribute(textInput2, NODE_TEXT_INPUT_CONTENT_RECT)->value[VALUE_0].f32, + Manager::nodeAPI_->getAttribute(textInput2, NODE_TEXT_INPUT_CONTENT_RECT)->value[VALUE_1].f32, + Manager::nodeAPI_->getAttribute(textInput2, NODE_TEXT_INPUT_CONTENT_RECT)->value[VALUE_2].f32, + Manager::nodeAPI_->getAttribute(textInput2, NODE_TEXT_INPUT_CONTENT_RECT)->value[VALUE_3].f32); + + // 获取已编辑内容的行数 + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_TEXT_INPUT_CONTENT_LINE_COUNT:%{public}d、%{public}d", + Manager::nodeAPI_->getAttribute(textInput2, NODE_TEXT_INPUT_CONTENT_LINE_COUNT)->value[VALUE_0].i32, + Manager::nodeAPI_->getAttribute(textInput2, NODE_TEXT_INPUT_CONTENT_LINE_COUNT)->value[VALUE_1].i32); + + // TextInput输入内容发生变化时触发该事件 + Manager::nodeAPI_->registerNodeEvent(textInput2, NODE_TEXT_INPUT_ON_CONTENT_SIZE_CHANGE, + EVENT_TEXT_INPUT_CONTENT_SIZE_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义在输入完成时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textInput2, NODE_TEXT_INPUT_ON_DID_INSERT, EVENT_TEXT_INPUT_DID_INSERT, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义在删除完成时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textInput2, NODE_TEXT_INPUT_ON_DID_DELETE, EVENT_TEXT_INPUT_DID_DELETE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义TextInput组件在内容改变时(包含预上屏内容),触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textInput2, NODE_TEXT_INPUT_ON_CHANGE_WITH_PREVIEW_TEXT, + EVENT_TEXT_INPUT_CHANGE_PREVIEW, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义在删除完成时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textInput2, NODE_TEXT_INPUT_ON_WILL_CHANGE, EVENT_TEXT_INPUT_WILL_CHANGE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); +} + +void setTextInput3(ArkUI_NodeHandle &textInput3) +{ + // 输入框下划线 + ArkUI_NumberValue showUnderLine = {.i32 = true}; + ArkUI_AttributeItem showUnderLineItem = {&showUnderLine, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_SHOW_UNDERLINE, &showUnderLineItem); + + // 设置输入框最大文本数属性 + ArkUI_NumberValue maxLength = {.i32 = VALUE_10}; + ArkUI_AttributeItem maxLengthItem = {&maxLength, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_MAX_LENGTH, &maxLengthItem); + + // 单行文本右侧清除按钮样式 + ArkUI_NumberValue cancelButton[] = {{.i32 = ARKUI_CANCELBUTTON_STYLE_CONSTANT}}; + ArkUI_AttributeItem cancelButtonItem = {cancelButton, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_CANCEL_BUTTON, &cancelButtonItem); + + // 开启下划线时,配置下划线的颜色 + ArkUI_NumberValue underlineColor[] = { + {.u32 = 0xFFFF0000}, {.u32 = 0xFFFF1493}, {.u32 = 0xFFFFB7C5}, {.u32 = 0xFFFFE4E1}}; + ArkUI_AttributeItem underlineColorItem = {underlineColor, VALUE_4}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_UNDERLINE_COLOR, &underlineColorItem); + + // 通过正则表达式设置输入,支持字符串匹配,例如粘贴 + ArkUI_AttributeItem filterItem = {.string = "a"}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_INPUT_FILTER, &filterItem); + // 设置自定义键盘 + ArkUI_NumberValue inputCustomKeyBoard = {.i32 = false}; + ArkUI_AttributeItem inputCustomKeyBoardItem = {&inputCustomKeyBoard, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_CUSTOM_KEYBOARD, &inputCustomKeyBoardItem); + + // 断行规则:CJK任意断行(ARKUI_WORD_BREAK_NORMAL) + ArkUI_NumberValue wordBreakVal = {.i32 = ARKUI_WORD_BREAK_NORMAL}; + ArkUI_AttributeItem wordBreakItem = {&wordBreakVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_WORD_BREAK, &wordBreakItem); + + // 设置输入框在submit状态下,触发回车键是否失焦 + ArkUI_NumberValue blurOrSubmit = {.i32 = false}; + ArkUI_AttributeItem blurOrSubmitItem = {&blurOrSubmit, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_BLUR_ON_SUBMIT, &blurOrSubmitItem); + + // 定义在将要输入时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textInput3, NODE_TEXT_INPUT_ON_WILL_INSERT, EVENT_TEXT_INPUT_WILL_INSERT, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义在将要删除时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textInput3, NODE_TEXT_INPUT_ON_WILL_DELETE, EVENT_TEXT_INPUT_WILL_DELETE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 设置光标所在位置 + ArkUI_NumberValue textInputCaretOffset = {.i32 = VALUE_5}; + ArkUI_AttributeItem textInputCaretOffsetItem = {&textInputCaretOffset, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput3, NODE_TEXT_INPUT_CARET_OFFSET, &textInputCaretOffsetItem); + + // 获取已编辑内容的行数 + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_TEXT_AREA_CONTENT_LINE_COUNT:%{public}d", + Manager::nodeAPI_->getAttribute(textInput3, NODE_TEXT_INPUT_CONTENT_LINE_COUNT)->value[VALUE_0].i32); + + // 设置NODE_TEXT_INPUT_INPUT_FILTER,正则匹配失败时触发。触发该事件的条件:正则匹配失败时 + Manager::nodeAPI_->registerNodeEvent(textInput3, NODE_TEXT_INPUT_ON_INPUT_FILTER_ERROR, + EVENT_TEXT_INPUT_FILTER_ERROR, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); +} + +static void setTextArea1Val(ArkUI_NodeHandle &textArea1) +{ + // 多行文本输入框的默认提示文本内容属性 + const char *textAreaPlaceholder = "this is textArea1"; + ArkUI_AttributeItem textAreaPlaceholderItem = {.string = textAreaPlaceholder}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_PLACEHOLDER, &textAreaPlaceholderItem); + + // 输入框支持的最大文本数属性 + ArkUI_NumberValue textAreaMaxLength = {.i32 = VALUE_11}; + ArkUI_AttributeItem textAreaMaxLengthItem = {&textAreaMaxLength, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_MAX_LENGTH, &textAreaMaxLengthItem); + + // 无输入时默认提示文本的颜色属性 + ArkUI_NumberValue textAreaPlaceholederColor = {.u32 = 0xFFFFC0CB}; + ArkUI_AttributeItem textAreaPlaceholederColorItem = {&textAreaPlaceholederColor, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_PLACEHOLDER_COLOR, &textAreaPlaceholederColorItem); + + // 光标颜色属性 + ArkUI_NumberValue textAreaCaretColor = {.u32 = 0xFFFFE4E1}; + ArkUI_AttributeItem textAreaCaretColorItem = {&textAreaCaretColor, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_CARET_COLOR, &textAreaCaretColorItem); + + // 控制多行文本输入框编辑态属性 + ArkUI_NumberValue textAreaEditing = {.i32 = true}; + ArkUI_AttributeItem textAreaEditingItem = {&textAreaEditing, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_EDITING, &textAreaEditingItem); + + // 输入框的类型属性 + ArkUI_NumberValue textAreaType = {.i32 = ARKUI_TEXTAREA_TYPE_NUMBER}; + ArkUI_AttributeItem textAreaTypeItem = {&textAreaType, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_TYPE, &textAreaTypeItem); + + // 设置输入的字符数超过阈值时是否显示计数器,超出阈值高亮边框 + ArkUI_NumberValue textAreaShowCounter[] = {{.i32 = true}, {.f32 = VALUE_100}, {.i32 = true}}; + ArkUI_AttributeItem textAreaShowCounterItem = {textAreaShowCounter, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_SHOW_COUNTER, &textAreaShowCounterItem); + + // 设置长按、双击输入框或者右键输入框时,是否不弹出文本选择菜单 + ArkUI_NumberValue textAreaSelectionMenuHidden = {.i32 = true}; + ArkUI_AttributeItem textAreaSelectionMenuHiddenItem = {&textAreaSelectionMenuHidden, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_SELECTION_MENU_HIDDEN, &textAreaSelectionMenuHiddenItem); + + // 设置文本选中底板颜色 + ArkUI_NumberValue textAreaSelectedBackgroundColor = {.u32 = 0xFFFF0000}; + ArkUI_AttributeItem textAreaSelectedBackgroundColorItem = {&textAreaSelectedBackgroundColor, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_SELECTED_BACKGROUND_COLOR, + &textAreaSelectedBackgroundColorItem); + + // 回车键类型 + ArkUI_NumberValue enterKeyType = {.i32 = ARKUI_ENTER_KEY_TYPE_SEND}; + ArkUI_AttributeItem enterKeyTypeItem = {&enterKeyType, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_ENTER_KEY_TYPE, &enterKeyTypeItem); + + // 是否弹出键盘(默认true,false将不弹出键盘) + ArkUI_NumberValue showKeyboardOnFocus = {.i32 = true}; + ArkUI_AttributeItem showKeyboardOnFocusItem = {&showKeyboardOnFocus, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_SHOW_KEYBOARD_ON_FOCUS, &showKeyboardOnFocusItem); + + // 设置文本将行间距平分至行的顶部与底部 + ArkUI_NumberValue areaHalfLeading = {.i32 = true}; + ArkUI_AttributeItem areaHalfLeadingItem = {&areaHalfLeading, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_HALF_LEADING, &areaHalfLeadingItem); + + // 设置节点的最小行数 + ArkUI_NumberValue textAreaMinLines = {.i32 = VALUE_1}; + ArkUI_AttributeItem textAreaMinLinesItem = {&textAreaMinLines, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_MIN_LINES, &textAreaMinLinesItem); +} + +void setTextArea1(ArkUI_NodeHandle &textArea1) +{ + setTextArea1Val(textArea1); + // 设置输入框文本的高度 + ArkUI_NumberValue textAreaLineHeight = {.i32 = VALUE_30}; + ArkUI_AttributeItem textAreaLineHeightItem = {&textAreaLineHeight, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_LINE_HEIGHT, &textAreaLineHeightItem); + + // 组件在获焦状态下,调用该接口设置文本选择区域并高亮显示,且只有在selectionStart小于selectionEnd时,文字才会被选取、高亮显示。 + ArkUI_NumberValue textAreaSelection[] = {{.i32 = VALUE_2}, {.i32 = VALUE_8}}; + ArkUI_AttributeItem textAreaSelectionItem = {textAreaSelection, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_TEXT_SELECTION, &textAreaSelectionItem); + + // 设置是否启用自动填充 + ArkUI_NumberValue textAreaEnableAutoFill = {.i32 = false}; + ArkUI_AttributeItem textAreaEnableAutoFillItem = {&textAreaEnableAutoFill, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_ENABLE_AUTO_FILL, &textAreaEnableAutoFillItem); + + // NODE_TEXT_AREA_CONTENT_TYPE + ArkUI_NumberValue textAreaContentType = {.i32 = ARKUI_TEXTINPUT_CONTENT_TYPE_USER_NAME}; + ArkUI_AttributeItem textAreaContentTypeItem = {&textAreaContentType, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea1, NODE_TEXT_AREA_CONTENT_TYPE, &textAreaContentTypeItem); + + // 获取光标所在位置信息 + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_TEXT_AREA_CARET_OFFSET:%{public}d", + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CARET_OFFSET)->value[VALUE_0].i32); + + // 获取已编辑文本内容区域相对组件的位置和大小 + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", + "NODE_TEXT_AREA_CARET_OFFSET:%{public}f、%{public}f、%{public}f、%{public}f", + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CONTENT_RECT)->value[VALUE_0].f32, + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CONTENT_RECT)->value[VALUE_1].f32, + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CONTENT_RECT)->value[VALUE_2].f32, + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CONTENT_RECT)->value[VALUE_3].f32); + + // 获取已编辑内容的行数 + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_TEXT_AREA_CONTENT_LINE_COUNT:%{public}d、%{public}d", + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CONTENT_LINE_COUNT)->value[VALUE_0].i32, + Manager::nodeAPI_->getAttribute(textArea1, NODE_TEXT_AREA_CONTENT_LINE_COUNT)->value[VALUE_1].i32); + + // 输入内容发生变化时,触发该回调 + Manager::nodeAPI_->registerNodeEvent(textArea1, NODE_TEXT_AREA_ON_CHANGE, EVENT_TEXT_AREA_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); +} + +void setTextArea2(ArkUI_NodeHandle &textArea2) +{ + // 多行文本输入框的默认提示文本内容属性 + const char *textAreaText = "这里是默认文本内容"; + ArkUI_AttributeItem textAreaTextItem = {.string = textAreaText}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_PLACEHOLDER, &textAreaTextItem); + + // 设置输入框文本的行间距 + ArkUI_NumberValue textAreaLineSpacing = {.i32 = VALUE_10}; + ArkUI_AttributeItem textAreaLineSpacingItem = {&textAreaLineSpacing, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_LINE_SPACING, &textAreaLineSpacingItem); + + // 设置TextArea组件是否开启输入预上屏 + ArkUI_NumberValue enablePrevireText = {.i32 = ARKUI_ENTER_KEY_TYPE_SEND}; + ArkUI_AttributeItem enablePrevireTextItem = {&enablePrevireText, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_ENABLE_PREVIEW_TEXT, &enablePrevireTextItem); + + // 设置输入框拉起的键盘样式 + ArkUI_NumberValue keyboardAppenrance = {.i32 = ARKUI_KEYBOARD_APPEARANCE_DARK_IMMERSIVE}; + ArkUI_AttributeItem keyboardAppenranceItem = {&keyboardAppenrance, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_KEYBOARD_APPEARANCE, &keyboardAppenranceItem); + + // 设置输入框文本的行间距 + ArkUI_NumberValue textAreaLetterSpacing = {.i32 = VALUE_10}; + ArkUI_AttributeItem textAreaLetterSpacingItem = {&textAreaLetterSpacing, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_LETTER_SPACING, &textAreaLetterSpacingItem); + + // 设置输入框内联模式编辑态时文本可显示的最大行数 + ArkUI_NumberValue textAreaMaxLines = {.i32 = VALUE_8}; + ArkUI_AttributeItem textAreaMaxLinesItem = {&textAreaMaxLines, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_MAX_LINES, &textAreaMaxLinesItem); + + // 设置输入框在submit状态下,触发回车键是否失焦 + ArkUI_NumberValue blurOrSubmit = {.i32 = false}; + ArkUI_AttributeItem blurOrSubmitItem = {&blurOrSubmit, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_BLUR_ON_SUBMIT, &blurOrSubmitItem); + + // 通过正则表达式设置输入,支持字符串匹配,例如粘贴 + ArkUI_AttributeItem filterItem = {.string = "a"}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_INPUT_FILTER, &filterItem); + + // 设置TextArea通过点击以外的方式获焦时,是否绑定输入法 + ArkUI_NumberValue keyboardOnFocus = {.i32 = false}; + ArkUI_AttributeItem keyboardOnFocusItem = {&keyboardOnFocus, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea2, NODE_TEXT_AREA_ENABLE_KEYBOARD_ON_FOCUS, &keyboardOnFocusItem); + + // 设置NODE_TEXT_AREA_INPUT_FILTER,正则匹配失败时触发。触发该事件的条件:正则匹配失败时 + Manager::nodeAPI_->registerNodeEvent(textArea2, NODE_TEXT_AREA_ON_INPUT_FILTER_ERROR, EVENT_TEXT_AREA_FILTER_ERROR, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义在将要输入时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textArea2, NODE_TEXT_AREA_ON_WILL_INSERT, EVENT_TEXT_AREA_WILL_INSERT, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义在将要删除时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textArea2, NODE_TEXT_AREA_ON_WILL_DELETE, EVENT_TEXT_AREA_WILL_DELETE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + + // 定义TextArea组件在内容将要改变时(包含预上屏内容),触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textArea2, NODE_TEXT_AREA_ON_WILL_CHANGE, EVENT_TEXT_AREA_WILL_CHANGE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); +} + +static void onFontStyleChange(ArkUI_SystemFontStyleEvent *event, void *userData) +{ + float fontSizeScale = OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale(event); + float fontWeightScale = OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale(event); + ArkUI_NodeHandle textNode = static_cast(userData); +} + +void setText2(ArkUI_NodeHandle &text2) +{ + const char *textContent = "this is text 2 this is text 2 this is text 2!!!! "; + ArkUI_AttributeItem contentItem = {.string = textContent}; + Manager::nodeAPI_->setAttribute(text2, NODE_TEXT_CONTENT, &contentItem); + // 设置文本样式 + ArkUI_NumberValue fontSize[] = {{.f32 = VALUE_28}}; + ArkUI_AttributeItem fontSizeItem = {.value = fontSize, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_FONT_SIZE, &fontSizeItem); + ArkUI_NumberValue fontColor = {.u32 = 0xFFFF0000}; + ArkUI_AttributeItem fontColorItem = {.value = &fontColor, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_FONT_COLOR, &fontColorItem); + + // 字体样式:斜体样式(ARKUI_FONT_STYLE_ITALIC) + ArkUI_NumberValue fontStyleVal = {.i32 = ARKUI_FONT_STYLE_ITALIC}; + ArkUI_AttributeItem fontStyleItem = {&fontStyleVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_FONT_STYLE, &fontStyleItem); + + // 文本字符间距 + ArkUI_NumberValue letterSpaceVal = {.f32 = VALUE_10}; + ArkUI_AttributeItem letterSpaceItem = {&letterSpaceVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_TEXT_LETTER_SPACING, &letterSpaceItem); + // 文本最大行数 + ArkUI_NumberValue maxLinesVal = {.i32 = VALUE_1}; + ArkUI_AttributeItem maxLinesItem = {&maxLinesVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_TEXT_LETTER_SPACING, &maxLinesItem); + + // 最小显示字号 + ArkUI_NumberValue minFontSizeVal = {.i32 = ARKUI_COPY_OPTIONS_NONE}; + ArkUI_AttributeItem minFontSizeItem = {&minFontSizeVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_TEXT_COPY_OPTION, &minFontSizeItem); + + // 文本溢出:跑马灯(ARKUI_TEXT_OVERFLOW_MARQUEE) + ArkUI_NumberValue overflowVal = {.i32 = ARKUI_TEXT_OVERFLOW_MARQUEE}; + ArkUI_AttributeItem overflowItem = {&overflowVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text2, NODE_TEXT_OVERFLOW, &overflowItem); + + int32_t ret = OH_ArkUI_RegisterSystemFontStyleChangeEvent(text2, text2, &onFontStyleChange); + if (ret == ARKUI_ERROR_CODE_NO_ERROR) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "字体变更回调"); + } +} + +void setText3(ArkUI_NodeHandle &text3) +{ + const char *textContent = + "this is text 3 this is text 3 this is text 3!!!!this is text 3 this is text 3 this is text 3!!!! "; + ArkUI_AttributeItem contentItem = {.string = textContent}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_CONTENT, &contentItem); + + // 自适应高度:MaxLines优先(ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_MAX_LINES_FIRST) + ArkUI_NumberValue adaptPolicyVal = {.i32 = ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_MAX_LINES_FIRST}; + ArkUI_AttributeItem adaptPolicyItem = {&adaptPolicyVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY, &adaptPolicyItem); + + // 水平对齐:首部对齐(ARKUI_TEXT_ALIGNMENT_START) + ArkUI_NumberValue hAlignVal = {.i32 = ARKUI_TEXT_ALIGNMENT_START}; + ArkUI_AttributeItem hAlignItem = {&hAlignVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_ALIGN, &hAlignItem); + + // 首行缩进 + ArkUI_NumberValue indentVal = {.f32 = VALUE_30}; + ArkUI_AttributeItem indentItem = {&indentVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_INDENT, &indentItem); + + // 省略位置:行首省略(ARKUI_ELLIPSIS_MODE_START) + ArkUI_NumberValue ellipsisVal = {.i32 = ARKUI_ELLIPSIS_MODE_START}; + ArkUI_AttributeItem ellipsisItem = {&ellipsisVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_ELLIPSIS_MODE, &ellipsisItem); + + // 复制粘贴:不支持复制(ARKUI_COPY_OPTIONS_NONE / ARKUI_TEXT_COPY_OPTIONS_NONE) + ArkUI_NumberValue copyOptVal = {.i32 = ARKUI_COPY_OPTIONS_NONE}; + ArkUI_AttributeItem copyOptItem = {©OptVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_COPY_OPTION, ©OptItem); + + // 断行规则:CJK任意断行(ARKUI_WORD_BREAK_NORMAL) + ArkUI_NumberValue wordBreakVal = {.i32 = ARKUI_WORD_BREAK_NORMAL}; + ArkUI_AttributeItem wordBreakItem = {&wordBreakVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_WORD_BREAK, &wordBreakItem); + + // 文本行间距 + ArkUI_NumberValue lineSpaceVal = {.f32 = VALUE_10}; + ArkUI_AttributeItem lineSpaceItem = {&lineSpaceVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_LINE_SPACING, &lineSpaceItem); + // 设置文本装饰 + ArkUI_NumberValue textDecoration[] = { + {.i32 = ARKUI_TEXT_DECORATION_TYPE_UNDERLINE}, {.u32 = 0xFFFF0000}, {.i32 = ARKUI_TEXT_DECORATION_STYLE_SOLID}}; + ArkUI_AttributeItem textDecorationItem = {.value = textDecoration, .size = VALUE_3}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_DECORATION, &textDecorationItem); + + // 设置text样式 + ArkUI_NumberValue textFont[] = { + {.f32 = VALUE_5}, {.i32 = ARKUI_FONT_WEIGHT_W600}, {.i32 = ARKUI_FONT_STYLE_NORMAL}}; + ArkUI_AttributeItem textFontItem = {textFont, VALUE_3}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_WORD_BREAK, &textFontItem); + // 文本大小写属性 + ArkUI_NumberValue textCase = {.i32 = ARKUI_TEXT_CASE_UPPER}; + ArkUI_AttributeItem textCaseItem = {&textCase, VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_CASE, &textCaseItem); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "Manager", "NODE_TEXT_LINE_COUNT :%{public}d", + Manager::nodeAPI_->getAttribute(text3, NODE_TEXT_LINE_COUNT)->value[VALUE_0].i32); + // 设置文本识别 + ArkUI_NumberValue enableDataDetector = {.i32 = true}; + ArkUI_AttributeItem enableDataDetectorItem = {.value = &enableDataDetector, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_ENABLE_DATA_DETECTOR, &enableDataDetectorItem); + ArkUI_NumberValue detectorConfig = {.i32 = ARKUI_TEXT_DATA_DETECTOR_TYPE_PHONE_NUMBER}; + ArkUI_AttributeItem detectorConfigItem = {.value = &detectorConfig, .size = VALUE_2}; + Manager::nodeAPI_->setAttribute(text3, NODE_TEXT_ENABLE_DATA_DETECTOR_CONFIG, &detectorConfigItem); + // 文本设置TextDataDetectorConfig且识别成功时,触发onDetectResultUpdate回调 + Manager::nodeAPI_->registerNodeEvent(text3, NODE_TEXT_ON_DETECT_RESULT_UPDATE, EVENT_TEXT_DETECT_RESULT_UPDATE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); +} + +void setText4(ArkUI_NodeHandle &text4) +{ + const char *textContent = "这里是第四个文本"; + ArkUI_AttributeItem contentItem = {.string = textContent}; + Manager::nodeAPI_->setAttribute(text4, NODE_TEXT_CONTENT, &contentItem); + + // 设置文本行高 + ArkUI_NumberValue lineHeight = {.f32 = VALUE_50}; + ArkUI_AttributeItem lineHeightItem = {&lineHeight, VALUE_1}; + Manager::nodeAPI_->setAttribute(text4, NODE_TEXT_LINE_HEIGHT, &lineHeightItem); + + // 文本基线的偏移量属性 + ArkUI_NumberValue baselineOffset = {.f32 = VALUE_50}; + ArkUI_AttributeItem baselineOffsetItem = {&baselineOffset, VALUE_1}; + Manager::nodeAPI_->setAttribute(text4, NODE_TEXT_BASELINE_OFFSET, &baselineOffsetItem); + + // 文字阴影效果属性 + ArkUI_NumberValue textShadow[] = { + {.f32 = VALUE_5}, {.i32 = ARKUI_SHADOW_TYPE_BLUR}, {.u32 = 0xFFFF0000}, {.f32 = VALUE_5}, {.f32 = VALUE_5}}; + ArkUI_AttributeItem textShadowItem = {textShadow, VALUE_5}; + Manager::nodeAPI_->setAttribute(text4, NODE_TEXT_TEXT_SHADOW, &textShadowItem); + + // Text最大显示字号 + ArkUI_NumberValue maxFontSize = {.f32 = VALUE_10}; + ArkUI_AttributeItem maxFontSizeItem = {&maxFontSize, VALUE_1}; + Manager::nodeAPI_->setAttribute(text4, NODE_TEXT_MAX_FONT_SIZE, &maxFontSizeItem); + + // 设置NODE_FONT_FEATURE + ArkUI_AttributeItem fontFeatureItem = {.string = "ss01"}; + Manager::nodeAPI_->setAttribute(text4, NODE_FONT_FEATURE, &fontFeatureItem); + + // Text最大显示字号ARKUI_FONT_WEIGHT_W500 + ArkUI_NumberValue fontWeight = {.i32 = ARKUI_FONT_WEIGHT_W500}; + ArkUI_AttributeItem fontWeightItem = {&fontWeight, VALUE_1}; + Manager::nodeAPI_->setAttribute(text4, NODE_IMMUTABLE_FONT_WEIGHT, &fontWeightItem); + ArkUI_AttributeItem fontfamily = {.string = "字体"}; + Manager::nodeAPI_->setAttribute(text4, NODE_FONT_FAMILY, &fontfamily); +} + +void setText5(ArkUI_NodeHandle &text5) +{ + const char *textContent = "this is text 5"; + ArkUI_AttributeItem contentItem = {.string = textContent}; + Manager::nodeAPI_->setAttribute(text5, NODE_TEXT_CONTENT, &contentItem); + // 渐变 + ArkUI_NumberValue linearGradient[] = {{.f32 = ARKUI_LINEAR_GRADIENT_DIRECTION_CUSTOM}, + {.i32 = ARKUI_LINEAR_GRADIENT_DIRECTION_CUSTOM}, + {.i32 = VALUE_0}}; + ArkUI_AttributeItem linearGradientItem = {linearGradient, VALUE_3}; + Manager::nodeAPI_->setAttribute(text5, NODE_TEXT_LINEAR_GRADIENT, &linearGradientItem); + ArkUI_NumberValue radialGradient[] = {{.f32 = ARKUI_LINEAR_GRADIENT_DIRECTION_CUSTOM}, + {.i32 = ARKUI_LINEAR_GRADIENT_DIRECTION_CUSTOM}, + {.i32 = VALUE_0}}; + ArkUI_AttributeItem radialGradientItem = {radialGradient, VALUE_3}; + Manager::nodeAPI_->setAttribute(text5, NODE_TEXT_RADIAL_GRADIENT, &radialGradientItem); +} + +void setTextArea3(ArkUI_NodeHandle &textArea3) +{ + // 多行文本输入框的默认提示文本内容属性 + const char *textAreaText = "触发回调测试"; + ArkUI_AttributeItem textAreaTextItem = {.string = textAreaText}; + Manager::nodeAPI_->setAttribute(textArea3, NODE_TEXT_AREA_PLACEHOLDER, &textAreaTextItem); + // 长按输入框内部区域弹出剪贴板后,点击剪切板粘贴按钮,触发该回调 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_PASTE, EVENT_TEXT_AREA_PASTE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 文本选择的位置发生变化时,触发该回调 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_TEXT_SELECTION_CHANGE, + EVENT_TEXT_AREA_SELECTION_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 文本内容滚动时,触发该回调。触发该事件的条件:文本内容滚动时 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_CONTENT_SCROLL, EVENT_TEXT_AREA_CONTENT_SCROLL, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 输入状态变化时,触发该回调 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_EDIT_CHANGE, EVENT_TEXT_AREA_EDIT_CHANGE, + nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // TextArea按下输入法回车键触发该事件 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_SUBMIT, EVENT_TEXT_AREA_SUBMIT, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // TextArea输入内容发生变化时触发该事件 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_CONTENT_SIZE_CHANGE, + EVENT_TEXT_AREA_CONTENT_SIZE_CHANGE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 定义在输入完成时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_DID_INSERT, EVENT_TEXT_AREA_DID_INSERT, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 定义在删除完成时,触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_DID_DELETE, EVENT_TEXT_AREA_DID_DELETE, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 定义TextArea组件在内容改变时(包含预上屏内容),触发回调的枚举值 + Manager::nodeAPI_->registerNodeEvent(textArea3, NODE_TEXT_AREA_ON_CHANGE_WITH_PREVIEW_TEXT, + EVENT_TEXT_AREA_CHANGE_PREVIEW, nullptr); + Manager::nodeAPI_->registerNodeEventReceiver(&OnEventReceive); + // 设置支持滚动时节点的最大行数 + ArkUI_NumberValue maxLinesWithScroll = {.i32 = VALUE_10}; + ArkUI_AttributeItem maxLinesWithScrollItem = {&maxLinesWithScroll, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea3, NODE_TEXT_AREA_MAX_LINES_WITH_SCROLL, &maxLinesWithScrollItem); +} + +void setAccessibility(ArkUI_NodeHandle &accessibilityText) +{ + ArkUI_AccessibilityValue *accessibilityLabelVal = OH_ArkUI_AccessibilityValue_Create(); + OH_ArkUI_AccessibilityValue_SetText(accessibilityLabelVal, "这里设置了一段无障碍文本"); + const char *a11yItemVal = OH_ArkUI_AccessibilityValue_GetText(accessibilityLabelVal); + ArkUI_AttributeItem a11yItem = {.string = a11yItemVal}; + Manager::nodeAPI_->setAttribute(accessibilityText, NODE_TEXT_CONTENT, &a11yItem); +} + +void setCustom(ArkUI_NodeHandle &customSpan) +{ + Manager::nodeAPI_->registerNodeCustomEvent(customSpan, ARKUI_NODE_CUSTOM_EVENT_ON_MEASURE, VALUE_1, nullptr); + Manager::nodeAPI_->registerNodeCustomEvent(customSpan, ARKUI_NODE_CUSTOM_EVENT_ON_DRAW, VALUE_1, nullptr); + Manager::nodeAPI_->registerNodeCustomEventReceiver([](ArkUI_NodeCustomEvent *event) { + auto eventId = OH_ArkUI_NodeCustomEvent_GetEventTargetId(event); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "EventID:%{public}d", eventId); + if (eventId == VALUE_0) { + ArkUI_CustomSpanMeasureInfo *measureInfo = OH_ArkUI_CustomSpanMeasureInfo_Create(); + OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo(event, measureInfo); + OH_ArkUI_CustomSpanMeasureInfo_Dispose(measureInfo); + ArkUI_CustomSpanMetrics *customSpanMetrics = OH_ArkUI_CustomSpanMetrics_Create(); + OH_ArkUI_CustomSpanMetrics_SetHeight(customSpanMetrics, 120.0f); + OH_ArkUI_CustomSpanMetrics_SetWidth(customSpanMetrics, 80.0f); + OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics(event, customSpanMetrics); + OH_ArkUI_CustomSpanMetrics_Dispose(customSpanMetrics); + } + if (eventId == VALUE_1) { + auto *layoutConstraint = OH_ArkUI_NodeCustomEvent_GetLayoutConstraintInMeasure(event); + auto *drawContext = OH_ArkUI_NodeCustomEvent_GetDrawContextInDraw(event); + auto *drawingHandle = reinterpret_cast(OH_ArkUI_DrawContext_GetCanvas(drawContext)); + auto size = OH_ArkUI_DrawContext_GetSize(drawContext); + ArkUI_CustomSpanDrawInfo *customSpanDrawInfo = OH_ArkUI_CustomSpanDrawInfo_Create(); + OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo(event, customSpanDrawInfo); + float optionsX = OH_ArkUI_CustomSpanDrawInfo_GetXOffset(customSpanDrawInfo); + float optionsLineTop = OH_ArkUI_CustomSpanDrawInfo_GetLineTop(customSpanDrawInfo); + float optionsLineBottom = OH_ArkUI_CustomSpanDrawInfo_GetLineBottom(customSpanDrawInfo); + float optionsBaseLine = OH_ArkUI_CustomSpanDrawInfo_GetBaseline(customSpanDrawInfo); + OH_ArkUI_CustomSpanDrawInfo_Dispose(customSpanDrawInfo); + } + }); +} + +void setText6(ArkUI_NodeHandle &text6) +{ + // ImageSpan + ArkUI_NodeHandle imageSpan = Manager::nodeAPI_->createNode(ARKUI_NODE_IMAGE_SPAN); + ArkUI_AttributeItem spanUrl = {.string = "/resources/base/media/background.png"}; + ArkUI_NumberValue widthVal[VALUE_1]{}; + widthVal[VALUE_0].f32 = 100.f; + ArkUI_AttributeItem width = {.value = widthVal, .size = VALUE_1}; + ArkUI_NumberValue heightVal[VALUE_1]{}; + heightVal[VALUE_0].f32 = 100.f; + ArkUI_AttributeItem height = {.value = heightVal, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(imageSpan, NODE_WIDTH, &width); + Manager::nodeAPI_->setAttribute(imageSpan, NODE_HEIGHT, &height); + Manager::nodeAPI_->setAttribute(imageSpan, NODE_IMAGE_SPAN_SRC, &spanUrl); + // 设置 NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT + ArkUI_NumberValue verticalAlignment = {.i32 = ARKUI_IMAGE_SPAN_ALIGNMENT_BOTTOM}; + ArkUI_AttributeItem verticalAlignmentItem = {&verticalAlignment, VALUE_1}; + Manager::nodeAPI_->setAttribute(imageSpan, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT, &verticalAlignmentItem); + // imageSpan组件占位图地址属性 + ArkUI_AttributeItem spanAlt = {.string = "/resources/base/media/startIcon.png"}; + Manager::nodeAPI_->setAttribute(imageSpan, NODE_IMAGE_SPAN_ALT, &spanAlt); + // 设置imageSpan组件的基线偏移量属性 + ArkUI_NumberValue baselineOffset = {.f32 = VALUE_10}; + ArkUI_AttributeItem baselineOffsetItem = {&baselineOffset, VALUE_1}; + Manager::nodeAPI_->setAttribute(imageSpan, NODE_IMAGE_SPAN_BASELINE_OFFSET, &baselineOffsetItem); + Manager::nodeAPI_->addChild(text6, imageSpan); +} + +void setText7(ArkUI_NodeHandle &text7) +{ + ArkUI_NodeHandle text = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NumberValue textWidth[] = {{.f32 = VALUE_300}}; + ArkUI_AttributeItem textWidthItem = {.value = textWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text, NODE_WIDTH, &textWidthItem); + ArkUI_NumberValue textHeight[] = {{.f32 = VALUE_30}}; + ArkUI_AttributeItem textHeightItem = {.value = textHeight, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text, NODE_HEIGHT, &textHeightItem); + ArkUI_NumberValue borderWidth[] = {{.f32 = VALUE_1}}; + ArkUI_AttributeItem borderWidthItem = {.value = borderWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(text, NODE_BORDER_WIDTH, &borderWidthItem); + // OH_Drawing_开头的API是字体引擎提供的,typographyStyle表示段落样式。 + OH_Drawing_TypographyStyle *typographyStyle = OH_Drawing_CreateTypographyStyle(); + OH_Drawing_SetTypographyTextAlign(typographyStyle, OH_Drawing_TextAlign::TEXT_ALIGN_CENTER); + OH_Drawing_SetTypographyTextMaxLines(typographyStyle, VALUE_10); + // 创建 ArkUI_StyledString。 + ArkUI_StyledString *styledString = OH_ArkUI_StyledString_Create(typographyStyle, OH_Drawing_CreateFontCollection()); + // 创建文本样式,设置字体和颜色。 + OH_Drawing_TextStyle *textStyle = OH_Drawing_CreateTextStyle(); + OH_Drawing_SetTextStyleFontSize(textStyle, VALUE_28); + OH_Drawing_SetTextStyleColor(textStyle, OH_Drawing_ColorSetArgb(0xFF, 0x70, 0x70, 0x70)); + // 文本样式的设置顺序push -> add -> pop. + OH_ArkUI_StyledString_PushTextStyle(styledString, textStyle); + OH_ArkUI_StyledString_AddText(styledString, "Hello"); + OH_ArkUI_StyledString_PopTextStyle(styledString); + // 添加占位,此区域内不会绘制文字,可以在此位置挂载Image组件实现图文混排。 + OH_Drawing_PlaceholderSpan placeHolder{.width = VALUE_20, .height = VALUE_20}; + OH_ArkUI_StyledString_AddPlaceholder(styledString, &placeHolder); + // 设置不同样式的文字 + OH_Drawing_TextStyle *worldTextStyle = OH_Drawing_CreateTextStyle(); + OH_Drawing_SetTextStyleFontSize(worldTextStyle, VALUE_28); + OH_Drawing_SetTextStyleColor(worldTextStyle, OH_Drawing_ColorSetArgb(0xFF, 0x27, 0x87, 0xD9)); + OH_ArkUI_StyledString_PushTextStyle(styledString, worldTextStyle); + OH_ArkUI_StyledString_AddText(styledString, "World!"); + OH_ArkUI_StyledString_PopTextStyle(styledString); + // 依赖StyledString对象创建字体引擎的Typography,此时它已经包含了设置的文本及其样式。 + OH_Drawing_Typography *typography = OH_ArkUI_StyledString_CreateTypography(styledString); + // 字体引擎布局方法,需传入一个宽度,此宽度需与Text组件宽度匹配。 + // 布局宽度 = Text组件宽度 - (左padding + 右padding) + OH_Drawing_TypographyLayout(typography, VALUE_300); + ArkUI_AttributeItem styledStringItem = {.object = styledString}; + // 布局完成后,通过NODE_TEXT_CONTENT_WITH_STYLED_STRING设置给Text组件。 + Manager::nodeAPI_->setAttribute(text, NODE_TEXT_CONTENT_WITH_STYLED_STRING, &styledStringItem); + OH_ArkUI_StyledString_Destroy(styledString); + Manager::nodeAPI_->addChild(text7, text); +} + +static void MyTaskCallback(void *userData) +{ + if (!userData) { + return; + } + // 将在这里完成自定义数据的处理。。。 + //进入text页面会打印信息 + ArkUI_NodeHandle textNode = static_cast(userData); + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "修改数据成功"); +} + +void RunTaskInUIContext(ArkUI_NodeHandle targetNode) +{ + if (!targetNode || !Manager::nodeAPI_) { + return; + } + ArkUI_ContextHandle uiCtx = OH_ArkUI_GetContextByNode(targetNode); + int32_t ret = OH_ArkUI_RunTaskInScope(uiCtx, targetNode, MyTaskCallback); +} + +static uint32_t MyInvertColor(uint32_t color) +{ + // color是0xARGB格式,比如0xFFFF0000(红)→ 反色0xFF00FFFF(青) + uint32_t alpha = (color & 0xFF000000); // 保留透明度 + uint32_t rgb = color & 0x00FFFFFF; // 提取RGB部分 + return alpha | (~rgb & 0x00FFFFFF); // RGB反色,保留透明度 +} + +void SetComponentForceDark(ArkUI_NodeHandle &text5) +{ + //进入text页面会打印信息 + ArkUI_ContextHandle uiCtx = OH_ArkUI_GetContextByNode(text5); + // 直接调用接口:上下文+开启反色+所有组件生效+自定义算法 + int32_t ret = OH_ArkUI_SetForceDarkConfig(uiCtx, // UI上下文 + true, // 开启反色 + ARKUI_NODE_UNDEFINED, // 所有组件生效 + MyInvertColor); + if (ret == ARKUI_ERROR_CODE_NO_ERROR) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "反色设置成功"); + } else { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "反色设置失败"); + } +} + +void measuredInfo(ArkUI_NodeHandle &component) +{ + // 设置组件宽高 + //进入text页面会打印信息 + int32_t setMeasured = Manager::nodeAPI_->setMeasuredSize(component, VALUE_100, VALUE_100); + if (setMeasured == ARKUI_ERROR_CODE_NO_ERROR) { + OH_LOG_Print(LOG_APP, LOG_INFO, 0xFF00, "manager", "设置尺寸成功"); + } + // 创建约束尺寸 + ArkUI_LayoutConstraint *Constraint = OH_ArkUI_LayoutConstraint_Create(); + // 设置最大高度 + OH_ArkUI_LayoutConstraint_SetMaxHeight(Constraint, VALUE_100); + // 获取组件宽高 + ArkUI_IntSize getMeasured = Manager::nodeAPI_->getMeasuredSize(component); +} + +void setUIVal(ArkUI_NodeHandle &textContainer) +{ + ArkUI_NodeHandle text1 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle text2 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle text3 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle text4 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle text5 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle textInput1 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_INPUT); + ArkUI_NodeHandle textInput2 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_INPUT); + ArkUI_NodeHandle textInput3 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_INPUT); + ArkUI_NodeHandle textArea1 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_AREA); + ArkUI_NodeHandle textArea2 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_AREA); + ArkUI_NodeHandle textArea3 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_AREA); + ArkUI_NodeHandle accessibilityLabel = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle customSpan = Manager::nodeAPI_->createNode(ARKUI_NODE_CUSTOM_SPAN); + ArkUI_NodeHandle text6 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle text7 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + measuredInfo(text4); + setText1(text1); + setText2(text2); + setText3(text3); + setText4(text4); + setText5(text5); + setText6(text6); + setTextInput1(textInput1); + setTextInput2(textInput2); + setTextInput3(textInput3); + setTextArea1(textArea1); + setTextArea2(textArea2); + setTextArea3(textArea3); + setAccessibility(accessibilityLabel); + setText7(text7); + RunTaskInUIContext(text5); + SetComponentForceDark(text5); + Manager::nodeAPI_->addChild(textContainer, text1); + Manager::nodeAPI_->addChild(textContainer, text2); + Manager::nodeAPI_->addChild(textContainer, text3); + Manager::nodeAPI_->addChild(textContainer, text4); + Manager::nodeAPI_->addChild(textContainer, text5); + Manager::nodeAPI_->addChild(textContainer, textInput1); + Manager::nodeAPI_->addChild(textContainer, textInput2); + Manager::nodeAPI_->addChild(textContainer, textInput3); + Manager::nodeAPI_->addChild(textContainer, textArea1); + Manager::nodeAPI_->addChild(textContainer, textArea2); + Manager::nodeAPI_->addChild(textContainer, textArea3); + Manager::nodeAPI_->addChild(textContainer, accessibilityLabel); + Manager::nodeAPI_->addChild(textContainer, customSpan); + Manager::nodeAPI_->addChild(textContainer, text6); + Manager::nodeAPI_->addChild(textContainer, text7); +} + +ArkUI_NodeHandle TextMaker::createTextPage() +{ + ArkUI_NodeHandle scroll = Manager::nodeAPI_->createNode(ARKUI_NODE_SCROLL); + ArkUI_NodeHandle textContainer = Manager::nodeAPI_->createNode(ARKUI_NODE_COLUMN); + ArkUI_NumberValue colWidth[] = {{.f32 = VALUE_400}}; + ArkUI_AttributeItem widthItem = {.value = colWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(textContainer, NODE_WIDTH, &widthItem); + setUIVal(textContainer); + Manager::nodeAPI_->addChild(scroll, textContainer); + return scroll; +} \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h new file mode 100644 index 000000000..d6e24e3a9 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/TextMaker.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_TYPE_SAMPLE_SWIPERMAKER_H +#define NATIVE_TYPE_SAMPLE_SWIPERMAKER_H + +#include "manager.h" + +class TextMaker { +public: + TextMaker(){}; + ~TextMaker(){}; + static ArkUI_NodeHandle createTextPage(); +}; + +#endif // NATIVE_TYPE_SAMPLE_SWIPERMAKER_H diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/baseUtils.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/baseUtils.cpp new file mode 100644 index 000000000..ad12a5b4d --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/baseUtils.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "baseUtils.h" +#include "TextMaker.h" + +namespace ConstIde { + const uint32_t NUMBER_0 = 0; + const uint32_t NUMBER_1 = 1; + const uint32_t NUMBER_2 = 2; + const uint32_t MARGIN_NUMBER_30 = 30; +} + +void BaseUtils::SetNodeMargin(ArkUI_NodeHandle &node, float margin) +{ + ArkUI_NumberValue value[ConstIde::NUMBER_1]; + ArkUI_AttributeItem item = {.value = value, .size = ConstIde::NUMBER_1}; + value[ConstIde::NUMBER_0].f32 = margin; + Manager::nodeAPI_->setAttribute(node, NODE_MARGIN, &item); +} + +void BaseUtils::SetNodeBackGroundColor(ArkUI_NodeHandle &node, uint32_t color) +{ + ArkUI_NumberValue value[ConstIde::NUMBER_1]; + ArkUI_AttributeItem item = {.value = value, .size = ConstIde::NUMBER_1}; + value[ConstIde::NUMBER_0].u32 = color; + Manager::nodeAPI_->setAttribute(node, NODE_BACKGROUND_COLOR, &item); +} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/baseUtils.h b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/baseUtils.h similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/baseUtils.h rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/baseUtils.h diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/manager.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp similarity index 92% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/manager.cpp rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp index 775734b37..b7abd35af 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/manager.cpp +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.cpp @@ -14,7 +14,7 @@ */ #include "manager.h" -#include "SwiperMaker.h" +#include "TextMaker.h" #include "baseUtils.h" #include "napi/native_api.h" #include @@ -34,7 +34,7 @@ Manager Manager::manager_; ArkUI_NativeNodeAPI_1 *Manager::nodeAPI_ = reinterpret_cast( OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1")); -napi_value Manager::CreateNativeSwiperNode(napi_env env, napi_callback_info info) +napi_value Manager::CreateNativeTextNode(napi_env env, napi_callback_info info) { OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode BEGIN"); if ((env == nullptr) || (info == nullptr)) { @@ -54,7 +54,7 @@ napi_value Manager::CreateNativeSwiperNode(napi_env env, napi_callback_info info OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "OH_ArkUI_GetBasicNodeAPI after"); if (nodeAPI_ != nullptr) { if (nodeAPI_->createNode != nullptr && nodeAPI_->addChild != nullptr) { - ArkUI_NodeHandle testNode = SwiperMaker::createSwiperPage(); + ArkUI_NodeHandle testNode = TextMaker::createTextPage(); OH_ArkUI_NodeContent_AddNode(nodeContentHandle, testNode); } } diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h new file mode 100644 index 000000000..f152ab2f7 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/manager.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_NODE_NAPI_SAMPLE_MANAGER_H +#define NATIVE_NODE_NAPI_SAMPLE_MANAGER_H + +#include +#include +#include +#include +#include +#include +#include +#include + +const unsigned int LOG_PRINT_DOMAIN = 0xFF00; +class Manager { +public: + static ArkUI_NativeNodeAPI_1 *nodeAPI_; + ~Manager(){}; + + static napi_value CreateNativeTextNode(napi_env env, napi_callback_info info); + +private: + static Manager manager_; +}; + +#endif // NATIVE_NODE_NAPI_SAMPLE_MANAGER_H diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp new file mode 100644 index 000000000..bd65cea63 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/napi_init.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "manager.h" +#include + +EXTERN_C_START +static napi_value Init(napi_env env, napi_value exports) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Init", "Init begins"); + if ((env == nullptr) || (exports == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Init", "env or exports is null"); + return nullptr; + } + + napi_property_descriptor desc[] = { + {"createNativeTextNode", nullptr, Manager::CreateNativeTextNode, nullptr, nullptr, nullptr, napi_default, + nullptr}, + // 参考新增其他createNative方法和Maker类 + }; + + if (napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Init", "napi_define_properties failed"); + return nullptr; + } + return exports; +} +EXTERN_C_END + +static napi_module demoModule = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "entry", + .nm_priv = ((void *)0), + .reserved = {0}, +}; + +extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); } \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/types/libentry/Index.d.ts b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts similarity index 90% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/types/libentry/Index.d.ts rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts index d130e9cb3..e45a977ac 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/types/libentry/Index.d.ts +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/Index.d.ts @@ -13,4 +13,4 @@ * limitations under the License. */ -export const createNativeSwiperNode: (content: Object) =>void; \ No newline at end of file +export const createNativeTextNode: (content: Object) =>void; \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/cpp/types/libentry/oh-package.json5 b/ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/oh-package.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/cpp/types/libentry/oh-package.json5 rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/cpp/types/libentry/oh-package.json5 diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/entryability/EntryAbility.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/entryability/EntryAbility.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/entryability/EntryAbility.ets rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/entryability/EntryAbility.ets diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets new file mode 100644 index 000000000..bc0367fc4 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { router } from '@kit.ArkUI'; + +interface ListCategories { + title: string, + url: string +} + +@Entry +@Component +struct MenuIndex { + private items: ListCategories[] = + [ + { title: 'Text', url: 'pages/page_text' }, + { title: 'add your router', url: '' }, + ]; + + build() { + Scroll(new Scroller()) { + Column() { + Text('native_node_sample') + .fontWeight(FontWeight.Bold) + .fontSize('20vp') + .textAlign(TextAlign.Center) + .height('5%') + .margin($r('sys.float.titlebar_title_margin_right')) + List() { + ForEach(this.items, (item: ListCategories) => { + ListItem() { + Row() { + Text(item.title) + .fontSize($r('sys.float.text_button_font_size')) + .fontColor(Color.Black) + .textAlign(TextAlign.Start) + .height('100%') + .width('50%') + .padding($r('sys.float.padding_level10')) + Text('>') + .fontSize('25vp') + .fontColor(Color.Black) + .textAlign(TextAlign.End) + .fontColor(Color.Gray) + .height('100%') + .width('50%') + .padding($r('sys.float.padding_level10')) + } + .width('100%') + .height('10%') + .borderRadius($r('sys.float.select_border_radius_default')) + .backgroundColor(Color.White) + .onClick(() => { + router.pushUrl({ url: item.url }) + }) + }.margin($r('sys.float.menu_item_content_align')) + }) + }.width('95%').height('90%').alignListItem(ListItemAlign.Center) + }.width('100%') + }.height('100%').backgroundColor($r('app.color.background_color')) + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_text.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_text.ets new file mode 100644 index 000000000..f56f9e8c7 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/ets/pages/page_text.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Napi from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Entry +@Component +struct Index { + private nodeContent = new NodeContent(); + aboutToAppear() { + // 通过C-API创建节点,并添加到管理器nodeContent上 + Napi.createNativeTextNode(this.nodeContent); + } + build() { + Column() { + ContentSlot(this.nodeContent) + } + .width('100%') + .height('100%') + } +} diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/module.json5 b/ArkUIKit/NativeNodeBaseSample/entry/src/main/module.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/module.json5 rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/module.json5 diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/element/color.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/element/color.json similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/element/color.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/element/color.json diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/element/float.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/element/float.json similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/element/float.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/element/float.json diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/element/string.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/element/string.json similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/element/string.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/element/string.json diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/background.png b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/background.png similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/background.png rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/background.png diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/foreground.png b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/foreground.png similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/foreground.png rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/foreground.png diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/layered_image.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/layered_image.json similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/layered_image.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/layered_image.json diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/startIcon.png b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/startIcon.png similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/media/startIcon.png rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/media/startIcon.png diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/profile/backup_config.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/backup_config.json similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/entry/src/main/resources/base/profile/backup_config.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/backup_config.json diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/profile/main_pages.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json similarity index 61% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/profile/main_pages.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json index ef2cbe9a4..17e8e7cb8 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/base/profile/main_pages.json +++ b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/base/profile/main_pages.json @@ -1,6 +1,6 @@ { "src": [ "pages/Index", - "pages/page_swiper" + "pages/page_text" ] } diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/dark/element/color.json b/ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/dark/element/color.json similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/resources/dark/element/color.json rename to ArkUIKit/NativeNodeBaseSample/entry/src/main/resources/dark/element/color.json diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/ohosTest/ets/test/Ability.test.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/ohosTest/ets/test/Ability.test.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/ohosTest/ets/test/Ability.test.ets rename to ArkUIKit/NativeNodeBaseSample/entry/src/ohosTest/ets/test/Ability.test.ets diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/ohosTest/ets/test/List.test.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/ohosTest/ets/test/List.test.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/ohosTest/ets/test/List.test.ets rename to ArkUIKit/NativeNodeBaseSample/entry/src/ohosTest/ets/test/List.test.ets diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/ohosTest/module.json5 b/ArkUIKit/NativeNodeBaseSample/entry/src/ohosTest/module.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/ohosTest/module.json5 rename to ArkUIKit/NativeNodeBaseSample/entry/src/ohosTest/module.json5 diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/test/List.test.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/test/List.test.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/test/List.test.ets rename to ArkUIKit/NativeNodeBaseSample/entry/src/test/List.test.ets diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/test/LocalUnit.test.ets b/ArkUIKit/NativeNodeBaseSample/entry/src/test/LocalUnit.test.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/test/LocalUnit.test.ets rename to ArkUIKit/NativeNodeBaseSample/entry/src/test/LocalUnit.test.ets diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/hvigor/hvigor-config.json5 b/ArkUIKit/NativeNodeBaseSample/hvigor/hvigor-config.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/hvigor/hvigor-config.json5 rename to ArkUIKit/NativeNodeBaseSample/hvigor/hvigor-config.json5 diff --git a/ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/hvigorfile.ts b/ArkUIKit/NativeNodeBaseSample/hvigorfile.ts similarity index 100% rename from ArkUIKit/CapiSample/NativeNodeNapi/native_node_napi/hvigorfile.ts rename to ArkUIKit/NativeNodeBaseSample/hvigorfile.ts diff --git a/ArkUIKit/NativeNodeBaseSample/log.txt b/ArkUIKit/NativeNodeBaseSample/log.txt new file mode 100644 index 000000000..1a39aab2c --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/log.txt @@ -0,0 +1,642 @@ +16:01:36:072 log task queue not empty +16:01:36:073 log task size: 1 +16:01:36:073 log before pop task size: 1 +16:01:36:074 log after task size: 0 +16:01:36:386 log task queue not empty +16:01:36:386 log task size: 1 +16:01:36:386 log before pop task size: 1 +16:01:36:386 log after task size: 0 +16:01:36:576 log timer task size: 1 +16:01:36:648 log task queue not empty +16:01:36:649 log task size: 1 +16:01:36:649 log before pop task size: 1 +16:01:36:649 log after task size: 0 +16:01:36:893 log timer task size: 1 +16:01:37:160 log timer task size: 1 +16:01:37:947 log task queue not empty +16:01:37:948 log task size: 1 +16:01:37:948 log before pop task size: 1 +16:01:37:948 log after task size: 0 +16:01:38:106 log task queue not empty +16:01:38:107 log task size: 1 +16:01:38:107 log before pop task size: 1 +16:01:38:107 log after task size: 0 +16:01:38:458 log timer task size: 1 +16:01:38:616 log timer task size: 1 +16:01:38:728 log task queue not empty +16:01:38:729 log task size: 1 +16:01:38:729 log before pop task size: 1 +16:01:38:729 log after task size: 0 +16:01:39:232 log timer task size: 1 +16:06:36:691 log task queue not empty +16:06:36:691 log task size: 1 +16:06:36:691 log before pop task size: 1 +16:06:36:692 log after task size: 0 +16:06:36:875 log task queue not empty +16:06:36:876 log task size: 1 +16:06:36:877 log before pop task size: 1 +16:06:36:877 log after task size: 0 +16:06:36:997 log task queue not empty +16:06:36:997 log task size: 1 +16:06:36:997 log before pop task size: 1 +16:06:36:998 log after task size: 0 +16:06:37:139 log task queue not empty +16:06:37:140 log task size: 1 +16:06:37:140 log before pop task size: 1 +16:06:37:140 log after task size: 0 +16:06:37:203 log timer task size: 1 +16:06:37:275 log task queue not empty +16:06:37:276 log task size: 1 +16:06:37:276 log before pop task size: 1 +16:06:37:276 log after task size: 0 +16:06:37:394 log timer task size: 1 +16:06:37:503 log timer task size: 1 +16:06:37:579 log task queue not empty +16:06:37:579 log task size: 1 +16:06:37:579 log before pop task size: 1 +16:06:37:580 log after task size: 0 +16:06:37:644 log timer task size: 1 +16:06:37:785 log timer task size: 1 +16:06:38:086 log timer task size: 1 +16:06:38:196 log task queue not empty +16:06:38:196 log task size: 1 +16:06:38:196 log before pop task size: 1 +16:06:38:196 log after task size: 0 +16:06:38:440 log task queue not empty +16:06:38:441 log task size: 1 +16:06:38:442 log before pop task size: 1 +16:06:38:443 log after task size: 0 +16:06:38:666 log task queue not empty +16:06:38:666 log task size: 1 +16:06:38:667 log before pop task size: 1 +16:06:38:667 log after task size: 0 +16:06:38:702 log timer task size: 1 +16:06:38:874 log task queue not empty +16:06:38:874 log task size: 1 +16:06:38:874 log before pop task size: 1 +16:06:38:874 log after task size: 0 +16:06:38:953 log timer task size: 1 +16:06:39:174 log timer task size: 1 +16:06:39:377 log timer task size: 1 +16:06:42:082 log task queue not empty +16:06:42:082 log task size: 1 +16:06:42:083 log before pop task size: 1 +16:06:42:083 log after task size: 0 +16:06:42:201 log task queue not empty +16:06:42:201 log task size: 1 +16:06:42:201 log before pop task size: 1 +16:06:42:202 log after task size: 0 +16:06:42:381 log task queue not empty +16:06:42:381 log task size: 1 +16:06:42:381 log before pop task size: 1 +16:06:42:382 log after task size: 0 +16:06:42:514 log task queue not empty +16:06:42:514 log task size: 1 +16:06:42:515 log before pop task size: 1 +16:06:42:515 log after task size: 0 +16:06:42:598 log timer task size: 1 +16:06:42:654 log task queue not empty +16:06:42:654 log task size: 1 +16:06:42:654 log before pop task size: 1 +16:06:42:654 log after task size: 0 +16:06:42:707 log timer task size: 1 +16:06:42:898 log timer task size: 1 +16:06:42:954 log task queue not empty +16:06:42:954 log task size: 1 +16:06:42:954 log before pop task size: 1 +16:06:42:954 log after task size: 0 +16:06:43:023 log timer task size: 1 +16:06:43:162 log timer task size: 1 +16:06:43:464 log timer task size: 1 +16:06:44:098 log task queue not empty +16:06:44:099 log task size: 1 +16:06:44:099 log before pop task size: 1 +16:06:44:099 log after task size: 0 +16:06:44:280 log task queue not empty +16:06:44:280 log task size: 1 +16:06:44:280 log before pop task size: 1 +16:06:44:281 log after task size: 0 +16:06:44:493 log task queue not empty +16:06:44:494 log task size: 1 +16:06:44:494 log before pop task size: 1 +16:06:44:494 log after task size: 0 +16:06:44:612 log timer task size: 1 +16:06:44:692 log task queue not empty +16:06:44:693 log task size: 1 +16:06:44:693 log before pop task size: 1 +16:06:44:693 log after task size: 0 +16:06:44:785 log timer task size: 1 +16:06:45:006 log timer task size: 1 +16:06:45:198 log timer task size: 1 +16:06:47:624 log task queue not empty +16:06:47:624 log task size: 1 +16:06:47:624 log before pop task size: 1 +16:06:47:624 log after task size: 0 +16:06:47:774 log task queue not empty +16:06:47:774 log task size: 1 +16:06:47:774 log before pop task size: 1 +16:06:47:774 log after task size: 0 +16:06:47:921 log task queue not empty +16:06:47:921 log task size: 1 +16:06:47:921 log before pop task size: 1 +16:06:47:922 log after task size: 0 +16:06:48:071 log task queue not empty +16:06:48:072 log task size: 1 +16:06:48:072 log before pop task size: 1 +16:06:48:072 log after task size: 0 +16:06:48:139 log timer task size: 1 +16:06:48:233 log task queue not empty +16:06:48:234 log task size: 1 +16:06:48:234 log before pop task size: 1 +16:06:48:234 log after task size: 0 +16:06:48:278 log timer task size: 1 +16:06:48:435 log timer task size: 1 +16:06:48:493 log task queue not empty +16:06:48:493 log task size: 1 +16:06:48:493 log before pop task size: 1 +16:06:48:494 log after task size: 0 +16:06:48:579 log timer task size: 1 +16:06:48:737 log timer task size: 1 +16:06:49:008 log timer task size: 1 +16:06:49:050 log task queue not empty +16:06:49:050 log task size: 1 +16:06:49:050 log before pop task size: 1 +16:06:49:050 log after task size: 0 +16:06:49:243 log task queue not empty +16:06:49:243 log task size: 1 +16:06:49:246 log before pop task size: 1 +16:06:49:246 log after task size: 0 +16:06:49:488 log task queue not empty +16:06:49:488 log task size: 1 +16:06:49:489 log before pop task size: 1 +16:06:49:489 log after task size: 0 +16:06:49:561 log timer task size: 1 +16:06:49:749 log timer task size: 1 +16:06:49:784 log task queue not empty +16:06:49:784 log task size: 1 +16:06:49:785 log before pop task size: 1 +16:06:49:785 log after task size: 0 +16:06:50:002 log timer task size: 1 +16:06:50:288 log timer task size: 1 +16:08:45:925 log task queue not empty +16:08:45:925 log task size: 1 +16:08:45:926 log before pop task size: 1 +16:08:45:926 log after task size: 0 +16:08:46:431 log timer task size: 1 +16:11:07:398 log task queue not empty +16:11:07:399 log task size: 1 +16:11:07:399 log before pop task size: 1 +16:11:07:399 log after task size: 0 +16:11:07:903 log timer task size: 1 +16:11:08:516 log task queue not empty +16:11:08:516 log task size: 1 +16:11:08:517 log before pop task size: 1 +16:11:08:517 log after task size: 0 +16:11:09:019 log timer task size: 1 +16:11:16:662 log task queue not empty +16:11:16:662 log task size: 1 +16:11:16:662 log before pop task size: 1 +16:11:16:663 log after task size: 0 +16:11:16:665 log task queue not empty +16:11:16:665 log task size: 1 +16:11:16:665 log before pop task size: 1 +16:11:16:665 log after task size: 0 +16:11:16:871 log task queue not empty +16:11:16:871 log task size: 1 +16:11:16:872 log before pop task size: 1 +16:11:16:872 log after task size: 0 +16:11:17:110 log task queue not empty +16:11:17:110 log task size: 1 +16:11:17:111 log before pop task size: 1 +16:11:17:111 log after task size: 0 +16:11:17:169 log timer task size: 1 +16:11:17:318 log task queue not empty +16:11:17:318 log task size: 1 +16:11:17:319 log before pop task size: 1 +16:11:17:319 log after task size: 0 +16:11:17:373 log timer task size: 1 +16:11:17:626 log timer task size: 1 +16:11:17:830 log timer task size: 1 +16:11:24:501 log task queue not empty +16:11:24:501 log task size: 1 +16:11:24:501 log before pop task size: 1 +16:11:24:501 log after task size: 0 +16:11:25:015 log timer task size: 1 +16:11:26:299 log task queue not empty +16:11:26:299 log task size: 1 +16:11:26:299 log before pop task size: 1 +16:11:26:300 log after task size: 0 +16:11:26:813 log timer task size: 1 +16:11:28:189 log task queue not empty +16:11:28:189 log task size: 1 +16:11:28:190 log before pop task size: 1 +16:11:28:190 log after task size: 0 +16:11:28:697 log timer task size: 1 +16:11:30:930 log task queue not empty +16:11:30:930 log task size: 1 +16:11:30:930 log before pop task size: 1 +16:11:30:931 log after task size: 0 +16:11:31:431 log timer task size: 1 +16:11:33:229 log task queue not empty +16:11:33:230 log task size: 1 +16:11:33:230 log before pop task size: 1 +16:11:33:230 log after task size: 0 +16:11:33:734 log timer task size: 1 +16:13:21:847 log task queue not empty +16:13:21:848 log task size: 1 +16:13:21:848 log before pop task size: 1 +16:13:21:848 log after task size: 0 +16:13:22:363 log timer task size: 1 +16:13:51:149 log task queue not empty +16:13:51:150 log task size: 1 +16:13:51:150 log before pop task size: 1 +16:13:51:150 log after task size: 0 +16:13:51:152 log task queue not empty +16:13:51:152 log task size: 1 +16:13:51:152 log before pop task size: 1 +16:13:51:153 log after task size: 0 +16:13:51:240 log task queue not empty +16:13:51:241 log task size: 1 +16:13:51:241 log before pop task size: 1 +16:13:51:241 log after task size: 0 +16:13:51:554 log task queue not empty +16:13:51:554 log task size: 1 +16:13:51:554 log before pop task size: 1 +16:13:51:555 log after task size: 0 +16:13:51:656 log timer task size: 1 +16:13:51:750 log timer task size: 1 +16:13:51:763 log task queue not empty +16:13:51:764 log task size: 1 +16:13:51:764 log before pop task size: 1 +16:13:51:764 log after task size: 0 +16:13:52:068 log timer task size: 1 +16:13:52:273 log timer task size: 1 +16:13:56:946 log task queue not empty +16:13:56:946 log task size: 1 +16:13:56:947 log before pop task size: 1 +16:13:56:947 log after task size: 0 +16:13:57:454 log timer task size: 1 +16:13:58:519 log task queue not empty +16:13:58:519 log task size: 1 +16:13:58:519 log before pop task size: 1 +16:13:58:519 log after task size: 0 +16:13:59:022 log timer task size: 1 +16:13:59:298 log task queue not empty +16:13:59:298 log task size: 1 +16:13:59:298 log before pop task size: 1 +16:13:59:298 log after task size: 0 +16:13:59:808 log timer task size: 1 +16:14:00:342 log task queue not empty +16:14:00:343 log task size: 1 +16:14:00:343 log before pop task size: 1 +16:14:00:343 log after task size: 0 +16:14:00:847 log timer task size: 1 +16:14:01:145 log task queue not empty +16:14:01:145 log task size: 1 +16:14:01:146 log before pop task size: 1 +16:14:01:146 log after task size: 0 +16:14:01:653 log timer task size: 1 +16:14:01:956 log task queue not empty +16:14:01:957 log task size: 1 +16:14:01:957 log before pop task size: 1 +16:14:01:957 log after task size: 0 +16:14:02:471 log timer task size: 1 +16:31:37:896 log task queue not empty +16:31:37:897 log task size: 1 +16:31:37:897 log before pop task size: 1 +16:31:37:897 log after task size: 0 +16:31:38:410 log timer task size: 1 +16:32:53:971 log task queue not empty +16:32:53:972 log task size: 1 +16:32:53:972 log before pop task size: 1 +16:32:53:972 log after task size: 0 +16:32:54:479 log timer task size: 1 +16:32:54:831 log task queue not empty +16:32:54:832 log task size: 1 +16:32:54:832 log before pop task size: 1 +16:32:54:833 log after task size: 0 +16:32:54:999 log task queue not empty +16:32:55:000 log task size: 1 +16:32:55:000 log before pop task size: 1 +16:32:55:000 log after task size: 0 +16:32:55:155 log task queue not empty +16:32:55:155 log task size: 1 +16:32:55:156 log before pop task size: 1 +16:32:55:156 log after task size: 0 +16:32:55:276 log task queue not empty +16:32:55:276 log task size: 1 +16:32:55:276 log before pop task size: 1 +16:32:55:277 log after task size: 0 +16:32:55:343 log timer task size: 1 +16:32:55:516 log timer task size: 1 +16:32:55:658 log timer task size: 1 +16:32:55:781 log timer task size: 1 +16:32:56:423 log task queue not empty +16:32:56:423 log task size: 1 +16:32:56:424 log before pop task size: 1 +16:32:56:424 log after task size: 0 +16:32:56:734 log task queue not empty +16:32:56:734 log task size: 1 +16:32:56:735 log before pop task size: 1 +16:32:56:735 log after task size: 0 +16:32:56:842 log task queue not empty +16:32:56:843 log task size: 1 +16:32:56:843 log before pop task size: 1 +16:32:56:843 log after task size: 0 +16:32:56:926 log timer task size: 1 +16:32:56:990 log task queue not empty +16:32:56:991 log task size: 1 +16:32:56:991 log before pop task size: 1 +16:32:56:991 log after task size: 0 +16:32:57:243 log timer task size: 1 +16:32:57:354 log timer task size: 1 +16:32:57:424 log task queue not empty +16:32:57:424 log task size: 1 +16:32:57:424 log before pop task size: 1 +16:32:57:424 log after task size: 0 +16:32:57:494 log timer task size: 1 +16:32:57:935 log timer task size: 1 +16:33:18:834 log task queue not empty +16:33:18:835 log task size: 1 +16:33:18:835 log before pop task size: 1 +16:33:18:835 log after task size: 0 +16:33:19:023 log task queue not empty +16:33:19:024 log task size: 1 +16:33:19:024 log before pop task size: 1 +16:33:19:024 log after task size: 0 +16:33:19:220 log task queue not empty +16:33:19:220 log task size: 1 +16:33:19:221 log before pop task size: 1 +16:33:19:221 log after task size: 0 +16:33:19:293 log task queue not empty +16:33:19:293 log task size: 1 +16:33:19:293 log before pop task size: 1 +16:33:19:293 log after task size: 0 +16:33:19:343 log timer task size: 1 +16:33:19:402 log task queue not empty +16:33:19:403 log task size: 1 +16:33:19:403 log before pop task size: 1 +16:33:19:403 log after task size: 0 +16:33:19:529 log timer task size: 1 +16:33:19:734 log timer task size: 1 +16:33:19:798 log timer task size: 1 +16:33:19:906 log timer task size: 1 +16:33:21:294 log task queue not empty +16:33:21:295 log task size: 1 +16:33:21:295 log before pop task size: 1 +16:33:21:295 log after task size: 0 +16:33:21:806 log timer task size: 1 +16:33:21:971 log task queue not empty +16:33:21:972 log task size: 1 +16:33:21:972 log before pop task size: 1 +16:33:21:972 log after task size: 0 +16:33:22:147 log task queue not empty +16:33:22:147 log task size: 1 +16:33:22:147 log before pop task size: 1 +16:33:22:147 log after task size: 0 +16:33:22:476 log timer task size: 1 +16:33:22:592 log task queue not empty +16:33:22:593 log task size: 1 +16:33:22:593 log before pop task size: 1 +16:33:22:593 log after task size: 0 +16:33:22:648 log timer task size: 1 +16:33:22:689 log task queue not empty +16:33:22:690 log task size: 1 +16:33:22:690 log before pop task size: 1 +16:33:22:690 log after task size: 0 +16:33:22:798 log task queue not empty +16:33:22:799 log task size: 1 +16:33:22:799 log before pop task size: 1 +16:33:22:799 log after task size: 0 +16:33:23:069 log task queue not empty +16:33:23:070 log task size: 1 +16:33:23:070 log before pop task size: 1 +16:33:23:070 log after task size: 0 +16:33:23:103 log timer task size: 1 +16:33:23:197 log timer task size: 1 +16:33:23:240 log task queue not empty +16:33:23:240 log task size: 1 +16:33:23:240 log before pop task size: 1 +16:33:23:241 log after task size: 0 +16:33:23:310 log timer task size: 1 +16:33:23:401 log task queue not empty +16:33:23:401 log task size: 1 +16:33:23:401 log before pop task size: 1 +16:33:23:401 log after task size: 0 +16:33:23:576 log timer task size: 1 +16:33:23:749 log timer task size: 1 +16:33:23:813 log task queue not empty +16:33:23:813 log task size: 1 +16:33:23:813 log before pop task size: 1 +16:33:23:814 log after task size: 0 +16:33:23:906 log timer task size: 1 +16:33:24:175 log task queue not empty +16:33:24:176 log task size: 1 +16:33:24:177 log before pop task size: 1 +16:33:24:178 log after task size: 0 +16:33:24:314 log timer task size: 1 +16:33:24:384 log task queue not empty +16:33:24:384 log task size: 1 +16:33:24:385 log before pop task size: 1 +16:33:24:385 log after task size: 0 +16:33:24:543 log task queue not empty +16:33:24:544 log task size: 1 +16:33:24:544 log before pop task size: 1 +16:33:24:544 log after task size: 0 +16:33:24:652 log task queue not empty +16:33:24:653 log task size: 1 +16:33:24:653 log before pop task size: 1 +16:33:24:653 log after task size: 0 +16:33:24:694 log timer task size: 1 +16:33:24:900 log timer task size: 1 +16:33:25:056 log timer task size: 1 +16:33:25:084 log task queue not empty +16:33:25:086 log task size: 1 +16:33:25:086 log before pop task size: 1 +16:33:25:087 log after task size: 0 +16:33:25:146 log task queue not empty +16:33:25:146 log task size: 1 +16:33:25:146 log before pop task size: 1 +16:33:25:146 log after task size: 0 +16:33:25:168 log timer task size: 1 +16:33:25:597 log timer task size: 1 +16:33:25:660 log timer task size: 1 +16:33:27:073 log task queue not empty +16:33:27:074 log task size: 1 +16:33:27:074 log before pop task size: 1 +16:33:27:075 log after task size: 0 +16:33:27:299 log task queue not empty +16:33:27:300 log task size: 1 +16:33:27:300 log before pop task size: 1 +16:33:27:300 log after task size: 0 +16:33:27:473 log task queue not empty +16:33:27:473 log task size: 1 +16:33:27:474 log before pop task size: 1 +16:33:27:474 log after task size: 0 +16:33:27:581 log timer task size: 1 +16:33:27:660 log task queue not empty +16:33:27:660 log task size: 1 +16:33:27:661 log before pop task size: 1 +16:33:27:661 log after task size: 0 +16:33:27:816 log timer task size: 1 +16:33:27:989 log timer task size: 1 +16:33:28:164 log timer task size: 1 +16:33:29:769 log task queue not empty +16:33:29:769 log task size: 1 +16:33:29:769 log before pop task size: 1 +16:33:29:769 log after task size: 0 +16:33:30:066 log task queue not empty +16:33:30:066 log task size: 1 +16:33:30:066 log before pop task size: 1 +16:33:30:067 log after task size: 0 +16:33:30:144 log task queue not empty +16:33:30:144 log task size: 1 +16:33:30:144 log before pop task size: 1 +16:33:30:145 log after task size: 0 +16:33:30:276 log timer task size: 1 +16:33:30:299 log task queue not empty +16:33:30:300 log task size: 1 +16:33:30:300 log before pop task size: 1 +16:33:30:300 log after task size: 0 +16:33:30:575 log timer task size: 1 +16:33:30:655 log timer task size: 1 +16:33:30:771 log task queue not empty +16:33:30:771 log task size: 1 +16:33:30:772 log before pop task size: 1 +16:33:30:772 log after task size: 0 +16:33:30:773 log task queue not empty +16:33:30:773 log task size: 1 +16:33:30:774 log before pop task size: 1 +16:33:30:774 log after task size: 0 +16:33:30:810 log timer task size: 1 +16:33:31:280 log timer task size: 1 +16:33:31:280 log timer task size: 1 +16:33:32:231 log task queue not empty +16:33:32:232 log task size: 1 +16:33:32:232 log before pop task size: 1 +16:33:32:232 log after task size: 0 +16:33:32:434 log task queue not empty +16:33:32:434 log task size: 1 +16:33:32:434 log before pop task size: 1 +16:33:32:434 log after task size: 0 +16:33:32:609 log task queue not empty +16:33:32:610 log task size: 1 +16:33:32:610 log before pop task size: 1 +16:33:32:610 log after task size: 0 +16:33:32:741 log timer task size: 1 +16:33:32:948 log timer task size: 1 +16:33:33:121 log timer task size: 1 +16:33:33:859 log task queue not empty +16:33:33:859 log task size: 1 +16:33:33:859 log before pop task size: 1 +16:33:33:859 log after task size: 0 +16:33:33:941 log task queue not empty +16:33:33:942 log task size: 1 +16:33:33:942 log before pop task size: 1 +16:33:33:942 log after task size: 0 +16:33:34:372 log timer task size: 1 +16:33:34:450 log timer task size: 1 +16:33:34:552 log task queue not empty +16:33:34:553 log task size: 1 +16:33:34:553 log before pop task size: 1 +16:33:34:553 log after task size: 0 +16:33:35:059 log timer task size: 1 +16:33:35:606 log task queue not empty +16:33:35:606 log task size: 1 +16:33:35:607 log before pop task size: 1 +16:33:35:607 log after task size: 0 +16:33:35:931 log task queue not empty +16:33:35:932 log task size: 1 +16:33:35:932 log before pop task size: 1 +16:33:35:932 log after task size: 0 +16:33:36:115 log timer task size: 1 +16:33:36:443 log timer task size: 1 +16:33:37:327 log task queue not empty +16:33:37:328 log task size: 1 +16:33:37:329 log before pop task size: 1 +16:33:37:329 log after task size: 0 +16:33:37:521 log task queue not empty +16:33:37:522 log task size: 1 +16:33:37:522 log before pop task size: 1 +16:33:37:523 log after task size: 0 +16:33:37:581 log task queue not empty +16:33:37:581 log task size: 1 +16:33:37:581 log before pop task size: 1 +16:33:37:582 log after task size: 0 +16:33:37:718 log task queue not empty +16:33:37:719 log task size: 1 +16:33:37:719 log before pop task size: 1 +16:33:37:719 log after task size: 0 +16:33:37:832 log timer task size: 1 +16:33:38:036 log timer task size: 1 +16:33:38:084 log timer task size: 1 +16:33:38:226 log timer task size: 1 +16:33:39:540 log task queue not empty +16:33:39:541 log task size: 1 +16:33:39:541 log before pop task size: 1 +16:33:39:541 log after task size: 0 +16:33:40:050 log timer task size: 1 +16:33:40:192 log task queue not empty +16:33:40:192 log task size: 1 +16:33:40:192 log before pop task size: 1 +16:33:40:192 log after task size: 0 +16:33:40:206 log task queue not empty +16:33:40:206 log task size: 1 +16:33:40:206 log before pop task size: 1 +16:33:40:207 log after task size: 0 +16:33:40:210 log task queue not empty +16:33:40:210 log task size: 1 +16:33:40:211 log before pop task size: 1 +16:33:40:211 log after task size: 0 +16:33:40:708 log timer task size: 1 +16:33:40:724 log timer task size: 1 +16:33:41:032 log task queue not empty +16:33:41:033 log task size: 1 +16:33:41:033 log before pop task size: 1 +16:33:41:033 log after task size: 0 +16:33:41:541 log timer task size: 1 +16:33:42:458 log task queue not empty +16:33:42:459 log task size: 1 +16:33:42:459 log before pop task size: 1 +16:33:42:459 log after task size: 0 +16:33:42:960 log timer task size: 1 +16:33:43:033 log task queue not empty +16:33:43:034 log task size: 1 +16:33:43:034 log before pop task size: 1 +16:33:43:035 log after task size: 0 +16:33:43:538 log timer task size: 1 +16:33:44:629 log task queue not empty +16:33:44:629 log task size: 1 +16:33:44:630 log before pop task size: 1 +16:33:44:630 log after task size: 0 +16:33:45:130 log timer task size: 1 +16:33:48:948 log task queue not empty +16:33:48:949 log task size: 1 +16:33:48:949 log before pop task size: 1 +16:33:48:949 log after task size: 0 +16:33:48:950 log task queue not empty +16:33:48:950 log task size: 1 +16:33:48:951 log before pop task size: 1 +16:33:48:951 log after task size: 0 +16:33:48:952 log task queue not empty +16:33:48:952 log task size: 1 +16:33:48:952 log before pop task size: 1 +16:33:48:953 log after task size: 0 +16:33:48:954 log task queue not empty +16:33:48:954 log task size: 1 +16:33:48:954 log before pop task size: 1 +16:33:48:955 log after task size: 0 +16:33:49:455 log timer task size: 1 +16:33:49:455 log timer task size: 1 +16:33:49:455 log timer task size: 1 +16:33:49:455 log timer task size: 1 +16:35:02:470 log task queue not empty +16:35:02:470 log task size: 1 +16:35:02:471 log before pop task size: 1 +16:35:02:471 log after task size: 0 +16:35:02:972 log timer task size: 1 +16:35:02:989 log task queue not empty +16:35:02:990 log task size: 1 +16:35:02:990 log before pop task size: 1 +16:35:02:991 log after task size: 0 +16:35:03:506 log timer task size: 1 diff --git a/ArkUIKit/NativeNodeBaseSample/oh-package.json5 b/ArkUIKit/NativeNodeBaseSample/oh-package.json5 new file mode 100644 index 000000000..346d7e239 --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/oh-package.json5 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +{ + "modelVersion": "5.0.5", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.21", + "@ohos/hamock": "1.0.0" + } +} diff --git a/ArkUIKit/NativeNodeBaseSample/ohosTest.md b/ArkUIKit/NativeNodeBaseSample/ohosTest.md new file mode 100644 index 000000000..bb401db8c --- /dev/null +++ b/ArkUIKit/NativeNodeBaseSample/ohosTest.md @@ -0,0 +1,8 @@ +# 测试用例归档 + +## 用例表 + +| 测试功能 | 预置条件 | 输入 | 预期显示 | 是否自动 | 测试结果 | +| ------------------------------ | ------------ |--------------------------------------------------------------------| ----------------------------------------------------------- | -------- | -------- | +| 启动应用 | 设备正常运行 | 1.开启开发板
2.编译hap包并将hap包及环境烧录进开发板,运行测试用例
| 成功拉起应用。 | 否 | 验证通过 | +| 文本组件及输入框功能展示 | 应用位于首页 | 1.text仅观察以及读取log 2.textinput、textarea均需要点击,输入,回车,撤销,粘贴等操作以及查看log信息 | 1. 页面展示多个文本、输入框及文本域组件2. 各组件样式符合代码配置,输入框可正常输入 | 否 | 验证通过 | diff --git a/ArkUIKit/NativeNodeBaseSample/screenshot/nativeNode.png b/ArkUIKit/NativeNodeBaseSample/screenshot/nativeNode.png new file mode 100644 index 0000000000000000000000000000000000000000..7b250284bb902a16be04e865b1a4f8a6e12422e1 GIT binary patch literal 129979 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

(DzT?leyM=FEWgr2>1L8&!$m*4UGMNOCiru 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 Z&%KxpCr_NYeHh?JOh{U=J4lDn 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 + +## 使用说明 +1. 安装编译生成的hap包,并打开应用; +2. 首页面会出现对应text选择框,点击选择框进入text界面; + + +## 工程目录 + +``` +Native_type_Sample +entry/src/main/ets/ +└── pages + ├── Index.ets (获取导航页面) + └── page_text.ets (文本界面) +entry/src/main/ +├── cpp +│ ├── types +│ │ └── libentry +│ │ └── Index.d.ts (函数对应的js映射) +│ ├── CMakeLists.txt (CMake脚本) +| ├── manager.cpp +| ├── manager.h +│ ├── napi_init.cpp +| ├── ....... +| ├── baseUtils.cpp +| ├── baseUtils.h +| ├── TextMaker.cpp +│ └── TextMaker.h +└── resources + ├── base + │ ├── element + │ │ ├── color.json + │ │ ├── float.json + │ │ └── string.json + │ └── media +``` + +## 相关权限 + +不涉及 + +## 依赖 + +不涉及 + +## 约束和限制 + +1. 本示例支持标准系统上运行,支持设备:RK3568; + +2. 本示例支持API20版本SDK,版本号:6.0.0.36; + +3. 本示例已支持使DevEco Studio 5.1.1 Release (构建版本:5.1.1.840,构建 2025年9月20日)编译运行 + +## 下载 + +如需单独下载本工程,执行如下命令: + +``` +git init +git config core.sparsecheckout true +echo code/DocsSample/NativeType/native_type_sample > .git/info/sparse-checkout +git remote add origin https://gitcode.com/openharmony/applications_app_samples.git +git pull origin master +``` \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/build-profile.json5 b/ArkUIKit/NativeTypeSample/build-profile.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/build-profile.json5 rename to ArkUIKit/NativeTypeSample/build-profile.json5 diff --git a/ArkUIKit/NativeTypeSample/code-linter.json5 b/ArkUIKit/NativeTypeSample/code-linter.json5 new file mode 100644 index 000000000..4c531be90 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/code-linter.json5 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + "@security/no-unsafe-aes": "error", + "@security/no-unsafe-hash": "error", + "@security/no-unsafe-mac": "warn", + "@security/no-unsafe-dh": "error", + "@security/no-unsafe-dsa": "error", + "@security/no-unsafe-ecdsa": "error", + "@security/no-unsafe-rsa-encrypt": "error", + "@security/no-unsafe-rsa-sign": "error", + "@security/no-unsafe-rsa-key": "error", + "@security/no-unsafe-dsa-key": "error", + "@security/no-unsafe-dh-key": "error", + "@security/no-unsafe-3des": "error" + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/.gitignore b/ArkUIKit/NativeTypeSample/entry/.gitignore new file mode 100644 index 000000000..e2713a277 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/build-profile.json5 b/ArkUIKit/NativeTypeSample/entry/build-profile.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/build-profile.json5 rename to ArkUIKit/NativeTypeSample/entry/build-profile.json5 diff --git a/ArkUIKit/NativeTypeSample/entry/hvigorfile.ts b/ArkUIKit/NativeTypeSample/entry/hvigorfile.ts new file mode 100644 index 000000000..10f881f11 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/hvigorfile.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/obfuscation-rules.txt b/ArkUIKit/NativeTypeSample/entry/obfuscation-rules.txt new file mode 100644 index 000000000..272efb6ca --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/oh-package.json5 b/ArkUIKit/NativeTypeSample/entry/oh-package.json5 new file mode 100644 index 000000000..9f254ab4d --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/oh-package.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + "libentry.so": "file:./src/main/cpp/types/libentry" + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/CMakeLists.txt b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/CMakeLists.txt new file mode 100644 index 000000000..3870e1647 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/CMakeLists.txt @@ -0,0 +1,20 @@ +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.5.0) +project(native_type_sample) + +set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + +include_directories(${NATIVERENDER_ROOT_PATH} + ${NATIVERENDER_ROOT_PATH}/include) + +add_library(entry SHARED napi_init.cpp manager.cpp baseUtils.cpp SwiperMaker.cpp TextMaker.cpp) + +find_library(hilog-lib hilog_ndk.z) + +find_library(libace-lib ace_ndk.z) + +find_library(libnapi-lib ace_napi.z) + + +target_link_libraries(entry PUBLIC ${hilog-lib} ${libace-lib} ${libnapi-lib}) +target_link_libraries(entry PUBLIC ${libace-lib} libace_napi.z.so libnative_drawing.so libhilog_ndk.z.so) \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/SwiperMaker.cpp b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/SwiperMaker.cpp similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/SwiperMaker.cpp rename to ArkUIKit/NativeTypeSample/entry/src/main/cpp/SwiperMaker.cpp diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/SwiperMaker.h b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/SwiperMaker.h similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/SwiperMaker.h rename to ArkUIKit/NativeTypeSample/entry/src/main/cpp/SwiperMaker.h diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.cpp b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.cpp new file mode 100644 index 000000000..b222d8652 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.cpp @@ -0,0 +1,405 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TextMaker.h" +#include "baseUtils.h" +#include "manager.h" +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "manager" +#define LOG_ERROR(...) OH_LOG_Print(LOG_APP, LOG_ERROR, 0xD001400, LOG_TAG, __VA_ARGS__) +#define VALUE_0 0 +#define VALUE_1 1 +#define VALUE_30 30 +#define VALUE_50 50 +#define VALUE_200 200 +#define VALUE_300 300 +#define VALUE_350 350 +#define VALUE_1024 1024 + +constexpr int32_t ON_ERROR_CODE_DEMO_106107 = 106107; // 参数下标越界 +constexpr int32_t ON_ERROR_CODE_DEMO_106109 = 106109; // 不支持返回值 + +typedef struct { + ArkUI_NodeHandle textNode; + ArkUI_NativeNodeAPI_1 *nodeApi; +} FontChangeCtx; + +void OnSystemFontChange(ArkUI_SystemFontStyleEvent *event, void *userData) +{ + if (event == nullptr || userData == nullptr) { + return; + } + FontChangeCtx *ctx = (FontChangeCtx *)userData; + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", "System font style changed!"); +} + +static void OnEventReceive(ArkUI_NodeEvent *event) +{ + if (event == nullptr) { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", "错误码: %d", ARKUI_ERROR_CODE_NODE_EVENT_PARAM_INVALID); + return; + } + int32_t eventId = OH_ArkUI_NodeEvent_GetTargetId(event); + ArkUI_NativeNodeAPI_1 *nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto nodeHandler = OH_ArkUI_NodeEvent_GetNodeHandle(event); + switch (eventId) { + // 参数下标越界 + case ON_ERROR_CODE_DEMO_106107: { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", "错误码: %d", + ARKUI_ERROR_CODE_NODE_EVENT_PARAM_INDEX_OUT_OF_RANGE); + return; + } + // 不支持返回值 + case ON_ERROR_CODE_DEMO_106109: { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", "错误码: %d", ARKUI_ERROR_CODE_NODE_EVENT_NO_RETURN); + return; + } + default: + break; + } +} + +void setBasicTextVal(ArkUI_NodeHandle &basicText) +{ + const char *textContent = + "这是一段包含字体样式、字重、对齐方式、不支持复制、超长时跑马灯显示、的文字,以及无障碍文本"; + ArkUI_AttributeItem contentItem = {.string = textContent}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_CONTENT, &contentItem); + + // 字体样式:斜体样式(ARKUI_FONT_STYLE_ITALIC) + ArkUI_NumberValue fontStyleVal = {.i32 = ARKUI_FONT_STYLE_ITALIC}; + ArkUI_AttributeItem fontStyleItem = {&fontStyleVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_FONT_STYLE, &fontStyleItem); + + // 字重:600(ARKUI_FONT_WEIGHT_W600) + ArkUI_NumberValue fontWeightVal = {.i32 = ARKUI_FONT_WEIGHT_W600}; + ArkUI_AttributeItem fontWeightItem = {&fontWeightVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_FONT_WEIGHT, &fontWeightItem); + + // 水平对齐:首部对齐(ARKUI_TEXT_ALIGNMENT_START) + ArkUI_NumberValue hAlignVal = {.i32 = ARKUI_TEXT_ALIGNMENT_START}; + ArkUI_AttributeItem hAlignItem = {&hAlignVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_ALIGN, &hAlignItem); + + // 垂直对齐:基线对齐(ARKUI_TEXT_VERTICAL_ALIGNMENT_BASELINE) + ArkUI_NumberValue vAlignVal = {.i32 = ARKUI_TEXT_VERTICAL_ALIGNMENT_BASELINE}; + ArkUI_AttributeItem vAlignItem = {&vAlignVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_VERTICAL_ALIGN, &vAlignItem); + + // 文本溢出:跑马灯(ARKUI_TEXT_OVERFLOW_MARQUEE) + ArkUI_NumberValue overflowVal = {.i32 = ARKUI_TEXT_OVERFLOW_MARQUEE}; + ArkUI_AttributeItem overflowItem = {&overflowVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_OVERFLOW, &overflowItem); + + // 省略位置:行首省略(ARKUI_ELLIPSIS_MODE_START) + ArkUI_NumberValue ellipsisVal = {.i32 = ARKUI_ELLIPSIS_MODE_START}; + ArkUI_AttributeItem ellipsisItem = {&ellipsisVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_ELLIPSIS_MODE, &ellipsisItem); + + // 复制粘贴:不支持复制(ARKUI_COPY_OPTIONS_NONE / ARKUI_TEXT_COPY_OPTIONS_NONE) + ArkUI_NumberValue copyOptVal = {.i32 = ARKUI_COPY_OPTIONS_NONE}; + ArkUI_AttributeItem copyOptItem = {©OptVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_COPY_OPTION, ©OptItem); +} + +void setBasicText(ArkUI_NodeHandle &textContainer) +{ + // --------------------------基础Text组件(应用文本样式枚举)-------------------------- + auto basicText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NumberValue textWidth[] = {{.f32 = VALUE_200}}; + ArkUI_AttributeItem textWidthItem = {.value = textWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_WIDTH, &textWidthItem); + ArkUI_NumberValue textHeight[] = {{.f32 = VALUE_30}}; + ArkUI_AttributeItem textHeightItem = {.value = textHeight, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_HEIGHT, &textHeightItem); + ArkUI_NumberValue borderWidth[] = {{.f32 = VALUE_1}}; + ArkUI_AttributeItem borderWidthItem = {.value = borderWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText, NODE_BORDER_WIDTH, &borderWidthItem); + if (basicText != nullptr) { + setBasicTextVal(basicText); + // 设置无障碍文本 + ArkUI_AccessibilityValue *accessibilityVal = OH_ArkUI_AccessibilityValue_Create(); + OH_ArkUI_AccessibilityValue_SetText(accessibilityVal, "基础文本组件,包含字体样式和对齐设置"); + const char *a11yItemVal = OH_ArkUI_AccessibilityValue_GetText(accessibilityVal); + ArkUI_AttributeItem a11yItem = {.string = a11yItemVal}; + Manager::nodeAPI_->setAttribute(basicText, NODE_TEXT_CONTENT, &a11yItem); + + FontChangeCtx *ctx = (FontChangeCtx *)malloc(sizeof(FontChangeCtx)); + if (ctx != nullptr) { + ctx->textNode = basicText; + ctx->nodeApi = Manager::nodeAPI_; + int32_t ret = OH_ArkUI_RegisterSystemFontStyleChangeEvent(basicText, // 目标Text节点 + ctx, // 自定义数据(回调中传回) + OnSystemFontChange); // 字体变化回调 + if (ret != ARKUI_ERROR_CODE_NO_ERROR) { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", + "Register system font event failed, code: %{public}d", ret); + free(ctx); // 注册失败释放数据 + } + } + Manager::nodeAPI_->addChild(textContainer, basicText); + } +} + +void setBasicText1(ArkUI_NodeHandle &textContainer) +{ + //--------------------------第二段text文本----------------------------------------------------- + auto basicText1 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NumberValue textWidth1[] = {{.f32 = VALUE_350}}; + ArkUI_AttributeItem textWidthItem1 = {.value = textWidth1, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_WIDTH, &textWidthItem1); + ArkUI_NumberValue borderWidth1[] = {{.f32 = VALUE_1}}; + ArkUI_AttributeItem borderWidthItem1 = {.value = borderWidth1, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_BORDER_WIDTH, &borderWidthItem1); + if (basicText1 != nullptr) { + const char *textContent = "this is a egg: case_upper、braeak_normal、max_lines_first "; + ArkUI_AttributeItem contentItem = {.string = textContent}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_TEXT_CONTENT, &contentItem); + + // 文本大小写:(ARKUI_TEXT_CASE_UPPER) + ArkUI_NumberValue textCaseVal = {.i32 = ARKUI_TEXT_CASE_UPPER}; + ArkUI_AttributeItem textCaseItem = {&textCaseVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_TEXT_CASE, &textCaseItem); + + // 断行规则:CJK任意断行(ARKUI_WORD_BREAK_NORMAL) + ArkUI_NumberValue wordBreakVal = {.i32 = ARKUI_WORD_BREAK_NORMAL}; + ArkUI_AttributeItem wordBreakItem = {&wordBreakVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_TEXT_WORD_BREAK, &wordBreakItem); + + // 自适应高度:MaxLines优先(ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_MAX_LINES_FIRST) + ArkUI_NumberValue adaptPolicyVal = {.i32 = ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_MAX_LINES_FIRST}; + ArkUI_AttributeItem adaptPolicyItem = {&adaptPolicyVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY, &adaptPolicyItem); + + // 装饰线:下划线(ARKUI_TEXT_DECORATION_TYPE_UNDERLINE) + ArkUI_NumberValue decoTypeVal = {.i32 = ARKUI_TEXT_DECORATION_TYPE_UNDERLINE}; + ArkUI_NumberValue decoStyleVal = {.i32 = ARKUI_TEXT_DECORATION_STYLE_SOLID}; + ArkUI_AttributeItem decoTypeItem = {&decoTypeVal, VALUE_1}; + ArkUI_AttributeItem decoStyleItem = {&decoStyleVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText1, NODE_TEXT_DECORATION, &decoTypeItem); + Manager::nodeAPI_->setAttribute(basicText1, NODE_TEXT_DECORATION, &decoStyleItem); + + // 添加到容器 + Manager::nodeAPI_->addChild(textContainer, basicText1); + } +} + +void setBasicText2(ArkUI_NodeHandle &textContainer) +{ + //--------------------------第三段text文本----------------------------------------------------- + auto basicText2 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NumberValue textWidth2[] = {{.f32 = VALUE_350}}; + ArkUI_AttributeItem textWidthItem2 = {.value = textWidth2, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText2, NODE_WIDTH, &textWidthItem2); + ArkUI_NumberValue textHeight1[] = {{.f32 = VALUE_50}}; + ArkUI_AttributeItem textHeight1Item = {.value = textHeight1, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText2, NODE_HEIGHT, &textHeight1Item); + ArkUI_NumberValue borderWidth2[] = {{.f32 = VALUE_1}}; + ArkUI_AttributeItem borderWidthItem2 = {.value = borderWidth2, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText2, NODE_BORDER_WIDTH, &borderWidthItem2); + + // 设置文本识别 + ArkUI_NumberValue enableDataDetector = {.i32 = true}; + ArkUI_AttributeItem enableDataDetectorItem = {.value = &enableDataDetector, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(basicText2, NODE_TEXT_ENABLE_DATA_DETECTOR, &enableDataDetectorItem); + ArkUI_NumberValue detectorConfig = {.i32 = ARKUI_TEXT_DATA_DETECTOR_TYPE_PHONE_NUMBER}; + ArkUI_AttributeItem detectorConfigItem = {.value = &detectorConfig, .size = 2}; + Manager::nodeAPI_->setAttribute(basicText2, NODE_TEXT_ENABLE_DATA_DETECTOR_CONFIG, &detectorConfigItem); + + auto testText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + const char *testTextStr = "测试ARKUI_ERROR_CODE_INVALID_STYLED_STRING"; + ArkUI_AttributeItem testTextItem = {.string = testTextStr}; + Manager::nodeAPI_->setAttribute(testText, NODE_TEXT_CONTENT, &testTextItem); + Manager::nodeAPI_->addChild(textContainer, testText); + // 序列化过程中返回空值,会打印ARKUI_ERROR_CODE_INVALID_STYLED_STRING的值 + if (basicText2 != nullptr) { + ArkUI_StyledString_Descriptor *descriptor = OH_ArkUI_StyledString_Descriptor_Create(); + uint8_t buffer[VALUE_1024] = {VALUE_0}; + size_t resultSize = VALUE_0; + // 序列化 字节数组 + int32_t marshalResult = + OH_ArkUI_MarshallStyledStringDescriptor(buffer, sizeof(buffer), descriptor, &resultSize); + if (marshalResult != ARKUI_ERROR_CODE_NO_ERROR) { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", "序列化失败%{public}d", marshalResult); + } else if (marshalResult == ARKUI_ERROR_CODE_INVALID_STYLED_STRING) { + OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "manager", "无效的属性字符串错误码%{public}d", marshalResult); + } + const char *invalidA11yText = "序列化过程中返回值为空"; + ArkUI_AttributeItem a11yItem = {.string = invalidA11yText}; + int32_t setA11yRet = Manager::nodeAPI_->setAttribute(basicText2, NODE_TEXT_CONTENT, &a11yItem); + + Manager::nodeAPI_->addChild(textContainer, basicText2); + } +} + +void setBasicInputText(ArkUI_NodeHandle &textContainer) +{ + // --------------------------TextInput组件(单行输入框)-------------------------- + auto inputText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + const char *inputTextStr = "单行输入框:输入框风格只支持InputType.Normal,回车newline"; + ArkUI_AttributeItem inputTextItem = {.string = inputTextStr}; + Manager::nodeAPI_->setAttribute(inputText, NODE_TEXT_CONTENT, &inputTextItem); + Manager::nodeAPI_->addChild(textContainer, inputText); + auto textInput = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_INPUT); + if (textInput != nullptr) { + // 输入类型:基本模式(ARKUI_TEXTINPUT_TYPE_NORMAL) + ArkUI_NumberValue inputTypeVal = {.i32 = ARKUI_TEXTINPUT_TYPE_NORMAL}; + ArkUI_AttributeItem inputTypeItem = {&inputTypeVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput, NODE_TEXT_INPUT_TYPE, &inputTypeItem); + + // 回车键类型 + ArkUI_NumberValue enterKeyVal = {.i32 = ARKUI_ENTER_KEY_TYPE_NEW_LINE}; + ArkUI_AttributeItem enterKeyItem = {&enterKeyVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput, NODE_TEXT_INPUT_ENTER_KEY_TYPE, &enterKeyItem); + + // 自动填充类型 + ArkUI_NumberValue autoFillVal = {.i32 = ARKUI_TEXTINPUT_CONTENT_TYPE_USER_NAME}; + ArkUI_AttributeItem autoFillItem = {&autoFillVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput, NODE_TEXT_INPUT_CONTENT_TYPE, &autoFillItem); + + // 输入框风格 + ArkUI_NumberValue inputStyleVal = {.i32 = ARKUI_TEXTINPUT_STYLE_INLINE}; + ArkUI_AttributeItem inputStyleItem = {&inputStyleVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput, NODE_TEXT_INPUT_STYLE, &inputStyleItem); + + // 键盘样式 + ArkUI_NumberValue keyboardStyleVal = {.i32 = ARKUI_KEYBOARD_APPEARANCE_DARK_IMMERSIVE}; + ArkUI_AttributeItem keyboardStyleItem = {&keyboardStyleVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput, NODE_TEXT_INPUT_KEYBOARD_APPEARANCE, &keyboardStyleItem); + + // 添加到容器 + Manager::nodeAPI_->addChild(textContainer, textInput); + } + auto textInput2 = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_INPUT); + // 清除按钮 + ArkUI_NumberValue cancelButton[] = {{.i32 = ARKUI_CANCELBUTTON_STYLE_CONSTANT}}; + ArkUI_AttributeItem cancelButtonItem = {cancelButton, VALUE_1}; + Manager::nodeAPI_->setAttribute(textInput2, NODE_TEXT_INPUT_CANCEL_BUTTON, &cancelButtonItem); + Manager::nodeAPI_->addChild(textContainer, textInput2); +} + +void setBasicAreaText(ArkUI_NodeHandle &textContainer) +{ + // --------------------------TextArea组件(多行输入框,应用多行输入枚举)-------------------------- + auto areaText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + const char *areaTextStr = "多行输入框:基本模式"; + ArkUI_AttributeItem areaTextItem = {.string = areaTextStr}; + Manager::nodeAPI_->setAttribute(areaText, NODE_TEXT_CONTENT, &areaTextItem); + Manager::nodeAPI_->addChild(textContainer, areaText); + auto textArea = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT_AREA); + if (textArea != nullptr) { + // 多行输入类型:基本模式(ARKUI_TEXTAREA_TYPE_NORMAL) + ArkUI_NumberValue textAreaTypeVal = {.i32 = ARKUI_TEXTAREA_TYPE_NORMAL}; + ArkUI_NumberValue textAreaTypeVal1 = {.u32 = 0xFFFF0000}; + ArkUI_AttributeItem textAreaTypeItem = {&textAreaTypeVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(textArea, NODE_TEXT_AREA_TYPE, &textAreaTypeItem); + // 添加到容器 + Manager::nodeAPI_->addChild(textContainer, textArea); + } +} + +void setCustomSpanText(ArkUI_NodeHandle &textContainer) +{ + // -------------------------自定义段落组件(应用CustomSpan相关结构体及函数)-------------------------- + auto customSpanText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + const char *customSpanTextStr = "自定义段落组件:"; + ArkUI_AttributeItem customSpanTextItem = {.string = customSpanTextStr}; + Manager::nodeAPI_->setAttribute(customSpanText, NODE_TEXT_CONTENT, &customSpanTextItem); + Manager::nodeAPI_->addChild(textContainer, customSpanText); + // 创建自定义段落测量信息 + ArkUI_CustomSpanMeasureInfo *measureInfo = OH_ArkUI_CustomSpanMeasureInfo_Create(); + if (measureInfo != nullptr) { + // 获取父Text组件字体大小(模拟场景) + float parentFontSize = OH_ArkUI_CustomSpanMeasureInfo_GetFontSize(measureInfo); + + // 创建自定义段落度量指标 + ArkUI_CustomSpanMetrics *metrics = OH_ArkUI_CustomSpanMetrics_Create(); + // 设置自定义段落宽度(200vp)、高度(30vp) + int32_t setWidthRet = OH_ArkUI_CustomSpanMetrics_SetWidth(metrics, 200.0f); + int32_t setHeightRet = OH_ArkUI_CustomSpanMetrics_SetHeight(metrics, 30.0f); + if (setWidthRet == ARKUI_ERROR_CODE_NO_ERROR && setHeightRet == ARKUI_ERROR_CODE_NO_ERROR) { + // 创建自定义段落绘制信息 + ArkUI_CustomSpanDrawInfo *drawInfo = OH_ArkUI_CustomSpanDrawInfo_Create(); + if (drawInfo != nullptr) { + // 获取绘制偏移量、边距等信息 + float xOffset = OH_ArkUI_CustomSpanDrawInfo_GetXOffset(drawInfo); + float lineTop = OH_ArkUI_CustomSpanDrawInfo_GetLineTop(drawInfo); + float lineBottom = OH_ArkUI_CustomSpanDrawInfo_GetLineBottom(drawInfo); + float baseline = OH_ArkUI_CustomSpanDrawInfo_GetBaseline(drawInfo); + } + // 基于自定义信息创建Text组件(模拟自定义段落渲染) + auto customSpanText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + if (customSpanText != nullptr) { + const char *customText = "自定义段落组件:宽度200vp,高度30vp"; + ArkUI_AttributeItem customTextItem = {.string = customText}; + Manager::nodeAPI_->setAttribute(customSpanText, NODE_TEXT_CONTENT, &customTextItem); + Manager::nodeAPI_->addChild(textContainer, customSpanText); + } + // 销毁绘制信息 + OH_ArkUI_CustomSpanDrawInfo_Dispose(drawInfo); + } + // 销毁度量指标 + OH_ArkUI_CustomSpanMetrics_Dispose(metrics); + // 销毁测量信息 + OH_ArkUI_CustomSpanMeasureInfo_Dispose(measureInfo); + } +} + +void setSpanText(ArkUI_NodeHandle &textContainer) +{ + auto SpanText = Manager::nodeAPI_->createNode(ARKUI_NODE_TEXT); + ArkUI_NodeHandle imageSpan = Manager::nodeAPI_->createNode(ARKUI_NODE_IMAGE_SPAN); + ArkUI_AttributeItem spanUrl = {.string = "/resources/base/media/background.png"}; + ArkUI_NumberValue widthVal[VALUE_1]{}; + widthVal[VALUE_0].f32 = 30.f; + ArkUI_AttributeItem width = {.value = widthVal, .size = VALUE_1}; + ArkUI_NumberValue heightVal[VALUE_1]{}; + heightVal[VALUE_0].f32 = 30.f; + ArkUI_AttributeItem height = {.value = heightVal, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(imageSpan, NODE_WIDTH, &width); + Manager::nodeAPI_->setAttribute(imageSpan, NODE_HEIGHT, &height); + Manager::nodeAPI_->setAttribute(imageSpan, NODE_IMAGE_SPAN_SRC, &spanUrl); + ArkUI_NumberValue imageSpanVal = {.i32 = ARKUI_IMAGE_SPAN_ALIGNMENT_BASELINE}; + ArkUI_AttributeItem imageSpanValItem = {&imageSpanVal, VALUE_1}; + Manager::nodeAPI_->setAttribute(imageSpan, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT, &imageSpanValItem); + Manager::nodeAPI_->addChild(SpanText, imageSpan); + Manager::nodeAPI_->addChild(textContainer, SpanText); +} + +ArkUI_NodeHandle TextMaker::createTextPage() +{ +// 创建父容器column + ArkUI_NodeHandle textContainer = Manager::nodeAPI_->createNode(ARKUI_NODE_COLUMN); + ArkUI_NumberValue colWidth[] = {{.f32 = VALUE_300}}; + ArkUI_AttributeItem widthItem = {.value = colWidth, .size = VALUE_1}; + Manager::nodeAPI_->setAttribute(textContainer, NODE_WIDTH, &widthItem); + setBasicText(textContainer); + setBasicText1(textContainer); + setBasicText2(textContainer); + OnEventReceive(nullptr); + setBasicInputText(textContainer); + setBasicAreaText(textContainer); + setCustomSpanText(textContainer); + setSpanText(textContainer); + return textContainer; +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.h b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.h new file mode 100644 index 000000000..bbd3557af --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/TextMaker.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_TYPE_SAMPLE_TEXTMAKER_H +#define NATIVE_TYPE_SAMPLE_TEXTMAKER_H + +#include "manager.h" + +class TextMaker { +public: + TextMaker(){}; + ~TextMaker(){}; + + static ArkUI_NodeHandle createTextPage(); +}; + +#endif // NATIVE_TYPE_SAMPLE_SWIPERMAKER_H \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/baseUtils.cpp b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/baseUtils.cpp similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/baseUtils.cpp rename to ArkUIKit/NativeTypeSample/entry/src/main/cpp/baseUtils.cpp diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/baseUtils.h b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/baseUtils.h new file mode 100644 index 000000000..c8be5afa4 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/baseUtils.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_TYPE_SAMPLE_BASEUTILS_H +#define NATIVE_TYPE_SAMPLE_BASEUTILS_H + +#include "manager.h" +#include + +class BaseUtils { +public: + BaseUtils() {} + ~BaseUtils() {} + static void SetNodeMargin(ArkUI_NodeHandle &node, float margin); + static void SetNodeBackGroundColor(ArkUI_NodeHandle &node, uint32_t color); +}; + +#endif // NATIVE_TYPE_SAMPLE_BASEUTILS_H diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.cpp b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.cpp new file mode 100644 index 000000000..df022f8cd --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "manager.h" +#include "SwiperMaker.h" +#include "TextMaker.h" +#include "baseUtils.h" +#include "napi/native_api.h" +#include +#include +#include +#include +#include + +namespace ConstIde { + const uint32_t NUMBER_0 = 0; + const uint32_t NUMBER_1 = 1; + const uint32_t NUMBER_2 = 2; + const uint32_t MARGIN_NUMBER_30 = 30; +} + +Manager Manager::manager_; +ArkUI_NativeNodeAPI_1 *Manager::nodeAPI_ = reinterpret_cast( + OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1")); + +napi_value Manager::CreateNativeSwiperNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode BEGIN"); + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode env or info is null"); + return nullptr; + } + size_t argCnt = ConstIde::NUMBER_1; + napi_value args[ConstIde::NUMBER_1] = {nullptr}; + if (napi_get_cb_info(env, info, &argCnt, args, nullptr, nullptr) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode napi_get_cb_info failed"); + } + + ArkUI_NodeContentHandle nodeContentHandle = nullptr; + + OH_ArkUI_GetNodeContentFromNapiValue(env, args[ConstIde::NUMBER_0], &nodeContentHandle); + + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "OH_ArkUI_GetBasicNodeAPI after"); + if (nodeAPI_ != nullptr) { + if (nodeAPI_->createNode != nullptr && nodeAPI_->addChild != nullptr) { + ArkUI_NodeHandle testNode = SwiperMaker::createSwiperPage(); + OH_ArkUI_NodeContent_AddNode(nodeContentHandle, testNode); + } + } + return nullptr; +} + +napi_value Manager::CreateNativeTextNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode BEGIN"); + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode env or info is null"); + return nullptr; + } + size_t argCnt = ConstIde::NUMBER_1; + napi_value args[ConstIde::NUMBER_1] = {nullptr}; + if (napi_get_cb_info(env, info, &argCnt, args, nullptr, nullptr) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "CreateNativeNode napi_get_cb_info failed"); + } + + ArkUI_NodeContentHandle nodeContentHandle = nullptr; + + OH_ArkUI_GetNodeContentFromNapiValue(env, args[ConstIde::NUMBER_0], &nodeContentHandle); + + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Manager", "OH_ArkUI_GetBasicNodeAPI after"); + if (nodeAPI_ != nullptr) { + if (nodeAPI_->createNode != nullptr && nodeAPI_->addChild != nullptr) { + ArkUI_NodeHandle testNode = TextMaker::createTextPage(); + OH_ArkUI_NodeContent_AddNode(nodeContentHandle, testNode); + } + } + return nullptr; +} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/manager.h b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.h similarity index 93% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/manager.h rename to ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.h index 9bb890977..6f9fc2489 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/manager.h +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/manager.h @@ -32,7 +32,8 @@ public: ~Manager(){}; static napi_value CreateNativeSwiperNode(napi_env env, napi_callback_info info); - + static napi_value CreateNativeTextNode(napi_env env, napi_callback_info info); + private: static Manager manager_; }; diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/napi_init.cpp b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/napi_init.cpp similarity index 93% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/napi_init.cpp rename to ArkUIKit/NativeTypeSample/entry/src/main/cpp/napi_init.cpp index 2f134388d..60f2a287e 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/cpp/napi_init.cpp +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/napi_init.cpp @@ -28,6 +28,8 @@ static napi_value Init(napi_env env, napi_value exports) napi_property_descriptor desc[] = { {"createNativeSwiperNode", nullptr, Manager::CreateNativeSwiperNode, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"createNativeTextNode", nullptr, Manager::CreateNativeTextNode, nullptr, nullptr, nullptr, napi_default, + nullptr} // 参考Swiper新增其他createNative方法和Maker类 }; diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/Index.d.ts b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/Index.d.ts new file mode 100644 index 000000000..e9279a70f --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/Index.d.ts @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const createNativeSwiperNode: (content: Object) =>void; +export const createNativeTextNode: (content: Object) =>void; \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/oh-package.json5 b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/oh-package.json5 new file mode 100644 index 000000000..b81656fe9 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/cpp/types/libentry/oh-package.json5 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "name": "libentry.so", + "types": "./Index.d.ts", + "version": "1.0.0", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/ets/entryability/EntryAbility.ets b/ArkUIKit/NativeTypeSample/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 000000000..6678a198c --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; + +import { BusinessError } from '@kit.BasicServicesKit'; +import { window } from '@kit.ArkUI'; + +const DOMAIN = 0x0000; +const BACKGROUND_COLOR = '#2AA1A6B1' +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); + return; + } + hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.'); + }); + let windowClass: window.Window | undefined = undefined; + windowStage.getMainWindow((err: BusinessError, data) => { + const errCode: number = err.code; + if (errCode) { + console.error(`Failed to obtain the main window. Cause code: ${err.code}, message: ${err.message}`); + return; + } + windowClass = data; + let systemBarProperties: window.SystemBarProperties = { + statusBarColor: BACKGROUND_COLOR, + navigationBarColor: BACKGROUND_COLOR, + //以下两个属性从API Version8开始支持 + }; + try { + let promise = windowClass.setWindowSystemBarProperties(systemBarProperties); + promise.then(() => { + console.info('Succeeded in setting the system bar properties.'); + }).catch((err: BusinessError) => { + console.error(`Failed to set the system bar properties. Cause code: ${err.code}, message: ${err.message}`); + }); + } catch (exception) { + console.error(`Failed to set the system bar properties. Cause code: ${exception.code}, message: ${exception.message}`); + } + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/ArkUIKit/NativeTypeSample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 000000000..b37e4b57c --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +const DOMAIN = 0x0000; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(DOMAIN, 'testTag', 'onBackup ok'); + await Promise.resolve(); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + await Promise.resolve(); + } +} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/pages/Index.ets b/ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/Index.ets similarity index 97% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/pages/Index.ets rename to ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/Index.ets index 8da53caf0..0c09df3da 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/pages/Index.ets +++ b/ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/Index.ets @@ -26,7 +26,7 @@ struct MenuIndex { private items: ListCategories[] = [ { title: 'Swiper', url: 'pages/page_swiper' }, - { title: 'add your router', url: 'pages/page_swiper' }, + { title: 'text', url: 'pages/page_text' }, ]; build() { diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/pages/page_swiper.ets b/ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/page_swiper.ets similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/entry/src/main/ets/pages/page_swiper.ets rename to ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/page_swiper.ets diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/page_text.ets b/ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/page_text.ets new file mode 100644 index 000000000..736e6e97c --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/ets/pages/page_text.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Napi from 'libentry.so'; +import { NodeContent } from '@kit.ArkUI'; + +@Entry +@Component +struct textComponent { + private nodeContent = new NodeContent(); + aboutToAppear() { + // 通过C-API创建节点,并添加到管理器nodeContent上 + Napi.createNativeTextNode(this.nodeContent); + } + build() { + Column() { + ContentSlot(this.nodeContent) + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/module.json5 b/ArkUIKit/NativeTypeSample/entry/src/main/module.json5 new file mode 100644 index 000000000..6ab131223 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/module.json5 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:layered_image", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/color.json b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/color.json new file mode 100644 index 000000000..e14ec8929 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/color.json @@ -0,0 +1,12 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "background_color", + "value": "#2AA1A6B1" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/float.json b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/float.json new file mode 100644 index 000000000..33ea22304 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/string.json b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/string.json new file mode 100644 index 000000000..d1558fd0a --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "native_type_sample" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/media/background.png b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f GIT binary patch literal 91942 zcma%jXIK;3mNp0q9;J9tQ6L}(1shFzC_yJ4lDn zMF~o;fk0?MN&s@*G$N*V-pj#% zc8%$pJKu3H6B9PCPuxW2f19*Z$HpUUF(3}g7#RA-OX&8^G6)=p#i`)Dwb3Nq8~qFn z<^fU=`t_De-dZt2UTFpm04@e4TEsxg1E>YY7Az(HB;|?ti3gVq33;UuoLwdZwaGAv z)BE$Ei{3EL!}7;J7f*)>%m4pcxFd_P_m2-Ym9Z%ej=O?&A8%5Q1~0Zm`)oxAEhEn* zq2oE4oF)6o2I|Fpq^)*F&F&`ru81qZLuc*j^>C5>P>|jIS|}3X4#)eG^57s9%6*|3|F;x+jqe=h|lyO425fl z6@cI6z>Hyv5uXtYX#y5k0aI_<_dNiVmwZCL?}ObbXPW8*%1=@B)oy#Y%c~4;8%x`a z%D9RB*Iq(EEN}n0)L0~$o82*;j0iF5PRBnE(CyzU=FS%kpKs`5BPyC~KTl;`htI!t zg56!(Boib)BOTAg0FZU*rL05 zkM$puN+9YiW1b0?zq55yMGvG?k+9e^uNu~T%kN{~pwPex$^-7uU|Z?^6m0nUP~^cL z%T(GXMmC)6oU}w0XN34`VHWH#pzq#0-s~`${^BQ zGsp)>*KTj;c9}KpOro`uZYH__;b_ah6KQy43luufrM8tsB=2Fb6I(~)N47qQoe5AH zN_#q|RJ@sun6ZN!7{dB=f0HyYic^KI7cK~{HM)rNVY8{r#uumMPyA{ZLnoNqe5X^Q z9<_t4n>rJ!2Zm{Zm7rROaRCQUoEqGGU*Nt;_0LKIjaL^VAOL>XBhmT9DoG(?;~8Ax zV-w6KHM^z;H6BT~^5oo+VsD-jS@TU9~{}5`3m{qUsnvy!h7yNmLCh9<-ZPVhE4O&CHSSRtrbIp!3fxTddggiU;0|Q zSRv=4Mu{Q?)=Y=)peNckC&Bw6i5&6R+Z;z{0N4~ImXWTmk ziTDk*hHBCW&#>pH4RA7V)<0G}$KR5M=9!SUJq(%a2~v@VnGMq$5Pgv+A`Qg2I}sUn zl&;Sxou_%;KZA1*k8fBBTB44p8nn`hW|4))1%(?z#;LdRItfmRMDm8ft5#DXZ|nMZ zEJ0NW`+XMf(n$HoyvzPh8QR5l4}c?n9pQ2#Rc+mEQT|PCEuO^BM{%ofCqj|8WxjqD zhLu5r<`NXQi*V%0lU*&9H2vF;3V{aqDDNJB5FV&R#T;Ko11nzD(hV97(fO~fNtMJ# zVSD!fdNW%bzuH-cIx~g1E%`W3`okpJf`Jvt{mm?FIo=IlpkZLLzcI7uERy1%xA3W7 zN5oayee1(qp_re~+GqO7DGji8R?Ou+B8xatq_TYlmV)nSHeB=KD?H+N{aVsk{smEh*qZeJ z))M#Y+iCG1+v9Vjh;NK|)^I-h&1<8ss#LY=%HHUfe$n)L1gzbr5@RYy77qV_-p*sO z(vx79H1@rk7pm)+s==EHddT)b(|76W)l^u^fLJY`7N-3f9h41;xg+w1JeMO@z^WHJ zu^~jzE|&DU7y|(`@A8PQG-c>q_Y6WHqf6+4C1QJ73VDy6w?TOj(%mDP!bgVkNG8Hh zzcmwnNnka8bZQ(Z<=i!Y@=C?_6J*tLe|0r>2Gdp!#iqDIUw^UmKuqLG97QbF&7q8+Bwr%v!=i@ly^ZOX}PD;Vr^ zTyljDx$VWI>o$@??c(-fVG-EobYv05?LZZ{-_o1Q`sWomwcFgB=hYZ@I^Oi~c`gLU zO&Z+3oaJeW9*)&5*z%`KU;|G^-t;OGn}wL#dOGZ|0TC@n@K<5U{`5iE)n~KDe0h*| zK#S6KaG+2>7}_$C`$b>X6+jx2*>4y$U^6BNmBT~V|8L}t1_V{Yu?Ck)-JZ+#FLk}R_D9mrH3mc7e zJt9SLjH+y|)bjsO8Qso&6#Vd9oiNO;$*cmdCvhQ~aJWKTeuUPt)LPO2d`B5Y&c6mW z)YQF5&Z(?mqJKE|%9uCY9PQdVM@$_oZgY3^RY^h>id7ajQyIa4sZ52c5F;%d|LN3G zj5=`HF-(yIR#Uf$wa1`3rCD6r*r(XAicvER!fw=i5Fy_DCahzZ6xa(D8RfC zL_q7dL745qWAMP2WJOVjIu)#1!~+&up&b&qT%G9?fRUk&1_&;#Z_?WkNG8P)FSsVO zX2vfG=~PfqoPvKh$GSQl__x~3tsOSY3-CxqCwHYW6BtMty;xMBg>qTY((4 zF=`QHuipO^T8;&N>=}6z#kQ+r_$N#M&r0aJfXQPOA73%&9|rL zVt)$!hzNR*fUVEE&7gr&LFp0cXhmnhjU;)VSeFYkuUyvV(8Fp*Q8}potdcr<8N|m0 z8IU_QP=)xubFRdu_xdZ5+Qd=VxQ{}?Nj88NySLo<^s9@@&q^5S17=l?++g8RSr8qPeEo30h18NnD!tjDU3 z6z%#I4VVmFQ5!l&N(9i#_nK)4K=$SL7g|j1lK;iEjKrMPwO%T*QL% z-j!aTy~MG>A0Aqn|7@{@*S zDMoRwd1C4>d!H_%>9`Qfk0FS$E~#rGg{T&9TVkroUTgXOzDN*&X!jzj4|asP^S?57 zo)-!G(FB7ZMeU>B24bHjF7JpxU+%GfzWnGf*6+OIewh)aZjmd#iKj|8JvZo&&_+(V zGmmN(r7(kaZ|>c>aov$yYB$2!j%Am`^?j^sco5`v*mG(=o%bvdyeUbC?lb5&d z%UKCu41wwotE+1(=s+>CI*gvHYC}kb2I3r2&k}3+*;M$!3Xn? z(Vb~d{}=K>j|{o&pEmQMf@gH)xk%?vA!FR!j|0m>KAckaYc*SdODE;HEmG5%~q#J_}ITGT`BJ`miBS>ui?SUI8Y6P*Q>$otnZf z2lCtF)rcg6=$K`D3>!h&tmk_cQ1|jFpf^X&w&q+m#Kzb$GU6RVJz?+?6B5y(9KM$Y zYn$>1?CaH(MxNIWKRPy}*4fTI+7C`5sorgyJtkLf5>+;TG)}YONvo5@tdS6LsisW_ z(wl=vAJ=?ORTlFB0yeH*djK?Mu&Bcq+7y0?)=c)l19}sjYTh1eIQCPfpyu{*64@KqB0mlsKZ#}K@7KT>d|xcDCirH zh4i+!#*!Bxexqo(J3zFrv4|g34GXi}Bxp~(d+B@^(0M}cA84 z^Tg;xRq+Bc!VEmLd~!wmVyaq5bw<9$!7)yM&NR72C7C}#MtH}5ELy(!j*SVu+nPa$o^~PShiG7YXY#RjJa5UuXCTe~?}v3y zYmj0&lH7JIjrCuJy*%(O!PiZ6m;y((bKo;A+eU>uh9;99%nSbF(qg!c`!S z7k}q?l)Qio5r$sksn|x^6S#moHlo?hu@dbixHKJ3cdG^VL*sG`IAQnPaK7Ff@<9X}CZa_9S>A zN`y+8yps+AIKO73R6~!*0bi9iLs_VhJl0NF7_d8HUKyLo3M;F-2N;FqYM`CXT}FQy z9cEc}Tp9UC` zpOjW2>)Zen$89)goE_)V6?VS@h>5m<<-zf3KurXOw-LCcv9B^(rG!5J`s0H;!&R40 zw6roRCGUy2)@Y+E98jx@Vw`6?M%J;WTfxiv;49Gh7L7yG7Omx) z0CUU1|7jKBDzU`&ySgh4FAfHw6 zu*I=#3|)-i>#`UW(a>Rw@Jei{l~=+!;|qU2WxPLimNeZ@gI7T25(T)=D(IlGY&sOl z3P&*j(a9X`jBDdyTm;D8AGcfh^YZsA(}F&Gp71}>oi(z4AKiy!ox&(%RR~Sft_D~$ zFv4!Fjn-5b`WAq$uX9L#T4J(HcGtjM$c+)7M5?sSR%vU0cm4XGZAXymv;1rtL#VQXc#|O0_IKjNfF~ z>BOK`M^)P)163{TvWPQ7HmPuvBo91LyKf6p6Z&Il#Pj@#;Qp{N{pN#FgCORiFD&rd zDXoEsoV#y@w>=?_|2*c1RwEi_S;BVHyH}8c4_sJkk706wCIxCgiifVQI zj_m7z$W@$TJHAP*W~wo*%z~W4pRr2=E-QREYIio;$Pn{yvt@n>$9)njFP>g;w{9pE zJN)58;c^Y#G8GQ#*N_R~w<$bsq6visNxj8QN$$dnAoZ}Ua=26)X-R2jDNx^aKg2BJcY^TIx~VDEpsO^cjbYqg(4z)IUmIU6Mugp0STm!@44vB# z;Y45lr5@?P`d(~5`^qnda=Xv{#ZEW`2Cr}xth8Oa|EyF^vg2;2ab`{!fr zXoIGlD%Qx2$O;o*x}v1<@a=FgLQ45JIm71#-5B(|Jclm%MmM+J--8({tgQO4phX-F?s)v0u(sWY5`vKT=23) z(_6yB#kebuQvniNLXnqzUq6{|-4O&JUnNy@naFoLiDlZK_MH_s7TT*debiS4 zZ^_oGY)Ke13NIdy4N2Uj1bv&F&PLRX8Pg1?K!X9#D=beo+)oT|B8%8P<9@ff;d%jG^C;*bv?_2 zCcE~Q?vWE*5PT0UKc}3}Nm=7olHga@7GX=jS<@4b%tOjL@7X6 zBg~9ESb(TefW3-+Ti{LLUD}9->#&{*KHUNc9=`f@w+4xiy28zoFtdF-#nkpI>N z2x-?;y^sAQ^+CU^My%Oox6!%;uqc0K?CK~6D|&(ZxD#_;QW+gYQrzJ22&4=0%`WZ& z$Kpo^JgxP@!ZYqoeKn18d`sY7s~5Lj`xBpUI21pfJ`)`Tm+|KZ0~IT)l!YAFW~z#> z?L_;)md2vm&CW~hp=tF%RU1_VMf5ZeygZ=SO>RAS`zDj-QT(^|_&^CVnZ#hJDRCcc6zM%BK z5_ss}nn3?8fp77r{NU*5uoamhQclBQsueYgH7%%J;?)&cRhQ0FX7TyIO zAqV*0i&U_ZtEzC_U&-C*4D*^HWA-!f;pe%Gmv{^^tmuCcB>^XC(psXV7pn|KK&2~p zw^s??(QO;YlBPkjGM-ajKP^G?0op_jWnnR%mjwx&&OhvUq8^#0oO@67&6>{e87(4Y zEW5WGqIHpBGn;|x35X}(r&*00)rD7IRzjYj%o)?J-S~^Sx6X!pA9A`16MEY0+*X7E z?Swc-omN{k?v`*BVY2PA=Sz{{_XdIQdam=tmR~iX)zeAAy-YYuXqP{_R#E}%%TUp*C zR37u6*8~)Q2p*CIMDBt{wy_VCW6Hu_eUI+y8x6IWW+@UgbDT|Ins%zhl!(odvT^dX z6nlKfU!&G0kZo;Z?r$S2ul4=Ou&JKjEDfd!chE({i2+!>&Pzy^|yMY15aU@^!q}(E@mrxXO+Y^ zl|CeVk@kFJ??PB8&$BE?94#-94F1N}%QK~SnpQq)#9wd`If2VqIlc%m95rZF^s*AZ z@Z(C|i+!+BR~`gspb@ZRfIi77;6zZ~Ii4%P|NK08QrY!8UuLg1nz%Id^;>lpnd7+1 zrE_-ur6zD+>1}6~F#~!j-(=|y0g?l$89rSEnPZEwhAO@FYdxSx+IR6=!F4Iq84AIb zVx+q=&xg1*1W8S1W@tCDZ4r6K_E4{omTKW(Kjv0TDZ;JVtrGbTrG;K@KA2YYGvO@q z$zWtgRAStrWxC%*+S*UJHJUD}4!{uZKi&^a#1DpC4Jt631Z!Y0N2mvYBe z`^bqc-+GWIZ()gY#3ei%%Dox=f!x0?~DT1sqS$hqPC-^fyvcHGZUkX zQ*TB(UZyShhegM1T;_cUFA*zv`tr7JP^V`^tF`d-9~$Q|r=r#M+)T zgqfkgx?NW)>?~Q4_bd}Le|C?*DO=ZkE;G#jq*fPkK?<;tX$R0UGIBqYFC7CzVlELJ z&js}Trx!r^;kgT_5JPK#Bcj1knKX26`M~ssqY+vzz+fVNAh!@tzijIji6~oeqZOu< znO4S3?!hAwH_E8ZQpmN*042Nv%!|(K{=TY_R_Lb~D#xiY#^A@=8!bPoy#@L<_z~C> ze*s@Gbj5T({u=fEmAgV1RRJvT)$J1;7c1mLUIM<*v*SWf+F#b(*_?TmPvCaz&;xHt z`zr|w>pkQ*qdzbi4C7-na4DyYGg4=k3yt~iwkd|sIiD3p1mGBoW{>K(8nigyO-lC zV!iui?#zVc7cLOV7A9Y5@{b$BG`t9T2LZj-K%3?jDi`JVPgM$3!}6H|{D}7Yl5z4W zUIC}%3=Kiq`!5d8V$Q9-rTTYFE>_9uBL~Z63V*Gj!f_{LPB#@o)*9#jeCFNNC!tsU z4BFfSX}ZPUg1IpW0jSCigCa-L$%g1_ZG_)S5wO*$=3Wh(>e=p^LR%sR z!mHyE7<`Y2$=qX=6S2%}6=QOg%2cf})ibASbwm$g)+6x~V}Ucp2y!C?sf+7B@w`K0jS&Gg-%%6j;2ufl$N8rdw~qDD%IMxSfg|La?+pPnkBNP}=QjS8upul@ zkz?YtFU@zml@qOhJA@4&QOsR=>6bkIZ;V2DmTi8lx4njiOktl))rr#BPp&~_Oxc_u z5eIHxVT0SG#B-><-VO;K-}qXc^KMb3?qjw4E23j+T(qMm!K?2^^_B4+uHut?Y&^aj zd2oAv)KPwqy~@^90_bApwj3Z49tefzo`UI1)v73oL?-9f}>NjDB zmTn!i1!D;##^c}>Z)gv~^5rx8tszqw20t{9cFrcO^}I2EKlM~=ZV*6%Chb*&d$U3T z+PxwW-E;7F;y!WZA5D`&wV2r36PC^_q5E|hu7I^xR?L{p`K{MAh%iNF?{Z-7$UCVL z^8mbhB3svg>qOslREMR$S`Zc^DygmRaJh@wImcLy-YYDEv=pEYdwuRFecpwtx z16Pn?;vauAp@cxrbQF$kk#mnR(1e*DbH0p6{z>7-;P^4K_3H+}Rt-4qTySu3VKE12n0D988#amAK_mHr>)4 ztT5NGs=d-fGvPe2sGNwu2R1R2#>M49*0b)JX6v`OkAP639WdYheY#uZEe!CrK#~5f zIhnX32&t`8(RShCeE^kbAphmg3C$Z{id=Yw>8An1Cmw9CRY~<-h=?q#vX;Cg;||Jb zyNLygTYk%HZ-xfiRvUJiVm1n}_<-AQSWHS<#Fki=7!|@T5}+>tN7f({q-kz}UaM_^7|+{+8n7O~Kl;7{a~P8mkN&2_;wUv(*Z zZlPF#dpF6}`QO_rMub^j-Yp`0Lk-)@Y!_w~=nx4jL+I#XJSgbSIs_mwdt*lRc@Ct~Z9sUmrHGA>M<@f|gb0E=!Ep!S9NagI+)siMTFf8M!)(MZ9y#N>RK$Y`;U=xSQgTi zeE%Pc#95)ZiN{+kgU}X#@aWsw2}|ACv6Ip_$aCXcWUOzK`^a*038i4OZqz8E@6{AL z&uhiOh!UUGNeVak$la5TDLY0DuBO_seCq1p0xq9-9e*}EzJY_}K{W1TMHa;YNa?A$ zJbf3XIvox7>y~>fL=jR|fnrtMW}840T)^^4_3$4%rvYHwjz!Sc!Zr!Sv33iiF#Zoa z!+$K{$bSI}%iqW_T>R;e@s;-E_(52*#wE4XS2}aRMzTZ>2Z7+VN#(;V`v`w+z_kJf zu$y%@bEbVT9dH_W$OB@%wyf7p=V%)#!aI41WvQ-ly1MP78@0eYS5}+}kC|{t^;-z>F>XKk(wBbaubnJy46(5*duwsOF z&LHd~I8Z4ntQpFY$-oeW0X3z*pDWq=AtvA-!w6?W#pZ%4_Yvv_MtNgbwrAL8Jis&s zdziD!0;j*ESwxu&fc7Zg?Nc3q`5QOba`^j5&!>RVdZiO*+3uQEFy z?MT9%xduJ}@lN%?BQp^3QkPbAXm^gxMBU9u&5HP>Jjg10r7UOX>{Sod=f6KSz?dNh z!evY?ko=^VLhG7fWw#B+ljQs_Jgcds)%H>`jZtsW1Etl}K{)SU!O;kq8OVlIS%hD5 zTMws^Mr6FTzI*0hDlaBmwF+A6V1#9~yZlPTEG4{;ZNS0kLBq|u&AQb`XcI0tu$UTB z^*rk(5v7a%*=ZCf`R~0sSMphp+1YO0n0Pg(a+phnN?u_H)c4*SR!8&atx^GXXX49o zt%q}tUKRN9FdOcTZxt(m`A`>99B->`qB<`MQakd8&< zlbH*sVBvj{6SZl@lpQtlmo6`XG?d#Wqq(f1VDPP2a|Gh9)k^frxvt%2#|}l0>$=ic zQx#_VDZlrML{%_tJU#kcJ{#!-<*F+)g<^ez->zt>`U!}#w*pkr&#lYEaQILCra=a> zklx?zvb?&j=OE&|VwwECnA%gHk`q7 z#2;U78GYBqb(b)RU1jQ(VPghG{o3eEkT+C12Qi;fDBiUasLp&a6Q3*l^}x@z$?i*rg9?F;Yr+QA*&RqysvmG#5DJeNSxXn+TP2!8B2PE4vgAbG(dhdIu{t< zLoMl~)I$JTj6ALZeXd~BoFK(#I??xkP1D^+SoXV~RHPR!lx8O>sIU|WE??GqBwD5v zZalV7TsSrA?Z{e+YX7aqQuPhphn1?{cJJAgMY1zvE{zX>IhH)*Y-Zw+@TKL{LT9Q* z+0>jn;kED1SG7?te)Y38hJW!u)moHLSUm!w_G8`x)5{UuBkffnmY+=RKNfM;qGedz zlNsRt(gJpz-^6&@ht5Au+cnHC<#T-iv?0XK-skQ*HbT?$3TjjOvq_t|L%qoM67Mw8 zo=D*41DYRzL$s$5$Q_}-%V74VFSa%q2`EpZbRyM%hRP*IMl(&wAd|;St z*r2Qv-*mRvUGR0w3gpIXFJF;!iDx*L+XLdZ(*#J2M`S3V@Guf1p2ld-jCKB2SMYDk zK_y3)PCob{vgPc0`m@2GPOh9b4|k@d>9r`I%}UbGIc0N5<;FHI4%H-l;DoQzo%%Sa zI>`8jNe@)760aNG^9$>)VvIta;=No68cdfiSihpG*E14mN7@Ib)wRDvz|5!lnyaj4 zbMViMvTNnd@tczl%H%WwVkV)7>a=y(V3KSn=R75Tmttlk6adWe@t3ccxg%3lp+yX6 z@XBh(cqVu!kLqNo!-rN>w6(f{UxrSkw%xK}SOdPt1vVCR@3@4z9fg@7dkZJ8|0A>3 z79j+ckQY9^QV~G! zuKP-&@1Y1{C~WF#9fkv%C+~6tsvKK*%uBc{a>=gusDYGm9$*m(*1z{owy(BS?BOLX z3|6cQ8;y9D@m)WYpdG0{(SES~80{>Cp*DPrQmPh9zITa9;G2eT3=xhuKfY%RIS%h7?BJZ zT_bnUJsoDR0;ms6QSKK34HVTiGZ7yk!^|fKg7FDJtvpx_8}WPP^K6biAP$kJNNS2p z_I_p?ilgmc1`wT(tk7vtM4}|;v+YfSvd+0=GiX^UZ1iON8VjhR(9HS%jV~i<7UR<% zC1TF0KywgNw^(PEZk-R#Ea3oocd38b-zIW;X-u)5nrL^rz1=vR26TwDSw8~0DL!w! zi-cDl*H+ggp_(o>cGt4;)jt5Ps21$?J~umMz4FBTU*_3Ys!@X**v44Efz z_--rQCvn&D^**D2Ux@?!35YxCtD3C76e3BfDp z834Tl@Mv#p#6FEqqI~GBuC%P^pHx3c&vscPTDNqCHOpp5n)9a6N8hHYN4yrA`6}Xf z=yglf8iLu(j%%db0Kc`Mks8cdgs}nL{_nG=`La}Wthkr0Mdq(rL%(v27mPaVSSK@; z4NbszRsA@TokBWub|pp5S8)XO0cvG<$NP5<=#90tMoSuh`xeq>w(iis+#=ryf@E8z zh1sO9{d~3;H8r-)FQG%a#I%P|?b?r-heNrxsc&u3BLTelWR&Lp4~leXbCslV!>0&u ziul@YTcWs{rc%E=N(^HH{ZM(TL zvDTpF6|)PH>6!V2{}XA|AZVXyfvPnZN$&b_CF$r9*v3Q&qnZxE2=5~0Qz@&Q#AR7~ec%T+tO@JV!v^3fZPns~ zbCPYJ#)v4uhBkL6Tk0v;7?t#Y$JLjU@sw#g8P0L;mOG#7bavc zlA&twBXooTY@L+xo`Yfz@EH_&*!5tZe(65d9nB#yx9yUi#~Ql_yUL|>v^d(I#Tp>td{g%GRJ)?|62lEbIR?3M z>~DU8$-&@Zh`r-D$zO|Y$5Z*&nycTaoV^E@RTF}&ol@Z|`Xh6c4k8KsFp^RyvWMHF z!&EZZ-u&*P5QA=Y8;L)qp);pcWXVB`5Ld!HutdMSSUec-av@jk_7EH+TvO)+-F+7` z!b>{|NXh-H{CSh23Onf{z;QOgr4V=`QU38Iy9dC8lVOu(aNYh(cK(uOu%+{{&14Gp z`kJ;WLA=jz4dHTu4Uo;4A9TQcv;Rh6I#DhR(cW9QVAFTBpUpl(PpYp@a^vQ{)iEph zvjyvHlFH{_A1zPj1ID%m>>g%M3;osnpyP|0umy*Au|8?|+<+(VYj_F7ZRhoz3u$_e zsI2_$?5cKUdvCMKinKI!8uq#ZUq@*>dDXVW8bDNVEj(G??h1IW|Lv#LF{D7O&JTd? zF@5xumVrp=@}Q}Y#&1shrvF=(1WHQ2GId{qzTuV|@BO15<+2#3Js^H*E-ga3;ke$$ zh3RcW2=nf6Bo30(EC`Rggf2i!4?P^t?($ z=}mRUyvpk`2r7RyP1uU@O#CX3#}g76yLNE1*SNXz2+Mf}d>uGmWiGvc&Tw)4LS)eF z5^h$F;mH%>tj;X;T1t^CgIEVzTo)z6$gRo*uy&8DZ=&GE?P)w=d+5j~3t{iy2hIET zd>%(4Xp;_#Z_b!3?SjVQ4dUBrF01}qYo9l$3@)I7!RuY%WA8Z3Idzkdal}hEe+^2< z?-*veYNxi(eO>TW;d)pZ({+4fd8Ljy0fO&*lt8K$R=q-a|EONvv5iJlSX+K>Ve>rQXT!tbM%@i%qpo6#Pt|D1@WRl8fKVVHWY3CAA7?6@pz4KJvy9|yBN2oylE*perBVT5k zEoT#7YV93|DAKR~;Hvih{$-}mjc(5D;dC`7nh>gM_sIP z?FP+Efn9^4kCXXph}*a0dBRi%*!d>RGf{CKFd%%ai;M&!q&&wwKhr}&H0O-QAv=eH z&F5rr?%*CjagKRKGU-KPLSXC?J`MZE&JecFH1u=9zW(_L6UF9=fHBKQ#~C$IPt6p? zfK2L`y;H)(7&bA6di$&0{8g1Y7lzO@u-kdvLYfN!Jsb3%qlK~9QtyXEV4|v4OK&4r z8)HuHBj! zS*Y_YH+AOgHM#hy0^xy3&5`E1_~Q{8s1ZA2Lw_8O(v2$d5Yl65GGR{AZKoZXEEr#k z=7ueO^QQ%tK)i5oMGKOg&YE03B@-mHc8S`47k%C?il`VTan`NaJmqBCU@XRYeC07% zkF9RIa2{x|u&5tkF}C~|jB-B`h+vybZYRNW^nLVcm-~wmyqSje6^|(+i`j_7ws1;! zJYs`C#Ps_zEw>Wlz|kGM|2Y&blfuZzsO-#hSal7Vu=O1lf-XWIcf^4NJmruso%zo>8LIG`8Ccw8*eEVzaxTueVSXtoi=k%9lpF49}l=@OW!n}}2iN9DF+M_lVz8k~ktPRCU41ghTq7tF&LazTGFW4W7RO>;qfNDQ*r~%#rCa zjB^ge!LHnlf06#E>i7}((sb|{&KE;5`kMd zmZ=8RUzu(R-VSDUR{g}~VTmK6J}iqM1lJ}3div>Fzm(?wn+UIrQTnL)!bBbJ8_`l$ zSsgQdT0=?Mjrh)Wf0)wb33slb1gp+HgIYjm%w(AMh2tzzT!#jO3S}R17@M(Y^=hp- z9Www?Nhk{#(n1w-9QjbdS1d;j7?zJ;)=U<-nV@~+LVZ4+Tze`7U(pio>O1Y;o>J!_q4Z`pVpg`9PKYAunj>~4~=t05P z%`2ORuo>UA(p*KqEXSb!Nl+O;Hv$^mH?62sy&th&XtAu&jY2CK@5z!l(U7Lx-Wy)mloNFvU7o)H-I5F;7 zefNZn|FMbc*34J$Q*5i7xEcoiWTZF6JVfe+&%e^`e+#4d!XbutOX#Ojqah8Y#8*%D^tc1Gs+A3Z-dXOSMVvi5eB<3(|nk7O>~cz;0BlM?b03f{~7`g(HfdsIn_m2xea%+ctiaT}C^ci@563>ww_c z4|xJ6h;gxC-zdO_xWoM_77l9*B66Ur6G2c|ADJ+O;~bDx!$&!RvMN*d#JLDf2y&3g zM1WjK8)AE^G5zHfS}KOh4Uiq5v(wL&p*S~c?8`PP4kf;kFdy8O8YeTm$Y4FPw*z3_ zaJx|saHCJ%LTbyE`3ilNVk4Qr>5yU0Em&S$9d7mz8%s2jK>wk#iSjz2!lEL;b_oa2O0bEAn-=rs}n6VP=sz4 z6fw;z54#$+&yKAOJ^C{XK8il}&xM%FZFaJTaQG@2QdZ4u;mDGf!BgAT!5!Q;#%~cX zHIvq~*P3VLQNhPKUv#5$6<{6+rM&AnALC$7o9sf!gL>?D2e}tiRVt2AY z8dabtusS(zhYZgx74u!OTQL+qe(i9GWq}_p;`;nVdNtyh^Y%uEa&1Jjc`PS79+ax) zStK@7suJ|r5Uu9QG=su-3cWE&Lj#UZ_pR{H^l{@G1nnC+`;HwG!lj13?q^@`<;{|Y zJZnLx`)&}-F#QzQ;qGP)#$SjhaL|)VV8IV}Vm>O;+39AxE_jCnu8AI1P)MOzf0lQj zbN)u|2t~YtS8Y1ztE-}GR|a<`SLYgZ(65SUD-6%5z77CzBrS~^4GRd0fw~N=8HN+H zB7tA3?>f3eRQ+htjO)tQCO)v|QL>}28eGOiRwo$`$q&$|*OcLqLf=7CeBj|I<$(kG z*GdXc_-3qeQfu1wx#`anz)k#_MIjle+l}aJvPtX@9&C%Ic#GdS@>PQh(|GkJst60@ zfl3e8^Vl_~RHmIB#=`_3uDLp>qZjXAIPOl}Y~5_bRc4g)>wm=WGHq{X)>5@rfRb&X zdW}t)GS49?M0gILyMS(5Mgc-uPF78zn~j@O?Yj;qK>{iiUYPsgN`qBgzTXGZy(3nn5 zvG@VF`g&k%XOsEFgAorop^>Tp#72WGHwHA}x#RNHW4jsJ;@!~9TFD_yn1s)?jIe7m zCzzFrFQ(v`v~M8+l^aCkxy`w%EwDC8g!`Z(5pTVhe>N8Uy1M$CyXL^lX}RNkP~u+D zQa(D~=qLur^XH!Cr!B@RFc3j&qO3OV`q`9DFy}80 zq7U11Gobfv8|L4>TD_|}%A9>j+3To`@OpA~uQ0Kirt_nb=}3r((z0V+j$TC@w8T7M*^Uuj0LG87R8OX$}RtjZHD#B17MOrM8VJu@QL$*R$vNj>hkY((c@WUSe;@9S6-L$WVp9~tWm z#y%Kke(%qH&i6ju=k9wxzrQ<9=e*Cnw(EIaj|)il11r?+Sq`LV)w5wM)r{T;QP3)6 zfmBgcx-5Hx%;ALdzbys90yF)sU;EO?rdjX4R}1` zeAxryI5da7-5N`R-Ze!c1zuUR_mt%ekC}Oej^pvEeOyHjOHl9-tMuZ^XEbj~EAmoHS7DodYzZ$*8 zRIWpdgop2eigg9z8iF!}U$8s12iRgLF~$~5>4VyHGD?Z=qP7Zb4!p{O)2`v-b}|xh z9b<^^A!h+w^%BeP{ib7Rd2_yXi!W=se%Z|bsn^XZF*Ju`#>0u{PWFfEH2!n{&S%63 zuI!-Z2hWhYg!dG-r^|e|REu$R=Sv3Cy`-37Ea@Z4w}wmwYz2ovaLJQq+kbjclr`jU&vCB8|(4%D0F>{VN2g)hV~#$IP2Pktxcmk4AORZ;Fc$RE}H29 zaD$anl5NJtKq78KunQTttz5Pbi(}ewnvk~c&3^~4wjSB=v9<%}Od5D9m1N>E3AM_z z{XO@=D;3oc8#VR!n9H9FSp5x4XBTMdgq5|R=@vukzL}wdbze(B>0GkrJ;rd3&(V4p z>$kh`?^SNAP_LJuhC8w$G-^j7^BxDN6Q|kPrcRdz`BNSi+!-ic-dc6!jhPr6k~%j4 zV4+}+TkDolM_75|HBTeldK`^HK8NFR@!26h}e!*m#JiJCh>V4q{0! znCR5zOBUX%XI`HM?F8~WP=CQ7VctG!hA@HCd$DkZ90-kgZUXXsOXMhgWJoRqPkJ3c zy0G6we9fx2$I`1&f*oKm#kNRazzqRrGidKLJrr7n~%;4Yq*yC2`h|?TDSJzj~ zS`ay$&Ye_t(ml|cFAeR?RQkS$Yw*m@mdXp37lEiGCi_Ay&sK9uPp41guE6v>d3M9i z=U|E?A!w{WsfqO_AOs@8$by5D5X)ldX;79?WVlSg8yCJtvfP>z>4okqFTj&QKPsVl zfFua0{x>DrrQKp)cnr-H5c~SDmDhj4l{+cX^>T`L)B-1;mXEzMmw=3@q|iaA@57+?FbVNe-Iv;%osUWwCs+1!)#cbrx37KILZ#>$gO(2_OkP|w=hH9E zg$ErN-jrB2slHwMXfhjqCt;lnmu(DeeDUOsgPOo*k11$CwDoh{R~u0)Qn=EG8BOcr zo=x`x+NezU33ZEWXdpM+FDI+W(MZd}GJ(A0=!dlPP81P&D+8P8Pv#tj@WPygOHZUvTaNIzsW15_z|W zv1w@!nN4_R75M?R6-Ll@iYN+b=*az7H__gcp zn_IQA`hgGm8abCVDeMP7pK@wp%P6*jgNcy!hC)b$+HFnQ!L+q{jMaQ(GK$;7mUCBS zas1Kmy6lLuQ8uFHA`5BcA7al5Gyipra&Q@Jpz$>MCn;if^d~1e@ajL$M+4~I0vtuT z7*fTe^kQ4-?hI_nG?`*wL%Z0!VK8#%L=&|}Cs>iNHu*!%$2DX}6pAgf9kQ8Xv~(@~ z-J&(%--`2Nd|Arwxza%U+Uvi$i>_u62Bqtc8_&st(n|s_;oA!cS-6) zCHZ@sX)#q_LhFvM+DjjsGH&$bZHTd=O)tfK0oWcPSuRH|0vPaLL)&|?>XJpjzay`? zK~AfElse(|si&ADW~J(j@ExMbX}wnC>f2hW+>4B@^G(w@{|T32XghK$Q}|^inVR2v z^C4`h3Eg-L<&sT6UaOQ9o7-oERNXnu6-c}cdgqth%bPmF%Grxl=Mt#d=J;*;$xK|< zGfx=yVc6z~YlLep8j;sV3eiJGG3HI2@YZmAK3oc=uTt%}!!>Pa0$Qe#YcvGN-pNs* zkJ=ja^U|+ihkpvt&!(Q^hgJFIV2&O_VQiO2clrPevab3&R39L2zV6LBvpzJxxtC=R zKe6_N2-rOi-{N9GwCsqI*n`G4nP-d`4P$^|L#}g5eR@+3;3PoP3D?-Iyc?|)K)vIc z-bsd_Qr3W+S^G!ESXEC*nD%@w>XWeSFrsSzDY^|m^5Ks8lfRZ70HB6g8za>R~JIVD0JG0xX$i9YqkyucotOw^p(%D16U zN$L)#(*PsB+uvW~!S0`+FE5%a8~Vt>L|xP*ivv}p;U8E7`nkF~t6&U-sV;Xnt$S$g zF7^)0NxsTQH&6|0ioW5!l%Upwq3C`?f4`dV=Qf$!P1y-btkr_a!GP-|o8%Az*cB3P zfp-K%jVFE|Q1~XR7a^AXr?CC?SKqh}Y#iB)E)jiQX8WaFh-_ zAM>^C@c>$&|LSV(8KNL*Z>MOa>3R-*2w4o<3G|vvPM5WV1T|2lhp(asM=&~q9bU>j z>oWs8f;wiiDS-C$P-3J_bh16X z2Qq?f$&jC{MDG*}u<^9Og*ie1B^x%GdP7#)SAgfJEyiIyalD=m%YW`~WjvWhSh?cB z5dT#jBws0x4+(hN;2kg-^X=xo@&1>OhtuXzxxZgfY1Y5A*?5``yF=@9FJH@VWs_Hg zR=KlVplsHr_6m+kd7gNhCRTagOwvHXmLh-|Vh7c~(Q+&+6O*uisw#l}NY7c8*`7dGTw zQo2`RJL#wl<70Bs^yBERxqdmb8yFIKrnDPkpnz2O?%vQXcB^q|buw3m-S77vQNk$= zxlvKo6ey{%|MG=+lgGP<{&Y^MmrQ-q*6n8Jm6( z5e%t9KE_^xDx3MY2yd2u>rgo<3 zWzU0eaHXojeY~Fw+R|V^idxQO=_uzSuinQ+;kXoRuy(IAH**Jrth;qcTa(A3|!H4)dQE6m~6mhWx@$0U`U-$L4=*)^J!Bj8{q^v z`X>GNRxN5n-VC?U&^6(ML%c|u2OTAH@i>JZ?Qx4|%=Kf-OsJH7^ zVczJDh1b*loJ(>W4DcR10fEWt(tMV!`~h_8cY9~v-sJ=S2{CAW7%H5{dps>fd_+bL*pS6XG~)FCw*xEzd*?(YDl|=! zuEi(E!IM7oO0KMYT}Maz?(c&PxqO;@qvQ$Z?<=8@_XugaFesn%a>1GQi_~Wz@mwoF z!zl-lk<|qot3vM5CO#nDC)~FG8I(=KILvH@y5`T@M|Kq>J(6)TBrwTBl4 zRb(l&?X!MStMt$M@fQQ>@}|oDAD1 zN5-Se!rY$UCbmLy>=LJS?|(Sg)z1jMIC1-&tftMBu~Jp#M(O((C1+IDKR=W}m(` z+@1T_FVJ8djRU;i(9cY$f!aId;2@Wh>L7WPr%t0?BE3?asM#B_Am3v!3nFS#R*UHT zp8t-V12teHFOHHL>R+JZY4WQQo^=x*SxrKa@c<~`%pKzX8d3Xl;u_5xiCHAMyOr*RNH4|jP0heEJD63tPKeD zo*T9WHFf#L`WGlc5|SRiZR8BV?py3?90+bTHr2fX!&zQj>*^@%f$+jNVgdIPldU?{CJ;dwFHPgt&BbevSC(%jCa7#n_AY?ii zwSRjJaL}z%0V+YMtq5X-;`jt6*ZJ@O!Z)EC@32B^Ut-9JSrecEZlvNbXQne*M(dvB&EehUb1gD^LqE#d!jpA^zj-#H)1VZo`1 zH!0I*J@06Bqdnqh*)YUAhB+xoAa=-Q>@1tZr8t=fNCgMIen!uQc`aq0?Z~NE=J}?0 zRBmjr5Lhd9$Jq0P)!>z6BV*WTs<1-iQ@Z40Cc!(<^$-NYS96itw{3#0V9KbT($pT3 zPHXDvxvdod#C zUE5A)!tZ~m+g9b9-kGYQH$*p9^Zzx4IVTfhe9e4a=7f0F8;8)R^%@oxL2EgomoRD^ z@`a4gt{t~K)%)&pj#yl#iwu*J!LpfAWaTqZI_pvq5ZYr$>unlBMv_RH(P}<`P@eQs z?;*?cI@ykJh9eJa`=uiaMDM1YDXh**3oFt&a#q~|V1@7(#!O_km@mNHKk^=@Aop3- z)~q%P4o0GPPPd}DCN9S*FV%h~I8G2u<%Xmz=sq8h{O8B*Eh~w)t6mP>ArF37*b@O^ z$ckd_DV{IAb}R8hOj}2WhyEaD{fbGBIF7Z?na7ysk`^OgQ#{NOn3i&rJZBGeSTtiYzPPPQdOWhe z!p=~L=~GXsg8T}8I(5lkpuzC(AMy{qPSc+uzcQcgPVMBBn`;hYqr)0v| zV>DGHxvlbg*5fakd`{V#Ka{J+Rrol<1|GDG+CfH?d9IVH==!hf=-H^GaR+cN5Zr5$ z^`JyTWP9Dn$DqTdi>j^Eqn$b!))PMh$ni{^UX8TeU=uL2Lx-h=c7R}(UE)?u{OH;~vu&|ptz{rh8r1cVB5c|iUSf6pQ)%y(fh*-u zA>hdDadc>Lf?VLcjH`%6r!~9Kg<~oWEd=_|!eKrR_z%oRTo;O$Mg^N)I75m~HTp_q zFMugSezc7-6CqgCF7|nLi^zJ){jRCGBSwe=dWQOrFNmkvJ886S+57r)(YV6!cg&5& zJU{=5C2OpD7xcaStHRVQq-Q0~Ql2#`78$4tDjQT8-<=J`H34tbjJP_Ajhvw$je*Bbwo;5r}< zJSk6aU8hZR76nJUDcs{P_5ckAy8C>T29Z3nE58hg0_uhLg@Uz%NC?M;&tFjXTTMMu zR>0G+F|9yZoa7@*&qsCJkD|RAmyR)r?%(4sX^$L%zq42wd8@%sj!?JF;Tp}LZum{^ z2CY;v>awK-2ZEeLs+h_y>LdkB8P+dvK>3@E_b>1G6c7xCIHg7PZpi`JJQeVjBe_6) z+NA$v%>Q@+=!efU{kI07(}pv(ucy*cN9E=g=K}x!`Y>_F;xApT!VU?$@Q`P;K&xxdzBYu`RUG!xxUM?4L zxYqIVCGEjFhsc-+Buw^Ea4u-~u$+8yH!b9xjW(4(xF-+rBX73a!9yDd&mzqePaqn- zw*r#^Lg>tv(jA)=;$HMZLk)AQF65t?e6neeyTUhu*$B?gxVqDLr75Ck!vyA+tvk@z zlI2$fPawYml#OBBs8zq){+Y+81>}ASJ9>PBm!;|LvWDb!Wn3H?`cMq4csy!Osp9Zf z{PhM{rNk#(G-MYwG3H?mN}o=L29Ro9$HsTR2+C5wpCyYO! z{=#L<=w7v`T36tx=5VdR|rp)GiH_TH3SkCTuB zr!qtZb@Y42A~B)!dGLwNi|VMJN%h`vr44c9s!i!sK*J8eIjqT791Blh4b4YKF~>qH z{Uz1_mLO~zy#1j_c~ix(h(b`}O>^0d{J`ux%c(pFcNggOZIBIURZ<${YCkPM3xj+W z#ndvZ^X;Xh=6DKk`Q*MBjv(u9p8eQcmJc79O=)0z%;{s;3htgUNkslGEe)QmLT0A- zC0-z@QF5p1lGi@!_o7q15-o!UO6hyPgKJrxh9Gp%VfCZp9L`;hibdhp zNaXB2J%xkD^P%MSnXSdZJ4;8>dhW(BA3R(5|03p>vuc_{hi#Zv&#d#hdn8>yj`>MDLKdLWTjYc&|jjYJl}n9?fO8Asycj~Uho3%vcRw2SqI_x`qKnw@_H`U;g~H6FZWMPzyfrk|qM! ziU3n1^ho|wDsoPl#0aL>sAFkxf-t1#`xZ%A1M)OBGJWMlLkIiF5Y@B3=t-&WnMH0$ zSfMueQLMEl!~~0HcdYq0LQc6AwQdX% zPd3L5O&xfLqqzO&?qaiU%6iON$8cZ|;zu6j< z{n7Noxd2WFv8F~(wQSB;$AO3mcM4LwefCu$N=wJ^-PK7%O=`F*zxT2x&wd_zHQfQA zOzzwiBFWt^@!yZ6)T9evIc#ep zZgdYU-ih&dd(9G|^fXV5kN@S%2atDUi08GO-MW{<&QGnceab=~un%6!?pS_<>Q?^w z&>ijCm0vfc$3}YT#D~l@g7b2KYh|DEAg3N-Y4Qd>v}?BJ!*IKFY#?IXcN8z$A3jpr6_;JpxFv9xSUgNm`1DIUV{_`kZoj5n2J7&G_1o<&6lLvip z#Pj>|!?&VNrbbKFB+qB;7bPJx&&(Z6MOk5IKsogB`bKaTjY|GdLkoh7wrS#(;8u4c zMLU7q<44pvh(1JZtU2W!p1*iUHjdRCRtFHzFgPaMDgc~Z-6i!#BH4!jF2((s?YOKz z*|9jaUG#BLHc(MVXtTZk;f47htUOH`Wz55ZpNhOw4?l31F=y?fypH7QMvX&Rw-X48 zqjfju%R~EtQIcxoZo7!$rc*JbEMBI{Yy_i=Ep`F~3x3XB13i(x6H{tPFy&aItO zAkvP6TRh4**lY4R!vMAv)ptbsf?7!?TN#^T^V)FFK~E%xLsf+qcn3w>H_}krZ4Zo! z`S(UIf#4K;CfwJASG(pNV5_;A`{V(3i)9iFiU|4NwM68aTf-i@zNN2DAaE-NJ>Gd;}zmj;5e zlQYx<(N~*nvjug_1WQcCxp=?WzW%S#-mBIL(3cFz)_d}mcc0tGOJ}V-qsCB<+LSq{ zP~BUbMT!;Xs8>b9cNF8)LtOf~zW>}^wQ_CNt$#iy`cjX5)&@9zoq&v&V3c>@#5Mi%5vNPQ3cs{mJ~AziLr z^vb=X2eX6XUKd!Nzh0oPlmg_y9QpS0uQ11g@j_PH3@k9uJ1ai97EIB^sA7laHuvza z7$_p7?Tu94f7x8w_Jm@!W(*_+N{jaZe82fNisFwzKm*X)s>UqFapfxqr)VPv3=^;# z_%JRu&hjY3C85mqJ$D_os4f{?Cxqt2Zlf6S{Jx6osCSUv#qR%9LeMfH@lBnW-u>98 z^V(YY21qVu+sm5bM+#3}`Po)y#JxZx@35gvO#y z>3jhXl!_mOwUo-v-JGj4wxhIvLCMv%Ql%(31?uJTJF1Rt2q5sC9hQ@#8bx{qiVp;-E!d?b}(2jr`Q;OUw&M0jtAFj zP;HEGDqk$Kno1|jZ|9Vu)=_V`&nVH6sen_3{{#@UGa+*9VskBU;DHgY!+mt!BJesU zcg|C|KsL@?+rHJt4A$-sQ;EEW+vgGWPLW8(!39^+Yk&JFS=HL*mSg^x{vL$;P_%ZKOic-Z-fQdZ8?O>CO^dhz}T{LR%nT3!Pnj5W9%97@T%q6 zz6Zk#PC4+YBi4wjU7iRHKAc6=%^JlV`_;Q0@^#AKbV)(QQN_@PtsVctT2y7P|MqC} zzL3v4T5XNE0SQ7da~5=!VD}2%A|)ULfp-Cb=Ik7Z8R_ho1_rMwK?bCQwhq-ny#dpt z!$=Aq4qC2Twlb6kNeq8;F8KyHgSHp-+b?Jg4goQ^{{>I+et^MCU2Ds&!Kd_G7-MAC zgP+Ph*fzH2JlGut!(j1aTcwEF|sdk;T1JplXkQ16?{|1&Xl4 z;lMuRxn;}Tj62b44(Y$^GY4iR`!~idJX(BT`A*)m{)*ahduGwx(cL`0rh;8iim_Rh zi^FMPA5)xbM=LseHF!^hz$N0I$ip^56X+7;K38O{hu_E1`=&KcK_H^IWzC}swizez zy0%o#QvSsb=pYxfN-W#E@i|cBLh0J&B!a8jI?3zWy-6KxqlL9np8w=pyZoSAoa2U> z0i^{`*ISjWpG^iV+l$lN!D!TZ^9>`I-|+$O>;E0m=qT<&g)d#Lll^$zO2LF0o|o{| z(ctkAHCIO&Kci}zH#~i7bI0Iqp3lvkEh5$CfR@1Hc&}EZ5A@REj22dL+}(LbzhSq9 zR^jg{kk$Lr1GsqHgnab&j%5ZeHB!S@Df*&gy8V&UmC?&_m0?F>GXg+sOTklZh1h_{ zpBzgCm(c!)W=wD(<;^svzx2ANb7~o%M!0fMs0E^Cd#%;~VCUc!YR86~^#BB!B{YfO z*Qq}|k+ZAw`H5`?rMRWdZ;y|M3H+QJx#C}4%X!8<%?&Ta7MM9NdypjYh*M%DU`%BU z084HauLPlqaR*RD4*CGmw5Vo`t4j{h1-lYotk(j(G{Z-J*vr5hT_j;#zHh`$vZ_zr zS?tp^0HO}Iv0@Gq$~CU-tkc^1`($!GQr!if)Uwli2BP{Q{7jhU<(a-;?*;`CvjMrz z`=gvKmV?GGMWom-Cc8F84Ki2|@?=-jPymE}6bk^9N&uG$^KGw1AD%~m`9Pf&43jJI z)@@q8{pk)tQ7li;@Y&k&85OL{+Y((zg`o|9Eyek&`l&I*U+l~59Ee=qRs*}2iz8OP)lw}j?K`wjFap#Cd&TZ(3 zR0DkYonsKfg(xQvle7KrpXD|7lJ=Z_8FwI3ppm0)}tT4wZV%=^Drs!CCvv+v;Kj`bY#JKU3iN-AjYJ)}2VaLf$37-I`hR(pRO{bj9t zu>sC7B@?ycv`T#?YPqI$pgi66{G!TA=JUB%v5duTt|=RRCzA;?3oF^qRNXwVBQq9w zJC*oqDRVmJYf*$jpAqh zl?NZY60dt5p9SyNa9)&Koj}7ew+bI7E7Di5GOLAbC7zB(d9GBddrSuEkjLeRHzf1! zQ1AsjV`h3BLT;D6eB7T+(KWGk!Co!~ES@XJr*#u^>Pe|YOM1A?+H$EIQA>UZ2(J~J zd>&bl28lZGmZQ2Qw{)*54O>KdLdT}_7KZRHL$>qK3r+>oHJ*{ruy?wYv_Z-o@xMq7v$FG_Hlfh8#uz1vR*5j zhl*09pf^=-3~bzRWF)V?lf@`;avX%w;MQ`% zXF7cj?W>vUz$N*XL71W>o#*#f{d8u<)%&~OFZ@3wzyDA3=U%&~t!DX`OjMC+LsD32 z_N7S4shg2QMmdk%ueE+;D@k|ZLfC2-~8GDLY;YV~RFBZI>XmM99k#MA?WZv+Mg4V^S^UUmFdJpk;56Hk#(b#`@t{NZv>eH#x~Mne=-#|6DE`tXLBa2tQboD- z@52;JtvTwY52HMkWOrI@p6Ju}y*~<~=3|$W`1i~ozz!-jxfcWT;Lq!n`3EQwHTvNn z5jf#y$N+CW!+?jg71qaKFp;k^Z}Df=?h=*L{Kj?^oeMB8NWbeg*zC|fBkT}a7Ua~2IsF2()K|USi+`o4_^9`wp(?JUOd?sfdMr^?a4smp%f5cH z(@s+vS14P_TtnRTLsXb9gxN4b23YxssuaOF!PwP49F+?w5?U`J<-u>Mj6@tR+YVyT z=641|QH-4HqMkZVj&#r&x2_#w_Tyx|=Z>+|fi2f0$HB#9B9=1+dKowakCe_UZXiHZ z@}sm3dq@fZErd_9Rq-o=OHn(e%bd4;8A1>ay3xWn$$BOezy3;^Y&1MAm+chLa75jC zN@9p}eJu_7Rc^k(E>$h&qn#K$MTr~;zf`Q4GYKQgq#`t6KCyVzqCMz@aRsyW^HarB{M5#uu-k8cGv$i8_A zI7bf}EW?fN_iZqDy%?T23d%GZph)4{Z($dybmMX|&!??6DcRibQ=|_DA*Dm&g}F9C z1;SYztCk4be0o^)#a|;K8pekx}CE^m>Nef2UL62~3j+66OxHo37BB&8O&>-Kw zfbIX%zAyNUGWgLn-A3j+Nq(|^>!&M5fC^I%55 zScy?@b{ex-F1T0JgZ$#fM0{rqa$~c&m)Up`fRGWlON}X!fgc zy~5={guK7^cTMcmdKr;=WAR?H5tde$EIb=4Pyy;;M@9j5S_=A1wKULp{Qp0sG;JA- zFZIR}*D{AHoh-RfA@h^hl%8qD@MenN>+x%})GjIRDpbvgNV*>l>IAuF? z3tf~-to{t*zOWXkFd_wqV&ylG&|Ko%p>{cvG<*nNS!s=$hFr3%<<9l?QV*p zYpc-Yen3iPHq#Cq$<6m|rcJ)a=$*eg1}K8y){29^F9WU84Kf4^B9OnfIJuWM{;O!1 zyUTv99s3bs9TTGeNib!387lU{J9$+Wxz7ZG;T-^F!U`PF_`5o9KEJ;?O!8VQw*2Cf z4{HwOyRx1jl!+uX#+@J36iCHxm}B{*|6fY)9}$i}lkNBw!P6?a5}RwWC-+1-MsHPu zd4qR)K3}Fe6k&4=gqOCOR_2NVczmC^9cJAnPkaYjC23x-8lXTmcW1#qQ(i)(%`|b=j%?fa>ON4V^QSJ#qKe; zE2;jLh7M}n(%`mq5i`TfY!=VfiD7SK_c&Na*TjQqny{}3L8X|jlgyELPKH@F&zt|y z2CH}V%269Znkh4W$F=txp+3#bA~PkXb0+m|IhU)w6zj9HYhop_}|7Gi}Q&V7;$Q~G3KJ}?6 zX(=vC?xtw_{MOSSH0Ac1KYY zd{s#V)r9IV{P_Vhyd2v7-a*Z$UQ9_~S1L98Nb1_>T(oUccK5|xC%oP1fRPvP?KrIy zfxwdV3>Xqol(YOB>PnwPx#a<#WxNz|XQm=RU>DFl$6^Lr-E%I2%{WX(q(-C2CJc*kIBV=i7f>-G8JtLTnj;Gjv|qx351{&@SY> z_DA1UyvtnqYjo(T*uxJ-Ju%ux!&v_TZzCdmm$eEWx@@woOB-rLdAbC&)P@$Tun2D> zqud%3kG}hGgQWWAdq*`EOqGwd4mB5_kirEP>;yH8QUZybYkrZUfy=@G zmO122%vT(}r5mxR+U`_f zs^@Zc3mEJ9`g_wVUEc$@C2pG1zpQ|0L$9N7l#t(XC*mkh5(ShSfAs{it_po9!pusM zQv8L#uJI689b6mV!#>$>h;xJY<0@jGN$>gMCAQlP+{4dZ(+j!MG0g0=PMp37MQs4L9IQnl|YJ1YMNlu72ncWw`0zXHvJ;sQnMf#LQH8o@G!@wbG6r(?>`tq)c#bev_z;ahyA2R`gJdAqF%1z%p}J1AT` zS4RVj&E!CydId-nD&D@X&T#|hOb12;**#dfb%Esel~v}-qgAsNAQOE2??=lYKfd*3 z`pJk~msS3fOOx}VuhYCQKAjueu1fY@?CCNn2!DTy{pq0!KSE)EYgU|gMKIVce;W~j zp1qFbCv{ACVXrYKykwi$l;?ooeX{yY2o1@$xEsuen83sMW|{T#T!wfn@Sm&r&D$9D z&6h?i*AR(~9Xb=NwI`7U5WO%BJ^jZ+QUPDq zoTIR9yCww>xFtWtECxb$CI4&Lu6OVJa7yJKF=LxZho%NBg!`?{#h3=(JLF&}bH7EC zym{7KLCwL%;feD*>3j+oNwiftg_!V^HUxB%on!WVhPGdC2J$^E8}umD?*!U*5tbl8J#q02e1UIE3mQ6utS&} zZTmGNwZn-RTtE;)(Ul-&40{}}Y40ot;^^(1O3XVe6K*p{XM!+qrz+T z0HTuj6rq<|Q}yMqp3QnO#ytsnr4_tUnAXMHL{`(FW$qnCy*fF55U*uhS$ut3oDc6%*~TN6uEr`L^HR2RTw;OwpKCQ@ge zy0&Lsse*$;>)p`0!SvIn71??tS|g=Rmq|X5_PJ&Y@{?e#-uy^ceOsJwe`%_q-bm?~ zpkYd&Yx$(c@^A0uQHz=$=kro*ahKm=gG-xRhMvx3!u7SP#t=^dM~2&P8oFyUc`Bsu zIIa@)qAyKY0DeDID3f_>P5;6rzwE0Zt^8!vJzV!%IqJx0?Y5nnp%bVRbdYnCEIE50 zFaF}Jhw;Zap2{0x<8}SVbti;8 z7ixObWbP`dI=%SX?n^UaqX<;Jy7qpYq#$2liJfk+kg@+vd-zcK$A;OI2m6Yf*k99G zeS=c_lQVl6y@)f5^&Dd%*{Il`C}~iB;q2s7I54E=4X=8qy8Q9`DIF$EeDo^^2Vx&YDmrMbbm%X~N6|O<;wKQEG zJsppn?gO41Bp-dEixpPVPx_=!{Bb?8KJIcA`RdMSVU^s;u9cbgFI@#dwt|tww9ISo zQ9wY}`(ciz!vw)gH4^@jJU3*JNH$7E^i}Is|EidpY>+Z+3z69*+aq`d-#fqa7P}B2 zM6MBB=EZLO{Q>=l(IwNH!Lwm<>B`$_F&P^T{rjuZi+rlXI#$lp>RV3*=m++42GC08 zbyh`QBfaN~I4f*U5WNs}jlDtPw*_^edM&;IU?1#(SV}z%VF?o>zX!KvbfojMm%Fllo9;Y@zHNbPPO$`_7}6<<=2a_!h}5^g*JNrH z&}-s>8Irbu?@W$o$^Nd3M*n>~3^0@r|1=l2pJ+vX1gxS}mslgy#w(UR<|>2$acG!r1QLb(@{J^cjPZSt}Fx zV0WE*sq6E=9T-qFHIFvD=+SM?hNA=c7!bXsb6i(dx#DxZB~Z{B|>o9#Zv|7K4#MDWVXL~1_2mv(#9*Rf3Yk+GF%c}Pp z%>e~r#}|xt{eb|>w73Ad;xV9TN2%aU=!c7*JFWcKkubMNR4l=(2_=tg;+KvJE)Xur zb=5GHZ(zi8ZAn1Bvs9Z(PE#h@U)`JfZ)H;ESbA*96XFfEg>Kbc&g=b#yYB+Q7cz%; z83osQBNn1!XrilLMv>^Jji->c9Pim%tJo}Dujcw_z^9-8#k%Q zB%@Gj6e^HR41|0~0;xtASbRGK_nuj~0dqRVZQO~7u6cwv45sZKI+1)9uHrx2Chr_V z{jcnToOA|OQO|fQR-7nr#sUhEbqZ4r8);GBQ;;j~&LG6D1Ep=KU8F^?&6v!%~ zRe?GCa#0xVW76v!y4M~wN+KIj46`~0k)q{|>e#9X*W*WNR=**avhGCI20jv+)(KGo z6_c!VoC>jU5UFv>X#>1q0ogs&La%NK-u z(C}a3(37bPvB-k0fN~TWHu~Adk~*Eyoyj)leoi#2T~eg*^NVN@NmI%JgCnu_)KdOu&!=i|8+ap{CWz>~9A zwYQ8%+GE8Q6AjfuwCoPhSQ9ZZ_^8CBiaSK@rYe;GXVnN2=^e%R>ve>(^j6*t5w?Zr z`6c3)>e3kd4yi^>;lO@ksSb>MJmMC?oUU(U7}K&M%TBdYGQr9 zIfQrvF{%a+I7Kr%NPhK3DD+zOe_o>3ViaOy>=2~7qz~k(*`jyqtUPYnfz3TkMlDzH zlx(1Dj!=vph2hSAepi8KI|5Vc_5C4;tVCaZ9dqQUdj{4+R{izeH1aVm^X`_z9{q7I zdg>v$6;U>zdig(aq8M49ag1U-=DipCasr!1YueWIgXOwGGKZ!uL`ih>>g$NjR~X2k zvDt9Zaj4Hjd6*8xbwh8ob*|M;OmCQ1Eo<6>I}^JO_){!tLGad`@R1STzV$G6L70fY zMJjP_iVqajXGsTIgwz|mB4CsF*=#aUXch7eg);|9Qrje%bitw`hY-BCRYp(ecTF)Y456Gpzbo(7}(xUYxc<>smQE1#LaPjm=}m2UTN|B z^eWOGhoegFN7_t&)@rNq^4|LdvI8#5{`;OY@S4q(v!mBgG)Xog{8>&`<)P2A}n`n%VIpC zb=ak{m}s(xx%6BpPw;b9(4UTpQSj%-xx+j4zPa&viK7i}&LHwiLe(aYk{T1G`Q7X3 zW9C296}`v`3?w73w9mI8+~)Kk?=r8~hbB#g0EnowR(nth3vSO&qAgFiIZmfQ@}TZ5O-H~07h%+O1rv)GlU68n)j_&N{e z<>G{+$Hrbksgm-s@$!*Iv5I$mjjgj`t?-kaFVHq74_Z6#Us+zBn`> zftl2+B>?Dg{&_ngR`L2fCb93*m%#nsbg6WpX2jeD73dKhV@l}YJ1IZH0Af92NQ4~# zH^RI2bB7R>ZC_L;TLDWLl@BQpiKUP>=Mf;K2_~he5A%v1kk}6fZdS2-J#%+4*Tj1k zCQusHJ|KoqY6IJ$CgLBd{RdTmg(x=Mp}&4}Fj$&*XwcVh&jtVY7n|Nos{3T1Rmk~- z$6xG%M?z{D=N(YQ^6}b=L52%D6_?U=D@3YT(t@*(roe1fl^fW`1M7x@b23NZW`D)?v0CTb&A$P7mh3;6>GlT!?dUy zcfN$l-2-=ddEF}<#sj7S8Kdiz3wgD6tmPOQgGc|M`UtOHUZ@vQ-~MQnNN&JXzWC?! zRyoZF*2PI<1k7r9+tkCM5%72GYN{WuV#Wa!#HcY$r$`u@EZ>R0>8w5rknR=b7XgQU zo&2^Ljo4nk;SwHVU1i7$0|!C&ISnd$=0mDtPlx;FI&?#}X>qV+EB?{*y*HzYdO`m1 zdc_>upj)`tnH%N}p202hl}(~D4kA;+9fzL%=d&3!AGWx&H*ipXP4!}vCA`(tg?%xw zCO&@9qrh?6Y3{14`s_0+;s;cwlBm}|u?_C_`Yr=~O0Sad=XsKKh;Gh}XOxAFZ4FD; z;=PwDIuM$^LBh18zolTdx+B<%egzv4ACZlm|cX-_a{-@ST>gdHBJTdJzGMOt|m zv8tm)5>U}lo-W0~^~~qM@ov>>)ScV&0~v=@#J|jvAzNa)X%%R|^`5b)58%;0d8*LJ ztlJpdCLa(9q-3uX2ydT0Uro^4 zs;>LY;(XZPWP-btj{@@e9A7Ob2Q}~Xr$7(fDc(e<;`~$DW>L4R;jQql52k5%aCb3v zcGW4}Rh$>M@)RHkB_K1GLXWF{z4^-h(;=YAZJg6P@N8ef7b`#MZG46zu-O|7C+?Rc z>wVYVL>?=WE9y)IzXEsgLE~caWsLn57TQj+r+zeU&;UHgf+Zru-Pk4oWP!8_JfRcu zBJAfULXdCn*0jyi+JyQTrdlpQL!!M_3scOc21;K#w$T3EXr;gq4(rCOWrQr}Pn)OE zRwt*K^m-)UiNlHAszXq#qvdXnhxX5w2kdo-zEq4r&%MrQmpuFKj$pTnuWF;m45kB4 z9HPYh{Wtqp5)a*x{$T>$+%KT;&v9e9|~p*}C`6&=(n z`S653bM+i?Piz|W)OecRHDZ_T_UDWQ3GaMgtl+Y8+75&UWZXvEExqD5I!T9@X2 z=mA(f#b*y*T;XI}Ww^%4d-b^p2@(_4#UatJT zFsy?K{LRwQQ=RqlbZx?hD+57Ye)fg-Y>kk6N8l&nUejxMLD-~>KQg6(%>}=@>`yoY zpErrc*;co9v|X2S4cY_fGrUI^G(>$MtW=zP6U&!yT|ThqR%3q3Uq!Fr%=sTrBGnCA zCV#O47z-Lu^18BGUIy;s=YVu;4fZ!?5yycAw5kD!BNIjZh5lvj-M{Y#>^y6Ge6LAV zXQzs)3SRi7#dEl=Hh=tWm4{2?&F6Pp-mcVeaOTQiO6_A5F3;8!<-%r$Kt z>`Xuk`4oTa)==?I`x_HMdk?Ja@Y#ilD8XvA5pbe@sU!^uJ~^V)zYu5ZYV9!f2Cw6e zJoS#9BVShKY2DGo4XoR(x{&CZc`r>egiXvz0PAWs!Ta&9Cjf3p>MFo>N}KfM;`IUY?h5*YK=o z4&9H{@KL6ADmM>TU9an2DJPP~fSr&LVnd==%JKpV zy*KK?fLwIUk~#TAD&%yC4eE!~uk$>>m8sX@Y0ISUOZJl0x`Fk{1v_r~djR5e3A7n> zT>{gvzXd3wU=kkWT;wy#TPnPJ_{21@JXbd!%^&u&{Nk4WXzS&+8ogfbyK=g0=pu)r zriay+w_sPwnmglI@#ugLk8Fm0&1mqG_=!uE(O!@U430r69=zp$A%R__5^Ja?o2 z@0}b8#M$%BO@LKRnFSs0(PF2JjH&U!-bUHe@)WX<6Wsln`)um)22UzVaqul{c|{w% z2>Vbc1_)SFB*F3$an)y>Qzp*;`MCftcx4Ah_7D3aZ`<+SeYuqUQDbH}{U)^8Xr_W( z?J3b;`6N%)i2Q6r_2-r`EEnttTdY?w7s=tD2_Xpkrj0$8glvFUce>%2e3ZjVOA5W* z8Rkh=Q}#>#f($wMWZZgpwU-7AEuto_xP2^Sb*iY};tcn*7p|knOzfL8WAjFbLdcNz zY5b80h;dbpl9J*u)Egjt&Hk$0){EE3bPK_ntBgS5!2kz%!}d*wdKIiKB6^>1tPnY? z)f=%E3eu>~-}cQ7ndCw2a&y-x%D7!YHHCosR_P44_w7K}hr{xA=DeSK_#b?8*>rQaa!^x=1HwrDuSz0)e((zT2sI`1$F`c0O|Rfd z>T9JV+rZGLFO*^S^1Sg=GoxI=2(xLgnxW!OY&xVWe^i>luLUyaSUa#~=Iii!{d|cM zh4|o^e#`q*(;X3gynz(Zk#NfZ65M%-xTLk~NH>mA6M1Vk{(YEq8L=sg@q&%NQ`A;1-X z8G<034L12t`JfJ_W7n=a{io?FmbZitdbOCXCbU5tgAc?uiMlXN8#0$W?_Jk^F~#41(RN+mLQm-RRQgFC zoIAi^2?>U?UDNb$DAc(pa!}Qa?>2+-Eih%K`a&)jiXK#tucV=u>m%bT0_hf zM>J(}Y%oaUR)$ie%0avQ??_G2>C8Z}`aGi{#OfgQ-rH|hH(r=sC|#u?r?ig(y|#*` z%4K&16@14<6aGZ`!k+PXHRiAEZa217czj$?wT&%+7`LP3k!cBkQqvIRtCqW1%W55w z&_DY2SgV!Q6s-DbDG$nG8{hC;h|EZ$w@?ayjpmtRv)ABY1nVid} zhlIFVz&u0L0py`VbLKbU)YDIXU&^aMUtR+YR4sqVZ+)_`=a+684njXU1t%h>eRd#5 zTKT6n`{NAS<~EYyB>xrm!XaU+U$w}_;T2yUJqS8>2j{1~H03!BN9@ZT&COCUr2J94 zbeDP`(?G*-t<}I9V;||&C`f~AbtZH$H^ZuH;+i-9j~8GwT8!p+&$FM`>>kaL29!&Q zDjL|J_4JIj)HPTWQoqADA`7JYSf`s(AGYl6b_ z>DLtgJRGJ&xUFIxYiXEOmdl!`+P=88LlA8Q*FK%E*1`{+dlsejNnmEbxXnxHE zUxD*JRS|tw5ZgTHk$N2)+Y@qkV)#(n_HCf8@7)~^kvvQlEX{f?3_x{{oVPJhc$1OE z`eu~=s_Lrg)@}X(`RSs}L*2&%R3*q`hCCT1h4J7gVu|K~iHAarw4zJYK<1GKstbK) zAHbb$$b+OWfEe~`0ery*v?D}hoJ}Z(NDnAHDq5lz1R*!UNSB^$=b%#O!k>&&?)b_d znULU=k#4Eqh468(gqr!iW!x~-FDhLmjpsQZfM=;=D7v2s`0$mhJ0w8iOUUd3&nR^5 z&G&Ii1?Tf>yH#O|uxgWhFRZ>?1_M?3>wEogNrnVE5Y=~cVy;wOxvWiv^+pvn9s(K7w8TsqNxQ>Rk@zI&9-5uCq_S}1zCCA>;kI>rb>oW(x;0~g z01Qo~sY+PDt%zydRvU7#%?enw{gPWa0e=9@&Zucn zar~a2K^ADIf7^YNbpFdVXA_*<sFHo*W`Q&zSNyT&Wwo2#Ko2UuU~5?Z$jw-R3zaj`+lV_nF~o4>bDqV5AI1h( zGx9%f8byp=-v!!{SSkCg9Hh7vd%jyihwaQKqw?W7oNq(bFxl@#Drw9}i{c_sjiar! z-%&&wV){?F@3puU7m0^Jml1!G07HaH6G06aUb_-;Oo*-(dr9Gc-|!?AQpMKT-y#Jf zEQ6){&(<1CK0uMjU0FIb+10n&Cywn{r}7Eh@%btqK$8^hzyF280vLpVc?vdrl{;)e zMc}RF?kg?NqVoag>>P1I+1sBzi#X-GPR1RNlb;k}U7F2CZat0E_;mgPh{$WFNN!X) z_Y*SZ3;qId`zv907c_Rx^!Y9)++eP#0vguuuArD(Zc7XNBY?ET_|3P7LI4pwp-eTx z^6^y+^Dy)L?|O}7X9UQK@#eDSQj~5kSc0NgvrR;7bxj*hl&&j+5+c&HK|>!oDAboR z&XCc4uNiC1L}p0opHgNZ>rE*Amx~uVFUZFNFw$wMSx2YBRD;;r7@NeCxy0$H7yN>hiLAL9Q$-r;n$kAxf)p;sx0?FJ+_%8Q)=3@HU@PB}u>9xHz-xyn;8G%FcD@ zGraxKb*naC=nvS~91{j-PS7Ml1OSP+1_Oc$s4!F<67X^VAW&wfdN=U`Qi z=9XUwyNOV-+c%bUQ`WV^RA&DD-By&C=DMQO@0U{%B(yos-*`spd#+m#Sa>GNWR0A0)As<(wn7tyAhBk>m5=J6bCwC1vD-+meo6l4iZm zn47W)+&YQ@X7>Z&oC~y@#{8?8!l(O=!3GCWyL0Fd-stQi@fDzJSC~MP~ zkZ{vTezQ~?hy3r?oacm2)@Sdh=_~a^yCEh;&dbk(q9nJ|Y;4f3($5`ZGIwo%x)E@` zBL3$(y3D9Jsv3#bcMjMuDBk~$sxA?C9ilk{W~N95Ky{W8MyuwO^yE^SGaDP~U#czM zca2l)cNT3h0oq|?5xX(>s}w4=cwB{6LP0F=y*|K%I90R%s;_>T-->ayH&+KIzdGv7 zQ%>5YN=}Wi9_vX{+c600I}_jHWRib+mnO!qu*`?Y+fH~%&j&~SCF#AWN1iu=+%m5Z zrc%y1T3o9G^XzNuJ=Sgc6YXzVRf_H{w(9P(D>zXjgIJF-(7uO z`DU~!c2U56-|+){>-5ZxXeL}S>F=VA!p1XWkBIs9k=Xh;}K|zIk zJ9UC{KR(;kOC=ZokuKT0kFibpQ_9J^bgcG;-O8p@JYen^i%&5<5??X#&v}=5gk;OI zm+PM|Sfb@qKoB$BEZwzqiPDs3oRPe>OqY>Ekii)SArKp}LB$Ss( z{U1r6_h0$+e|rv%6#Bx{xUSa#c1eec?c&ysylu;)Gu@f*Ij6L~2cDChau;esYTG85 zDmS{N;lZk-ajMfd)pyRYGsc41TYA|7mRlm$J1i8|v)+zt3jZ1>0p2OZnBLmQrfH?n zxZf+aZR-w0h-`6}k&!snuO~N{8v8L5c)hJ1np#q@r)qutia`{W$n7D5f#cCgyqRY? zaeF63HJ#@=@a-hpY=tm^%5QHLCAJ^YciYPhp@Z3+<(@rN0B*|r@kfp_R2{xJJuVlz%*Uz5bMd3j9!t zOiH6A5;ZP6m$$n-W>|1ZM zjoKNI=YzU;cHvP-f6pIU zWI${PHQ(={ZRen1Z?~_yS(>-bzI}1K8A~idf8h$J9nt)-R=Yjop=dMF96km-VT9D$ zz2TT;P|4GVWNv>K9OPBsLg^{f@*B~ONw^w!kjX;3y4>hGp*@#N1hMsqknhj~Rqj!Y zTS}_%;4Z~T@bSn7jC*-XPT4DYu6}z()mDsXopAa}TtwfA;X~Y9^skF85M4X%9BI}U zGZhe5<18jAx~2~7eJKwFcpgQUU4`Azs)x)cWWw?9ry?p0hmG2s?DVYvuv4b>Aqq6{ zz8|*L>N(<}f5u)s@>G#pc*xC@_r?wtOSv1%M7cUI{68-8wh=Msz6d6L)cnL zINu_$81OD${NUj1QVncA*h}7PJj&xyl}JSXqr`)Myw$-RZP~T*)m?JRcYn_8#-+;M zH=aG>-Z+d8HUOM~6icJt>b}JqD-oBxF4z z)}W9RqpML?6na5&HY`uRTs6}il&#~UoVs@#6fs1klE6r@MI*euS6(oULTOhy$*Kk|Kmar#7WSGt2g1crr=wu{5L;`V= z_G=sl%ROadi6-M0XjyQ1cqy@MpkDNeW%Y9pgjB14sRMADuJ+&Tv9eF91fAhl z>yICNdUOAo)%(piZsO9DU~jj**%vmeF}}$4ebY2FdyUwpIw+`aWhQN@MwHm3O59>@ zqzfqbHnYV*O5K@`u<5Xjw%Sq_hUZ&>v*|mq<&aYEZgOzD+t4FieV=T7pa(+fJ$%t$ zuNDo5-ownFip^kPb+4x37){k#k{YYS7Wj%__rnx*^yc|009@}#?^&nVW}bH5czgt? z9G+0`SZe={`0s(kITX5v`BTIex>Plr_%+5UB99xo*XFo~XBM34#RU)w5stbXwAxjAhqWzy>!9Zln0;m3Wf?*^&_r zcsNu9fN3-{BvTnY6xZ9FfxIuS>IwfQz7rTQHAa&LCH@ma_!U+@-bTVZj$NtQRJIEo z+yyq2KnxSUP`lb&*%Ygx;rm@Z&p}2aNL>;rJnW}7C`Z+jyD%#ocgr6kb|Et{;x8;i z^@*)-WroWbtK5N8f$pVc=0y;57@>kx`S)r#evIDXEY86iL*1z!QddG&V_jFZB{`1d|R}YkRy3 zr8;#L;^v%ir~OCQQ(iqRIHyO}Q7pOM?g%0euRJQOK9*M8H7QY8YsqGb zgD0`^a~WH0V*Ojz7%dL#aZdm=7ixvka_RWW;?Fx}#_?RS#6xbMr?~9?+pVU4XjLbc zXkMrK`JKuL0;uyzyb}nS=k^vHCZ68eB_7_$g;$4OOO*kYJBjy`)jqfjG4O0DpC=Z?1f-ueEx=nmpN*YE-QYxe4rE&DW%Q z5crc%(ZcaRA9A8u|3BVz_G5vO7X7rF-$!yjKNUn#^pvUR5V@RoKVZ5h-Id_L?uwzu#^RXrFU3?62)MK9sD(tOHGLu%PK^!*ShBu zf7mDC7`1zSoZnXbjbcpe$o`G7^pww$3#nNPCR@b#DbpX04(Q2R}ImhZ? zB3T9i%<|G-BDc=SwEz8^Lr1a}6J%TNZfJ4LUObXK)GdSfVsSoLWQ$9smSp{5FlATj z`+e6hsiN{e+-anDg+tG3^}!~v*Xeg3$!Cc>Ze$^u6{9{N${oD1xUc!NMy_~5%L}r8 z6kowPL`z_EUdEyj*+q^Ng`K$wgLqi!;?q@ntkE$?3Q-P?Hb8ESG&xe8T8EES9*E1P zF5I*UP3%M%gcK*(iaq|PiqGNc($?jk`XYzUtJil|%wJutv9LBTT(E)op}-l!|Ja1i z`gFNa!|#VK;*3DOa;*_*RC9AoZjYII;G899Ywxzp)CbY@_C?WHG%`vd^%JXaag0)} zju2gXH_CPPWhO!f(w;EK>)DrO$Vo zW^;9Sh09Yd^(bD^yrDBodpU<}MMkK6P4B7EoUZu)A(oK0Tl7f@X=kXxoVl z9rXX)Pwx^puJh88i!^58s zK4i%_C1VTY85>%%zdwo|vC3N~S9}@r4H<=gJft{KCaF2aa$CA9f;9U;R*<$k%t$ip zx2SU|O*619;P$q9R`B3O4W4pj%C# zp40l*#02Xz^2{&_bsmwEm5GN`4L4T{&e2v50j$)aPGvRKE%$YiI*Hctfr?(5O}LKI6(CEA7sA;;6MEMfdu`L+7lV9#~oLaBE{SVFzNSaGQ%{ zD&L-s;_XQu*x3)XPhfo$k5+_g{{1riuTcm{Rq)E{f7c*ofPWj-3035vsyLMe_o=T! z?xHSUp4X+Y`(tf?jR$mK6*fi+v{Fp%Rlde)p?8OsN&34((5o8VzPUH9VUujQ5GoO| z)G9uc7d_ItCWuk6G`EG_^-LBJx(iM?8De)GEkpdydCKjWxiEBh^=&$Pg)&4mwPo0B z(k(4Av5B_&@+PQ8qz{%x50~8Xea5ATnJ-%EfQ}|*FHC!hko{K_{WaQo=z)|C50fef zPzRfh#_ToQnHRT8Bp_D?0KdYf$+HmT-b>_8SkY?KFs=tEBd0&0iC8wpRVkq&(DfkuYKm zYa^?neV+JwHuPSq8j0z`w*N0%r|DE7^9~OEj@;8Xjbq>2kWbHgq?lj1u0s`mTGy86 z+38JseDYig<7Nr?*Ldy^6jU06NPHLsg#MFZLqe1RZ~;}i!%%jYEDrer%R)J*eC8Sq zq)APGDjgZ(HPqqq=GTL4%=D+=>bGTcAl#3$BwReH>V8A=K1+Mgj8^i0a1V+n8eX~n zZAA%XVS>3MSk<@aAIL?ycG4LmW~h_L3oPh*F7=g6B^XrLb6gzx+PSly?Wt%}lkAUuz* zRN)XVZ2{nNUD^dWDwm(($D+$R{qr3vTARh)GeFc8S2;`b^#FmDQ0f^tYeh0;hP z9Wz|o-}Z?>l4?fS{_d{%*Rx5N;M3XA{CEV($q_M^c0s94C~xm{!Kg3hcZ+~(VE${os|nEP!LWQNFLMgiln5sO}kg%;@jJC zzRPvb5e4RM4Z`I@naZ1ctf6{QF-+Rm$t|^vgoO8McQ74AC%7?0cgi?M_NUn6dNn-@ zO%-F-lu`id7Elxv50|~${zCY^WFl^H7e#34$75EQnFdD{2|lM}CX4Cxa%msg&kZbOQ0VGbVvn!qq9>}c}eoQeNG|(&QQIME2 ze5E1HPK`oMQ#Wa$5QN!Bk9Yn6r3=IE-E{*FxByq!(hXn^#nLM+O86>Q49Mx^V}&>Y zxt=wl)4QXP3{)YR4ur|o=nK2f8YN<|*Gh;9M2*%qtk_c|z+YbuO`4+Tk6IqjC$l_9 z%aXSnoA$Be4;(%qE85&M3%`yAnClHogy0uxjvy5C7Va6-E#sTN$80YanY!)?*z3>c zpoEG3drZv&r?LCK0%jWhOJ<`s^Op+W31qMtn zXg(S6?p+k)7!YaoU`-yET#w>Mz^Ra`QiNLe>mJb0&_|G zwAcz)oXmBgaS}9`FB8vP$Y!V2jj)&gQo4w8NnH>FI!~=Uk>T>NP1T3cB{G8F1;0J9 zbsQ8>k4D=Kh=rNXa-6rjvC6qOU+NfhzxG9ioe?pi>uKKAm6z)sRX*EN?CCE$i7GAybrEq}ByHC_q6 z_}c}a7JgeHRmFEQufeD^UDiOk-R2U}34)F=*lM(8Qax|zRtL}5Z-0|9nzII41Yy?d zpK+!xg?9w?5Bokl@iTy9J3w$aaL;2LqZs#;@*}21?!)sah*_GFqUxjb28b9*WLMTt z>v#`Vk?(SlmlNcW23F%wvg@Y|vA55ck|suxWO_fph%DH3(Z)_u#78bXABj+I|4Qs5 zz$V?XB~Cz}z>Rn+#RRf_>th=Rl8?Hc=tg8OjZsZsJ-K2N?f##-g_)q{Mzf4)@%J+- ziN7s0)+EhEHk9Mpm3EeYYgl3);g*P1ML)~^HM4cwN>g;ktE33pqRk^2`jAo6+KL$+ zfF%<4R{6Od<~t~Wy>NJT-uIfboK!13z0auuFvU&o&%AU3q4uA<=FsV{4vcdA^i%s? zPc5}F24nKTuKZ)Odk%_^)It&X;7VLS$xmcc0@R{fi(o$-W9k__SCk;jRME55n;!ZD z&Mba_&w_uBz0LQcPJVPh*w*|{*a6sb>r{xD{Pt^V#8Z(BksN1{YcT&tCI6G7aT4qc zD?HH}Sq$#CLsbNDX$Y|$frVOqT=D*3Zda#}&}zpht~Olaf*5C{0@g9g%<9oGw_Bii z_KX=Ct*nGNE2J`7CK@VSP>Uxq4odueXuNo$*{oN*%0@$T^?C2N#nI=M#9RsKQ)WDR zF8G_OpCNY&$?}%y%Uf#K<#m~|Do0_t))}Y2j(`j3ScrF(A71H-7$5uZZs1e(!tQc2)zR8f>1cB5I7yno3oHBV3)b65-9{W&QPbZvudn& zeEeqnBV4NK68gKxe2yK;1z?_h&(G&wLf`M@gNe*~&ahP`c7u8~i?J*gWhF8zuFtcwSaGl8xM(J8Ws8*P!Tm-3wcq>i}{x zdrYy$1Rk4Y?KRubK)J~|Y7UQt$Q9c?Cmp+M&W99?ea;3hta6<4P-&_SnZ(65j*LBB5Weh{cbZ!ET!u*;-F6MJEY z5gWO|!}=IRwNq2zn(a1jZKkSQXuzE5yA#yj^i3hlU(8In|C_us*ulrma5S`ZC^d;y>3#n zy#t3$qSuvFF5X<1Q=`dsn>2xg~|I~2PZz;FK2K8(XM`Y#Y3Lm1R~EAkNw|; zGqpRhzix=!b6s8_KfRjuiGk29JY=6jn<(QvZnUG3bV#K75V`H+gYr9J z^UB!u7gI?eH3rs;7L%%QplaI`wI!u1C8L!3?F%4#v6%%25YbPT;^cx->-%zZaxT=8<+3LX*hJ>4g6hO(O-F^rX306bT`7`a)X7*mhju4 zA(+ZR-`81PFt$99UP9E(@(kp%@$~v5J)zlMX85WRb<%smh_E`V3$axYkKy^}ARU3u zE~x~y1voesJNSuNJ-z$a3FzNOCc=*0^ugOaPP`ZP!VLhw(Sc0Ia(&$mNl?&Q>+n}j z-cO6Q+xXAfmTE7-#(iSZQ{$2B0u62V)nBXrwzHBnU1=ec$A)A*tJleKNH34>y%r;$ z{pL)y%`8H;Lx{1DOHa`Mt^Gq3N&c%X6tV!Y%TQr#8mrNno0(5QsjaJ9eO+ph%xR{LrWbv4&z4p@*n95pb8yq%>Z`G z51TzpU@sFsWuuV9HAMAj^;;Lq)gbxPAD0cQ27Km1t2inv>@g!y-&l>1D!VW~+*1)H zq)jH`aW#4={eRY|2mf`S`L`Z44?3XM`nx%!j(!)uufK5sB|14Frd&9H4v}o;a>vuI zq+zT_J#G*wCF6N` zh$8v-gf6yS(swUP{Pf-+|L?B%Zmt}|c8ES$!!{ct^gSOo6ZMVQd`@MpvLI1YlK|7E zx1CRvqu$fo^1!raPVt*+11=OcDvWc^V{JC8ZkUkoJ;-<@i#^BoTIUS|B!ba`kvplW$slr ze0u(~CdW1G`NEugkf*!sxf{&vG;8@QpA&X6MJZKL<~bB!zL_pC_{C{+AUa zO0`dRXgwNeNcAMR-4#&h@g6^^BAp4qhw?p!h83Q0c!LvF#WD_V+id1^fdh63B4I#1 z(WMFFE_6HE@+kMy`C(ItC}0bf*WDS&X2WrwOAP!dCR}d|d%a=|6DcW#litztcZF22 z&>#6zD2E@I56ILXUWNbxond4HB8Kf9bO*xWo>_tP)y6W`=R9}44F?WOQ#cHizxDL{Xg9Rq(Ky`>J40k9AVt8EH5sD-V;hE=K^?VCmm z!X_GQ4@~G&4x|(V;2TDgl(c&FFt~MX0n)y*Hf0$LU79OUsJR)6TYpq38lLbVFt_=~ zhwxfh7cGw>mVLFc^aLdafR+UlXs`Yk4^v)|$zTIcN-1^g{7eSVP){%}H*D1o^itH2tTN|5H8 zCdI;@w#;xlQXp;q*zrZgeedBif-crF<&inCfPmKDA+Wya%+w;2*!Z&!SB7$INR(Ag zN^iJ;oX?6FI7&wt;$Ya}$wc31cdz23g$$Jt2ooTZHn_9s#0kzhw%U{-O+AR>;`l5Z z!0?)+sx>M8^iLWkV8I~C;5L$NHMzamK`7TL*^0FXm=c9Tg?WdHo2F=n4jWv!PY$7NDkY&xfiYf(5yAP@hUa?n0!%7UV*A8Z2&n$dGI@r2@rPxgb#kz8nYH#Z``Efo0|tV zJ)t~QhCG&v|LTCR$uK8#{?G4r;9tKR8gPIdi8A}JEA`G^#eg4ZHuH14={5L^e>R|) z6iE%@^_E><|FE{{g*U$eUA247Gm=gmq)1!E!9YVYN>Qi-(2*}T8gXe!y#Hj6;xpvK$YN4ya0*I3lyBp>{ z%mcDRWuoEe>i<+1fkVME;BH7ZZX&mScq~4T0YhjomeFw^WBZZ#+TzUXwh@9-W?D!d<(oN~T7r5}KeCER+f>FTa5v ze+J44aKC8hsJ8FyyIilQN11k6QnE5{J*l{uB;F6(6eGW*oS7yPs3Gy}8cja$e1qRq zdDCI4b)N2qzCb^AG=KYDjMK)~!=QQ$0)7k!If_nb0tlmUi(e+?X625*$IW$oBs)6O zwYM7gavxY=%!2}#fdq5!JbFuQgxAk|qb9Czq)VRL{?t|_G%|Kb8L15pFv<*$eF-Mf zW%``1{{74B*?Hg=$Mg|nxy*|w&JFXE`dYarAL>k?z$zMFF;74{THGz4O=1#Ro5w*B zZ%p^o4ewgKE=f=rl<!trRl3PXm4)a|i!aD* zV6-_wt7ue6^mV^`Ny2@}O`Oa;4q`x{A2588)r{xj2rGE_dg$EOHA7a6u?T3 zijW0}n!*ow@DKA|v_IN?(^r$d|6M+NG7lcC-f z0@aS}|Lu>ou^lGtctR(@dl*BoANiaoo;laHsV3zP&~XdgTwnB2&K;co6Wx^sJY^9b z6puP|c$NolVB}~lVzCSQlrS$qUwyB1P+;qxp0zoAd$|f}Up`N4eu(gI%WN>TKR&)U z@dLSq`1S4t5FxHYXXmnTg|Hgqxb#u*{*cQJ&& zK3da3X1!5EswnU+!J~I=iZ;`}KI?Re{B9%o%_Hqj=Sp$#qfNR)WLs$HF|nePc|b_g z;~$(%4D4E}ZCXaKNz5mK2v{*`={GhA5nXT4$izZCuJf;a4EgTCoD-0Ny<1YsIR))v zpIQaB!J)>e)Ef6j!1A5b(0+1JC?0tRL|L@?`ZQP#Np6qE0X)TdznGR*nMO&7cM2SC#I*w4@fJ(~CF;x%`fO>+gS=5ixam7Pg0T6yVQ?vQYtk2# z`P4hD6dCL(;`LR0)#3TyoeclJjv2*t7#>hBkL>dVv8jHDuj3K-xeZs3e|!SomewDu zz5m^0@i$md`q8jl3e+XloHoch3S!vq)`?a38N9t7$BH@V&L9qttVchJtm~jBDttBl z)NZ2Chx*}8!d_#XWvnu@;EMvPU;T|}^B;9JL8*{*9zc-kVjMr3w_^DZr5IVs9;`bI zed1)3&xZC$n>2zL_ljQ**Nbwtz$`1P4TJFtfk)RnsF|s*pq-21^6qA5zZW@NldlRM zi-s4A|9TzjrMgXVd(KIh?my+bS*zRz2xuiXSDB>2@AV8KX>5eo23?s_4%u`gv8DQrvN1 zeHLNhtB|}hyMs}a)Kxi{00KlDCdV3|{runN-jBY`Cg2^%65XfmS;NCl5t3`jq;5HV zq5O_qqOpU>pp8b_KoR#{(z@h0o>c%@33KxKQe=#C(+5 zW6uQh30xUa3Ay@$L1fE%;Ns}dIF0Xt`^*09SgG}Ys@mZc(e@7EyuM%YqiC&zES9C6 z`;!ZirAZ631ez$M(#M6}<;))|1TE)8D8Dip_ZShf5WiuahJtQYmlYMVKnY)nWr$fs zBnpkEj87tObZ9XZ9w%_bO%(5G2?`y2K3VEFO|V~#J9#|J7L)9r<{|aZ$muT-z<$pA zOI^Z;uN7`~zAAw)bV0Uq%Zu!vicO5X$kWc}7i74|M+TR;Z?2u#9DK*RR+%!Cbxpvp zv|g*=ui;;9e=X|y?Qcs4{uouR^fGBdX$T}5_4XDBNO;D6uQ7zT32qmkT$ENSZLW_D@f!k~=dT$G56CRQY=2&~PL>nXRv^%i;KRJ_;c6ZqU~b{G9Z~uNvf9W_nc8zg28Jp}j*5 z^EL@IrR$;U0{MNkkvrsH1q#)<&)rNd&R+uwUsa?Y_lonIIo%m8L} z5cL}QEDN)95C$2nufCS@qJgMBC}Id25dOita~)!Gpx|55NjWifbkG;83hG*{7Z3)0 zas#!zQQ8oRfxG(745>d?RT+B6*>f<2y-MOs>Ss0<_;vz7SSmrq^nIy>RX?L*C=jDn zCvWI=7O~<6u4mGM2pu*!K}wlcjYeKNdqj~vJzYbnedgit{T+8t_b8s%9ny+Q@q1hB zPdDE-adNrsH*yoh7SqXF+Jex5cWGsp9NC=z8I=Yx2BbA{#@35}oYp&*vn{9BqF%vC zgIQ8U@yyGCnKxe~9=D|cdY(SL?qHO@sXFp)Z$4lzaB8F8^hZorqvCG9`0yI6bIT^U z<32y;@O$>~QOavM-3kU86}Rb;-Y=7TkZ=i~E$=z>Xzj&AftOB|de&~Gy-S50j zvZjAd&jfPznEK^IXR4)F<0R6jd27E>Ve`|1C}Bhl7Vwn_y11Yyc)s#cVJmuz@$x8) zyB_i-^yd~372QB1NOwewHN4y>)I7(h^8*>d$=)q-tkQdzrClbqF6-f1JIJ=wRQ60H zczEjI6AEW@BL;;VSnORxxdEr)k38emoqdh8s%Qjd; zXzn_a#6}#d_^BQ;8W23Sj8;FY4_H!V&ctg)c}}hYZG6b)912i0ad?+G588mLpC_ng z^k67Ebk=F`>@da`zk2*z-BfDRkMsIiKae5Dx7!wD)l!edNAdlYq=}O4 zPDDCofLrw*eh(1eHX~2c+S38EPL(>Tc<*tFjQ|xglK>Sw@^J%^iN7;l{~s+twSQem z0t$X7lEYqH&DtiKX^q=sxI#e*^+i7!YWy-T(;2 zs6y*q)SJDCYhpYXkz~eo07MepwdPd+k?em&MLuZ|rqs9?YePCbbb%d^r#oo&p7tP1 zx&V*{vE@U3mWE&0o!*&w2J-X7O9cTfOaTS~vcdCo*+K3!#&bwmpvR!cCQTOywYlo- z@q*ptJ!kJ{)DnG&X0(G(fEOCi6{7?_S3SOpt`QgB(XFrxyw9fpV{(QqZUMDL@QO~KQ?-K;PmvfD?gk>%6hMuxqHVGFeS0T7WowK{ir=%H z+jWO%q>kCYAFp0s2D&bXQK z`~p$DrwDTAylJd@2J}Z=gQ0fPH~?l|nOCnQ5~lX3t5z{(Ibrdp-8|pS7H&y0GN#KJ z8x}2I`VnG^9q64BWf91;r+objq7Y6Y0iH0((YjdA`u91PqhanvxZ6Sj~(kRlWW_-+|}gNqs}Yt z@X)9dS4jITQxJZ z1WD5kN^A3LMOa$e$NjWFZ_eGrwz{l{rOPbqT+m4b`#b`wg}2uj)nJ66E3b74qMySW zlzfp6Qy3@%)8<;{x1aZy>(rlY< zCTNj((TF*^7)uT-eW-v)QEh3j`ih3G3(BsKP{9YIU;IBdqsrUamg-FxY0 zTK{>$6Bvqup3cF-hoUrZPh9CqG^s;76(b%q+yQu;T6br&P~ukp6yqGP{+*o#1&IN$ zK5t1)CQ)IijCWCdVWja&(W0DcEJ~(*?p!AZ6}wO;QKd`xENVNX!aG`)Vvy7~c;2r? zrX#Tmi0utXN8vnGoIO?PPAv04OzY4*GEcOK1OM6x7hmDx@6KDhoqaYy^mMO$&->ys zxnRiek691Bf-$HNPv;7uLc1jDzGHX&^=%+;#sYIre=g_L_P0S#fi?RS4Z*A$C%t3t zj%#bh`LOfXTwCSkceA_R#Nady!Zy*6Hwu zUUA(C{l1v3h^0ed6T{j5``hU%tGE>gb;>ss6so|vn@qSp>~$S4Upp<7GG`1->aZ>h z+Mg~9>g#B|X~w8Qv=upnoP?1=GnPOOV8fOO7||y49_eym##Jk@^?*X`5V71m1!9=6 zY+V4cF80hRRwI6BHTk}jqc;mr1t7n<8fGi*u$veFF;`ow!i=t@-?SD_*=7XcERq$9 zRP!=h*>b1n21(?x?F~xeb|Vyxb4fj%J7VgA39xQ20+f14uvouMA$tbHkLKTF&a_HB5ojYDqCN4nRMjfYD_yovDQG-nUrLcP)hl0dG zBfBB4tb)GYq~y`zU~9){(>;(5!O)W?cf6K$|v@p{xKuMZ;#42riF%E8}9GVfp1%NCw# z4ye<+d{NphfMdF+I2StTR0dm{3SNg*GMrohfT=yoBL>kXFaP6N7F1^Hg13UwD7O|h zMD>sp@NLd(zzdd_!($Yey!Tqf4HUtcw}I|NE40wE;&|@BMI1r5{)ke-*z?pCh>_Cp z&Iz|Jagk?F*X#L4+FncXXEatDW-R9T0&d{6vfGJks)6X4ZOqkvwVcJA8t$n*>j|zV zfi0=s2kr7Gcotcq@}G@8{+{w7x{^WCRU5S{_R*8!Zyoj&hFRb`%7K^#(aFEr)+JWZk-zpXX5;vvf9WG4HN6UwV$hK)T|H2l_04_r(RH zyj_bE6jdYJdzz&HcaQH>S}s4*_<`W1qI{emGXTQ9;lFpFc5U?`gLqmj1akZF0gUko z_#PyB{G!jK)v$=Wm}B3~gQJ7;L(ToZSx%H9BK0C z4Qj?EM_#_i{Y6xn+tX|6qZ@AFw3vy}dh+)@VT)u($hXkaIDeEpG;|leP;CRg#I8nc z>)n~F|Jb`(|G-!z?JI!z*~@$a-@+m6U%cpl&3?O=a}*CN!7XofSZ7r&ou>rF<&R*6 zr?19$JWneujk9o$y^z9(+zh;_f}N??wFA8ME87%`sI|ZmnPuXeJ@5li_JzHr{(Jmh za$Z5Aq)s#%y>)*0J#9^QEMB<0fHrn z&KO&+@_@zf&j3A-_G$qN(d2*qTh%QxSA+g>1T7z$19Ta#)LW|$dMLXnr{Z1jUIvM` zw)&ulW2T}8w!3?!np&z}E8r@iMnHs$C}gy|Cy++2=(1;j4zba?#Q9NS8Wc2Iwj1Vo zZu5Lt+T`N*R@SP?t2Y8C#L3orqiTz$pe=;&Mi>^E#=bB*BICj)v=2nM6XT~nnV~ak zX{v={K`MvKmwrE>0Wi`tf3&#k?x9n9A#E}oF;~Ms?6xEC_Rq_6$MOE69qz~RH|5HT z(wg&9#xhc@__9~Pk)DQquV7C55Fj8;!!FGnEM6fbnotrhs=otCr@pIsBK-Sr!OVyKVhzK92!>tIrQo*+NXlwwkexve&aQO^3+uaLAJ z^FCNTLv+dx97nB0DW87q$3CW8>$Wo2q^&*n!oB5dYb+|atBj`}D8{{TJ-=+r06TSr zL^CEsvKIm$9lS!-!i>`Pk}n?w zVo9KaRWC59liF#l2z2Rj>izNW*G_u3qSD;>$Sd6MaHto&{f>?zCWU)6O{5cUs zvUlW>_F>R9T_h>fhmz5dUXr}{@a{2?=?T83pfE~}VewrRv;J_0@FihoOQ*eEc*D&4 zzHR$-6GL%Z9E^X;wf%^7eUhWU(;=LdJ~y-(kh|k*M^jY!NNVhUW)uf)@^6Yj$xLDs zHo!Q%Duh!md#^CNxRNxiw#5i*1W&*cv1N{_Rh#q}f)ekN+V$hNxu49rF9@4kw_iGG zGI92@pWSJ4QZ?HB+txJMRal$Sd>d2(P(6$D)TablQ2w2#1oi)niE4i<;trTh_?rXk zy_-^)a~_0z%n*>>?MdD-y)pVy>Ik0i!hch$sz$fP9}%OTHO{%hFX3#dUH(L4d99jr zV5hG_#q`JKbXG$dDlub>P}~PNN;ch;PEwA6z)sZ$=GfZFox^mC8}w5kX&Eit?{~hL zNP8HPOPcyfIxdo2KsK{%k6-d}+czm4`PKM^6k9~pg{U=;HhBa%aI#i#HUfEUbQ@sf zIX%>wd7a37iyZmXF75%9W7;u_4p^M;i)#GnB&L3Aft}F9*C+=~YW6w`j&m3(vq=`) zO)M0RusWIQYMx8L-tdn3M5?u~a_?~0a`3w|c>#A_@-(;%`(#nv1apQHU^rMTaSdoP4F*kfjLqi4eLWg$KdO(w+*7ll7L>oM- zzq`{Y6J0k~bXaV>8D^+g$(`xqFj?9(IiKN39?VDa1l>r}`Aj*ox;@m{ZA>o>dW?-= zRU=Oi$r%0VmI{1L4R{_dZ%b_dsO>D@V+Njb^Oc{ZV6~#o;5*mQGd#HA2wR^lV!)4* zZJV(Eol_vL82pjC6y9b>9OOdYei-za7}&Wu8PFCizXKck`pyP)W2lr-I2`!4wMx+y zSqNQC%~|ZIom2+wY^}ZkA1*E13>lk$h|b+8e+U0TIiDYJq{}s??TgA=_#}qTzizna z>}+KVIJ=m<9ugvqQ(eVc&`$ zQ-6K!gi{nwVT*A0}}4f=WKGC#G)Z4--Dtwmj(`YO>3%5 z7m)#eQq0wlT#dg%KGqjOH~HmEYlyLx0?en`B!H^K?WmJjxjT>6Jn}?A+7Nez(@${4 z$B08R(WR&tfEJ8*p{26=B zG_P71FSa?g;SJjaO%!rA3rb_PX{hnkjTUw51u8BYMMH8kxlP=}AE#{?xErS9(Ow9AJ8C<$m+&IZ!Lr z_NT3T%~pUkfXKNf&k!A%K?xjv@E;Sy_|)B=>V+I1H5f7vI?A#T;9LG06}J_QDC}cE z-4w*v4l!T)fd(5Sh3WC`hMBfxQSHVI(XV=xn;5#oSDLrDw7n~{7qU3*oQCAF5CHB? z)DD_w*6;j(BuxiQzdk@CCzjaahKCh-rnxV_zK|{wL%qu%60B`7ONAK3ztU9#!_ev7 zpbrb0PJNSgcil>*o$h9LupsipBxWK}vGv;7yI$3tDkvB1%Xr<~Tg!(_@}aov*{soU z*PK^e?_Wvu+{g|CBjz@vgM)jH>z{}h_HuEaF6Mr~ArNoq;*|cFG99A|+PYs5Ba?j| z`a9spdE&|BW+J<6!4>ndaqv#PA9pCCXe?`sDssQJb25gBsl}Z4fzQoA7s+z%RA#|8?F@*9{YPhBEG)I1EJh ze(P+@K#n`lq)s>TWGqJtr4aU~fmEbM!L^UHP1o%_=zFBtr_D~%NtV>s+xJ$Ci;nI~ z80`Uq=_P58B*;P_rT-oKZDpPnKLnvs82DL?IG7H;3;45Yk?!^5>G3O~pxNkC^|t37 zpXFe7{q?Xfx6fow!3KG&A`}>22V*^i3CJiuT8|nHUy-TH1nPlW$`P5O+b2n*V~yF9 zND@0=k~4YRrj>k=7b_xt)!YVKR|V`h7xNmIdGjxYe0`cN^!XD5(y;u&nN5OoG$CSs>GW}dU*LW zlxD0gUw~9Xkb(bE-59dsx-af!@M1UNxl}GiWXz|o#H|YX>7&xnJAbLUf*8>Z`oRfB z(UD6KM=NiRaeBOJjH`Vtuldu&($I$~Y;?*nz|DfIJMN@qY%v-F-sv z3{Sv|HStVIX`wdK5X9KD-`*;z_web^?GxrQWIFUhqyWGHc^WZiO=vj5$K)UXq9dFDWH7Q zKT4m7lNbYsSUnAu$-C2eGeNP2>?nf}HOxr4n9~g2GV+q>n0)V+Ma&Ov@(}LlM#;pd z`kVwpe1qo+^%tkw4*<%n@}=Y_pFn_q8VT!pVJwvvoOl#gL_067r|RlM~G%a=>qn;=;{d$NGpIipxrj4I8VLOqi2*g&scBfxNV z%X_nOH~@DvA1yPoW=PU8$rm9`8F%=s!7k9$G^+1kao_LsQ+JQfE<$WZgZN@h6L5-F zETu-57k>oU43#*HtqX?moY$winap^Uk(PD9C~LPqAVxO}(Ff0RX@IqE42mF<0)P^i zjod%qtOWD1rg4}YENg;*V{h3wPO*D0roVidjausidrVDRX2ZGh{VfUlC7$fRt}jg8 zu-599o|@^Vkz4d0PR94LK=pjvXkNnVVaLtQ4D3cwk`T?BKP7so0u?!Rl%CwQMlDZR zpipbC4~$)FOhh3o*jW-T0Ipt%^oU*?@4h>`J|pR)XYcQL9bMgk@w%id9i&_#8E^W0 z6jp%5TgsHiWM-bEh+A}vyyV;cH29<5CeS9?xclBwe|Z&qxG)$pd-}L9bj^s9FWt5H zLDS^=lVkJQ$B%;&cKwcSY1e{@E{0Q|p^r`NYTu#Y?kh!*TEd%KtRr`DTf1D!T@WGP zW;>P2auocJ>798>&lc-JFRpG|9Q!eVtO&#eseK9c2wWP^18dm~kq%_NRu2{{RB1N@ zx2*P4xt4VL6wk1hEKP1uRz=A=6pe6IR)`I?U2&bJNlg9gH#!^rj=c89$a^{$i>I&y zjT`r{0Gs@a%;Oh(2kUx|ZgK2)4T;X!he;F9w}TO{2Cvy9Lhj^Od?=Oca#^X~`80kF z1EU`zQ_2^`PVytNwsO)eX>TB*7YrtID`#6@1}1i=u;%9~^p~lbqzFYwbcW$XmpYvS zDtY~d%1{om$@iJm9_iQ5%OYigL}-{Lm17&_>9QOi#&J`sCYW<*2na>Bd(L(dwRUk4 z@-oGl7ID(yOV8uq_s$FWxj8i$V!UO*#qjg$BQg~zgzw6M)UN3xiJpq(gr_jEJueXB zUZ^yjJv|8m>i}{{@AKD2pe!;s51%zKP4Kd=&6%5HQ+s$0pDw9;Gm##fBPC|?h$D_3 zdBoAz$DF1LMJumQin#zyp&S6K|JcBFq!Sc39!Ub>ict?yb-b(h(D>i?6Qv`vnLrHy}USe_pvy z>A)YyF_eMJaNtq47aruEo;;(f6A+~6yyZDfsdleeHPiM-wvWD{BLURHGN#W&wS-t* zIiHX6KC*?jDGZje*U5ZNFV1(Ffr6ae#!_DyHmNPMDYQ;L8r<3Cif_iL>~tqNej=cCpGnFv^Ge!an3 z>n~?>SX`V}{Jx6DUm!GW+3%r3^|9v%LjimnMRO(4rc`Q`7Odawv0pp7E!f}jAEM~L zA0n;9QPN{#rC+~v1$US`IgfqGMigiO>43AhrkZM9tXvn0ybO9FY@xruyr88K4W)XvrE0l;m3Tf@O zZBSU=CJp%!l|p!!Qkgew2DUVQ?3STl(C%tabdgV5X<2jh8Ga#AS6>cD+!Y@OWN$3a&=&SE=k>K$lAVz_F@Uh_!pm4-yZEYD{pxbF zH#9#;hYtK$VLHS8 ze}DbgG+!&h?44~CEW7Q+`#)NM^bs$M&8^!8-?#YAcPTD+NnCO@&#Q@q-eYI~&CMgW zo}4s#vs9zsDh_pnZi2bo>-N6XLNl9__bzy8CJ)NJ1^W?bDR|=WJxbsA%KRr!&J`+R zF3?^!!&qP6v=x7ar^pC$+ZR3oU*x@V9AsYdmM3XW2@J*qjqQ&^$AkM7l*}qGO`6r^pyw-<2jKpbBK?oQ;Ky2Y;eNWH!GiM#)mhNYS{-2xPltT7W*f=)U%kN7K&Y? z!#~ZRhj7QCR#VwStSHehCZlFM7N?6*AJTxTUqM*!}%SL*sy^=Bf%`+Yd zJ$HVXQ$HZ5h-H4R9+E?mdrlSsap`tn2srloV4b(7lz)=R?~-^d%04ymk&QUycFLLg zxBm{0h^OBl>i$q9JCk~==|`LNz}DhDr%!T+dG?k=!Y82X%3NN=A#dBeO^O}O%pd(H zReAo1XA|Iy6q_fk^MUd7$)6JzUh^``m%JSM?`eA{unelWZ#r@NMcC#2i zg)71d!wZ$H6kx~YsVx$zp~7Q7?7|nmr}!9QeUJAn8(Int0A+X2fRy}C6Hv%)fs^f9 z+{GiNAVAqyf@|)c6p#)b=bR1%3YYCEq->5Fg17$9KUz&}UrY;rtZ$=IO>8sxs@jQTIuCZ~7UMw1K48)9U1CqMl zbrt`wMCH+8m5wKqDkP*b%Mx4Pm>Fi^9}m7?kvhzHvB$D(dZi%~*QkTGLN?Gf!px(M zZQd#SGAZ*{{iU(BrSK3p@~mSRgp<~_{W{hZRHo(K*lN4MM|8`i$UXxl zD=TfhB2HLQpcBqB#`N1D##&3S-*y8k4l=h0**)sY-5ayIiOGff!mOrT9vELXUX=iq zv~Hb9>)+U>c93_XPzRp^`I)dm!EFJcrBA+l=NJzZ0?wG6&D|@^4j)eVNaSL(k7m_p_G8M~$>+`# z9%|-a`%tg0V+@$9AAmb@9B6Wx>-h!H=g#Q@iZnceb{MfJyu>CGr+`Qr8g%Dbw8H8O zaGo6%=w&Nfj4!qvL-8$nk6%j#BYZ`c`Er@jIx^_)(T5Bd{LEOTzTDbVA)p9C))*^L z%usxw*H?VFO1-TY__A(T_6dkpqSpG7xU$lBs_IBtLcNlNa65X;c+%EgfM%fWP&NTE zy6}L|g@F}#zFMn+pGzO~$msd3ej>e$)R28rJX#xKB-ATXq!Joz{J{|e*Ng`DrI*II zNbbpkQ8gq!{0l?n5$S1GFImuJsuK3a1+1llMlm_(cxji+Fwe|> zKMtJ29N2f4?YU-oAYb~V4xnO?shB;q9f-&FDidzHEyUR2g%)J0cMjGX$m1kiFs2C^ z-MR!-CbP+qKh6JiLRbF$ln`X%oYS3;%9MOA+v+>cHGNB?!wY_4v{icyITp!{*VUei z^q#V!s8>!JVRI4$3`xnS?(s_wZWK&uk4btI6A_a_-mwF5zB!`teT0wYg?Vi32IuN^v~7vn2inNVzOOldIib3-@Y68KLg`#d@3X#Ao z{jDFlLZ0Az`ZtO6>jpE!^*^yQ!p%q;tIre6*T9mQ>#qi%jx(2+PZ)GQ(xtO)ZfFPf zwlzMYh$f4>hzY&e4m)>5pR7yaC-WT^t9DoWKWE`w5{KW(RBmGaTm&s=+S&Cm+1)hL zj;c$ZK6=4`g>2xuKH%q%0l}Vu-3@#BkW>uOkZUVcT`p09fdjJ({@ukQHh?-mRtHA^2CUMZ`>&608 zASUo9Qy}MT3gxlSq=92Nb+!33N)T4{bUVZOAs`n3l8we3MxaW86iVDx^&lx_g^kS+ zR$<{elH~(cmetuif7eR z2MyggykXt27FLY{lXS8bUgoF>$CQ&b1XRE?G=U|ZrHu^3w|>!zl2v<%Y07!dkqq`l z1FUm1Q&w)a*AIsh;@TiBzDFzH3}HD!*_mZGP)(Dsf3v}4%Z<+zJFxMUGF zZpCyXu!xxDFA}u94WTHWAmyXQ( zRZZK?W-GjxP%NSq!wNJpRF|7rVr`1hHZc)OGK90#U{P6UdF6H%T4{znW%YulNnh|DKz7#0=*ek_MmooJe<20|Lc|Kii zdj0Am##S&8N!0}Ec=*}wh@X!E{CB$=vjKjlyCf@Ydbz{oTS_wSAp50B_k_X4)?;H* ziu+$8#}3N*Q|#xg?}A$Njf5<=57s!Dmd5-#zEco+eM^PVt$<^-v0N9Ly9_b;&`p>o zz78cHB!TX<**xScaoB$%JoLJv?h;bTpQ&>?3=jyrX70pvs@l;URD4S`=ghGCjUG#h zT1$i1b9<(viNnh-hcY01O?1^i&rYw*SYo$0U2Y&^HXlozl#!!H4yMGP8g{yDHZhCb zxA~1tSYB_E3xEH&E33q|w6b0Hbcr7O3Mao-{UNcFp|X$sAgJ%+p?#AT=~o*yh7CC( zOME=DUo{f#>$*|Cx3v?S=e&VM=~0W;dA}UCKb-S7($?z}BiVpD+{vBP+RAphpf`gR>Emlw z+B&yD*==-d?FpD=C>KI7Ycs*s1he5!TIy8bt=3S^|9t6=! zU##K+?gjL?UO0o`(7m`>Z95+}bCWN7vsL!;G9Pifx|PD=?#D!W#JU?}TSa$ivWXfy z;95H|x?#IBQCpnn^0!m*zp(bd6*tHHVmbkW_OKlHm) z_}k82q6CaMj~OhJ<(1GhPwG_|koC@3;K^Gg=~yvt>T_gtnx7Gh_vVinh2g@l`I zcGO0VMN4W(iAO(gctD8SkZ)U^J1J95Zwk^LnPXe1@9tqIspa3|Yh=E8neE=Z>mP|) zI;|a~hJ%G9fCo07fm+WPf`(+${23B-6dnbCgJk{NRQ12!RlD}DSkvChnH+Nq?<$VR zBxGCisvR)5EGEz%MY3LT9j$Ec_x3RODjqX&BE%KxomH+0Ra?mD>Nwtj^l7;rW z?j9MF!$+6wZ;Nxi2olFbU`EaK9Yw{wnbb74@gjW{G}a_#%6miI2mNf9J6$FoKWfU$ zih+yJGnEAQh|f}d{p(?mu*FC@l*!QOdW~nwnG>Obe~>J2{TAkJl4mA4@T|Z(70LH*J5`dCYr08W&M^Kt#NK$C@#|rv$Q-%EvI9 ze^^Er`{m!v(GM27?!nV!0VreCj8={nppIll2frVk+h+KH`gT2D68VY@ zxk$Cr!d}m_*+iwdHzr>qxn74%3gJVzjZ+-%3tqJyhOlJ|qq2NM z8&fCPXBWI9GHIa+JvG6l)EMYd`AhQsf05|FQa!13W-Vi>#fR=;BY!k6zAO5GhzPIx zO^b2FWVRflqBD1_j(-R8^!!VF4K?kgltYWdjkJF5X_r!Ex(ifEtx^>XFi;X1Fi*}|JUE)XFrhHD z`I08*sA@i#2uq1WzUW66+E{~@CdNLv`_-U)rc}~@+w@u7V!?n7;jZ!RJ(rdUq`lR^ zl5g?|b4-bkvXHfa!v{2mi{$zR-F`%bDMPhkL2rDhEk)N>6(*5S$3~2Dc(2p zL!_@5^yIWl!!c3%arL9A4aKpV`K4I6`j! zCiVy%53@UR%aMmM^LqL;PGu2APSQ@75Gvr-5R{VYLHT5HrBK#PNw@HlV!hJnozr|- zCSIlq$b9^V;)W#%vSK|a5rXrPHMcjD zF5K=g{9G2~9)%xZ)=4xr)vlJOR9_EUOtf&Ob3kTgwb)LLp8RKJ(y#2gSQF<&O5A*g zC5s&~IP=zo!xJ&j)7AsszB|nWKl%c$7qI4YYI=MrVMiD+fQE7SSSOmlRfrr8ZDU4~ za4~kvKf&__->?8cV~G>Xb*A!BBm)NaCuLAb57|0XP*?iy16lxf_PR1bce~kb`x$6} zFzuW<2$KO)`GORWga_W~Z{MNx&5o1_WY=PF;2Ti zw*i&FOoi~rpMok3v!hKbm%f0M-ZE62Ji?^>MT90~Q!SK#SlAdLr~;0j?Wghs{_&z{ zCxhWKwGOP zl8q1g=^|hYFZ{ba@4r5Ef75R)*%|Zft~$paeb;W6c{&X=KLtnR3$%%x5;Fb9g}>oh zJq3$RK`lwB$JT!^G3h)$IKnN4(GLdr7y)~@8Q#OVFNyF8UKk>UW2wyk(bB?q#xY`R z?@nWYh{}{=T^E0~J}-t6aVj@i@CRTP{c!Qiht5jj+PMCGE^;E&23Lup*NJC|o3e;G zyt@6{Y(5G|ocuE@Hv|mxnTsu6@NT$?i z2JWc4-k84%YX&TvX-w6ZH-!MPJOtseM2BOYPF zgl;dle@2h~t`b#y<-Ym;DL>nl)(%YlOiZ|4^P4ET{bt>}GM5?MPaizsDxk&oGz_nVW7j&h^fKhagyaLfFE%Eud`&jy+CjE&& zecU?cBVm>jM6Sa@Z=~gLkyWV26YE#!65aFymB1Iv`2Xl#ZO1kx zFQl24K9+TSZU%@3X}Htm{K1I7;6V$_^Jbvxd>>6-W#yWy%1>YT zvl(DaP=k*>ocqYNSBtdC%f_bI52HGer}a};Y)iwr9q`u_)pyj&Q6K8{owAPttY+`= zYYpG<&p9_k6EW5PQVk{nHP(Qx3doeyP82AUN=`#X~+ybUsJ%Plipd-xLdyK zOP*E`1q)0`%40QpX}8&O@|xu$#AxtGzS9>XZZ*Bhv>?XAykm7sD(mHtQ$t(oH89ZD zKr3dukTR0yzyBvux<9F2B612^8hCS1cUk&VakWA&>t1qFBMYc=&l&d+wzc zV14f!^nt#9{ZYvP3mpGzEn-N7c4Q>PLfawK*x3$D#`_bl_{Mm8;bHjQsxl@BQqYyS#~S05KUMUzMH>C z20@Q~n-tHS{)|kf-Ik;Cf|$y8R_Fs28ht2%M|=0M{WbYeHEI&Q0T7#wT}w7>=w?2> zTW)>GdJsqTc+s7Mf}^sx7+2F6^CTb@$VJkp`97A!#Y~YLen|h_c7%nS4wQ?CLRMV4cwrMlgFq+k!WGDC;vD+H6ss=l@p%CeYbV3(O1ef!@wj@ zVhd~h8lOsfq<$B6GKUZxP%7_q75Eq+hkdOfqpe^}Pc8P5bx9bUkX08i1I>7cDg{-l z<^qb9(das|zEekcollA|ppIFcn>IB!wHSUkNV9PeK8bRT$UQfH@J zt5|x6K&~3t0ALSN^26aE3vEg6ni>r`(^y^X6@ib{f>}?hfi)cHfPJ(5+?hNfX=A)R zCaA8l3a2AhWy~hXHI3muU`J2?Ytt86<xxUqEr4_ZPV}u*qHnBav~>w?lPNxN(Ijo&xk63UTyHr zs26u0TSG=w1kip@#~GJQlXn2)*0hw%5FR^5DOlzeuw8^y^TIZ(F!T&j_NL>xiR7+`I6)LNgW0p9umu9rw*0Giy*HZj$&i9j)PZ8AeP{iGDOY(}SnmKDA*F3yq& zRF%S`_A#$hrcKIE zYGUkIE*Y6?bDAow3H2tEr{^vb6Z^=W7h#o7KqE_D;}19VO|{R&nfkv=Zhqy8L>@7v zU8w>~wsMOz`CvW>y*H_Q8;kys?f~!X?c(2ma%;ctXiMnFh5Cg@JN1n=GDT9`fBrN* zUpyr>8=)DtDh2cN?+?BC%rw8up;a*$uPz(n`4)I|t{JZGwGi7kzJ zgoS)8w04ftGt2H86&BCWl%o_vQ;+vSZZE4`V=9COl+W(#CPTz_R7Yge1J%JnlYNU8 z+JHciu!~OR`nYw-yJV5h;IX{BcQM(jW;J=)B~z3@-=|L-w=kS{=YRVc3xRCB{ft69 zBVeDCy+csjgv6U^&}mk9)C9Z)uP6-IV;97J`fbthqcUynLS_-MeNS*B9eqj8JI=(|bz_ph@>s&AlOkM%WT+Q!63R zi#l!1cnYNwEdKfF{yIx-bH2LDjK1j?+l3Cc5laI7;ONk~B(6rOR^Nez8a`()SK>YL zx+LCOqyGoYKXCq486_WOzcrCM92fF{yKl)QrHFNZ!h+h4#ywp@SE3XwN^+~gmI z=Fq$9x7$;J$jC|-R`N1e@6Da2V8<8t}Lq}V#Gc>22#4B!&{iBEl^70^~ zq}$dbT?hEjim6dbzD|>kpcC4go3_$~T4Olz|1|dAK}~Mm`?rV!DuRki4X7MN6h%~u zp+pn`sY+1kpb-%1C4?Rk6;TKvy`xg4NiU%a5{eWl2`#kH1BBkv-hJjfzxO%M%sF$O z`~fq-FyZFD_g;Ig>-t=;=zQ}WvVqFG(wV{W|4$2`aTVz?&&%`&zkEhZZ6&h@D_BLE z?z~n$zzej6p6nWMT&Bh!RuFP!9<*7`iH2ULE;Xmx2Im_am9N(v$2c#3gr2598}nz6 z16Jcwm+QbAD$IrT^X&=Oln?aYgZ{Vy?eXrsU@0~MQ2+qxospuES2AQt6ND+`_bfNT zK53Lo|=*gOX!d^yUA$q&6JT!vz80AxQPfg?U*dVkbk>Al6DVVj>!k6eQEd5r$w)YUH z%*PGnV)`W}=1_LdKFYa2=6>@fa8@IkRBA=!T)+fRMZ~7kooM;Y&WU(|JF1ZEzGqTh zJK`xBnc&to3HHbp)!v8CD2do42I=t4{la-weW22aS!8$9Pc#wFNbSF`P$@LvnV!d+AN6BJRp+dsrp;GsgLn zW>78B^Fv3Cuh0lXq_1!{3@aW0_#ZkU)%=D8w(aI8Pt^9leD7cJVlEZvz`i^6`mSFv zXI4E`JTv!xOi*mBt|vqBh`N`a+3EcMrBe^jzPxbsyhcla&S-W@%1}Yr6~59#?20R_ z@NV9nC*2zR8^cjBUH0Zoxp7@1Y9afdxnIPzofqzhLZjJ+Cy5!4Q=VrsS}Gzcetf}9Dd%oW?FAH; z^r)*HJ27hdeJ(b)Jrk$e?J!S#}ucRzx7)AKKGHMfXxS+=ZSr*ARBaD==26E2wYvBXjIY%=55G?5Idx>q~A(4biTq4S(zatJW__)aN3VUGduG# zFgC?GDCpLbVsEV(56A#k_r-Q$S7E#SvwI`QW?gr^$t-oDaaPw?UAWuo6+a_t?R|(_ z-Zh=bUqkh)Y9VCyJ3Y>n={lK-yIdP@C2!ljpKdPXTK!faK6Mn@y!!X8yq#t}NBSj> zSZGZK(aGqZylLWIe_W%ixD&nhx$fKr_cWWkY=_fb;NvDn8KV+pgG>we9B(Z>#@J_3 zqiZsjF)d2_;Elg(+=H5r&6cPfTS91D&dA=tmLau<>Oo$KRK_VDVv#OtUEJ7NoA_(# z3Y6<=iy# z>~djyX<$=;O)sc7EOtMvP{$3KR;j(nPi2n$JP$E!lr!6ENGu z#NdjpbQdq;DqFH`QJPNMKKDEx8|}N0hW%0(Q`CoR?y6n2uPpl?+RHTdp~aLHPu<|s zKwn+@ZlR>7=LIZi1w+fPWKG;K+;&N9Oj=y1xN!oBe6#92WMH(wjUABqEnU3Hjy{Q( zt!5lz#{_SpmNdum*-uovCe%vK4flt;JEQkDz2LiLwD^dR?6%{|&DWhG^gccc#>#aA zN|a}9M8VZ1)g?=^*DfmkY9WOO`U&QPqHz~Uovbl6qHMkg@-1eX_Mj`Ni&jNJ$twvl z%P@gMcJm8-idics1U{^D0cNr!xuR&}4JjqXMhv>2Set-4mgn0Drd6x#HvxH}Zs}%H zGG@xO%l75mN8PS*Zrp4^EoSNvE)F@?)g*c3DP(nz^76)S!5KC{W2vSb8I~FAlB%>5 zb)yk}j}uucMsVaZOhRKHb-+}0a?|l|%hbQRzQ%sHy*kaYrba)BcD$|Iqf3D^v=rofy!#gKzm!W+d)9&lTnmM#^hn5cQdZZi|xy!-Us zzi4k)X)kT~z4AwS+``arpuQX}sB_X50T$<#MnSb$(0JPY$;Mn#lMNi>swoQsqRcn0 zkk$YV#&{AtEr@;J`^rjY9&~H__*m$x(fJ_E2JJq85HKPpB}~Pr4{a5yp8VMDg5pWc z8&G^o6%LR}7*y+6@}8Yu`81s5GHN%<;tyryDr(LFAgALKfdA=sXOeY+=6p;LJcN1K zgE{Ced+DDIZ|Ma~ z58#lA4G4uQHGU&0J>4lgsCOGdEQCXzzIoV2^mco5vO3lUdZMU2CU$@2EhtfcG;u&B z+m-IS7#-gpSb-%vTm_M*pR692yCIwCVGf{vN#4(({^7 z&BIfve#gi_wU^P2cVmX01Df>|4-MS;sVSCM8)qP-)XlIPka_6qSdSJmRg$bO#rndv z@{LfUAP&g9PR$n2cPHse$E=83a=|i0IeUCE7{t?drwJX&JyPtoN$uMD16L2et=!<& zF~(Wf>e(-cNO29AWR*juOYT|2M; za$+`TagP_xnDmb`kgXS%;}0mi9KiW(rW0wrkt%`P;TDcfx9zFmy32!`kkU|O>5-y5 z8;f|NGjod8s;>jk_CUJ<%^?tmS~yg^lXL_&rF_uYZ;p>7 zZHfyjK?+6595#&sw^J!9B|o8s2MQ8ZiHFpouVE)O^nq^LlF!D$f(ZE&bN>h?D*NRM|NK_VcuwRic#2iecikQfLmtkt*Vb8uh^u!?kzUy2o-eF^0 zXl;{YY=gDeSi9eSDDwEN`wbaqsS@ZR5#+5bzT*o%&rnGI)sX>nP!&ZqqF{nrxe-$g4z17&9O4pw@G zIm>p7G?HMSMIofA2CqQOb72wBa_Un&X-x8W0~DX%RSnts<*f3aRUYVemp<@er8<#m zs{!o6w6)Ch-+J6$qUAgffws+wd##V3c%M^)mN^PxkJNhlz6KkJnk6qhc8Hb6YF$5s zH%IFr6Ql4sB&VRPW3wAGa^220@_o(}mUjrBicqkxV$k0ZMzY^k^xv<)!jyn?N>Y9e zBoMD%;dtJu^=oOR139{jwxmV<-M6aSC6^{zf^4_$i9d~#>o3fnSmG-QHHEu!&2`2vji>PGwg*6uoa@AIN2POkh)O0>-1-*!a@ z$M;*+zpFL)wXZDURliDn6t~{s(Y8P0)8gR66FPAB2ctx<{jo{=AFdrk9@h8fMe)~X zkt}HjogBsK*z6ohrB)0wx7P?vsonM8ITJDPRJo<<bu>ETslRK zYrb^}pD@UU(@`?dA+~v0d3h5ZoK?_sfi@x85agov`R2hG^;{&)=w0B=S>?mm$a0_K ztdzv%H+Ugfsc`9;s+-$zik=Z-}FlbS&)dq zaxklSgYT=zO8nV6-DklG<`!)5u-+esob?Q4G^T6I`k*~u8|LHpTTy+fr4SpH24o`?JkoI&@*9EcJe+RoTY1_74ue zy)wWf3Ddf=+Mi$-FI##FJ@$L^`n}o~`MpPe24$MVI__&j_78>tC&rbwSeaekjvZLH zjbL|N^Lo#*V4!MAnJl7WQDPGAXIExJ+}Db9BO>AzUg*DbeDDRB_)<_)lS#uulh;`J zNDpux16d^?Lq@b(BsGUL)BKxoT)_jR9Pp>IyQOVI(;7pecYp@ z{rmbOli%9>WQAb)J+y(wvOxR=ePc@di!Edw0{x+r(I=%b9U>sRecUxuO7VIycrf1w zO%G#`CcB0h*XX-bY(H7NN;AsM`s zv}arQ3&6xyCARrV7Yq|Fr=7^`{Q0Vnq6mUDUJRarOk8hX>#$2YOrXM{Co;EUS!|iydq=)cy_h_3ZDluKr~FN@ZF*mNLP*-L8m?SV`wN141I-R?Y3q^P;|0qp08oM=gq zcW#S#=pW|ZhrQ++G!y*UOOuU+i@b&4<2fiv%;2_Xsbb5N>EcTdnEGIu*EPg=21by3 z?W020W*`0-`cl9K3ZgdJ50p6K_8flG9J`I#eOzP?(!{PB6tC24$}hLE%S$&a2!Wy9 z3ciH`QyCla%b2OTTr9HwT*W(8Ff{LZs{`9*tP7Bazb@9Y-@FK&w}$Hb)F(`$?uj!R);)5gzGRH450?X z6X!<_xOox(gA#O4mvFUb;}U%fvSX59rh3@*MGhTA8}dq6@NhpLlRq4B$p3q?!&ud( zFr-z!iXYwYJjqh$WqrnKXc+?i;-p~K8vq+_ZIJHAhtpc0ZUkXEpyO$xwiT;qQWgeG z+=@o0TtE6(LGg%1g?fTLz&R?(ch5ke%RY>=-Fx93r7?bm$4mUF%~QezUzqBf(jZ^5 zYqfW9tNcgT;b8wzk-(u}ZU8myl-6y+-ONW<7!7U**m7U}6F&$dgT z@vj5=7Kyiss(&)HBV?=zqET7#kwcXZ6kwB1B1t0TiuQ(T8Sb`MrIe6O33R#dZ8a|k{=7P=j+5KW+5BNNTjhqlE{h{M zw&(-d)k|+7FGn7e9;*tAW6v{ z@er|Jh>bR9C6J9N-2yqsHFMwT*C>bz9`1i+NZMx~D zw*yh~jk58>#f1H?w*7k8#AOXd6Tz?M2UNupC{I?mwNu@1T^0!7a*>HH!5IW*g_1g_ zUk9X`Cw_U2I{Xs*9W%w9emmd@JIZBTSrt+syf~l&{bXKV7iv#gu|+W=K)r51sJ0Tw zz^-3U@bc*nA6@^R$9ng|Tn=X3^yu-`*vYG0Km+4AVh-}PDqM{UM59GoS#Nou4x5(G zDPzo)Vt|(f(d$IH4l^%oS)x zBfV?k{dP$RI};G|v#iULALkarIQL8m`QJtghelq8UalQCcQ=Qu1 zEJ|(>TRYsDuk}ZlmGsy~{f3b7gFM)lbW1&o^ws27H6`X6rnRBQH}!&K)Rjj(*bQ*` ziu>W2?i(8-Q5;pB-mcY!i36W3HRdM*jsUI7ntS4F%|K^G**(zelsv4ccK$WM2VB=b zcD-mrvCr9!k+NW5FI_F`Qu}Nmx`#)sjC~-#^D!e(cpn$?%@OM&MjqB+yAyinfeBm( zIg;*TK770HemqLihwr;1M6O@TQI+Q$2pHFk%coug1G`wgOPB``yQUUp(y=;_N1d(TcK{!qx1% z=H<1bJ2U#zR+-jk2zQ2hO)^DhY5ka5YPSGmF*WrlCV z8YEq$lV3$4CrxoZdORuOi=tk~c+mjGM7Yj}6avv!Nv}rho`Uq+p|m*Pe){SAU1Q3x zlu|Na(w_NugfpPv(9KnRm4g8lrrBJIEm-+70b+s1^(F%*xsfzKpy1$Ecf=WkR5?m| z!3q(-IwFfVog#HX&1A{2iVe-@qgq*WnwD8F(sw?eNM98drfjbFARi1}#@R1$IA{4h zF%!H1{lRA$#)rs6tp`;b=iB$9(nvjhV>nA~Vjfzv_cO-n1Kj3k_bD;p{jYtbn1S#m zg6>~Q^G&2yAn@yN?n+{~5vdqU9)}pL43gHk7f8@p7YHT(=R*G%CL}}UbQ`86NHa27 zJ$v}GwInNa8(a4CXu>p4Swz4|4<)1aR~4rq=wJ1@do^-PvSJvTshR|#k$+AZ$I!uO zP{t4VIWVdYu|hA9_oqj}6Z=Z7{nhVEJOmczes^+4N$CBA{(y(ve5AD2&7Q_??&4c4 zAo?zJb$C0z>ap%pIcUAziFaLMIik=!CU>|9LjKN*4H;1RbAjeK+mDqeoRNXiueI9d!jzL+gg4+2RL(kc?DD*J;sS?i z`I6?bPB#fEQ7co3Qo5=sTk{4m&6yP#EXiEk@DP zPmh3!XUgTBT#?_-Zd7ytrqIWrC!Fo`d>FexZ0u{1l{1u4mb+qS3kYT}_btD_5Q86n{zOd+a#$g9Mq4~J_OZ%z8k^<#&~#2&YgJf2^W{RU zj<{U5XxMZ={&-g*ag!U`e3qH&SZ?pa{1f_D(F6_%+xg9aa%mL`#!u5DGTShW>k>hP zHIK)c=7J5v(53tTeK&6{&^7CsvV7qss8;J&^wDCt+1kXOxAC2v`P_8H4lDaxi%;h7 zFruL7t$t!odhRoT>%Fdm7B@dI{0YVsnEj}`@B}T=kRrE|ztsNPbO`J+t{l~_5hr|2 zzusD6s-pV}lMUr?3$a-BGz68-c}<}1iD+;Nst6;0skEXqYeAE$E`OggKG3-c^5K6q z$n&MH5VA2g_u?WKZ3;qHtKTBOj(qsq>6XU&05??`hM7Jl7-M7S4a8{PBPzI=9H9%0 zk?JLRx9X!0Ih6@7YtHWm6IREZujG%vlwXZ%q>8KK`q=g-lI1EKuhzPM*z<$18&60n z^-I+~1`6LE?BPjwy6BJ4)eRaeg$p<$liDptvk-H`CQm|CPot|NiU#M+)Q>d^0h4cJSRo zOazK&%lQjp>9n_l2q4I~7>J%EHSq+!^kwisAAem}T9eim9%xWf8t2yK0aKu*=VJ%G zb45)^9yIpSQ7qI-WWArY^7p(rB;ijb?2Ss<$RyUCV)`+zb|>8kO4CWTJRYVQ*G}+%DntfC#7U9s;^W8$uf~UpYWlMxxI} z`PSuo36Wd2Q>@+I_>RQqGxJGJDY}S6vO#EQf%Q-m@JSSO3RJU_9igK)RG+Ej3Rc-})dG2tK1=DX&x?M}l><&q_j=rV}3YxWcLHyUK(S$YLAxN9FJSRUgx(8aI&=qJV_uu#rf!zo>Ku!DoEZ7OI_|;d z)8dGllF5y@k}qYM?o#sx=3oR}sY0?%C7q3ZygMoMtM~eI1GXD(Z?loIO(pn_y>@^@ z`hD z4kJP6NA^%sfh(kag2y8`0b2CVvPEa=v8FMI7Es06n(O7`3v-?_ZvHMrCDGj9lH3QH zp~*IU#`6Y?Zn1%w1<{{0LoLjHNBHFgo&c3X(7#7h*q#fgdw4yW^i{!q6^*@pS z=919@A0C27Tjr)ZA$YQWHE`|Laf!GhtvpJXSPQG45W99*g6+Z~!0~w1bH};2L{J-2 z=<_h%Xo(;gRqSnHuLJynJ}0-2*)noi=Q+R$@_7Dm zqpjs6aYlO66T&Q$0i;hMgbBQ{Y<|t$O)F%YPgfD`hNKP0do3B4uTJt2VuS8hWRu2; zkcgfSnU>dfh3Y)M&yOA>1v@Y|Wn)SyR@3#@f0@!r$G&IajfrpO=hf3U-P^aS0)DnNu_#Cg9>f-QqO_^xBSKeqD?6z-Vb=Z=xZk#7G z%N?0^bL`=uY+uUGC76!J$%h6Yvp`CQzuOl=>buyn1J23beiu8lF`6`3w-)zu^FZ@` z>{##W3Vug$mIZ>?y<{Z2-p590JQP3*z47^^g^4V=YydZ*z?Sd z@@=hd@LPW&UB970TyAvt&mukPKiNEsEKaae>RpW^jrBX1W#FBypk@^9O}>&0##Wvf z2;Jf~caCGnpgI4O6aJ5DV`X0xTDk7JU5pGi+I`S~y)cnI%GH4JZZNnxbQtf9&X-DI>4Ewo=%ymF zy;W6HYi*G#YEqs_sh8_t73(WVyKWac|DN%y7$0_qG#haMp z7`w8oo&_~?%iU(7YG# z_Yt#+@czna0!pB-RLtikvE1@3(sH|o)LzPH!`%cKq!!_%P!H&88N+*n7do>LkYc9U z+a*GPd!pAqt{dWUl@6#wgMOj@|5-u(Vf)_y-^*v;ScJ;;OAimkiE8#0#3l;{rk<2G0HqqVkbC#4qZX z-gYBy##hl6p7|)5%s0HC+a4dUmrR~mZA`_bqwRs+k1U zp2EipLx`cSzQP-Mt2_xj^PmrtA~bQs;8jX*c=GT9Ihu>94*dE#qaWbA-q7XRXKu62 z&@K3i%|zQC(-b5lvX`g82Oc*LCzCzi{pV8tbvpT1;~-pgkMnEH{>j|Y>1%8r*FV9K zt8uS9*+YZ_4s9%DHw2jJUU7WveJ6V<`-J^h)3j}gn~L?rJsP@m@0;^O<}=ApFv8V2 zsLOA2hs%=tY{xP%Q{++aV_4{q>UEtS&S$e#js#X=3(7?xsg`E5pX09E8unPhQVehZ z$@Fl(19Y#)*pqPudllM$j^bmkmCAsR@I<%8I&1%$v_IFbO)`UWL2=XhQ#!UF8CbE z@79~Owz%G1rgAFn$dAltmzexhCwwDZ2K%LE0W|#KZnMGg{2@qoi8klW)?$BJ;v+S6 zVtQ=0P3qApho?rng&3A!Tm`eLGBF6qtx#DznQruFK(l;aRUu=wqKOBN6!gc2wTHBK z49v=0WIbJ~40_X(`U&YokVo^(2G%oE+8a*${avQ}(>fbO7xZlAP3S{Uzu~~}98d*} z&<$96aV0Yx!>kg<$qg!JD++)fP^HgGvxpA)lEibjQ4?mdH|%$5qR1wF;)qzscpXvZ z>iS&>_Wbp_NqO!pM?3Pud&=^7xtPLN#FD>Q4VvlvjT8ri;cB?X>Y9hn3y@ZYBZH0I zC4z2LG&|GS-A4M2F5|qxiO7c;pP}bXUP{3)-TZ3XRVD89jWm@c625ty8n;>Sff-ZF zlLCv`N|-ZnH9FV*?}wmb(IZEXY=aWc;s>PUUdu1dkoJ+u$EAm!O%j;j_KprsihYw# ztghB4^ZA%P-yb)xu9UNOcdlLdcHi-4YqZlCtA^iF9A?{&jDvkftN}&&{MgnSE7kSm z#N^1Q*_Y!n#_jYU@HV319-=t!0>jB%%(yMcGD4JKW@q< zdAT6liN=lmwQVp70skT&k}?CW2B13apI(D7`_LkaZ#h~v*|Xc#T<&p)UonUhRJuu( zF^5QP^!M@w$hi^gMVsNEbMQi>S5ya%GcB*hY`XWMwz*!f%OM4S{wK@xubqwY1i0)4 zPe^34ZoLo%S*oA2Rf#!KFZV8Vi5daQiOf; z5y7tX?z+*nxiim`?gzPPzPVR~QKTC-GMcD|#sREE%}I^c>~B(K*$7oE%bOq`c!hvG zbpR^P{F?D8J=LN3sxGy;WRcTHa+B{7DV#q$CZBgKDTx~ ze1mVJ2J^6dqWJ!Y8^4cVSh*ckd$VQ6%v3v2bLrj@b;+6J;=p3~k(NKW{)c*L9yaIy ztwY5W?YFiW*2Uib{rAphwQF#dW67fu#rN4IydJXIoFZOllm*vrPxD@mTn80WOv}6o zvlhc6xq7cRh&|j*>%5B>4lT?0ChB3WjME=-nk@DPa|P7x>Tek20g8#z&6uTH51*@< z9wIlkm#8EI+yL*4>yoSyoPCzft1@Bq=MomKj%y#AV}WhQUG-%*(}Om{9@SxYO{f{! zzC@JICUPWtqRIQ`CLiwFc(KWh-a84l8bAyACH-X~*5>^lAAZktdRq%J5i-Lq?!c6Bd|Cu6=+Aq#wzkSE+8d5EghVyAc5-4b`Js1$OR7!RVy zDvliip7&P zN>0ZSoB8+cxHHE4{Mxu<+tjmrrOrpqMK|zAZ3Xl_Tu9JUi{1!>Dkcs@E0bqZn<@y$ zY>NGiRx3eTQ|-pRqLLV84@{<4&nZS3rVV79 zncZwsX4FHo5kV|mn2!ZzRzC3}XIfyLneP0+n3~R^q=6d?x;M{-!0ubxk>xI#A24ON zVN_%&m4x~@=JpQt@{wP4-&jT{GA^Dk#pWyNzx&W`@k2?+?al1F1m(|?^BjZ@dAF&1 z`SAi{f|Q|{{50^RMHvnoY9G0j;`>jZlvtAO374rJl?99?E?IxuyncI4S*1~6cz9Rm z$M)4^a zQgO>|MDZ?AyJiC*C;hUVm#-miPawskc5H%s>`HdUr0nbsPt-nps!34oER~^4-Z}aA z+qjSGrOWBB>h2iRgT^&v^>r@DC@1q~0L4swj6FCvYKOGlR~}2WWSwuoiH`?DKgpz` z7QDZaE~4fhsL9DX@uF-(+Vue?oY3)yxefodo11RG%HsXvXF;r-UbhucJWAS!3Cn4+ z1a5L?|GbZrN4{Of&R5}VUn=qnQBGkl=VvEEnQt%^8F###-nj*vk`W_1WIwuNuhfQb zKMtKYij*5ApM~@`J_Os!_2)LUXVoYDPtU>>nETx9a|1&{nLJRPAsHl^ltsvTs`RL? zl#&M6+j53X;oicz7+h#0JaM30R`t@@2tJ%*`vUHs;6sv zD6Me4^Jl*i6F(oW7`E-Yi<))8o^K{BpWl}z+MWNfhz`V%^@<-E8$(YNvu_R%R&!{P zN$Wm}`Pwn`GmwaaTwxJNKY1&t21`4Y4LX8{wPmS;rMY>H$(SvXQcftwH6_w+r_ApKvRA{y!20_nIZ#m(@MiHm(ru|%nW7q>D=hJ8O32(Wv@3o zJe`(xr8}6v{3nUqQ^us$84>DnTkY!D0E_`rgtx+cs#6HgZhs0X6=;$2!WhvcG|Uw8 z8I0zXlGLR;^gdRG^mwsD^@6@$aj0SLS=<;Bd(bRRGKD$kzO`&BPfTM-~?3o!;f5`K#X z2>{IetSQg$TXI3dnlty@PGHXm;&q>!K8X;;1PD16-(mZ!xbi3771D+8%Z!bjXdk|s zf|uJ6@+Wu@-OY*$(8MqDGAro9zEP&t-(R1<&Iqxl$QdN*P~F-izk2AI#rsKezOC(# zBUEqe3i-U=<_SZ2l!XR{6~JuXsxrMeHYy>@?AljC(8OQ`i)yCZUMW&&iIM91M9uDN zB~4lFgZE~pqm~(2O1O!Io8~g2XM;n{sYA#pt~5ChEt@y4bZq*ly4t0bxUq&4xQel> zTST&f))_CqUI$Q;kJp^;Zh>yO4TWyAL3)?b#BFcl&b^6VE!!<=M-C~w{N&1oTy+hO;O~gjp&)nR_N5q6kHyNbgKRsKA0N< z)1C9knm~lTOSm%ct)DaPDD3m0H>KeZ3{CghzYD}yMPS<85(Hi0Sfw*MTd%f0=znSV zCPAi+GQWqu2+b#dSJkntDcGv6J@i74%wxFl>b0o*gFu=-&IBl?84w_nzhw{J@(WYO z>-7tFpg+8?zHqR(oHTFHRGp;DVg`R2iGYx*l-2ejg?Lb}f*I%fBZ+G3c_iPaxaKM!<$2Evkk>33@x}wmAp9JhvM}kRg?u`ywzM+Y&0?Te_}Tju#4-e{-l^ zO(xkxM4gBdHRDMl1^yTtH@RlmHr;{xL!cLQ_#7&P_IVZHMBJKI#Tb2XNWrYt`-()k zb3V*+j8+xB3}vIJ4FuP55n#Z2lmcOrZvkgBrCbzEb9@49-@0lNB7v0BT`{*bY?~?$ z7^&aaRm)o#3d~hyhdP_VNw|Cr*}eLDL%e{OUUox1#wYYCJ=CTSd(jUJV46PT!mV~| z$E4b_YpVbcqP8UC3udG^x#5<*qoR-fS&E;L<7gU!*QeuDuoOSDq$GtlhWp!#2xK6x zZw1aqw(T6Wao7KH!STp_^?;3WhXuPmEgZ1hxJLI+SNt4lefZ_kjVK{_xonUL_ni9h zQqPbf&g`&Dk=g@411%OiGT+dUYDCB=_Z(mE+-XIw#KJxC zFae~oE2ZV)tRNZykC_nNSr0`Xki0by8oK7wvp(D8z4FyGF70t;4CVHVg^KmvCvfi? zcj(rS?&|E48OOwA^ElePTVU5&cFC43Hd@j#x4bT!csuMLCXjO-_WJKA1~{Vxg;M5I z2)o58eFHh2%kDEvRiL-*=|ojy$Wm$dbpGLpW4JF`OIYKEPIe=Kn_l9gwVrbFTxEvN z!@Ts^wIepFUr*AOO_*T;Z_a;<_Osr4Kej~<1OsEKFo$d)5BgM0}kSf@=)< zG-mP)GIsWKLM^mL&lX>p@JTq2wIg=e@+iQSLc&e(hThqnr+ zy!hR6_dG&JHF1ho_ab2UCwc2AfrNlI&nKE9aYT(T+%ob5Yb3 z%Uf)Ml89TGBeKtr>x8k`GL^Xb zQ%gs^m}<0M++JpSzqSlexnr-_`?X!je_h`mE5Y+h(7-Y4K^5L~IPW|2yW&BZf;z)Fh3MBjJ`dxE-ohx!DS=*cdhCsHXJmqzA z39$8_me%0*3&dz2H80qnlPfGuyPgRCL_6U~Vd3FI713XTy)ee}HEEom6Q82MR!^25Bu=)(-`$JP{lqTp^DW$5m#%YJ!BbSbeAGmt0aPCqgl z8pdE@EQZT;10Jw{b|RP8Z3=?sKI*x4r2b6YySaPS{9l<@Lkrd#EwC#oahMp_05gfg zRT?0S_*YQ|Ex4g%j|u?I?vp%Gl!u@%zozd|Q6LF6gnCl!HuMvFwUucZ>d4BVJl}Vf z;S+veVb!c}s;eK>5x_yuhfU!Nn3z7r`UHu~lP;v$FIhw=8du>kRA)^OMLv&(Bq1KH?psNLyKrZ)5g&HV2-uK&73t#3Nq zr-!V^^3T(~EPJI-dtZU2{+=iI%PQw#)hQ>=P>j&>Yeyp3Kau({BX&8y0hkAi$k{+q z?&pAY_z{LeGq996_SKyopd@`bh6qOQi=Dj0kW@5=$Ch_z@63ZeQNG_ zOml2?{<~DyT(n~@ZmfoN90L8&qWBLde0Ybj7UA>Ac`c%@KR%S;w$!&CFU--}BZZ_6 zNoJgx{PoOh5*h#0=b~Y0MwAPeemN!0>vvY7p=``$_Dkhoe`rvPobDy2Id^G<_YOTv zts}?6c|ZF+9Eo)^aY-emMnX+zH=lln^ni4Mhfp^m$1kF3sgmH`K2@lYxgZl->h;i< zm`1+~Im^C&t>6YX>Kmelft03oUF_chcETs`LMdF@5OE~4#5_px_P%{=hWAyJ^~;O~ zqTNOYgQLT;5X-)@qiEIaW-&-F2l=gjsMMw3at3G{7Be@AK(&g+Gsb5IS`TiOJoJ(? zytYhDujF)id9&$)F|EQerB%tSY_GAXqf3J>g&m$SVH^I8;r@9%-1^^_VIYOeVLuh@ zpc|Lkf{ok5->t1@9ZVj!CGpZLDZErhcAxp+dige5o@=!DcB$pXPIWcDVkS?`HVywq+y`;fvHFdhJ+ z$mWdE{nrW;i!mF^VObs0%?|2NMvaVtfP)cYHvehNmPnODzO2MqJiaj5xb`%a>OU>? z(eIWP^MC?oJ!V_NZB}hNC9sWg+!!(pP7@7Z1=dDtR_#P|<2X^!(q05K=!STsn!+hH z6$a`b$T8c0ba;y&zh@snOHFLSYqDf+SV(x6h==!SPme{d9}zTT8yR5DO6<$QTP?9! zw#bN&lbsXi)Ggn$oqo^mHg(boU_2~t)#P-Xu`Az5>T`$oI=fW&hAp}1IR&3Z%7w@l zj^FlMgU>gRuX2GUl!GwrxITt#LR5+0-TG0h=-r&=^9)}&TF|etkDxl@q!&nLf!Jtw z;7X+fPTSIG6Nr~2vW z$&I7X&in+1+a6R0-{<8ss)m7gEeZ89?lBzyy~QnSxli&BNt=!ywsg$*KMX#2E}vg2 z<*cD~=*dU;CN8osE9qv{47&V!`cf2vO{dF%84~yO~^OaM}euABIiv7v?24vqn`I~^*QUi+pg5U zDZ>;VbQ9|1K%~&6twu1I)usTy9j^DwHO^~XkvDz1c$5mGX4`it&}F<_GB*S80>R)@x4ZrBBWcwC++f zk%^HJAP3y?4BXvAp*d`3_)4jqMi)0ih-~od#s+;ayC6YMHCbp->ndVgyjeKXonKv{ zS^KDC<~j-@mVT-W$r(h z@Q#-czOdF|kh^X63YkOjsxljeT@F0PU07)vq!u5Ju~AAVZ%ZUD@M*5Co2YVbR}lp*76zl+sD}Uk2BFrkFMn&+_Z?j6>wf=|Jm~ynh!`jHttnS;jWNI+OWbi zU!8VOp%@Ds@^UlfP8#Y_2f_fpw?-rH`^M{T)keEpO<0o?FigRjyiQt=-77tAOj@J4 z9lUx~8*WJ~E!0*-T?*ZFXgAJ%7A!Vg(6{{2d?Rm76X+53_kmYE8<3X$O1R_{5iXfs11%#kc!Wam%47vM-er>-W-=A--d)Hm-lC|KF^X_xb-uvDA z+0Q>q8A3>lZoPFELaOkmD$-DcAyjW=IQGqN3w@6Ue1bI&{D{yZMBlo3 z&xxeYxAv9ZjwkhdS{I$(GLx}nLU%#IqR+CwUgPAsbE&qP;of%|>wZW+Ym>{E>+fyo zd1YJt^D8JeAYOvI!sIfU;v^t`#&BQ28jEp=HdR9kJzgjo(W;6Hpz$V^((L^wd;Jzux zbSYoWW(`77gQv>F!f~y_G|xr+kJK8bq(>78S}4R^40>0co zRjipI7NqGQ?g!IFE#3=eUUQTOCX|V# zo?Zma%`-~CV?Po0!Jk!_i z{~5osfyvN82?#;r5p>djKJ?_pzJyT9pjOj5Vt{zN=Ty*awoo znl0%(I&-g^jNiPT`Z%zbd6sq{C(Iu#H5?8hlT1xl1^cpp?7Jq8l`>$PkB;!5ziFX< zGH$uA53}o)Y>xL0anF({nMv+CdxXjhj8#exj1+wg(t^Pq-vPE6_oQjKcb4Ir^s~i1 z`>a5cf=A?wMW=i2#+z;GFe$$CJx7Zejzc<6W|c|K#uvNX6tlM34(d_}c!VmSZ`QqF zl@sO(4w%zDuk6+;|NI>}EqmhIO<1d-o+c#XO^7k>c#HcrIPTA58!1Wd%&zR3`P(gW zTKXN@Kqv*FfL5&*mcPRZSErno_B$_`k`tN;kYfYM<#v;1A59(~kHra|EaG8!B3L^aJ#@z<_#Ly!&U`gNk1dAdp#kg-n2ju-OL=C=#gpW{w%6@OE-2s<6izIkuMhXo=`zL zkB0OBrdUyKf1niu7He$m7XVlxyDEU-#T!;@X68TJUlyd5nQxO5w!c>uk@qzIe@ZfXPZyr)8~N07MPN6w+!#qKbSQ>BAb(WL(KZh76i3HkXIBjDHyjF zK>VSLhU0yy+ZKN0O6R*`!7;F~rt$03&z;6%Q^lw_mfJxSvPKPPvz#lc|trz}kqesvoT)Z*}i5 z(x_!x`{uginV@3r!K}9nqGq%gvL9QVa^Ky!n4@(EK(zA7e%>B`DO34Wd4#nr`y}Hl zsE=PY3`NTIlJNn9f`G1tJonwN(?D8?kX^;|@)a46hr$Pb-e=RV>tqk!mO$M$zasrS z-A~}ZryH#Jv#7o%YEyFWMyc{Y3Z4z>IzbsqNGVr=@(egXyJv1C{Amt&Xzs{5whx_47;vrNpxkIx8taSD{UfJ08aa+O)V ze97)tOzmr80S{j4E22(9f>n6VPwvKRrg#V8QCQd+%A%yt`Cdzcw1}s0h!WkE8%rUR zBk^T_BQfR27z}TM2JIy?0BFr(sMi*L2PM>F6dmiFg6;jflnr>aBhmuz-D9t=5*03# znRus)H<_xT)a#&k*FvLWsWPbf`IuS7VA*V?2dAyslz3-zPT)-bWciqk?Ej2k@ghrg zq?0x@(M^)uDK3!KFAvpsF$43ZM@J#Y4Zmur!+Uel{Y3PDYNnhL#?7rPi2XfUkTOY#_l~jcC$@M8u8_o z0z=k-kW&Q77uqW1eu{TSI$c)u30r1YUwZhRJ3|v;Nx>&8QY$o5Y!%kbuG{J1C@BJ> z)T#h;<#KN+ud&&Aw5VpY!z+%mmA-La%qQc_%(xA&okyEth3hQH42ZB$ zYlV+xD|h#>JS$JRf%^EfAi0ui5HnWZIgyb!Xl@mS9y&t~8#W}4%fD3^S$c=v?m16V z3XRlUn+CmMYj?`SOu#9-7Djm}-0tN103t{f4TZ^yumX(ZnJ4k5>-+3@K$Y zB1_Gqhlvw>1=h_Al3%q^^kS4d_(5KPQZ~m}#t$VK7<~$VWA@6KbC9jU_4o}iB4=pA ziXP(4CQz(G-#Cxf)-1Mc=ZAhH)B}VtEv$1MEtAbbju=B0ag^^#$In;c#E;6e^33P! z?So*EFDp37COjnQAITd30Fp)(u;=rZt18dVBZBe^hAPS!I9r25s{!Ssjt#dCch_eR z%zIEVp*LY#*pScEV^G0-YQrpLw?06a?@+*th4q7F=FKCSXK4?Z`cnwUA8NjkKfb%V zBA=;@4U)@aurE;$m~E22kco zgTsVgZ_}vH@`6Cvqwq80HNTs zr@MmW$Cn3=!ydQ9K6*HvGK8Z0N7L~FsYB;ebt`qQuuX#;4SmA3p^)Re1rT4tx4Hh` z&*Tr$c*S0DRwMI4HtK|u6MeTbO-;?^)=Gj2i(06n3GHNnm=o&5bAhwAH5U4N9Rh?f zDENU*aC-c$i#H1R9wE!&9vR9__>$^33ZqUkF2EZmdyK82bC5-621(kXT+<-FZ)0H5 zM5U^)`k3W%JmWQ|)X=?srejBB77Z1FrJPX#Y;f~RQD1fqjRgYDPw0&BULpQ z%dyPk7YOKF;;$Ay^YxH+<|LgFq%^IWqB#6xuvroTH>ph__N6geFQ^<2rcCt?gZ&wx z+A-q*nLqgV9b2RBJajX0MMT!R(lu1U_ux)glM_QgufcbN{q>X5`d_%4!2#W3P`({P ziL(|7ey^-sj7Lf5rw*I$KcHw%H)7Kr>HniOAMCIFBPYH8mXo#S(O9A%L&Fu=Q^5W8 z@M9lpjwND6I^H$Xb9U9o5oj~8E25MT$`k^at%q@Y6c_FoxMpU?QwCQV5-N!?3YP!VqFIl%dk-oix4-mJe zxuMYbhN!-lo&w}vyRTEEH)+INeGKUCZSl^~Tfx{x#ZSU~&kay_%}Vyi8f=`J?99#^ z9C+A=%N!UMUAdJfDv5jizLG_?_esWKS2j8y9)axKmHr>zf!!KzxJUppXpQuvFGoJg zQFMwfErUL3d0+@uPx@RO(PS0)bPg8zt_+Yq$I1~~RR?-M&06PCSKdN!MBJxGqMvTu z7nSg&22d!khurm7Wx!1jx!xP97Co!+{FfmQ=2*VeVyuA4Jwhf@w*czGtu5{jNom7D~6XXgbN3VoaXBRiyiSXp-FtUV*A zmY>NvoQ$wyYL}Kb=uJ=20Rq6;*HN|@ZcM2{W7wBbeb^1@Kvk@imVgzxO9Le5V1EV` z*_Fex^t{2XylSu_JlLy4kak~`LRXByi-@iE(L)K)fF#&3yFw3iT{RD9_Ws^gZ+=}= z-~3zk)t%K#8}eq8wZNieQT;ewpO}mfP)LBtI5WG_NdJIJo9x<{9mu@}0b&SN?&n3p zTt{b1m$MP*8bOM=0Ho^o^oBeFIT^bbzSQ5OqzK(WW&a))v&-Hx3ZwlT`q72S`0Q{i z7iOp_RaNjDs%C8mU+Kv!g6;hJ88>Lk%e5TkK^_eXrXRZ|Ig}9qaR#)&e%Z({&_lvT zmlm2b69}X=Z#EFQR>|Dv5p@S>S20rAMY;+UtV&{R71E&0lkrQfN10kQ@WQa++1l2M@T6i{b%UTfb!Z~dG;p(| z!^%61WG)n*o0tdyUG9PUQ8gIJk{c9wvbAl3)(JiCi#D#OKK%(Uvh5U)NICP9BX}wH ziVvcCM@w}aWwsiUuz-je6wriO>GyV&y{GFR&N8FGih(A%wXYQ~(b7BZbY`6E;Vd_z zo~mTSU!9MiLZ|ot>U_4VZL}X{rKG$NrVbrscG1$ykt>|_SLe0eU3d7GU(YyIR{JS- zmDYX{kEPY;olaGxeo0Kn=-U!Pf>i+m9!<0OxAsI{U0tD9;7S&f z3`9H(<`G*WCN>bN493AFOi{!!!L|afI7%o`6&6lXK&2`L1YumJiZTQ+5doQ^Fu|gz zI6Nvw1cME>!8`;4iI*N+z3;u_gZtzG5&vyF~^*1 z?S1yyXYbweAFzGO*PdLxe&gE9j&{c{J=rY}9i1#6cCzdq+ASx~UzXhiC(H6orN{Ar zj;qq$yDTU7NWP@ws1J2_*G}Ykx7%{iE$G@-7-eF^Y3#}`(v#ySiIZdTj}`y+a>=Im9Vq=f1W5yxR*!@kj+Rxz&v=+4_?qb>2v z^P8^zTt$BB=j8B|JpIS7`QY>Jz4z#w<>ZT>lB09T6nS2-t-LNa`Yg!ixr}^gvZsB` z{B;rQ@uVEqwOt7oA8%Sn=e2VBs;^`dNc~|xx$^LKH+*6BuO8<1`K9&UDuw8t_%!FY zoV0NZ!^eH~qhBH?uakr4K4~ZC5VHnAA|L9#J5r^|-)7;Y zUl$mM>pDMqeipwr+7#N+YO&F-3t!twD#tH9_S*S{wQ+C`@f*(uNuw}s=xXMh&DI;Q z;_u$0c(3`5*FEq(O?pz@6#ee_pZMDAFS)(D{hdnlGw+UhHaZ&vMC3y~_HorR=oT!) zD&Jv0*w5!@vBS?MX~$>r(d*!xjZ=9%U3__Gl0?W|%cDAF&TIVSk@)+3cqc!3boGhhYzil=`)k_5%wL2pqQz`Ju@50G)sNfVj zoXGZ|Q(f3+@xx0`O2~K<`L6lJ-SXStp$#*Nk@$Du%RKJ9@n>4_fX zCq4RXG{SB86?4nquk-Hy-E#B;AN86?zpBs|J16`d(I5ZXNB^!~KL7eV0uKN-_1L$Q zfhXMkzP+y=*8|%=cJL*vJ8JS$i*h!V@e z?gp)OZL3q^qPRQ$mTS*l z!1Lo9sgwA)pzOQd7ry0nSAP)8dF^z>J#;@|{wb*sK5UU+HV4!!`0VEJLKou6^E1;q z{-F(t{g8gMTs+F%4CL8B(dE++Be1u} zQa1d_@^?2B{4?(K#G2gBZ2YKxYj^wS1vv8wb2h-K`rtLS+C4j5oS5zZQT6pjk(( zJ4B5)x)C<~DS-Jn#3lX27u>p0yp_M+jn)mGYaUy>+T%Nnb1#0!>tbyAQ%)nklRSgJ z&7=Ic?ks-hoA@5fJ^x~JiY`PYkDmW0C(plGd!Q$Ex;t|N@d~qieC9rdJUa(Jbmg%% zxJoLcUW^RY7oUugb$iXkOVyLI8AJG+ zNchYly!4G7Y^6~5nrXo&e$8p}lUVB0m<1UOEOBY-ht5+)-??6hPx|GZjRV(b``>-$ zM|{PjUt-09)0*964ZWy4qG3A!iZuCL5J4vSq$?ol?wO2=1e&!;9t z{HK#&d2T{`aKZSSV$8nw`5IF+b?d?_&_RB2Nn@S=KEJHRZ&{wfFD-HANt+d!8=g@V${FeVy<@Q=p|RCl}k1iW;RIY+rXYw+ro1J ztScYrS3bq4R+FlcH(!!*-yB2t`NcV#59x0CP?FiqC-VdG1vMIuAg3o=Td=#P|3Z0B%|-@17rLGk-6p<6~!$6~POh1kU3(XXZO`=|>$d z!lw$=5_RyEi#Jr~RP#^%iC^4A^2m;K+VClBHe2;z6Z14*Mk&|$%X0f<_lmdugY8>E zPThfcKaZ0b)2b2Pn1`Dkmvb_pUZ*zC08jjo)ep|hccB`;;R{6kL;Ts-DL%Zk@M}Ec zYe??S-~5VIlRb~$9A!25WQb$>P5#6re$4=RZ7!m^$ICJHQwLq8^3qO zSIW*0ziJfhY2#Np#+5qaD29V6USiSHHu0r%dVQte1>d!Te30L9h<8T(gM1~;2HMmK zAIaG=K2h~u$+A`Ao#yL~^C@rnmi3*Dn>*0%_Q|VFij#Is9D-CUfq|-t52LPSO>Mf;|h8QzG9r>i*kxj)D&%wf12-@hxpQE(boL;`OLW% z&4ra*97R9KXL{m{MVR>LH~jeO-Z?hkb&`yq#K-O6lT$@0DD?-g)^Uzc7T&5n8gw__ z0DpXP`45D@vQE5>CYLA9MXJba02$ioVhjTWVS5bZ6(4zN`ENe`p5>!H^k})NKh(Lb zKhik@lUA-Xx~smjY)TJqEB4J>%kshNC(AGX&hhfC|NQ3id+))>f~iYr%eBS5L6diS z0c(T7VNUk2yzB*+mM{H`dzO#=6GzJf`m=$1G@nblG}%hD(09V$W~@UCQLSS;5BqEV zWae*vfSYo>EH@?Gc;aOFp#GTWmw)f}@_j#ZYkBJ*Le`;RxE%9>G%3oHFxKHSfF_;E zFF&fw_1jO}dg1SWTfI@g(_fZ9_1ee&mj2x4J1a|pX>wLqgaW;Whu>GnNZR9Y^4s;%W zx4i1NzvUU8TZ6Uq$a?oX>%J5^9jAU9em|0;-_C;e(1}uEYG}e zr$t+qTP`-spu!U-M~AgevS79|o^g>`wAc>y@e7Vk`?z91a^qxq>GOBXzxbc8ET8gX z-7Xxv6CigTGJZUUv*`9=vmA1gzg4h49N+Y^ODZ8#@KI9`q-_X zaPu5;fuSS!*@le$mhP;#HK&jK(B1NbUvXvmPhY0_kiYDk{5AHRoIkT@vw@Z8z;F1q z7l7fCCi(MA@@nf@5q}|i{jv8-IsM&M6%o3LI{BfEQREKp4HG$@wUJ1eYx}Q!%BAIh z`K$LWk8838tEq&7|H$p$UeKq__MwZg*U!9Rnw3=(J#1>imzU))z3%$*uKvrZuZ{Wd>ES!5dgNmrfBPTZ zSl;rks&UNFhD?$g9J)KT33%MPXFTyAfBeSP=e+&fch`Iedi2_(FPHhgB&G`tFhZFY^iGZTPO8%A6S;JedWE&6Z7VgKJMLTtbV@Au;oe}a$|fo@8QFpeTE;~ z=(!{4cwATZ_x+vv)3p?oK6COMai}`b-FNw9`G;R}pRW2^Ajgt*_)SjojgA<};ZV-D zH)q&q4iEL*eWU|BFmM=S?>NY;&)5I;`<6?(5sl{jyXGx}^8>dxQX%Vtv5PEo8w6JK zToHH6efQkYp6Q3Mqvhz+s$i(tXF7XpLn?CV%Z6Oqu_p_+nw!5{zT;K*3%heMNzF;f zzun5oTzGVll(CU?9of+U+nP1y(OpU zvv~w9Sr;nLG5?3p<|70ueyyDbUY}Yd!E0=`V+1F2S@%7DUU z!+3G5v_Yp@FhhD(9o{OXys6YM@?dLP0LotS!( zZ~o{ThY!62s*m!Sg&e-XdU0#<$S=0*Pb|w{eYqaXoLkS+K6Rp~Y^EN+{G*Qi6P;tq z8XuKI#YV0>%Nz^2?6yhv9fh2b=evx?JV#`6&=bQOMZM+dz(~P{OOO4g=JV%2_LA3t zIWdLGe~6_L*6U?ZoidN$t=;E~mp$XEY0L*5)a)#9%C_**_ejXj1}SaGL~lF&7ro-L z5_Il{V)fCw*fu?YZqYMj%cgB7z3S~eAahn{_@cQMlFic3)%3UY#Noj!JH4cEvRr#S z^9EDCiHH1&FTSjo9Q4r{^K&2ha-QnFK^=vKuFYqvdxW=7K2uz)M)&XO4}*2S)oU;32*?s`tzhPoNdy zMK~{~T*=4;PVlC()T`0MfB8pTs;kbv+GgKHr(Rq!;3+S|5(B&y+n5*@z^5dLrcGjDVs3` zF=w9B8T=Q$;LA>~9`X4+qVFJ-liI=f8qb5;adlP9$i*t%;M>z~dBL;M7jh(|v1O@a za}jzx7Y{1+b#a=fVe#WfJ$C)~F&^GD!hg8&3xD97hwY{wLOxnA2;wJqo|?br07>n| zdc9}P-SQkmio~mhtX%z&MJycY7!O^|^}~~L*w+vLY!DscBm0>6jPaAr#6u#lPtl}a zn^g8A4RF_SY<9BpclX?P?PZtsH(oFGD^X@u>A2cxb^Xba#{f#>E7Bp? ztFxkR`P@dmpq)Vyx9`@uFnA8e#&tpr-DGb_G^IYIlqLQGW*i-bW1&6e29O6Y4AR#5 zvw3QcRQo|aIrZklmvExE$M4X$oUyA07_9mhM=sXuWE_~5;nT=?xmN7c}VZTZ(}?rL~jVuDCHDd zW0I>4RkJL)P{rpZ{mdS{51lA{3Pf+T`jPlbs|k>vbZN6ZbRkPI+fmPp0DeI6t7Nc~ z$NhZ%nT)>k;6(Zz50&~yf1iG^fs4sKviK#}-Dl{r>Bu~hY2DR;F}T*pmL9|4wUTbw z@xnlPQdFhr&E%R&<~6QfTI+#VgCJrYF+`(acGqTfD_@rASLH)IiT<#`a<+xCqjpL` z>#D>_%Q%UnL=``~nBcrnhfBLfp$0UGM~}`pY-%%xL2Su?1!0>O+=jhV^Q|SHHsi~S zD~0ov1zlYjfNIlt^GFNNb-;qpg1EPAM(ME^ps)?4i@M~QXic5q&!wGA8~zyJ#}kr& z^`4JJ%2R4dCKVL9!V%6$c5)Gv^*q_xt7|K06))bGDUPP7^FtSfX;?h<0|XKb062A zIY|b0!pj0C)Y$7;i^P=d-~9Mh&zQKh^`h&1%>hsw!5hUsnpx4t z<}nU3;cAnu{B7X&Vn5^sgN95?k&<*Nw-dMSz$p_Pc^$xvIFk*X^*T}DEO_*uml7(B z&nEcAJ#m?Xu}#P#5u(vuOElFSM`G;J(?_?d0s0skGYz4+p=0BMwY@=f?C04B`6n16 z7Y+?9wH$J zAxS-==YiY@80*`{n1+s)KEk056AV77g?$%2H0xq(Q))9XS&VWbRL_G=l_J9>UJl0D zL}N3`NDj2QCw^L+J)AKpGPZ04N*&EdoH2o<_uVvg5ExqK?h8cD!pAn(v{$fP*#~QU zh>wrmGmlPAjvv4qPUcCCWLhX|Ka2&~1>W*WY1;yK(tBoXnGCEf#s(&kaR8=O7&`Rb z4)NokexjR!kF~8MOFmU5aQ$lW3aOlWOo#8pn)8ot^lQLVQZO5XoZ}x``u%x;$Cmjs zwt{}jE1RV@QuzczTVvNF(%{QMY#aX3$pievr_W(l1ZA{3C6z9Llh!WOKW`#3*AYhq z-tucRhL5MYjUq^yq;P4yz(j=;Uhu<*6tg}0;12PFp$~4~hxPm_+Zg8Ct>f7*BneZNsSb8?%&Jh@KlZTTrOg zc*d4a&)A=--&QSt^&=aCKtMfi2RM(tjY0_3lN)$zC%(pMOo(G{xaW#VQD)ml*8}*( zn%f398D{+~2NGYgRbLr0gOY-ta%{uQ8}bVGoMs=E!xb*`2zR1d+}H1qgGY~B`-@YJ z>*a;j$od&444i_t&M>U#WibY2>CmtI+6%Qc>JFq&fKMxFac!J|LFhSyp@oAfvh|$Q!ky#K zhS(4BtuuI=bE{5uez>A2b4!3M+hm`g$1$&w|CB6iS~rUj(~}eO8bJK3dJ?_67ebx{ zSHS|R%y8%`=YQMnAR>?_}JgGOix59Mum~lwBBOj7l{Dr%(^B9~CeuB#Ukb0`^qvuU*Y(62BICR)&Tg!A&&-M+!2eTcS zQp|kcb?_I5@TRuW`$zm0SeN?*o>tHfJx!tLIT3p}glz!EcCx$YvH;wLhF24aiOPLh zoyM4vMhXD7pn%KA%I|SJ3pjFVbc&HshPKa%R-zM#w$p3fhA+q*C$x=DN^`o8SMD%{ zlYy6XyKVf(AvWYbX0=U|B7A&%L$qy^lSpgCbq?mNVK#inCYah3&VIO?=1DXw=#`qC zbt3TAho;;JwjNhLV1kW_T;f+5&f5zw$zb{>8{!V`+%h~%KVy-DqlO+=H=VZ=FkY%TPJGOKbO-eUMZb@k`Qw5*kXQI4 zNn-VY-V}k{dvi=NgDj)aFv2b;9&Lhj62jH0Xgt5%4NV`a$nS9VFeZ8jwL3ZT-35mn zvUwAUQ9a=cgBJ%U^%9B`*>UXEt~NPJ9a#K=jILPgIq5_LF4);`bivL2J}%hVmz_pI z&(zfWn4ASNsVrtA?CTky6@SLgnCP>dnQ&s$k2bCduV@v=0M<$2v&?X_w&f?0 zdVL4q!ob4O|06wo;ixOrj>l#y;~Gg=-=WAx*pV-hTSqte=+)3!U&FCJJ(R7IGj_tH zSk_m_@)csRD}7KQl3@|As*N?`C_c!U@vo=O(oUUM9HYTXr$fev>%5uanu%NzjR zCb4pse%58Ff_FbT99ZTs=22SCWBp8Il>D>{j4u>gKeWxhWg0&$HJ{gkdPXCf61P@& ztiI#OvjYd~D)hvhL4pdPanYqKH?T(AS0xsJjcpoa4(T1TJw`VIoTCqRpI?P*;>dsN z5f0BOf=znyxkaZ2tJWn8N$N>lK}c;lWS?W5vOBR=JKko}KC|$3Z%PH$J5|jKJ-NqE z_ZknrZ7W~D$^f(y8P~onU3Oty2J4NY*@llDx%i|JpU9&wHDK(xtG@VU#^kYat*h>i zdSLC^jL7(-#cz$a=M=p%&kPDtW4)wR`B-^()-G4{E(m^LY+5LRq%6%7l<6vOPNhVCyvY=4yUI zIx&MxLE28(nmXlm7viLOLSs$b4|GCD7I{^>sJ)bo<7qB^r=YAS^^JFY6;xwEh zZpDM~;ZEeb0~BvkTQTEG0U3VZL5j9H_mXvxdHwoPMGk8H%GZ$DSUoG};o!Bp*+kXX z`qy7&0LlzDGC5UnIv&!hC5g%LKEG*AaEI$`J|`zF9*~_UC6v2ef%Yt=w?iGS=`x{m`*tc1v}Pz zf~slY{K=p-7He#u7L@_cNMwKhd*f^(-Vaneam*r{gTf>LelwEqaEL>^IXTI3UTi}^ zZkltHCYX)!fRgkGlZFWF0F?CZ*bebcbNh5(fov2_4=P{4lkUMPb=`l~2uhFxu>7&DseW}mFpI(L7m<98w3m<&s^gYwzKLS`@ ziH2UU5yjHI=Sa0E5;z6n)mm>R$Iaaa0HpF2H=cyKrST)6aY5j>Y2EFa4KyaOJpi`Y z0cR0NFVNX;eH&s&2RLs_Wk`!X1Ktl5EXMuVY^M5^Na4ay{PgzMr(hU*GqwVm<`|tx zHqpMHc}$IYj}CnPhO8RSa9ryZ-xY7p0CWe2u`wOua|f#J0CPySsjO015zUoj^|=$R z&P!8a>m2?Q`plg2TfXWox!mch;lqB)b!%4}(i&%-8hjt^C)?8v8krgXwGp&JSbXUmUuKNKj;seLQ@+i{*gD4%I@RALNg?5Nv zHQN3d?-dcg{ZuEQo!};N-E}JHlr|#Z=D+=Y^?ah~?(8cL)5{VsbD?G)a@Zyct*NHxP>~FNNVt39Nz-u{udkt;$vC~g<^Q~(o z@!$ErW946qkAsrqYR=YH5b{$F!kam>41*1>C($G?Qu;QuA8=!KcHIVdWNDr-8-7uK zNuNiULdrZEx{d!~v71dXW?a|C=vhDe#uyuYWb4hW)6k0ypF8ER{BAwTAx;YE-wb!) zU;16Was^(;$OUp5dXvkJY0hDAS|8fn=gyP6&xSuan8cZ0vW)z(=x@DiJPDG%HphC= z- zpYdSh-(EFF=R=BYI@>x#_%jYWdLEjhM|USaBzVpNLG3+y_(R$BD_RmMas$MWs~oG^0ClV~+&9ED$w?cD|Yz+=nu2k$xd2U}uu6PP0V zCo+iBf#`{lqWxs#{-;()(J&9)cV& z*MIxg+j{>(@hd`~jcXbH;1z zth?n%0u(-3tD58KJI#tQPuPp_{T#@NnLsv#(utmIWON>=r)G}FN{F5lNBD@6U;Bn9 z>MqnKn+0+&Jbe!0Sg#XY1|IL>WT_VXUT;oA+Kv6ir{@DlMjpC8`1rDX*N^ifn3Oa- zP>v=r{|3wSjsMrp<+?rvZ1#&IQ%o*?Q%fUy9{OfIvd7w82leqs-`IVe19y5!^8?p+ z%lE(O);9mymq@O`lr{MH-Gap%a!lvK(+9_5!wv_d}s`<0wzR2F;-6sG^f)1 zfAhBE<$Hhn)^a}|--)B-fGBwkg|A}DfUPxB;ADB-k7x(+!4Wu(Z^V|l+qB6&n>1q*9dcD_jHBlT z*vR|+hTp{?KmT(AyX9Nn__#hpI{B~9Yw%ik6(uW2wP}cuI}>`1H0k-6=fBTqX`C$v zyXpzH+GeRX%|8xjW>_S<&=S+Pnr``~H$Jia)W5&2PruNUE@20Cie;tIvIjt59r&b0 zjV=c|+__#ALk??qI+k=+1B_gv^QeSsUl&j? z;p|tZ|KgJ`FMscq_bfcG=0&dhz{tYj7c4!e`8Av9+C(?nNM0J_+A`~hL2+5Y%lGV- zcj`{^cVGXwo}+cX;<;dQvT7u2?0R+qYFq{XM198e*L=}E%d_>lL3~zo=0om&Voy%^ z%h9>f^lD0ytPpr zg~{1jZAiO~^T97J@yeh09w`1xwSh24F`NSEhCjRLSXJn`%mH@4#+$x@;up2ebwIl&_3snm%EJ(YEoj{-clclgY{Q#$UL- z{G^^VuQM1Gu)n(U2vif97a;}2J2D&cm4Ei0<mZtf?9#n|`tkjxXn6KX&EI1=R@*$+Kyw>;|^ zN6TfsKa#H^pu#R*_}$O*#n-X_6q!ggu8IzGT!q@a0d4&GoYsxW{s08 zxcb6`!zl91*VjDiv#}r4pKJ1goci!UFDRc`2%OJ$tT_0@2dCnL<$j-qr9L&M`lL5D z(Jg%h*(2AFmk(S^Onhux>cB?H;>YJE=cKZwR~3}pmJcYob}zo~KupBx=(Nh~M4*nz zFreXsw&7fy?>G)Rb7uLh_>fd0az4fHf;q3Jlg~yVw=Ucr;=5V{Uqw2b-#L3OowL9U z9j+Ix`1q<;8v}WtQ-xXig+I)9(3;nXc|pGNB1^pvR0~0A$kl-?YrweTR}h1GVi

c)ijgxDm}8EsRXFt3h@+Ufr7@DN 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 literal 0 HcmV?d00001 diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/backup_config.json b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 000000000..78f40ae7c --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/main_pages.json b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 000000000..a6af93b80 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,7 @@ +{ + "src": [ + "pages/Index", + "pages/page_swiper", + "pages/page_text" + ] +} diff --git a/ArkUIKit/NativeTypeSample/entry/src/main/resources/dark/element/color.json b/ArkUIKit/NativeTypeSample/entry/src/main/resources/dark/element/color.json new file mode 100644 index 000000000..bd7fc7c77 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/main/resources/dark/element/color.json @@ -0,0 +1,12 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#000000" + }, + { + "name": "background_color", + "value": "#2AA1A6B1" + } + ] +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/Ability.test.ets b/ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 000000000..3c81579a2 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/List.test.ets b/ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 000000000..cefb5e406 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/ohosTest/module.json5 b/ArkUIKit/NativeTypeSample/entry/src/ohosTest/module.json5 new file mode 100644 index 000000000..321c0b4e6 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/ohosTest/module.json5 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/ArkUIKit/NativeTypeSample/entry/src/test/List.test.ets b/ArkUIKit/NativeTypeSample/entry/src/test/List.test.ets new file mode 100644 index 000000000..74ba3a099 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/entry/src/test/LocalUnit.test.ets b/ArkUIKit/NativeTypeSample/entry/src/test/LocalUnit.test.ets new file mode 100644 index 000000000..b367c75db --- /dev/null +++ b/ArkUIKit/NativeTypeSample/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/hvigor/hvigor-config.json5 b/ArkUIKit/NativeTypeSample/hvigor/hvigor-config.json5 new file mode 100644 index 000000000..c46181e34 --- /dev/null +++ b/ArkUIKit/NativeTypeSample/hvigor/hvigor-config.json5 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "modelVersion": "5.0.5", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/ArkUIKit/NativeTypeSample/hvigorfile.ts b/ArkUIKit/NativeTypeSample/hvigorfile.ts new file mode 100644 index 000000000..de06c780c --- /dev/null +++ b/ArkUIKit/NativeTypeSample/hvigorfile.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/oh-package.json5 b/ArkUIKit/NativeTypeSample/oh-package.json5 similarity index 100% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/oh-package.json5 rename to ArkUIKit/NativeTypeSample/oh-package.json5 diff --git a/ArkUIKit/CapiSample/NativeType/native_type_sample/ohosTest.md b/ArkUIKit/NativeTypeSample/ohosTest.md similarity index 75% rename from ArkUIKit/CapiSample/NativeType/native_type_sample/ohosTest.md rename to ArkUIKit/NativeTypeSample/ohosTest.md index 0527952b8..e90656ad3 100644 --- a/ArkUIKit/CapiSample/NativeType/native_type_sample/ohosTest.md +++ b/ArkUIKit/NativeTypeSample/ohosTest.md @@ -7,4 +7,6 @@ | 启动应用 | 设备正常运行 | 1.开启开发板
2.编译hap包并将hap包及环境烧录进开发板,运行测试用例
| 成功拉起应用。 | 否 | 验证通过 | | swiper设置自定义箭头功能 | 应用位于首页 | 1.点击首页Swiper按钮 | 1.第一个swiper左右两侧各有一个圆形的淡灰色的箭头,swiper内容为“0” | 否 | 验证通过 | | swiper设置自定义导航点功能 | 应用位于首页 | 1.点击首页Swiper按钮 | 1.第二个swiper左上角有一个被选中为红色未被选中为灰色的导航栏,swiper内容为“0” | 否 | 验证通过 | -| swiper设置自定义数字导航栏功能 | 应用位于首页 | 1.点击首页Swiper按钮 | 1.第三个swiper左上角显示数字导航栏,左侧数字为1/14,其中数字1为红色,14为灰色,swiper内容为“0” | 否 | 验证通过 | \ No newline at end of file +| swiper设置自定义数字导航栏功能 | 应用位于首页 | 1.点击首页Swiper按钮 | 1.第三个swiper左上角显示数字导航栏,左侧数字为1/14,其中数字1为红色,14为灰色,swiper内容为“0” | 否 | 验证通过 | +| 基础 Text 样式展示 | 应用加载完成 | 1.查看第一段文本 | 1.宽 200vp 高 30vp 带边框,斜体 600 字重,超长跑马灯、不可复制 | 否 | 验证通过 | +| TextInput 输入功能 | 应用加载完成 | 1.点击输入框尝试输入 | 1.支持输入,第一个样式内联,第二个带清除按钮 | 否 | 验证通过 | \ No newline at end of file diff --git a/ArkUIKit/NativeTypeSample/screenshot/nativeType.png b/ArkUIKit/NativeTypeSample/screenshot/nativeType.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cb9030a6cf763030bb783ba247d27185cebbbb GIT binary patch literal 105738 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