From 106e786f69751cec6ad0440838f4f9f1bebd6ce7 Mon Sep 17 00:00:00 2001 From: liulinna Date: Wed, 16 Mar 2022 17:24:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E6=94=AF=E4=B8=8Bis?= =?UTF-8?q?sues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guduhanyan --- README_ZH.md | 233 ++++++++++++++++---------- figures/subsystem_architecture.png | Bin 33325 -> 0 bytes figures/subsystem_architecture_zh.png | Bin 26515 -> 14699 bytes framework/innerkits/BUILD.gn | 17 +- interfaces/kits/BUILD.gn | 2 +- services/test/BUILD.gn | 9 +- 6 files changed, 153 insertions(+), 108 deletions(-) delete mode 100644 figures/subsystem_architecture.png diff --git a/README_ZH.md b/README_ZH.md index 739fe5c..2f11cbe 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -1,21 +1,17 @@ -# 剪贴板组件 +# 剪贴板服务 -- [简介](#section11660541593) -- [目录](#section161941989596) -- [说明](#section38521239153117) - - [js接口说明](#section11908203714422) - - [js接口使用说明](#section9938411124317) +## 简介 -- [相关仓](#section1371113476307) +剪贴板服务作为杂散子系统的功能组件,提供管理系统剪贴板的能力,为系统复制、粘贴功能提供支持。系统剪切板支持包文本、超本文、URIs等内容操作。 -## 简介 - -剪贴板组件提供管理系统剪贴板的能力。 - -**图 1** 子系统架构图 +**图 1** 子系统架构图 ![](figures/subsystem_architecture_zh.png "子系统架构图") -## 目录 +​ 剪贴板服务,提供支撑应用开发者方便、高效的使用剪贴板相关业务的功能。其主要组件包括剪贴板管理客户端(PasteBoardManager)和剪贴板服务(SystemPasteBoardSA)。剪贴板管理客户端负责剪贴板接口管理,提供剪贴板北向JS API给应用;在应用框架侧创建剪贴板数据、请求剪贴板SA执行剪贴板的新建、删除、查询、转换文本、配置等。剪贴板服务负责剪贴板事件管理,管理剪贴板SA的生命周期(启动、销毁、多用户等);检查应用权限;执行应用请求,通知剪贴板数据管理及剪贴板持久化管理执行任务,并将结果返回给剪贴板管理客户端;剪贴板数据管理,负责执行系统剪贴板数据任。 + + + +## 目录 ``` /base/miscservices/time @@ -33,13 +29,11 @@ └──README_zh.md # 使用说明 ``` -## 说明 +## 说明 -### js接口说明 +### 接口说明 -**表 1** js组件PasteBoard开放的主要方法 - - +**表 1** PasteBoard开放的主要方法 @@ -47,47 +41,47 @@ - - - - - - - - - - - - - - - - - @@ -97,9 +91,7 @@ -**表 2** js组件SystemPasteboard开放的主要方法 - - +**表 2** SystemPasteboard开放的主要方法

接口名

function createHtmlData(htmlText: string): PasteData;

+

createHtmlData(htmlText: string): PasteData;

为 PasteData#MIMETYPE_TEXT_HTML 创建一个 PasteData 对象/p> +

为HTML类型的数据创建一个MIMETYPE_TEXT_HTML类型的PasteData 对象

function createWantData(want: Want): PasteData;

+

createWantData(want: Want): PasteData;

为 PasteData#MIMETYPE_TEXT_WANT 创建一个 PasteData 对象

+

为want类型的数据创建一个MIMETYPE_TEXT_WANT类型的PasteData对象

function createPlainTextData(text: string): PasteData

+

createPlainTextData(text: string): PasteData

为 PasteData##MIMETYPE_TEXT_PLAIN 创建一个 PasteData 对象

+

为纯文本类型的数据创建一个MIMETYPE_TEXT_PLAIN类型的PasteData 对象

function createUriData(uri: string): PasteData;

+

createUriData(uri: string): PasteData;

为 PasteData###MIMETYPE_TEXT_URI 创建一个 PasteData 对象

+

为URI类型的数据创建一个MIMETYPE_TEXT_URI类型的PasteData 对象

function createHtmlTextRecord(htmlText: string): PasteDataRecord;

+

createHtmlTextRecord(htmlText: string): PasteDataRecord;

为 PasteData#MIMETYPE_TEXT_HTML 创建一个 Record 对象

+

为超文本类型的数据创建一个RecordMIMETYPE_TEXT_HTML类型的PasteDataRecord对象

function createWantRecord(want: Want): PasteDataRecord;

+

createWantRecord(want: Want): PasteDataRecord;

为 PasteData#MIMETYPE_TEXT_WANT 创建一个 Record 对象

+

为want类型的数据创建一个MIMETYPE_TEXT_WANT类型的PasteDataRecord对象

function createPlainTextRecord(text: string): PasteDataRecord;

+

createPlainTextRecord(text: string): PasteDataRecord;

为 PasteData#MIMETYPE_TEXT_PLAIN 创建一个 Record 对象

+

为纯文本类型的数据创建一个MIMETYPE_TEXT_PLAIN类型的PasteDataRecord对象

function createUriRecord(uri: string): PasteDataRecord;

+

createUriRecord(uri: string): PasteDataRecord;

为 PasteData#MIMETYPE_TEXT_URI 创建一个 Record 对象

+

为URI类型的数据创建一个MIMETYPE_TEXT_URI类型的PasteDataRecord对象

function getSystemPasteboard(): SystemPasteboard

+

getSystemPasteboard(): SystemPasteboard

获取系统剪贴板

@@ -107,52 +99,52 @@ - - - - - - - - - - - - @@ -162,9 +154,7 @@ -**表 3** js组件PasteData开放的主要方法 - - +**表 3** PasteData开放的主要方法

接口名

function on(type:'update', callback: () => void): void;

+

on(type:'update', callback: () => void): void;

粘贴板内容更改时调用的回调

+

打开粘贴板内容更改时调用的回调

function off(type: 'update', callback?: () => void): void

+

off(type: 'update', callback?: () => void): void

粘贴板内容更改时调用的回调

+

关闭粘贴板内容更改时调用的回调

function clear(callback: AsyncCallback): void

+

clear(callback: AsyncCallback): void

清除剪贴板

function clear(): Promise;

+

clear(): Promise;

清除剪贴板

function getPasteData(callback: AsyncCallback<PasteData>): void

+

getPasteData(callback: AsyncCallback<PasteData>): void

获取系统剪贴板数据对象

function getPasteData():Promise<PasteData>

+

getPasteData():Promise<PasteData>

获取系统剪贴板数据对象

function hasPasteData(callback: AsyncCallback<boolean>:void;

+

hasPasteData(callback: AsyncCallback<boolean>:void;

检查粘贴板中是否有内容

function hasPasteData(): Promise<boolean>

+

hasPasteData(): Promise<boolean>

检查粘贴板中是否有内容

function setPasteData(data: PasteData, callback: AsyncCallback<void>:void;

+

setPasteData(data: PasteData, callback: AsyncCallback<void>:void;

将 PasteData 写入粘贴板

function setPasteData(data: PasteData): Promise<void>

+

setPasteData(data: PasteData): Promise<void>

将 PasteData 写入粘贴板

@@ -172,82 +162,82 @@ - - - - - - - - - - - - - - - - @@ -257,9 +247,7 @@ -**表 4** js组件PasteDataRecord开放的主要方法 - - +**表 4** PasteDataRecord开放的主要方法

接口名

function addHtmlRecord(htmlText: string): void;

+

addHtmlRecord(htmlText: string): void;

将 HTML 文本记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_HTML。

function addWantRecord(want: Want): void;

+

addWantRecord(want: Want): void;

将需要记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_WANT

function addRecord(record: PasteDataRecord): void;

+

addRecord(record: PasteDataRecord): void;

将 PasteRecord 添加到粘贴数据对象并更新数据属性中的 MIME 类型

function addTextRecord(text: string): void;;

+

addTextRecord(text: string): void;;

将纯文本记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_PLAIN

function addUriRecord(uri: string): void;

+

addUriRecord(uri: string): void;

将 URI 记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_URI

function getMimeTypes(): Array<string>

+

getMimeTypes(): Array<string>

粘贴板上所有内容的 MIME 类型

function getPrimaryHtml(): string;

+

getPrimaryHtml(): string;

PasteData 对象中主要记录的 HTML 文本

function getPrimaryWant(): Want;

+

getPrimaryWant(): Want;

PasteData 对象中的主记录的want

function getPrimaryMimeType(): string;

+

getPrimaryMimeType(): string;

PasteData 对象中主记录的 MIME 类型。

function getPrimaryUri(): string;

+

getPrimaryUri(): string;

PasteData 对象中主记录的 URI

function getProperty(): PasteDataProperty;

+

getProperty(): PasteDataProperty;

获取剪贴板数据对象的属性

function getRecordAt(index: number): PasteDataRecord;

+

getRecordAt(index: number): PasteDataRecord;

基于指定索引的记录

function getRecordCount(): number;

+

getRecordCount(): number;

PasteData 对象中的记录数

function hasMimeType(mimeType: string): boolean;

+

hasMimeType(mimeType: string): boolean;

检查 DataProperty 中是否存在指定的 MIME 类型的数据

function removeRecordAt(index: number): boolean;

+

removeRecordAt(index: number): boolean;

根据指定索引删除记录

function replaceRecordAt(index: number, record: PasteDataRecord): boolean;

+

replaceRecordAt(index: number, record: PasteDataRecord): boolean;

用新记录替换指定记录

@@ -267,12 +255,12 @@ - - @@ -282,9 +270,7 @@ -**表 5** PasteDataProperty组件参数说明 - - +**表 5** PasteDataProperty参数说明

接口名

function convertToText(callback: AsyncCallback<string>): void;

+

convertToText(callback: AsyncCallback<string>): void;

将 PasteData 转换为文本内容的内容

function convertToText(): Promise<void>

+

convertToText(): Promise<void>

将 PasteData 转换为文本内容的内容

@@ -332,36 +318,99 @@

名称

-### js接口使用说明 +### 使用说明 剪贴板模块使用示例: ``` // 导入模块 import pasteboard from '@ohos.pasteboard' - +//文本拷贝 console.log('Get SystemPasteboard') var systemPasteboard = pasteboard.getSystemPasteboard() - -var Text = 'Hello World !' - -console.log('createUriRecord = ' + Text) -var pasteDataRecord = pasteboard.createPlainTextData(Text) - -console.log('Check text of pasteDataRecord = ' + pasteDataRecord.plainText) - -console.log('Clears the pasteboard') systemPasteboard.clear() - -console.log('Check text of pasteDataRecord = ""') + +var textData = 'Hello World!' +console.log('createPlainTextData = ' + textData) +var pasteData = pasteboard.createPlainTextData(textData) + +console.log('Writes PasteData to the pasteboard') +systemPasteboard.setPasteData(pasteData) + +console.log('Checks there is content in the pasteboard') +assert.equal(systemPasteboard.hasPasteData(), true) + +console.log('Checks the number of records') +pasteData = systemPasteboard.getPasteData() +assert.equal(pasteData.getRecordCount(), 1) + +console.log('Checks the pasteboard content') +assert.equal(pasteData.getPrimaryText(), textData) + +console.log('Checks there is a MIMETYPE_TEXT_PLAIN MIME type of data') +assert.equal(pasteData.hasMimeType(MIMETYPE_TEXT_PLAIN), true) +assert.equal(pasteData.getPrimaryMimeType(), MIMETYPE_TEXT_PLAIN) + +//剪贴板变化监听 +console.log('Off the content changes') +var systemPasteboard = pasteboard.getSystemPasteboard() +systemPasteboard.off(contentChanges) +systemPasteboard.clear() + +var textData = 'Hello World!' +console.log('createUriData = ' + textData) +var pasteData = pasteboard.createUriData(textData) + +console.log('Writes PasteData to the pasteboard') +systemPasteboard.setPasteData(pasteData) + +console.log('Checks there is content in the pasteboard') +assert.equal(systemPasteboard.hasPasteData(), true) + +console.log('Checks the number of records') +pasteData = systemPasteboard.getPasteData() +assert.equal(pasteData.getRecordCount(), 1) + +console.log('On the content changes') +systemPasteboard.on(contentChanges) + +console.log('Removes the Record') +assert.equal(pasteData.removeRecordAt(0), true) + +console.log('Writes PasteData to the pasteboard') +systemPasteboard.setPasteData(pasteData) + +console.log('Checks the number of records') +pasteData = systemPasteboard.getPasteData() +assert.equal(pasteData.getRecordCount(), 0) + +console.log('Checks there is no content in the pasteboard') +assert.equal(systemPasteboard.hasPasteData(), false) + +var textDataNew = 'Hello World!-New' +console.log('createUriData = ' + textDataNew) +var pasteData = pasteboard.createUriData(textDataNew) + +console.log('Writes PasteData to the pasteboard') +systemPasteboard.setPasteData(pasteData) + +console.log('Checks there is content in the pasteboard') +assert.equal(systemPasteboard.hasPasteData(), true) + +console.log('Checks the number of records') +pasteData = systemPasteboard.getPasteData() +assert.equal(pasteData.getRecordCount(), 1) + +console.log('Checks the pasteboard content') +assert.equal(pasteData.getRecordAt(0).plainText, textDataNew) ``` -## 相关仓 +## 相关仓 **Misc软件服务子系统** -[miscservices\_paste](https://gitee.com/openharmony/miscservices_pasteboard/tree/master/) +[miscservices\_paste](https://gitee.com/openharmony/miscservices_pasteboard) diff --git a/figures/subsystem_architecture.png b/figures/subsystem_architecture.png deleted file mode 100644 index 162c9939aa9856cf256a4925c9f523c4b4bc4b74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33325 zcmeFZbyStnx;MH+Q9%Kf6p>I;x;v!1JB39zEV@-frIeKJ?(P)&5Xf_gi=wKXysjgmwXKz*iMauxowKz8p@EZ$Aq3(ynHOymp;3k6a|^>%Loj;L zwcsS}@O@?NenM)bpG8>F}Kzid^%hy>UBq8=_fYA=F9Oy}4qUzuCZ@8ypg}pT@l~`}}KbXsqI^ zGy4ZKnny;cp-_pXdZ()%8W z*i?Hwza+d8Z#mI%b(U*gcYf#iIC3F^ zJGjp(q2{RWfcB6#53g+}#?xIp<#2DR>bBuD*Kp5%C%-j7{Ln(-lsewZZab4JRyRsz z;r7?5t#)$`Zmr{o0~5cUT3_@v`Ywk7sj+E?EjLuwXY>~`vA5bb;#Gd}zTMGLP)F?KB;My+0&N1aNe!)8cBOPpbpe_J zWRa(3vGqewK3BS*rr2S)dDh)#Y2C+?6zK^^VVNqRaIs~bljlWl@BbL|wU2UCGpYhf z_PH6Ex6QpLHmKan+e1GyUoh1}5h6npL^q(1UoI&Ym@%eT4vmp{az8Ag z6GUdmkQAWP&3Rn7z)Pa+mYMclPn;qn#582s_BVY-EUW|BBhUMV#Jj36dH*nFfk5UF zO^Lj8af?L~NRU`DM%J4_Tz?ir%K%F|29vBTm?f7%LQ@D{L+JWIW%e(OQxLLl|#KX+tmgYej~9}-4|V3eR-?9%7^XplSN#) zZT<4Q3T!^1sVpseJRDTo!w77pDlrqAdPl-i87w7>U%xH?V92sbSMb+us*IJH;x<1u zsKTy^!ny6Vys>0YNx$?|?akcaQQcLkafg;=O&E@U2=ZZis+7g@%%jG;-!=mCM7*W1 zcntsP0M%AkuXD$!&cJT`$u8$fU96b%?qu6f?;!nyUYytDn@Zc!^~)BRDXP9JMs0Ly zl~@WhX5BCCnw4gHXV%AxQ_cH#>;7cr31O^l5<0{rnC*UTWPt6X*o=v$k1*L3d|my9 z8q1Pf5`#oMvdmL{7Lbj#%cE>y2#eu(<49!|V28a$Gh9(d-N2=d?j#sm19OY)TvJpXS3pe1{H4^Kz(PO&2$;B2Nf5 zS^f-gC#IOl4_kHW_D`4-{>*K~*iasoQzZ3!fVXAy)>3N*5``y zio1EX!5%$NiGI;kUAA_!ePwfZ=&`)fJUhkw;EOW<8)>+^>4UURNGUr}Ay3UMkt)ti zx>{u$O&+tC%olT=wGRY@3qLX^7|^`CXM*(0-RDg4d!XyM9dS`Moukd0(Mzf^9ivXvyLaxY6>@qPr8|t{SnC|C>07{l8VP1 zJs36{TsL6XefZ@PCy7=D!iuPe=JoWC`&$~PR40UI=lEuQPSXp{P0Xm&08 z&nCa&?{#lh7CxcrDeZ7b;UND$;Vc!_pGHldffy++fqc73Qj+qT>s=%=ElTMTPDjN^ z9wu|js2pm>Zif>CMrpX+D(2@7(nT@;3rm#=6B9`nD%s(&bQt>j>;SsrbJ^H4sqF~^ z;z`Q~%D*Yzkg7458}24TjU?;`V2KlW)o*8oWd;uCym{NdpmsDsTe$+4o*VOFMHDTJ zDyutIg<562l4La;P#h_Y7W5WWW-YHKp_w~96k(Ywx-l%$FV0`4L z{IjQnR%BI8UFf5*@yKa^4a{P?Y}3L|9FkYs)5+rJZ+n<9pPkjCQdX^$Dmv3#+*U=h{zV8Tvwl?!`=(C>rZhB~AkQZMaQ z*s-=@Dxd)6KVm3m3E3>oqoLZ8(QIz_3JzbztBllL9i7&8%$ITpb`;y*Gzz z(*r?~A`~V|F2uay)H&N<+|Cahrg89$IN2Y@h2WEq>83VpAUssDrlqV! z3cs}WPgCO)9r?vWj7`e|VV-UXb$R%-^V5j9FYHgF*XOUf9c^#xLsizd5%+(|yvL%G z}Lo|f2@xh73WM(Z6-dN@puKA7W(a?uOm6U{s zF%7ux50_+3J*bFP*dffET1az~;VGyLue~q%&Ni;hbbMZPW5inp#=YdZR?LnQ!E|X4xyO1iJmh;a z%*$UySO?k7AGddTiHVavvnD8y7WOJqA$aoS%jox1x$G(yDjMJNYKp{_PdaGt>e%#* zUHUN|F>F~A{s?1jFICJ}AW7%?A$axU6{iV4Sx}AqhgS&6i#JVyKE%q{BQT{8ObC*K zPb&r4H^MqX-zz-*Du|br8+D_cLd1@#&r7BCgZfP#SvLO4bV|mf82K_QXoK&lW#EoZ zFtS{^4K9OKoQ3l541uu@sV|0~-^v+?aA%$LQVNSA`jcNn!c3pJWmUc1u#b&K=D9d( zq1{ z=vwp5>Vtl1zJ# zjzS--eZNPeN#QDBx8Tgc5Z$u%k@(YNesZHk-Q_X1<|OKZN35X^46o~pj_7DxmR1QH z0)N&Apo_NUrXH6OKF|96?)p&|&#Mz>b4ePF6MXy?7mu?bC-bLbHwWntT}Ai9iSPT$ zqSs54H+PFo$Rvp_Wc)ZQic;375&roQi{*2~Jd*}x__uYZ7f0EX^HSb3?*p(%-@MS} zRth^&El$9EWjOjaQr$238S6L2HNng$^BPX;FOZXcrHYxY1p^x2iYlWbuy(r)6R6tn z)2G-PlJow`^)U%e^C}va|K(tZ(z>GeNPjX+a@VT+n;bUty?al29r#+uRjQDF7@~Vf zqtr9L9Budi_`O;+RsF$3;Y?TI?n2u$&BAB=`)_4$a}j8IiP^@9(d7q)DNt(>`t&z- z2@r{jI%eOI#Ajh(J*lM*P^G)sP)@_+rp$Qykw+>_)J40UWohI-=i;S|)M^?vvd)xO zx>))1*$fp@CZw}WrV@RDekVwqQLLP*N5(U@xyx-CvFq0#zlo%r zQq94gM|<AZp7B7^MK ztK^x7u6Ws`yrZrfTGmdN7NO@!J9T0VB=k9~FjqxQq~ zh3N;HjlG2l-i+^FOK#*{$_#y8B$Zv1$UW^C~?@BVusQ%X^pM8gLN3TtG)Ov#&w z{qL`xzQ<>HAn?r#d)R-PqR#1_hvYAUi#LyYUcC7Enr|bCN5l|wTi69A+xi<{RE{`4 z?!oFi{jCkk^I+S;@ztjSdD`I-#mR50><*rxOV`mhe_cpZ9&)lcnUcYI`+L=$6(hQE zU_LPpg+b0t(?v9PD|8AO4gq;bIAmFc<$aQWOAfh#auPncm_P&=FS4O0#Tp%rD*{(Dv5EC+Pn9F0Z zZ8ELPp+skYMadxk@dDws6!)#qvv^$ld5&CF(k^n0hipW{Uj4*p9gpK}pFc_W9}jhA zjsM6mrHyzIRUOYI+mgJQ933~6FRA&{DQ->vkh|?&> z`%6~QA!9h<=fIT8x!gm&ukUOm>%!D=W= zp=o966VmQSnLK=P31tsV$Z+N#2+@k>G)c_#YZMQu_2p8Z z|NKykK-YUQ1>s6qb$oquq(HW5zdI?Dcrjk^ll!^9#sk-5QWZ)1Tg3c`#rN-|D?dOW z_k2tQ1Z2eo1pdi|00t!1{Rg*b3m;yqjzTM1HmZZH%@^4?sxRNz#4-IpB$Z;S+tXDY zJ&9%_rl1M>WY*La+?xH_za$?u{}bWay~Wkl)b%$cH?$O`U;fNj6721A@6O)i&-k$xlcZHdAJm$FG>mi z?4z;YuvO{XVmAFQ@?uaF4I;Qg^Kdj@*s0Laex6V4D56Xoh-~PVH{4}Z|=tB06)W^7~9!dbI{T{Iy%xgGSXPt z8qw0Tv$NCEG0-wFP=g-SFlS3UT_grk9+i|~n z1D+H9bA1-pQd0jK-V*i?DFAuUI_X-|($mnSb(lDFf09kno>keO7>rGz(rtW zVqtyv77+G->Se z4SaqMeJiMmKF8gUtcHyG^lS!<)VgfUtkg_wYI~2-F&AS zwkAL;b7`;SM8 zCKd(?cDitR(z7tqF|#w#GchnQvazzz|3@cf16vr-Mfj-nbTkZ1cTeC4!vVGfM5_ze zR4~9@JJ=0}fUSY9ot3Skm6bX78~CCK;cwn4I3d^HV-Yohfga9qo&Sf{D;U`P{q3(2 zn48=^A|$+1Tn=66-$`J)4hDav0N(ri2x_crX=DH_{2way&vujl&2cd>vO*aQSoNqG z_2}8DnV6x>)Oz~#`qWTndVLls9TPh%qv72){xv$x%FxbH*Vf>@5!fl%4N#%G-4K%h zLzoo*xxb^a0bEja4D{4=?9_A&iVO@KOza$V3~y-vu~}NUP5*PZT(tj-Jh<*U{F@U1 z@BM89&IR}?+J8B#f5;0i!vBMxf1Jbr!5P5N|1-&dOTPajuKy9&e@g=YtDl z|CR*)Tb=($yZ&Dj7xI6kI|h~j0Xc$XW-%9g4J1Mj^&~_DA-C{9iFFyFpascVR1F4! zp#FmYy%$c2`U*5YvJ;aMdbEOsfJ%>m_Oteu!)p&- z9VD=(zaPG-C1o`=wGLhQuU;%z4`-&Qi8rwE;AIOCjK?kT};+*0i*{wp3Z452qdwpDh^g`L;ZjUomzzRw9W55D=TY<548_^a~t`G54T(SBFA#@ znJRsp2bIvwSo zd9~`Z5jD{^?Jw!e(_&-xj4MxGL$GfuU*9Io*EPAORMqQLVj`Ki;<((8pkKa7c1Gta4IK6*1~O{~^;k zG$io$voGwf+dP)d#Ls5b*R^4FE8Hk(7kR?GxY}k_85w>j7*}eqIh_7A8o!uJp^@Wt zLSK-XN)vt@#f@TnP=aE@tjFfSwMXDnTxmkML3xehA*W?ywTL~}jmCK1HUVD>yp567 zfYN@7!*w z36$Bj{7>AQ1kZlI0+s-Q;6{^a9XDdvS7$=oWk##6I>Q+(CTo>;cXwWu$>``X8ezhF zMMKHC?5kBh+#hmIuQ~XM)J;8jx;;04?f2l3sfXLA69Tr>rq2&cCqv8iMjl#Blxv8{ zxY39e|E$I2N>0F{jm<~Z-etZ1!%*@>@z2a@^q*x_9(wq=NrfBu+Y?$Zw}$K%a{MRj z)}V2`R!T=lCdUt(+q`Sc#_ClB&zw+RV!e}*K|9`>YTt07u1YpB9yedX#EV#7yaO?bn9I5!$0GRyWB__gxMa2r-n4{EB){?FOS3Wtgpcb7RW){IO}X zYHRt4n(|(k?5lICTel-6)8hH5Uj_823Z0hOd*6F`a&&WY@Xyq`y559Z}Bi zifqVYTrRWnj1=a^o6dAES8h#EBN4lI?K-T^;>0I&e!7|7y^WAY+&9qNnsaP>z>(4L z`1}M}W&ewZxLAD3wV$+EN6toDf%8pWH3j{RBQ7Ra|Cy3l$SPT?u?PRRla+MSeXsax zdF7MWa^=4dL7LB*QCqG;-IgdBDUcsOHcW4yQdP-kk z?~U!P5t|K-@-KPfRb*dM0u!Lrx0p+LE^uj0*uPz67vDS{Wm9bTXXv|blC;$ig=9sy zlM>P$*Y;kwJW=(u>qn?c*W$XA;UmhE$ube#PidT)wMGZK$|5|A$)pU@szOrtZItrT zYEJNMRM!;$IERnZY*Y|^)~Bw^6(Q>h^}B2^)v?S5yXe$A7+v3IpZwt|dum@bcBVu| zY8ngLH|uFm#Y0GCWQHjz=Z2<@@Q3QB6@j?qOx1(@S?yy#AoF(@Jki0hC6kVbZ@d2L8tx4l384K=}}AKKPN^71m<*)p48 zZj<#ARzxrcR@qh*^CFJie@;+r5UAc#rOKRewy9|5xvKHor2XLyy|jF31z>CjxiUka z)|P-DK3cepDVslMb9QktZaTCH+|_p3v@3F}IT>6RX<_E&c`x)RN4>GQxT0&YwLnfm zlZo~7qa#JhVK%sJwpt}$pau^DWh;Aoo0uQQ-uvqOgQE^y4{y~^Kek-Qz>rrqY$Amb z(T4N6MeNG1qP1_9hH$wOGajO?XLVQTzynKsB;#_-((15s9R~BaNCy^t@(GF1wyT_4H6Nuje z#AQ1=sI#ef6T$e=3E$c!;h;VX|yJ)}nH zLsH?hu$mP|khPggT{uA9%{C0+vVx+2K9?Np`9c*q>A;f! z3uzS$%t5y6*ka;v3%cpy5-+k5LtWT+R3I1_Ku_RwlT{e94e&TWb-Gm#DVUrYK8VTFH zP9nl2;^dt{`m zs>wR;L}dar6CENXG%^9q`8L}HDb?NEpVUv8S6%vOTqbccxPN8G&>2?#*~{H= z#dtA3r;BHJJf=b5-!ZjN#5nlkH3H1w{GQ);4HZgbcPQWei&NRJJ0X9fgYYgDu|ipe zj5TxPC<$s^>}6fU2l{w;Ge9gf-cP(&{8MUDsW78y>478Ww%o)>4u_^OC zO6>-H&wHF~a~+lmhDQ#}gb7~(C4aJ*zPYk&-!@+V<dn6q=R;ptM z7tPw2Cyoaj_aTXxX2wZTVax2DbMAu9K7N79Bu3jr$@yEsn;bW*bDPukzZ^QweoR(M zA8i;@HCX@A0A7@R=Y=WSN6?#jr$`R9%Z+1hXaBTah>V%3v0$LRNADote$IKT)ukfq z=Kj@gaPUYrncU&=XzSQ?#~<~&zU#K4ocg}#_SFMcPx=T>*Bj;nC^e~-0r36KC8U(V zju3;_+aI;HYL3dU@6OgMQzinW)$4I_hy%x9a8v*gi%$Vfw$2>SW`9%H#sO#^F0e`v z-YKanQCaTn@sN7Hbl?8y*BXbC+pMZ`-II-kL)72E&1cSkY&((A`I!_Fs&O>hS@jKv zAX7@?3Fgc2L?3^ZvCGOkwVTQGsQF>r3-F;uQG_;&`T;oAqw1}x8uQWG8A+m#*Ks_; z(Cn<$Jsv&p?A6rO%Esz8MGokkAuz%Li*kzOjKG2DqaC}~BpBjAGe!oWWTh@UoV>TV z0~NuxCqnN0=F zVe=oQ1ZE{NB6%Qmfg#{dQOnH?zuh+)Sdh4RWLTLynwH3v3%MHr$F1F828W9JOhCFK zHps|mL{8fv3(|`X-rcRd9F;C+24knsr|b;ImEyT98Lj$ox3k^N27FTBq!EmPf+|y) z2z%)`TxtDyL`jQg8|m_dC=YAP$srs+9z%DXJ$JP)H75Mj!rn?)@HUfEh$3SeEeMtAkpb2B~ZFiw44UHow=P?*K}CkZwfio zkJi5n`x9u{9-_#u$gEIT$MASfL0hv?;J^*o4cxN=|Dzt>om29teKVTXiumX|}QQaBobF4Glz|b0iA8*A}Fj9O-l`J^CoGUnF{5XSZPmxv;4M zv>aA%nezO_E0~-v%Q-wYe~W#Qwj6Gi{mV3z_%*MM_<4=P*5-&UwG&T%t9B-pHk(!g z-mN4!e{l~+fu^??9d*|Y*^4!MWhQ1x@H6`nu}&9M@Hw*PP1~b)0I7h3#oyjFqjH_+ zDfwd%jdRNhpk)RC7jQU)^-GF*^zf)sLZf^~neP_Ax}d8r8UrhJnUyg>Tp2*l^~JPX zWpmAuF!Yf}ocE3K;pxGP94Xl1&Ajz3$fQdREvf-*V6C2Hgbb50Q)ehE$#A+Zgn~VH zib^nfeDCc$52f-z$9xr;3K#pyIJpq;{>;?vNj{xCJs%ZEOvipA&6w@B=p877DD0Q$ z46r*?-Dk6JLL1g}Gq<_)Do15x`uY#OpB`&P=tM?}xU}UD07-1}3=3YkaKr6^)V-#~ z;be)Kf=YDbl_MJ-`sEVFYaRt7vjlDkDpH^gjuD5RF+p_@%UjEE@R6E4*kjGung_Xm z^;W(o^QUNly5Z@m?$u9@_J`ViL2>8eqMGR`?b0}>YTcyN&L(n8q!qUd<|UlECt^z# z=2LkoWIU|9!N3be4WP$*5bhX+V*ipF8N@bZ!_T?;?BafmwS>(8F!R7r8=K-yXE%+k zxn>B!E;)_|7xT}rj}8bDSn9`j8VZ#Npq01%CMmHt$7`GBGlmuG67j>kY%+O$`;IU`PO7~1P8ckHfS628wn zCpx-!`|R{kXy}5;esejGsD)q2b~hDRiBAwJ2u*K+89ART3FYY-3R0}}EUPD=FD;s? zC9k%V;ap~(#}a29WE_kh-qiC!psW*InMNvtM8J6CR21W+5bdU3kk z$N0VeE#t8>(;G|h3GpW@(D_j+4l+x461`NPyS?MWal(Gx?p{|0HS$QItp~|-yA0}% z&H5Yr8-Mh?#pD{GrvSp`%ABOKA3f@GyG-NoOfvCQQA+E}Y$wPnGgsW_TQO`{?JuY` zq*w_DJ~~~>T{4_E z+zhM;o*r1Qv-w$M`&9x_bk3DcscHiq@qPLv4@R{FA`b>Ti8#rcH13q<-kaGQwvmJs z_e;Qf2tQFccF$Lf*)5dn8H+FC$y07Db9_>;Wg}NHjaCu}iHy`)XWB0SS>E?~KEM3b z!`1GPR`cqlq5`6(kHQjF6U!;!LCOm|=2ah-&h`a9RN_56_bY6cis)Y0p>KkJJ z1}RXl2JI*(8Ofw5d3Wb54WQq`SVPSM|G0uM1joDD@$sm6U&a`T%md&`>^Wu`=)pAo z_)CT~c11^M4amz{+el16ib~RU8{}By4@d{~oK0v?VI-hXNR(p)DyqSNfIY%fAIa9? zo1!g^tS$Ym%3~+$CHHmAlu`+t&C1#hSAL86!N7sR*S516-$K8dYMMnDZ?^+Z0oDt= z_5BI$qjr)`)r3`Ror|d~ajiJRT8GQ6vKWl#>0plr2AtC3n%sqgG6}-rUBZRf9|5T1 zhoAYilDbP15#6K}iSiVR)Y_6cm7~c9qS)XrH^G?tY*y$Jmx_e8dg}QfB>Qsj`w&Y> z@q^f@K{GRXRoT4k3~TO4tZ2ZM={PzIwK@h?ud7y{Ap*wkj<*SXsS#Giu91~91X4bX z=RDdA=UX?c&z#0>aF+Q>|xRKabyYUTBclt5J!X^J&yP@KfiAqe+>>`dyDOW{q^=sOm6B{pP z|E@%f>{$*)_go7tfV)|$ttT~tEK6fn>+7nd6a2W3;JT$XJB=VNp-ujdq^;vEGRz&J&wP6ldPiX@Wy71in{~eSjgu zTpGne_#&F(< zagDQVPS4p*>xEgI*PJ)2zBKVKI5Y>)CBQWwkw$ zhCaPNTtY83ZqgJ}(t=6kviKcuW3N@1^7J6-Lc@T072ZZucQQXgpBO7^Xt24AyIu4a zP_ewk`#It&*d4>zwGk}S+vfcrn+Sn(pG%%M5i}mck%X76d?yj7(M;4nVC^Gjb8>U{ zS`0Q8GcuqFp{;uIZ5K?}E3b0kxy)~Q?=XFec|Ii>Fw@H7s`*5?cPdg87IhT_H_=fUH5rs zr`awMU4ghzp>Um51TLq=r?#%}yL%jnQe{?F`2+4HF08$P+r;HE_M$RW2=z2(jB$f^ zlzTa%eLY++nVoH}?k<^BXZ-x*J&4zzhyN4rCrey@0c ztN>Sbq^Vgu@Me83BXU+;Eeo*5W?F1^>+@;OFhdg$w`LSf8Hi;$c%3fYAk*WA$J^~0 z+MK{_HkZ${%Y zXS5pqEW~7{XE)s%5(X@AFTB^)*#p0RqlEa>iC{8=1DDFh8lR4>d-VcwRUbRHtjx%# zJ?FoFL&aBaY`h6k+&g;V)OL71{g zK7<&}F9Cy~c16lDjSYxCz*Q0}Nj)zI#0kTtouaAw$dN3-Qm@lJ_W>tG;-3t1s}IwW zKO!UYj=~;*W|y3RVcs{e5-jy=7VArl$8kFEa_DgA)NU3;2WgjO6jfvC44OO=x4!?=mg!O@MQupR)COJ7tZ<72WD zaWx-p)oSJQn&8Y|%1V*s@C|Tz02}rL$_dcG*#V{5qZ0!QFuUxt+LmeoekeTA0EFf{ zkUhf5+l9pu)U9Pqd}X&q4LH*awgo5Az#DKf=1TB#v%cen7Kh7UI6q@M|E5QDuJp z8&H)2mshU#Ic4tPPT*aU)?n7+VRifESV$@&ZQV*ggQ{}$RzD`VG)XM`4FEit5}qOZ z7-U!6OicJ4jKg&$WcUy3t>Lta%YvDoJr4~Bg$|4imBG?~YEqt!;>~u1!_2mu3>mly zv9IjAbNIS`dd!%Zb7fycUBM~yTqY}G(|F`8Wz_e>SvD&jUvs~Dn<5(>6vI%kMd1Rp?Xlbq1F+NkEhf zS>BtIFdI$p0x=$VP!M)9drwPmbhPxALY7(2kU$1!eA?c=yfUFJfhELhJVj}M5@Wes zW11uv5>Zbl0Iq1(^TJ`6V39H9Snn9#C5@g5!mr92wV$;uvdRIPe0i1rcV^DM&43t` z8>C5q|8L^}$?VH}12kaWfE|Uyz`rD^X{B;4 zF;yMWaPwfIik3tyj`O;D_V^obj%j$_>~Rw?Y{q!JoR=~|Bc7zKCI?4?b+NV5fPQLv zPV@9%wE!6?z_d7kA2mg+JtSipQ!j8imNNpZnpRE-g>_A3ZrVP$fkQ#d#_ftI;*kPy zI{P5QHjb-Y2YyF(Y+BV!$}_uu4Q_oDK!OlW=Mj*aZR6vLe3J_EK7t4qwZ}L<^d|X#l>u}q6_%ED0dFiW6mkKXp_Q= zfFcQ0Jci%Q^#pgRBk#0oAHZOE?>_R3m(;*7>aH)2f28>*Ft8f1y5Q;cbS9s;mt&q_ z)z9^bjdrgi3HRr`yx9f^Znv;lfxJE^049Bv7r@;9{9&-GGC1~}Yc0pk;}H!-y&C-^ zd(Zj$Yy@6#;T8VB5DY7!@c%&J8S-nbv(4m-;~j;y;b$k}N!az-o*oez+&w}POdxTG zTLHL=0vB?^@%WA=@~Yp1cHK3e%hV@QPdRYfQED}izVGYS$pXXz@ZsSKt( z6&`ZO*)4}cLE!2(aqOj3>4g6l&2miNJ1BL90GL|!yh~ts=KWls#xCW});-|De1^vTnuu$bK4(Kq%iz{@)(QmJpX2QGqp(Ttq^ z8VBOgte>969^Tx$P2ih4_k6x*vma&5K3T=e^R&9EN{l8pqn`$*P=0}mLjwrJfT`3D z853aO(p2y{ruAr0e2N&C;5nU2K?J3ta2TM<6v6$_Yi<|*6atj7W^62&FTCqKmMyq2 zSIF=Omj`*h&GeKZ$^avMN{)A_?X7xxw=LE-11PczfGH8V78lF?@f>4+b|xhThBB)1 zC&{nZ<=YGsH4&Y8V{%m&WIkyK_Pu8~Yz2MVW5`mll*k>%lz>tCd zacb4yHWIz&cHjrd$oii*_i7RgD_wKH^;jru#lrx$90tfe&>$@hJFJ>R>c-uLg3=YR zKKJflnt@zAmK{E>aYs_&`n)cDq!75%s=aDf-@@Z|XjW~vJTDgfTe>n$EUB$S&=w5P zdXJh!d~H1qNFONyRRA#9;sbDt3u(;j4DH$I(5#YA2kcN-?SWLv)H*o6 zd{_RfP569XvQArZ99p>}X0vjutL9pD>NH}26&Nnf3O11!!~sPV;G?cVZa4bQ*zsW8 zgL}M$(+GeHAc3MOZR0kOY04kG63&71IkN{EQW4Y1W{ce4xrJ(P9rB+S<#Iw z%d~cWUsqtbK!@P%v%3-j%LaI00(tZF%+%IM>R2F_fb07x0E*e+RZkG>m@4xF7b8p& zz$gJ47vutz)L%e*e%nv}(gy()xwiMA$XZy)JKIX4Lt_?-AYmbX*=l4c$SZ~k{=XD( z0zFBEaGq9eVyX-&f6?+QQeI_xABR=?&vJYGXPTwWSd0}R0;F@MlzB{DF)VLdJKsapf6f#cq9OpNsS$KG z!B|FPQMSt*rDS*T#Lr-=gq7kXi=wPN3YS@+OWRc;gvt5Jc!#=MWgrVyJ=Xr~9-`&P zzJ$GIFw7Urg4iWOQ2Zr)I-p^$HEAj~7|D_ogvT{+7w7Y}%Pwn?Oe_0L>*5-2>yLndV-0=F4iuKcVTuJ^h2;XIs1I@RuL^R7BNnttTe6kccgj3X9v$`q-K9 z*A5(1FcE3P7c8kNn0H)%eNhae|F_Wg;L+l-+2OQr3By+Ngs5!rA^3G+dV3tE1aFPe zEPJcJE7LN;z=m6SINLXPE>ZCG17xN(ep)>cgZCxGU}1E9atO*r&>U65+j!Uyv3w zAZ}}kTwkKuRn8U2@QRt*V#;5#wTx$^8-qO%o2Y)Uj+>E!$Ax*9>35WrlrhC{g>Roa zcwnI%BWb8m!t+JN^NeJVIME09hu+9qpW^}_gj%pdrPstUH|qYq#(C$pIkv|kH!BGq zBWHB$tE;3{g_p*Y(M)md?&-ZNM$!ob^EU!vp>=_bPr)>hiZ5OKx`6pYMtYiu`LruP zY@-!hTk&@GzTMTh4R`;w$G-~5*mknW^jTtFf6|@pUN1GMJ((+r*y?>24*?U1m;CS}m%T0$W4*Z(xfJbQY5c|mCgi}>{E z^O4PfNGZ^2xU03*$Ve?zv$(j}DlnV5y=p#xS0kVP=?Y;*e{H?~(Jo`ejQisnM^`jimxwE&3=C;lCF4ygd}Hang6Gvpr9Z*C572)mJ9VAJhpHy z>st*ap9vl3ANq|O;oWE#n}0Rza}NS_jo*pY@|0IrRw#&x1vfS}%J`GC#KgXK8@6XX zadUUaeDx|PEDQsc7U$pv z!UucogJ##DBf`s`T})|kH>~+|r5q6vk+7qjD_eJWcWzmJtKN^8n3xu7@J@aT1Tx&; ztAsY4W`>Oz_*DMXk{g4GLDZw}DmI^$FtGvQA)<9U1R^dar6eru`=?^UJilZg>oQ6yol2>GAKz&g~62(YDGxM3o#`nv3n4{r7|;AndH^f6G>GxNT%iO&2?v2 z*HFFtr73lZBav2#A&QbHs6;VID%=*2dV#JzI9V||s?I{>_UY!RP2Aajf061Q->V9n zC1G#~DEM6C8wVys=@bkM@|UN3Yai}G`a}2^O4}0@-+O#a=jGN)5$4UUnVd^Ao6{N! zLUT0T(J)ie*6!u~b$=|5Vf`?47?$HoLz?sjO(Z{BxZI>w89{hUj{>opdXlY78HdGr{Qxhz#RHCxxOrwmFa?RNcP92!?y_+S~;b~}Tq9b3Ts#a_VfiXZvz zSD8!dN}sUUUmSDePJ4c_Ew0E)aTMu^zl`O_M>UZr3`=eP#1H(ymy)|u=^k#3peL_# zSmm`NC-g>vm2J+sdR05_B&jhbD9!fPlI|SlJi#_7|H+;MUrqnCKvIXfyrNy$sD+yf z@6Gk26}Lhq^yU`D${g7x{FenfWi<*41g`u-kG|p7_WdAw|L!-f@i5EXyAfq(G&01? z3(tJOG0gXWu;?7mEwjo~8eOG2KR(ETeY%X!*Q!ZJT0qA*>KAo(a{1j*&@gn2@2U5V zR9JF(`>)TgK4^mbyU@1@>mLT*zvgw|M?6OiAx4uylX{#$*r4r!i_KErbXjBfCj=-Y zCI;TGC`2&5*D4;ej;nndRx51?aTK*7V$jp!npcA(JN1^E10^D%C+zfkZ>YWQ7W#re z3Dg5G&EezY9~>RYUY_i%?CiKJoFr5*${6|cj(B<9Amd;V#*C1PN#&d0$uaLo7jloF zkjTbjg$~8q=R9O&)Zsr+GN#=hf7+NZY3uis%grbCysLaUU>5;!`Pu{ri~(_TDB7vY zk6_@S*=^)g$CO)--bE1ta7o^u^Ep!PLtFkj-w#yG*DTc$G-~C7C2KrmiPzy;6bj3~ z+Lsp=l48-yP5<~y1Q@{Go7t#xPxN{2)#b&I-s8spop2Z)&>=o@yRzi_LY;j*D(^j# zfa=m@WzTnW$8j<{5%?hbfOs|3E=14)rn@-|#DGS1m=9iZmgl%u;B#Db$N^XeE@f0# zS%46|`6GdopVTVUAlSK9Rf{PJxcvO-bE*Esi@>KyrglwH1vHvro;seuxNWPa!GK^T zTR?r-58+~+@09%+S|{bdh}~gMZ+0;>#B6%hvN=^?756cp2mtXeb-g^t*JfXpplv*z zQFr-4RbhYk@9%f9YLT|rcqGPC{&x!zE5>6I6T$w+Y7)89{vBaj6hpaDeVyuhBVQ7q z$2!BO`u;=%c}Gj2!hAAWsh}=@sXgeGkO4S=;&fF#Nj&BK*S%5S&TZmx+L~2MaTU8b(VACdfUibsidr|%wo{e zaMKsedejK_KOkNo?fTkD1^mnu5eXb9Txbc{AcHTHj8sOUNu&mYjy&=GWvQBlA|_mg z`&X~Jc(1en==S&YNZIO2Ec|s?8t89HIkb4_^^#pqH!LK1=AN-nOb!3>bTu38HVUs` z40ePQ4-id1iJD+-tJ)9HCw&3H+`GM6?DY!)Te--!LK~ZgA))y%>JEbP{dSWKVaVmIFs^fUuRd;-M}` zNO^K~_yiCjE|()C^|)Y8fr zJ6P|AH*_ZF;WrU?-+(~s%!-N(#i?GW+CE?R_{7Ad879$^->EW+LZJPVlB15IQQNbt zNI8P0Gm3a=$IepyF*P)Ni0Q&;MoOe97SndgDY>zkacc>QH3E7~Xx|^}(M8HT+Ft?5 zywDg9x`I{>%+whs%FaGj;Fngn1Z6|=xUf;7k_ zjw2txoxOd{c`Y7>-7Jx68Xi@)Ij_~Q^*9p(D;wfP&GJxK z?teAq@rV4;=`Tw6T|5$XM*8+44IzBw_Xl_k?|mXt_R8mAZ{u@>wuXvI0?^D(U@cOu zDdlnQD<`jKALh2!t8c)3qW&t%sO1Gh2}vV{vakQlMn&z9xm1?i$6j>+Y|>O9+C(6l zmiAII%<=`bLmrxQ+Fz_!jH_BV2hfjeeB@p9XFSX-rtrHiH!Cxj_}rNr++0;-O-MZZ z>EBGvg##7j;EIG_jI0k&T<yLYL0`GCuq`jOKBoM@C`T5#=%s9F z?zY93Pk!=B!btrfE7^hq@+gDxV1q<3lt8&okFpio5ACOFavYYz?o_!V+WYN*nh1-U zMVZ5}H%rqR?2UY=phP}^VX0!({?f~fTVkY>ph|Zk8RK@RY@!wq6Rg=np(o7e zlOri9CB)~$D`$p06>Kw|jW&V-3Y$!)P`2yKr;x!Vc@9cBYImI*YJw`ny3%1t z{?rJI91Bh)4fJ0`eB%;r_g({l9fj!$_U#X9@!H>-tQ#`R*MR~RV}yKoiJZPjYAdm_ zvH^Bp4@{0sC*WIr%#PoM?A@OECfD+(pPt#>!0;Dj1%H(rH$&aCpi0Oc^7GlgGbeao zFEllMibFwzC!oK$5(hs*1?^~4erwg#b5Bf>%ntj13hW6uyCj8PZ(U1Eo2ALaPeD@O z$M_rsXd_(GlfXPPm>tl7i?D_&^zTZGLm_i;_b^bN8X2=G0Lz>Dokc5)vp9&<1{0CO zpT{l^6Ep@F+&arZo?|tt6F|LRw%?GTmGQhD&kOzhMD75C_#Y$(^@cLkhu3G%=`|mz zQeQr|co-MW5nyKH>3tj84i$b8<8NN-<5-|c-d^-=u+n*Dvu(w-`p!LAl>=cOkdu1E z2Ng`3pRL8mS>6bVm+B~~HY0RK?R@6TcU#Qb+8AF>3bxHWur*wmyeX>u)(0*h)#_(2 zXvIX-YmUBf0fqi+e4*=uh;=sqKgUi`wSfe8#?@!JSY`@aOgSKS1zc7LCV*i?U&gnd z7pOPhDHW9liswcPr94BosV=c9h%YTOE2y?aoK|Qb{N{CSNAp%uWO{HR3L>*x;w(RymvYR#xBKGnccMf16*;Nu2YD{A8U;eOIk0`ttzOs%EcvNOI8-OvHlYz%zlEG5) zS@5ySw`y%2!DQ%On{~t~@2UBpraZ0L&_8SK@+{cf_3g437+-Al7VnYFZ*91PNEIl5 zm|X3UDC51TZ_L{feEUhs@j>P4H0IF2%x|&vS)Sex3rl164*a>281NZoD&7YbsFmi*XhSQ;TB>xp_u;Jkz2M?+_mf!p5U~D1kCX1l%o& zH(S{z@A&?|iLk1#$7Oz!o91OT+Q1LlNp4 z&Z$FRZa35uGa+y@Gs2~N*2Tip%Rh?g1iKX#zDP~YWP!LznLq?V^3vOwF1=uGUSy@7MY;0_SZ{Dzy9X&kIS|A6A z32LPS1h8qLuGr;6)^{C;)3ID@KWWylx=VCkbTOYU2hOWye^CU|6uUldpjtD zOfI6b$i9$EF795WxZPg8+ks2e{H3}Z-T z?U;Zpagg1jq<%pgg}nB!bH)DyhPMTEpRh|!(7~epB`KsK7AM5_R{5eUczzq+t*_1= zHu`^{W&aH;0)7`ea)c{CDl5l#(+nAAI&I+=7t&jBhj6)){=L5@U% zpS%^Fzgfj%X@KD2(wD6;E%nJ$VXWB)xWbsj6U!FIi@~XCNVRcaKG@6FseDH)Ek!?> zJ74OFZom%>O^c6&D0d}|jKsJg56Hfs=DTnDFKoE4dy22e2Dw-vL-6-%mX$R;PI{nB zV<9fC&uu+RvQpeZ^Dwra`LyX8{1aa-^X&Jr^(P!&7UO@%N}|=Z8gm@v53f0^E4R_M z7C#8p4tR9+1S67uMiAO*9-H6QqO%-n;VKE&(K79uwiT;Lnklp@jK<*&F9l71hUPspWvC5!Y0Ja-=2{X}7=e>Ozz zyQgj+DVy}&%U2Bz4c?)bTs3=2wYW7PGg0M7@RHux3C-5nBJWdG!Ctu&z&QISCbW>N`qr<9 zX&GGHo8OT^`9hF2D(&EOaxZ~5_4MQ4#oU0OU8^fYl`kPZ^x~ntkMX_rMees2k~N~} zvLC(`E)kneABufis=nZyG4$oxyj?%hVIY(EB;Zb|Yk43O^}?aXc=;{4Dow1H^^mBhzy0eznh8($s69h&HHy>XR#iaU4zX1$Uklvoo~9pQ=YgF<~N}Z_%V_ z9;e5j5{-=upX{M+Il0=$EG^MaS{mhjhjK!3{>cPq#WyWp*^j+hJapk)+?;Jym7c-B zDqlR;<+<~bF{5Tm-EXgiUxSca&r4&nYi0)_k^Xy2MSyI1k zMRmq!*~onJ%(nUNcmMpca1|L$Ce46(&eMX?beF8GI*Rs>9Qh1ioJh#`|C*41-Y+DK z+gY^2Gp#3#LoO`JxNiP4V{MHD47@!chuklIBR*X^%DOmnH2WZpDtc&BWqs1_rrqgl z<}5t#m)6!wiy>b%4Q4S{zq~hILlarS{KYiIdA3`V@N4qd z(`RI4Q(wfl8eVsn=rdlV!+r*vU#Uwz>BO2=Vr^pjkv%?+?;d^H?_;wa)70)!GhyHy zkXhX(?XMdj@l40ROh(q!Xz2H>;9KEF;WFYWeh-?-q1>(D#>5YgthS$E3?TUvme?ok zZsv@)xnbMpMIw65Qn(=~wh5w~(wqu{b!i2eKbD})Hu>%00;U=I_d>YDMY?Bc{K7cZ z3a?7&3G*_*jK#Yie1C1_Tpr9vY*808dc?f z=^~w_ji6L*-`qy$D;K;-|EnR`$RcY*xvyHLgema&L9H`7`o=zo1-+&MKNXZcegXMw zJEYk+AyRD5-Q}{s-=JGnQ9DVIAHk;ux#;FrS%W(MC5=Q$srFBO=jfUCQQ03J+!8EV znH}Ff7upI5sIl*IguUIeMCn-6K3URbO;XjIk5xy{{M$2?A2_A~v z2JtO?eZ}?K`H1kaspSHpV8x0b*3mHWs7_-@x|nA6>o^(5sdukVGg-YXCfb9xmVX<_ zUsRfBZ|FVf{<+yUPRheuv9JF+nX~#y1qEogTKCE?gON1Ix_>^ZOvZ4#?i8s)phfMB zU%hr$?ykJ0rzLiMp2!Wj2sl}qkqHU*C4KGE*$XLnWs!`M+}y6ChFcyU_y4}Xp26$A zVv^J?x%!5>yNmOtkUG+1aS_c-N|E#ZckjwikH0<_bue|!fZX{{45p$lFi5#|;+t$& ziT)|UXf|P~oMG%OB4#T@I`K?sz4hi?HFXdIwTlbrdj#j%)GQB?UV3v&UHMl8k!vTY zJEKw*!wbDi4ZQQFDVqh0r!SmOhoP7b_1;PMp&~0W@k&g~)!VTCWoPl10Rsa)Amz%o zzsKVPAD3Al+vxr|Cfei;w?#V_sZhePl9)H;lY?e={#Gou)9_Ml_sHa@Shw63+v?n9 zuNXY2{;_X$JPy-btCTR8g?%w`!%J1dO4`DO1*$?IB~xGSf=<##Q} z^E*lz8Cgr)4414_y=}7z4owNg_t1qhSIxp$r-KOw!Vw<(i#l%C@%zjl!)6KxWIhE@ zgGZBv4GmV|CYBk_x=6-*Z6-XG#yBTor#AthMBnl^*>oQ;?^tJsKR!ZMaz?sMZFAPB zx($j3qz;<`sjv|65z{GTW7*uEl7Y+a!UgQ5Hrt|odi&cuge9Dw5ybK1r0hMQN>$gJ zY(!qYLmyRmns7&_F(Q7WGNR;Wv)3Gd_Rp5?iN$~?b?j`MywYF)c*d?AvxIgn&yH(B zC2?--8HA*zT)4u2g;QZe>0|nE>m%>2+DT0E^NK>QpL+dIF2>oiV*3k;QT}51GwouO z@w@vKlzLP(aYe5Nee^Pa%v~@V6`SaO5GSmd<2KXELQam;gEps6W_ims@96Z zxW0{|DS+II+UhaJB-8cw8sH}&ch{M=x1;F~V)-5ucl^4hRMysx*VVG?uaTUYr21y~ zJ$z_vdv;$94rs9TkKXYA_y8G#(foHH57!eOSuygCi=)-;7c$x-0`FhT3cf^_B#+!rf|g;8F9HEbu)EU-ohqRkDyZ-fi%)KB26dBym}+={M|3^y!HU<8B)}t z%*$(-rrHVOX_F%z6f2zwXiHE6vy>NHys z0eBsnS*CmY$`!`wj~oik&toUOB-K0~DCb$(sGH;uSrWE(oCJ@8P&U7a-myi};mtCq z0L2L_bRg;Z^-OzCo43sLBf{ae5s6o&;v!Pd9-|QOqWEIU4xvr%Vcjq6TwtjEF*%i! z9grESR)T&x3SJMs5`VJ3ULYW#QG^>+OC3NEabn=H%DdMN8EiM#uf_d2AE-qpuo+V} zwkR|2Tg1J+;3d+ypkmjQtLMBgjAS$=rLa#!mh?v2=Fk+O8h z8XPL8%_Q(cIF;Ft9w!fYWd#HWJ21W0SI5YL+wRkqx|uYsQ==EKo2lQ`RVNZRChY{< z>;CW`3i{`bz^kqvdUIf&*-$#(D7@igtzgQ^RO^Fd#$cUQv>L*&Nao!y&|V8D_su*Ls_<6yz()O3(f3-9=HQPOdFfR}nu?k^ zYkdb>EmyvqsJi(ctZMGB&Ecwwx@SKc^nLCsF>|7q#sc{_=-;F`o}Ql7WZ?@fwF%09 zV=MWi5;7C{aw~mRpETuoY40oclDo~=c+zVq9ZGoLu!sf?l&!jLerjrwvgW1SBj~BNd-yGi!!@7X)@|qMf&IUxCMVgqU_T#^n8YSPMKER@LN6jm&uuW! z>45>Vj`M}!vQl_1<7sJF{^P1w0aUG1MrV;aKfIJ6FSY^&8K_w}bS>j^VwWqLf*dBu z#>JfjY6;xDL@v$mwFab1q-v=mkdjivP>&nC_5G(gg*Xs?=#>!9wWKcBfB>p@tj+cM z=~vF4Jw;8`^|egA(oiEMW|6&MsKS`Si4Ji&HWg6oHTQ~X=`7`3i$E&~vpXdKMHe@J zv`RCTFx8_?x_EObW`4rfOHOTJr_$_=vSkr34Dw)|)*mn7engT?ab`U&byh02lTRsC z%+5-_yR*I^Y_M_h=DP-aV&*o1H7xsy1h?~mv6-2k6veG_atq%9YYqdz7V#WB>f?J z>khaZ8`-841HX><%>(_^$gBB^LdMeX(WX;32*S#0&tjmfzkoJ3`};#B5a=e9=ySP= z<0Z&zBVjfX+5;nrpsT5(viT+_+)NffcFx}nZlja&DtTB!#3aiX>&cm#2LAI#6*}CX z<*d+dxV~WPM&1r=J=~6%F)ACtNVJ1Q26oh5;<=#lvA2l{8H8c>d!)9-7bE$N5!1J9 zvlqO-Se<6#0W{C#vwPGxC&s`uDtY9oCsqw=`YHa%H9(KZ{6niDVaf4nZq7qcepbzb zcqFlkYIUL_-hV|QBk<|Yt8d&TUbZyP`D6|%039&No5`%`lgPw5yTAPAdi*O4U3LRs zE3mzJ9}z^U0dO$=1Pla5TYrf;hmBjyYCQcsz>cF4^6r^ad=#Mf!azEFj^LYog1ok* z6YDi?g5bL_?}z0wz`72#ETB6UZhD|$+T&)316Ppi;FF(0fG{g7s+D$F-jD!^R`el) ztL=$O4skGNz09RrGk6H^iL{)os)0Q!2Q1;+7e&(dT|3(S9*ZOtPXD)+4(+>(N_VlNt-o zMPjrQee-?#+8hc7l_BQFaUhvMTK1Z%S=7l~{)FleQF_qX+HWth=!$$EFA^uMMq8ar zZII-^fQ9u8#~dx!a{mAZelE26FulbX1id;TG=bD|0>OPv9|Q&fm+MWWOn|9SwB{Vl zOb@x)LwV{Y)QCEHIYcKVX$PmFAgvap4_gq0Kh1*5^Qnw$(NF(PpJoerO&ipkTl8BO zM4Wz0Qpl_>;?R&a3MdZ%dDp9Edj|$&I;V2Io@`D+D0a-}TzJ&bxjFU!R2io+3H5oY5WR^wLyO^xP#(ll= zp+SYiJ;SX=EY3XKt{>Uu|T{BpV^orLt@7RTHtSV&3- zVqSXjZSl?Bg1TR-r5#ub^W>*_e$+S2rjPI*ZT%W1?RX8E%zGu?Gj&Ooky!*OiQ&uN zy?Pm>uuoraaKH$H$D_GN=qPI$G6V`e%zISaonzNwfk*$3PcNnpI`4spZE*xo>w_1R zdzogA>ltZ%e8{@o#{e6MnBn;Y_^({CTbs^kUIs57U0 zt>Q)FI)lA;7;$b3Jy#SM&k8nZcMncqgD41>+~x)DS0?~C1c;*xRIrwv%@Vu>2%E9P zsJ_Lq%Soa>)&6X6Czw#{PYtmZ{9F)vhW6dCgEy?4qT>eZnk8I+{>hN`+i*Z?r|IjU z4&a`ELj~S?od0rn8rkDGFa3Eo;hbG@*76vuLa<$NY71H$gJeKcZ$5Ax>%Z^bjqaEH zmmEFb_L9BjUo#6TZ5m^tIDLA7%z0 z+u6tjeODTU434w5v>=-t5Ez(F5j|;;S^FD3hW*4r&_MDaSvU!HA6UBx-3>)I6;;*9 z+l3WBWB_Nl8ei<22Z*--GNW&p@xV(-6|x_!h$jihi`Yh;pkhqEAZX@r3}LzRDqvUwkBrFD$G%T` zvgV@^?kK=uvHF$?ZLbwR7Zj)N{NT-UjFIOi#oAwi&F+6$O8GU`Pc%n&6N zA0_+rVrHD1-Em@^6lWA0&n&@(#hUYpi$sW#9~u6$bftkC*=OuFY~U4N(SD}q5XAHJ2)qmup}ERa0Pvi4uzyY7f)YFwTpW8;rM?LY1Z4dh%e81c^in3=ZzXs-=ZRM`spV6J{8yH~o?R zdhe{qZn&?mu7*cOV(UZMXMcS#)J%IA>->YsExo9yyC*d@RUTG5;U!fAgE-AB?F78^ z&I9_OTJBp#Bz-ncK|wVtDk|M_*X-*LK7xl=ZiSDNVidA?Co3x(79YX`&Q^!SnO?lSDQs=3ke2la&rDBXqayl_h%pM;tx7uB$6O3 z6fxWD^O@#x9`Z0`Z74TlitpA3-!>}Ify)Y~sHsIxHTTTB5}oi;QBs~o;x1O(4+U@B zcwp$Wl>+m;HsFMhUG0(Cp1Kwu5y8d5@i)dKzqi1CNE+Fh4u3%giDG2jASZimM2uOE zQBZfjzjm(x_O?sy%;jS`Q=LegGnqIc(+1kH(x#3yW$We9+J=^v?gGmWRt4CSuLXnU z(#TUh)grMtE`JO#y`LM5vdk4qWEJ6RQWB`Dtb$&rFhFxTswqA!c6$n_n%5{K6hYrf zDX7uBB?eotm^Qz>x~k^t>Y8s0*_4%VCtwD^B8(N~(xo8~-Q3XJtU<^@Ax}!TCgh;U z-`{KTIPH6|GgSDb_LSHqY9?{(nFKw%QaMWc8?7D6GTDB9ewzIs1%uoWr~^=!w%xh%^52 z77N!oO}3Ew7AB(YHC0vr6upF;G)REO8e!I}vfyiRW2Z}He?=fd`6w9~nWR=FMallXQHE*@ zLMi&Wv*M3s--8X`=Au1_xY7~ew`J6Z7O6n5K-@BZXw;4XPv#LW?$k`5+zT{GJ%`8( zyi(ehZ1b6rkdQ^wNB**%g>usJ4;Jg*&!)(M5IBoK3h~`d>Rm^bIky2ma%Fa9Bqm<9 zg~JhWAXMCI(;;YnXJY?Foj2fvx^kI;Da zku4n)^Vuzt-kB4WyLZo1O2%#Y%MshYg8C`COdO7|w=skZk=fsjul`5e1ygT=VKv@N zPjhST@N|QjoBc|`(%BHsP3qDz^qBXY?<7j8m);AWotvFU_{b@X^HrCaGW~W))weLkO9UI zK_kh~y(waO@j}TMb+$pJE{)7?Zcgb0V^>#~Wj%&1FeHRfAF8Bwl>Eer8NiC}3Xj#b zsicq@*px{?ss)eE=ev-Vj~+k%#ER7`w!qDQkA#MK+}-iQ^k8%Qr6^3j85*%C^N>hNIfM=Q|>$%zg)yr=`k4H(NF=Pv8L zy*6TYlx%lO+(tRU{Oa}q6(1LPcA&KGM+#^F0b~}>3?zb4fH_=b0aTaq%giae4@o-H zUyL&Y;DUoFmP1wE4R}0ZZMuWhuE;l?iK}W4*D~NNC+56-c|2RU@c#1hvMziPVqFN! zqDHV2)MMSxCaKj;JwG>vw|#<^%WeRMH{}8kn8s79auj7vCsQr;ZNdqA%7!a?{KZ!kLKmK zm*XaEtn8~N4|Sc~aO9z|{m=Jvcy-a~A0_)xzOU^49a$#*z*7yCD!%HSDD(aVt=3`F zd`|o?pN!w@aCb7V_5aq||LG&7|9LTrZ64tI!tF{MATx4X-VKHRZ0{Q3Xu em@UiF!I5kGDrcM;$hQy~qagS2ZjS8Z=l=$Xeey{F diff --git a/figures/subsystem_architecture_zh.png b/figures/subsystem_architecture_zh.png index 0bad56f5474302e1a42d1ecd6d44d52211960e80..9da1ebf53ba0f249c8f2da4bd20c2939975e710b 100644 GIT binary patch literal 14699 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 literal 26515 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