From c23ec217ab6608dc0a0ecfad870e9d5dc47b08c3 Mon Sep 17 00:00:00 2001 From: Annie_wang Date: Fri, 14 Oct 2022 16:49:34 +0800 Subject: [PATCH] update docs Signed-off-by: Annie_wang --- .../database/database-datashare-overview.md | 2 +- .../apis/js-apis-data-dataSharePredicates.md | 48 ++++----- en/readme/distributed-data-management.md | 95 ++++++++---------- ...stributed_data_management_architecture.png | Bin 0 -> 39945 bytes .../figures/en-us_image_0000001115748088.png | Bin 20125 -> 0 bytes 5 files changed, 66 insertions(+), 79 deletions(-) create mode 100644 en/readme/figures/Distributed_data_management_architecture.png delete mode 100644 en/readme/figures/en-us_image_0000001115748088.png diff --git a/en/application-dev/database/database-datashare-overview.md b/en/application-dev/database/database-datashare-overview.md index f603c4dd54..019adeb3fa 100644 --- a/en/application-dev/database/database-datashare-overview.md +++ b/en/application-dev/database/database-datashare-overview.md @@ -22,7 +22,7 @@ Before you get started, familiarize yourself with the following concepts: An application that accesses the data or services provided by a data provider. It is also called a client. -- Value bucket (**ValuesBucket**) +- **ValuesBucket** One or more data records stored in the form of key-value (KV) pairs. The keys are of the string type. The values can be of the number, string, Boolean, or Unit8Array type. diff --git a/en/application-dev/reference/apis/js-apis-data-dataSharePredicates.md b/en/application-dev/reference/apis/js-apis-data-dataSharePredicates.md index 2f54d7d7c4..4d2df994d9 100644 --- a/en/application-dev/reference/apis/js-apis-data-dataSharePredicates.md +++ b/en/application-dev/reference/apis/js-apis-data-dataSharePredicates.md @@ -2,6 +2,8 @@ You can use **DataSharePredicates** to specify conditions for [updating](js-apis-data-dataShare.md#update), [deleting](js-apis-data-dataShare.md#delete), and [querying](js-apis-data-dataShare.md#query) data when **DataShare** is used to manage data. +The APIs provided by **DataSharePredicates** correspond to the filter criteria of the database. Before using the APIs, you need to have basic database knowledge. + > **NOTE** > > 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. @@ -22,7 +24,7 @@ Provides methods for setting different **DataSharePredicates** objects. equalTo(field: string, value: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is equal to the specified value. +Sets a **DataSharePredicates** object to search for the data that is equal to the specified value. Currently, only the relational database (RDB) and key-value database (KVDB, schema) support this **DataSharePredicates** object. @@ -52,7 +54,7 @@ predicates.equalTo("NAME", "Rose") notEqualTo(field: string, value: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is not equal to the specified value. +Sets a **DataSharePredicates** object to search for the data that is not equal to the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -188,7 +190,7 @@ predicates.equalTo("NAME", "lisi") contains(field: string, value: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that contains the specified value. +Sets a **DataSharePredicates** object to search for the data that contains the specified value. Currently, only the RDB supports this **DataSharePredicates** object. @@ -218,7 +220,7 @@ predicates.contains("NAME", "os") beginsWith(field: string, value: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that begins with the specified value. +Sets a **DataSharePredicates** object to search for the data that begins with the specified value. Currently, only the RDB supports this **DataSharePredicates** object. @@ -248,7 +250,7 @@ predicates.beginsWith("NAME", "os") endsWith(field: string, value: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that ends with the specified value. +Sets a **DataSharePredicates** object to search for the data that ends with the specified value. Currently, only the RDB supports this **DataSharePredicates** object. @@ -278,7 +280,7 @@ predicates.endsWith("NAME", "os") isNull(field: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data whose value is null. +Sets a **DataSharePredicates** object to search for the data whose value is null. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -307,7 +309,7 @@ predicates.isNull("NAME") isNotNull(field: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data whose value is not null. +Sets a **DataSharePredicates** object to search for the data whose value is not null. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -336,7 +338,7 @@ predicates.isNotNull("NAME") like(field: string, value: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is similar to the specified value. +Sets a **DataSharePredicates** object to search for the data that matches the specified wildcard expression. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -347,7 +349,7 @@ Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** o | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ---------------------- | | field | string | Yes | Column name in the database table. | -| value | string | Yes | Value to match.| +| value | string | Yes | Wildcard expression to match.
In the expression, '%' represents zero, one, or more digits or characters, and '_' represents a single digit or character. It is case insensitive.| **Return value** @@ -366,7 +368,7 @@ predicates.like("NAME", "%os%") unlike(field: string, value: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is not not similar to the specified value. +Sets a **DataSharePredicates** object to search for the data that does not match the specified wildcard expression. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -377,7 +379,7 @@ Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** o | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ---------------------- | | field | string | Yes | Column name in the database table. | -| value | string | Yes | Value to match.| +| value | string | Yes | Wildcard expression to match.
In the expression, '%' represents zero, one, or more digits or characters, and '_' represents a single digit or character. It is case insensitive.| **Return value** @@ -396,7 +398,7 @@ predicates.unlike("NAME", "%os%") glob(field: string, value: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the specified string. +Sets a **DataSharePredicates** object to search for the data that matches the specified wildcard expression. Currently, only the RDB supports this **DataSharePredicates** object. @@ -407,7 +409,7 @@ Currently, only the RDB supports this **DataSharePredicates** object. | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ---------------------- | | field | string | Yes | Column name in the database table. | -| value | string | Yes | Value to match.| +| value | string | Yes | Wildcard expression to match.
In the expression, '*' represents zero, one, or more digits or characters, and '?' represents a single digit or character. It is case sensitive.| **Return value** @@ -426,7 +428,7 @@ predicates.glob("NAME", "?h*g") between(field: string, low: ValueType, high: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is within the specified range. +Sets a **DataSharePredicates** object to search for the data that is within the specified range, including the start and end values. Currently, only the RDB supports this **DataSharePredicates** object. @@ -457,7 +459,7 @@ predicates.between("AGE", 10, 50) notBetween(field: string, low: ValueType, high: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is out of the specified range. +Sets a **DataSharePredicates** object to search for the data that is out of the specified range, excluding the start and end values. Currently, only the RDB supports this **DataSharePredicates** object. @@ -488,7 +490,7 @@ predicates.notBetween("AGE", 10, 50) greaterThan(field: string, value: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is greater than the specified value. +Sets a **DataSharePredicates** object to search for the data that is greater than the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -518,7 +520,7 @@ predicates.greaterThan("AGE", 10) lessThan(field: string, value: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is less than the specified value. +Sets a **DataSharePredicates** object to search for the data that is less than the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -548,7 +550,7 @@ predicates.lessThan("AGE", 50) greaterThanOrEqualTo(field: string, value: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is greater than or equal to the specified value. +Sets a **DataSharePredicates** object to search for the data that is greater than or equal to the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -578,7 +580,7 @@ predicates.greaterThanOrEqualTo("AGE", 10) lessThanOrEqualTo(field: string, value: ValueType): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is less than or equal to the specified value. +Sets a **DataSharePredicates** object to search for the data that is less than or equal to the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -777,7 +779,7 @@ predicates.indexedBy("SALARY_INDEX") in(field: string, value: Array<ValueType>): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is within the specified value. +Sets a **DataSharePredicates** object to search for the data that is within the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -807,7 +809,7 @@ predicates.in("AGE", [18, 20]) notIn(field: string, value: Array<ValueType>): DataSharePredicates -Sets a **DataSharePredicates** object to match the data that is not in the specified value. +Sets a **DataSharePredicates** object to search for the data that is not in the specified value. Currently, only the RDB and KVDB (schema) support this **DataSharePredicates** object. @@ -837,7 +839,7 @@ predicates.notIn("NAME", ["Lisa", "Rose"]) prefixKey(prefix: string): DataSharePredicates -Sets a **DataSharePredicates** object to match the data with the specified key prefix. +Sets a **DataSharePredicates** object to search for the data with the specified key prefix. Currently, only the KVDB supports this **DataSharePredicates** object. @@ -866,7 +868,7 @@ predicates.prefixKey("NAME") inKeys(keys: Array<string>): DataSharePredicates -Sets a **DataSharePredicates** object to match the data whose keys are within the given range. +Sets a **DataSharePredicates** object to search for the data whose keys are within the given range. Currently, only the KVDB supports this **DataSharePredicates** object. diff --git a/en/readme/distributed-data-management.md b/en/readme/distributed-data-management.md index 052d68b738..ef0edbcf9a 100644 --- a/en/readme/distributed-data-management.md +++ b/en/readme/distributed-data-management.md @@ -1,99 +1,84 @@ -# Distributed Data Management +# Distributed Data Management -## Introduction -The Distributed Data Management subsystem can persistently store various structured data of a single device and also supports data synchronization and sharing across devices. In this regard, you can seamlessly integrate distributed application data among different devices, ensuring consistent user experience in the same application across these devices. +## Introduction -- Local data management +**Distributed Data Management Subsystem** - This module allows you to store and access structured data on a single device. It uses the SQLite engine to provide the relational database \(RDB\) and preferences database. With these databases, you can persistently store and access app data using different models. +The Distributed Data Management subsystem can persistently store various structured data of a single device and also supports data synchronization and sharing across devices. With the Distributed Data Management subsystem, application data can be seamlessly processed across different devices, ensuring consistent user experience for the same application across devices. -- Distributed data service +**Subsystem Architecture** - This service can synchronize data across devices, so that users can access consistent data on different devices. DDS isolates data based on a triplet of the account, app, and database. DDS synchronizes data between trusted devices to provide the cross-device data access capability. +**Figure 1** Architecture -## Architecture +![](figures/Distributed_data_management_architecture.png) -**Figure 1** Architecture of the Distributed Data Management subsystem +## Directory Structure - -![](figures/en-us_image_0000001115748088.png) - -## Directory Structure - -Level 1 and 2 directories of the distributed data management subsystem are as follows: +Level 1 and 2 directories of the distributed data management subsystem: ``` -distributeddatamgr/ # Distributed data management -├── appdatamgr # Local data management -└── distributeddatamgr # Distributed Data Service +distributeddatamgr/ # Distributed Data Management subsystem +├── data_object # Distributed data object +└── data_share # DataShare +└── datamgr_service # Data service +└── kv_store # Key-value (KV) store +└── preferences # Preferences +└── relational_store # Relational database (RDB) store third_party/ # Open-source software -├── flatbuffers # flatbuffers code +├── flatbuffers # FlatBuffers code └── sqlite # SQLite code ``` -## Usage - -### Local Data Management - -- Relational database \(RDB\) - - Some basic concepts are as follows: +## Module Description - - **RDB** +### Distributed Data Object - A database created on the basis of relational models. The RDB stores data in rows and columns. +The distributed data object management framework is an object-oriented in-memory data management framework. It provides APIs for basic data object management, such as creating, querying, deleting, modifying, and subscribing to in-memory objects. Moreover, it provides distributed capabilities to implement data object collaboration for the same application between multiple devices that form a Super Device. - - **Result set** +The **Distributed Data Object** module provides JS APIs to help you use distributed data objects like using local data objects. The distributed data objects support basic data types, such as number, string, and Boolean, as well as complex data types, such as array and nested basic types. - A set of query results used to access data. You can access the required data in a result set in flexible modes. +### DataShare - - **SQLite database** +The **DataShare** module allows an application to manage its own data and share data with other applications. Currently, data can be shared only between applications on the same device. - A lightweight RDB in compliance with the atomicity, consistency, isolation, and durability \(ACID\) properties. It is an open-source database. +### DDS +The Distributed Data Service (DDS) implements distributed database collaboration across devices for applications. The DDS isolates data based on a triplet of the account, application, and database. The DDS synchronizes data between trusted devices to provide users with consistent data access experience on different devices. -- Preferences database +### Preferences - Some basic concepts are as follows: +The **Preferences** module allows quick access to data in KV pairs and storage of a small amount of data for local applications. The data is stored in local files and loaded in memory, which allows faster access and higher processing efficiency. Preferences provide non-relational data storage and are not suitable for storing a large amount of data. - - **Key-value database** +1. The **Preferences** module provides APIs for **preferences** operations. +2. You can use **getPreferences()** to load the content of a specified file to a **Preferences** instance. Each file has only one **Preferences** instance. The system stores the instance data in memory through a static container until the app removes the instance from the memory or deletes the file. +3. After obtaining a **Preferences** instance, the app can call the APIs in **Preferences** to read data from or write data to the **Preferences** instance, and call **flush()** to save the instance data to a file. - A database that stores data in key-value pairs. The **key** indicates keyword, and **value** indicates the corresponding value. +### RDB Store - - **Non-relational database** +The RDB manages data based on relational models. The OpenHarmony RDB module provides a complete mechanism for managing local databases based on the underlying SQLite. - A database not in compliance with the atomicity, consistency, isolation, and durability \(ACID\) database management properties of relational data transactions. Instead, the data in a non-relational database is independent and scalable. +With the SQLite as the persistence engine, the RDB module supports all SQLite features, including transactions, indexes, views, triggers, foreign keys, parameterized queries, prepared SQL statements, and more. - - **Preference** **data** - A type of data that is frequently accessed and used. +## Repositories Involved +Distributed Data Management Subsystem -### Distributed Data Service +[distributeddatamgr\_data_object](https://gitee.com/openharmony/distributeddatamgr_data_object) -DDS provides apps with the capability to store data in the databases of different devices. It uses the KV data model. +[distributeddatamgr\_data_share](https://gitee.com/openharmony/distributeddatamgr_data_share) -- **KV data model** +[distributeddatamgr\_preferences](https://gitee.com/openharmony/distributeddatamgr_preferences) - KV is short for key-value. The KV database is a type of NoSQL database. Data in this type of database is organized, indexed, and stored in the form of key-value pairs. +[distributeddatamgr\_relational_store](https://gitee.com/openharmony/distributeddatamgr_relational_store) - The KV data model is suitable for storing service data that does not involve too many data or service relationships. It provides better read and write performance than the SQL database. The KV data model is widely used in distributed scenarios because it handles conflict more easily in database version compatibility and data synchronization. The distributed database is based on the KV data model and provides KV-based access interfaces. - - -## Repositories Involved - -Distributed Data Management subsystem - -[distributeddatamgr\_appdatamgr](https://gitee.com/openharmony/distributeddatamgr_appdatamgr) - -[distributeddatamgr\_distributeddatamgr](https://gitee.com/openharmony/distributeddatamgr_datamgr) +[distributeddatamgr\_kv_store](https://gitee.com/openharmony/distributeddatamgr_kv_store) [third\_party\_sqlite](https://gitee.com/openharmony/third_party_sqlite) [third\_party\_flatbuffers](https://gitee.com/openharmony/third_party_flatbuffers) - diff --git a/en/readme/figures/Distributed_data_management_architecture.png b/en/readme/figures/Distributed_data_management_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c551c9fd35cbfdfce4b9f1936a29f537fdde8d GIT binary patch literal 39945 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 Ng{P~Z%Q~loCICU;n<@YR literal 0 HcmV?d00001 diff --git a/en/readme/figures/en-us_image_0000001115748088.png b/en/readme/figures/en-us_image_0000001115748088.png deleted file mode 100644 index 450e1fd449945553559a9b9e45b0967d7c629f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20125 zcmdqJ3pCs5_b=RwUX1GXH?&o>HLYG;N=I7Pw6xVui>j)7P}C(t(I6pGT6Bg=P1U7B zs#?@7MMPaf%McZWCWJ)LDyc+7C7}}GeCf>m=J#LgUFV$jp7Wlw-tSs%SCi-aT=ui~ z^L+N+pPgT?T3agqu=j^GYt|@Ux_Iu|nlIcFmd!jKZSl2H^klw=X({ty#0RW#!LWa&VFNnl;w?m(HEN9tq)-qF%!} zZX>=QCa)}i*$(}XW$m(aW64W@&BtuvgR31=))@g54^UiWm{D+9eKm4|qJvL`-H%DlP85&`E+bQw;~REq2# z7)EawQkA1sEv3T{VTl?O_TTkDK^4MHuGNt3->Qm{| ze$%@$z3@KhTJHB@0+lK={~GA(7TEV@>%IJT?O1vC?6$~WZP)&GH*XX32|D}NjNBCH7p9k`Qgv+iM#0N(<7xFeG9C@4-Wa&@&bve+ z6@^4fb#o`D!vr}6mS!OZqh8+^%i>J#qT!a?GOpCPMok7eJEtfP`PU5DZWeD8W|X`a>UM{tk-OEOldAdP>Xo<|@+2QiV5K-)<=WK*$>zZtN#cAA@Ctupj+QC5dW-Sa5d*Q=@VuZ2Ozd zfv(Dn&t5oaG8Ey$7))}j+3v z{;aUR_!<4_msB`wFEgd7#8qYSc04cEIBZA{de6c24jVgPMr96C-RjdSNYmo7V&o{W zKjJqO-`<8Zf0)BKLN0UpbrsuXX2*1>?^Y*~o3MNYc}*6;oW<6!_0K+kfXc%T+&b_} zH|LgUVGHy)U}s zLx@S#c$oqIM?Bngn?D8mq*mytEN-vp(TPC5M&;ak*xTQkLpPeCq?fFV^BCtoIsD8e~cPsqLDYPWgD*MT5>FG3Jy z-}f-U&u(?og-Z9F7AyCA*SpPBoVlW&R?%gi5`RR&UWxAC()^Sozb(z@V>a<5zLJUQyLOCc( zmFDhARPdSnKn(ew9RhC1kbMc(o2IIrZ*ctu06KNgsxHlR}kn@U_1=onh#|C{7csGS>TBvWX2(mzWiknAy7B)aRyNzIh`$1BQa?;Zi*& zk}{Vu`jnqJW`!uvn3Ie?{RH>N=g;k{#Le#Y_H&UA@pc=Ysx~Ftx(l5Szu2KG8xq8;i*nA<=^>nx)C9f*!jMq;nV&Olxq-P zcQN^3rOv)6FHr|8{x<3OyAb;-$HJ{F6THHFyUB!h`TPeEQD}`b=|`Fx#&GB6T15<< zx;<5j3`z>SKiidVMc+< zDW&(gAV->uO$0SebdQw2?Si*D+LzaYG7pM*Ch4e=lH#Cqz)`Fgv7l9)^hf_9!7Sne zv-S4pLcZwnZCjSdUlWyWg~1z5PyNWerfi6d{_!CrmP0}?%n+(O14B1qyr`-zblxCu z8*9PSCF6WFL@IX_qTW_6zV)yo2yGI~Nr0jK845p@(MuQ#1t{$n=LkHoIZ>R(C%p7< zVQEAQGps6^F6i>=l|uefQi`u_@Ymf=MYfs>y*^6Oi}%3_{4{Y}mO;3SS&5pAQLjKk zW(8{(y5+cVxBqah|D<@cJ-_k1dx$GhJIRB)gU)P4M_JP}G1XgTU-!P)BE;OHSN22D z1G&0^yni?o-SEy2&NAV<&^(k>gTvmA>deiz~rcC$F0Ez#0YN{cIv6=XhmP z8N+2W4Xn@&Iua6H-C(NIY3M|7bSr=nS@G!LT%i+-SgDO0o+oNg_Qm)%#hV?;%}4r z0<81^9<(QeNFUSld^u-n+L7fxeeo+6*_p}_pAOjk3u#~Qg!$m}R<1sbchE%G9^#>@ z@$Sj9UrakrYtr)t$*KC>0+MOGSMp^R^At2ew;i!os?zAJ)ukF)jIto z<{3N^rjGrAokwE-anT_wd%QhwSnQZnil$SVe}=K*RTSF7-*pLnl*$9EW;)H)5X0RM z`Ob;wy#*=zeB`o-4LT;NV;;6xS%uCYhKD6zHe}~g2xagS3S(N0ypX~zgA)TxuhAiz zCX3Iz#wQU6jETgcZWP3;TbG=^y~8AmKgV=0yKES`xG#*adksR>1`fr%28ePyXuNt$ z6r7=&?_kDreklK0{M4_@FkgqYsya1{HNscq_d*0CqnI1(zk-HLk%wQD@4Rx|Ui<*K zlI-nO8AE)3N*Je1+rhrit7rxIz+Hv*;KrTr*#<=6lip#5yuH16_xHvw&Cb$#`$gb1 zDK9Qov-sbHj#jbP|14&k`jW?|n+l9hzQC~xXyayvTIvU9s+oM1esAi+X^Cj?LC)isd}-S1lIoS#o79+UF{8xE9Q=X`&Aw?- z-AeE$v~^x)X1R(O1;+Sg_Ma^aCPkuw{B2h-rlC#W!DfGygq~mTWDz(vSm=tuw+`Lpk{GU^EzA+vD_f&ls=fJRhrzH z{X>)m9R{(*(<9l|jhuNvZ1Y;nR<#^vjSVJx`tvjzmOcg`d#^%kn^Pkp0@2rOYisp- zTe$QyvuR;2s*tQ^TrDkkd}ut~h?dj|NP!ZGAc`##kKl`;hzXgndL(S{4$p0#-&my- zMp19PiJWixrdv4QI2v41Ts)nMf4+;bmwKy+sfvj`%*rfIJK> zQmJ>LRHXK_*_^T&l8xROX(=qE=E?^Zvp%7=;hqMOI6_R*CSdy#+c=D^FzO(C=Z+nN z>Iqw6xJF*=WxT)8jI@SE@oc$@h7J<|Rz1y;hpWumf8DNgHx{1$tq`%e3a3Kq=K zV?DmXd9-{!I_K*|YOByQ9+dJj7y1*S0z-!1Q{hiSo7xed_U?a6o8O@9`Z|nswOeRa zHNt4Fyj=<(!e(PL9I4x+$9ROb+}9W*x=%Jz{sZjptr1Ube*S}hjEg}ec{DpKB}E-l zpu#gxk>RJOdM>clh7Nh5gFiNI5lSGN*8TMEnest|>F!{a=`Y@?5PZgY#?_cFwu0O; zT0)qOlR)CDj<=C6O?5d){;eRyua5tEu=4`fyb{*(=@E>3AW0^nE!S z^7eJuZK||l54rh~?-JdL#tm}=Jf@JF?k$KKgDz&iY@&Z0dNFeTYGPg0#U?n3A^q(j zt9Jd<6IZ+9P_`_@)tU&i*f8qS+~RGWP{s+bYN&%G(0zVigv$0^&O5zdF}h!omLi8Y zDiKer>63}wTD$8NFA!ehoKT{5eGq16-K{smwxv0-D2NsM&sl%bjytZk(Fskj2Ujcd zb}Bv9df?=7Q;95ZFFG65F@W1}7)2+_C-AY6)-K#@iFHSzEuJvt07GGys&n#e^aKQy66E1k_j~_L z$F%e>q@Z#@2JKx?#_z)4!}g>8ZFHBpZGBtM|8wlx#3 zNfYT%6<^*9#V+lyf&rs2(b+*?a_uAY1Me>AF4+V6uqDFJ5xtA-Kg41samU?!>(?> zNibI*`qBTDtfdq=c@moc=Un49cwN0=b;N4TC_-_6Y~|cHa|gnpysOsxpJTl|&svk_b|X=` zv~VZC7G93o&Y>^ad_=;Wc(c4?ZFp$ntAyW~>9w!X!yzxaO*qxKAKNna7;}Dt_xscC zt$B~24n=As7d-kA>6-sIzsD;4JTu}&rS+<@V)=J>-(HXrt^S@BKf

$glXdC*Aml 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 -- GitLab