From 3756eaf0ffec448a2d09f36da2caaa54d9345809 Mon Sep 17 00:00:00 2001 From: dumengdi2 Date: Thu, 3 Jul 2025 12:20:52 +0800 Subject: [PATCH] =?UTF-8?q?Update=20docs=20against=20TR-form=E6=9B=B4?= =?UTF-8?q?=E6=96=B0API19?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dumengdi2 --- en/application-dev/form/Readme-EN.md | 74 +++--- ...g-principles.md => arkts-form-overview.md} | 82 ++++--- .../form/arkts-ui-widget-active-refresh.md | 91 ++++++++ .../form/arkts-ui-widget-configuration.md | 43 ++-- .../form/arkts-ui-widget-content-update.md | 43 ---- .../form/arkts-ui-widget-creation.md | 26 ++- .../form/arkts-ui-widget-event-call.md | 118 +++++----- ...event-formeditextensionability-overview.md | 11 +- ...i-widget-event-formeditextensionability.md | 36 +-- ...ts-ui-widget-event-formextensionability.md | 13 +- .../form/arkts-ui-widget-event-overview.md | 19 +- .../form/arkts-ui-widget-event-router.md | 2 +- .../form/arkts-ui-widget-event-uiability.md | 2 +- .../arkts-ui-widget-interaction-overview.md | 42 ++-- .../form/arkts-ui-widget-lifecycle.md | 12 +- .../form/arkts-ui-widget-modules.md | 24 -- .../form/arkts-ui-widget-open-formmanager.md | 50 ++++ .../form/arkts-ui-widget-page-animation.md | 48 +++- .../arkts-ui-widget-page-custom-drawing.md | 5 +- .../form/arkts-ui-widget-page-overview.md | 8 +- ....md => arkts-ui-widget-passive-refresh.md} | 154 +++++++++++-- .../form/arkts-ui-widget-process.md | 9 + .../arkts-ui-widget-update-by-conditions.md | 42 ---- .../form/arkts-ui-widget-update-by-proxy.md | 19 +- .../form/arkts-ui-widget-update-by-status.md | 2 +- .../arkts-ui-widget-update-by-time-point.md | 72 ------ .../form/figures/WidgetSupportApi_EN.png | Bin 0 -> 16868 bytes .../figures/WidgetTransitionAnimation.gif | Bin 0 -> 206836 bytes .../form/figures/form-process.png | Bin 0 -> 80385 bytes en/application-dev/form/formkit-overview.md | 33 +-- .../form/js-ui-widget-development.md | 46 +--- .../form/js-ui-widget-overview.md | 41 ++++ .../form/widget-development-fa.md | 60 +---- .../form/widget-host-development-guide.md | 36 +-- .../reference/apis-form-kit/errorcode-form.md | 158 ++++++++++--- .../js-apis-app-form-formBindingData.md | 4 +- ...-apis-app-form-formEditExtensionAbility.md | 191 +--------------- .../js-apis-app-form-formExtensionAbility.md | 4 +- .../js-apis-app-form-formHost-sys.md | 12 +- .../js-apis-app-form-formInfo-sys.md | 36 ++- .../js-apis-app-form-formInfo.md | 56 ++--- .../js-apis-app-form-formProvider-sys.md | 2 +- .../js-apis-app-form-formProvider.md | 214 +++++++++++++++++- ...er-application-formEditExtensionContext.md | 5 +- ...er-application-formExtensionContext-sys.md | 2 +- ...-inner-application-formExtensionContext.md | 12 +- 46 files changed, 1116 insertions(+), 843 deletions(-) rename en/application-dev/form/{arkts-ui-widget-working-principles.md => arkts-form-overview.md} (42%) create mode 100644 en/application-dev/form/arkts-ui-widget-active-refresh.md delete mode 100644 en/application-dev/form/arkts-ui-widget-content-update.md delete mode 100644 en/application-dev/form/arkts-ui-widget-modules.md create mode 100644 en/application-dev/form/arkts-ui-widget-open-formmanager.md rename en/application-dev/form/{arkts-ui-widget-update-by-time.md => arkts-ui-widget-passive-refresh.md} (30%) create mode 100644 en/application-dev/form/arkts-ui-widget-process.md delete mode 100644 en/application-dev/form/arkts-ui-widget-update-by-conditions.md delete mode 100644 en/application-dev/form/arkts-ui-widget-update-by-time-point.md create mode 100644 en/application-dev/form/figures/WidgetSupportApi_EN.png create mode 100644 en/application-dev/form/figures/WidgetTransitionAnimation.gif create mode 100644 en/application-dev/form/figures/form-process.png create mode 100644 en/application-dev/form/js-ui-widget-overview.md diff --git a/en/application-dev/form/Readme-EN.md b/en/application-dev/form/Readme-EN.md index 2710099a1ed..81ed1442d26 100644 --- a/en/application-dev/form/Readme-EN.md +++ b/en/application-dev/form/Readme-EN.md @@ -1,39 +1,39 @@ # Form Kit - [Introduction to Form Kit](formkit-overview.md) -- Service Widget Development in Stage Model - - Developing an ArkTS Widget - - [ArkTS Widget Working Principles](arkts-ui-widget-working-principles.md) - - [ArkTS Widget Related Modules](arkts-ui-widget-modules.md) - - ArkTS Widget Development - - [Creating an ArkTS Widget](arkts-ui-widget-creation.md) - - [Configuring Widget Configuration Files](arkts-ui-widget-configuration.md) - - [Widget Lifecycle Management](arkts-ui-widget-lifecycle.md) - - Widget Page Development - - [Widget Page Capability Overview](arkts-ui-widget-page-overview.md) - - [Using Animations in the Widget](arkts-ui-widget-page-animation.md) - - [Applying Custom Drawing in the Widget](arkts-ui-widget-page-custom-drawing.md) - - Widget Event Development - - [Widget Event Capability Overview](arkts-ui-widget-event-overview.md) - - [Launching the UIAbility of the Widget Provider Through the router Event](arkts-ui-widget-event-router.md) - - [Launching the UIAbility of the Widget Provider in the Background Through the call Event](arkts-ui-widget-event-call.md) - - [Updating Widget Content Through the message Event](arkts-ui-widget-event-formextensionability.md) - - [Updating Widget Content Through the router or call Event](arkts-ui-widget-event-uiability.md) - - Widget Data Interaction - - [Updating Widget Content](arkts-ui-widget-interaction-overview.md) - - [Interval-based Widget Updates](arkts-ui-widget-update-by-time.md) - - [Time-specific Widget Updates](arkts-ui-widget-update-by-time-point.md) - - - [Updating Widget Content Through a Proxy](arkts-ui-widget-update-by-proxy.md) - - [Conditional Widget Updates](arkts-ui-widget-update-by-conditions.md) - - [Updating Widget Content by Widget Host (for System Applications Only)](arkts-ui-widget-content-update.md) - - - [Updating Local and Online Images in the Widget](arkts-ui-widget-image-update.md) - - [Updating Widget Content by State](arkts-ui-widget-update-by-status.md) - - Editing the ArkTS Widget Page - - [Overview of ArkTs Widget Page Editing Interaction](arkts-ui-widget-event-formeditextensionability-overview.md) - - [Editing and Updating the Widget Content](arkts-ui-widget-event-formeditextensionability.md) - - - [Widget Host Development (for System Applications Only)](widget-host-development-guide.md) - - - [Developing a JS Widget](js-ui-widget-development.md) -- [Service Widget Development in FA Model](widget-development-fa.md) +- ArkTS Widget Development (Recommended) + - [ArkTS Widget Overview](arkts-form-overview.md) + - [Creating an ArkTS Widget](arkts-ui-widget-creation.md) + - [Configuring ArkTS Widget Configuration Files](arkts-ui-widget-configuration.md) + - [Managing ArkTS Widget Lifecycle](arkts-ui-widget-lifecycle.md) + - [ArkTS Widget Process Model](arkts-ui-widget-process.md) + - ArkTS Widget Provider Development + - ArkTS Widget UI Development + - [Overview of ArkTS Widget UI Development](arkts-ui-widget-page-overview.md) + - [Using Animations in ArkTS Widgets](arkts-ui-widget-page-animation.md) + - [Using Canvas in ArkTS Widgets](arkts-ui-widget-page-custom-drawing.md) + - ArkTS Widget Page Interaction + - [Overview of ArkTS Widget Page Interaction](arkts-ui-widget-event-overview.md) + - [Interaction Through the router Event](arkts-ui-widget-event-router.md) + - [Interaction Through the call Event](arkts-ui-widget-event-call.md) + - [Interaction Through the message Event](arkts-ui-widget-event-formextensionability.md) + - ArkTS Widget Update + - [Overview of ArkTS Widget Update](arkts-ui-widget-interaction-overview.md) + - [Active Update of ArkTS Widgets](arkts-ui-widget-active-refresh.md) + - [Passive Update of ArkTS Widgets](arkts-ui-widget-passive-refresh.md) + + - [Updating Widget Content Through a Proxy](arkts-ui-widget-update-by-proxy.md) + + - [Updating Local and Online Images in the Widget](arkts-ui-widget-image-update.md) + - [Updating Widget Content by State](arkts-ui-widget-update-by-status.md) + - ArkTS Widget Editing + - [Overview of ArkTS Widget Editing](arkts-ui-widget-event-formeditextensionability-overview.md) + - [Widget Editing Development](arkts-ui-widget-event-formeditextensionability.md) + - Widget Addition to Home Screen + - [Adding Widgets to the Home Screen](arkts-ui-widget-open-formmanager.md) + + - [ArkTS Widget Host Development (for System Applications Only)](widget-host-development-guide.md) + +- JS Widget Development + - [JS Widget Overview](js-ui-widget-overview.md) + - [Developing a JS Widget (Stage Model)](js-ui-widget-development.md) + - [Developing a JS Widget (FA Model)](widget-development-fa.md) diff --git a/en/application-dev/form/arkts-ui-widget-working-principles.md b/en/application-dev/form/arkts-form-overview.md similarity index 42% rename from en/application-dev/form/arkts-ui-widget-working-principles.md rename to en/application-dev/form/arkts-form-overview.md index 874a51f0fba..d0b9198b8e9 100644 --- a/en/application-dev/form/arkts-ui-widget-working-principles.md +++ b/en/application-dev/form/arkts-form-overview.md @@ -1,53 +1,75 @@ -# ArkTS Widget Working Principles +# ArkTS Widget Overview +This section describes how to develop an ArkTS widget based on the declarative paradigm. +## Highlights +1. Unified development paradigm -## Implementation Principles + - ArkTS widgets share the same declarative UI development framework as application pages. This means that the page layouts can be directly reused in widgets, improving development experience and efficiency. For details, see Figure 1. -**Figure 1** ArkTS widget implementation principles -![WidgetPrinciple](figures/WidgetPrinciple.png) + **Figure 1** Comparison of widget project structures + ![WidgetProject](figures/WidgetProject.png) + +2. Enhanced widget capabilities + + - Animation: ArkTS widgets support the [property animation](../reference/apis-arkui/arkui-ts/ts-animatorproperty.md) and [explicit animation](../reference/apis-arkui/arkui-ts/ts-explicit-animation.md) capabilities, which can be leveraged to deliver a more engaging experience. + - Custom drawing: ArkTS widgets allow you to draw graphics with the [Canvas](../reference/apis-arkui/arkui-ts/ts-components-canvas-canvas.md) component to present information more vividly. + - Logic code execution: The capability to run logic code in widgets means that service logic can be self-closed in widgets, expanding the use cases of widgets. + +## How to Implement - Widget host: an application that displays the widget content and controls the widget location. Only the system application can function as a widget host. -- Widget provider: an application that provides the widget content to display and controls how widget components are laid out and how they interact with users. +- Widget provider: an application that provides the widget content and controls the widget content, component layout, and component tap events. -- Widget Manager: a resident agent that manages widgets in the system. It provides [formProvider](../reference/apis-form-kit/js-apis-app-form-formProvider.md) and [formHost](../reference/apis-form-kit/js-apis-app-form-formHost-sys.md) as well as the APIs for widget management, usage, and periodic updates. +- Widget Manager: a resident agent that manages widgets in the system. It provides [formProvider](../reference/apis-form-kit/js-apis-app-form-formProvider.md) and [formHost](../reference/apis-form-kit/js-apis-app-form-formHost-sys.md) as well as the APIs for widget management, usage, and periodic updates. -- Widget rendering service: a service that manages widget rendering instances. Widget rendering instances are bound to the [FormComponent](../reference/apis-arkui/arkui-ts/ts-basic-components-formcomponent-sys.md) on the widget host on a one-to-one basis. The widget rendering service runs the widget page code **widgets.abc** for rendering, and sends the rendered data to the corresponding [FormComponent](../reference/apis-arkui/arkui-ts/ts-basic-components-formcomponent-sys.md) on the widget host. +- Widget rendering service: a service that manages widget rendering instances. Widget rendering instances are bound to the [FormComponent](../reference/apis-arkui/arkui-ts/ts-basic-components-formcomponent-sys.md) on the widget host on a one-to-one basis. The widget rendering service runs the widget page code **widgets.abc** for rendering based on the widget information configured in **form_config.json**, and sends the rendered data to the corresponding [FormComponent](../reference/apis-arkui/arkui-ts/ts-basic-components-formcomponent-sys.md) on the widget host. - **Figure 2** Working principles of the ArkTS widget rendering service +**Figure 2** Implementation principles of ArkTS widgets +![WidgetPrinciple](figures/WidgetPrinciple.png) + +**Figure 3** Working principles of the ArkTS widget rendering service ![WidgetRender](figures/WidgetRender.png) -Compared with dynamic widgets, static widgets have the same overall running framework and rendering process. The main difference is that after the widget rendering service renders the widget content, the widget host uses the last frame of rendered data as a static image, and the widget rendering instance releases all running resources of the widget to save memory. As such, frequent updating of static widgets causes continuous creation and destruction of resources, resulting in increased power consumption.
Unlike JS widgets, ArkTS widgets support logic code execution. The widget page code **widgets.abc** is executed by the widget rendering service, which is managed by the Widget Manager. Each widget component of a widget host corresponds to a rendering instance in the widget rendering service. Rendering instances of a widget provider run in the same ArkTS virtual machine operating environment, and rendering instances of different widget providers run in different ArkTS virtual machine operating environments. In this way, the resources and state data are isolated between widgets of different widget providers. During development, pay attention to the use of the **globalThis** object. Use one **globalThis** object for widgets from the same widget provider, and different **globalThis** objects for widgets from different widget providers. +## ArkTS Widget Types +ArkTS widgets are classified into dynamic widgets and static widgets. -## Advantages of ArkTS Widgets +Compared with dynamic widgets, static widgets have the same overall running framework and rendering process. The main difference is that after the widget rendering service renders the widget content, the widget host uses the last frame of rendered data as a static image, and the widget rendering instance releases all running resources of the widget to save memory. As such, frequent updating of static widgets causes continuous creation and destruction of resources, resulting in increased power consumption.
+ +| Widget Type| Supported Capability| Scenario| Pros and Cons| +| ------- | ------ | ------- | ------- | +| Static widget| Limited to UI components and layout capabilities.| Suitable for presenting static information (with a stable UI), allowing navigation to a specific UIAbility via the **FormLink** component.| Offers basic functionality with efficient memory management.| +| Dynamic widget| Common event and custom animation capabilities in addition to UI components and layout capabilities.| Suitable for scenarios requiring complex logic and interactions, such as updating images or content on a widget.| Provides enhanced capabilities at the cost of high memory overhead.| -As a quick entry to applications, ArkTS widgets outperform JS widgets in the following aspects: +### Dynamic Widget +For dynamic ArkTS widgets, the [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) API is provided for interaction between the widget internal and the provider application. Currently, this API supports the router, message, and call events and can be called only in the widget. -- Improved development experience and efficiency, thanks to the unified development paradigm - - ArkTS widgets share the same declarative UI development framework as application pages. This means that the page layouts can be directly reused in widgets, improving development experience and efficiency. - - **Figure 3** Comparison of widget project structures - ![WidgetProject](figures/WidgetProject.png) - -- More widget features - - Animation: ArkTS widgets support the [property animation](../reference/apis-arkui/arkui-ts/ts-animatorproperty.md) and [explicit animation](../reference/apis-arkui/arkui-ts/ts-explicit-animation.md) capabilities, which can be leveraged to deliver a more engaging experience. - - Custom drawing: ArkTS widgets allow you to draw graphics with the [\](../reference/apis-arkui/arkui-ts/ts-components-canvas-canvas.md) component to present information more vividly. - - Logic code execution: The capability to run logic code in widgets means that service logic can be self-closed in widgets, expanding the use cases of widgets. +**Figure 4** Implementation principles of dynamic widget events +![WidgetPostCardAction](figures/WidgetPostCardAction.png) -## Constraints on ArkTS Widgets +Dynamic widget events are used in the following scenarios: +- router event: used to redirect to a specified UIAbility, enabling the functionality of navigating from a widget to an internal application page after a widget is touched. For non-system applications, this redirection is limited to their own UIAbilities. +- call event: used to launch a specified UIAbility to the background, after which the UIAbility can request the corresponding background continuous task to complete functionalities such as music playback. +- message event: used to launch the FormExtensionAbility, which then notifies the application via the **onFormEvent** callback, thereby fulfilling the functionality of passing messages to the application after a widget is touched. +### Static Widget +The **FormLink** component is provided for interactions between static widgets and widget providers. It supports three types of events: router, message, and call. +See [FormLink](../reference/apis-arkui/arkui-ts/ts-container-formlink.md). + +## Constraints Compared with JS widgets, ArkTS widgets provide more capabilities, but they are also more prone to malicious behavior. To account for the impact on the widget host – typically the home screen, ArkTS widgets are subject to the following restrictions: -- When importing modules, you can import only the modules marked with "supported in ArkTS widgets." +- Currently, widgets can be developed only based on ArkUI. Cross-platform development is not supported. + +- When importing modules, you can import only the modules marked with "supported in ArkTS widgets." If an API that is not supported is used, the widget loading is abnormal. - [HAR](../quick-start/har-package.md) can be imported, but [HSP](../quick-start/in-app-hsp.md) cannot. -- The native programming language cannot be used for development. +- The native programming language cannot be used for development, and the native .so file cannot be loaded. -- Only partial components, events, animations, data management, state management, and API capabilities of the [declarative paradigm](../ui/arkts-ui-development-overview.md) are supported. +- Only partial components, events, animations, data management, state management, and API capabilities of the [declarative paradigm](../ui/arkts-ui-development-overview.md) are supported. For APIs that can be used in ArkTS widgets, the following description will be added: "Widget capability: This API can be used in ArkTS widgets since API version *x*." - The event processing of the widget is independent of that of the widget host. To prevent gesture conflicts, avoid using swipers in the widget when the widget host supports left and right swipes. @@ -59,11 +81,5 @@ In addition, ArkTS widgets do not support the following features: - Hot reload -- **setTimeOut** - -## Samples - -The following samples are provided to help you better understand how to develop an ArkTS widget: - +- setTimeOut -- [Communication Between JS and C++ for Stage Model Widgets (ArkTS, API version 10)](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SuperFeature/Widget/FormGame) diff --git a/en/application-dev/form/arkts-ui-widget-active-refresh.md b/en/application-dev/form/arkts-ui-widget-active-refresh.md new file mode 100644 index 00000000000..a02478472bc --- /dev/null +++ b/en/application-dev/form/arkts-ui-widget-active-refresh.md @@ -0,0 +1,91 @@ +# Active Update of ArkTS Widgets + +This section provides the development guidelines for active update. For details about the update process, see [Active Update](./arkts-ui-widget-interaction-overview.md#active-update). + +## Active Update by Widget Provider + +The widget provider can call [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) to actively update the widget. It is recommended that this API be used with the widget lifecycle callbacks [onFormEvent](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonformevent), [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform), and [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform). + +```ts +import { formBindingData, formProvider } from '@kit.FormKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let storage = new LocalStorage(); +const TAG: string = 'Index'; +const DOMAIN_NUMBER: number = 0xFF00; + +@Entry(storage) +@Component +struct Index { + @StorageLink('formId') formId: number = 0; + @StorageLink('formData') formData: Object | string = {}; + + build() { + Column() { + Column() { + //... + Button() { + //... + } + .onClick(() => { + console.info(DOMAIN_NUMBER, TAG, `click to check updateForm, formId: ${this.formId}`); + const formInfo: formBindingData.FormBindingData = formBindingData.createFormBindingData(this.formData); + // formId is the ID of the widget to be updated. + formProvider.updateForm(this.formId, formInfo).then(() => { + console.info(DOMAIN_NUMBER, TAG, 'updateForm success.'); + }).catch((error: BusinessError) => { + console.error(DOMAIN_NUMBER, TAG, `updateForm fail, code: ${error?.code}, message: ${error?.message}`); + }) + }) + .margin(5) + } + //... + } + //... + } +} +``` + + +## Active Update by Widget Host (for System Applications Only) + +Due to the time limit of interval-based and time-specific updates, the widget host can call [requestForm](../reference/apis-form-kit/js-apis-app-form-formHost-sys.md#requestform) to request the Widget Manager to actively update the widget. The Widget Manager calls the [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform) lifecycle callback in the FormExtensionAbility of the widget provider. In the callback, the [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) API can be called to update the widget content. + +```ts +import { formHost } from '@kit.FormKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let storage = new LocalStorage(); +const TAG: string = 'Index'; +const DOMAIN_NUMBER: number = 0xFF00; + +@Entry(storage) +@Component +struct Index { + @StorageLink('formId') formId: number = 0; + + build() { + Column() { + Column() { + //... + Button() { + //... + } + .onClick(() => { + console.info(DOMAIN_NUMBER, TAG, `click to check requestForm, formId: ${this.formId}`); + // formId is the ID of the widget to be updated. + formHost.requestForm(this.formId.toString()).then(() => { + console.info(DOMAIN_NUMBER, TAG, 'requestForm success.'); + }).catch((error: BusinessError) => { + console.error(DOMAIN_NUMBER, TAG, `requestForm fail, code: ${error?.code}, message: ${error?.message}`); + }) + }) + .margin(5) + } + //... + } + //... + } +} +``` + diff --git a/en/application-dev/form/arkts-ui-widget-configuration.md b/en/application-dev/form/arkts-ui-widget-configuration.md index 8d736d119e5..501a742aaac 100644 --- a/en/application-dev/form/arkts-ui-widget-configuration.md +++ b/en/application-dev/form/arkts-ui-widget-configuration.md @@ -1,10 +1,11 @@ -# Configuring Widget Configuration Files +# Configuring ArkTS Widget Configuration Files -Widget-related configuration includes **FormExtensionAbility** configuration and widget configuration. +Widget-related configuration includes [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md) configuration and widget configuration. +## FormExtensionAbility Configuration -1. Configure FormExtensionAbility information under **extensionAbilities** in the [module.json5 file](../quick-start/module-configuration-file.md). For a FormExtensionAbility, you must specify **metadata**. Specifically, set **name** to **ohos.extension.form** (fixed), and set **resource** to the index of the widget configuration information. +Configure FormExtensionAbility information under **extensionAbilities** in the [module.json5 file](../quick-start/module-configuration-file.md). For a FormExtensionAbility, you must specify metadata. Specifically, set **name** to **ohos.extension.form** (fixed), and set **resource** to the [index of the widget configuration information](#widget-configuration). Example configuration: @@ -32,7 +33,11 @@ Widget-related configuration includes **FormExtensionAbility** configuration and } ``` -2. Configure the widget configuration information. In the **metadata** configuration item of FormExtensionAbility, you can specify the resource index of specific configuration information of the widget. For example, if **resource** is set to **$profile:form_config**, **form_config.json** in the **resources/base/profile/** directory of the development view is used as the profile configuration file of the widget. The following table describes the internal structure of the profile configuration file. +## Widget Configuration + +In the **metadata** configuration item of FormExtensionAbility, you can specify the resource index of specific configuration information of the widget. For example, if **resource** is set to **$profile:form_config**, **form_config.json** in the **resources/base/profile/** directory of the development view is used as the profile configuration file of the widget. The **form_config.json** configuration file is automatically generated when you [create a widget](./arkts-ui-widget-creation.md). + +### Fields in Configuration File **Table 1** form_config.json file @@ -40,33 +45,33 @@ Widget-related configuration includes **FormExtensionAbility** configuration and | -------- | -------- | -------- | -------- | | forms | Configuration about all application widgets.
A maximum of 16 widgets can be configured. If more than 16 widgets are configured, the first 16 widgets are retained.| Array| No| | name | Name of the widget. The value is a string with a maximum of 127 bytes.| String| No| - | displayName | Display name of the widget. The value can be a string or a resource index to the name in multiple languages. The string must contain 1 to 30 bytes.| String| No| - | description | Description of the widget. The value can be a string or a resource index to descriptions in multiple languages. The value is a string with a maximum of 255 bytes.| String| Yes (initial value: left empty)| + | displayName | Display name of the widget. It is primarily displayed on the widget management page and should reflect the core functionalities or usage of the widget. The value can be a string or a resource index to the name in multiple languages, with the resource index recommended. The string must contain 1 to 30 bytes.| String| No| + | description | Description of the widget. It is displayed on the widget management page and should reflect the core functionalities of the widget. The value can be a string or a resource index to the name in multiple languages, with the resource index recommended. The value is a string with a maximum of 255 bytes.| String| Yes (initial value: left empty)| | src | Full path of the UI code corresponding to the widget. For an ArkTS widget, the full path must contain the widget file name extension, for example, **./ets/widget/pages/WidgetCard.ets**. For a JS widget, the full path does not need to contain the widget file name extension, for example, **./js/widget/pages/WidgetCard**.| String| No| | uiSyntax | Type of the widget.
- **arkts**: ArkTS widget
- **hml**: JS widget| String| Yes (initial value: **hml**)| - | [window](#window-field)| Window-related configurations.| Object| Yes (initial value: see Table 2)| + | [window](#window-field)| Window-related configurations.
**NOTE**
This field takes effect only for JS widgets.| Object| Yes (initial value: see Table 2)| | isDefault | Whether the widget is a default one. Each UIAbility has only one default widget.
- **true**: The widget is the default one.
- **false**: The widget is not the default one.| Boolean| No| - | colorMode | Color mode of the widget.
- **auto**: following the system color mode
- **dark**: dark color mode
- **light**: light color mode| String| Yes (initial value: **auto**)| - | supportDimensions | Grid styles supported by the widget.
- **1 * 2**: indicates a grid with one row and two columns.
- **2 * 2**: indicates a grid with two rows and two columns.
- **2 * 4**: indicates a grid with two rows and four columns.
- **4 * 4**: indicates a grid with four rows and four columns.
- **1 * 1**: indicates a round widget with one row and one column.
- **6 * 4**: indicates a grid with six rows and four columns.| String array| No| + | colorMode | Color mode of the widget.
- **auto**: following the system color mode
- **dark**: dark color mode
- **light**: light color mode. | String| Yes (initial value: **auto**)| + | supportDimensions | Grid styles supported by the widget.
- **1 * 2**: indicates a grid with one row and two columns.
- **2 * 2**: indicates a grid with two rows and two columns.
- **2 * 4**: indicates a grid with two rows and four columns.
- **4 * 4**: indicates a grid with four rows and four columns.
- **1 * 1**: round widget with one row and one column. This value is configurable only for system applications and takes effect only when the screen is locked.
- **6 * 4**: indicates a grid with six rows and four columns.| String array| No| | defaultDimension | Default grid style of the widget. The value must be available in the **supportDimensions** array of the widget.| String| No| | updateEnabled | Whether the widget can be updated periodically.
- **true**: The widget can be updated at a specified interval (**updateDuration**) or at the scheduled time (**scheduledUpdateTime**). **updateDuration** takes precedence over **scheduledUpdateTime**. If both are specified, the value specified by **updateDuration** is used.
- **false**: The widget cannot be updated periodically.| Boolean| No| | scheduledUpdateTime | Scheduled time to update the widget. The value is in 24-hour format and accurate to minute.
**NOTE**
**updateDuration** takes precedence over **scheduledUpdateTime**. If both are specified, the value specified by **updateDuration** is used.| String| Yes (initial value: The widget is not updated at the scheduled time.)| | updateDuration | Interval to update the widget. The value is a natural number, in the unit of 30 minutes.
If the value is **0**, this field does not take effect.
If the value is a positive integer *N*, the interval is calculated by multiplying *N* and 30 minutes.
**NOTE**
**updateDuration** takes precedence over **scheduledUpdateTime**. If both are specified, the value specified by **updateDuration** is used.| Number| Yes (initial value: **0**)| | formConfigAbility | Link to a specific page of the application. The value is a URI.| String| Yes (initial value: left empty)| | metadata | Metadata of the widget. For details, see [Metadata](../reference/apis-ability-kit/js-apis-bundleManager-metadata.md).| Object| Yes (initial value: left empty)| - | dataProxyEnabled | Whether the widget supports the update-through-proxy feature.
- **true**: The widget supports the update-through-proxy feature.
- **false**: The widget does not support the update-through-proxy feature.
If this tag is set to **true**, the settings for the scheduled update time will still take effect, but the settings for the update interval and next update time will not.| Boolean| Yes (initial value: **false**)| - | [isDynamic](#isdynamic-field)| Whether the widget is a dynamic widget. This tag applies only to ArkTS widgets.
- **true**: The widget is a dynamic widget.
- **false**: The widget is a static widget.
| Boolean| Yes (initial value: **true**)| + | dataProxyEnabled | Whether the widget supports the [update-through-proxy](./arkts-ui-widget-update-by-proxy.md) feature.
- **true**: The widget supports the update-through-proxy feature.
- **false**: The widget does not support the update-through-proxy feature.
If it is set to **true**, the settings for the [interval-based update and next update](./arkts-ui-widget-passive-refresh.md#interval-based-update) will not take effect, and [Time-specific Update](./arkts-ui-widget-passive-refresh.md#time-specific-update) is not affected.| Boolean| Yes (initial value: **false**)| + | [isDynamic](#isdynamic-field)| Whether the widget is a dynamic widget. This field applies only to ArkTS widgets.
- **true**: The widget is a dynamic widget.
- **false**: The widget is a static widget.
| Boolean| Yes (initial value: **true**)| | fontScaleFollowSystem | Whether the font size of the widget changes with the system font size.
- **true**: The font size varies with the system font size.
- **false**: The font size cannot change with the system font size.
| Boolean| Yes (initial value: **true**)| - | supportShapes | Shapes that the widget can be displayed. The options are as follows:
- **rect**: square widget.
- **circle**: circular widget.| String| Yes (initial value: **rect**)| + | supportShapes | Shapes that the widget can be displayed. The options are as follows:
- **rect**: rectangular widget.
- **circle**: circular widget.| String array| Yes (initial value: **rect**)| | previewImages | Preview images of the widget, corresponding to the **supportDimensions** parameter.| String| Yes (mandatory for smart wearables and currently valid only for wearables)| - | formVisibleNotify | Whether the widget is allowed to use the widget visibility notification. This parameter is valid only for widgets of system applications.| Boolean| Yes (initial value: **false**)| - | transparencyEnabled | Whether the widget host is allowed to set the background transparency of the widget. This tag applies only to ArkTS widgets.
- **true**: The widget host is allowed to set the background transparency of the widget.
- **false**: The widget host is not allowed to set the background transparency of the widget.
| Boolean| Yes (initial value: **false**)| + | formVisibleNotify | Whether to notify the widget provider of the visible status change. This field is valid only for widgets of system applications.
- **true**: The widget provider is notified of the status change.
- **false**: The widget provider is not notified of the status change.| Boolean| Yes (initial value: **false**)| + | transparencyEnabled | Whether the widget host is allowed to set the background transparency of the widget. This field applies only to ArkTS widgets.
- **true**: The widget host is allowed to set the background transparency of the widget.
- **false**: The widget host is not allowed to set the background transparency of the widget.
| Boolean| Yes (initial value: **false**)| |enableBlurBackground|Whether a blur background is enabled for the widget.
- **true**: A blur background is enabled.
- **false**: A blur background is disabled.|Boolean|Yes (initial value: **false**)| |renderingMode|Rendering mode of the widget.
- **autoColor**: automatic mode, where the widget is visible in both the lock screen widget center and the home screen widget center/widget management.
- **fullColor**: full-color mode, where the widget is visible in the home screen widget center/widget management.
- **singleColor**: monochrome mode, where the widget is visible in the lock screen widget center. |String|Yes (initial value: **fullColor**)| |multiScheduledUpdateTime|Times for updating the widget. As an additional parameter for single-point update, it follows the 24-hour format, precise to the minute. It allows up to 24 distinct times, with every two times separated by a comma (,).
**NOTE**
It must be used together with **scheduledUpdateTime**.|String|Yes (initial value: The widget is not updated at the scheduled times.)| |conditionUpdate|Conditional update capabilities supported by the widget (valid only for ArkTS widgets of system applications). The value can be:
- **network**: Network update is supported.|String|Yes (initial value: an empty string)| -## isDynamic Field +### isDynamic Field Specifies whether the widget is a dynamic widget. It applies only to ArkTS widgets. @@ -75,7 +80,7 @@ Specifies whether the widget is a dynamic widget. It applies only to ArkTS widge | Static widget| Limited to UI components and layout capabilities.| Suitable for presenting static information (with a stable UI), allowing navigation to a specific UIAbility via the **FormLink** component.| Offers basic functionality with efficient memory management.| | Dynamic widget| Common event and custom animation capabilities in addition to UI components and layout capabilities.| Suitable for scenarios requiring complex logic and interactions, such as updating images or content on a widget.| Provides enhanced capabilities at the cost of high memory overhead.| -## window Field +### window Field Describes the internal structure of a window object. @@ -84,9 +89,9 @@ Describes the internal structure of a window object. | designWidth | Baseline width for page design. The size of an element is scaled by the actual device width.| Number| Yes (initial value: **720px**)| | autoDesignWidth | Whether to automatically calculate the baseline width for page design. If it is set to **true**, the **designWidth** attribute will be ignored, and the baseline width will be calculated based on the device width and screen density.| Boolean| Yes (initial value: **false**)| - Example configuration: - +### Configuration File Example + ```json { "forms": [ @@ -111,7 +116,6 @@ Describes the internal structure of a window object. "2*2" ], "formConfigAbility": "ability://EntryAbility", - "dataProxyEnabled": false, "isDynamic": true, "transparencyEnabled": false, "metadata": [] @@ -119,3 +123,4 @@ Describes the internal structure of a window object. ] } ``` + diff --git a/en/application-dev/form/arkts-ui-widget-content-update.md b/en/application-dev/form/arkts-ui-widget-content-update.md deleted file mode 100644 index 0ab8252a14c..00000000000 --- a/en/application-dev/form/arkts-ui-widget-content-update.md +++ /dev/null @@ -1,43 +0,0 @@ -# Updating Widget Content by Widget Host (for System Applications Only) - - -Widgets that are updated periodically are subject to the scheduled time or interval settings. To offer more flexible updates, the widget host can provide a button to proactively trigger a widget update. Specifically, the widget host calls the [requestForm](../reference/apis-form-kit/js-apis-app-form-formHost-sys.md#requestform) API to request a widget update. The system then calls the [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onupdateform) lifecycle callback in the FormExtensionAbility of the widget provider. In the callback, the [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#updateform) API can be used to update the widget content. For details about the **onUpdateForm** lifecycle callback, see [Updating Widget Content Through the message Event](arkts-ui-widget-event-formextensionability.md). - -```ts -import { formHost } from '@kit.FormKit'; -import { BusinessError } from '@kit.BasicServicesKit'; -import { hilog } from '@kit.PerformanceAnalysisKit'; - -let storage = new LocalStorage(); -const TAG: string = 'Index'; -const DOMAIN_NUMBER: number = 0xFF00; - -@Entry(storage) -@Component -struct Index { - @StorageLink('formId') formId: number = 0; - - build() { - Column() { - Column() { - //... - Button() { - //... - } - .onClick(() => { - hilog.info(DOMAIN_NUMBER, TAG, `FormAbility update form click, formId: ${this.formId}`); - // formId is the ID of the widget to be updated. - formHost.requestForm(this.formId.toString()).then(() => { - hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in requestForming.'); - }).catch((error: BusinessError) => { - hilog.error(DOMAIN_NUMBER, TAG, `requestForm fail, error: ${JSON.stringify(error)}`); - }) - }) - .margin(5) - } - //... - } - //... - } -} -``` diff --git a/en/application-dev/form/arkts-ui-widget-creation.md b/en/application-dev/form/arkts-ui-widget-creation.md index c989c7fa43b..a21d1c05182 100644 --- a/en/application-dev/form/arkts-ui-widget-creation.md +++ b/en/application-dev/form/arkts-ui-widget-creation.md @@ -1,5 +1,5 @@ # Creating an ArkTS Widget - +## How to Create You can create a widget in either of the following modes: - When creating a project, select **Application**, and then right-click a module folder and choose **New** > **Service Widget** to create a widget. @@ -21,8 +21,30 @@ To create an ArkTS widget in an existing project, perform the following steps: 2. Select a widget template based on the actual service scenario. ![WidgetProjectCreate2](figures/WidgetProjectCreate2.png) -3. Set **Language** to **ArkTS** and click **Finish**. +3. Set **Language** to **ArkTS**, set **Support dimension** to the desired widget size, and then set **Default dimension** to the default widget dimension. You can refer to or modify the widget dimension in the [form_config.json](arkts-ui-widget-configuration.md) file. Then, you can click **Finish** to create an ArkTS widget. ![WidgetProjectCreate3](figures/WidgetProjectCreate3.png) You are advised to name the widget based on the actual scenario. After an ArkTS widget is created, the following widget-related files are automatically added to the project directory: **EntryFormAbility.ets** (widget lifecycle management file), **WidgetCard.ets** (widget page file), and **form_config.json** (widget configuration file). ![WidgetProjectView](figures/WidgetProjectView.png) +## Project Structure +**Figure 1** ArkTS widget project directory and related modules +![WidgetModules](figures/WidgetModules.png) + + +- [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md): provides lifecycle callbacks invoked when a widget is created, destroyed, or updated. + +- [FormExtensionContext](../reference/apis-form-kit/js-apis-inner-application-formExtensionContext.md): provides context for FormExtensionAbilities. You can use the APIs of this module to start FormExtensionAbilities. + +- [formProvider](../reference/apis-form-kit/js-apis-app-form-formProvider.md): provides capabilities such as obtaining widget information, updating widgets, and setting the widget update time. + +- [formInfo](../reference/apis-form-kit/js-apis-app-form-formInfo.md): provides types and enums related to the widget information and state. + +- [formBindingData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md): provides APIs for widget data binding. You can use the APIs to create a **FormBindingData** object and obtain related information. + +- [Page layout (WidgetCard.ets)](arkts-ui-widget-page-overview.md): provides the widget UI development capability based on ArkUI. + - [General capabilities of ArkTS widgets](arkts-ui-widget-page-overview.md#page-capabilities-supported-by-arkts-widgets): provide components, attributes, and APIs that can be used in ArkTS widgets. + - [Capabilities exclusive to ArkTS widgets](arkts-ui-widget-event-overview.md): include the **postCardAction** API used for interaction between the widget internal and the provider application and can be called only in the widget. + +- [Widget configuration](arkts-ui-widget-configuration.md): includes FormExtensionAbility configuration and widget configuration. + - Configure the FormExtensionAbility information under **extensionAbilities** in the [module.json5 file](../quick-start/module-configuration-file.md). + - Configure the widget configuration information (**WidgetCard.ets**) in the [form_config.json](arkts-ui-widget-configuration.md) file in **resources/base/profile**. diff --git a/en/application-dev/form/arkts-ui-widget-event-call.md b/en/application-dev/form/arkts-ui-widget-event-call.md index 56708881403..2cc922760d0 100644 --- a/en/application-dev/form/arkts-ui-widget-event-call.md +++ b/en/application-dev/form/arkts-ui-widget-event-call.md @@ -1,4 +1,4 @@ -# Launching the UIAbility of the Widget Provider in the Background Through the call Event +# Launching UIAbility to the Background (call Event) There may be cases you want to provide in a widget access to features available in your application running in the foreground, for example, the play, pause, and stop buttons in a music application widget. This is where the **call** capability of the [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) API comes in handy. This capability, when used in a widget, can start the specified UIAbility of the widget provider in the background. It also allows the widget to call the specified method of the application and transfer data so that the application, while in the background, can behave accordingly in response to touching of the buttons on the widget. @@ -10,70 +10,75 @@ There may be cases you want to provide in a widget access to features available ## How to Develop 1. Create a dynamic widget. - Create a dynamic widget named WidgetEventCallCardArkTs. + Create a dynamic widget named WidgetEventCall. 2. Implement page layout. - In this example, two buttons are laid out on the widget page. When one button is clicked, the **postCardAction** API is called to send a call event to the target UIAbility. Note that the **method** parameter in the API indicates the method to call in the target UIAbility. It is mandatory and of the string type. - ```ts - //src/main/ets/widgeteventcallcard/pages/WidgetEventCallCardCard.ets + In this example, two buttons (A and B) are laid out on the widget page. When one button is touched, the **postCardAction** API is called to send a call event to the target UIAbility, with the method to be called defined in the event. Button A and button B correspond to the funA and funB methods, respectively. The funA method carries the **formID** parameter, and the funB method carries the **formID** and **num** parameters. Pass parameters as required during development. In **postCardAction**, the **method** parameter is mandatory and identifies the name of the method to be invoked, which should match the method listened for by the UIAbility in step 3. Other parameters are optional. + ```ts + //src/main/ets/widgeteventcallcard/pages/WidgetEventCall.ets @Entry @Component - struct WidgetEventCallCard { + struct WidgetEventCall { @LocalStorageProp('formId') formId: string = '12400633174999288'; - + private funA: string = 'Button A'; + private funB: string = 'Button B'; + build() { - Column() { - //... - Row() { - Column() { - Button() { - //... + RelativeContainer() { + Button(this.funA) + .id('funA__') + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Center }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + .onClick(() => { + postCardAction(this, { + action: 'call', + // Only the UIAbility of the current application is allowed. The ability name must be the same as that defined in module.json5. + abilityName: 'WidgetEventCallEntryAbility', + params: { + formId: this.formId, + // Name of the method to be called. + method: 'funA' } - //... - .onClick(() => { - postCardAction(this, { - action: 'call', - abilityName: 'WidgetEventCallEntryAbility', // Only the UIAbility of the current application is allowed. The ability name must be the same as that defined in module.json5. - params: { - formId: this.formId, - method: 'funA' // Set the name of the method to call in the EntryAbility. - } - }); - }) - - Button() { - //... - } - //... - .onClick(() => { - postCardAction(this, { - action: 'call', - abilityName: 'WidgetEventCallEntryAbility', // Only the UIAbility of the current application is allowed. The ability name must be the same as that defined in module.json5. - params: { - formId: this.formId, - method: 'funB', // Set the name of the method to call in the EntryAbility. - num: 1 // Set other parameters to be passed in. - } - }); - }) + }); + }) + Button(this.funB) + .id('funB__') + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + .margin({ top: 10 }) + .alignRules({ + top: { anchor: 'funA__', align: VerticalAlign.Bottom }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + .onClick(() => { + postCardAction(this, { + action: 'call', + abilityName: 'WidgetEventCallEntryAbility', + params: { + formId: this.formId, + // Name of the method to be called. + method: 'funB', + num: 1 } - }.width('100%').height('80%') - .justifyContent(FlexAlign.Center) - } - .width('100%') - .height('100%') - .alignItems(HorizontalAlign.Center) + }); + }) + } + .height('100%') + .width('100%') } } ``` 3. Create a UIAbility. - The UIAbility receives the call event and obtains the transferred parameters. It then executes the target method specified by the **method** parameter. Other data can be obtained through the [readString](../reference/apis-ipc-kit/js-apis-rpc.md#readstring) method. Listen for the method required by the call event in the **onCreate** callback of the UIAbility. + Listen for the call event in the UIAbility, call the corresponding method based on the **method** parameter, and obtain the parameter by using [rpc.Parcelable](../reference/apis-ipc-kit/js-apis-rpc.md#parcelable9). The method in the UIAbility must be the same as that in step 2. ```ts //src/main/ets/widgeteventcallcard/WidgetEventCallEntryAbility/WidgetEventCallEntryAbility.ets import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; - import { promptAction } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; import { rpc } from '@kit.IPCKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; @@ -82,7 +87,8 @@ There may be cases you want to provide in a widget access to features available const DOMAIN_NUMBER: number = 0xFF00; const CONST_NUMBER_1: number = 1; const CONST_NUMBER_2: number = 2; - + + // Implementation of the RPC return type, which is used for RPC data serialization and deserialization. class MyParcelable implements rpc.Parcelable { num: number; str: string; @@ -106,24 +112,18 @@ There may be cases you want to provide in a widget access to features available } export default class WidgetEventCallEntryAbility extends UIAbility { - // If the UIAbility is started for the first time, onCreate is triggered after the call event is received. + // If the UIAbility is started, the onCreate lifecycle callback is triggered after the call event is received. onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { try { - // Listen for the method required by the call event. + // Listen for the method required by the call event and call the method. this.callee.on('funA', (data: rpc.MessageSequence) => { // Obtain all parameters passed in the call event. hilog.info(DOMAIN_NUMBER, TAG, `FunACall param: ${JSON.stringify(data.readString())}`); - promptAction.showToast({ - message: 'FunACall param:' + JSON.stringify(data.readString()) - }); return new MyParcelable(CONST_NUMBER_1, 'aaa'); }); this.callee.on('funB', (data: rpc.MessageSequence) => { // Obtain all parameters passed in the call event. hilog.info(DOMAIN_NUMBER, TAG, `FunBCall param: ${JSON.stringify(data.readString())}`); - promptAction.showToast({ - message: 'FunBCall param:' + JSON.stringify(data.readString()) - }); return new MyParcelable(CONST_NUMBER_2, 'bbb'); }); } catch (err) { @@ -144,7 +144,7 @@ There may be cases you want to provide in a widget access to features available ``` 4. Configure the background running permission. - To receive the call event, the widget provider must add the background running permission ([ohos.permission.KEEP_BACKGROUND_RUNNING](../security/AccessToken/permissions-for-all.md#ohospermissionkeep_background_running)) to the top-level module in the **module.json5** file. + To receive the call event, the widget provider must add the background running permission ([ohos.permission.KEEP_BACKGROUND_RUNNING](../security/AccessToken/permissions-for-all.md#ohospermissionkeep_background_running)) to the **module.json5** file. ```ts //src/main/module.json5 "requestPermissions": [ @@ -155,7 +155,7 @@ There may be cases you want to provide in a widget access to features available ``` 5. Configure the UIAbility. - Add the configuration of the WidgetEventCallEntryAbility to the **abilities** array of the top-level module in the **module.json5** file. + Add the WidgetEventCallEntryAbility configuration information to the abilities array in the **module.json5** file. ```ts //src/main/module.json5 "abilities": [ diff --git a/en/application-dev/form/arkts-ui-widget-event-formeditextensionability-overview.md b/en/application-dev/form/arkts-ui-widget-event-formeditextensionability-overview.md index 61941c316ba..26e40346e19 100644 --- a/en/application-dev/form/arkts-ui-widget-event-formeditextensionability-overview.md +++ b/en/application-dev/form/arkts-ui-widget-event-formeditextensionability-overview.md @@ -1,11 +1,14 @@ -# Overview of ArkTs Widget Page Editing Interaction +# Overview of ArkTS Widget Editing -The home screen provides a unified widget editing page. The widget provider uses the startSecondPage method provided by FormEditExtensionContext of the FormEditExtensionAbility component to transfer the level-2 editing page information to the home screen. After the home screen opens the level-2 editing page, the page content can be edited. +ArkTS widgets provide the page editing capability to allow users to customize widget content, for example, editing a contact widget, modifying contacts displayed in a widget, and editing a weather widget. + +## How to Implement +The home screen provides a unified widget editing page. The widget provider uses the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md#formeditextensioncontextstartsecondpage) method provided by the FormEditExtensionContext of [FormEditExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md) to transfer the level-2 editing page information to the home screen. After the the level-2 editing page is started, the page content can be edited. The following figure shows the widget editing process. -Figure 1 Widget editing process +**Figure 1** Widget editing process ![FormEditExtensionAbility](./figures/Widget-FormEditExtensionAbility.PNG) @@ -13,7 +16,7 @@ Figure 1 Widget editing process 2. After the user identifies that the widget provider inherits [FormEditExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md), the level-1 editing page of the widget provider is displayed. -3. The widget provider invokes the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md) method of [FormEditExtensionContext](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md) in the callback method [onSessionCreate](../reference/apis-ability-kit/js-apis-app-ability-uiExtensionAbility.md#uiextensionabilityonsessioncreate) of [FormEditExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md) to transfer the level-2 page information of the widget provider to be started to the widget management service. +3. The widget provider invokes the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md#formeditextensioncontextstartsecondpage) method of [FormEditExtensionContext](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md) in the callback method [onSessionCreate](../reference/apis-ability-kit/js-apis-app-ability-uiExtensionAbility.md#onsessioncreate) of [FormEditExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md) to transfer the level-2 page information of the widget provider to be started to the widget management service. 4. The widget management service transfers the received level-2 page information of the widget provider to the user. diff --git a/en/application-dev/form/arkts-ui-widget-event-formeditextensionability.md b/en/application-dev/form/arkts-ui-widget-event-formeditextensionability.md index 91ec52a90ff..14a51f8ba68 100644 --- a/en/application-dev/form/arkts-ui-widget-event-formeditextensionability.md +++ b/en/application-dev/form/arkts-ui-widget-event-formeditextensionability.md @@ -1,9 +1,9 @@ -# Editing and Updating the Widget Content +# Widget Editing Development The home screen provides a unified widget editing page. The widget provider uses [FormEditExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md) provided by the widget framework to develop the widget editing function. ## How to Develop -1. In the entry module of the project, create a code file named EntryFormEditAbility. In the EntryFormEditAbility file, implement the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md) method. In the [onSessionCreate](../reference/apis-ability-kit/js-apis-app-ability-uiExtensionAbility.md#uiextensionabilityonsessioncreate) callback method, load the level-1 widget editing page and transfer the implementation of the **startSecondPage** method to the level-1 widget editing page. +1. In the entry module of the project, create a code file named EntryFormEditAbility. In the EntryFormEditAbility file, implement the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md#formeditextensioncontextstartsecondpage) method. In the [onSessionCreate](../reference/apis-ability-kit/js-apis-app-ability-uiExtensionAbility.md#onsessioncreate) callback method, load the level-1 widget editing page and transfer the implementation of **startSecondPage** to the level-1 widget editing page. ```ts // src/main/ets/entryformeditability/EntryFormEditAbility.ets @@ -15,19 +15,19 @@ import { ExtensionEvent } from '../pages/model/ExtensionEvent'; const TAG: string = 'FormEditDemo[EntryFormEditAbility] -->'; export default class EntryFormEditAbility extends FormEditExtensionAbility { onCreate() { - console.log(`${TAG} onCreate`); + console.info(`${TAG} onCreate`); } onForeground(): void { - console.log(`${TAG} EntryFormEditAbility onForeground.....`); + console.info(`${TAG} EntryFormEditAbility onForeground.....`); } onBackground(): void { - console.log(`${TAG} EntryFormEditAbility onBackground......`); + console.info(`${TAG} EntryFormEditAbility onBackground......`); } onDestroy(): void { - console.log(`${TAG} EntryFormEditAbility onDestroy......`); + console.info(`${TAG} EntryFormEditAbility onDestroy......`); } onSessionCreate(want: Want, session: UIExtensionContentSession) { - console.log(`${TAG} onSessionCreate start..... want: ${JSON.stringify(want)}`); + console.info(`${TAG} onSessionCreate start..... want: ${JSON.stringify(want)}`); let storage: LocalStorage = new LocalStorage(); let extensionEvent: ExtensionEvent = new ExtensionEvent(); extensionEvent.setStartSecondPage(() => this.startSecondPage()); @@ -36,16 +36,16 @@ export default class EntryFormEditAbility extends FormEditExtensionAbility { session.loadContent('pages/Extension', storage); session.setWindowBackgroundColor('#00000000'); } catch (e) { - console.log(`${TAG} EntryFormEditAbility loadContent err, want: ${JSON.stringify(e)}`); + console.error(`${TAG} EntryFormEditAbility loadContent err, want: ${JSON.stringify(e)}`); } } onSessionDestroy(session: UIExtensionContentSession) { - console.log(`${TAG} onSessionDestroy`); + console.info(`${TAG} onSessionDestroy`); } private startSecondPage(): void { const bundleName: string = this.context.extensionAbilityInfo.bundleName; const secPageAbilityName: string = 'FormEditSecPageAbility'; - console.log(`${TAG} startSecondPage. bundleName: ${bundleName}, secPageAbilityName: ${secPageAbilityName}.`); + console.info(`${TAG} startSecondPage. bundleName: ${bundleName}, secPageAbilityName: ${secPageAbilityName}.`); try { this.context.startSecondPage({ bundleName: bundleName, @@ -54,7 +54,7 @@ export default class EntryFormEditAbility extends FormEditExtensionAbility { } }); } catch (err) { - console.log(`${TAG} startSecondPage failed: ${err}`); + console.error(`${TAG} startSecondPage failed: ${err}`); } } }; @@ -68,7 +68,7 @@ export default class EntryFormEditAbility extends FormEditExtensionAbility { import { UIExtensionContentSession } from '@kit.AbilityKit'; import { ExtensionEvent } from './model/ExtensionEvent'; -let storage = LocalStorage.getShared(); +let storage = new LocalStorage(); const TAG: string = 'FormEditDemo[Extension] -->'; @Entry(storage) @Component @@ -77,7 +77,7 @@ struct Extension { private session: UIExtensionContentSession | undefined = storage.get('session'); private extensionEvent: ExtensionEvent | undefined = storage.get('extensionEvent'); onPageShow() { - console.log(`${TAG} onPageShow. extensionEvent: ${JSON.stringify(this.extensionEvent)}, session: ${JSON.stringify(this.session)}.`); + console.info(`${TAG} onPageShow. extensionEvent: ${JSON.stringify(this.extensionEvent)}, session: ${JSON.stringify(this.session)}.`); } build() { Row() { @@ -93,7 +93,7 @@ struct Extension { top: 20 }) .onClick(() => { - console.log(`${TAG} Button onClick`); + console.info(`${TAG} Button onClick`); this.extensionEvent?.startFormEditSecondPage(); }) } @@ -104,7 +104,7 @@ struct Extension { } ``` -3. Add the ExtensionEvent file and use the **startFormEditSecondPage** method to invoke the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md) method. +3. Add the ExtensionEvent file and use the **startFormEditSecondPage** method to invoke the [startSecondPage](../reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md#formeditextensioncontextstartsecondpage) method. ```ts // src/main/ets/widget/pages/model/ExtensionEvent.ets @@ -112,14 +112,14 @@ struct Extension { const TAG: string = 'FormEditDemo[ExtensionEvent] -->'; export class ExtensionEvent { private startSecondPage: () => void = () => { - console.log(`${TAG} startSecondPage is empty!`); + console.info(`${TAG} startSecondPage is empty!`); }; public setStartSecondPage(startSecondPage: () => void) { - console.log(`${TAG} setStartSecondPage`); + console.info(`${TAG} setStartSecondPage`); this.startSecondPage = startSecondPage; } public startFormEditSecondPage(): void { - console.log(`${TAG} startFormEditSecondPage`); + console.info(`${TAG} startFormEditSecondPage`); this.startSecondPage(); } } diff --git a/en/application-dev/form/arkts-ui-widget-event-formextensionability.md b/en/application-dev/form/arkts-ui-widget-event-formextensionability.md index b4ec85e7f91..f163fa80889 100644 --- a/en/application-dev/form/arkts-ui-widget-event-formextensionability.md +++ b/en/application-dev/form/arkts-ui-widget-event-formextensionability.md @@ -1,12 +1,12 @@ -# Updating Widget Content Through the message Event +# Transferring Messages to an Application (message Event) -On the widget page, the [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) API can be used to trigger a message event to start a FormExtensionAbility, which then updates the widget content. The following is an example of this widget update mode. +On the widget page, you can trigger a message event via the [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) API to launch the **FormExtensionAbility**. The FormExtensionAbility then notifies the application through the **onFormEvent** callback. This process enables the functionality of passing messages to the application after a widget is touched. Subsequently, the **FormExtensionAbility** refreshes the widget content. Below is a simple example. > **NOTE** > > This topic describes development for dynamic widgets. For static widgets, see [FormLink](../reference/apis-arkui/arkui-ts/ts-container-formlink.md). -- On the widget page, register the **onClick** event callback of the button and call the **postCardAction** API in the callback to trigger the message event to start the FormExtensionAbility. Use [LocalStorageProp](../ui/state-management/arkts-localstorage.md#localstorageprop to decorate the widget data to be updated. +- On the widget page, register the **onClick** event callback of the button and call the **postCardAction** API in the callback to trigger the message event to start the FormExtensionAbility. Use [LocalStorageProp](../ui/state-management/arkts-localstorage.md#localstorageprop) to decorate the widget data to be updated. ```ts let storageUpdateByMsg = new LocalStorage(); @@ -74,14 +74,15 @@ On the widget page, the [postCardAction](../reference/apis-arkui/js-apis-postCar export default class EntryFormAbility extends FormExtensionAbility { onFormEvent(formId: string, message: string): void { - // Called when a specified message event defined by the form provider is triggered. + // Called when the message event of the postCardAction API of the widget provider is triggered. hilog.info(DOMAIN_NUMBER, TAG, `FormAbility onFormEvent, formId = ${formId}, message: ${JSON.stringify(message)}`); class FormDataClass { - title: string ='Title Update.'; // It matches the widget layout. + title: string = 'Title Update.'; // It matches the widget layout. detail: string = 'Description update success.'; // It matches the widget layout. } + // Replace it with the actual widget data. let formData = new FormDataClass(); let formInfo: formBindingData.FormBindingData = formBindingData.createFormBindingData(formData); formProvider.updateForm(formId, formInfo).then(() => { @@ -96,6 +97,6 @@ On the widget page, the [postCardAction](../reference/apis-arkui/js-apis-postCar The figure below shows the effect. - | Initial State | After Clicking | + | Initial State | Touch to Refresh | | ------------------------------------------------------- | ----------------------------------------------------- | | ![WidgetUpdateBefore](figures/widget-update-before.PNG) | ![WidgetUpdateAfter](figures/widget-update-after.PNG) | diff --git a/en/application-dev/form/arkts-ui-widget-event-overview.md b/en/application-dev/form/arkts-ui-widget-event-overview.md index 0324425a228..a2ea704050f 100644 --- a/en/application-dev/form/arkts-ui-widget-event-overview.md +++ b/en/application-dev/form/arkts-ui-widget-event-overview.md @@ -1,16 +1,7 @@ -# Widget Event Capability Overview +# Overview of ArkTS Widget Page Interaction -For dynamic ArkTS widgets, the [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) API is provided for interaction between the widget internal and the provider application. Currently, this API supports the router, message, and call events and can be called only in the widget. +ArkTS widgets provide page interaction capabilities, including page redirection between widgets and widget providers (such as applications), process startup of widget providers, and message transfer between widgets and widget providers. You can call [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) to implement a [dynamic widget](arkts-form-overview.md#dynamic-widget) and use [FormLink](../reference/apis-arkui/arkui-ts/ts-container-formlink.md) to implement page interaction of a [static widget](arkts-form-overview.md#static-widget). Both **postCardAction** and **FormLink** support router, message, and call events. The usage scenarios are as follows: -For static ArkTS widgets, the [FormLink](../reference/apis-arkui/arkui-ts/ts-container-formlink.md) component is provided for interaction between the widget internal and the provider application. - -## Dynamic Widget Event Capability -![WidgetPostCardAction](figures/WidgetPostCardAction.png) - -Dynamic widget events are used in the following scenarios: -- Router event: used to redirect to a UIAbility and update the widget content. -- Call event: used to start a UIAbility in the background and update the widget content. -- Message event: used to start a FormExtensionAbility, which then updates the widget content. - -## Static Widget Event Capability -See [FormLink](../reference/apis-arkui/arkui-ts/ts-container-formlink.md). +- [router event](arkts-ui-widget-event-router.md): used to redirect to a specified UIAbility, enabling the functionality of navigating from a widget to an internal application page after a widget is touched. For non-system applications, this redirection is limited to their own UIAbilities. +- [call event](arkts-ui-widget-event-call.md): used to launch a specified UIAbility to the background, after which the UIAbility can request the corresponding background continuous task to complete functionalities such as music playback. +- [message event](arkts-ui-widget-event-formextensionability.md): used to launch the [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md), which then notifies the application via the **onFormEvent** API callback, thereby fulfilling the functionality of passing messages to the application after a widget is touched. diff --git a/en/application-dev/form/arkts-ui-widget-event-router.md b/en/application-dev/form/arkts-ui-widget-event-router.md index e31fc7f88fb..c47f719230d 100644 --- a/en/application-dev/form/arkts-ui-widget-event-router.md +++ b/en/application-dev/form/arkts-ui-widget-event-router.md @@ -1,4 +1,4 @@ -# Launching the UIAbility of the Widget Provider Through the router Event +# Redirecting to an Application Page (router Event) The **router** capability of the [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction) API can be used in a dynamic widget to quickly start a specific UIAbility of the widget provider. By leveraging this capability, an application can provide in the widget multiple buttons, each of which targets a different target UIAbility. For example, a camera widget can provide the buttons that redirect the user to the UIAbility for taking a photo and the UIAbility for recording a video. diff --git a/en/application-dev/form/arkts-ui-widget-event-uiability.md b/en/application-dev/form/arkts-ui-widget-event-uiability.md index 26c474de1e9..dd9367f42ef 100644 --- a/en/application-dev/form/arkts-ui-widget-event-uiability.md +++ b/en/application-dev/form/arkts-ui-widget-event-uiability.md @@ -260,7 +260,7 @@ With the router event, a touch on the widget can start the associated applicatio } } ``` - To start the UIAbility in the background, you must configure the ohos.permission.KEEP_BACKGROUND_RUNNING permission in the **module.json5** file. + To start the UIAbility in the background, you must configure the `ohos.permission.KEEP_BACKGROUND_RUNNING` permission in the `module.json5` file. ```json "requestPermissions":[ { diff --git a/en/application-dev/form/arkts-ui-widget-interaction-overview.md b/en/application-dev/form/arkts-ui-widget-interaction-overview.md index bf16a7af2f2..674c4324d3b 100644 --- a/en/application-dev/form/arkts-ui-widget-interaction-overview.md +++ b/en/application-dev/form/arkts-ui-widget-interaction-overview.md @@ -1,37 +1,53 @@ -# Updating Widget Content +# Overview of ArkTS Widget Update -The ArkTS widget framework provides the updateForm API for widget providers and the **requestForm** API for widget hosts to proactively trigger widget page refreshes. It also alerts providers to update widgets based on the scheduled information. +Both the widget host (for example, the home screen) and the widget provider can trigger updates to the widget page. Moreover, the widget framework notifies the widget provider of updates according to the scheduled information. Therefore, widget updates include active updates initiated by the widget provider, active updates initiated by the widget host, and interval-based or time-specific updates. In all these update modes, the widget provider is responsible for pushing the widget data to be updated. -In widget UI code, you can use [LocalStorageProp](../ui/state-management/arkts-localstorage.md#localstorageprop) to obtain the widget data that requires updating, sent by the provider +## Widget Data Interaction -| API| System Capability| Constraints| -| -------- | -------- | -------- | -| updateForm | No| 1. Invoked by the widget provider.
2. Allows only the widget provider to update its own widgets.| -| requestForm | Yes| 1. Invoked by the widget host.
2. Allows only the widget host to update the widgets added to it.| +The ArkTS widget framework provides the data interaction capability between widget providers (for example, applications) and widgets. The widget transfers data to the widget provider through [postCardAction](../reference/apis-arkui/js-apis-postCardAction.md#postcardaction), and the widget provider can transfer data to the widget through [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform). After the widget provider transfers data to the widget, the data can be used for page update. +The widget provider and widget are independent of each other. Therefore, data can be transferred only through [LocalStorageProp](../ui/state-management/arkts-localstorage.md#localstorageprop), and the **getContext** method cannot be used. After the widget provider pushes data, the widget UI receives it via **LocalStorageProp**, and converts the received data to a string. +## Page Update Modes -Widget provider proactively updating a widget +Widgets can be updated actively or passively based on the triggering mode. -![updateForm](figures/updateForm.PNG) +### Active Update + +Active updates include the updates triggered by the widget provider and the widget host. For details, see [Active Update of ArkTS Widgets](arkts-ui-widget-active-refresh.md). -If there is a need to update widget data, the widget provider, as long as it is running, can proactively update the widget using the **updateForm** API provided by formProvider. +**Figure 1** Flowchart of active update by the widget provider +![updateForm](figures/updateForm.PNG) +If there is a need to update widget data, the widget provider, as long as it is running, can proactively update the widget using the [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) API provided by formProvider. -Widget host proactively requesting a widget update +**Figure 2** Flowchart of active update by the widget host ![requestForm](figures/requestForm.PNG) -If changes in system language or color scheme are detected, the widget host, as long as it is running, can proactively request to update the widget using the **requestForm** API provided by formHost. The widget manager then instructs the widget provider to complete the update. +If changes in system language or color scheme are detected, the widget host, as long as it is running, can proactively request to update the widget using the **requestForm** API provided by formHost. The Widget Manager then instructs the widget provider to complete the update. + +### Passive Update + +Passive update includes interval-based update, time-specific update, and conditional update. For details, see [Passive Update of ArkTS Widgets](arkts-ui-widget-passive-refresh.md). + +Interval-based update: The widget content will be automatically updated at the specified interval by calling [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform). +Time-specific update: The widget content will be automatically updated at a designated time every day. + +Conditional update: The widget is updated when a certain condition is met. Currently, it is triggered when the network status of a device changes from unavailable to available. + -Widget manager instructing the widget provider to periodically update a widget +**Figure 3** Flowchart of interval-based and time-specific updates by the widget provider ![timer_updateForm](figures/timer_updateForm.PNG) Based on the scheduled update information configured by the widget provider, the widget manager determines whether to instruct the provider to update the widget, considering factors such as timing information, widget visibility status, and the number of updates. +## Constraints +1. The widget provider is only allowed to update its own widgets. +2. The widget host is only allowed to update the widgets added to it. diff --git a/en/application-dev/form/arkts-ui-widget-lifecycle.md b/en/application-dev/form/arkts-ui-widget-lifecycle.md index e4e329cf702..a36469e87de 100644 --- a/en/application-dev/form/arkts-ui-widget-lifecycle.md +++ b/en/application-dev/form/arkts-ui-widget-lifecycle.md @@ -1,4 +1,4 @@ -# Widget Lifecycle Management +# Managing ArkTS Widget Lifecycle When creating an ArkTS widget, you need to implement the [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md) lifecycle APIs. @@ -11,7 +11,7 @@ When creating an ArkTS widget, you need to implement the [FormExtensionAbility]( import { hilog } from '@kit.PerformanceAnalysisKit'; ``` -2. In **EntryFormAbility.ets**, implement the [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md) lifecycle API, including **onAddForm**, in which [want](../reference/apis-ability-kit/js-apis-app-ability-want.md) can be used to obtain the widget information through [FormParam](../reference/apis-form-kit/js-apis-app-form-formInfo.md). +2. In **EntryFormAbility.ets**, implement the [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md) lifecycle API, including **onAddForm**, in which [want](../reference/apis-ability-kit/js-apis-app-ability-want.md) can be used to obtain the widget information through [FormParam](../reference/apis-form-kit/js-apis-app-form-formInfo.md#formparam). ```ts const TAG: string = 'EntryFormAbility'; const DOMAIN_NUMBER: number = 0xFF00; @@ -41,7 +41,7 @@ When creating an ArkTS widget, you need to implement the [FormExtensionAbility]( } onUpdateForm(formId: string): void { - // Override this method to support scheduled updates, periodic updates, or updates requested by the widget host. + // Override this method to support interval-based updates, time-specific updates, or updates requested by the widget host. hilog.info(DOMAIN_NUMBER, TAG, '[EntryFormAbility] onUpdateForm'); let obj: Record = { 'title': 'titleOnUpdateForm', @@ -65,9 +65,9 @@ When creating an ArkTS widget, you need to implement the [FormExtensionAbility]( } onRemoveForm(formId: string): void { - // Delete widget data. + // Remove widget data. hilog.info(DOMAIN_NUMBER, TAG, '[EntryFormAbility] onRemoveForm'); - // Delete the persistent widget instance data. + // Remove the persistent widget instance data. // Implement this API based on project requirements. } @@ -86,4 +86,4 @@ When creating an ArkTS widget, you need to implement the [FormExtensionAbility]( > **NOTE** > -> The FormExtensionAbility cannot reside in the background. It persists for 10 seconds after the lifecycle callback is completed and exits if no new lifecycle callback is invoked during this time frame. This means that continuous tasks cannot be processed in the widget lifecycle callbacks. For the service logic that may take more than 10 seconds to complete, it is recommended that you [start the application](arkts-ui-widget-event-uiability.md) for processing. After the processing is complete, use [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) to notify the widget of the update. +> The FormExtensionAbility cannot reside in the background. It persists for 10 seconds after the lifecycle callback is completed and exits if no new lifecycle callback is invoked during this time frame. This means that continuous tasks cannot be processed in the widget lifecycle callbacks. For the service logic that may take more than 10 seconds to complete, it is recommended that you [start the application](arkts-ui-widget-event-overview.md) for processing. After the processing is complete, use [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) to notify the widget of the update. diff --git a/en/application-dev/form/arkts-ui-widget-modules.md b/en/application-dev/form/arkts-ui-widget-modules.md deleted file mode 100644 index ffa9347b242..00000000000 --- a/en/application-dev/form/arkts-ui-widget-modules.md +++ /dev/null @@ -1,24 +0,0 @@ -# ArkTS Widget Related Modules - - -**Figure 1** ArkTS widget related modules -![WidgetModules](figures/WidgetModules.png) - - -- [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md): provides lifecycle callbacks invoked when a widget is created, destroyed, or updated. - -- [FormExtensionContext](../reference/apis-form-kit/js-apis-inner-application-formExtensionContext.md): provides context for FormExtensionAbilities. You can use the APIs of this module to start FormExtensionAbilities. - -- [formProvider](../reference/apis-form-kit/js-apis-app-form-formProvider.md): provides APIs related to the widget provider. You can use the APIs to update a widget, set the next update time for a widget, obtain widget information, and request a widget release. - -- [formInfo](../reference/apis-form-kit/js-apis-app-form-formInfo.md): provides types and enums related to the widget information and state. - -- [formBindingData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md): provides APIs for widget data binding. You can use the APIs to create a **FormBindingData** object and obtain related information. - -- [Page layout (WidgetCard.ets)](arkts-ui-widget-page-overview.md): provides the widget UI development capability based on ArkUI. - - [General capabilities of ArkTS widgets](arkts-ui-widget-page-overview.md#page-capabilities-supported-by-arkts-widgets): provides components, attributes, and APIs that can be used in ArkTS widgets. - - [Capabilities exclusive to ArkTS widgets](arkts-ui-widget-event-overview.md): include the **postCardAction** API used for interaction between the widget internal and the provider application and can be called only in the widget. - -- [Widget configuration](arkts-ui-widget-configuration.md): includes FormExtensionAbility configuration and widget configuration. - - Configure the FormExtensionAbility information under **extensionAbilities** in the [module.json5 file](../quick-start/module-configuration-file.md). - - Configure the widget configuration information (**WidgetCard.ets**) in the [form_config.json](arkts-ui-widget-configuration.md) file in **resources/base/profile**. diff --git a/en/application-dev/form/arkts-ui-widget-open-formmanager.md b/en/application-dev/form/arkts-ui-widget-open-formmanager.md new file mode 100644 index 00000000000..23a5e530da0 --- /dev/null +++ b/en/application-dev/form/arkts-ui-widget-open-formmanager.md @@ -0,0 +1,50 @@ +# Adding Widgets to the Home Screen + +You can add ArkTS widgets of an application to the home screen + +which manages widgets in a unified manner. Applications can call the [openFormManager](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formprovideropenformmanager18) API provided by the [formProvider](../reference/apis-form-kit/js-apis-app-form-formProvider.md) module to start the widget management page where you can add a widget to the home screen by touching **Add to home screen**. + +## How to Develop + +Implement the [openFormManager](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formprovideropenformmanager18) method provided by the [formProvider](../reference/apis-form-kit/js-apis-app-form-formProvider.md) API. + +```ts +// entry/src/main/ets/pages/Index.ets + +import { formProvider } from '@kit.FormKit'; +import { BusinessError } from '@kit.BasicServicesKit'; +import { Want } from '@kit.AbilityKit'; + +@Entry +@Component +struct Index { + + build() { + Row() { + Column() { + // Add a button and call the openFormManager method to start the widget management page. + Button('Start the widget management page.') + .onClick(() => { + const want: Want = { + bundleName: 'com.example.formbutton', + abilityName: 'EntryFormAbility', + parameters: { + 'ohos.extra.param.key.form_dimension': 2, + 'ohos.extra.param.key.form_name': 'widget', + 'ohos.extra.param.key.module_name': 'entry' + }, + }; + try { + formProvider.openFormManager(want); + } catch (error) { + console.error(`catch error, code: ${(error as BusinessError).code}, message: ${(error as BusinessError).message})`); + } + }) + .margin({ top: 10, bottom: 10 }) + } + .width('100%') + } + .height('100%') + } +} +``` diff --git a/en/application-dev/form/arkts-ui-widget-page-animation.md b/en/application-dev/form/arkts-ui-widget-page-animation.md index 3929a8aa34d..83248f77c1e 100644 --- a/en/application-dev/form/arkts-ui-widget-page-animation.md +++ b/en/application-dev/form/arkts-ui-widget-page-animation.md @@ -1,11 +1,11 @@ -# Using Animations in the Widget +# Using Animations in ArkTS Widgets -To make your ArkTS widget more engaging, you can apply animations to it, including [explicit animation](../reference/apis-arkui/arkui-ts/ts-explicit-animation.md), [property animation](../reference/apis-arkui/arkui-ts/ts-animatorproperty.md), and [component transition](../reference/apis-arkui/arkui-ts/ts-transition-animation-component.md). Just note the following restrictions when using the animations in ArkTS widgets. +To make your ArkTS widgets more engaging, you can apply animations to it, including [explicit animation](../reference/apis-arkui/arkui-ts/ts-explicit-animation.md), [property animation](../reference/apis-arkui/arkui-ts/ts-animatorproperty.md), and [component transition](../reference/apis-arkui/arkui-ts/ts-transition-animation-component.md). Just note the following restrictions when using the animations in ArkTS widgets. **Table 1** Restrictions on animation parameters -| Name| Description| Description| +| Name| Description| Restriction| | -------- | -------- | -------- | | duration | Animation playback duration| The maximum value is 1 second. If a larger value is set, the animation is still played for 1 second.| | tempo | Animation playback speed.| Do not set this parameter in the widget. Use the default value 1.| @@ -16,13 +16,15 @@ To make your ArkTS widget more engaging, you can apply animations to it, includi > >Static widgets do not support animations. -The following sample code implements the animation effect of button rotation. +## Component Animation +The following sample code uses the [animation](../reference/apis-arkui/arkui-ts/ts-animatorproperty.md) API to implement the animation effect of button rotation. ![WidgetAnimation](figures/WidgetAnimation.gif) ```ts +// entry/src/main/ets/widget/pages/WidgetCard.ets @Entry @Component struct AnimationCard { @@ -46,3 +48,41 @@ struct AnimationCard { } } ``` +## Transition Animation +The following sample code uses the [transition](../reference/apis-arkui/arkui-ts/ts-transition-animation-component.md) API to implement the animation effect of image appearance and disappearance. + +![WidgetAnimation](figures/WidgetTransitionAnimation.gif) + +```ts +// entry/src/main/ets/widget/pages/WidgetCard.ets +@Entry +@Component +struct TransitionEffectExample1 { + @State flag: boolean = true; + @State show: string = 'show'; + + build() { + Column() { + Button(this.show).width(80).height(30).margin(30) + .onClick(() => { + // Tap the button to show or hide the image. + if (this.flag) { + this.show = 'hide'; + } else { + this.show = 'show'; + } + this.flag = !this.flag; + }) + if (this.flag) { + // Apply the same transition effect to the appearance and disappearance of the image. + // When the image appears, it changes from the state where the opacity is 0 and the rotation angle is 180° around the z-axis to the state where the opacity is 1 and the rotation angle is 0°. The durations of the opacity and rotation animations are both 1000 ms. + // When the image disappears, it changes from the state where the opacity is 1 and the rotation angle is 0° to the state where the opacity is 0 and the rotation angle is 180° around the z-axis. The durations of the opacity and rotation animations are both 1000 ms. + Image($r('app.media.testImg')).width(200).height(200) + .transition(TransitionEffect.OPACITY.animation({ duration: 1000, curve: Curve.Ease }).combine( + TransitionEffect.rotate({ z: 1, angle: 180 }) + )) + } + }.width('100%') + } +} +``` diff --git a/en/application-dev/form/arkts-ui-widget-page-custom-drawing.md b/en/application-dev/form/arkts-ui-widget-page-custom-drawing.md index 38920cdc5aa..83aeee2f473 100644 --- a/en/application-dev/form/arkts-ui-widget-page-custom-drawing.md +++ b/en/application-dev/form/arkts-ui-widget-page-custom-drawing.md @@ -1,4 +1,4 @@ -# Applying Custom Drawing in the Widget +# Using Canvas in ArkTS Widgets You can apply custom drawing in your ArkTS widget to create a more vibrant experience. Use the [\](../reference/apis-arkui/arkui-ts/ts-components-canvas-canvas.md) component to create a canvas on the widget, and then use the [CanvasRenderingContext2D](../reference/apis-arkui/arkui-ts/ts-canvasrenderingcontext2d.md) object to draw custom graphics on the canvas. The following code snippet draws a smiling face in the center of a canvas. @@ -85,6 +85,5 @@ struct CustomCanvasDrawingCard { } ``` -The figure below shows the effect. - +The figure below shows the effect. ![WidgetCanvasDemo](figures/WidgetCanvasDemo.jpeg) diff --git a/en/application-dev/form/arkts-ui-widget-page-overview.md b/en/application-dev/form/arkts-ui-widget-page-overview.md index 38f73f9484d..8f489cb7d20 100644 --- a/en/application-dev/form/arkts-ui-widget-page-overview.md +++ b/en/application-dev/form/arkts-ui-widget-page-overview.md @@ -1,6 +1,6 @@ -# Widget Page Capability Overview +# Overview of ArkTS Widget UI Development -ArkTS widgets are developed using the general [ArkTS language](../quick-start/arkts-get-started.md). You can use the [declarative paradigm](../ui/arkts-ui-development-overview.md) to develop ArkTS widget pages. +ArkTS widgets are developed using the general [ArkTS language](../quick-start/arkts-get-started.md). You can use the [declarative paradigm](../ui/arkts-ui-development-overview.md) to develop ArkTS widget pages. The following widget pages are automatically generated by a DevEco Studio template. You can adjust the pages based on the real-world service scenarios. ![WidgetPreviewPage](figures/WidgetPreviewPage.png) @@ -8,10 +8,10 @@ The following widget pages are automatically generated by a DevEco Studio templa ## Page Capabilities Supported by ArkTS Widgets -ArkTS widgets have all capabilities of JS widgets, and support animations, custom drawing, and support capabilities auch as components, events, animations, data management, and status management of [declarative paradigm](../ui/arkts-ui-development-overview.md). +ArkTS widgets possess all capabilities of JS widgets and have additionally introduced animation and custom drawing capabilities. They support some components, events, animations, data management, and state management capabilities within the [declarative paradigm](../ui/arkts-ui-development-overview.md). For APIs that can be used in ArkTS widgets, the tag **Widget capability** is added. Since API version x, these APIs can be used in ArkTS widgets. Pay attention to the capability differences in the widget scenario. For example, the following description indicates that CircleShape can be used in ArkTS widgets. -![WidgetSupportApi](figures/WidgetSupportApi.png) +![WidgetSupportApi](figures/WidgetSupportApi_EN.png) diff --git a/en/application-dev/form/arkts-ui-widget-update-by-time.md b/en/application-dev/form/arkts-ui-widget-passive-refresh.md similarity index 30% rename from en/application-dev/form/arkts-ui-widget-update-by-time.md rename to en/application-dev/form/arkts-ui-widget-passive-refresh.md index f1515e1b68d..2114de15748 100644 --- a/en/application-dev/form/arkts-ui-widget-update-by-time.md +++ b/en/application-dev/form/arkts-ui-widget-passive-refresh.md @@ -1,8 +1,12 @@ -# Interval-based Widget Updates +# Passive Update of ArkTS Widgets -Form Kit provides the following methods for interval-based updates: +This section provides the development guidelines for passive update. For details about the update process, see [Passive Update](./arkts-ui-widget-interaction-overview.md#passive-update). -- Setting the update interval: The widget content will be automatically updated at the specified interval by calling [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onupdateform). The interval is specified by the `updateDuration` field in the [form_config.json](arkts-ui-widget-configuration.md) file. For example, if **updateDuration** is set to **2**, the widget is updated every hour. +## Interval-based Update + +Form Kit provides the following methods for interval-based update: + +- Setting the update interval: The widget content will be automatically updated at the specified interval by calling [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform). The interval is specified by the `updateDuration` field in the [form_config.json](arkts-ui-widget-configuration.md) file. For example, if `updateDuration` is set to **2**, the widget is updated once an hour. ```json { @@ -29,18 +33,20 @@ Form Kit provides the following methods for interval-based updates: ] } ``` - > **NOTE** + > **NOTE** > - > To use interval-based updates, set the **updateEnabled** field to **true** in the **form_config.json** file. + > 1. To use interval-based update, set the `updateEnabled` field to `true` in the **form_config.json** file. > - > To reduce the number of passive periodic update times and power consumption of widgets, the update interval can be set from the application market – for applications that are being or have been installed. - > - If an update interval is set from the application market, it is compared with the value of `updateDuration` in the **form_config.json** file. Whichever longer is used. - > - If no update interval is set from the application market, the value in the **form_config.json** file is used. - > - This rule does not apply when the interval-based update feature is disabled. - > - The update interval set from the application market ranges from 1 to 336, in the unit of 30 minutes. That is, the minimum update interval is half an hour (1 x 30 minutes) and the maximum update interval is one week (336 x 30 minutes). - > - This rule takes effect since API version 11. In earlier versions, the interval-based update follows the settings in the **form_config.json** file. + > 2. To reduce the number of passive periodic update times and power consumption of widgets, the update interval can be set from the AppGallery for applications that are being + > or have been installed. + >
● When `updateDuration` is set, + > the widget framework compares the update interval specified in the **form_config.json** file with that configured on AppGallery. The longer of the two intervals is used as the update interval of the widget. + >
● If no update interval is set from the AppGallery, the value in the **form_config.json** file is used. + >
● This rule does not apply when the interval-based update is disabled. + >
● The update interval set from the AppGallery ranges from 1 to 336, in the unit of 30 minutes. That is, the minimum update interval is half an hour (1 x 30 minutes) and the maximum update interval is one week (336 x 30 minutes). + >
● This rule takes effect since API version 11. In earlier versions, the interval-based update follows the settings in the **form_config.json** file. -- Setting the next update time: The widget will be updated next time at the specified time, which is specified by calling [setFormNextRefreshTime](../reference/apis-form-kit/js-apis-app-form-formProvider.md#setformnextrefreshtime), at the minimum of 5 minutes. For example, you can configure the widget to update within 5 minutes after the API is called. +- Setting the next update time: The widget will be updated at the next specified time, which is specified by calling [setFormNextRefreshTime](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formprovidersetformnextrefreshtime), at the minimum of 5 minutes. For example, you can configure the widget to update within 5 minutes after the API is called. ```ts import { FormExtensionAbility, formProvider } from '@kit.FormKit'; @@ -73,10 +79,130 @@ Form Kit provides the following methods for interval-based updates: } ``` -When an interval-based update is triggered, the system calls the [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onupdateform) lifecycle callback of the FormExtensionAbility. In the callback, [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#updateform) can be used to update the widget. For details about how to use `onUpdateForm`, see [Widget Lifecycle Management](./arkts-ui-widget-lifecycle.md). +When interval-based update or next update is triggered, the system calls the [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform) lifecycle callback of the FormExtensionAbility. In the callback, [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) can be used to update the widget. For details about how to use `onUpdateForm`, see [Widget Lifecycle Management](./arkts-ui-widget-lifecycle.md). **Constraints** -1. Each widget can be updated at the specified interval for a maximum of 50 times every day, including updates triggered by setting [updateDuration](arkts-ui-widget-configuration.md) or calling [setFormNextRefreshTime](../reference/apis-form-kit/js-apis-app-form-formProvider.md#setformnextrefreshtime). When the limit is reached, the widget cannot be updated in this mode again. The number of update times is reset at 00:00 every day. +1. Each widget can be updated at the specified interval for a maximum of 50 times every day, including updates triggered by setting [updateDuration](arkts-ui-widget-configuration.md) or calling [setFormNextRefreshTime](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formprovidersetformnextrefreshtime). When the limit is reached, the widget cannot be updated in this mode again. The number of update times is reset at 00:00 every day. +> 2. A single timer is used for interval-based updates. Therefore, if a widget is configured to update at specified intervals, the first update may have a maximum deviation of 30 minutes. For example, if widget A (updated every half an hour) is added at 03:20 and widget B (also updated every half an hour) is added at 03:40, the first update of widget B has a deviation of 10 minutes to the expected time: The timer starts at 03:20 when widget A is added, triggers an update for widget A at 03:50, and triggers another update for widget B at 04:20 (instead of 04:10 as expected). +> 3. Interval-based updates are triggered only when the widget is visible. If the widget is invisible, the update action and data are recorded. The layout is refreshed once the widget becomes visible. +> 4. If the update-through-proxy feature is enabled, the settings for the update interval and next update time will not take effect. + +## Time-specific Update + +Form Kit provides the following methods for time-specific widget update: + +- Setting a single update time: The widget content will be automatically updated at a designated time every day. This time is specified by the `scheduledUpdateTime` field in the **form_config.json** file. For example, you can configure the widget to update at 10:30 every day. + + + ```json + { + "forms": [ + { + "name": "ScheduledUpdateTime", + "description": "$string:widget_scheupdatetime_desc", + "src": "./ets/scheduledupdatetime/pages/ScheduledUpdateTimeCard.ets", + "uiSyntax": "arkts", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": true, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 0, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ] + } + ] + } + ``` + +- Setting multiple update times: The widget content will be automatically updated at several specific times every day. These times are specified by the `multiScheduledUpdateTime` field in the **form_config.json** file. For example, you can configure the widget to update at 11:30 and 16:30 every day. + ```json + { + "forms": [ + { + "name": "ScheduledUpdateTime", + "description": "$string:widget_scheupdatetime_desc", + "src": "./ets/scheduledupdatetime/pages/ScheduledUpdateTimeCard.ets", + "uiSyntax": "arkts", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": true, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "multiScheduledUpdateTime": "11:30,16:30,", + "updateDuration": 0, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ] + } + ] + } + ``` + +When a time-specific update is triggered, the system calls the [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform) lifecycle callback of the FormExtensionAbility. In the callback, [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform) can be used to update the widget. For details about how to use `onUpdateForm`, see [Widget Lifecycle Management](./arkts-ui-widget-lifecycle.md). + +> **NOTE** +> 1. If both interval-based update (`updateDuration`) and time-specific update (`scheduledUpdateTime`) are configured, the interval-based update takes precedence, and the time-specific update will not be executed. To enable time-specific updates, set `updateDuration` to **0**. +> 2. A maximum of 24 times can be set for `multiScheduledUpdateTime`. +> 3. If both update at a single time and update at multiple times are configured, only the update at multiple times takes effect. +> 4. To ensure forward compatibility, retain the `scheduledUpdateTime` field. + +**Constraints** +1. Interval-based updates are triggered only when the widget is visible. If the widget is invisible, the update action and data are recorded. The layout is refreshed once the widget becomes visible. + + +## Conditional Update + +Form Kit provides the following methods for conditional updates: + +- Network-triggered update: The widget content will be automatically updated by calling [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform) when the network changes. This can be configured by setting the `conditionUpdate` field in the [form_config.json](arkts-ui-widget-configuration.md) file to **network**. + +> **NOTE** +> 1. A widget update is triggered when the device transitions from a no-network state to a connected state. However, an update is not triggered when a user switches between networks (for example, switching between different Wi-Fi networks or between Wi-Fi and cellular data) or goes from Internet connection to no Internet connection. +> +> 2. To minimize the frequency of widget process initiations during frequent network on/off scenarios, a no-network condition is determined after the network has been continuously unavailable for 10 minutes. Upon reconnection, a network-based update is then triggered. +> +> 3. This functionality is valid only for widgets of system applications. + + + ```json + { + "forms": [ + { + "name": "UpdateDuration", + "description": "$string:widget_updateduration_desc", + "src": "./ets/updateduration/pages/UpdateDurationCard.ets", + "uiSyntax": "arkts", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": true, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 2, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ], + "conditionUpdate": [ + "network" + ] + } + ] + } + ``` + diff --git a/en/application-dev/form/arkts-ui-widget-process.md b/en/application-dev/form/arkts-ui-widget-process.md new file mode 100644 index 00000000000..d47d6f32dd9 --- /dev/null +++ b/en/application-dev/form/arkts-ui-widget-process.md @@ -0,0 +1,9 @@ +# ArkTS Widget Process Model +This section describes the processes of a widget from creation to display. For details, see the figure below. + +**Figure 1** Widget process model +![WidgetProject](figures/form-process.png) +- Widget host process: a host process that displays the widget UI, for example, the home screen process. +- Widget rendering process: a process that loads and renders widget UIs in the system. All widgets are rendered in the same process, and different widget UIs are isolated by VMs. +- Widget Manager process: a System Service ([SA](../application-models/serviceability-overview.md)) for unifying the widget lifecycle. +- Widget provider process: an application process that provides widgets, including the main process running the UIAbility of the application and the independent [FormExtensionAbility](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md) process of the widget. The memory of the two processes is isolated, but they share the same file sandbox. diff --git a/en/application-dev/form/arkts-ui-widget-update-by-conditions.md b/en/application-dev/form/arkts-ui-widget-update-by-conditions.md deleted file mode 100644 index 51acf8c447a..00000000000 --- a/en/application-dev/form/arkts-ui-widget-update-by-conditions.md +++ /dev/null @@ -1,42 +0,0 @@ -# Conditional Widget Updates - -Form Kit provides the following methods for conditional updates: - -- Network-triggered update: The widget content will be automatically updated by calling [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onupdateform) when the network changes. This can be configured by setting the **conditionUpdate** field in the [form_config.json](arkts-ui-widget-configuration.md) file to **network**. - -> **NOTE** -> 1. A widget update is triggered when the device transitions from a no-network state to a connected state. However, an update is not triggered when a user switches between networks (for example, switching between different Wi-Fi networks or between Wi-Fi and cellular data) or goes from Internet connection to no Internet connection. -> -> 2. To minimize the frequency of widget process initiations during frequent network on/off scenarios, a no-network condition is determined after the network has been continuously unavailable for 10 minutes. Upon reconnection, a network-based update is then triggered. -> -> 3. This functionality is valid only for widgets of system applications. - - - ```json - { - "forms": [ - { - "name": "UpdateDuration", - "description": "$string:widget_updateduration_desc", - "src": "./ets/updateduration/pages/UpdateDurationCard.ets", - "uiSyntax": "arkts", - "window": { - "designWidth": 720, - "autoDesignWidth": true - }, - "colorMode": "auto", - "isDefault": true, - "updateEnabled": true, - "scheduledUpdateTime": "10:30", - "updateDuration": 2, - "defaultDimension": "2*2", - "supportDimensions": [ - "2*2" - ], - "conditionUpdate": [ - "network" - ] - } - ] - } - ``` diff --git a/en/application-dev/form/arkts-ui-widget-update-by-proxy.md b/en/application-dev/form/arkts-ui-widget-update-by-proxy.md index e0c68f4c9ac..b670959aaad 100644 --- a/en/application-dev/form/arkts-ui-widget-update-by-proxy.md +++ b/en/application-dev/form/arkts-ui-widget-update-by-proxy.md @@ -5,9 +5,10 @@ A widget can be updated through a proxy – a system application that has data s ## Implementation Principles **Figure 1** Updating widget content through a proxy + ![UpdateWidgetByProxyPrinciple](figures/UpdateWidgetByProxyPrinciple.png) -Compared with the [implementation of the ArkTS widget](arkts-ui-widget-working-principles.md#implementation-principles) alone, updating through a proxy involves the data management service and data provider. +Compared with the [implementation of the ArkTS widget](arkts-form-overview.md#how-to-implement) alone, updating through a proxy involves the data management service and data provider. - Data management service: provides a mechanism for data sharing among multiple applications. - Data provider: must be a system application that has data sharing enabled. The shared data is identified through the defined `key + subscriberId` combination. @@ -21,9 +22,9 @@ Processing flow of the widget provider (indicated by the blue arrows in the figu 1. The widget provider sets the `dataProxyEnabled` field to `true` in the `form_config.json` file to enable the update-through-proxy feature. > **NOTE** > -> After the update-through-proxy feature is enabled, the settings for [updating periodically](arkts-ui-widget-update-by-time.md) do not work. +> After the update-through-proxy feature is enabled, the settings for [interval-based update](arkts-ui-widget-passive-refresh.md#interval-based-update) becomes invalid. -2. In the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onaddform) callback, the widget provider returns the `key + subscriberId` combination defined by the data provider to the Widget Manager. +2. In the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform) callback, the widget provider returns the `key + subscriberId` combination defined by the data provider to the Widget Manager. 3. The Widget Manager parses the subscription information of the widget provider and registers a subscription instance with the data management service. @@ -38,7 +39,7 @@ There are two types of shared data provided by the data provider: - Ephemeral data: data that exists only for a specific period of time and can be subscribed to by system and non-system applications alike. -- Persistent data: data that persists over time and can only be subscribed to by system applications. +- Persistent data: data that can be subscribed to only by system applications. The update-through-proxy configuration varies by the type of shared data. @@ -48,7 +49,7 @@ For details, see [Data Management](../database/share-data-by-silent-access.md). ## Widget Provider Development (Ephemeral Data) -- Set the `dataProxyEnabled` field to `true` in the **form_config.json** file to enable the update-through-proxy feature. +- Set the `dataProxyEnabled` field to `true` in the **form_config.json** file to enable the update-through-proxy feature. When the subscribed ephemeral data is updated, the system automatically updates the widget data. ```json { "forms": [ @@ -75,7 +76,7 @@ For details, see [Data Management](../database/share-data-by-silent-access.md). } ``` -- Configure the subscription information [proxyData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#proxydata10) in the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onaddform) callback and return the information to the Widget Manager through [formBinding](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#formbindingdata). In this example, **key** is set to **datashareproxy://com.samples.widgetupdatebyproxy/weather** and **subscriberId** is set to **11**. +- Configure the subscription information [proxyData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#proxydata10) in the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform) callback and return the information to the Widget Manager through [formBinding](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#formbindingdata). In this example, **key** is set to **datashareproxy://com.samples.widgetupdatebyproxy/weather** and **subscriberId** is set to **11**. > **NOTE** > > The value of **key** can be a URI or a simple string. The default value of **subscriberId** is the value of **formId**. The actual value depends on the definition of the data provider. @@ -104,7 +105,7 @@ For details, see [Data Management](../database/share-data-by-silent-access.md). } ``` -- In the [widget page code file](arkts-ui-widget-creation.md), use the variable in LocalStorage to obtain the subscribed data. The variable in LocalStorage is bound to a string and updates the subscribed data in the key:value pair format. The key must be the same as that subscribed to by the widget provider. In this example, the subscribed data is obtained through **'city'** and displayed in the **Text** component. +- In the [widget page code file](arkts-ui-widget-creation.md), use the variable in LocalStorage to obtain the subscribed data. The variable in LocalStorage is bound to a string and updates the subscribed data in the key:value pair format. The key must be the same as that subscribed to by the widget provider. In this example, the subscribed data is obtained through **'city'** and displayed in the **\** component. ```ts let storageProcess = new LocalStorage(); @@ -130,7 +131,7 @@ For details, see [Data Management](../database/share-data-by-silent-access.md). } ``` -## Widget Provider Development (Persistent Data; for System Applications Only) +## Widget Provider Development (Persistent Data) - Set the `dataProxyEnabled` field to `true` in the **form_config.json** file to enable the update-through-proxy feature. ```json { @@ -159,7 +160,7 @@ For details, see [Data Management](../database/share-data-by-silent-access.md). } ``` -- Add a subscription template [addTemplate](../reference/apis-arkdata/js-apis-data-dataShare-sys.md#addtemplate10) to the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onaddform) callback and use the template predicates to notify the database of the subscribed data conditions. Then, configure the subscription information [proxyData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#proxydata10) and return it to the Widget Manager through [FormBindingData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#formbindingdata). In the example, the predicate is set to `"list" : "select type from TBL00 limit 0,1"`, indicating that the first data record in the **type** column is obtained from the **TBL00** database. The data is returned to the widget page code file **widgets.abc** in `{"list":[{"type":"value0"}]}` format. When the subscribed persistent data is updated, the system automatically updates the widget data. +- Add a subscription template [addTemplate](../reference/apis-arkdata/js-apis-data-dataShare-sys.md#addtemplate10) to the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform) callback and use the template predicates to notify the database of the subscribed data conditions. Then, configure the subscription information [proxyData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#proxydata10) and return it to the Widget Manager through [FormBindingData](../reference/apis-form-kit/js-apis-app-form-formBindingData.md#formbindingdata). In the example, the predicate is set to `"list" : "select type from TBL00 limit 0,1"`, indicating that the first data record in the **type** column is obtained from the **TBL00** database. The data is returned to the widget page code file **widgets.abc** in `{"list":[{"type":"value0"}]}` format. When the subscribed persistent data is updated, the system automatically updates the widget data. > **NOTE** > diff --git a/en/application-dev/form/arkts-ui-widget-update-by-status.md b/en/application-dev/form/arkts-ui-widget-update-by-status.md index 871d76e3423..aaef4dd2e87 100644 --- a/en/application-dev/form/arkts-ui-widget-update-by-status.md +++ b/en/application-dev/form/arkts-ui-widget-update-by-status.md @@ -250,4 +250,4 @@ There are cases where multiple copies of the same widget are added to the home s > **NOTE** > -> When the local database is used for widget information persistence, it is recommended that [TEMPORARY_KEY](../reference/apis-form-kit/js-apis-app-form-formInfo.md) be used in the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform) lifecycle callback to determine whether the currently added widget is a normal one. If the widget is a normal one, the widget information is directly persisted. If the widget is a temporary one, the widget information is persisted when the widget is converted to a normal one ([onCastToNormalForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityoncasttonormalform)). In addition, the persistent widget information needs to be deleted when the widget is destroyed ([onRemoveForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonremoveform)), preventing the database size from continuously increasing due to repeated widget addition and deletion. +> When the local database is used for widget information persistence, it is recommended that [TEMPORARY_KEY](../reference/apis-form-kit/js-apis-app-form-formInfo.md#formparam) be used in the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform) lifecycle callback to determine whether the currently added widget is a normal one. If the widget is a normal one, the widget information is directly persisted. If the widget is a temporary one, the widget information is persisted when the widget is converted to a normal one ([onCastToNormalForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityoncasttonormalform)). In addition, the persistent widget information needs to be deleted when the widget is destroyed ([onRemoveForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonremoveform)), preventing the database size from continuously increasing due to repeated widget addition and deletion. diff --git a/en/application-dev/form/arkts-ui-widget-update-by-time-point.md b/en/application-dev/form/arkts-ui-widget-update-by-time-point.md deleted file mode 100644 index 1a68fb76557..00000000000 --- a/en/application-dev/form/arkts-ui-widget-update-by-time-point.md +++ /dev/null @@ -1,72 +0,0 @@ -# Time-specific Widget Updates - -Form Kit provides the following methods for updating widgets at specific times: - -- Setting a single update time: The widget content will be automatically updated at a designated time every day. This time is specified by the **scheduledUpdateTime** field in the **form_config.json** file. For example, you can configure the widget to update at 10:30 every day. - - - ```json - { - "forms": [ - { - "name": "ScheduledUpdateTime", - "description": "$string:widget_scheupdatetime_desc", - "src": "./ets/scheduledupdatetime/pages/ScheduledUpdateTimeCard.ets", - "uiSyntax": "arkts", - "window": { - "designWidth": 720, - "autoDesignWidth": true - }, - "colorMode": "auto", - "isDefault": true, - "updateEnabled": true, - "scheduledUpdateTime": "10:30", - "updateDuration": 0, - "defaultDimension": "2*2", - "supportDimensions": [ - "2*2" - ] - } - ] - } - ``` - -- Setting multiple update times: The widget content will be automatically updated at several specific times every day. These times are specified by the **multiScheduledUpdateTime** field in the **form_config.json** file. For example, you can configure the widget to update at 11:30 and 16:30 every day. - ```json - { - "forms": [ - { - "name": "ScheduledUpdateTime", - "description": "$string:widget_scheupdatetime_desc", - "src": "./ets/scheduledupdatetime/pages/ScheduledUpdateTimeCard.ets", - "uiSyntax": "arkts", - "window": { - "designWidth": 720, - "autoDesignWidth": true - }, - "colorMode": "auto", - "isDefault": true, - "updateEnabled": true, - "scheduledUpdateTime": "10:30", - "multiScheduledUpdateTime": "11:30,16:30,", - "updateDuration": 0, - "defaultDimension": "2*2", - "supportDimensions": [ - "2*2" - ] - } - ] - } - ``` - -When a time-specific update is triggered, the system calls the [onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onupdateform) lifecycle callback of the FormExtensionAbility. In the callback, [updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#updateform) can be used to update the widget. For details about how to use onUpdateForm, see [Widget Lifecycle Management](./arkts-ui-widget-lifecycle.md). - -> **NOTE** -> 1. If both interval-based updates (**updateDuration**) and time-specific updates (**scheduledUpdateTime**) are configured, the interval-based updates take precedence, and the time-specific updates will not be executed. To enable time-specific updates, set **updateDuration** to **0**. -> 2. A maximum of 24 times can be set for **multiScheduledUpdateTime**. -> 3. If both update at a single time and update at multiple times are configured, only the update at multiple times takes effect. -> 4. To ensure backward compatibility, retain the **scheduledUpdateTime** parameter instead of deleting it. - -**Constraints** - -Time-specific updates are triggered only when the widget is visible. If the widget is invisible, the update action and data are recorded. The layout is refreshed once the widget becomes visible. diff --git a/en/application-dev/form/figures/WidgetSupportApi_EN.png b/en/application-dev/form/figures/WidgetSupportApi_EN.png new file mode 100644 index 0000000000000000000000000000000000000000..0dbc89f0b73aefe7f151c1eecf9b45fa43b16dfa GIT binary patch literal 16868 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

(8YuWQQ@4ViwAlF^&vGu_4U{UtO8lNP7XUq4orP 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

Pyd>iO3qV&o$$8 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 IN{;P4-ag&`_bsJ+aH%yT(n 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%0AL7* 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 literal 0 HcmV?d00001 diff --git a/en/application-dev/form/figures/form-process.png b/en/application-dev/form/figures/form-process.png new file mode 100644 index 0000000000000000000000000000000000000000..117f773dd6b3ffb44e11628da8c95ff32932c56a GIT binary patch literal 80385 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

n(9h-1s&8tE37hHT=4oTVp zlh?`G_P&J3KikXh6KMS@#SpC|uthzIL0?{?tFJTao#8R&p#i-LjG6$!tR&^mjfB+{ zu)LG=J#h0t&mfwj{UTW*mE-_cJMLY^Hwku!wFDVyK=K$geS#e&&`pB4@ioQ!CZ#NL z=c5Uya;Jl##qZloh}hj}#&>f@J@3=Keka4PUP_%D=nVrHO2l2MhA9X8>=o^TxQU;F2NRmf}gcRH3TU6KJ9E&Y$lA=!V+L4-%OJVu&__lhQ@h7>Xk^Qj6S2sn)vla z*vt$|Va0TPrIIje1k`6+G=5ApNOYuF^Ms(7j?Qp)zp9bo2szKNlRs9pzvvRL!tUT& zY`6Kc@8!tltIzJ{S`y@kG`Z0lUw*_khJBrqml-D?I!uLwZ#6AXuVy0SZs8`KA&rB~a?p887bhd97`d z+S4Wy1lc^46c5^=M%1*cM0=s6nve^9)CQrUQf2RY#>;%xnHebp=({NReXFeWzn%0C zl`=&D9$9oNxx%WZdE4%q{0wmJMuJ!FG?_ya()R90t25OrNi0{nKj)4Xlgp;W&^6(z#Ce zvW`c+zN#ddNjSCr$&TyX!a&0e-CgPlHO0H?TA}2(fwR>Tw1xC0{RU=LKRFs)mm;xG zO9>Btd$!0PyPNa5AQAR^{!;RFaA7Nt`E_m$;9Y1czHv#r=IhYxqhU6ytRtvTY8Yu1 zhyi1X=uh^b|LTY;w#eU-YrKc&y)PAEo4sJ{kL|j&C%==S`;;6*Eo;o2FbDCeKy9+B z>hHPu#>9R!S|dH2k9=|6MvKE1m-o8AeinY|V$haJwt7uD>%z*5&W5BwA$cBI+R~s9 zu5^+;QfBM`z$)x4Gx$_{GNJ!;_gD{X0dboBLw!iI*wk{W_nf)#N+Snnq`Sx4uPf3o zaT>^Un%`*Ye#G@wTV2}#QA5nv6x6)+t=;o>M0^bCic_kep4ypogY~fmE2p3aB5l2w zJMguf5AM7aM)seWYe)7JF&kB03bF}CsW=0(DNNFr z@HTCPPmvcAqvwBn)o0bLT&~4Kge2!=_lO|rMhjkkbp9mf2(EF|3}UyAi|fuKziGo; zVWRC&qsU_6TmbB1pSAKRVvr^pmMG11tc>5I-5<@NglXIDW>!*jq($9hJJ6FaJn$6` zR;p$L916wcl_-x4^HUDzX)pLC-)TpmIe9Ul%24tY;vNI` zOt+DF5F5pOZH)XyE>?W0Jviq=!?PB(mKpVc6B&7H&)A{H9{%Bxc?Ugp*-Uk4VyV{i+Mx?<3q<~0JWI?O*bMvGtQlRi>u%thr|C#N`AddT;BGQS!+d#*QopHH6G3bB4eh+G8`F4H zJkSc(V%tp{_ii~48NC`j((}rwRm?hnUTRo&FO`7q4So9rSk#26;nBYvm8ys9axgPW zwnNnUD?euKp?d4P4~SuHl*!4cIZde3dSEw48p=ct)eknB+-1V+l-q2f%A^eegeXt= z_A)MrsJPLvmQC#s%p&T!qt>sgVz50M$6W!4M{{(4#tkt<5@J`SUS5JLe)85k&7+xX zf9|GN1zLt}%XQ!oc$woBOmJF}QdC!ndbcRDG3Z9B>!gg!BXb}KuQ4yYm@(Ys)+;tY zxK1`5Q$IN{M913w402bBQU?NEQS?Xj)bw3tmGYe%XS@DqMldppI6z4`D{#x(?r=UqeTF~-S94*$fc0fY@{O7cOcHoC)`Vylw;+o^>LSw1gN zYv7gw=nrUT6oBMi^JQj7%Jd`F=h>&qeYCW?W%kwgV76gAgWjFr;soid!xBBZy5c1@ z%(uENr#&(VGMAxgu&ZF2A-Q3`!@RC(OW_)lf86Vtw}f+Y6{>R?N6v8fn2CG=N>U*j zx6PR&RN+<)GFhw^cnAg?jZXR9AX4KzXA&)dr{osVi#n*ar{(a=% zKUmwjn!OQn`r2}#1A#W9bYs2)Ccc0Z9C)#{-8(*A{{8fp0`I(xz;QA2#fz-wg0&ZM zehss@iES&QZppct9^JI7dw2Y(I-l>EFMhtnmvGjhURB#lvI$>w$=H6W%;658l#URqCknsO*x!_GQ2@0(kQf5Tib-e^8r zl*dVl9wubx!qnc<^ZwFl&w3gR2(`~Y@9}(?w%V|!gmlnPwo5Rf^N4FH3yyqr%pi8R zb&W47`1j317j5_^{c=--r3gwrzEH={6uMHcOb5Ee``Q}m0X6MNw288=mTF-}YMHOD z+`C0tQ)207+=DBZT{MJ-qjK2LLwp+TF{XC6L<}=!?=vgFY@mWrHq8XPyV6*WIJShM zBeR7938K`tFCR^A6iO!Dy0r!%XKAAiYA0BRZ>9JSO0XN)8znoO-ro8$(U zhgSprozx}5jEOdWK1zx^tJA_|#^d{cm?2LOfwH6Yc1<@e+hZWe)rplYE6)$W#(9+2J$ZbTqU1%N-M*b`F4wd z9{B{22@|%WJ0&yy(V^Whl1rrfm76quq-FHmn@v$C3Z6!2y0xqH+w8?YTHntDG=I&y zqi0r<&GL&Yye~7cK(Jyuv%sQ~O^3Ow=D&aPlwq;r?cAF$zg{nVQ)Kc?&qmqJP&sTR z5hU(cVBr@)-np$MSolZUplec{XL{?mo0)vPuG$P_zukE14yeFqrk@v6tWg_oLq0AC zIv$$C<~ktty(kBB#B;p|q;+#)g{9v6i`OOZHbIj`1$jD1{6=9~x1%}nnE<`BA@){c zPJ^$F!hU2tNALIf43q#Vh}N-1xhYbY)3Hf$=byly{qiHz8@(Zx_Jkzp(g{|`^G=5P zvvZxb(n)=WjlIBmeDqLA{h<#!_IGcYe_%<9QXZ#f8%Tpb@LX8TGmw5+{$6?f-%#FV zv;T@7{wJ>ZpFkg9%%ULu?>!&x|Nq?b_t*aw3;aJhJ6&BJwmYK9(7o0re8A_ z_B~lXFdS>6z+TcFCtK3~V>48Je;P zdjzNzCc$ne0Y0^+cCWGjdvd*|ThrIKF-%~XW9zeB&uT|~TsTvu$MR}Qnj)<{_xyi* zNlnTwCX!w;E`3vpps-#W7u{hZ$*&>MWHLfEatu|3onG3{*1tZ{%TqHnn!M69G5S~( zma>st-jN<$($r%$21H(*+NedOT_JfEm(7&N*EV+C(XgJv`|6y@6+N%MrLzpf&#D@^ zTz~@nzV^}EeB7(hs@@?{ZnlMqSJ<1G+BPKNQmWoED8_nTy!7o?YkcRqO`MjIUh+72 zUqE0qV-7!83#ioxyYIZY8lNC&#ddaVh*pd+SC7c!9X)tRwtcx0FELDP(}7 z+T+D6O80ZfUT3?<+MxdTC{;lG;^h`A?Yt<+-b-tIaj}={*VlO)PW3_>8iOc*R3MX) z_ZNR7!+624X84Nq&T{V#S7RH3UhGuI?ax%&)kvqe>?9^{bQ?3=(`~t$9!_ozkLFG5 z?Vjue4@Km#Y37#mFJC3WNz5+@{~nrfkKHC>--^h9wR{WDQ<#pGaJL{`B{t7Lqt)^0 z7u>h|?bf0&M(5}a>&Tkvp%ZtS55ma6qCh*o^2%ipWi$##=|95uy;D-3g!m}>(HqmL z1YViVcfm%z9RTSGe|2t+;YxKf#fz7*D!>3g^7$;Yux&h+p!bOzg4Sc{6VK$ATWUnm zGjf7w0e9MyC41(O&NM72wA8P10loSA7mA1>zS5DzoE;18kv$;K^4`+~*>&Vz4 zI1jX36o_<`PS3YRMe#1|J@y@3-g*@yZxN0w#IFlL8s(8kOHEH7{^GnbCZXS;0@?kF zJaM`1Pou>6Wa!cp&Dh(l6Z>5LyZyYy8f7IiE~PJ&H8+I9a&t`Y+VkOUyyFOrBLt|C zfaZqlUXpZTW3)DD@5^#c$7!?9Mw-t>4wZRmc)! z?v|`rg^x6~lK?5HLXybx*8-VY6oxEEU)1kmes-<(SBVYZRr;g;$cky+j8!G~)zijY z;=#daNl)y?`P5S`3VBKE_kGrj!n_$W(UK39_;|=_wQHVHpqtLg)cb^tw$2y`evMA4RYBK4Vv#?-@5hn zBF}b}?qXujQbU4uLIq_~cJoxLlm7jpDc`=Y69QR7*W2 zz6q!g39Fxn`Ai0{Oug@U-?3x-LTyM+bE8PQZ_Q4=ohN3*PPWL5S{k)Ko*F_tOGh)$A|HH=3kJVj_4;&q-6yDM#*KbrexNk>VWt&Mx)#o7Bx;hBt z4Bs8!d9)0|>kT8@BOO|;oWO8_y5o2E{e9(+fgXv+UZzvWqiX9Cc3Y>+r9}&L3R3)^ zs(EJcgCBV`duMhtD&0K%C1}i#3T6CJup5EUUQZ6u>IIKF@_A{}E^m9UYS3#fNzYFo zw0eqFBdZO&wu4f>$+~Z$EQMiugdEa^jk4P2$LXRi4rSO=yeq|gg2YeWnYySRf0T8a zIynge-E`YTv=r|8ZXbjJ_#lWz_k`+p&%sxrCR?k=KsjC1{6Ld zos-S)+m$t6ZS}s?9~f@eOJTn7Z21@o#%R|@=FnSe zn^RKp_ZGgC9P!9LwhIC+G)pqLF8YRo+Wy?75o_VXg{5h`+ncib=4`mSeXsm|vYa^2IqjP0Ga|MnHb= zSu>cy^yco*XLdDLu!;8GMhfwS!#H!tHQn=VgdxP;anfR6#?wDIU9Jxy4y@nUq3ePw&7ozTn%VIOfLHup;O!qi=d?T_qO&6b5JZR=r=DIkz>%hRB$&cjT6jQCk6ljz~Bz;($Svs2UE;8CQP@-GSc{ zG;1>ZzJ9Z8f>w8}EB;}E175=OM=xG*IbYQKl-rFkn8GdloTD)(1L0azaA6xijDx zsytvweN2+Zb<2hCK%8Wuw^kO97PeTnj@XZ_zxThi z{cP)09)+EWwKj_O0Dll|*qIBT8F1Y9Hw5Cb=KfK}FEp|FEAY(`q*@1xS*bmJ9i$Y` zRn{Z}WY+ku7-9ays~&6?jp&PDN*lzfWWO0!6n=5keo~5)> ziDsK}eNNo6WZZSy6<>v|CU4XuJR54dm?)%=(P=namI>C59|=jh4&=_~aMh2Z?5D_A7uY22 zieEL zpOx8#pcx5X%x((7X}_stxY3?9W2RBoyuU88$9$KrSFwWb$y84A2rbPTRcBhi1Ek%m zY)F`=%)m>yWZADD@_`FQ-haR`g{$j~$+sX3OMD%*E^LFI7Q5)Eoqc4?7-ebw{PP9h zz)k;425jmqr}b;lzlwG-NBRJt(ym+{TyQUlw6llH?(nTSOjI-8SOn$gB#=nM-2b$8 z?A@Ecc4;EZ7!T4;wkFv`?O1#-3Yi~A zO^j)Gb>U&Wfkpe{vwdkWS-Z-uuWB@lWHDc;oHvx{J3Vc^>^9o*dfqsbc9b4I-*Y|0 z+UFNB@E}3?MZen#2brml2q6zVg`T4mz#-KSww)aRW3o9qnCk#=vD&c`Q_mlRxsQvc zbF@d%2+)ad1fN)su9nW@q3~rAAoBjO@Ygfe`e*aHS3a z6Ep%Ao{!J!odBml8rX8aLN2R$#poWdF~6;zfCs}>4!P9ZZ0_yhj-jgV;Ti9)*6o|P zb&Tw*rzte&Ng1Z+Oa`m@AN*=Pk*yNsSwCh0pu~P8K4$R zvt?DTr<%{p3)bogqed2O!8AX;QDN{Enn2K6mrKN>vnHf4jk`uNhUgsC!S;mRtSm2o zK20!HRJPF{(RtJet-t;~HSNbNw z70ey@yJS1j#|3lcW5~Zdr@%;K^3_{(#KABNLi-O=hUDY*2pNPm2Jd(iY;M@m)o%C2 z=9L0oa-49vPO-Ux|v( zbPQqS1bPB)<+2;6NQXeIs&8ynlS@~^)5fPDakG>c-#ZJ5^kgc+ZlgFsKj2mhsrP}; zL^SY-xnWj@%Z4k%M34Zq>gtm*#>sq$&z=oo01iu1SejP0!Ea+t)UMFan~PUwFy5s& zhO_vl@Jsx>>;c%od$D?B+_-Wc_Q-}!pjg*hM5_Oys}J2-f77IhS0PT^!d@Q?R`(%E z7-CX6>;fj<0?_7QJpV%zk~4jMUQafnEW1CjZO_sj8+I`P=XioFGz<-e87Zs<5HT}F zZAT@;)3i2CIJJvxA|`tuEXqJG|3l@60l3Pu+J4{D4il>>uG6~rv~;aQ4j_rz-7}_+ z;5g8xx=|sLALt!G2tg_UItOf!bD%~iF24uv_!m}c3;(ZTtb<(hzUmisDQeyq*bgd% zGC0v%*&l^=85Xo<&j?5X96P_J(M5IwL^m>YW$R*PQPOy zaMIVffa}X|wM?Lp33e+nHr~K>#qs&U_y#`ySAmEIP}lY_wS-3pJ^o&kH_Sf6w#}HU zV22Smmgg}4qDCCurH!-JvK3_kfnHX5+W$K{r85VJ*b^*|~oqN{pP=?K>PxI5|;P)%# z_v{v{{N}2HOX8k;JeHTNR!cwGV-wV_>~^Yd{!`0Fb+RR4HVa>oJGF8HP)^Ajx0vqV zq8b8{t?yJ4I$nZNA({Fb$>nm5$FxfKZA3;IT$B{XcKw{5c@nexebkU*s<(OflYi93 z;pX5`pE5l-5U3X4ue_z*RK*+WE0E#Q=Ue;z`R6E3QC6=}yq zrYWawr?gD2v!Q8e0EDGMcMrTTf-hSh+TB|uP8Z=k(Yx*%3cj_jO)bGP@xI^Gms6`F znlX&$Q3pJISlkb&UHrGpzs#87K5rhx0NY8$!c-JuS_SL%P7OoXsqx}w1={MDsYV!1 z7%roU{v<8y&v)}Ti_Z+*PJ#M_f?EH5M27tk@W?zv<3c1~W**wkDYGgZ>n~bM97VsM zs9COl@A}H;d-}7w7p$>WQ#T_vpDyeRpGH`{HCXR)pCa#k>z&o^bP*z!KVDB)dT5hj zt+?ZFxG1dxUzG~n#Ww^^5t~tprDjnmHP=1DR#(sL=!O($L~EKxO`IFQ8pQ#3Cn-tm zU<7`Kz@%Op>IuA5y_$P*k8jOdof7ugalX8{;FI}zQOLWVDe@(kUaZOoVYNFGO&-zI zp!Mf!>Q`NQL+*&u>eWWQmoEX;mR<*ZHmX-wZFHLiyS)jo$f~3{Kn)cGhctcezGm-& zWmWp8i4WwtJOw#7RkbwveJF4>y0Dlzgx6*Vy~N%4U)7vdBBp+tx6ZKlVW>@+hwpYe zf2457ErE}Lj!6Az11e71BL9~z5O-a5JE)`(_xW#TKM*H(?c9h9bfXJ<3s3aU9GT~w`~9p_b(~_mWKBEx#IQK75-LjR-Gi){wp>ASFMT?q1dJhXLpuE zHTdES@20^wucDU|+x6?;H%oVP?+^D*slVJJd1`$`cpui}p#Zoyx1tLO^yRbB;rVwe zTjkF22P!o+a3^7W*xZ^8Vl-aU9OxRz#ToW->&aGUN1gl4mT~uriEl5KWD%#dy_$9h zTBdFlH|*iKy1Fp_JpJ`jy+>#w?|7fj&N>q~eaD>6RtD|^c=D7wFcYDJLf9&9-wRsg z+p*O9537a6_96bHL`BF z_h#5c!|c7;St5c|x|ThBYc1Q?EiK~Sgd}n(F2Q>X@6-`Bq^|iH$d~##XVV;Hxhn_) zDS;14haOqjY@s;XRmxV<)VlqqI__i^KRL9cXO*-87(dy4oZS(p147M zSriJBvI$_0tO3=!O80ywzNstD31*ivA}I7>wV9{b@u^~04PxzJ$h z3hmiso_nQx%jyJn0e&~VWfxtCD{J{GH#Vk?wC`Gv{gYTn3mt0|E~|MCj&JQ6tXRTQ z4&hvPV75`@DIQz7<(&s^gF(x}b_K=xu`nqx+$uBmz~(5C|0?{pITEB{Xf%q4=~B~S zTlvf)p$!`YWQ92{AL5l68klhH6tG0>@&R7yhs6by+r zS+aR{*}0k5+A9)kf4GfSU6}ufX2?q<%G|4StWaW zHzFY~?e(};-hA0Jb>vO}IV?L(Zy3gXD>Ele7m7hkRq98fp~1Pn6G5cb7v;~v^|98Y zfV|!Qnsc;AiCw38wOW*2r$L7@$5mGD*TTyC*j;K=4`oRhv4iA34zyRk6?CAb1^9=&_=>kFGiS{Yzrpo+r{fjjLaDq;AJ;_sOPhSIlp-v^?RFy16H&P)tHwkt)!8$9OR23%CWPMKGRP{~CR-RH?&Bc&x)$tK zSUz=VaRK^U7q5_j`S%+PXFkr(w6tgB#fY*Eu zI=GD05_O8s`y_0pYE+t}efho}i^f4o8@rv40rBA zo7-0S32q-96!BLuDvQYBc@S}FV*>Fs_MH(Xe-&ugS%q(Av9J=enV4hO2BH96woVt< zJZ5@)oZ~*{g+%Jgno&cH&(w+c*=}00e+RAVgOp5khd=%*ERVJ(cmju zX#vy=OJz?d+h~MYr+QVLOqdq40+X4uqubmukOkSB7=_)EnWc>RjbqKNif7Qa0wUhm zIXCRedz%yp%wAwZ|F!)sXudSS9vH?b2eh#1o+Gs$wC|f%BKm z(9kIW^#xKlR$lYkx?FxnP#UMSk~;ax__R0h+`rrRdDwn6Ir>RmA3Hr2_&GU z3Kw&`#(e6M7lm(4wmSkd86a!KDtvw&{t>v620OO|$X z)fkWmatF3FGkrX+WIfivNWTDsm_1eK?{uo^0;Gi=D^lwIMhp;^6OCnBx<#-Bs=@Q; zO*nuLk30bUP;pp$O_*@KwcSkCC_jRVUcYpivpGMa#S|&k%%KPLGF%{__eoM__s5eG ziyE{<5lPYl2*B3_SssLTViGN2f0~cYcJ1W3?;+i|W>5JEU(cg1pzqsohHlML92WR? zTzOP2B48*VnDc7jeF0VRFlI|ckT0~qg@&33P(&%UO!-nopQ-32sc5xa;#r%B_7|Txw1v^c9oAcL> zHBezcJQ^sDA^^#~{t6kd@BTnhgN?)3TI>E))OFfMx{d2HkFTvq?wbfP1BKtO$1_(~ zoSf2_v*B_@XWpPyfm8=E{RSX#wOr<^#a~GEPcv3tSlSS+o_zJsDZgU>3kjtW*G=I! z4}tnVJw=xI{8~B4VySzLRl~b4v-j?eKozE&W<}hr2!=})_tYa#Dka~VgO}_PAnD~e z-i~{LgiAQBP%aME2>1T{*WRpq%wulaK(-021Lj#>-KK_d6pn-8*{a{C?-gVJKi|8~YVtd-{h1-q7Fk0;DTmx}iBs!_(>GW2kbprS`754#Z$7*NDJJkguA z`s5X*LuEuSk=1M4!^R^UhCUd7ufVktI3RQTmr^dcCAK@O^d|PwTcK9JNesx_wBzSQ zly>GGJBv0XW0hA&r+|Tmg=bvzdiqB+cS0f)ELrxis&#D)0ZFe3bQZ0GL^7x}me*}A{X?u+#Qfe?*og>MNKo`ioM z3)Br>+}^rtyW~2_~6~vThR8=8?PU9&SXoE7MCAn5_q%+TZz-9ZD+p3R3Hds zA#pg$7C@RKjszWq4qp!KYOT~(4zhkLAaI&)h~P!26zubPv=ONJ@kNB>x9s+awcQKb z6^Uez16%?Iuqo^esX#3bZ$KD)wozF`d5xs2h!4RZQx)WVTVq6Q1J0K?pQY8%>Mt3+?B>m*b4 z(RSWJ>4jvy1=?{VwzV;@(sz9suh|alE9U=AYX6raAN#i=9|9El2lzdAm*LN* zJ|n6{8u+5#_Br#5{E)N%Ltido+BxTDu@7Q)AyBKe>xiLC7h@Z4`*LWNm<7!~rXtAv zcQ4ft@c5p7EjJ~YN*j}H_4m}33sI$IU(|?gGc`dRfK&~LB7^wpiwy*|_0fG=*W}bp zJXIIz_nHRZ5dBCUnM#2M4WMuq7GKoj;s)2#4Wtwgi%;it*@RNs50?(jTr}uZi=#d! zHmKfN;7wJZJ+t(GV;DjGgqY`zBWzL2e0(%CrbN>{UEDR!aZ}p!@5&a8bC1%`&OK_+ ze)z`nqT=BM)a3dbSns23)Q^|P#C;9i0AXUgG4;nhn!-cJ_#>J6U@q_=#INw(@9nI% zZz8w(j*)L4Z6$ub0r@T4`lMp_lo5+F%TD?-jW9&4p??ZexzdR_rBP;!3C1)Wej@NE zp2MxKBLvolT=IfKf}2?2fQ6o+ChFL9%`b6K0&83e`lmx;+vz6jHeGkSUkTdOzR_KF z*OIE*ljSzn6?%$An`m~>ipkIu?eaBG48Aw`eA4L4sL8nRuCe_be|CX+W}92n8ha7n zds8Pb-q5fJe=hH3oST@hDrrgp4IjoE>~3+80?U!SZBlMlyCM0zl+jZxY}qPv2Fg21 z-Rx9)#sz-2eXolDWXD1Ml#}M%td0jC`w`mF#@}MmM9a`kqHriknuj=jsD>&)qnY%*Q0O0{q$7*Uxrfu#1j}> z;(r4K_IJsDNm%=@{HgxGeO#FSJWCwCV+@epMkfn0U+@=6x$Q6*ZjiFV2%Fe%B{K}_ z5kkeq(CzSzMXfT8MXW4KhOa6hE>+Jzdh{n6!I-2uz4=2LlDn&%=OD61E=*yI!;ddL1W_DB=FeamVqBWmg`wvLiX zEe)BO5%QQ%$dk9!LCynd`4w!HCgfEZ?9VBGqbWth=pw8h_H%no+>EQathrv~5c?o# zxi*49e(<0%noAsQ zIwIAAa8&Df27L7_B|eUy@ilS=4j}&oY~LIS^_r2xuE4*CdSuZkm3BiHU8_Um7i8rO zxXyA(F>(VixCDh_zjdR&JabyAMiCgk4Tnf(#0AbFi+2_sf2dA)61f15tmRPqg4 z;w2QEbiZ?<;xZRB&VHdn+h1Aq47X2w-)d-^2dQtJO$32-O zV=#H^MJjOPXy3vV%G9jXTmb1(GoZ4IedCPTqlgL*e+QZYB7Wk*nXu8i# z9!Qm723$&iz9yMpar9l7TgcC%mlxlMlp>7ZS)^tZY3OmoYvsuYxyvTU7JT#g4DpBH zuhI*&CkGR?da2{)Ts-?fKKQ*rpUE@G6?|0J`bkx}cjxx($puRAzU(PEOJ)JwHD@sI4 z9xsP}SlJiMan}dOiITOB9`m!=$;pB)X0;D9QYfZqF`KQ?Qz-{`R_ck*`Ook%U=>1a zNqL=MXl_I4yiM>#V36fcOwM08423PIbEHsDcS#nNcYRRu@5Q*7bP%i_@RsTSnV3Oc+?|`mU4Gp)>Wx<%9F#VgTVCz7kVpA^$@+ZyD^nREDgV`_3 zncA2lGvntBXBxkyb?8@QwYi!L2}i5QALw{C>g>l=t>Ze_@K&X|Ah&?Tf#Hy?2G2JAg3OeGT(` zK?+(dyylO9-cX)T0B;xdGHF5bSntfW9LXYs0;X2j294xIaoKx|ZIj}yC60q{V8&b?32ZeS}jd3&GzGj?oD)!)AnK!?oi z!yIt`-_d8809kqx6T#>82eWv^#<+iTZ^A9Wifri~_Eun6d(1rT2Yj}Ym4<6tn}xNp zr`70X&Ws1s79XaKu*O!JgrksFcxCs3Psw$dnTJ`*o2>FW;!9O~*4PDEB{ZG42Hy=6 z5aJD(izp?h9y53ow6uRFtA}UN1$Q1dw`b}jA`U2@wz{WRqF1xBkbizy>(^y@he!q; z2)_lCOQmILx3!d)X^-5;0C=VndXPz`|Fz%deM*kFlmt%B;Iw83t5CRVYWWzDsVr)p z2t?P(HcU6f2L?}GST?B5@FRSnZQuj_wliw92?g^>)dr*@H_t|~%t|>Q^9)kn46ZyE zL!&4=$Au4;bZ{=^U!x4~dq7n~$fu#Z8;KrkNr=%#VpTY#hWZ8Uae(5rM3DT2vjVD_ z`F+2A`^Jy7Hv{B84UYoV;WfEbp9V+OanA3cs&^5S|UdUUZ22xq({LIdNK zfWqFGRY0rGSuwmoHTlyJR@^eSJSKNsBh-@cCVSi;6099a#Lb>_}kXV(ag-)8l7qFDHSULv!f_C@pNaC0J$`YpiO+l!|L}KU1%$*BNUafO7T|Q(dCmIfUN%MAX|5Y0o7MQ{Q*f4R%sp;a4&e^vHsl zp${p`SPxLf1-qY1H0fHu)l~2wdXM)jqt%i&VHPh0#wsMmmAwYNxqWlejBm=>55qYx9Zv!Lv#&mu-V;0nz^W`Ilm84qLM_oWyGSU|!D z9SX5lgk7tN1<_%vZgXO$+Yups<_lxnIz99qQJNIO5c7b2Ed`Lrol+O_^riDhgf-Ax zt~P$7+Xv)<#hFb1kExz#0K1!Eac4c;|7MepvGDOroyVg)wjk`3YYkYIjgV!Ao;K{9~Ew+pDK$bbu99QInG4M|*?p z78&MMq3ji!a?>`GQehKr# z3~Z+%S)>};@xes{c!uks$)|d{aJ+;5M$y;NHdBe}nm?jqx0O5_Um>leV3HOcjNlb?B`f2xivb$C|2P&a`SCG(Xe5MD*a zrT(`CWo3h2Pp$g7v!zP(@wLw+{u(U7etj-vs_D413XT+Pj>kO^K=MJEs$Ux(C|4jQX-&ehm{8{(h4LS2|u10`!V7nzQ~R>{0O zbo{oGe7HWpjYjKX^(sq}iinyh(OrMe%nmcQ&3*l(`)NpqxWq2et0-rf(~Fe1v#ra` zk5IS_P6NhxUzi~7=yOEuZ*?GH8@q7Eb8T7_`}6CA{l&eS3|| z9co!#wGsdy9M=QN?M=*bw!@>e^`im=->Z9<^?-;C%@j)NX9=o`~H?ukCz}lGcTvlaXE-s zm51aFpHup78>jR4vY&JY1r0F5o*}Jt^KK~buur^IJ61X**Lo_8e;p!_?UhB=jukHG zO|z*?!4xwLOaF4~{L8@f-waEayxeZv=nAUD$j!Ly#A$SWhx><|*>b`9v3;^g7yoo- zJ)j@N{&y(aoE?ltbd;zvXl4bA4yr%{?EJ@&mx3^p+u_z@U3d zeX`Do&Lp{>6_MOt?NRG`HJ403#~0aWSY$w;7)6%%o6QA@%}kca@A~Jh`AaY?lC{Iz zw}LM!>*6I8*EUma0v%;EB_%&Ii^*|ykzdD@>cy;d9lsEY_#PS@Nm z>GG9G(u^l2h)BApwu*jXkA{mg;Z2E7*EP;5Dy+_m%-HX`5Z!s+&w#oQV{nFwM(4_T+)(5wNr>na_LxI8leastYSVX$y_6E>x-kgfrFcQ0mbvufn7eWVt1aQTHb$Q z%ENOyV#zRn$zQWDZlU*BuECY3tOVAV_tYPmU?eZWa^}2g=U-(0#Pm!XyIMf>5?9Vo zKH#3eMvY&w=RFiwAsKl4mXg#Q&wZ|#_4YU4Chnj3@#~p+Aeusss|K=xOkoucGAiS^ zAcZ;ul14!`mqu;+wUY<+Pr&bgZ$GLgN#=utqgN_Komom!75J;~kIMky7Wqy8e*n0F z-2X3f7uLq9j@+0JDo|XW?%l!Wm9fWAuftNrXR@a>{(ceQDlEdDn7t_UKQO^)BY*K| zN3=pS!u!RrYxW?(PK^E{L5|%qcLw&xm7mXZH_kS(idbihX`&$|Suq zT7rndcvnwVkF;wOFI5S1@)k^|Y?;kCA}$5q?`mtW29jsxsK3du9z{stV~j!qy4lu) z*Tia*wM&u8zq~g~So&ZSsnm8a3QmSW1;=Q&4zObIvk6PVGlZC@^?K4>#60ml7w zg4BMH=^Xt2Ext=^^njlMGskt(s%{>XPZ$H7ab7xkjiqGV!ObC~HG;j)tE?06zrW2l z2;%9GOKv(tkVoey?3}$-)qD`nrNgrk$&e$HQFvU4@a~>aK%Rkzt)boPaSDojQAqVOq=>VJSRF@GWOrx%fJd zKGWAkUw*33X_JR~F@#T-4uPlFkHP9&xQ-%mXPR+m%CD;o6_9FszRQ)a`!3Z+PxQUt z#FnoidHRT~>gWrhzZN_t8Gc;ueRx5D)+TL;QBTNn% z%0Vs8%~%Qc{U>0`f$|6^pME7z+c9jHzLxWBMdb9T@j*lZf6&&4{R&msXRgk_Sa0UQ zA2i8&TtL-cI0>kv$tUNzWiwn3)_j$M&~i$P+=7F$cRG%SJSjB;#77 z91>{dWz_UcCxAD`8Z85T`)$(|6}gs){m{$W7DmsM*&)*&$;ZNt-WR5jAYcww-zxV_ zss9%E>x&ZtI}*op4E6%G*iWepbAo8=AcBdRQ3Bqd#%D3bxds|u!B;PHY0s%CqwxXL5~sjnY7^e4RVST8UFGI?D6HNfqOES_#VUw-!AtOyyM5-* zkF34~s!!@n*X%hQwo<(fe=<^9P|w%fhJzksZfoskbP1~@9+7+#Z!M*PAxjsAV+J) z0}kW#&w92psW&HEb&Y}w$nShn_baxI+`8J6>{F4b1Ns(+;nzwi{u4Jed~OGRt!OOm zPE|x?Tv- z28}H4TDN5#==kDt*xZ72m_abH-zLhU}_+r~iCXSpHOy66ViX6ksoiby*`VT@1Z zN3ru0H%x43zRz5vjsWK+-z}WUHPrQCpgXH(K|%92(v4Mjl-e1#pS!p6n8z!cmB>7M zQw*#FVAwl@Lxx427lj%e(qn(pUxd@h5!IHXIe95NFfjx-OU&}sU?qx?t137{g=!_A zQ!eoxmca|ft%g8ia!KnKCRHL5yjT5af;;%-G6;6mx#7W6{F+KybgEBvtfi$&UwNy) zcjwS{#myfl2@`PSFHKS%@k*UHb{MNg%Vjp8iu|!BES62~h%6(Cd?_-9!JAKWmXHBE z9c?QNj|8&)jUa~p+icBa8_Xvt2qg{jXuhaqK&QL6vykI59T|R` zOWrJi3<8FXpPpgS9pKMzyC^i@f1b#CH=UweRbw4Gj>H8<0a+6nq`5^An5j63-M+(! zQ0R>XoekhbhktdYQim>-rKG(n{zUS}HieE1S*Kn; zkl`sqdVBmXYJ!@w*=%CCNM7GXuL2WgpKH{iLUmWMydi|1&1q3w*>`sMq{EGhK}STW zTuOFSim}%2M!GMg0-a)3N420d8Jo*xpYH;J}oNkdi@R~m$O?jMU|2leVsd{5oDg@z@rz#QCIDy{%O zmP^JbtR%@hbd8O!4D1bb<7u{04Ef?pc7E>dG_tU}t1uu(BC<@6@WYE<@!@>39g7Yn z*fc*2K?q1rX$ya;38by#`Gn3UNM%tjxeaL-WomC13;kZLgV#mhS$={|H-4gdgmXFW z+dxe?6@f+bP1+cu?=Pn>{G7L1o+ntVxjtWCjXQt&B}K0in=V(r<@=082qJDP2T2cn z8(7;#M@$2sN9FpgH0!rd6P%%YFKqz-7z|BdAsBX=N$egX8{6DhyTCTTR>`mecD0`< zLQD8DWXa1Syt3@SMi zTo<2XFX`d4ApU8Ngy}_D7gTdyEr3H`&tQnO@fscKvW+yRZc~k#i`$q+FSUQ*fMuy z&EfgYk3)~7)%a&xb^s&)_}E;7Cz)2er9ym_=U=_iw|`HBEJt4{Xi(yB7;$B@3L+Sr z>_Uatj`70=PYbyu9jpVs152`(yK@4KWt235Q3kyIi9#wXX9Ryhl8|($Ph0qmeN!zPGI$E5Q^Fj#w#x;p5_DV z!_wxm<%_)PyHVEKkb?P8N@|e1a(K$b?2vcjy8IMmgVZaaJBIUwU-qn=O`%I>`0R?x zpDi;yRc43;X>dhRzRF{gt@`5WWvvr~4aaqkq&(Pe5L^b1Q9aL+ zRrMqb8AkLxoCqqY+SS+*FNwM=Qryq5$f>8Aii!&2(RV}mmZPj$wpU)0oHlFpy#;>OEP>X0pV$q@{PMF_GU$h@-=Vn4AjuI^W+lGs@s3432@z&75(gEk%@ zqLu%r*th{0Gq>H0so$K{|8R3TbyGUVnuX~0t%tA@%fFn1yMi#=IH9CLeJg+a{ z&3WP1fz!^1LwxoE3j0$Cs%;8L-TkBD_#w@_L!zrEt+|t;-)Ug7Rp=v7xVe4`@a`JL zPvTD)09r>1-c*gx^0$Q*f zTS-Dw-UbvJymZ!HgH*NPa?D9~*hO^5Jw`Kyt;VJot{02^44?rn9q8&AEhPMKYf+AX z=ju*ns-$($wo4SdG;JiidgDk`4=zirT?_(8njtrCu&rcqOpPXpC?4b3wq!F$A9bRe zMa!E~IbmbFm!qL`BM0B4Jqpge%L`wCNP%7?qae6`bT{s`$$IL`BC}2BOM~SzwxS=B z*~b^$9yA6qzWe(=fug6OyF%vvqcGEZs2sl`4{8+<5y}ZH%U<7~9B53g!7+Dko5vg9 z4;({uPX-+fS1XDb;M=PYsvp;1>v`ak;Ey8MyM{nAb{9`$-?}1yv?$0z-<2xux_p*2 zfnRJA;){&TjQd4AO5exN59-5aQ^jQiy?0S6wx{21=5u2*M@V*8#;$C`+877jq?gXo zTW0pI(D&61AH!LZg^~uv0Q~E_8-@=b$M>Q)?KW6V2KgRT;CBXt%z09Cn4D`$r*u*6 zc|H@uFGC^$&r+7r!GatV?5$p#r^`AnipYFCdh>ef^AONiVdR~MPPzS%`QW-n?L^i# ziJD9b{&pOFLCSmpn`dJBjYl(&!@&C!v4sX|!1JlU>B&xpL0FJ>W03oTR-ZQJ9aQw2 zb4J>gcQq+MHrz+*zbGWPIqnG8uDcC&GpK)4x7pfTLesvW;-eIV;>*T4i7cKi;)sv5 ziJ)drFrq|Y#$&JjTTwxZf+cBU_RelJ64XBLm4_tMIAB)}H-a80%At3^2TPZTOQY~m z&E{F1R1)MMSsmjG^(mFb*taaWS+K3M<~*?Cz?|!f;EdrM4TxF+Sxcp3m&8%=ROob2 zidl58WG&Zhig~njGq+k1Wp#W`48;*{p?|_OHd90^Tm=8#dC@9yqzY890Y&;)@0Y%x z8<=TtHO}5`)zbO`ik*!QahXcp-VE0R?azfWn|qn;LgwlW8!5waKe8DNbUSb&AeM>t zt?m*<6Ra1BS^m~)-nXbZw0^paqDt20UX@1hcs{1G%42{imIav*(H?ZR*|i$<8+KI) zy4{2NUK*-dHW9#*{CcNn)N|yWbr5PiGzb}*m6Y!LRT(S)gyfj_F`cM^k{^N<@26m& zq=3u&*Xk;#Mh4?ytk_1AE2COEcursY(`%oF7arrr4C~}eYwE*gchiv{4`);U*O{L&o7cyW~f=msMl1}E3Yk1Ym7PoJFaX{>RL1|)X?FQD}<@b?i5|Qp7&vB#yRG0 zeePg_rrn3U@$XNrnRmlg!FzN@T8d6JJb#>V^$PAsBeGeG5~rqrmviGy7XG%v>$tP@ zngE;PwbbxxVvf7pVClMDIVZ=fnc6sXGxY`pSa7bIIS@$Fk1X6LU1_KFZraf_)1f7e zd4ZwnMqG{YKNG+%Dn7ZhZ_F3t;hEDysZU;njv&84)~FFV@mr*TE}+hvd76yzx|f`3 zS}G~ET?I_Nq|L;|zVbrjEn4xruAa4ifh*nEGKuJ_ngS(Qug}}pKE8g?^f(rtI2Edf zn`v3J_p(y6%0dRm>XBCCDS2rAL;B0q_$*yMP}FNu_~F-;-9iqxtls;xs-&n~`&d_G z+jq0hxD@s90}Trss09qpG6SQJ5Kvgc76MUX{#e6rI|>ubZK2seb*P>;*Er4!w-ih2 zkJIjtb}*Eq*9npN8WY+ZESq!~MJDK;rUL%|pz}`c9%6b1l`T(@R-09qeF*j8yWFEw zUBdx{(yaa94{LVKykU-X4V$}-ux#|qYTg_v1UX4WNJ`P7ko^^tp4e}btR1+qH0+(1 z)o+pFO5=ACdzD1<$XJ*9tz#kn{u?u1Y7@q8HrCrLZc1wy%?~`EPy=y_k98bJeOzXJnl`%QDnDvRL@qs6iG+Jc=q1kxfX@x>OT$XH;=Y z=|F8--+OCyb~p?yHF#OL%RfthIUU|eY2?yj<~%l!ej@$*|lOJw>Bw9Z>}a_o)l-X zyIi3pVI6w!QClSZs_ld|&4De?Df>Z#Wx0a)UgQ)~WXaS(Ehg>uqX|Te(VpLlB-r_I z{j$VMpJ7*KX6#gt5Z%T>ND{WG#-OM$2I%nk^x}1Yf5SIcbA3tvLO90?Sq01_d6%b4 zAG*xT;XxKTIyHVDlVJflS{tdR>+v`ot@PR^h14;aVKHQ{7W%l&t<4LBP;2?#w}aPV z9G;`L0#UWii&h+o<6G*-h*5LNaQeXHb~}IV*6e_;nMBZpdDMzyuSH#EYK{oeSW439 z`PJj(2i#`T1(-MEC$vKbVh}h67{+x1$eb_CrR@EPNc%uLHqTqLFLp#^?voSjnz- z5sasXMfo5V$I0kkif8>BJ_4;W!%pQGiJ1#-r>P0y^kexHKD6Mp#HLMRT4HLy4-APD zl@KkIPSJ)Q@4E3BwYS#Vk#Yt(M$oaAdO1mN)^X>GPUs@^HjMC$!_BklRU6OvrhJsK zsnyUVa;B?mHLgw9e3!PWVlF{jG~_66-gq5uvE3`uDVN&6AWK$vabfcaJlh;$SSfEv zgLp=6?i^okk07ZTm7iPk8KBF;!jXdyN*SFmb^eKzef$ndSOcMLqOa{|i(Inp8q#~i zdE@qAYoWB*&;nQdkaqE@P%5?N1LZ*)S3A#CfE(MCLd|Eyl{Whp!njSWf_wFowseJ; z_b!G`;yEDVHdR~g58;&o^xj$vi4ea>YQ1Q_$_M2t9BM1|BBR8qKC4+ax`%hTchYO? z-kl(cWEe$X-w?rxK0zm{qISl6=TP5CIvex=dPrn8iD(6@8;3`6%mjib537jrYy*FT zvEMi?=Lt#8U`0pvb#-X?!o|FyyK9itez!};syHae6xNJjAA`hI1q>+3*O)ow=t!7k zUGB&>lYlmDOh$3^?ghrTX-8#Mo6+N(B#(CO*-dDbCkf1^m~E7Ivkkeg1r5xkSok#H zBow`c0I42bt1kq}n=6TDUxlO|BJeOs+}E-ul-FI0Z&q zV6G0cLuny7R47X~{X*0QciXjR$9>W(olkXeb!gQ;ZtIj10tIj|mhT%0B_C=fiWcH| zpQL4+oLlVvn&X8ZlySw}i@=n*qHH>52l6{${Bkax)2L(fA#sOBSo5*+LrKGjB+s8| zJ-4fnyq17X5m%2-A_tU*QkM(5Upn=b)2xwf$dC^YDZ_rPLk0owi78d(a6jKNyX7)93>wy z$<$P}=8XomGNbBSYyKW3eurz{3CEK!bOy9`_By>Y56Ur#yHMnmrWg2d?Fs`7v@IPt z^QQu$?_`1&^D5+Uu)uOm*mqYiEL0eIvrd|IXZwZZ%SkF;XzH+U;TgYIfo&kY zGn=(aPnlv~EOo#PVO%PFI=VQdm1&$&Xb9OUiWwJ_*rw=)u*c}b+U#Fj*kfj_%bu_1 ziF`_iWszd;l(e&{jU%3)H+=_q0vE*&Q6uJqF3(uTsnzw2L#iI+t%%5OW!~=K(?P1=a*!otOHxmPXUQLn`Kd;JlPtCMIG=vDF; z6^RR_4KOy=3ucU*g)K@gie22qtf?lrUX2pzI3waGUGbSS2OOTCN;nKH6N}DkX-g=M z%0}Ix6su_z5zgC)L4RLd9vo2WUK4?Fqzdfe&qp1}o0a&KO!tTvN4a9+#mxnU+{E{1 zo%i2Q&i(0UlmUv)c})!e?&GD(71KY&ZfC@%UDo)(Yes$uJGVg_l6nAP+rS$|(Yd9o zt%F|0EKo9qT^d`Q!>7>|Z_Q@)ZmpOa&ikGz!+k0zL~Ke%?<7U(DCBxuVSaJ!@om)P zC~v4$*M~K>xz+naoA4F!ZINE2nz>i+Ua5Hu`9qTwg_8w{)QC5q5y6=3jfE)=-g1?D z6r8NrNIp^9XMZ>rZASI7eBT&A%RWMv$h2SeqG!6wuQ=PaIacE^qw7Uk>l0iWOLfpkog2OYR zRQ02%P%Um6pyq#!+o0IA!}~WUj%6vGXUvB!Q(A!UVaB46aaQ=U7YKS9?(6b99;9D& z6!!Tpj}F zi;~1=BojtteeZIaXPl{a4|z-6ZFM$6<5lgf(i`BX%186@+!@X2*FcBc_Q?hQl??h$iOHBBOWTD{<`ZLHqHD zaaTo)PG!Il!l7c+-F6ignj_L6k2JfYe6)6%EPRrUG z#7|UXp`H&0YDQ|#C;jm%s6%@6Lqupx{uSzCftmDMKN;%ALy3#|9Pft*17h@;md|ff z#-h<)a6S`d{(-;;iM`?JjhDd`f167{XmBb!L!R8Zy6v_(4BQZ8vJ>S1DUaQ4$YFj( z$rCx@_vRyT8hC$eUjnNd9GB+>(zGKS5U{#D3es+m_`V9>@F}%h-Bq!v3YeUql`ygL zHI8~w!Y0|E)g`f(m+8Hg<*GP(^cXy%Znce5a!ow5dUy*&pHpLK2}P|jj#1_^75I@6 z(5deWiVCqX^VV$9o=h+ju?R=e9KG$l+#%M|2#Wy)XcMd->iIk(oBQ@TN!@s3(8M&T z^0z?mtjlypJH2sfX5rK#7r8jn2$|tYh2xjf-mRW+nB=E)ov`Twj78ImJ3>2`5pe5P zWCA=Cy?a&6Z~Tk>5)*gdW9vgq>c8$$c-48F;}BpO3Z&@D+()0pL;L1l{Iz5!Lwn*t(`|+%MT~l%Ow0kRh zt5Dba(2U5jd$%iGXzSd{yMKhpvTAGLT~t~Ejg~Bd+arFaA0SnI++c|tHCy*-lopXq zn2w+0h3=d$d6r~_KoB&^xGK^*wt?zLH?rxlag6t_R-xGSP{=)TyzsM*)s#yltH zQO5mujGlCQCfbyJGrV#1+A$%R_||$3%$mj%Fee(ey^!l`zQQfZR(bv68*8~f7ck)nsq)G6D7v1jg zucdl#-|f(Ee{FW>nOqc6nEjxs-2nGVr`@zgQ*)3HGxSjv5X z^TF1dqMX!%UGCF?A>5ex_ywI=R_*56R|Pmt$OqLU((H#RglS5fa7w~DC^J+%VVu;a zU(|lOT%2UsTRSe|3uOav6rV!H`G%+|NmyhFwA9BfdCHf<5oJ0?m<(WCQX&mX#CxlQ z52ekouH!f*z3WdL+t8o9-f>ijGs*eaWrk4)*60Tx;%TT^{-QclXNppoMdi^yF z3zf+4sopP6+hpxcipr1PuhLz#;S?)XAP;A&m=SJ6YZ8>t#Vpd|K?kk7Xu)LCk-Voy zb1O<7$aXC8EAPtto3YOU3LUaa+U{1cbdU_=Sc9BminhKUm*cmS?)hV@^nhNycJ9D4 zOzWP=xpPBD{lq8qJw49~B{4|7?q;dBd5Bs*yp+|ap<;`5@%lvHE8`oy{x2fZNKb-R zcvy_nWPRP-3K*jJn-gyQ92=W2vgehS>{Dg(!)tvy#8*#(bKH%g>A=6VI?KnrDVF5T zF*c@O>a(9(SDo!rtf@3p_GoCUH1 z{KBur>Q<_Rkg12IF|L@RiKr;FYK6xe-(XtePuT0LSqaKa(Y76E%1^u9EQcAA+c$Q_ zN2U`mxzaK|w0uAE26ogBmwkQ^8cU+(rrnyb8eDjrsZ;DLs1XtjU$HbfEcDIDzX-b3 zNCT>s3Sel@WV`VhtP3TgZM==|fvCx+{;4@ZAbKqK_pk>oA0_=4HS~iU!^`WdTTqzn zuO=1OrfV#+vj@a{Ld=6r-&N}w+yJ_tGPNUOL)RK+$}~E=2FJc|>l`n_#-BEXjswRG zfb(*Z)40Xuvnuo0H_A8;ppJvhQVlHYz{8)@n%>gR+5~c1X;tKOT=oxyj_VjZax zQF%y20~AmD{t%al$(lgk~+67%yrLX=#1k{+O{~I`7-JxrMW57#e{iuCi?%9@LW$ zXrvCh1fgW_Jdw`H;<@lxb`D5JxjEY!Y6^96_&;`AU-671{i=Injd0U?y0sEy52&o{20)rFkNLP>9y@}X zoH#0k3(Cfo%rziFChJugC~Iw#qdVw2Z-xDKXg5y@BVBUd&8P_QlQ%v0fFWOLE$_Uhv3w0nrKCa;Gj!_1A8_Fwu+Z2O8G5&W001U|S4 z7!_Q~-t~MJX(^Rfd{Ua);Y7DXz;}5UQ62cV!@coK^9A(D@p{Y!575}_p<(`=D1O9> zj;A#NRZmfB1wyiMk0SJhlDuE|jW`R?c&r{y@OwsJGJTyK;(uBECm=Ehf%Qahtb!dWq~R{L7>sR9b&virJkX-ug`iFXH%U1>4Si=8eXw{fJSa_5r_AwpH9J*f5gGLTvThL=(I70 z-2v=oeHIg51M4Mv8KNxjn|vtre(@*%+T3vm(>1fysM`6@v;wFS6n^JlRtT633DDqX z^{pcMj0hY$jn>{SzeP{#QOWd*JZvi%)f*#raMrRr$@hdH{c7R(!#7C?1}q6iv0G!V zLD|bHy;P&98*KIV1!^2*pI?KN1lxZa6khf$7)J|RWxDEr(a>L@H5zZwCB+A)^uYCG z$D#&)dP83~SEgzD_pr_Qu2cz_Zgl6{@rap{tLh?uF`3`kx$7Hh=56e#rY|1z+00ZA}i|vb#;0p)Uq;V+T^t<~U$ zsT5?J^UpSOjcm1uFFnA&AXK0}KS9C40#J0gpo2!P(#zI{MP45$a;$Kt12U6agSR2G z$}zXopQVATj4=Q;eArNQk|Z@lUQ~ z6n)>4Zi2@6ZCk7z{h8SKvWo~9+g(JwcB3`jq*HCyHavEYsCSVMH`ac06{5>jT@n0X zbY4VNW9lCNzd3vsy9bF4iG5*yBiFxhQ+|hHMpwF{vdiGe4wVCHIYTY6^+gK^al-Ds zDKH3f!DVWN2Umx%?9E%dX>ZT1cXO_i6)tkqJx!RnQ%WR0W{LZmiyIPAF-YDI4&B%O zqDmhx*}Nq-^KeE_RvBsfv~t~U@Xh^DE~bU4y+f^qIwO>3J(fHeOteUY)ptPVcRJAu z9R_4`}cpY1_;GgOePTi z$bf}YOmuFfTI>m4-%vURNe-(JqrKGA2K##VF~lJZlAOfE9FDe**k5ZXYWiNY!AcQZ zdQFEP(0OFT;Wr&@;o{dW3Bj**)~=FHjb&gc*oevX_`YiYWm|VAyC!7!jlbWOIEc-{ z^a}>5tNDd@dLw>f5{L>7^qjRJVuCxAOlKoA^ph0TJ=hw>1l+kFJIk!Kb>2$Px4MDS zV|Ve-FQ*u+PkgL({_#Hc3I1=E=MTSLP?;>GKVf0YvCifS4%tBd9{m9W4H@L%&Dz;J z&+8tw$IiobrUjj-NVh7MH{)8?fH9 zB-69UKg<4fJRZ|Ob<|mw5mhqAK3ET&BWa6h<&|K;!4aYNy*eyEzhT}|8RVdUkoU)6 zPF;{VAlG*ysoM;kUu3OqzdubJbz`Ui+W-yeV7MWhPeEZeJjPO^{n1^buI=VQvk(^OqPKoX(%)p?1=B$h z^3^{qICnAl$2^`08Y2704+~A)Z8nHhp)hF7ASA;$v4?FY zk|~mi9iCpr!>8eVMu7Yav?u%HhwaC~U~=w>T9DIF!>qNKb_Tqzw?}0D-XN(M6cIA5 zjcQLGcgAMSg2PwzPoo2n5;0VqjL|3ax7+Y3^THrdZ{D%+(ZpvA4OVm0- z>e;317}ZwymY;I_W~#88#%n8(;E(OuTNn3?Dz_-t!owTjwDis!V~tH&H^$B}KF~#E z@W)ySyBGm>=cmiyu=G^jFp9*Piy-XX#bIKO+8nqU|1(S@-X<@VL=`=f(4n*G1IEB9 znw$fU()ee8srk4b?kAgBp_n6~|BJEnj%V|G|9|&Z@2aBayGHG3)o9gdi(0kS9#xds zdnf6%N6i#9irBOEOzomJQIyo45kdr!_}%edeSf~6@9+1!|F|DWB=@<`xzD+->s;6K zHKN3~u&)4um*u2N3%4A5X^$|L<_e($nT4?5U^|5K<5^SB=sPRn6M?+`w76YepaK?X zcDan?KDQUzi8Y6xP6q!(Qje%SQC#2+BtCbzg`4aXnpSV^YXC(IA0DexYP=GaOOJZ{ zb5^wPO)i8x&9RqsDmys^2ar*M+Dd*6t!Twt(K!EbPN7u>RaGuqzKZ5gWf9I*hxW0jE!IP=E_#FvsfeAdKd zn4p&%C5eXudl9Vs?#x8VT6&-GL$lO=gmDniT&f?+UN=-zwt=c<%e^rRG;7SFWP*Qp zPX~K_&%^pqiI+tT09sNG6X_)732v!M3habYH6Jp#aXtGZxG#UCI#Al`18Fc>e9{ z3-{1_{XM!r_QxlRT*ZIjRaAcC8NdO0VI|<`*j7rSE=5zRdtsnH4;_=~!R*`m&{M@v zH3M&B+<1SH7_YInc3vTFw0PP7`8=TeI|0yYb@wuL4Bry-jh11sDIc){2UMex9pE-A1^J+$PWC197m(4cg%Do11q@;%# za&LP-aLa_y&9ru#E9zi1_ng@fkP7v6+&11h0AN^%6{PSO1fK>}NhdYcI_dDVTF*O%s(Erh zv4WImyc5^|$nAa5`MmRkcJH?^KrHZfif}q)urXxEM9L%9_})&8SxLvRZ0tzZLS$>Z0``AqTWbORBvdUYu~HV=U0grDD!ObDl*&j4M7!WqOv1N z09i?lE88C{0?3Lrbe9Vt$xf+zCU!B~jZi}1qRzK`2VC$yL0Cye%KLD2X3CTQV2D#_ zK)Jov31%m0HGE&;JPX&E&+C`6PKBxq|y4zl>*nNW#8J^Dorr_x>frLLX1!;v=T(OUZ9m+shoZ3NZm&(?eN9XytGzZz& zK8bwC+d#Pj-LI$8DA%?=sR-9OXX0gY(N5mnonkH8FztJoMfJ%KXs#3m`R8`9?{o1q zoP7yp!6AP;{>3J3DnWW!miLmG!}%{?Gp3}?AsK*bILSRQW3WDcX&!OyLWXy z8p(f#yjBV>jERtW*BYHewtj@`P3_$Dl>H-1>z07nbn#B6JxPRS_jc8sn2_Ii+_Lq#2dSjD2;ST~ji1#}~`G9#tj1~_gVQ)WM)fU}&(xwMr{nM)Qwi50NkYKda7 z5yK3@)q-eb7frq68_v{fCq&z(FE&rzoAG1ky?)JOnGWjwOj9zQmkb2S4wa6OV6Y$ z`{B+l2sgY3q zA2zsbf6O}H^BwHBI+D3K%%M~qX__6{duT5Cu53!emqj%E!VBW4<|iKtaSc#Pp+Z$P z5T{M zmR;gE8N^edM+CzGE)`{Ap0PAmzS=cj%wUe^>?#khk|&_78%ZfSXyVpyHhnPeg}224 zB|Or;$?Fs%R!Gpo=<2n`hzmU#DY9FK=n>Ui6$GnAZRR)brUTz{wZgin?w(kIL9Un5 zr3{W`@x@jMlit9nSAe0}E@DeD#)own)1G(rOyLfksh_>oUi_xf`IPmWE3ef1nL#&E zP3_=BWsU?8$*@sCf|`X2UMHHga=Q zC3;l+d-d_eA z6p6ZTUsq89m1KLuv8_W1_(Z+>4=*LamWLOZhQhS4Ky430!gjt}g{fjiN@T3E{6)Nm zR;;l#vk563DB5M;ukG8s0&Exmci|1K&u4N70I0<_14s^&RjWpv|& zq39lo_`PK}%~fO^+M};!^L=Ba!j>AvX{%G_FYM{4cq?hk2MB0<=~upKde9Sm6np_1 z|En{`xub&%aAg9_)|yzS@6*M7QFGY3>r$~@Gpx#+n^k{dZ5(WfyX#ISpq1R=D}?^d zrCdsBzijAV&3*tRSROmpFr5GUrDF_XT17B9vxXK$W$Dzgara%VrFJLJEpecneY3;z zK8X8yc@B2y&s^AZe?AAt9<==1Db0Alo;W~XV_d{+0Myedwg6uZmq;ABV319N&(n$oJ_=sY~a0%R0`DQI%!n`x5hdBKov$# zH~$%5fSd7!Co{6@*1iZ%1%_C&IzcHxz7-SJ1YqnDm)%ZE44c3GWId>_yI!cZMoLXT zz`lafV{$x6y+MaXiTjX>VIqspfI1Ex5Q&;Kx_vab{w|pwe~{7OkjwGi^z)S2R7YtW z5-kYnyW=M*`fr60;GZ6ICKut8KaZ?5{IuJcGwDqqNKs`l?IetjPVv@8%cGHjT`+nE zS=Tn6eI@e5MpS<*tFoyZ{Ev9@%iFL1xCiC00LNoG4kx8KcY&_WpZ1+`opx``~-fkBg6v`*Gofj8vJQNK|xnlYZ=%GmP%fgle3g({Pb>iy{XzCyTH zH7u~ba!I?XCbU@J#^DA%%NAh2-Lb1P-Zre%stT2Max~dcuxt4A;|!4aL*6w49Dhvm z#q}yNk$*@@ey6CoBC~6D_c#ctwwSxb!zJw?LRp7k#ZH!AaaHAqP*%3wMR78*>tv)n zS}z2^8C3Za#83+%8F&_1M%V@PVBH(@ud%oRm;GrO63URC*{gEOJ)mN5eaYKwl|@gr z;yvC|dEigP0l-lB7dPq4Z~G{5bq@vR&ymC-Hr8Oa>ywm>uu9}OKr*>ido)BBfb6bn zRaDZFXL94aKhTaZwubo4Z|Rix0=g&=#nCZ)q}lHKx~&}}ihlNt!s9ARo)xBehY0{I zf{e*$o;{hxRqea%O)O=Hz(d*qo$6IV_}yO{@c>@5~fvR^&dU*RV&LXGj2_d7j&b$4&y`OmXp7A zqXD}4TOgW#>`U4a&TPlXDXb$PBAPlxzz^d`p}Q-^Z!?0=bNNt2$BD&_Gts-ij`que zqd1`={#_r7xs=mm8vI%fcEH+hC;i0B0r_kPpVh*&uk^J7u85EFS;nQpx6&!#hZJ8P zUWrLNx_oy}BlqpbzzcXwTth-X8DKD3_wi|NlO2d(<8YcbwKh1Nd6+`O)pxgPDO1YJ z3$;(c6xttuasAqh)Q`~XlmO`ifN^nzcUDkE3uuf z*EM3}Zu-^_4?ry2=)iq=R;e?OLmFQb;wxKwF%dbZS`i@Ey-nGzCmztNmzv8s?0#4g zI0D>HtozlRq`ue8s^SKy;JB&4>u03h)?iPEg$F%NefAvkV${6<>q;=&DoHRB6H~YMybc> z#1~d#)9HboEKLZ{NU-mIE;nB^M{PZp!W4vTpXVA7TfHr%*O$C;z|wml9IL-MQQW_! z1T)<}tMY^Q_T1IGwxTJOrbuikdE3vc`F0@us`BTleWrHVD_q{O8$;4WtI&3Qb+n9< zuRWI9-l$Yc%YjuXsSg`SrjjIl8`=R9>lh$MV@GENoNmg8qsUn5xwZ{$D+}0=DLg>G zwFE0VirUL+Tl(8K>RLRVv#ErG>U3Q!9sVW_*Xz$Ap=eK)VWx)-k&ghR-Yu0=xo6{i zFYkHS>QCe@#(v3_m#R7NPdB{>H3%tBF*UoltY0;C23tPbs!k!;RVb8GtPfL6PYN0hcdu1lq@NJ6rIy~lx>HT#x6(PsTa(qn`BCAM%fMDAqmeS}{@%9f zYJ@-31lo9O@AR{0{ylLK&37;2Gqu9_3v8!5h|lZatq95AZc0CNZ&eK2llGce<6H|(3N9c8QHu3RA4ZLBY^t=4Q{;K$h`7NWU%<$QQ%&< zN7^C6=Uc$;Mi}tzTBtSJE=Uw2$!jq{9^DBzvi`G4o1B}RmTrz2|w$Ol)^a^ zr|e(~(mlm{pxx;>F@RApi&v$$AzgLg6Y?7Op`sH zov|&3P?zWe0*`(}KLEuk6kh_(&FZ3RftB;yof+ymis|0U?{_UjXjFRQD@+gfd7|KL zgkI%AVg~DTWqm8vGKwUUZgJdV%mV|_T;vG0|qOl40_&^>{V-QbXP-wd~P#H)AP7> zE5HwmmT%0lvN0GSvdSOg-$r>Q11e}&T4>v*2tDZpNN@(r(W>>7_x4Y}z8v}|9PlRI zPL~0~g1(FGwJy{KrfSl%@12L=8I_3-BT4OqAg$8n_r7` zbXLdQVMGzEQ-*x(6-n==%i>dWN>8 z%F9@~^$Mh+d#tX0W~gr!*K)+G3zN4?c1%v*&U9^n&34+HWCpgE9+;@fZ28v}D0iOW z`u#Icl-qCzp{g|i1ku{Gz2>NE^PS*pD>nJUY$6-K&pzBZI>;TdQa527y>bp*m)Ax< z3l&MJmD+8dt!O5A^aA9(`Q=_(#Ub63(CWw{Rsxnc#U-Z}=S zE_8Jt_C;T9^e*!~$LsT{zohv3u)SfU&@jMS8W-aPamnW|u z3g$F|;6)2Yto*>ls7u%%W$I-pdcsa07%6%{#(0%)_S@zIRvMq5Bv*K*sp+v>G#;_Q zjfpd@m&Sk^^DKk~=65EOCK1G49Pj^Me&s_#BR zrsvC$(2xoxim_7x4nF5YcIs=B9b?R$pv6gr_-nf04F{8_2W@}r`9YLL>DFDGd{8xu zINmF+KY=YNt1x#e%q)lC@QBYVlDX?T(a~YG1sXa?-f)!1WHFR35?HVY{(#JWT^m}^ z7fLO7G?An}HaL#{0jaCF!F7GX|IP{~ww=I=^Rl;#^+oNfR2&rINy*dE5qDSg?aDxl zLzPgQVwOUEkA_Yzw4Z`f;+)A+!0R0|B@qe<7U9?eSWb@kqUQU1d+du8)U}-~Y`=x$ zn#YGnXZ<GBE20^7LAk$e^9xy{HG2p^lu5zs_aRA&PC9Eo9NEwi zZ8~zno&Wfq#RImn5}=X32P}i-jt==W>=ga=ifrw~5<+hW^;BKG0H#ml-g;}Xezan6 zA!+A>X5*WrN7%rfr$o`)jXG-5{{7~tJf5m7y=J9P4rt=ZiTD_ZQmsxez4NF$)Fe^; z{5`G=|2{Fm^xZ$2M5u-Y=gKZP@|U^}L>7ORdrPBIoAjMxzn;IC;3dB!h#B!yRJzW^ z>wZ=kD3uMO(Z&x}?zO5_oS01KjHgi<*DX|7)wY=&Kf@*0D_x9rbj9!D^!h%}^SaE! z5p!J{cw?;-Yk+i@xm0C2HTkmRg$A~9u?89Q&#G|Iyp(7g-^mK~PY!y6IfgWvtGHke zB&a8wG%8F@+SS})KK6Sw0OY~7v0gO0pS!UlBXHmi%C0Mq8&>FKhp(16BjPmc$zGvF z%`_L$Wu3m_R@)jU5(NRdl`UQ8fx`2Di}B#Y{>)~&sh`A;C!aj~Qf%;w!vf%8jk?y}dtRSEuNXscSh2qW}E)=R6?2oorizV-gB%)nwo z3@TJ{YZ-UsDug?IUiK5vfZ7Zj{Szi^W>r_$tuj;YL5-en7~+G^7^WGW&jeWL z6~>u{=UI^rczdJq)uAOKMt0S2z<>B zOG$wGbhM=jSCjNx=DZUtnX)jm82JO1S24SGn4x}Ss*km5csyx6Jo*QPW4DolUee0p z+&>ofSeZxOA+jPr-n6`O7O~{yiz``se}7r?k;7*gaL0km|Fg2+S8A3#~1{eJyW-%SvzrK6l);zAtXhNz~$mP(` zQPpm_P^5BL`H@f06TYbZKV0I!!wI+M+$B=HioFyxnF)_WQ(Wwfb~mp9d6=~wg-jh2 z0?M;f&jv8X5cA#NFm##(> zs3D0r8*P?pbnStaEty)_g$}M@D|zO01r_MlFNoLX252$J{^^(h4N+r2=-hj^!u#c` zR@c1Xg&I&OYgJ;~YK^$u^ps^OdzCM(Bh|&jgZvtCg(z4CkV`xV&psA#;g7x0qY^lp zV`-RJUzx^cAZ7Qa-U=HP(*u`F5uwLkero0Z6V>=1yfzz|n&(!O7BRT~v)Kwn(KIN^aBD-wD6#-#Te0GndC@UQm)-W?C(vewCE&eO*pNc}rV1AOhRC3Y3S zzZLk`|GX5-j4Zx&?AWI>jtpmyeR;X5dbDYDRQe2r@MYWN7l^$C8no%HHCj0V_t+f9yx*grIae4JcJCtvWfcszBDrv6ElE#vTk#7H?~Q4%95duE*cN_s6D(N|!a)J@ahs zXu3Y(2w*Y&0PV017SsQW^!qQgOF;RZ;e2~syg{AevJ;BDYIgY9^MFab%F`+Wo5k?) zZyk344|&wFl=64VHqM^bz#~AH_$vTOvk5A`AFT=FG|Rhm%;p{-*Tf;)i)Y=M$y267 zth>6$UZ8^lKD%M?KY_l#ymxULTfW@L=AX=*niNIkA#!HF~VO6{XtXymyptCdH!w5>#qU$*B35YZWbMXBp3Z{dni>KzbXyM z%FEBs_RX^1C-$z+xvP4a)aBLo7WdxcV*m4a7tWVs+4D0XM(*@PCEwU!Zdz()ho#P| z)fs}7XnA*DZVzWOZ3xqVNOVx7RCDyit3gk8a46}qK3~fN3~?hyQFHRUki2ix?ngES zwEuJ0&zN)!2m53bcuGBa^}rYrT^{u3K`WM*riIXQQIfMvA3AwXPEM|?dP0z${i^(R ztKUa-Xs-NmL^VsCv+xb82 zgd(VA5VlytvvfN*@Iy_hqR3a&u-Z{<>^MboV8`r!lY_ zG8c3UQPP?!?CgV)D;_n#^~=d+Qs-tx|MgDV`0F}(oQID_rj?~Ch}+^wPi=BGg6$pV zRZDC)HX~n!B(3C>+wT<*$CWVcDJ^DbGR(Uy5K`kO;DL%&?j=|0$PP5i4=Yr>;r63_ zld1P44~9F+c{4|MWh^+a97=FWSGo19Bf?g_m9^tTRxFwSykl3E-P+zLPi1K3#hJqc z_*YHxbOT~zC6rrE_V6Cm9U5?P!Ox&Xv&;LuJJHAkh^^eVsVi7T2|37OzI=9Ve7r$k zZeKRzvG$^lw$f3nfYXJ1oja^(G1`VDoW}qo9CoOHcH7(dVhEq5s>7_{x;BRII%Sw$ zjq=pEez|;)jbBXtPW)E@{n!F3!2;WOnTM+ z)xt}-lP?;2=e0BFjX~_}4NfNIQQcTW@*TKdIvym0&zUrl?jgzST^d0#uV##Z4x3;< z7I4$b2L$nY^Q`XdqR1+B1mhtp*j-*9sd zQx96IQR#QDzOwJSgz@F8rpQ0Ukes~*Y_2~CZ!t&Ce~pt{JsS<_xildyu4LPRpOGHW z?tYJYquzv_QuCO;%8%)t+j!<5=;_Rpn_Ir8Wxh ztTi(hm{aLR1#{+S4H9D#l{bs0=Q0wN2epCTXb-mK3;uI>eXZ`g#78A}4Sptr*Tqo0 z2f-`LG(0psO=Xg&lYJB1k9ZX}>00#+#A~^J-&c;TD-H24eVyPEUtAIYQZ>` z3dWLl;ICq(!v`8u#roFf6;mJAVX0A#v$w)`pXf{=ZFxVo4}bcKpaS|qmBn;*@Tc>f zmIdRccic2DNR+(Jo#eSCSxbQ4PYpg~btLv8Lp`Nq$k4^^{tu6LtjGOi+^&DOZjQYj z{@50Z?zM`W9#1HYU&CtKF5ZHp)YS(cgP!i%M{}}>R~{r84WGDZ_d0l+&z1#&Pwrs( zQNWnk+2XXSWXWCvsZDw9=25YeD6*${vQ?e-&0{Z^)Q?I48gr*p{k-jWYY`s4uv`(u z`1Cq=g8sM^b`B$JWm=X0>$5nPtu-RQ5j@+03C&l!Z^sk>$-4b&_bCF3m0&Fro9ynT zhe|jc-;$0YH8$9qwmXM8`>Vqi zljErh_T}9#dl#>C`@(+DO%M@XwmT7*iA{rAL-3*50|*mGS~bIZgd?dMp)g`F;J;D7v^EvimeTn<@TYpJ$-vj>uNP|2&li zn8UiC!^yI7)uWkp@rOU=Pj(tWaXY!RP8p9=m0e)$;ZTc0b%c1e|4M%VsQ6O8I@fhS z?HJ+y?P+vf{Z#f~{HEw=txZ7p#3%AGVodUCp_tZPNf8FKs>5A9msI69vfmvIsiI-^eX&wupR*H0DJSt?PQqE!Wdv2y%Gdh`Wm(r#K1-Nn?Qh#Y zz8{|6!sD0d^Y4>EO9^tmbo}BW8WLIS|9fstjFC34!~WEP-{jY9WSeLlin<-?>hxU@ zT1!W2td-1OfGdjI-(r?|1&LWnH6}009FEOvSAHLx7rNY9D0=3N-SD)h`msSm-bt4l z;`qYx*l#D39zv2qmUpN$4*q zP8?@t-BP>!bk&--hC7?_lJF}kZc*1!y&0%TmYmBWBR5+`U^i2P-Kjz4%U3^VX&GOg zBNAYJ^Rg$EAjYgh#zRXgyu`bDh~Jju!6TVjgZ*qKjd+w%-2pu^l7Oy=tIpDTgUQzI zhGo_>Mhf4v!si0`PXgDfx}$TBrVKvWuW@uebJVqPw% z6?jd>MMT=rBemOfcUBgZ8eQ&ZmMXdY?2X`zbljQB?>+OH_q-}!gE3pRNxy3wMpA4&E2FpW%G|%Y#8AR*SghiEq26Mw5X6>3 z!$xe0t43iSkiP7U%1qrvu{|Ygm%nxpPp4CwA~Ik^LK-6-`#AjBCQ}r4rE8@kHz4KW z;Zy;sUVGcNZmI|~l33AG+{_mhV`;6skk&1mwW>{P``(l9MmhXgspPXYw;}F+tkcA$ z9m!_GM9ocBjO5JqUD3FyQbL`v^!Ej~2QByhvMqw`1lAV(6QRI{#Tc>?+RYch-n>)o5e6t`|}_4Z;zQJ87{V9TsyWrYKi~ zKL4R~YZLO^?54J2X^*EJ(sw@Dx@B+Qdh9<5Ndc;(kyF`nFB&Qp}D6AZ=TvRR4m zx~nE{gNOyHDP3_@mlTZvTvZV_WoG-Mx7du$gx$%{eRp=qX`?Yy&jy`r5#-SR z#DA7QMe_@PFNKQcae4Un#`HQK4w^7!7LV>Fu1Kfw6t_b?JyLeJ*}-fBC>4mq&&OFJ z%X>9P^~Bxw0*rdyeahtrFM-C{JFf|0?)!L1Sq zIC5^}u&O)bmBWnWXN3p+j^pC)MT~bc(8FM_q1P5q(b-|wR~_&BJd@itA{<_fgpAI| z;q#3nD&pWZ{xK|z)sl=qZuDkU?-VFHUFfapoNZkl*=nXc8?)ojMBZtgcqk~8S@j*7 zIGm_z%ST!msLmQh)iE#O)&j3qxP)^-ZjyfJ-NcyxHGOI6D{BPH_`q)3V7af*W44EE zoCCcfI;8Hapr--knds{wS+yd}sw#soRbF^6$-_~FzFmmwg{#5$dp$=D_FwltwRo|e zG!C^spk*LEkz=;K5tb7>`BwU@;*V=kP+pPm4@3~7a)k(DM_gqn59!9c-z_vVw||;5 zZqtuvP_Sta)ti5^;!sh{9z1xVQuZ~Yavp-SfdeArV0IVEJ@md4K_tG}5&mn1;(hXv z>-rtfs_MN67v|ff)zByvZSnCg#4GrLNwlXs*u(?K91$CrP!k%PLhue%c`U!9&jXFz zoLb^|ASbtP3Ke{tS*hs}r(#FO@x#yX!`#4WxJOc(mUjmet;rJz8xsd+t%i0jW1=p_ zO)%rh;r#1Py+cTnR5R0@sez=^$$cr`8=W;n7gv+mp%On*Sxshef?hs_-5E>QlpNKi zzw>lra-DqllY$gs=ZPY=goDG5yToo+I0+L;UF)wrZvdx$40F4e*Gc_jd?g-~TDfNm zV)Ncx2SujCZ`P1*0@kB@a|*d~kc1`=q2=0Blz;qn9axsJq!3VoM^K{v9-ZiczqY5 zDZJ7P-1T^(y1b~?M~bT6vV)V9tn!AbaS%a|x?C$aiMUHKx3|xpj{9r5$}CY9h0=y7 z5}T#69;tGeMd@=@gl{~Go+wd`krql{ibU$K;NT6O^l*id!kPN!tFvFOqMvyMIaHSl zaM0cFl$Xn7`;HBn-^ni#>pYB~>*L(RP9DO1x9LG0@pWrS^}b5c>PoID&qJ1#99w|C zN%jVH>eU{?Vh-pW8oFPBB2yCu2bq3#&9qgyczbs~_&!Y?7}g1~;~`=C00ZioXhat^ zr)c~c{=T|{F&U`^oT^#nyY7tX9+S$-&k5b5db0;yMr%KDIiEE@j$+xx!}R^HTv`S z_1sn%TNtXf#t&ztItbIQU?e1LKQBjgXM}rsjfFW(t-0duZU9XRw)^^cAZ8s#>A0xU z>_lZ@mz-a0b)fUM-{uA1kB3Tl*ow3v@FU?S zR6d!_i=` zvKs{F;Kz;9iPJbR6Lt<4UYRnBYj*-3Xhm+|Yj0lu_ccY|wutnJV8b)#qdXtdctp*} zsb++yzY;W^9USlKHck(q0X(SeT%+|hEn0^}P6?Idm36s%Tyjv*+h#P|N>{WPbeRsM zdVSaEV>+@{grU$SIPr75SP*$_uzcw{{ERK~NoKg|jxc<_DsVqD5jkI%Bl43=Ln_5fB26}YLe#eH}>Z&C;E_${T)$>}JsbfdIK zF{yHLmV?&~-i+8@9mDqA1gWC!72qg6aToC2#04$JeI0hyiQN&9ymnP^jH)(eolyUE zo#4&kG|?+a&8T+bT;&J12%0VqUX0VL)fvNifDF(onwF5;W69P)N9wK-*!M^|jttp7 zUanw>)kS#T2$eBzbwqc$t~fp*?~d{Kv+iW$ko2BtOQaHI{wF;|IR7;%^A>11ATKC& z*wZ->JUAfV_H8~N$P*6tk>r7SZByYE!2EWJw#J)8p+>dUE{OtOM_tGhMzD-K$K}m> zvzCb7^V2mplI!zxc!>BztWcb1FZ4!ds>>lYX_*^jMpz^oH$Jqg=q@c%rW)g6{J1%O z7rp-gt}xIYxfN|vRJ;`lS-Zs7eFu*Jd9f$kNs^L{U7R=LK_lx>0# zbPH~_a^<~C=ldGj7cD1u^JH%+RCsppB!2^!9h(xI$zrn@{R2d&CIe%=LE;Pjb8G^p z@N`;}N$3aEIk6dyXrm`8QGCFNSXUwTIPPm=UvGX`)Gx9703N8_ZQJiK*_r5ot-IP+ zv>2I~CIG{onhQcy4Zzc1iJH326_WarMP9w;FjWmO7nG9r&|H>CzxKr(BJE$XXaTcBOY3}l7iJvl9 z^;V&0+$JeEa$co)&gSsJSC`^92HO^ILn@l z$<2Xv-#Mx(i}EcSF9s|1J5H37-QPbQ{rb=8f4qQ+u#iv49pHmI(U7|4?N9|SdmAb< zj4DEplj`c@JQweco5xD^)crKo;n@ciy{m>t9*eUY| z<#_irujQdC;`i4hA^6OUBM2dZ!6Ej{6A5y-*RY1u8%|FXUJr6HDpK7Midk1@GuZ8mQK2v*)@*QBpRyc-s z5&CXjnTzbum7XZ^%Z#`dd8s6w!ZSS1fD+dCjyqY})yH;{L&sb7EVd$wJsJ z`Nv_!G-n?RsQMC*gj)9h-rfHhUy|r8&s0Z*XB>LgjOc`z;?BSu^vAx<7wW{g`4}vI zE-V3#X%^)UJD$KJt%&C>6rk!@1uPtX)XEj_}lo8B-r*6Sx@z846Br z(z?wD{%5ZIw;lLbWPLk9xRzSy7rRXRub(ZO(-_bOnp3bxHok#9gQ?%I3tamTuj7w- zSg~)lJ|J2#rpx)Ga+;LZUsL1-JB}Q=?JjjNpVFUO4N;CvMc0~0!dL~;$q+RFDlRuX3s0i8uX%P+n*Tmf13tGC- zDc5$qL^b#8Z8`pNHU|Me_s@4r_jg{Ml{3`*t8u_4&p!>V53l54LEcFT6G>;gxqSU< z#YF*%50vRdnz4?QlYu_-5gu-gQzv=3kHA5N+yO`H@V+X-Fs2@44~d3(3;;0~Q9mFe zr8^1)O$`@afmO)!w~q$SQ)8VPv@G8J<^uyADbbfiIT*Ivx@Bffo$4kp54^r8 zW3N(@oc3Rk+{}>VZct9ti?$Y-B3MNEtXf?)674+s6a>h~!6rrw6PFzK)~i-3vb`tI z!;G$Q+K!6qL8crOnDi*4;-<{eZOvwO-Svys)7&-#N`UPRJ+XuLWAsX`2tVTLZ9O|M z;@rjQHtUT}`J?q??qxkD5vt;o0^=)j6P&VFM`z^CLP50~v!G4i@^dtTHLJu<4KZ6s zgF+!nM=!Hc2DzfTPd95>H1Lrs3THxdo^B7v^fcX+@t!kUIGt*vX5HvKKbj%_&EKtj zatB6la!`{$;kYp3Bz-`gZHYQ@5)0X08;ZVh^m*KWeBPMXp;vXH>;jn>f3uj86}qI* znSaK1{tIUjzl$gRDG%!) z+puO8;9!3QXrlA`O2RURn>yO6=^WIP9irhEO*}AFNhjo>)<1@o*@G;X+?K@Ei`|Q> zrd~`eX%vqo-{6r)tMaG%HdA3Gwp0f+71-EF(*&ele#UzFrn)r#QWa?1&r*%_z_&kO z6aItrW+|H=Iuo$`-oMYlEipcB;Z+ry#w&!>14Cx9{`_u4?<5XQl3FHKCM?@;Ce<=p8cZC1I*aux#@v4naXM)C zP@R~I-LtMGSAQ<~SOs-*fiU0ddvjST-HNKB+y^M_JFWyfytmZvh3G{$CK2I+E-eMC z1q}qHda9jufA?BDy!Yb0em*VQ&I&X0Rmj%z7{KKA0Rt z;`!0IliZt92XmzQ;>_k$A@chkGxkbhBP_mC#&IiNNiNfVCC8|? z@LNRfHHy!jBKvcC`07;hCHVn_o_~dDT873RDq*5#^mp&)uVO7C{9r@cKM#Hm9o*>+ zCvS43x)(QT_ZG;4_YE(k>MoqkeDtk@+V|Z(F$f<7=9b;&l^c5$L*Y>AA4x!G1i4Ud-B^&(WC}f>yL|r%1-J$zS zN|54pTAgS|z&{5(IIW9GU!*a{i+cUf-7xgqq z%-}ee#_w5asqbE6I!#~RpjvISt_?qy452=?ZnN^@+=K5s^LI{-e=bquW^wa=@!-7A zYOD6~Wi;=_rZWq(vwk*slQFNR#u;M!Xi@Jao>vdLLju{J1U!CjV2F`1*b=RRV6(1t ztG-7(eZbojsCNJ6ontLz`D0ucCz9~zlDA4vcjkYEnE6b=e}DFU%2BrN zy20wnDZ*mgT_1GIK}4rct73+nmVuS8M{flTX}sq<$aw zLRN9hy4;A$x~spr5ovPy!W_6lb5Nt7`eOR2CpKhx)hj0q3QG#04}xD_tjKiK_Ycf} z)$E-A`t~a(nce2QB8MD%ub8A|H)iLHzjr|bT74N!C(ueFxqKnqGr+Z~bIC?cfQAFi znTQYRZ8Pl4Fgu<7ibx`6s59T&Pb1?k{?kn=QL{^{vH0?PuP@n)+xBmm+@iYZ{fb~i zXLXKNe~YJtYTbAzNTpsZOks$pg>V=Qlelv|1OYiTK;P)bo;B2$Sy1W`Y!?rMbt1)1 zh)5I32|`4wE%NSZ`a0ybCNT?{XGXV^os+IS*o+i3t8TcSI$vcd0oAx-PoG3htP@&W zBegpjC*3PTM)r*@9usFp2ebX0+47HfP+l*NVe{Tjefib%8O#D{0kQv>PzOAFrYu-) zFq*0JaLPuS2bk)p{+Kt%u@2$mlC+NJUwjcdrA-XV;)i~UZZ!ERL)BZ{6Wc+3>*Wb9 zQO_JH;GQPhR9p~v7m3SGxZ1O>ua=m4drin`DPXlo*|hDnQTwN0n&A13#U2T*uZwpw zF<#$q`*6D!W3ZVeKDu@K)+a6oa5p4-tuJ?K)Q5q4lKf9?Fa4JM?DDGmm-qN->_zFx zC8G;S|848e{3!j)iM+xxSr3P}Qcu%1ZSNJFPWyhwo`1rW?72-G-z0KA8o(ZAIYFd+ zuALRum$}$_tC7vQGq2~2bcg@m)CaFAF|`)x;~4qMYeP4ziNt2oNQdwE&I^BJ)^MDj zaddsiXbk50mN|_2qz&{-@kn*SomrY=Gook?^_Sakyy;Ed-w_4Ap0{N@G@c%n7`Ghi znIyMw>$B~!>`3V5Zs zYX8GbeaB$`n1xK*!c}4fTaLwdGgI67WPHz3f>z|t){y?`X#Zi< zMpDyt+n~3{UkRMLIwfW;J{nbyl)h9|r{?58lmaa5NKf6MpT}9A4e?5-j@zefZw=)Y zv)mcSralNj7G>%}e!IS7kUuHHXwWoVKoXX_^?#`P%CM-Swp~Gxln?|ZL_)f|96*qg zQUvLc9J*nMK|o4My1S*j8>u0rJBOjW8N##iJ>PfUvwv`1{Ma*Vuf1oj=ecW_QkKmk z&Vk)ibABYA&xRy?*Dg6~Z1C@&z+}|-o>Y4n7=ueg=n0*9-iB;+;bKVeTE`=_gi6$J zzz^l_Ux~V{X;|K8OSVCp(50ma{mTM1_(fUN+^YZMX`jmh#jfp7ll;nLhDG=xYPcN|U6-3>4D%taA-Kzb zB?4bX;_@BBSL>~8FKm$=$hr~ez&>r&JosKl%yps<7!SWL}y|Z1qe#lk?CuVXutHAITZib&_LE z>n)_MIBx6}0iO5OGGwhGRIcZ}|#`F2t$%ci)!VOiy5!5bITO zK8>Tsy&@2YCGn%+_~OA=iyg(dvX<#^GRoP}z6|u#Vzx>8z93P_ipXU}bJt>1E%JKI zo0xT&rtY?kD!;*F6e5i9 z2mOw_?uL7-OZAPwCPCKay@5}}z`V^)xA2Nx)H zE`y+cE`mB0TpuOpe`%cN^_D9d?e?^7-A*1I$WOEDI;)dBWkiyk^ol)n93WJXrDxJ| zwJI$gMLNB1)x}aT-tCS8Nx&BqNzwes&`ZFxyNm^Ip_+V zh{}Bw%cylA$3dxT^74g^q__6fZW6yWa;o8&e0uW6tkQmU8gt;+==1OhO+Z_QUifZy!(I0WSRLu#4oeTk8%uYQ8{2ux3 z&K!6Xb6SIUl{HoU-=*4c+T{DYOEzm^sJX*@zbmlmV@(2;I17-p`VS1z6&I&wc?}mB zKTW=pJ$zmNt-Afm-Qktjlf{O;$iYK*)?D=1IV`##L9({MLfEJ{1XS=+?!+CK7VQ+A z9(8$1ob;Z^sT40fSv|S33{#v`Q4RnzaJTE{93+C_N_6O9GCsgUp&0-8C#H`xay)nC z6t}}y{a=*JJRPJkhFd(6q%3F{#xu{Xf~V>Nv=GTX8~I z+hs)eJipS1p~~cKqE&N6bHp8T)R@sh8M^x$K};Aq1)ThUzYCZaDSB%3{~6@NzX10V z`(KC?AP)e(@Za%CqfjDOo=@o`ZwlQ5DDZG>^G(X9NCR~7e@+FivmDP?ULA+2i5^gS z2dg^Iyixt@@xWy8yebv?fnoInsN<%uOp>G_zoAW*xe0`FIabW1A6m~G)n)@|hdu0> z<^TJ`O3`8~4~FNLtCmO!6BYIjqK6^CScv>A!uvD^8l{V;er)HQ$A%?E-Rb67xg6}S z-{$`p@J7zKBpo3blRNb*76sse=<_dz(;Ii0fal5bmV2o0WI){6_}NRAuF)s#EgD{l zA7Y=@Iu~lq{&|y_5@7k;pL22;G}QlUI*!f*)f+B%Tk`ZvfG#$S;e8$<8RW_H|I7d( zVgE-9m3~yyFxjM_zICq3p2*Z)r(u9hB8+tST%@Y2MLJ{$cC)Jze5!0OXIwq7cdC~A z`hU)4vTAq#NfnW{F0%yiFWb7mX@MZ-hKZ>BUOPNM`J^D+|t9^MNCNs88IT@pef*f@yq6_2opGl5R(B%i4 z5VQR+8kfJwzUnOfK;Sk}y{PdWdLxXvc_Rl)2A7M>S?e*NwuY1@IEAL#BquCe3i%Y)8Z<@ba9DW`At0QF-R zoFZ&D5kuFeD{S{A;kNVstJBqEJjzqITGS^(voXKl2B}@Mt#$HOCE)>g> znaxp1DMer&@n3X^?l>kh;V83Er5yRX;IW3%SPb1$dM2ot9`5ftDdXE&NN`i6VOCj= zySLn{8;`5&9w8+ucNx#2(R%tsvYe}=Tzl&=SzstvRb6tGU_KBFO-on!@|B=9MO{h6 z^^u#clJJI!)t@_iEz&+s?|6{3zHLo)Yo*Tz^;iAOZ836Y691VfLPDnEqw(ci{IU-x zyWGgnl_OdrEglCReTd2Reypm?xkbbj^K4q{YZ`7n)+q1Glk_GE7n?cnvgrm-i!)!? zP@_3*{4&IwTj}I;!d=wJ{5TvKzUF>M{g+rqt=e0|_%BiUIfIKgLx5CMbbquC)R3mx zDB7AmcbZV-XOMrIK6JSVQAt#APC} zXGUT5tB}jNC;KJQh;zf(I`>$gKwJK2-3HAz}oq6!uGZ4D^}Xe^YM9rZnLweG@;jX*^YgZ$Bi zXj=X;47!uLM8>nEyF%isKyL4xc88Y3H`48G&LXI;jZdZ{)j{XWqbOCbj%D7}YlY@j zL;7T1aLX?;=~wwY*$*(-)&zda{*vXintmg1<5p*cjN_%3w$u4^YxJ$N=TnU5kxy=^ z-WY#2sdP3JN#SpUhaUlZ?)>!MuyVTHcfPV1LXVwP}$n%y59kNIeC z>1d3?$>inOaxrGOdp9MoX&%(ynZ{EA zGy!|>&1O2{#1VAC6t8R?vnU%qNd^5YQU?to^7@rXnG50?dFc`mc)2+Qw zX~e^E?U@ArT3?8sv2heC19fx>H#sT4xl5EL4A@FZ5+{?axpu|-)Ymxm*(buUf& zHNXc<)0d4cUbH0Zv@Xx%xir`&Th}S;DJm@Z&p_tGvQ@*qzMPPDT!`!?Gy{!#DWkjf z*Yv~a-ItNA`S2FYVk`>2$jX5am+Zlh->Vlf6*U|4B`tBD4vp5%-|3!wA$*DdtMKzP zCDW7%yWLBYCefkCmjc4=$g=17Cj3V5!{!LDOYcBfA%7!)TuPJP!Vmx$p1yKVAKe8o zD$bPKk^eX^1^yTlt=RbD+p6und14pQj1n}AFs!V z|oi>D@psf5UeybpSdhqb{nE>Mso^6ZM>A=lwi~-+dy4V` zRQ13;#W4lsPjD&v(htVR1gzjHx1BE6L8u^o3+~^{hLSdA6nX>X#B`6N*UR=bTaXP~ z>qg6n##zkxn|cU_*^@X-y-|IZbe`H~QF{)yqpoTVQtunz_LV}0=B8H!Rfm1dDo2{$ zl;f=;+t$p#W6UoF+9na2gwA-pcw|aH11FT?%JDYdsb}{ey5TAK71$S<3#U_)DXx99 zWjL|Xu-TPOS(x$zb1oMX;a}l0OsJolx+`pciMStpS|*=o$zTd{9Y87C6P=Ep`} zW}R5ob6N*3+OBJQReO6Oq@AY@uV}VX1!UOE?+a27duA$$XF>nUJjgA(Waq9t%ildA z7HA4Y9TI%ZX!|jb=4t}3G#P8>Tk^&7-Mz!~0K>(ywmn`eP`J5s(0T(SFiy#05cgJL&z_OO(N>IxpYxQ2LrLuE?O%L$0qezF52Jt z8UUT+!ce@k37G(EYZn{N>6;niwWRdp_S%YLjU|AYXuA=a=l1-OZcPg^g8wu(d7RfT z>_EF1_ZaQTeihwPeDHgT+-KK>=haH}CD}qsKW%4?;ym_cyuC>7&PCE5V}L#yrCmK= zGnPAlmxb^Q??zGn{8n^Jl43>bPq3)A%-TAxHre zC(!cY-dW-#J~DxRyb2M>raFZ@rEGTIaIs0AbKrd1TDAE_EZ&n@w`nU5-&7ijE-+A^jHYLjVFDUuU#R%I+eB5(-eF)^A_D z-^KTR;lve%xX`w7kl;k+n)cimIWLtHFZpG=*i845Echf5-8=y!UBC(_Pv$z(0QYqJ zNpe|@6SbZ5@#b27h$>GX{=spQC6plO>->xx>mjgm6k){OUlZ9Ay*J{^#1mO-Q7o}A zH|eUzq$#XX#4p6_E=0p-jxAPuN_R8gdegF)8Y;*Iw99rU6|!zkLz#jo1grG2T~0zX z!K~3dY^d1Epks}b?Z^TWFoRXrWvIyCP{+k;!3qM_{&z!^zQlupM11flx1nXX5h&eK zb8j)y!6&-FE3NzHJ;CQysUar~J@2_&ua4{4$O8_&`XSUI8!T_ct)&!bQNXu-UkKtT{8W4699-R()S17YDQSa_is1Jn2W@4_HnXzn|1b z1j%xoCU->*8aVd>%=k;HDYW6k@ACsBw`+-{-uim|Qk`IB}zWNo7)cAmxOiA3VzO}Z};wsGqC0p?X44E zF5{o1091kE{6zZwd5DeUe8|4b?0Zr=qi!+T3wXTR?$*C@f$&hM2T}6pZ1BLQ+>3O% zvbwcI!|YeIsaM(iwq%v1i^Q!bzlOkcN)d(@Y(=J@E<~k_X=v3Ezl#7-w>d@KE$418 zL{x)Furzz0Y+^v{0f0dCSkPW0a!o$K?_+M;Wm%v&5$f>0#`yyPJZ5Dmc<~d#*VGJx zOb#AC4(9%%#XP6{iLlD_Fu9p5_?v1Us&>ghCR!(elGE!ZeIx&~Vk%f-R^Olq0sOrc zCm;M$DMR#Ui4#MrGYhd&rm-%)@7Gb{ZwU26N|%#UUJO|;hZKSGD7U}`ghmW&r=*^y zQfR5-?f#^?k+@-J04>~u$WMh12f6esgqT;Cs0Kx&YfM#}^P{}*6k3u4p!_gIt*%#!1{P|?!u~D6 zlIOU9Zd#33p;D6b7nAB`#Uj8a4IE=w1M~~k{DZTYdxP)hwWGGdjQ0$ZW?`2 z&$xM8viiJ?ma4uy&0S&DjRy@k$%%JzbQAK;1rN>a#vb{!cviD9f@*--u*40xFrpX- z7ytvU+`j@17EFJ_DnG23I~aq4704Q)P*c9!}6TP+TdtpfBbh zBVVr0hlRbLWt%Y=Mbc1?92dy`i7Ad9Qbk1*tsSejnBz6-p$8tHlog3|MG@O3dyC4g zCN{G~t@Dm`48)i)zpWaj6GBzF-V-R&Tp=X$8~2TbK@~|70$#hj>;eKhuCcHPVPTsO zX}z_F>SYT(2r&P_nCrO3O;D(S1%^Z2r^#O;UA4484;_lpMs(nQ&49)0zt@;_GS>28 zja%)CGh01Rd07zhe7SujN===*z+WA|x8L0s5DWl30Qp$Sr>5uFjo|rx7rX0mmUJfw z$!?KAQD`4<&HatLj}Ume9tuj>%+4qbXdwlvs=qBBUsH~}45^&Q8he#HYt!r4;wyqP zfol=#0@*L^&u0)z%Jrd=zd8P@Z;-yC^jl-<5ir_3ciYyuJtj`5#n2(~jG_f<<;9&Q zadSe#$TB(k{7R9;*Z6F4dzxKIa?oXiNot(tm9<4 zf5}uNt;%xWY;!A}?Py0ey{jM=hF(+JwDEymnP^FtUwsN*$H$T}$^6H^`4U#WSuDhE zThojdP@EgGtP|OmuZ#bQy^@3noa&~0X6oINzt!+ZC3gH17jT8ash;N2=SPxa4rN{8 zn+6es>uCKF=A@_lE~3*cTd-ifRP8tO^d>;}lCGo|ww{i8CqiuGL&f3CSKjM47ZK+C z38db$+Y}kxKX-Yfj0(=(+RSye=jtP()_(gOkX_}lPPIHi!S)4d@;L*=jDd0lOJ`$R z{mG9H(i0AOgYABSY-u*N}Sw;q*)~xjxgUDvhaQFu0UM==n;|);Qhhis z58mO;bB0?oV?gOpf5QsrqDs_wn3~?%C&sYE3Vu$X2gXKRd5$Lk4qy=0ZV2Q?<0~PB-qX02DE-;0kKSmy93zNXSL#Tr+qzb8?J7LKon( zN+%DIsFrE>$Pb(oIA+vQPTEvw$`Hx+BzY86tIJkyD;6 zWcln%w-8mxJdGpgGx5sTs2FsF`uD>q$r~vVYz67BN02L6=Y9!b0;h83aPTd2lvL(j zekvCT_U`PyPjZ7FoxeDM7=HZn2wF7v39Mm5vyq~62kiZV+b19fAS&b$(v_~$S{`lD z_gi|ynS6Y{(EgdDj*Wy+8txag^g1e{Um3{xK$y^7Glr5MIs**&_^!x+;!OJh;qd2WPzsMjZR@Po#`CTZdibD>#mRnMi@g|%J9)ZvTXXIBX^`i0J;PXSv(oZFFdZe|W{4N? zT9aw!&A7Elt=CWfS@v7+F5OdM`O+Nq3&vs5=hu3sLv3TjT;NL32oyH{X5W?q2Nt)4 zNGtA)erJxiFpMra#{)AY6j zz^KWt5-9=V6=L|ch^O5Q4 zW4J0Kc-qneT_}#jx*^y-f2eNK1@o9u0XqRoZkY_4FH#f7BCghu*_i(2cc2dIZY3(E z)u68}**D8kVOUm-+^3E5{}%B)33K?FPOd41H-lM1o7rR({E&ERtOwTAl+Mo{3?gQH zadS#n-r+D;*%=@gN?LhNO<+5|@h%EVSeXPjt$>s(u#&^f$BmI^CgNeEtf8bf`cWm8 z3@}OguIhS}HID4Rx@*Tkd=w~5ebeEULAzP$-+|6`j{weW%#J+JOw<@M)*%T^qN=0m*c~Eo^;99%}Vc50DVkR_SE)B?WP9&^T{qk@{IQRlq}?Qb^Rwd0jbb!Yww3#bDw_@e zG)Mot3r>QSSWjZZ%_|#^3acp{AwMBudgSd15^Ic>pPb zZd1gSc&__QoPj{uE(}sdS!E$IXI4)*Cik?A+bKV9Y*`0H@U+2`yTZ%QE0SEe1jy}5 zC39)XiQdI7vbVm0HZ^`!W!jzDXUGLUkEur2UUkW!tKCIs`<1<(8*Dy@@Hz^$MV6s8rUnA`vx+uW$Dp&mirhSdAKXzjQ+- z4de0((3-50&|r-1ej$_P8zX>NxD_lids04pf8x1SZ4|{N+{?@Qy0^OPFiJcc{cx{h z2yJfci1PT3YuF7vCdUyihEb(Po`@}D0;@E6Pt;*zw6{q|ik_hqeNQ0v8>c`Src`vj z+*g!0(B9`NQP7->sCwT|Mf4;KAFD)8ON2d$2(btSUmp=q5EOoubha9c@a$#@^D#*-c+{Eyv@*+?T+&{48zhTJ4FSgn3w zTQF#jPm#CTr@|zBrjQ=+Qt;f#pR?F+L?|hoc3;ro+)wkKgZ9w}lf{W7=qa3?ZYSh> zt?FF^wI4NnDDfm%5qropomheH^d}2W-hH0dXdMa{d{k*$2 zPaVui@i8My9;t0+vpHQZD2A1cvnP&}CyG$X5wk&J)~u^GI}2)wq(E4QD;co~smh{^{7DOYB2 zomRF*j+I*}5Q%1Tb>Cu5{qbpQ+biDmz?&C9PG*aJ0117Xst4~X9trCxdC#&PnaoTL zE-$m!>P%=TQ+4! znsjAax74@qt&{b6SiQ6=a17HuucQhe=-{4h4)0Wh*k)|?oX3Nz2xsb#LXZ9vkn+(^ zl=o1poEbb|cgU&TU3-W_SgP(a>}m8~0QF3sQ|-vDkj&`kUQjRRru5RLBY+{i2VA4h z3w(L}&r-XzXc8uN@Q`k+YtiBfNpQK|+i+5+-OBJz^tgq)$MJP*0^m%$=ndC4FJTB@ zl)hUcsO2NfjF-J>3-yb6);HN@`IKHj_^o&2U#xV!*;oAeY}jO`__tY28e@hMof$)o zb_oY_tF47h`Ku{b+mpmwzLQQmqh0&~MmQ}OCS48on>jhW8xlnwmv8)x*3 z)gMt_5~XyAd9QV`;}gDKEezBdzk+KT^dI&PEiH>;;rUZW=2t+MFFfWu*e?moX&ArT zy(~7mDPH04?E|!HpAQL^^=0y)}sf+l6NphI@q@ z*7CueZ`cIh7%Awbp1%NQM)RLeQW%?eCGrfi<$*^0ZR}vG3kjDyO&5c-BhX$JAHgy5 zwa&Y~D(B#8KK;%!A|&RRD7?z?MSVYL^g;X_{e|}Ks^dl%pY!Wd>Rjf|dYg%9Cz)IM+La~M+&iY5n zfO}uCmP}<&8_btcFd0oU^LFj+aWuhQUe5ap4jz49POw*jhP9}#02tQ3Ts-wL$QcOZ zpP~k_22J*#5UtR)}C$USc{aLVCOW2Or|}LZW+U$rgY|$ zAKB9TnREViN(a+gnXgT1uv*=&&2(O6smO%ID;dAtSc z#JJ(CDqWs3f=ofZy%w)YVjmT|Cc{OY4EtF9ib64eX39`_{3QA5^_VcyBze~L!y^ZP z25X%58kM-DD@BoWEYvUc1o2eZB4;p)NkW}DZ4VxR&C3yLie>faKv3KZyy#`Z*5&0y z$OmbCoBt?Hhc!9h?i!-F*vJ?CHojOq-0v@Pq7b1_E@s&z4(HGl`+I9~3EJFL;<6rQ zN$D!#vCXqC#^;L+4mS$geNptjVUt`BA>2$FdGb%U>AWyhOaB$^yW6{;`YW$j-bs8{ zGL{%85o09I%EP{Mx~d^&{KKj1OWbT*gEx4K|65V3z`tv=82kdRTE7+?6B^%RaY|5r zk{rXuK5n7*q6(x&0$p80Rw8SnG?X@A4x^E!RGyX2SsV;VDW)Iy=}M)FtqIu;n->P!DNU|v2*qA`RMZptS4YC}R|<`s9lkUu#c*{Z{dgX&U1UYi{jemT?7gka%PYk-3ZpAF>+_!x(4IqKAA!ipzszMAsjwq!hVWq(w{L}4YGCqpGe9NO9H%eXart6{^=EJuvW zlSA+CPQ zB1L-cxGj%}yHuw?nKE?Vly7%OA~R}$6C!GB*QC1na1lZx-no#!xAjern+O>{eg1!r zz>l6Q!%1&@5voO&x_TulM6Z7Y{336>O+(-}E)33kM40>SBpJ*8$k0S{t&mtPEyi*7 zrA3Qr_wOxj+CLEPetVE}O^cNKIp>e4ICOBmyW+ZCZP{6H_!>N-+!ZTWYZDtg^`5-p zwiF@e+F<*)MQ`(@5C{no(1aU%wNlMgNEk?NhFeWsptycyV6kX&aP-X}?-X@ zskS8gKFw|J{MN5<60n~G0XEmhUvDh(d#iQp2z2N$`)i({D4}Q|maa;QZ>LWHRzRxV~{$Z(NLV0gNN0gc1ra%GZanhR2hePpLSt?i@v*^LLw1NQ#2*}`;M1}#Ku(xn{l z9Nf8a*<^a9t^W5tAO!V;rR!biz$8mvJu|q4&U#vT+#b{^H!bvDRAZn5nhE0Ej4`y| zzhAl@$(lUzJkYQ0MqFTm!PXuA@r_Nd*SRY+;u$7XKE=z^EK0DwNjkO5{>qxn6xLQh zQrjPtpRSo6qRGTEx zeIaG%55SO9zmw|bqiMC@PChLrx)E`c^|8i(R^ziZ-FIjI` z5*w3s_BQlwNw`wGrWmRm9SC+oHzP3m^h;8-0`A^?4uN--SHfMQ);E```0y4X>394k z&+&U}V1hRLw)e*df<1!t1(e`%Q_vtsh!|U3N6)zk`KA{LLj-D#Y`%CrOc4=kc~~V1 z?r`d=-)H3+H_=PiBM?Y7N#?W)z6|r4`kNeqFx0(6AW7}!1V%u zr1cGv#x829r*f*hPUZ_t6umsK(zlkG;zPT^kf6B;Zr=Fm8J90G%AiGtDj>?(UdA^u z3}M(!IE^3bZEOaF!==}oLc*&iFJIO&Z{Ba>j(cu(+$>tMBTul|fcpo#m?@)jF55>9Bg#6i z3uHTl=~t+2=(^?gj_%EG) zQL9N$w6FZ{oJs7yv7O6=cZ6+bqJ*WXbCwf14L5;xlTh+>yDnbBY-#1WLvxYw+Veha zcU{NH&Fu8jt6*|dJsq64`oJ#`ku3(hyThvxbzOiuRwEnC7CCD&w?Y$^FVtZjHBX0* zIuQoRwPX>yEmy%U$F*xdXuKllb?7iDhMrZk_H*^QnklJ|S}Of_`Zu1uLkO@$ZiB~f zxI*x~y2t>7K9z-0p_)p+3X$!7AV`NpQpaT!y;PcNtdwVujE+qfHJq!d$82uX)5=Fg zDS;nBbVK<82YLhheK-%GV_DD^8w5+T*zGotK2AA-O6K5iQ6<1?D^U8Ee85lAtv)Ez z)8MYLLT_TL`dU*36To?MwiD`{t)Fw&9(V2k7S=3JMZERyFx#0=ay$+EyBdS^2(i`N zxwpBsZoe^0bA;aAZkL%&xzhaxN;pce^Rtca4$9{0rcYA65Y}3%gd^pjnMZWSq`Kfp zXArEPnr+Jv_WR~D)+Ozf3u<*VnHYhNivMYO5dYW|ThUP`H=yUXnueJ6)yAeK+)*X* z-e2?yW05N*J&*x1QkxCQ$HzGAN-cutbw1wt%hN^v)xlB{xd+Tzc6(na4ii{OKc|R+ zqm2E{lRjPUGy-GdZeT3n<*H#GdCeO5B1wNX?C2;-kfT6~huvbySXbHcsS%%V=WE3! zhmMVO^`_BueiQ~|>AC%)ayx4Z$RrU!L#!VNO2rO(qj_4L%~7;iE6w6t6O%WRujdDx zplnPt{22@V(e_>TCF-V4eBy7G-JZlc)$quT+QeDFDF#!@1?32^HrqGaH__Vr`;S1u zkI7Tq_H3atNuga%Y%^W`GkHVxgAriID7h|&2M6E*ADojt@~ZrgTo}`aA*{o*y+5jn z2rVcfekgsU14)fpF^CqU;hoG8Y?#+|6QCvYfKh!?@6DoC>XuraUAn(m?;gZ|scg3z z_y$JG@i+8l^udO{3rnd>8}qT)XO5xEUF-D4AwrMQG9u5_JyQC-(6Nr1i1TI4SgY=9 zee>9xxV|fz*9(}~@qRy}y~SGhwm)q7ne}*~`kOjPHZDS1DB zaJ=oOlGQV*k~zOIJ-ClsS6fdjr5xC)3(LT5D+HswnYmagTr{b00Ng#D83YAVM-OOY zS=qf-W2B)?;QZ=mzFK-AQ3Nyu_*Hl~`%?cnw@K;-0 zSawhkd;(Xt<`*BT(bJ>H(sK#x;wEQuSxFGiU6Xdm4O%d=-42A&<_!fW{)$8c2ML=^ zc2a*$oe~|EDaq%YS;r^Rz*4rWu91FmY^sMA!Txuwh88ONqIUmyivzlI!hLl1T&0PT z4f8$cparFF3nyNj|I8DxtBO)0Rh`6!)CiV7V6yPH0IU;dem2wHwco-cZ1}d|LCIq= z{g^-PiIVdy!MdJ7q0e=%6}|%2Co#yR)rh7&d4JXxD;b(dWflzjlb*$VayS*;1rkf?_~)LM}eLlPHwq&6V4h16p=qrjbkpRC>4^az!>ou6vXHxN6 zQT-g|@=Ih4OP2+*YoKh)gBDdlCg1C6o7#}NTOQ89_-9sccBs$IAsOsU+BHSJuY_hL zlGlHON2lMy@?ePoZX~zi)6ap)pIj~Q8gT-za^q9VK_73x2q-Xr6OzjJRBs{G?;e`St7%OR0z81bRb{aB^(9Pv$`u2Y@KG7;Q>I>90McfqmBxLyE zlXus_0R~vgYCV8cob0&U0##o0c~bIl45j-Ujjzht9>DggdtgMlha!==JucuPBvGi& z7e3~B>l>mw9ClrOAiPDF0!=N*1uAfP@3BOcInzjcrB^9-RSOp_SA`Bu!=BNw-sDuY zs#k%UfYO<2KfQ{z;Rb`fjtUE~%=j{l{b|;~Cn6w>)N?#3G^^jWMU?@1(lR8`gj*I_ z2{~pv0b|2a7E2UY&vNr+>WTxZC@Y5v?lah+urZ%l_K0SYz0(+1;PiAfczrcf_MWKd z+S<%>EHdyw72nuCyHzcoiu)Q^(XDAUzB0VA_?tuh&1jM*LKx{5f7xhzf5X>bWVNar zD(Zrocju_}D13Vn$n`ilXZm|X^$=7K9E-mdP17{2`QrAlEJQzsO+9srum_S59MaX_ z#<^kF)|47Rl;5r{vI7fjAN&2n)+6w)HM6 zr6AWUxd}W*_iXt&)k54xVp3a+!cl2O_nD_5hjvUc=dM)`Q6`t;jTI}l&C@$fgJ^O8 zk|30oY0WzYa}J^24ZE*sSu$ekbjq)*Lcv;!T~jRkUX6za5RR6$qI1NXf+~Q$9eq&i zkO#K;7uZ(=&98KEe(dCoQfP8b3#R#~zpUUg)zVE+vI`lgi?^y4rE*G@K25%c9-=#g zr2D&*<)I6*bh%Bqe6XRE(eFnF{=bfK(K5nZtD62L5KOA|=oP~@4B158-Z4IcX>K=m zX5S%6oJ54eP|7+pAF}T z8u7@=B+*C>-wJ81&1@VwHWfzU>zKNrumbP67+yfzD5ES zp<|aQ#Pnj}PBj_s;^7ftsyR2iL?ZqdFc&vEvXYiR7_JX&G2^{OOTzM+M4R~&t1e%$ zWCP0Uv)xK04s!uWA5q!Es3a zT7NbP3Eiozt-JvWWi;|M+*;Ewp!4@64u>l`8O{{NLv{}wh%nGJ@6%@Ie49q|^Wh$# zvV+kDlYy{oQWxIYCfDuM^Vj$ilt@kY-|7Gvfv@s-7myuVk{#Znr`zu))-?}a0wD~$ zNi)~*@pU%Kn+-)G$h^c{X2vHG)^FF@&z0Xl0Oub2Rj;`L82vS~YfWW%82V;9<)Zs( zU342S!B)fi>2xTj(@Z5n!p4gXq)Wlzb>^fSg*Te}QaoV}Mz5n5L0VF%Rh^w?Q%%e0 zHlT!FBAFQ(+sW(H0QwM5I|T&#R|cFWxo$4$@t80(t2N(lO@YuHW5AItOT|R-`Pbc> zVYp-VgHz6*sbB&Rhm`;qVIv|DW?j1oYV@9sa&Px*IzZD)_cB#Gdnj3IG;YOro-*<6 zY^_9Yf1Ihbw?jOSug}0Z%@(d3iSvIH&NdFTRGlr;Vb>i!k9|&cUFR1kCo+|Jd*HTc zDPz9!XgOlX%E#j>Zr)RSUW=CA^ZpWvHr9uutREux6{*QCTG`sRb33bj<>A?C*4zC( z!&D`{Eo1Nh4fw$to+Fc!`m;p-4qBzRdjiE}_PMx(4xu9Hs>npqEX~VohcXMo+KE21 zmahl|=f*v~`(fR5S0uxWV$%G0bJz(bx%f3k=jDr$q(oqH_d=%W51l|_ZE+Gah79nJ zH<5W&m^gid(fJjxOT^{EsC!K2&QuLx6D9j^=S-L?TMXe#f4UT%dg%-3GNIVaxqSWc z6{I9707xI%U-0o2WCCH@)&hr?`!~a!=T&!0E_NrsI@(S_j+b?GWn{&E8)`*s3=Bw2`KubMf);Uo>++3H zXXJ4k?S6P4^!Pq#KT&mpP8?Kh=xQoU8YTtipn=8zz8Ab-$FCP18eD{nEKZHqmi_zA zZDWs+?}8fzcdn<3%T8T@ema4?w)>_B1mhYw93M$z(Yt{SJ6WgV?pk@DidkAwB-8JH?X~XHzi+l4w=Gb!;tNSuIqfU52f|4Z zpB@5!``=?!m0Z=BzMEo*9Kn{fO|H^Ddk6*E;Cx7H;3LgU&sMK>NALsE%96Outy{O9 zL@=N3ZZeZp2~~=FXVaqSSQH;yc0`^^;=D&SY^?u+1Zz}+Z%D4BpHV_PfNfS4&oKS2 z>(F~MN%JJhE5=xv9j!wjcw2Xjy2aqE*_K$SX-PBHNxq_ZkRu9gJpv{=j`{(dzRBmE z&EvtTtIg15wr6|q?)#c#lV%CPjMJ@k_0;gQz=^*K=YM?jH1_6+67 zL{l0!GjS9n=BF1~Rp2C(V>-Sh&*M4Y*CsD_udlZjk|5RcP0cRT>*I@)A7C_hfn?qf zo&#rI{0o@?w%kd~6u^$pE(^@G*@N)tpQUCAUY}RS>#Mrg)ND5XH36Pha5h#c`!~~+Tv4zjabqL7ZQ`l6e9^VELC`nc zUY7KKkzJ{rX;`h@MC`V(~1mI6gsijzoVZ? zP+3y^pSI3C9;(J|<77*cL}VGVMH(u`PLm>AmPnRDh3vyvvXde^+4r46_I+<2Dr?rU zWULuGgRu<8_MY)PzxVmQpU->#^4FYWmUHg=zV7RL@r&PO11>c4$M(4AXO~*!xW|xJ zc(P{sLV5o^Z;mUk{qm|24kfkWK|!7R+Q1Ekki79aLhjDZH21zkQ|*hZW|Lp;_h=sdI~+MHht*nn0FWtwa?wpozbd~p zE)R7`WHgl?QiEo~|rJzseaa~XO@6P%wuI4A}hMA@@~UZLRPtr;&WrN^n%cOF4R zQ+(SSHpE)Z)(*an#Guh{K;HR$(~r>%keyofv)fCsCSa1AuMIGt!fpeSv);u3`E&<` zxk6jU(dCrfr)hnWi((Kf(u}J7pZC*e8es7@-|!&jUtE?8Q1@`$?c;3Am?Vwxy-IeM zU7WCmPwkWd@7<;);eFSrLGDcF0~x%dyovN8!XC0VpF9SkyE6gxnU5h(%@+tFmC0eL zY!}VwCs+N2Jd4a~Xo27>0h?JAxbuW3Q=7`|l9 zDwPK+41D6hF{pVFqi@F?QwJ7s^2vTA=hs&#v;eQ{ zF;KI*xAZfj!m;5nFiquRhj{*n&HhlkjL|TqTn3VYR)BME~%=hew#tpR==}&E?9)a zeKs7c&Wy{P+z;G=SC45Aprd$sDMb+T5^W

  • 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 diff --git a/en/application-dev/form/js-ui-widget-development.md b/en/application-dev/form/js-ui-widget-development.md index 435d9dc1fa7..5aed588fd5e 100644 --- a/en/application-dev/form/js-ui-widget-development.md +++ b/en/application-dev/form/js-ui-widget-development.md @@ -1,47 +1,5 @@ -# Developing a JS Widget - - -The following describes how to develop JS widgets based on the web-like development paradigm. - - -## Working Principles - -Below shows the working principles of the widget framework. - -**Figure 1** Widget framework working principles in the stage model - -![JSCardPrinciple](figures/JSCardPrinciple.png) - -The widget host consists of the following modules: - -- Widget usage: provides operations such as creating, deleting, or updating a widget. - -- Communication adapter: provided by the SDK for communication with the Widget Manager. It sends widget-related operations to the Widget Manager. - -The Widget Manager consists of the following modules: - -- Periodic updater: starts a scheduled task based on the update policy to periodically update a widget after it is added to the Widget Manager. - -- Cache manager: caches view information of a widget after it is added to the Widget Manager. This enables the cached data to be directly returned when the widget is obtained next time, greatly reducing the latency. - -- Lifecycle manager: suspends update when a widget is switched to the background or is blocked, and updates and/or clears widget data during upgrade and deletion. - -- Object manager: manages RPC objects of the widget host. It is used to verify requests from the widget host and process callbacks after the widget update. - -- Communication adapter: communicates with the widget host and provider through RPCs. - -The widget provider consists of the following modules: - -- Widget service: implemented by the widget provider developer to process requests on widget creation, update, and deletion, and to provide corresponding widget services. - -- Instance manager: implemented by the widget provider developer for persistent management of widget instances allocated by the Widget Manager. - -- Communication adapter: provided by the SDK for communication with the Widget Manager. It pushes update data to the Widget Manager. - -> **NOTE** -> -> You only need to develop the widget provider. The system automatically handles the work of the widget host and Widget Manager. - +# Developing a JS Widget (Stage Model) +The stage model is supported since API version 9. It is the mainstream model with a long evolution plan. This model is object-oriented and provides open application components as classes. You can derive application components for capability expansion. ## Available APIs diff --git a/en/application-dev/form/js-ui-widget-overview.md b/en/application-dev/form/js-ui-widget-overview.md new file mode 100644 index 00000000000..75e52916eb3 --- /dev/null +++ b/en/application-dev/form/js-ui-widget-overview.md @@ -0,0 +1,41 @@ +# JS Widget Overview + +JS widgets, developed using a web-like paradigm (HML + CSS + JSON), now support two [application models](../application-models/application-models.md): the FA model and the stage model. For details, see [Developing a JS Widget (Stage Model)](js-ui-widget-development.md) and [Developing a JS Widget (FA Model)](widget-development-fa.md). + +## How to Implement + +Below shows the working principles of the widget framework. + +**Figure 1** Working principles + +![JSCardPrinciple](figures/JSCardPrinciple.png) + +The widget host consists of the following modules: + +- Widget usage: provides operations such as creating, deleting, or updating a widget. + +- Communication adapter: provided by the SDK for communication with the Widget Manager. It sends widget-related operations to the Widget Manager. + +The Widget Manager consists of the following modules: + +- Periodic update: starts a scheduled task based on the update policy to periodically update a widget after it is added to the Widget Manager. + +- Cache manager: caches view information of a widget after it is added to the Widget Manager. This enables the cached data to be directly returned when the widget is obtained next time, greatly reducing the latency. + +- Lifecycle manager: suspends update when a widget is switched to the background or is blocked, and updates and/or clears widget data during upgrade and deletion. + +- Object manager: manages RPC objects of the widget host. It is used to verify requests from the widget host and process callbacks after the widget update. + +- Communication adapter: communicates with the widget host and provider through RPCs. + +The widget provider consists of the following modules: + +- Widget service: implemented by the widget provider developer to process requests on widget creation, update, and deletion, and to provide corresponding widget services. + +- Instance manager: implemented by the widget provider developer for persistent management of widget instances allocated by the Widget Manager. + +- Communication adapter: provided by the SDK for communication with the Widget Manager. It pushes update data to the Widget Manager. + +> **NOTE** +> +> You only need to develop the widget provider. The system automatically handles the work of the widget host and Widget Manager. diff --git a/en/application-dev/form/widget-development-fa.md b/en/application-dev/form/widget-development-fa.md index da1ac88d3ee..ea5d417fea9 100644 --- a/en/application-dev/form/widget-development-fa.md +++ b/en/application-dev/form/widget-development-fa.md @@ -1,59 +1,5 @@ -# Service Widget Development in FA Model - - -## Widget Overview - -A service widget (also called widget) is a set of UI components that display important information or operations specific to an application. It provides users with direct access to a desired application service, without the need to open the application first. - -A widget usually appears as a part of the UI of another application (which currently can only be a system application) and provides basic interactive features such as opening a UI page or sending a message. - -Before you get started, it would be helpful if you have a basic understanding of the following concepts: - -- Widget host: an application that displays the widget content and controls the widget location. - -- Widget Manager: a resident agent that provides widget management features such as periodic widget updates. - -- Widget provider: an atomic service that provides the widget content to display and controls how widget components are laid out and how they interact with users. - - -## Working Principles - -Figure 1 shows the working principles of the widget framework. - - **Figure 1** Widget framework working principles in the FA model - -![form-extension](figures/form-extension.png) - -The widget host consists of the following modules: - -- Widget usage: provides operations such as creating, deleting, or updating a widget. - -- Communication adapter: provided by the OpenHarmony SDK for communication with the Widget Manager. It sends widget-related operations to the Widget Manager. - -The Widget Manager consists of the following modules: - -- Periodic updater: starts a scheduled task based on the update policy to periodically update a widget after it is added to the Widget Manager. - -- Cache manager: caches view information of a widget after it is added to the Widget Manager to directly return the cached data when the widget is obtained next time. This reduces the latency greatly. - -- Lifecycle manager: suspends update when a widget is switched to the background or is blocked, and updates and/or clears widget data during upgrade and deletion. - -- Object manager: manages RPC objects of the widget host. It is used to verify requests from the widget host and process callbacks after the widget update. - -- Communication adapter: communicates with the widget host and provider through RPCs. - -The widget provider consists of the following modules: - -- Widget service: implemented by the widget provider developer to process requests on widget creation, update, and deletion, and to provide corresponding widget services. - -- Instance manager: implemented by the widget provider developer for persistent management of widget instances allocated by the Widget Manager. - -- Communication adapter: provided by the OpenHarmony SDK for communication with the Widget Manager. It pushes update data to the Widget Manager. - -> **NOTE** -> -> You only need to develop the widget provider. The system automatically handles the work of the widget host and Widget Manager. - +# Developing a JS Widget (FA Model) +The FA model is supported since API version 7, and no longer recommended. Application components are specified by exporting anonymous objects and fixed entry files. You cannot perform derivation for capability expansion. Now, the stage model is recommended for application development. ## Available APIs @@ -300,7 +246,7 @@ The widget configuration file is named **config.json**. Find the **config.json** | description | Description of the widget. The value can be a string or a resource index to descriptions in multiple languages. The value is a string with a maximum of 255 bytes.| String| Yes (initial value: left empty)| | isDefault | Whether the widget is a default one. Each ability has only one default widget.
    **true**: The widget is the default one.
    **false**: The widget is not the default one.| Boolean| No| | type | Type of the widget. The value can be:
    **JS**: indicates a JavaScript-programmed widget.| String| No| - | colorMode | Color mode of the widget.
    **auto**: The widget adopts the auto-adaptive color mode.
    **dark**: The widget adopts the dark color mode.
    **light**: The widget adopts the light color mode.| String| Yes (initial value: **auto**)| + | colorMode | Color mode of the widget.
    **auto**: The widget adopts the auto-adaptive color mode.
    **dark**: The widget adopts the dark color mode.
    **light**: The widget adopts the light color mode. | String | Yes (initial value: **auto**)| | supportDimensions | Grid styles supported by the widget.
    **1 * 2**: indicates a grid with one row and two columns.
    **2 * 2**: indicates a grid with two rows and two columns.
    **2 * 4**: indicates a grid with two rows and four columns.
    **4 * 4**: indicates a grid with four rows and four columns.| String array| No| | defaultDimension | Default grid style of the widget. The value must be available in the **supportDimensions** array of the widget.| String| No| | updateEnabled | Whether the widget can be updated periodically.
    **true**: The widget can be updated at a specified interval (**updateDuration**) or at the scheduled time (**scheduledUpdateTime**). **updateDuration** takes precedence over **scheduledUpdateTime**.
    **false**: The widget cannot be updated periodically.| Boolean| No| diff --git a/en/application-dev/form/widget-host-development-guide.md b/en/application-dev/form/widget-host-development-guide.md index 6f58b68ffa9..6310fbe48ae 100644 --- a/en/application-dev/form/widget-host-development-guide.md +++ b/en/application-dev/form/widget-host-development-guide.md @@ -37,7 +37,7 @@ Carry out the following operations to develop the widget host based on the stage > > - The APIs provided by this component are system APIs. -When a widget is added through **FormComponent**, the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#onaddform) API in **FormExtensionAbility** of the widget provider is called. +When a widget is added through **FormComponent**, the [onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform) API in **FormExtensionAbility** of the widget provider is called. ### Temporary and Normal Widgets @@ -131,14 +131,14 @@ struct formHostSample { try { // Check whether the system is ready. formHost.isSystemReady().then(() => { - console.log('formHost isSystemReady success'); + console.info('formHost isSystemReady success'); // Subscribe to events indicating that a widget becomes invisible and events indicating that a widget becomes visible. let notifyInvisibleCallback = (data: formInfo.RunningFormInfo[]) => { - console.log(`form change invisibility, data: ${JSON.stringify(data)}`); + console.info(`form change invisibility, data: ${JSON.stringify(data)}`); } let notifyVisibleCallback = (data: formInfo.RunningFormInfo[]) => { - console.log(`form change visibility, data: ${JSON.stringify(data)}`); + console.info(`form change visibility, data: ${JSON.stringify(data)}`); } formObserver.on('notifyInvisible', notifyInvisibleCallback); formObserver.on('notifyVisible', notifyVisibleCallback); @@ -152,7 +152,7 @@ struct formHostSample { } catch (errData) { let message = (errData as BusinessError).message; let errCode = (errData as BusinessError).code; - console.log(`errData is errCode:${errCode} message:${message}`); + console.error(`errData is errCode:${errCode} message:${message}`); } // Subscribe to bundle update events. try { @@ -163,7 +163,7 @@ struct formHostSample { } catch (errData) { let message = (errData as BusinessError).message; let errCode = (errData as BusinessError).code; - console.log(`errData is errCode:${errCode} message:${message}`); + console.error(`errData is errCode:${errCode} message:${message}`); } // Subscribe to bundle uninstall events. try { @@ -174,7 +174,7 @@ struct formHostSample { } catch (errData) { let message = (errData as BusinessError).message; let errCode = (errData as BusinessError).code; - console.log(`errData is errCode:${errCode} message:${message}`); + console.error(`errData is errCode:${errCode} message:${message}`); } }).catch((error: BusinessError) => { console.error(`error, code: ${error.code}, message: ${error.message}`); @@ -188,7 +188,7 @@ struct formHostSample { aboutToDisappear(): void { // Delete all widgets. this.formIds.forEach((id) => { - console.log('delete all form') + console.info('delete all form') formHost.deleteForm(id); }); // Unsubscribe from bundle installation events. @@ -197,7 +197,7 @@ struct formHostSample { } catch (errData) { let message = (errData as BusinessError).message; let errCode = (errData as BusinessError).code; - console.log(`errData is errCode:${errCode} message:${message}`); + console.error(`errData is errCode:${errCode} message:${message}`); } // Unsubscribe from bundle update events. try { @@ -205,7 +205,7 @@ struct formHostSample { } catch (errData) { let message = (errData as BusinessError).message; let errCode = (errData as BusinessError).code; - console.log(`errData is errCode:${errCode} message:${message}`); + console.error(`errData is errCode:${errCode} message:${message}`); } // Unsubscribe from bundle uninstall events. try { @@ -213,7 +213,7 @@ struct formHostSample { } catch (errData) { let message = (errData as BusinessError).message; let errCode = (errData as BusinessError).code; - console.log(`errData is errCode:${errCode} message:${message}`); + console.error(`errData is errCode:${errCode} message:${message}`); } // Unsubscribe from events indicating that a widget becomes invisible and events indicating that a widget becomes visible. formObserver.off('notifyInvisible'); @@ -227,7 +227,7 @@ struct formHostSample { let formHapRecordMap: HashMap = new HashMap(); this.formInfoRecord = []; formHost.getAllFormsInfo().then((formList: Array) => { - console.log('getALlFormsInfo size:' + formList.length) + console.info('getALlFormsInfo size:' + formList.length) for (let formItemInfo of formList) { let formBundleName = formItemInfo.bundleName; if (formHapRecordMap.hasKey(formBundleName)) { @@ -276,8 +276,8 @@ struct formHostSample { Button($r('app.string.selectAddForm')) .enabled(this.showFormPicker) .onClick(() => { - console.info("TextPickerDialog: show()") - TextPickerDialog.show({ + console.info("showTextPickerDialog") + this.getUIContext().showTextPickerDialog({ range: this.formInfoRecord, selected: this.pickDialogIndex, canLoop: false, @@ -337,12 +337,12 @@ struct formHostSample { .borderRadius(10) .borderWidth(1) .onAcquired((form: FormCallbackInfo) => { - console.log(`onAcquired: ${JSON.stringify(form)}`) + console.info(`onAcquired: ${JSON.stringify(form)}`) this.selectFormId = form.id.toString(); this.formIds.add(this.selectFormId); }) .onRouter(() => { - console.log(`onRouter`) + console.info(`onRouter`) }) .onError((error) => { console.error(`onError: ${JSON.stringify(error)}`) @@ -350,7 +350,7 @@ struct formHostSample { }) .onUninstall((info: FormCallbackInfo) => { this.showForm = false; - console.error(`onUninstall: ${JSON.stringify(info)}`) + console.info(`onUninstall: ${JSON.stringify(info)}`) this.formIds.remove(this.selectFormId); }) @@ -395,7 +395,7 @@ struct formHostSample { if (error) { console.error(`deleteForm error, code: ${error.code}, message: ${error.message}`); } else { - console.log('formHost deleteForm success'); + console.info('formHost deleteForm success'); } }); } catch (error) { diff --git a/en/application-dev/reference/apis-form-kit/errorcode-form.md b/en/application-dev/reference/apis-form-kit/errorcode-form.md index 709aa6075e8..025fbec722a 100644 --- a/en/application-dev/reference/apis-form-kit/errorcode-form.md +++ b/en/application-dev/reference/apis-form-kit/errorcode-form.md @@ -4,24 +4,6 @@ > > This topic describes only module-specific error codes. For details about universal error codes, see [Universal Error Codes](../errorcode-universal.md). -## 16500001 Internal Error - -**Error Message** - -Internal error. - -**Description** - -A common kernel error, for example, a malloc failure, occurs. - -**Possible Causes** - -The memory is insufficient. - -**Solution** - -Analyze the memory usage of the entire process, and check whether memory leakage occurs. - ## 16500050 IPC Failure **Error Message** @@ -149,42 +131,43 @@ The widget does not belong to the application. 1. Check the ownership of the widget ID. 2. Upgrade the application permission to **SystemApp**. -## 16501004 Ability Not Installed +## 16501006 Failed to Connect to the Widget Rendering Service **Error Message** -The ability is not installed. +FormRenderService is stopped. Connect to the service again. **Description** -The specified ability is not installed. +This error code is reported when the widget rendering service fails to be connected. **Possible Causes** -The specified ability is not installed. +The service is busy. **Solution** -Pass in valid **abilityName** and **bundleName**. +Try again later. -## 16501005 Failed to Connect to FormRenderService +## 16501007 Untrusted Widget **Error Message** -Failed to connect to FormRenderService. +Form is not trust. **Description** -The FormRenderService fails to be connected. +The widget is not trusted. **Possible Causes** -The service is busy. +The widget code has problems such as infinite loop and memory leakage, causing system exceptions. **Solution** -Try again later. +Check whether the widget code has an infinite loop or memory leakage. + ## 16501008 Adding a Widget to the Home Screen Times Out **Error Message** @@ -202,3 +185,122 @@ The service is busy. **Solution** Try again later. + + +## 2293761 Internal Service Error + +**Error Message** + +Some internal server error occurs. + +**Description** + +An internal error occurs when the system executes the current request. + +**Possible Causes** + +An internal service execution exception occurs. + +**Solution** + +1. Restart the system and try again. +2. If the restart still fails, submit an [online ticket](https://developer.huawei.com/consumer/en/support/feedback/#) to obtain help. + +## 2293766 Requested Bundle Name Not Exist + +**Error Message** + +The requested bundle name does not exist. + +**Description** + +The requested bundle name does not exist. This is an internal error. + +**Possible Causes** + +An error occurs when the bundle management module obtains the bundle name of the requester. This is an internal service execution exception. + +**Solution** + +1. Restart the system and try again. +2. If the restart still fails, submit an [online ticket](https://developer.huawei.com/consumer/en/support/feedback/#) to obtain help. + +## 2293767 Invalid Parameter + +**Error Message** + +Invalid params received on operating form. + +**Description** + +Invalid input parameters are passed when the API is called. + +**Possible Causes** + +1. Mandatory parameters are not transferred. +2. The parameter type is incorrect. +3. The number of parameters is incorrect. +4. The input parameter is empty, for example, an empty string (''). +5. Incorrect parameter format. +6. Invalid parameter value. The input parameter must be the same as the corresponding configuration in [app.json5](../../quick-start/app-configuration-file.md) and [Configuring Widget Configuration Files](../../form/arkts-ui-widget-configuration.md). + +**Solution** + +Check the possible causes to determine whether mandatory parameters are transferred and whether the transferred parameter types are correct. + +## 2293795 Failed to Obtain the Bundle Manager Service + +**Error Message** + +Get bms rpc failed. + +**Description** + +Failed to obtain the Bundle Manager service. + +**Possible Causes** + +An internal service execution exception occurs. + +**Solution** + +1. Restart the system and try again. +2. If the restart still fails, submit an [online ticket](https://developer.huawei.com/consumer/en/support/feedback/#) to obtain help. + +## 2293798 Failed to Obtain the Widget Manager Service + +**Error Message** + +Get fms rpc failed. + +**Description** + +Failed to obtain the Widget Manager service. + +**Possible Causes** + +An internal service execution exception occurs. + +**Solution** + +1. Restart the system and try again. +2. If the restart still fails, submit an [online ticket](https://developer.huawei.com/consumer/en/support/feedback/#) to obtain help. + +## 2293802 Failed to Obtain the System Manager Service + +**Error Message** + +Get system manager service failed. + +**Description** + +Failed to obtain the System Manager service. + +**Possible Causes** + +An internal service execution exception occurs. + +**Solution** + +1. Restart the system and try again. +2. If the restart still fails, submit an [online ticket](https://developer.huawei.com/consumer/en/support/feedback/#) to obtain help. diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formBindingData.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formBindingData.md index e48c0e4f1ff..5cccaca3181 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formBindingData.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formBindingData.md @@ -56,7 +56,7 @@ Creates a **FormBindingData** object. | Name| Type | Mandatory| Description | | ------ | -------------- | ---- | ------------------------------------------------------------ | -| obj | Object\|string | No | Data to be displayed on the widget. The value can be an object containing multiple key-value pairs or a string in JSON format. The image data is identified by **'formImages'**, and the content is multiple key-value pairs, each of which consists of an image identifier and image file descriptor. The final format is {'formImages': {'key1': fd1, 'key2': fd2}}.| +| obj | Object\|string | No | Data to be displayed on the widget. The value can be an object containing multiple key-value pairs or a string in JSON format. The image data is identified by **'formImages'**, and the content is multiple key-value pairs, each of which consists of an image identifier and image file descriptor. The final format is {'formImages': {'key1': fd1, 'key2': fd2}}.
    **NOTE**
    During [widget update](../../form/arkts-ui-widget-interaction-overview.md), when the widget UI receives widget data through @LocalStorageProp, the **FormBindingData** object is serialized, that is, the widget data is converted into the string type. | **Return value** @@ -71,7 +71,7 @@ For details about the error codes, see [Universal Error Codes](../errorcode-univ | ID| Error Message| | -------- | -------- | -| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3.Parameter verification failed | +| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3.Parameter verification failed. | **Example** diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md index 4739c9a5a91..4bbae3abafc 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formEditExtensionAbility.md @@ -1,6 +1,6 @@ -# @ohos.app.form.FormEditExtensionAbility (FormEditExtensionAbility) +# @ohos.app.form.FormEditExtensionAbility (FormEditExtensionAbility) -The **FormEditExtensionAbility** module, inherited from **UIExtensionAbility**, provides the widget editing function. +The **FormEditExtensionAbility** module, inherited from [UIExtensionAbility](../apis-ability-kit/js-apis-app-ability-uiExtensionAbility.md), provides the widget editing function. > **NOTE** > @@ -13,190 +13,15 @@ The **FormEditExtensionAbility** module, inherited from **UIExtensionAbility**, ```ts import { FormEditExtensionAbility } from '@kit.FormKit'; ``` +## FormEditExtensionAbility -## Properties -**Model restriction**: This API can be used only in the stage model. - -**System capability**: SystemCapability.Ability.Form - | Name| Type | Read-Only| Optional |Description| - | ------ | ------ | ---- | ---- | ---- | - | context | [FormEditExtensionContext](./js-apis-inner-application-formEditExtensionContext.md) | No | No|Context of **FormEditExtensionAbility**. The default value is an object inherited from **UIExtensionContext**.
    **Atomic service API**: This API can be used in atomic services since API version 18.| - -## FormEditExtensionAbility.onCreate - -onCreate(launchParam: AbilityConstant.LaunchParam): void - -Called when **FormEditExtensionAbility** is created. - -**Model restriction**: This API can be used only in the stage model. - -**Atomic service API**: This API can be used in atomic services since API version 18. - -**System capability**: SystemCapability.Ability.Form - -**Parameters** - - | Name| Type | Mandatory| Description | - | ------ | ------ | ---- | ------------------------------------- | - | launchParam | [AbilityConstant.LaunchParam](../apis-ability-kit/js-apis-app-ability-abilityConstant.md#launchparam) | Yes | Launch parameter when **FormEditExtensionAbility** is created. | - - -**Example** - -```ts -import { FormEditExtensionAbility } from '@kit.FormKit'; -import { AbilityConstant } from '@kit.AbilityKit'; - -const TAG: string = '[testTag] ExampleFormEditExtensionAbility'; -export default class ExampleFomrEditAbility extends FormEditExtensionAbility { - onCreate(launchParam: AbilityConstant.LaunchParam) { - console.info(TAG, `onCreate`); - console.log(`onCreate, launchParam: ${JSON.stringify(launchParam)}`); - } -} -``` - -## FormEditExtensionAbility.onSessionCreate - -onSessionCreate(want: Want, session: UIExtensionContentSession): void - -Loads a widget page. This method is called after the UI content of **FormEditExtensionAbility** is created. - -**Model restriction**: This API can be used only in the stage model. - -**Atomic service API**: This API can be used in atomic services since API version 18. - -**System capability**: SystemCapability.Ability.Form - -**Parameters** - - | Name| Type | Mandatory| Description | - | ------ | ------ | ---- | ------------------------------------- | - | want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes | Want information of **FormEditExtensionAbility**, including the ability name and bundle.| - | session | [UIExtensionContentSession](../apis-ability-kit/js-apis-app-ability-uiExtensionContentSession.md) | Yes | **UIExtensionContentSession** object created when the UI content is loaded.| - - -**Example** - -```ts -import { FormEditExtensionAbility } from '@kit.FormKit'; -import { Want,UIExtensionContentSession } from '@kit.AbilityKit'; - -const TAG: string = '[testTag] ExampleFormEditAbility'; -export default class ExampleFormEditAbility extends FormEditExtensionAbility { - onSessionCreate(want: Want, session: UIExtensionContentSession) { - console.info(TAG, `onSessionCreate want: ${JSON.stringify(want)}`); - } -} -``` - -## FormEditExtensionAbility.onSessionDestroy - -onSessionDestroy(session: UIExtensionContentSession): void - -Called after the UI content of **FormEditExtensionAbility** is destroyed. - -**Model restriction**: This API can be used only in the stage model. - -**Atomic service API**: This API can be used in atomic services since API version 18. - -**System capability**: SystemCapability.Ability.Form +Provides the widget editing function. -**Parameters** - - | Name| Type | Mandatory| Description | - | ------ | ------ | ---- | ------------------------------------- | - | session | [UIExtensionContentSession](../apis-ability-kit/js-apis-app-ability-uiExtensionContentSession.md) | Yes | **UIExtensionContentSession** object created when the UI content is loaded.| - - -**Example** - -```ts -import { FormEditExtensionAbility } from '@kit.FormKit'; -import { UIExtensionContentSession } from '@kit.AbilityKit'; - -const TAG: string = '[testTag] ExampleFormEditAbility'; -export default class ExampleFormEditAbility extends FormEditExtensionAbility{ - onSessionDestroy() { - console.info(TAG, `onSessionDestroy`); - } -} -``` -## FormEditExtensionAbility.onForeground - -onForeground(): void - -Called when **FormEditExtensionAbility** is switched from the background to the foreground. - -**Model restriction**: This API can be used only in the stage model. - -**Atomic service API**: This API can be used in atomic services since API version 18. - -**System capability**: SystemCapability.Ability.Form - -**Example** - -```ts -import { FormEditExtensionAbility } from '@kit.FormKit'; - -const TAG: string = '[testTag] ExampleFormEditAbility'; -export default class ExampleFormEditAbility extends FormEditExtensionAbility{ - onForeground() { - console.info(TAG, `onForeground`); - } -} -``` -## FormEditExtensionAbility.onBackground - -onBackground(): void - -Called when **FormEditExtensionAbility** is switched from the foreground to the background. +### Properties **Model restriction**: This API can be used only in the stage model. -**Atomic service API**: This API can be used in atomic services since API version 18. - **System capability**: SystemCapability.Ability.Form - -**Example** - -```ts -import { FormEditExtensionAbility } from '@kit.FormKit'; - -const TAG: string = '[testTag] ExampleFormEditAbility'; -export default class ExampleFormEditAbility extends FormEditExtensionAbility{ - onBackground() { - console.info(TAG, `onBackground`); - } -} -``` - -## FormEditExtensionAbility.onDestroy - -onDestroy(): void | Promise<void> - -Called when **FormEditExtensionAbility** is destroyed to clear resources. - -**Model restriction**: This API can be used only in the stage model. - -**Atomic service API**: This API can be used in atomic services since API version 18. - -**System capability**: SystemCapability.Ability.Form - -**Return value** -| Type | Description | -| ------------------------------------------------------------ | ----------------------------------------------------------- | -| Promise<void>|Promise that returns no value. | - -**Example** - -```ts -import { FormEditExtensionAbility } from '@kit.FormKit'; - -const TAG: string = '[testTag] ExampleFormEditAbility'; -export default class ExampleFormEditAbility extends FormEditExtensionAbility{ - onDestroy() { - console.info(TAG, `onDestroy`); - } -} -``` + | Name| Type | Read-Only| Optional |Description| + | ------ | ------ | ---- | ---- | ---- | + | context | [FormEditExtensionContext](./js-apis-inner-application-formEditExtensionContext.md) | No | No|Context of **FormEditExtensionAbility**. The default value is an object inherited from **UIExtensionContext**.| diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md index 6743d32534c..69d626f4cbb 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md @@ -53,7 +53,7 @@ Called to notify the widget provider that a widget is being created. | Name| Type | Mandatory| Description | | ------ | -------------------------------------- | ---- | ------------------------------------------------------------ | -| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes | Want information of the widget. You can set the **parameters** field to one or more values enumerated in [widget parameters](./js-apis-app-form-formInfo.md#forminfoformparam), such as widget ID, widget name, and widget style. The information must be managed as persistent data to facilitate subsequent widget update and deletion.| +| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes | Want information of the widget. You can set the **parameters** field to one or more values enumerated in [widget parameters](./js-apis-app-form-formInfo.md#formparam), such as widget ID, widget name, and widget style. The information must be managed as persistent data to facilitate subsequent widget update and deletion.| **Return value** @@ -324,7 +324,7 @@ Called to notify the widget provider that the widget host is requesting the widg | Type | Description | | ------------------------------------------------------------ | ----------------------------------------------------------- | -| [formInfo.FormState](js-apis-app-form-formInfo.md#forminfoformstate) | Enumerated values of the current widget status.| +| [formInfo.FormState](js-apis-app-form-formInfo.md#formstate) | Enumerated values of the current widget status.| **Example** diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formHost-sys.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formHost-sys.md index d6efd088caa..16179366e1a 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formHost-sys.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formHost-sys.md @@ -2181,7 +2181,7 @@ Sets a router proxy for widgets and obtains the Want information required for re > **NOTE** > >- Generally, for a widget added to the home screen, in the case of router-based redirection, the widget framework checks whether the destination is proper and whether the widget has the redirection permission, and then triggers redirection accordingly. For a widget that is added to a widget host and has a router proxy configured, in the case of router-based redirection, the widget framework does not trigger redirection for the widget. Instead, it returns the **want** parameter containing the destination to the widget host. Therefore, if the widget host wants to use the Want information for redirection, it must have the application redirection permission. For details, see -[UIAbilityContext.startAbility()](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability). +[UIAbilityContext.startAbility()](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#startability). > >- Only one router proxy can be set for a widget. If multiple proxies are set, only the last proxy takes effect. @@ -2221,7 +2221,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; @Entry @Component struct CardExample { - private context = getContext(this) as common.UIAbilityContext; + private context = this.getUIContext().getHostContext() as common.UIAbilityContext; @State formId: number = 0; @State fwidth: number = 420; @State fheight: number = 280; @@ -2273,7 +2273,7 @@ Sets a router proxy for widgets and obtains the Want information required for re > **NOTE** > ->- Generally, for a widget added to the home screen, in the case of router-based redirection, the widget framework checks whether the destination is proper and whether the widget has the redirection permission, and then triggers redirection accordingly. For a widget that is added to a widget host and has a router proxy configured, in the case of router-based redirection, the widget framework does not trigger redirection for the widget. Instead, it returns the **want** parameter containing the destination to the widget host. Therefore, if the widget host wants to use the Want information for redirection, it must have the application redirection permission. For details, see [UIAbilityContext.startAbility()](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability). +>- Generally, for a widget added to the home screen, in the case of router-based redirection, the widget framework checks whether the destination is proper and whether the widget has the redirection permission, and then triggers redirection accordingly. For a widget that is added to a widget host and has a router proxy configured, in the case of router-based redirection, the widget framework does not trigger redirection for the widget. Instead, it returns the **want** parameter containing the destination to the widget host. Therefore, if the widget host wants to use the Want information for redirection, it must have the application redirection permission. For details, see [UIAbilityContext.startAbility()](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#startability). > >- Only one router proxy can be set for a widget. If multiple proxies are set, only the last proxy takes effect. @@ -2320,7 +2320,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; @Entry @Component struct CardExample { - private context = getContext(this) as common.UIAbilityContext; + private context = this.getUIContext().getHostContext() as common.UIAbilityContext; @State formId: number = 0; @State fwidth: number = 420; @State fheight: number = 280; @@ -2748,7 +2748,7 @@ Updates the widget location. | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------- | | formId | string | Yes | Widget ID.| -| location |[formInfo.FormLocation](js-apis-app-form-formInfo-sys.md#formlocation) | Yes| Widget location.| +| location |[formInfo.FormLocation](js-apis-app-form-formInfo-sys.md#formlocation12) | Yes| Widget location.| **Error codes** @@ -2796,7 +2796,7 @@ Sets the result for the operation of adding a widget to the home screen. | Name| Type | Mandatory| Description | | ------ | ------------------------------------------------------------ | ---- | ------------------ | | formId | string | Yes | Widget ID. | -| result | [PublishFormResult](js-apis-app-form-formInfo-sys.md#publishformresult) | Yes | Result of the operation.| +| result | [formInfo.PublishFormResult](js-apis-app-form-formInfo-sys.md#publishformresult12) | Yes | Result of the operation.| **Error codes** diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo-sys.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo-sys.md index 8a706e67b22..5373f407cea 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo-sys.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo-sys.md @@ -13,6 +13,18 @@ The **formInfo** module provides types and enums related to the widget informati import { formInfo } from '@kit.FormKit'; ``` +## FormInfo + +Defines the widget information. + +**System capability**: SystemCapability.Ability.Form + +| Name | Type | Readable | Writable | Description | +| ----------- | -------- | -------- | -------------------- | ------------------------------------------------------------ | +| previewImages18+ | Array<number> | Yes| No| Resource IDs of the preview images of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 18.| +| enableBlurBackground18+ | boolean | Yes | No | Whether the widget uses a blur background.| +| renderingMode18+|[RenderingMode](./js-apis-app-form-formInfo-sys.md#renderingmode18)|Yes|No|Widget rendering mode.| + ## FormParam @@ -71,11 +83,11 @@ Defines the information about the widget provider. | Name | Type | Readable | Writable | Description | | ----------- | -------- | -------- | -------------------- | ------------------------------------------------------------ | -| bundleName | string | Yes | No | Name of the bundle to which the widget provider belongs. | -| formName | string | Yes | No | Widget name. | -| moduleName | string | Yes | No | Name of the module to which the widget belongs. | -| abilityName | string | Yes | No | Name of the ability to which the widget belongs. | -| isUnusedIncluded11+ | boolean | Yes | No | Whether an unused widget is included. | +| bundleName | string | Yes | Yes | Name of the bundle to which the widget provider belongs. | +| formName | string | Yes | Yes | Widget name. | +| moduleName | string | Yes | Yes | Name of the module to which the widget belongs. | +| abilityName | string | Yes | Yes | Name of the ability to which the widget belongs. | +| isUnusedIncluded11+ | boolean | Yes | Yes | Whether an unused widget is included.
    - **true**: An unused widget is included.
    - **false** (default): There is no unused widget.
    | ## FormInfoFilter @@ -133,3 +145,17 @@ Enumerates the result codes that may be used for the operation of adding a widge | NO_SPACE | 1 | There is no space for adding widgets. | | PARAM_ERROR | 2 | Parameter check fails. | | INTERNAL_ERROR | 3 | An internal error occurs during widget processing.| + +## RenderingMode18+ + +Enumerates the rendering modes supported by the widget. + +**Atomic service API**: This API can be used in atomic services since API version 18. + +**System capability**: SystemCapability.Ability.Form + +| Name | Value | Description | +| ----------- | ---- | ------------ | +| AUTO_COLOR | 0 | Auto mode. | +| FULL_COLOR | 1 | Full-color mode. | +| SINGLE_COLOR | 2 | Single-color mode. | diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo.md index ec7bc3abe67..e1955e65c5c 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formInfo.md @@ -12,7 +12,7 @@ The **formInfo** module provides types and enums related to the widget informati import { formInfo } from '@kit.FormKit'; ``` -## formInfo.FormInfo +## FormInfo Defines the widget information. @@ -23,14 +23,14 @@ Defines the widget information. | bundleName | string | Yes | No | Name of the bundle to which the widget belongs.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | moduleName | string | Yes | No | Name of the module to which the widget belongs.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | abilityName | string | Yes | No | Name of the ability to which the widget belongs.
    **Atomic service API**: This API can be used in atomic services since API version 11. | -| name | string | Yes | No | Name of an application or atomic service.
    **Atomic service API**: This API can be used in atomic services since API version 11.| -| displayName11+ | string | Yes | No | Widget name.
    **Atomic service API**: This API can be used in atomic services since API version 11.| +| name | string | Yes | No | Widget name.
    **Atomic service API**: This API can be used in atomic services since API version 11.| +| displayName11+ | string | Yes | No | Widget display name.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | displayNameId11+ | number | Yes | No | ID of the widget name displayed during widget preview.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | description | string | Yes | No | Description of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | descriptionId10+ | number | Yes | No | ID of the widget description.
    **Atomic service API**: This API can be used in atomic services since API version 11.| -| type | [FormType](#forminfoformtype) | Yes | No | Type of the widget. Currently, JS and ArkTS widgets are supported.
    **Atomic service API**: This API can be used in atomic services since API version 11.| +| type | [FormType](#formtype) | Yes | No | Type of the widget. Currently, JS and ArkTS widgets are supported.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | jsComponentName | string | Yes | No | Name of the component used in the JS widget.
    **Atomic service API**: This API can be used in atomic services since API version 11.| -| colorMode | [ColorMode](#forminfocolormode) | Yes | No | Color mode of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 11.| +| colorMode | [ColorMode](#colormode) | Yes | No | Color mode of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | isDefault | boolean | Yes | No | Whether the widget is the default one.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | updateEnabled | boolean | Yes | No | Whether the widget is updatable.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | formVisibleNotify | boolean | Yes | No | Whether to send a notification when the widget is visible.
    **Atomic service API**: This API can be used in atomic services since API version 11.| @@ -38,16 +38,13 @@ Defines the widget information. | formConfigAbility | string | Yes | No | Configuration ability of the widget, that is, the ability corresponding to the option in the selection box displayed when the widget is long pressed.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | updateDuration | number | Yes | No | Update period of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | defaultDimension | number | Yes | No | Widget specifications.
    **Atomic service API**: This API can be used in atomic services since API version 11.| -| supportDimensions | Array<number> | Yes | No | Dimensions supported by the widget. For details, see [FormDimension](#forminfoformdimension).
    **Atomic service API**: This API can be used in atomic services since API version 11.| +| supportDimensions | Array<number> | Yes | No | Dimensions supported by the widget. For details, see [FormDimension](#formdimension).
    **Atomic service API**: This API can be used in atomic services since API version 11.| | customizeData | Record\ | Yes | No | Custom data of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | isDynamic10+ | boolean | Yes | No | Whether the widget is a dynamic widget.
    ArkTS widgets are classified into dynamic and static widgets. JS widgets are all dynamic widgets.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | transparencyEnabled11+ | boolean | Yes | No | Whether the widget supports the setting of the background transparency.
    For ArkTS widgets, the support for the background transparency setting depends on user configurations. For JS widgets, the background transparency setting is not supported.
    **Atomic service API**: This API can be used in atomic services since API version 11.| -| supportedShapes12+ | Array<number> | Yes | No | Shapes supported by the widget. For details about the available shapes, see [FormShape12+](#forminfoformshape12).
    **Atomic service API**: This API can be used in atomic services since API version 12. | -| previewImages18+ | Array<number> | Yes| No| Resource IDs of the preview images of the widget.
    **Atomic service API**: This API can be used in atomic services since API version 18. -| enableBlurBackground18+ | boolean | Yes | No | Whether the widget uses a blur background.
    **Atomic service API**: This API can be used in atomic services since API version 18.| -|renderingMode18+|[RenderingMode](#forminforenderingmode18)|Yes|No|Widget rendering mode.
    **Atomic service API**: This API can be used in atomic services since API version 18.| +| supportedShapes12+ | Array<number> | Yes | No | Shapes supported by the widget. For details about the available shapes, see [FormShape12+](#formshape12).
    **Atomic service API**: This API can be used in atomic services since API version 12. | -## formInfo.FormType +## FormType Enumerates the widget types. @@ -60,7 +57,7 @@ Enumerates the widget types. | JS | 1 | JS widget. | | eTS | 2 | ArkTS widget.| -## formInfo.ColorMode +## ColorMode Enumerates the color modes supported by the widget. @@ -74,7 +71,7 @@ Enumerates the color modes supported by the widget. | MODE_DARK | 0 | Dark mode. | | MODE_LIGHT | 1 | Light mode. | -## formInfo.FormStateInfo +## FormStateInfo Describes the widget state information. @@ -84,10 +81,10 @@ Describes the widget state information. | Name | Type | Readable | Writable | Description | | ----------- | -------- | -------- | -------------------- | ------------------------------------------------------------ | -| formState | [FormState](#forminfoformstate) | Yes | No | Widget state. | +| formState | [FormState](#formstate) | Yes | No | Widget state. | | want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes | No | Want text. | -## formInfo.FormState +## FormState Enumerates the widget states. @@ -101,7 +98,7 @@ Enumerates the widget states. | DEFAULT | 0 | Default state. | | READY | 1 | Ready state. | -## formInfo.FormParam +## FormParam Enumerates the widget parameters. @@ -110,7 +107,7 @@ Enumerates the widget parameters. | Name | Value | Description | | ----------- | ---- | ------------ | | IDENTITY_KEY | 'ohos.extra.param.key.form_identity' | Widget ID.
    **Atomic service API**: This API can be used in atomic services since API version 11.| -| DIMENSION_KEY | 'ohos.extra.param.key.form_dimension' | Widget dimension.
    **Atomic service API**: This API can be used in atomic services since API version 11.| +| DIMENSION_KEY | 'ohos.extra.param.key.form_dimension' | Widget dimension. For details, see [FormDimension](#formdimension).
    **Atomic service API**: This API can be used in atomic services since API version 11.| | NAME_KEY | 'ohos.extra.param.key.form_name' | Widget name.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | MODULE_NAME_KEY | 'ohos.extra.param.key.module_name' | Name of the module to which the widget belongs.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | WIDTH_KEY | 'ohos.extra.param.key.form_width' | Widget width.
    **Atomic service API**: This API can be used in atomic services since API version 11.| @@ -122,11 +119,11 @@ Enumerates the widget parameters. | PARAM_FORM_CUSTOMIZE_KEY10+ | 'ohos.extra.param.key.form_customize' | Custom data.
    **Atomic service API**: This API can be used in atomic services since API version 11.| | FORM_RENDERING_MODE_KEY11+ | 'ohos.extra.param.key.form_rendering_mode' | Widget rendering mode.
    **Atomic service API**: This API can be used in atomic services since API version 12.| | HOST_BG_INVERSE_COLOR_KEY12+ | 'ohos.extra.param.key.host_bg_inverse_color' | Inverse background color of the widget client.
    **Atomic service API**: This API can be used in atomic services since API version 12.| -| FORM_LOCATION_KEY12+ | 'ohos.extra.param.key.form_location' | Widget location.
    OTHER -1 (other locations)
    DESKTOP 0 (desktop)
    FORM_CENTER 1 (widget center of the desktop)
    FORM_MANAGER 2 (widget manager of the desktop)
    NEGATIVE_SCREEN 3 (minus-one screen)
    FORM_CENTER_NEGATIVE_SCREEN 4 (widget center of the minus-one screen)
    FORM_MANAGER_NEGATIVE_SCREEN 5 (widget manager of the minus-one screen)
    SCREEN_LOCK 6 (lock screen)
    AI_SUGGESTION 7 (Celia suggestions area) +| FORM_LOCATION_KEY12+ | 'ohos.extra.param.key.form_location' | Widget location.
    OTHER -1 (Other locations)
    DESKTOP 0 (Home screen)
    FORM_CENTER 1 (Widget center of the home screen)
    FORM_MANAGER 2 (Widget Manager of the home screen)
    NEGATIVE_SCREEN 3 (Minus-one screen)
    FORM_CENTER_NEGATIVE_SCREEN 4 (Widget center of the minus-one screen)
    FORM_MANAGER_NEGATIVE_SCREEN 5 (Widget Manager of the minus-one screen)
    SCREEN_LOCK 6 (Screen lock)
    AI_SUGGESTION 7 (Celia suggestions area)| | FORM_PERMISSION_NAME_KEY12+ | 'ohos.extra.param.key.permission_name' | Name of the permission.
    **Atomic service API**: This API can be used in atomic services since API version 12.| | FORM_PERMISSION_GRANTED_KEY12+ | 'ohos.extra.param.key.permission_granted' | Whether the permission is granted.
    **Atomic service API**: This API can be used in atomic services since API version 12.| -## formInfo.FormDimension +## FormDimension Enumerates the widget dimensions. @@ -144,7 +141,7 @@ Enumerates the widget dimensions. | DIMENSION_2_318+ | 8 | 2 x 3.
    **Atomic service API**: This API can be used for wearable devices in atomic services since API version 18.| | DIMENSION_3_318+ | 9 | 3 x 3.
    **Atomic service API**: This API can be used for wearable devices in atomic services since API version 18.| -## formInfo.FormShape12+ +## FormShape12+ Enumerates the widget shapes. @@ -155,7 +152,7 @@ Enumerates the widget shapes. | RECT | 1 | Rectangle.
    **Atomic service API**: This API can be used in atomic services since API version 12.| | CIRCLE | 2 | Circle.
    **Atomic service API**: This API can be used in atomic services since API version 12.| -## formInfo.FormInfoFilter +## FormInfoFilter Defines the widget information filter. Only the widget information that meets the filter is returned. @@ -169,7 +166,7 @@ Defines the widget information filter. Only the widget information that meets th -## formInfo.VisibilityType +## VisibilityType Enumerates the visibility types of the widget. @@ -184,7 +181,7 @@ Enumerates the visibility types of the widget. | FORM_INVISIBLE | 2 | The widget is invisible.| -## formInfo.LaunchReason10+ +## LaunchReason10+ Enumerates the reasons for creating a widget. @@ -197,16 +194,3 @@ Enumerates the reasons for creating a widget. | FORM_DEFAULT | 1 | The widget is created by default.| | FORM_SHARE | 2 | The widget is created for sharing.| -## formInfo.RenderingMode18+ - -Enumerates the rendering modes supported by the widget. - -**Atomic service API**: This API can be used in atomic services since API version 18. - -**System capability**: SystemCapability.Ability.Form - -| Name | Value | Description | -| ----------- | ---- | ------------ | -| AUTO_COLOR | 0 | Auto mode. | -| FULL_COLOR | 1 | Full-color mode. | -| SINGLE_COLOR | 2 | Single-color mode. | diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider-sys.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider-sys.md index 66bdc2d7d39..dbd685d3c46 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider-sys.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider-sys.md @@ -1,6 +1,6 @@ # @ohos.app.form.formProvider (formProvider) (System API) -The **FormProvider** module provides APIs related to the widget provider. You can use the APIs to update a widget, set the next refresh time for a widget, obtain widget information, and request a widget release. +The **formProvider** module provides APIs to obtain widget information, update widgets, set the update time, and request a widget release. > **NOTE** > diff --git a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider.md b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider.md index eae620569e7..640b4703d99 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-app-form-formProvider.md @@ -1,6 +1,6 @@ # @ohos.app.form.formProvider (formProvider) -The **FormProvider** module provides APIs related to the widget provider. You can use the APIs to update a widget, set the next refresh time for a widget, obtain widget information, and request a widget release. +The **formProvider** module provides APIs to obtain widget information, update widgets, and set the update time. > **NOTE** > @@ -297,7 +297,7 @@ Obtains the application's widget information that meets a filter criterion on th | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------- | -| filter | [formInfo.FormInfoFilter](js-apis-app-form-formInfo.md) | Yes| Filter criterion.| +| filter | [formInfo.FormInfoFilter](js-apis-app-form-formInfo.md#forminfofilter) | Yes| Filter criterion.| | callback | AsyncCallback<Array<[formInfo.FormInfo](js-apis-app-form-formInfo.md)>> | Yes| Callback used to return the information obtained.| **Error codes** @@ -348,7 +348,7 @@ Obtains the application's widget information on the device. This API uses a prom | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------- | -| filter | [formInfo.FormInfoFilter](js-apis-app-form-formInfo.md) | No| Filter criterion. By default, no value is passed, indicating that no filtering is performed.| +| filter | [formInfo.FormInfoFilter](js-apis-app-form-formInfo.md#forminfofilter) | No| Filter criterion. By default, no value is passed, indicating that no filtering is performed.| **Return value** @@ -387,3 +387,211 @@ try { console.error(`catch error, code: ${(error as BusinessError).code}, message: ${(error as BusinessError).message})`); } ``` + +## formProvider.openFormEditAbility18+ + +openFormEditAbility(abilityName: string, formId: string, isMainPage?: boolean): void + +Opens the widget editing page. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ |----|----------------------------------------------------| +| abilityName | string | Yes | Ability name on the editing page. | +| formId | string | Yes | Widget ID. | +| isMainPage | boolean | No | Whether the page is the main editing page. The value **true** (default) means that the page is the main editing page; the value **false** means the opposite.
    | + +**Error codes** + +For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Form Error Codes](errorcode-form.md). + +| Error Code ID | Error Message| +|----------| -------- | +| 801 | Capability not supported.function openFormEditAbility can not work correctly due to limited device capabilities. | +| 16500050 | IPC connection error. | +| 16500100 | Failed to obtain the configuration information. | +| 16501000 | An internal functional error occurred. | +| 16501003 | The form cannot be operated by the current application. | +| 16501007 | Form is not trust. | + +**Example** + +```ts +import { router } from '@kit.ArkUI'; + +const TAG: string = 'FormEditDemo-Page] -->'; + +@Entry +@Component +struct Page { + @State message: string = 'Hello World'; + + aboutToAppear(): void { + console.log(`${TAG} aboutToAppear.....`); + } + + build() { + RelativeContainer() { + Text(this.message) + .id('PageHelloWorld') + .fontSize(50) + .fontWeight(FontWeight.Bold) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Top }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + .onClick(() => { + console.log(`${TAG} onClick.....`); + formProvider.openFormEditAbility('ability://EntryFormEditAbility', '1386529921'); + }) + } + .height('100%') + .width('100%') + } +} +``` + +## formProvider.openFormManager18+ + +openFormManager(want: Want): void + +Opens the Widget Manager page. + +**Atomic service API**: This API can be used in atomic services since API version 18. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + +| Name | Type | Mandatory| Description | +|------| ------ | ---- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes | Parameter that must contain the following fields:
    **bundleName**: bundle name of widget.
    **abilityName**: ability name of the widget.
    **parameters**:
    - **ohos.extra.param.key.form_dimension**: [Widget dimension](js-apis-app-form-formInfo.md#formdimension).
    - **ohos.extra.param.key.form_name**: Widget name.
    - **ohos.extra.param.key.module_name**: module name of the widget.| + +**Error codes** + +For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Form Error Codes](errorcode-form.md). + +| Error Code ID| Error Message| +| -------- | -------- | +| 16500050 | IPC connection error. | +| 16500100 | Failed to obtain the configuration information. | +| 16501000 | An internal functional error occurred. | + +**Example** + +```ts +import { formProvider } from '@kit.FormKit'; +import { BusinessError } from '@kit.BasicServicesKit'; +import { Want } from '@kit.AbilityKit'; + +const want: Want = { + bundleName: 'com.example.formbutton', + abilityName: 'EntryFormAbility', + parameters: { + 'ohos.extra.param.key.form_dimension': 2, + 'ohos.extra.param.key.form_name': 'widget', + 'ohos.extra.param.key.module_name': 'entry' + }, +}; +try { + formProvider.openFormManager(want); +} catch (error) { + console.error(`catch error, code: ${(error as BusinessError).code}, message: ${(error as BusinessError).message})`); +} +``` + +## formProvider.getPublishedFormInfoById18+ + +getPublishedFormInfoById(formId: string): Promise<formInfo.FormInfo> + +Obtains the information of the widget that has been added to the home screen on the device. This API uses a promise to return the result. + +**Atomic service API**: This API can be used in atomic services since API version 18. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ |----| ------- | +| formId | string | Yes| Widget ID.| + +**Return value** + +| Type | Description | +|-------------------------------------------------------------------| ---------------------------------- | +| Promise<[formInfo.FormInfo](js-apis-app-form-formInfo.md#forminfo)> | Promise used to return the information obtained.| + +**Error codes** + +For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Form Error Codes](errorcode-form.md). + +| Error Code ID| Error Message| +| -------- | -------- | +| 16500050 | IPC connection error. | +| 16500100 | Failed to obtain the configuration information. | +| 16501000 | An internal functional error occurred. | + +**Example** + +```ts +import { formInfo, formProvider } from '@kit.FormKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +const formId: string = '388344236'; +try { + formProvider.getPublishedFormInfoById(formId).then((data: formInfo.FormInfo) => { + console.log(`formProvider getPublishedFormInfoById, data: ${JSON.stringify(data)}`); + }).catch((error: BusinessError) => { + console.error(`promise error, code: ${error.code}, message: ${error.message})`); + }); +} catch (error) { + console.error(`catch error, code: ${(error as BusinessError).code}, message: ${(error as BusinessError).message})`); +} +``` + +## formProvider.getPublishedFormInfos18+ + +getPublishedFormInfos(): Promise<Array<formInfo.FormInfo>> + +Obtains the information of all widgets that have been added to the home screen on the device. This API uses a promise to return the result. + +**Atomic service API**: This API can be used in atomic services since API version 18. + +**System capability**: SystemCapability.Ability.Form + +**Return value** + +| Type | Description | +| ------------ | ---------------------------------- | +| Promise<Array<[formInfo.FormInfo](js-apis-app-form-formInfo.md)>> | Promise used to return the information obtained.| + +**Error codes** + +For details about the error codes, see [Form Error Codes](errorcode-form.md). + +| Error Code ID| Error Message| +| -------- | -------- | +| 16500050 | IPC connection error. | +| 16500100 | Failed to obtain the configuration information. | +| 16501000 | An internal functional error occurred. | + +**Example** + +```ts +import { formInfo, formProvider } from '@kit.FormKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +try { + formProvider.getPublishedFormInfos().then((data: formInfo.FormInfo[]) => { + console.log(`formProvider getPublishedFormInfos, data: ${JSON.stringify(data)}`); + }).catch((error: BusinessError) => { + console.error(`promise error, code: ${error.code}, message: ${error.message})`); + }); +} catch (error) { + console.error(`catch error, code: ${(error as BusinessError).code}, message: ${(error as BusinessError).message})`); +} +``` diff --git a/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md b/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md index 26e0d7d4172..42b9f73cb05 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formEditExtensionContext.md @@ -14,7 +14,7 @@ You can use **FormEditExtensionContext** to access specific **FormEditExtensionA ```ts import { FormEditExtensionAbility } from '@kit.FormKit'; ``` -## FormEditExtensionAbility.startSecondPage +## FormEditExtensionContext.startSecondPage startSecondPage(want: Want): Promise<[AbilityResult](../apis-ability-kit/js-apis-inner-ability-abilityResult.md)> @@ -22,8 +22,6 @@ Starts the widget provider page to be edited. **Model restriction**: This API can be used only in the stage model. -**Atomic service API**: This API can be used in atomic services since API version 18. - **System capability**: SystemCapability.Ability.Form **Parameters** @@ -44,7 +42,6 @@ For details about the error codes, see [Form Error Codes](errorcode-form.md) and | ID| Error Message | | -------- | ------------------------------------------------------------ | | 202 | The application is not a system application. | -| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3.Parameter verification failed. | | 16500050 | An IPC connection error happened. | | 16501000 | An internal functional error occurred. | | 16500100 | Failed to obtain the configuration information. | diff --git a/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext-sys.md b/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext-sys.md index bc58f407466..ea0c20f379e 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext-sys.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext-sys.md @@ -1,6 +1,6 @@ # FormExtensionContext (System API) -The FormExtensionContext module, inherited from [ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md), provides the context environment for the [FormExtensionAbility](js-apis-app-form-formExtensionAbility.md). +The **FormExtensionContext** module, inherited from [ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md), provides the context environment for the [FormExtensionAbility](js-apis-app-form-formExtensionAbility.md). You can use the APIs of this module to start a FormExtensionAbility. diff --git a/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext.md b/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext.md index 30e95385c3e..0273c6351bc 100644 --- a/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext.md +++ b/en/application-dev/reference/apis-form-kit/js-apis-inner-application-formExtensionContext.md @@ -9,10 +9,18 @@ You can use the APIs of this module to start a FormExtensionAbility. > The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. > The APIs of this module can be used only in the stage model. +## Modules to Import + +```ts +import { FormExtensionAbility } from '@kit.FormKit'; +``` + ## FormExtensionContext -The FormExtensionContext module provides the context environment for the [FormExtensionAbility](js-apis-app-form-formExtensionAbility.md). +**FormExtensionContext** is the context of [FormExtensionAbility](js-apis-app-form-formExtensionAbility.md). **System capability**: SystemCapability.Ability.Form -**Atomic service API**: This API can be used in atomic services since API version 11. \ No newline at end of file +**Model restriction**: This API can be used only in the stage model. + +**Atomic service API**: This API can be used in atomic services since API version 11. -- Gitee