From b91055eefa46cb4b58dc0faa4587286c20103e6a Mon Sep 17 00:00:00 2001 From: weishengyu Date: Tue, 15 Dec 2020 22:46:58 +0800 Subject: [PATCH] rename style_text_rec -> style_text --- {StyleTextRec => StyleText}/README.md | 0 {StyleTextRec => StyleText}/README_ch.md | 44 +++++++++--------- {StyleTextRec => StyleText}/__init__.py | 0 {StyleTextRec => StyleText}/arch/__init__.py | 0 .../arch/base_module.py | 0 {StyleTextRec => StyleText}/arch/decoder.py | 0 {StyleTextRec => StyleText}/arch/encoder.py | 0 .../arch/spectral_norm.py | 0 .../arch/style_text_rec.py | 0 .../configs/config.yml | 0 .../configs/dataset_config.yml | 0 {StyleTextRec => StyleText}/doc/images/1.png | Bin {StyleTextRec => StyleText}/doc/images/2.png | Bin {StyleTextRec => StyleText}/doc/images/3.png | Bin {StyleTextRec => StyleText}/doc/images/4.jpg | Bin {StyleTextRec => StyleText}/doc/images/5.png | Bin 125430 -> 120796 bytes {StyleTextRec => StyleText}/doc/images/6.png | Bin .../engine/__init__.py | 0 .../engine/corpus_generators.py | 0 .../engine/predictors.py | 0 .../engine/style_samplers.py | 0 .../engine/synthesisers.py | 0 .../engine/text_drawers.py | 0 {StyleTextRec => StyleText}/engine/writers.py | 0 .../examples/corpus/example.txt | 0 .../examples/image_list.txt | 0 .../examples/style_images/1.jpg | Bin .../examples/style_images/2.jpg | Bin .../fonts/ch_standard.ttf | Bin .../fonts/en_standard.ttf | Bin .../fonts/ko_standard.ttf | Bin {StyleTextRec => StyleText}/tools/__init__.py | 0 .../tools/synth_dataset.py | 0 .../tools/synth_image.py | 0 {StyleTextRec => StyleText}/utils/__init__.py | 0 {StyleTextRec => StyleText}/utils/config.py | 0 .../utils/load_params.py | 0 {StyleTextRec => StyleText}/utils/logging.py | 0 .../utils/math_functions.py | 0 .../utils/sys_funcs.py | 0 40 files changed, 23 insertions(+), 21 deletions(-) rename {StyleTextRec => StyleText}/README.md (100%) rename {StyleTextRec => StyleText}/README_ch.md (80%) rename {StyleTextRec => StyleText}/__init__.py (100%) rename {StyleTextRec => StyleText}/arch/__init__.py (100%) rename {StyleTextRec => StyleText}/arch/base_module.py (100%) rename {StyleTextRec => StyleText}/arch/decoder.py (100%) rename {StyleTextRec => StyleText}/arch/encoder.py (100%) rename {StyleTextRec => StyleText}/arch/spectral_norm.py (100%) rename {StyleTextRec => StyleText}/arch/style_text_rec.py (100%) rename {StyleTextRec => StyleText}/configs/config.yml (100%) rename {StyleTextRec => StyleText}/configs/dataset_config.yml (100%) rename {StyleTextRec => StyleText}/doc/images/1.png (100%) rename {StyleTextRec => StyleText}/doc/images/2.png (100%) rename {StyleTextRec => StyleText}/doc/images/3.png (100%) rename {StyleTextRec => StyleText}/doc/images/4.jpg (100%) rename {StyleTextRec => StyleText}/doc/images/5.png (81%) rename {StyleTextRec => StyleText}/doc/images/6.png (100%) rename {StyleTextRec => StyleText}/engine/__init__.py (100%) rename {StyleTextRec => StyleText}/engine/corpus_generators.py (100%) rename {StyleTextRec => StyleText}/engine/predictors.py (100%) rename {StyleTextRec => StyleText}/engine/style_samplers.py (100%) rename {StyleTextRec => StyleText}/engine/synthesisers.py (100%) rename {StyleTextRec => StyleText}/engine/text_drawers.py (100%) rename {StyleTextRec => StyleText}/engine/writers.py (100%) rename {StyleTextRec => StyleText}/examples/corpus/example.txt (100%) rename {StyleTextRec => StyleText}/examples/image_list.txt (100%) rename {StyleTextRec => StyleText}/examples/style_images/1.jpg (100%) rename {StyleTextRec => StyleText}/examples/style_images/2.jpg (100%) rename {StyleTextRec => StyleText}/fonts/ch_standard.ttf (100%) rename {StyleTextRec => StyleText}/fonts/en_standard.ttf (100%) rename {StyleTextRec => StyleText}/fonts/ko_standard.ttf (100%) rename {StyleTextRec => StyleText}/tools/__init__.py (100%) rename {StyleTextRec => StyleText}/tools/synth_dataset.py (100%) rename {StyleTextRec => StyleText}/tools/synth_image.py (100%) rename {StyleTextRec => StyleText}/utils/__init__.py (100%) rename {StyleTextRec => StyleText}/utils/config.py (100%) rename {StyleTextRec => StyleText}/utils/load_params.py (100%) rename {StyleTextRec => StyleText}/utils/logging.py (100%) rename {StyleTextRec => StyleText}/utils/math_functions.py (100%) rename {StyleTextRec => StyleText}/utils/sys_funcs.py (100%) diff --git a/StyleTextRec/README.md b/StyleText/README.md similarity index 100% rename from StyleTextRec/README.md rename to StyleText/README.md diff --git a/StyleTextRec/README_ch.md b/StyleText/README_ch.md similarity index 80% rename from StyleTextRec/README_ch.md rename to StyleText/README_ch.md index b8561530..82fca455 100644 --- a/StyleTextRec/README_ch.md +++ b/StyleText/README_ch.md @@ -1,13 +1,12 @@ -## Style Text Rec +## Style Text ### 目录 -- [工具简介](#工具简介) -- [环境配置](#环境配置) -- [快速上手](#快速上手) -- [高级使用](#高级使用) -- [应用示例](#应用示例) +- [一、工具简介](# 一、工具简介) +- [二、环境配置](# 二、环境配置) +- [三、快速上手](# 三、快速上手) +- [四、应用示例](# 四、应用示例) -### 工具简介 +### 一、工具简介
@@ -23,13 +22,13 @@ Style-Text数据合成工具是基于百度自研的文本编辑算法《Editing -### 环境配置 +### 二、环境配置 1. 参考[快速安装](../doc/doc_ch/installation.md),安装PaddleOCR。 -2. 进入`style_text_rec`目录,下载模型,并解压: +2. 进入`StyleText`目录,下载模型,并解压: ```bash -cd style_text_rec +cd StyleText wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/style_text/style_text_models.zip unzip style_text_models.zip ``` @@ -47,7 +46,9 @@ fusion_generator: pretrain: style_text_models/fusion_generator ``` -### 快速上手 +### 三、快速上手 + +#### 合成单张图 1. 运行tools/synth_image,生成示例图片: @@ -55,7 +56,7 @@ fusion_generator: python3 -m tools.synth_image -c configs/config.yml ``` -1. 运行后,会生成`fake_busion.jpg`,即为最终结果。 +2. 运行后,会生成`fake_busion.jpg`,即为最终结果。
@@ -63,17 +64,17 @@ python3 -m tools.synth_image -c configs/config.yml * `fake_bg.jpg`:为风格参考图去掉文字后的背景; * `fake_text.jpg`:是用提供的字符串,仿照风格参考图中文字的风格,生成在灰色背景上的文字图片。 -2. 如果您想尝试其他风格图像和文字的效果,可以添加style_image,text_corpus和language参数: +3. 如果您想尝试其他风格图像和文字的效果,可以添加style_image,text_corpus和language参数: ```python python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en ``` * 注意:语言选项和语料相对应,目前我们支持英文、简体中文和韩语。 -3. 在`tools/synth_image.py`中,我们还提供了一个`batch_synth_images`方法,可以两两组合语料和图片,批量生成一批数据。 +4. 在`tools/synth_image.py`中,我们还提供了一个`batch_synth_images`方法,可以两两组合语料和图片,批量生成一批数据。 -### 高级使用 +#### 批量合成 -在开始合成数据集前,需要准备一些素材。 +在开始合成数据前,需要准备一些素材。 首先,需要风格图片作为合成图片的参考依据,这些数据可以是用作训练OCR识别模型的数据集。本例中使用带有标注文件的数据集作为风格图片. @@ -88,7 +89,7 @@ python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_ * `language`:语料的语种; * `corpus_file`: 语料文件路径。 - 我们提供了一批[样例图](https://paddleocr.bj.bcebos.com/dygraph_v2.0/style_text/chkoen_5w.tar)供您试用,下面给出了一些示例: + 我们提供了一批中英韩5w通用数据供您试用 ([下载地址](https://paddleocr.bj.bcebos.com/dygraph_v2.0/style_text/chkoen_5w.tar) ),下面给出了一些示例:
@@ -106,21 +107,22 @@ python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_ ``` -### 应用示例 +### 四、应用示例 -在完成上述操作后,即可得到用于OCR识别的合成数据集,下面给出了一些数据集生成的示例: +在完成上述操作后,即可得到用于OCR识别的合成数据集。在实用场景中,我们经常遇到数据量不足的情况,这时可以使用已有数据作为style_input,合成数据。 +下面给出了一些数据集生成的示例:
-请您参考[OCR识别文档](https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/recognition.md#%E5%90%AF%E5%8A%A8%E8%AE%AD%E7%BB%83),完成训练。 -下面展示了一些使用合成数据训练的效果: +在添加这些合成数据进行训练后,识别模型的效果得到了显著提升,如下表所示: | 场景 | 字符 | 原始数据 | 测试数据 | 只使用原始数据的识别准确率 | 新增合成数据 | 使用合成数据识别准确率 | 指标提升 | | -------- | ---------- | -------- | -------- | -------------------------- | ------------ | ---------------------- | -------- | | 金属表面 | 英文和数字 | 2203 | 650 | 0.5938 | 20000 | 0.7546 | 16% | | 随机背景 | 韩语 | 5631 | 1230 | 0.3012 | 100000 | 0.5057 | 20% | +识别模型的训练方法您可以参考[OCR识别文档](../doc/doc_ch/recognition.md) ### 项目结构 ``` style_text_rec diff --git a/StyleTextRec/__init__.py b/StyleText/__init__.py similarity index 100% rename from StyleTextRec/__init__.py rename to StyleText/__init__.py diff --git a/StyleTextRec/arch/__init__.py b/StyleText/arch/__init__.py similarity index 100% rename from StyleTextRec/arch/__init__.py rename to StyleText/arch/__init__.py diff --git a/StyleTextRec/arch/base_module.py b/StyleText/arch/base_module.py similarity index 100% rename from StyleTextRec/arch/base_module.py rename to StyleText/arch/base_module.py diff --git a/StyleTextRec/arch/decoder.py b/StyleText/arch/decoder.py similarity index 100% rename from StyleTextRec/arch/decoder.py rename to StyleText/arch/decoder.py diff --git a/StyleTextRec/arch/encoder.py b/StyleText/arch/encoder.py similarity index 100% rename from StyleTextRec/arch/encoder.py rename to StyleText/arch/encoder.py diff --git a/StyleTextRec/arch/spectral_norm.py b/StyleText/arch/spectral_norm.py similarity index 100% rename from StyleTextRec/arch/spectral_norm.py rename to StyleText/arch/spectral_norm.py diff --git a/StyleTextRec/arch/style_text_rec.py b/StyleText/arch/style_text_rec.py similarity index 100% rename from StyleTextRec/arch/style_text_rec.py rename to StyleText/arch/style_text_rec.py diff --git a/StyleTextRec/configs/config.yml b/StyleText/configs/config.yml similarity index 100% rename from StyleTextRec/configs/config.yml rename to StyleText/configs/config.yml diff --git a/StyleTextRec/configs/dataset_config.yml b/StyleText/configs/dataset_config.yml similarity index 100% rename from StyleTextRec/configs/dataset_config.yml rename to StyleText/configs/dataset_config.yml diff --git a/StyleTextRec/doc/images/1.png b/StyleText/doc/images/1.png similarity index 100% rename from StyleTextRec/doc/images/1.png rename to StyleText/doc/images/1.png diff --git a/StyleTextRec/doc/images/2.png b/StyleText/doc/images/2.png similarity index 100% rename from StyleTextRec/doc/images/2.png rename to StyleText/doc/images/2.png diff --git a/StyleTextRec/doc/images/3.png b/StyleText/doc/images/3.png similarity index 100% rename from StyleTextRec/doc/images/3.png rename to StyleText/doc/images/3.png diff --git a/StyleTextRec/doc/images/4.jpg b/StyleText/doc/images/4.jpg similarity index 100% rename from StyleTextRec/doc/images/4.jpg rename to StyleText/doc/images/4.jpg diff --git a/StyleTextRec/doc/images/5.png b/StyleText/doc/images/5.png similarity index 81% rename from StyleTextRec/doc/images/5.png rename to StyleText/doc/images/5.png index ea0b89034940cc70e6ec8f77471f3af1c2b54219..b7d28b7a1ed9519a284487be620c4f180b612aa8 100644 GIT binary patch delta 18362 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 W>3SZsT0sivWF1deKbLh*2~7Z!8b~Do delta 23033 zcmV()K;OUIuLt(i2e1PR8#rZHNoGw=04e|g00;m9hiL!=000010000QlPU`$1n_1d zNrPYww_ptcq=kPT@O@s@-9Oq}vMt$`ZP}K*<2ZXm0!g3*0)@VW*+TcAbWu8K>29IW zw=J}#6zE`FLWNjBDDlyI1gX78m<2B zy*y_x0jf)3@Dm6Ht!riobfD$?xdtuSK*KEihz?I_#h8mHvBXTm9Q%oRXqpEj0*D;! z?1^n#cLM}=#XWZs7eax_4xaI`kA4=W%ro~MOjf(yyAQ;sO?%?9OO{~>Fd0-+I-1xJ zS|Wm?xdvzq{2*bi)ey|m@r^sxyT1?nnwm+Rb$+6{SESdu0hL#9>z{N z7eP;ePna`cY=FN9JGSBCBlsIF(5$vS%$I}2$*8uSwRUZ?933+Di+U)o6U!RtM=wPX z!SkU7&=J~JV@-MWwXaG5@%rnp2V`OqA>g%^j6;8|dXC`;fOakxq)G05+g;y@qqxwl zr&3RiBQ-mSF@>7h$37Tl-JH7E{K$PVySOXPUrVeM0KS)ZubkB!OB+{4d(Uv}?l=&w z%hr({LVN;qcNeu~dOACVnXz=udBiYKE`WKKVm=Um3Pgp(!9)82p2|;>1)ge;mbNpA zogjZcjI}k)yeOkUei%%Evm!nlyBQY`QVnCv;!2Z4bMF!mG}4)Rem9@P!1Wt6PE zxwzIw$Fw}+62)>@M4)XamMZJKG_gL)O=~}bpd1CfvnHAs5r=|yk0~yO=tB|lLzBZD z@B*HLS*o6_!ZGVTv0BTR53|W~Vk#i$aPfa2{069%Q(4!@b&d_C6IfHad&`-#lZ;^n zw9}HoSAx!oSpyK4A&iTt6|`sXo;Y{u%2+~8ln&hJb&RPlw6Vjz(E?DA-#xLD;O!bB zMG#tD-3M^LwP5)Hpp-00ykd|N77G2NBP1dqa3`6gF?^6d5ClzJVtGR|f>2HYp8$VJ zS7`;txva^pnz}2^O(+<{@Ilr{Z$DO5j*T&P)mT4tYowYwfG&aM1Qy3bx89Ue>q`WM zylW}zM9Y9duoeY1z*X0_*`7x>;tGfU)c{dJlf24TNfsU6s07|F-NpebqnhQhmZ#cG z2=`IWO{EIBKreuS(sE|A{^b2Cb)$cP1Ve0fkdF{=GeTf@xmFhVN(l<$gkyl!*HRwR zpqNmGEq8av^2>26p>*s6G}h7gN#>d^wi+zK#jMjY){W~d6~MKByjubv^w;tpWmQ;S zK%psEnn0Xku6KTq@Q#PKttXs-cNa7OoOm?WY(f&we-Q!sSa=`1A6oEU{4al%j$o}? zK12(mpbu`AtlOsVYso6d&7@UmqLSbEEKg7=??ndHtXUV8@b(cB9ykPjoP<1yFS*I z)|R;Dx>vtHlD8hW` ziZU3vn92GyC}x5iG&_XrKFhP>J=bcXA*$ z_Z*51jN7Uj(qJ^owzeHO1WK`LSi|rsNi>5?rr4JHCDM z?Xe2&`riBQi5}*_5rW{gA{nrGxCcS%qnTXBFznvhp6Ie{X&WH$K(sAi9F2{2iKoq^ z#T7${_QSZ*`VL21YaLo{Z*1AJGv)vycD8T9^iM2Ei)N%CEGbRCF! zElVlNMp=bw3i#1SGe9h2ma^QiCRjOqaqF7cv-AE~f`T(a0l{KuT#03^mw1|Cem92A zm^0nG2KTmMjVoQ+6dn8bpbTJnkm0j7bq}O?4Ja&Auoz$k^ttEJ4Om-e#d6}^Ch30_ zf!SqM0Be7MY!N`G7#C_OYjtb@-hx~8@rUk@N)jZNFF6B%(aikrW8Du%7xkxV0ot?Y z&56VNx|tR%FoZ}k?#waf`Tm1lv43wn&mtzOtO<}a7Q1mdDl@DZW}KWEjH9f-5(HN< z!gsP7*Ps?*{%1_q5Ej&0=H-f61e)&)fCnIkxvzhSc|f8 zxQEyu_{k7S6;;HeX~8r$stzz{anGLazG#6bHG?R1vEBP5H%{3d@J6f#qhxCp@ebs~ zv3BH006G-I0jyx{2PjSmS1|LZ7&ncUoujyPicoGUsFSsL{!%&z2;g~RYNA{|rd0qC z*oS}Mq>J!6EL(|x2@a{zRnD~>pQL1g&k~q9Zekl=C-HCBoBdwCVg;4xvGl^=4UCtW zThl7JtGE)B#MKIWzzt(=RdG}0i&^j6yWxn?y#lMXX6 zo@-qoD#sE-i6xvdv4Xkv!IVvXfO*Wf&;lixPzsd~<&^g^&E5VVCB_k{Ac+$2GH#Ps zONy+ZNQ<-TXIZk6GLC?{VFK9eS1ySo2kweStvkG?v>M@Ench*es5OSW&Hf{Ej%$B; z!^EE)_c3HfneR;BOir<+h%W`@Id*zBCD`-UO3|d$^ej9llGucx+qmhe7!-CR|1;;|Lmm5n6%ENE2vHC8@apjUiIm7h?ICH-BO5ZQn)K&+LD=4B_=8 z8Ae@`HBsBVBo@x0P7hf|`iJ{EiO*pnRIvz;^rFSplVL%Bv~sBlmXQ(G#peT5UR_MU zX0sJ#VXQzUzy=Hx?(2x|)JdXq+d*=s1WK3kFM!Ctwm<((fWtKVN?3i>QoC zu<{%r2bl+@BUl(n;fL1{vojEP-tlOxT)PzdBXGSJlghdoWw;<#tX_Y@coDn6|0c1N z4PkNUIx-Y{_Z(nGP#6*Iu64;g(s=<1xR5B8Q|FTaUvu(;*lt#^W>>mMvR} zFd&v<%TtM&wzM|IqXfBMxc2-M*QM37bfxl=WEzB0aSCsi-Gb;mnl;MPeTB z+;Mj-#^R^-=}8g_nn{hw4B^G}@1Zsl<1p!IFIuB49 zf%i^9(+I6OO><+l@mC1X^_zAOeB8^tU@QoFcT$=$WPBD=14RTAJ}#CytnUpwHb(L&&g29|D6tk=JTvu`bAfP)CsuPU zwjK(p63kBQR5^gov~dHUgW&YZh9+V`vG@VpjlF+SWrU*9ha0vMdR0T)ax7R{|5DXr zm1?ai^lhwvU$P1_S-Gcfb*;Ioq|k#>{KoXK%90XZ&io%GhODdw%QA6)!pKsdE07r` zKFbmwyGU%P#bw`ra2vcEWdKD%i`N)y(Gmc<9SuU~<>@m#gLkl(r)zs&!Hz+G4yxu} z8ION~fsAFm?oF>x0``la`CPpH?QcUHba9$oM-9mvoAU~7A{;EH-Gb6&UhvQ zgUjqs`vavx;yNbCH^26+sBWr`SO3^`@tQZk7RCsRgCSgS^%Zf?H}8lSUHXFf;(z={ ztUYfX*)y*|i|vaGFS#VPJ+?k>_{#M@l$(EIJ{0Vvmtfh#7|VIy(xs%2qs=xn;qN8j zvlc5z74N(6P-kr3w>t(%$*gAbT*BhtWhx_@p%c3b=FkB0mj;?-?V~2&A^gSTWRo<& zaLTZd6tPG|=Hm$1a$I39_JwFxFIjgM0(UI#Y~L4W%$Y}OZasmL>tY`%$PKtJ7A${R zfcAyvhn2~AoMPNrR*W_~s|xTj*oB5kjKHi}n8y(=-K1UbT)#ceLz}WxdNo?5nNX8x zoL*;Uhyl}T(e+qHdfY~WanmY(B0d02|jB!Ec6FgH|9G(;O^nT@1{fxRDwW zZdaePF3zJS&TN7~U$}C0-1@C=CBc6;$+axYcwt*B7OJXPKn2}yTovxYHOiuG$DJXn z9U%6nlJ}Y3j4LoE>);^@exWMLTvoNMh=o{1&N=UbxcSC!$EJB!wvzz15(kFjn(~ga3 z-b>>ZuXSdYb($yOAx}f&~qNlT&8CqHUB73rneF1ST(M& zWy{tQ0KFv^!Z_D1sE7^iz0u7!04?)o#i~ZiDeP+pOw5jb1I(?4`GA$Zad}f^Yy&)u z0)T+UxQ>XW;@yBb%x5AwnER#7>qWTHy4tr=(qJ(5ZR(GfbJxZmfbV}u#k{!h00F6# z4!CRuDg51&JeSn*YAlD&WyB2L7uF;K3gM@FsEBpsa<#Ce47(N$+7$R+!!PK_D6pc{Acy@C9(4m0tHRJ0ZV2D>ti5QZg(pStQA~aisiHniEB`> z6?RP^NUj$6fkC~ajM+ZiyUonCA?8{?z!2LkuF8Q}O0aSZ{qCcpeE$H#4Vh>*Yd=Bb zb(0Iy)(!0)os_v~roI(Cgrb+TYvux?Mq=(<=zt5S8pUM@SJHm~NT;oVvA|W_1nAas z+||A-TI#7oG+rGW*;eBSNgQZQ$%5U4<;{9cvjDmM#DG-*8V7bf5+iLFMLBUUv-hsY za>Lj|r$by*vT7A6_gkW}V+)`{5Twe65Ct@tkWj}w5;72ihs8zfBUaYrM#0U)veWWV z!@E{MV-?HO3)Di{Z6n0Q4&6Wd(C~0xOy|gtXwOKx#Fvq&`k5bhJq3 z1iYfiD%gx`DQlKjOG;5zEL2+?FAYC5ECR=9lr=WOhZ%p%o(}d)L~e0!rZB&7AMR%| z%_QqZ0B1bU7}l~9-(!L@BK$4EqG)>g5T!pVc&7${{9wn%=-Dw53$gxAAP)w{x`@l6 zzw&HiMklvF6s@bzjJQ}@! zzjS>{`AdPy4iJmP!P1w@RyD~|V|pJVC%JbvZP|>k9?JqrUyV70$d7@&xHoX_@m1XsaPwE8L*>X0>Z zSeyee$OlPfA3=-!k(XT))mUPzYw>D8ne^%I>5a2iAzaB*Y((%@z}$=}swWW6?I*?w zI;?-DW)3e6P(w>#5e;MIsmIbWLcs3>8y<;28cxF>ztC5A9TnP#s1p6T8;4g?p3y1?E?%~NDTcZ;uaPGWCm{I#;_mdlA z7M6#07<(hGg4e$8b#Z92pVVMnRrs5sM(lqj^XMq|Zv(g;+`0uVi8>|3Jk(+}u{3&n z`+*Z?ri@dXZrQpECP-`$dm44(ohz%#s%kI5KWDm>v2KsJ&=Ny zCyQ|Zl$@JDfr3~kl_v6g?tLI0-?$4VX8LVK97Qwk$7UDmn$eWumG1cl>?%f4E!RI!wf!U)Abhc)>ee#DumQ!(O>`S^Ga6@BOmW4AS-d~)m|+B^ zb!3jReh!XR5)j@JgZn#)S0Zp0_fvJ<95T14m$bVxdWMT)@zU04B+GxVW%)8**eR(S z2YS;4;gz_7=dC+GhM3DEhXAYeVU!plvmdQ{)Uq7cEEc)4ViY!LAn=%^{#SJFi4uU6 zRg(334ddQ)yAYchKujj)nHA?5Oz5WDMmL{8(HdNiA@-rflwmg6zK_| zX;m}cPYa^Id9CBXl5u|kxV0Z_D6h=95}sK`N#hz6vnt$n<5=K(N&L_vm9|9TIf#`6 zbhsVw1buabaxc1@WK$7tbV~r3sxNvO>^+P;(20wi33^3sW2{)d1|^c9VfxT`$%~_B z=T>5j_E2n=m?Pdp>ywqqRY=^TL)Vvu8r?Ilgt_N9i~-P z(dhL1=XnJ?T4J=6unw4*5v?niCXjI3&9^44uLRZQ&Rf2X#(HjSSWLxAwu#V`N;!a7 zuxM^v@`B6I)U1CTnGJ+mok-M)m!kZc%n6W?8S={4y^@977~lBvx1zOmNy_vXA?vCF zW+D1D=*;Y>ewacfE{XfdZg~Wklm+C>0^4~crMh6rW7p^-8>&8ZW`YeAE)~Y5@&Dnw|ZVH3OT#DPK zoW;^ddTlL!7&p?yJQ4@c+_w;+fA)&DsAp0SQRaO%z-R#}=_N3c``h=%m+rcSML@~- z&1KQD=n8zZxTrMY5==e9q9w`@71Nl3Dg+30YvS23#I3~5w4<57`HgSF#WR<{Kz!7y z8AN4QGCqH4aL|SYO1|eL_Z1}84O6=YD~~lVq_=y;q*Cf=Xk3)`cbQ~+2(zA+qsg}| zSq@;KC?I|6#pQJyZkrK`|1~cpeI53`{?H)=p{7~(EMrh-BhUt6f;C**4?PCZu#3=? zYtgzoy9nZ))-YgEH>M-@>~E)DNHx~6rnvdm2XKGWmBl5Oj54HHY$yR@P>alxc)dGrNGVW&3$t_tT(Y|AS%qI?L zANx@?Em;Zu1>S&quVb#Hs=3S~W0}hMK5TKm(mHD5bOXQ;-dN}sx2~kb!tOY4?Q*tn z>P$?xhJ`(wthixf<+kkF50E4#PJCS1|9Y5O}>< zxQdvUC4AoT)HYm#OGq*Ai6;Ts6Icc&OL1Q!^xVL9kaeF5HqzM|1tDW?;z73LSvLqN zNQ?4Bf(GDx4Zy-JVIILM;{E5=&1Qd$%Agv6rP>7I1-cr?5zM@jH%x;77Q8|ahyw9Mg%=5bSiv< zxY6quFC^n~aSTJJ?%mty`*6%|T@mw87<=hUFN#PnLEm)*J=d^~O0d>gFNzK_<^VZp z!)eSN`sAbN7dA1*N14Y=qK^$ccZBgN=R`|Wl(Me9h1Q~K)?A5vocn*4BY@m4CnX3W z=S%>YM79YEtw*Fa+T@r7+7bm%zki-rup{}@ZXCFI6sEfFy6fVGuYD~xKeYuQpetb_ zZolR3R3-B2tFOe$k!gLf53~fp22AMs&wmld#-1Ff{QMQGtOEU3t@Qu6#ViQL!5JHKR#6kzJ`hW$UP6lK?JC? zri_JX@w;-gK~t2ME^A|#<;D2X>*G~dTpc^MY>l4g#cXb=U}PBqXpjzyLl}Bl{Mws; zf{7^ar`$J-u7vxHp>d8Q^xPf*$%EwplOq5t0X7!)P8h~LRJwn?@SL;ae3>CVtt7p) zntiw2Xs`q`?Tc5mVj69VkNxMDdE7u;Q++ilrhpq3htg9Emq5gf1l>_7*Iprk5M`Cb zwO76rL5r^!?b5(I4#FY$%Yx(q{0HN4rJ-@dMfixm!(uT8Lxv*T9;FXf=xxA~)YaF8 zcHDyrn4Oqm`t^UfLQ2`Lp^12*QcSF)&|+o7c`4@N2q5P$*(c{NJA*|QsfzGCtOkeo z?~B2G2o`8y8mwi_4*~j$aod^FKD~7vK?{O`z2^0=!7@iMEMUOu*)<49UW-b~)MnwL zI%>7J3-$;?04GJNv}~4=sCkg`{-b2(;Jx8{rtLM&qY{5ICiI;<4l)k+G1toCCx7Bc zqk*cwx9r*jgNV4~((`b$9E~TR+K4L=X4bicIl?|-FpNW3vz&Va2);h7E5pPA%&KmL znNK1hwD_H%EB zu>l^ivXF1hy;KNXD}enOz|I6T_pmWU4a8;*uzy?y%y{I`u2@X`hw&*L0M;S^v>8I~ z<5bIgOfV-qv;Z-VsQ@SIDiuOx9)dH{f4U-SN=JX9v57iQjBgiJjF+4o?|P8^v+z$2D^)66ZN)^QXj|tj*<}6l>icOucc;U)>bte z_kyKw+dkrihT;s?_z}k8kq_+(@08(%BS%#0`D%nYHYQzBd+;)lv+w#fOYb zS*w2uF*cM3I6|gX1@pZWtDgMD`B+3Psoi^ba(@a50yHMEVzeLZprSR(3+ua**gIJq zEP$oRyCFmrO3pQHhgyxaW(*^+XCXNExE2l`V6)C1`c%p;>qlcQZtJ$C)RrRk{gGWA zNw8H>nR^`|Zdm$s0XzYQ1_ra-xVONPF++a#q)p9SQll~wy^|A=cY$ul9-t~Xo5W)@4~L=nzJxU z7p|as@?|ju5E|G8&+B8Hd7jFE)>Jd%kO*|jX~~@D`qW9l>jV~Lor0CD;Q_K0M+xdS zU_TXC?`FT1P<}wmR59ixGYk#%&gQ1{H*neBot}T~c?UZ( zSj~w8nCrjtg~j{M$K&B zOWUKj;)coe3UC+(=%~qQ8m$89%SdbBM1rL%+&M41{Hj>DtPKE$03p^!O~`X~Wr6On zdk)40%a=#VYhM@l-gO5I00s?XwiuYEOo2(MTCWf0d7#CVjld&gMcaRJUWQJA2y|bW zfT$**t4_C+W@G+gRm(|XaxiwstpbZt5|EthIca1#U!bOsd=h{5Bq^DbXp0<)S}X%_ z%v7Xn3lY-fhNWm^kSlSz-3V5SV?r*H4;BCy}5Cr z=4Sop^>fI|>NuPN#%q7M=OAvRZpPKp|Mz0S8OAa(OW*(jy1TZ=gAY6jb0l3Jfzo?a zZQJp{{|_U55&*kp)4te>kaXAhAAZdb$3u@kfS8>EcbXebeT&2Cldit0CDzWmRm?QC3SF$#C3o!z}>2>bUlrt7GAU zg;>Fc$lO{;8vV}bCqOzeN#3rDjG-I9aR>1?E%d!MY7yvV#;OpAo5t9MF|CcGfx9uL zpk@-r-9;ez0Fr-ntfo2ETP1qV%BWs5Cn^p;&RPLXPEZ7t>boOUKOQb^AodF3ihwh| zM3=Q|SDS#AB!-Htz%D9L>lQ-bGlyr@FJc=56afTH=LGQ|hYk|Fk2MHEH-Pmg7A=gs zHf_g^vw-!Cb&|Q0T*}@V32My|&HFvnQDMQKPCqxoH3+%;=vX<8=|g8w?Yuxzqs4G45jS2qT`2ptD58#jBUYgI2}JlRJo&>c@g-pe@M+yoZ6QT4b#M(u6hZ z%r>kq{nj5E1qjZeuq2P+KBK(XC|05UC{&{)aEx(mK1$#qu{9-Fe~ZS6D?!P$j#xcz zRr@yqPwqvq*0#WJ`VPhJ``A9CbwvU^hp1TXHVA*?l@!!m&>H(uNR0u+Mg$Szfe7ZJ zL%XA9up8?Ig&vs|^6FBoQUVhUJ!ws^SRH8QypjeW-iX!xDs$j*aa*1pjq zk#nHk7_nl0$|L9Z2r55`ei@6=QL9aa${Af-yXToEdIhMCp`eDK4q+ zDK;5B(jLvM-C{DqMzr|JlL1#F)NUFg_4mQ) zw;r;j7*Nd=XDz{?1dV=!-YQADU{BZfyn`JX2`ifnfq~ey<0uULX|tOQfyLn@S5tMu znpq`a@gIe(_5{mc^DBdd{N@-So}aS;(v0`r#ywnbsWCZ|xsLk_lzfM$9(clWW-@;Z zk_fs*K*C}{?93sBz2C5Ss689+Vl~-jtWirAE+7Vi_z6)y@6OtR!66{LmlGa=ZE?6E zn32^$E9i(_=A^VJEkSOfLXYZqui*LaLhVl7?xtRgfS*h3kjyXZ784R}jmu%gJWRr< zP2euE-{&Lj)?WJ>%J!3z3a~IG)ct?IQV_Jn@g|rtQJ20;4jH=N6Cu!i-4xV`Z#I@f za00Ds9OegiWFZ60NJ||6fElmkLRXuw2AEmvr5|9|O{(lLz^EL*x35^LuNvVtPG*^V z_ly!_FiKoRXJ>ng%d+2Q=Zw;iF+hgt>^%SG#9oQ(^lYq35sy5!Cm!Fh&6$T;UUNL)8Fx!vLwQ_r)x`kxEx4hmbwu#? zA?n$fC4(&ni%e6Td)B4#&Fg<}pi8B(VBwP0zhmmxvUl}MFM%-Cq@F*FJMLR4AYE;6;evU@zs;ra zTn({FgSgeYV*{3_haZ1DnYwGSaJ~5rFQ=fN)<*#BOpJ~7Wi?^MQH+0<*R#v@;@HvA z9xDmvuWG9zJ`1xs<6>~?C@u=?xHRKpK8ib1E!{O*OHB|{U#-8B6cVmsS|lN|b^C6V z3@n*gOZq1pV_R1dTQD49tBG|nT;GVhZ80=?BsTR_#wJ`c^-Jbs>OUGcJ+viuZCp=< z>GJ@{X2CFyysH)gq#u9o1soJqK<)<|4+9*#5e9ovV8$pS*?*`zDsT&#iP_(00lm`L zi_2{c%ikdL1|1%-#{6K4330R#$ZuQ=YVzO?_Mt=AkSSC_)#qNo01+|Fb=D!m&pJxU z4FE9FBGQBV{V*28a=^6nMWEyCmG@|gP`oIIYzla0U()0ylKX$yZP~jGkYh#(!5I@$IaGpy=yJ^{<_P3#&Q5+7llbTZ^sfwg>S80i{^@|H0g=r8Y}1!rpsXw@Ay1aW`&vqQ$oqAlkoo4?D8c-whpX zSFj-F6H{hi#y5W)ibnXLE*>$U^`_EBon&{G0-VNinF+*nXUVtv0SNZof}s`$HT~M> z+RVH(l)%ctEZAgmNZT1W9?)000GCTVPHTE9hDSe~4|)Jbpj#Gu!ffPyxQsDo$uO?k zsI07A&tMM$R7L<@+agjHyS~1(S)99A$!}9dBh6{BCpd z7@U>uy~6YHBUdxQ#?grMjT&KZQ7B%A_sXvEJ+*&ktXi`omJ#>U#^3pQ)b?*_L9?O#1;5%r;J-rzz-F_@FgwI+t`CRZ!7cMy3lO^OHIQxfuc@ z*{1mlhu{!85({37lT4G<0^ecV1p@z!-yk9c!GrL^BwY$aDn<(}24rEhA`XZEU*mR^ z>RNwklGa1#crFNnV=Ou~J1AkbIQm+$>d=2~UU2CpSd=IU4>M^ZbLh&KUY3|#ntKUU z0+5a2fR-b~YgN>em4d~>xGc#sMpo6THN8eLSrz4-ErqIC_LA7ywoXjhPpWo6$|Oo|s>vYdCVXN!qW zEDS~LaNZg%i|56H`E!VyQoo0BLKnegcW*x+lT9OW6KMshZm>cw!_S=8Rd7NR2y?Ad ztr!bN%ZjtPkHQL<048uPE+sI?P6B^g_a1_AHjYs}nOGI9iOyd^h=G;fz&bk#T&h9P z2kEk;|9cRk#{I;{Bhe=bv1nrqQ(!hRD-2|{tk`2>I zf0oZ8!;yQZSO)r`%hsEB9^9D(t#KH;a90)4mvS^=-M-sMK#;w-9ZfNFjTwJHaYSO( zxYQUr)enWcf;tO;g${m(7CnIPJ0D+<8;qb+f|#{P7)+~`)g{YWtXt@5+BEmr573lH zDG*aFBbbW(F1cNttv0ItNp~=jQ1WyYezuC zm$KrK@CV<8ds?Bojxq%%TxfsoI$FuNFmKH0+}r^@iV%?8%+%{ySY1^#bzSwN6wE3o zql$jj6N`BGFaj9%KapBuo506P;hQ12Fmy* z*SD4zXkN+MOYx8N$G8#jMWU5-sem8IAI&07G(s8Dmgbns8&v{*=Lvs6W{QWRpT3u| zJMyhkd6|5MIpcBpu$(_BZq9LNp;GF5rwm@kJ6Y18tJz}p4BzC=O|gWY_G1l{PabXG z3ok;UL4Zn@z4outZ$X5UrRy%iD zlwi3TbZnhNC>#xLj&*-zH?oPf#l3h4=Wz{uxL~DHhcD(gLk`U98*Sf3e*m0xssyX+ z=(eYj4{QU3Rn-d67419WD;7ls##7Fbu`Al-i?uuN?Z5a515*7`8mbQ}}C{$+Q6uEgR}noQpYJ>$mVc$Jfy#a6_G zha(`g5ELwI&EpoeGQ7_P%8XB-{vAZyQz4wEItZsmWLe0Qq~^$N9OE9j2!pFz*Y ze5AM%#-c*k3$BTzg=7Qw-G57QYv>lBM+vOdu}{}o=d4KDmwTZJpq4D13yq{3;|=4| zb%d-=j1dDdjGpWZ&2scdA?&OgqfUt$_paUhGRqSTWNd`;{Rj{D20DN+vd>mdm63A$ zI862F;mv;=ldH6v;&H}G2_8!Tya%Y7+&~;g5AhAXXnnH)2U-&}&0ECJbx;cTpTquH z&c`y`5TtkzwA&0bh6y1|91DfEbI+0uC1peLvR7Qhvx$Qtz+NC@?25%Py`QD+ttHX` zn44WcKUT73f)#(E0&_>JgRv02|FkyZ8e$O|H<5n|+40PJw8H`7F{)vv{K{O#jZF3A zsrNr7t_S8I$p-T z7_@)n9vW3JqHW7#l6ylG0WGCxrgR|;Ii$P5ZD(|g=!&akzDnohihvoFp{!&a$!q!K z`JSr)QVUmbsc<>p=)VHk>$#P$%V%f3)&~0L4PZ3o&UrqH87-KarjIY0u7$pwqtZmoyKtQCQ>G?P|Z!Q?U6rcfd%nhC|K zosaOwVy!m3oRyeUVLxs-hT%(O5SkyToxQiD8jV`~9eDeshu4f398PdgrD1!v>8 z##yI6uLhb;LW|J^Jak3Ub$xVn+$?`dEqo=!NEtt7MQ4GvTVg01eDPGq0Q#3O9%ayM z3?Qrf$^?{2=<604a2HMx#M>og8^4WXm9~JO1rK>!Z^XUfKa7{nu{vFw9OHRw64ym+ zlerjgp?gV|kk&O5oGHYQPDmCK$7M=MxN^SCjWv?~YFSNLO?;C{IMuc0xJZAzHUmm5 zN^i_>S@UmV*XgU;rNPZ!>ywT8PiOKh&7pM!=hXvrth&5vIh%YoQ5hDiPAPyV1-<4R228e$#(QKOS0S0qmCc7}DtqWXwPI8?9&g}?{gGyXYv+2{C z6Z#Jff_w9R244!CWMm4}N|=k+oAzvRJhh3cr?p50y$tYhNw!73 zT-da;gIX=_Geq4GGC{gv#KUN%E@=0fsUVF5aGJ&?f=~e9nle z(a^ySQ7tPkJ*}?)Fzr;$_1y$NYiUb>18bVXR83iCud3=MoOSfuxqk-=p^ zoSw1gk__8mLxaQ3bCB7x%cW)`o)EC~mmIR;>= zXCJd21ngHp+e)*+2%PJu|Gk#X=dF|3QMVZMb>l(bvxxE4B58l&I5q7`)(T&EXK2RQ zI6hXCu^6QN_pJ^3Rk)^#t}yy?;ysucybvkw6l)vBf2Q_7OeUPPpDdQa%Q3hfrcdZU z_v3oVCjgjCii6w*8ZftgPo4~p#7#j*b$3~wLLtcn@Pf2PRm7N2EQT})jcmD6$39u*WW5bTr*2$u0yF3Ck)AHbl`7c#4^Wa~G3%Q7&KPJ- zX~6y7L$;BwBZKaZXEVO4oOR~Cj}ZKP5NqMWx$~3IOC^6opvAZ@UufmrQ_v<0fwbaX zoNrDspe7a;`$T{~7TpRIz}b(cK>z?AMoC0LR5Aif1m4oYy`$h101qkYyyP%*K~OC( z8-uq)eGIRoZq*`83P*VtF-b=`Jzqb z#P`(F4VOxCEoBJuVoJ~wo~vunLa>gjm8DrsT*-fcL07Ff($}J$CA>$r2B8xDlV6#f zV_6P88K-N5y3b#8uw2Cjz~kQ{nUKd_6fA<{n}fwr@>9~p5I8okQ-MkXDXk^1^-S12 zr!bU!6G-tl-O}%V@V{*GaCy29Q;$D{ejt6i-^&gMF4RP%*GA>N&o}8 zsT6;B6HF{Ct*SWy?U|e`F8r)@#8ucYEhh>TeX-0yCNhFJ2~-d`&y$H1Gr^O~4Q<;^ z^~N!CTFlC9Ex}ir3mt2Tf_xCG$OwDy)Buu>>hfWs)xyAxXMv9=bLs^5ADLt^@%~QS zltn@x)%tZQNV_36a~y(0@m4WOJdV{kE3tn>X?B$n^BRdBtc~y!!}lJ+IfAP)$%`AB(xq>(LgqTDX6c)nq4S zFs@J5pTfow=%#(GR4Z-=%d5!9$=bgWfBS<`)yp0fsn~K4)}jT zegkB18PJz89;$0@j1y#{(qI@`k3p*ug*n!@q`Aw8nINUmHD!7*=EfEj0dh*vq9&n_ zZrK_#OOnRPxLWew@&yLO^Ctn~6w3g^E!GMFvsVLCTqm&OG~)fu>TpUqWz0rVIC!pF zqGO|WSOmaM(_7(T90UTxY@!4{xXynXRfVE~X-=~?GT_7Yj7tgbFbkqhZ==iy!Ki}X zX&@u6s38*$31=)qEg)`?0)X<-Dg^Ba&k;CJ;`W?m%u4}l#!4OT-p`gC2Z;~C(nqnj z^UpjFR{#O8Fnae1D}u)5^vzf)-9m#1hiqj!l!iyMwwNC>d85f134Sf2_RW9ZJzI&D z>WewEc>(+AT(R$*XYn;5ZW3PHlM#T<2H>NR@WQAS(Cle&1k+dBmI5icfjAz2;pcQe zS&g)I{a6!6#$sjjg9U=$6f|j_aGzw!;hmnoNt#arCAw}TZ3%3BZsl>dLFbd#YLlaQe~y7sVVUkY402*%niO$6I~rxENe2Mm*~oCYmqQ( zM+It>c_2Vi_zP50hym9kZj;~?5SaO=5~EUQDG#mSDhyVVc21``oO*w!1rd-WMWB)M zQL9clyj1?Gl9jfO;Wv4L_e}2qlh88dSUTRic#P8-XDvu>!I+As>plbjKxybHaCaU^ zaEB=YZ|TmxjT!P{txdka)}k`zv(_}X<1rXopjnCLlIVhYI4P!Bm*shdTz6cPOS2Av zC0l@dD3CXxQIvWF=_DWu(wh`%p@UKa(rZAFA|-^D zKuB`IbMAM(``7(YceBUPa8DA#U$75}+Mu6m$1VO=D>8PECUq;APwE$VwMk5TDxYlbsQmNl&k#J(9 zTuojIY7&^Ik(kTC?h&=^jX*aMPk#A_C3-x^8R;BFX+HWR=BZ)I3g+c+S(H~qO%AN@ zy^*V6Mx(1kf5uysAy1Bmg>k>chwEJHoRApyZ;p|@j!oj| zA!%WjFb(bcyoYsf767KTn0tlEJ9NW|DGsp)gX3^ROOu<*T~C8qh|Nvl`odsK_nMSr z2SfP`;b9eth&p>NEdm=j`m93sP^ZE}xw+9>+iMID=t$db8ur3D|zCTr3 zmAic|{)sK@j{P!w(`&B{k+z1pkDQ=aaAkJrN2xC_4n$WQ2(AN~%`#>OK|GZ|`pa5C zVbBgqjdpfQuu!+2v|LOXThML=zp{SfCrNdtg|0gu2c<|GsKU*x3lmpwL>YFs1*}bhjpwsV??}ZIVGjxR&>rS~ zZ>eFQVUr#UXT}3_s;wRv^Sc{TENhP+$aMgxLA$V71Mb_My+?%&TfISM!66^(H2LLX zitc?lvG5?^9mx?KI=yTp#=Ce(%NaJ4vK(ngc;evYbzvgsnov=fYI>h&YUp@6ZAVCQKdv?p^UCDavvmeKB8)BU&KV583JSVIu+R@m z248`AL1%c{B%+Ka6+WSdas4UM9T;aEDgOASV%8NLK?1zV-a>z7~kjw<0rJPB8OBN>ym>a}t| zEr<_T?`La1AP$F1S9;KtM9{P`SnCDU+~ z?BbFgN`Lln&1MZC>Q;~1b?IXXjb8HP!XLbVNc0on>hd$;Stb<5|B zH~2tC4ve{x6@m+Be1lI}YMaCJk<-UW+SVt?IHp%|33i*>A_K$IupuRc5GSkMj=2+{ znQ`{ZezMDn{Mrgv=dzaF@!Vwj2w<1BHA2~OVoho(qur-!l;qjkW{20KpE&Qz2lEtstZ78 zZ08PM9o)?)9)Z-p5UZTkcC2mWFN{qFjGNx_ckI$A&z~%g!=P)8y#yRpX#z%D(S`51P`^5xRle~lI%U1WtGiOo8lf{_Nl>H2Xa}!aW8qDG%hT*3PVV5lIynlGOK30LmGQu_4U$x196UbSuGbGQ|M=dAFe3diz~S z0Z_au!%W)WHWC?iw=R!Kpl+k8lEF+7XmYviPYk~Z@ay-lgs0OK)FyR$Sp>%1+72lh zxVF369>H|aKtijvk;;rXcp+PIE}*vI*R%+*=nz(P3nlCHuhSYfVK$5cJKtkrLp(2y zSZ>yHt>K6v6;rcI$C-PV<)-s2D^tFJokdE}iyOYpTTvnkt>hZzbfp-P{@hFfJMA4uTpS zTq3<9OS;g9L2rB+Nn=WTrLhT5)wZ58ue>D;lBH_B#6N5Z1G7hdft2C#?pu| zxy3{jaA(Nuqm0q*AYc!5?t0BCseIxwv|w_K!QiC}t&r2fB9Pe)qC+L)>v7seEz%&Y z)@~X`+P1Qk#|Lyk)=KbKyg6_B8f>vynN>Drl*3`q&9e|M`X9OU{yrt}HKBGsU%qzw zX~EmeeHhobcwC*#dhB9`H7u<;i{j+t*8dBJWc;Oj-v5y`z^#S9K-1$N6t4w={4Ub0 zsV24?X_5T3*PT8U@@nW$l^8=UrhJ1m>Un2~_#KZe+BZh&1#wp(q}fe!sK;vidR;K+ zYWE$#2ss@jN@YM4^fERst5YDyq;_)%rumUsBXG3j(VZqn#8Nr#nRgQsWa*Bhxim$} zVWrF+56A)7b$}@$d{7-f<<9UAh@Jp;gUula zdm6Wxm&(-BuQbB-tNl@D_E&LEV-LDj4?g^r$pCa&O8t@^r;thon_TK#(iU2N$Sage zurulEJtMGMT(f*C!hGd805(T z`{5rUQrH8Y{K;yYOH1o2jH5?ijOKK6-rZ6k z1?!_J-7DDF#dE}VqE>W1ops}ZH1KoO*U|f`p;QPw-pnKBMGCldZ7&|^3+@N6?>7^O z^D#z~?0g)o#-;k_?_slebNPcgAv50+2heZVmQ2RQm^)uX;Kq-L9DJc!gTKMg7I+gN zEtL4IPWLm1XPrInP_58s41WZ#rZY1=6lhf|zo+rEWhKT8mBQdLJ}Lt!mf0}q?4>|b ztNWnW5i2!J+2N?I=187e`{1oiV!~I?{J_PcX_WHf-eS3adQPf}2&D81gCNjnm`x5@ zRYv(JsXbS>cl!MkF5aIOP!p$HJ*N~)Yv`0y18_to43|e=7Ij2VT9LlxURDD^;EkxI zQdn^9f^91q7R7@GaNe3?E>QiKiA{0ctzw1$c>{{6HLqIVg?Nj*=OACTizu z8KY-NorzuYW+3;Ih0K`!+~Lzq2h!)Z#A;fk<17Jsa$mon!aA5gOEDv#YFy zW9koZ>RQ(-(C&-%mkEUL#4c4yG(Zg@*~TYW`q~RR&;#Q~9OiWClzRsjg`T*nb`$K1 z&VSJxl`r)DDFrv+~GwjMm|Ki0Pq97U<36qnjc_)X%A2^kHG=c;I~!@f)_Hi7sF zo?0MSBu~D#UjJn6O+&J7Cy(okuhF5Lg=;!t<3zfd!~Jax@eMUH64Bc~jC9ZoTzgTG zmfvn^0_L`ItUQLx5*&OKopHe*K2SxtrrK7tQ`u2m;&zC9J@V05G=GPe+qZ^q10&VpZl7`WyxS)&%|Oz5s9@;$9dPCa7Pis=XWnBoHS2Sc z<0UK}ANxrZhCFLsmt3Boj>V}k*t)V^knDq6Gs)EMu%6->4HJW@n?B)usc_>Hq3*|q zpcx#U?+y^|8K-(!GnD?or0zaUI==hGzgs7fT1L;x#3UVo16}n3oS5o-h!sok=qtTp zm}^_d%;UQr!%%?kHii+Zk*LRHw12lX8kaFQe!Q)^g7LK_4{Iu~0Y9_rD-E46J6Bpb z=UvvT#g z1?|eE8Y_;(y0)Q{nwgz)?_z^5w6;+^R+t+}#l&^Md#^&dY|qnH-z9O{9+fUC0LkTE zpJO+#kBG%C=!G`!WpS2ja264Qx|c#IF8+6Rckm<5RuPI3;BY3#C-;|TP&(vhCy{^$ zHbWDtG~H1d!2t+jZf-)NoF+r5hPN&vP=0gBlnb7n;h@0lvJzjcR!YRqZDUn{$3BkZ z@}(fGmK5mh_yzFs(Rrt>^3}l6F5P%wCUBUX#dO)eD66d#*B==!cX8LcA@ z?(vy6X9NHbbKh?;2l3x5jm&Q#HUR$Cs+Ap3grYN&J4~O;qpa|Qr%C0<45gqqUlecL zj{CUW(VuW%H!k)%SLw}LgJ5?xZJmD7Lp84zr(4HTM-b$C&Y44n(lr$fxO{2W41G4fN-)M*~nn0@Cl@|b>xxRE_ zzXb7uCf|j|V1HEoQfil2eepr#q{g$1ToJqbY{v_L{%^R)9*g&KA{-|+zj&;9r|Eyc zrxdprGOUsgHK{Web))z!r5UsS5@$&GdSq*2eJ*KtIs`w3A3W8RQ6{S8ePN?@M-g1A zs z#xJ;%3<6M75_}J19veZPPL(&<1brJwN$6IJaLfkmb3GyeCYd|I^){tPy@q7^y9)38 zwOCNh9S`l4{=Ar)Gc9hqsciLHF;B+WZ6Nz&)#_Ce%h+muFss!oaCd{hYu1lW=dJg# zSMp@VU0cjb^@StV?R5iRCnT~Ao7+4&n?Iu#_Ej!I+a#Jm9)=Xk_imoxu5;q;eP_>? z7%K|Yn?4}P&UL$@BuA~Ac5Xjw-{&1-jL^Kv<$Dzk?v6&MRa)k`T#H7ryRMCHe-4#QJUL@!L*YD=lE>EN{07=8ByLFsm}Fy^oiE5&Pcg zeZ~~Ev#t@un+IDF{L~KAW!NgD_VxYJ8mTbmWDU)GpYDT+sIwm6Cv)PJem=&&xST+eyNAJkqzUn`5EKCYQDQiW;Cax?$Prgh*BKR62# z4Ymu4-0(szoRUEUzY?$oi-c`A=99)Nul1ONBj<;T?ry5gmuMJpL=W6%G5&ie{~K$J zZm=vam@erDxfxyNQSir0g_Ir;xagL>0tD^|RKVCet&c5yARXkJbCv zxY}fS)HmW+!jAx_a#S8ESGSINH7tF|YKGwB91RQ-l+Im`Gdt-th!QedlWnohF4d)k zYFv%`P;?=qg@)U^!)#v?&QQ@ywewEzVk<{N)rn2_BcC0tj=u zDfa8?t=hST+v;*efh`sd>Q5>5ULr2aaqJwjIV^D!Y$fL`R-NyAf^n@P_0zXVauaDnL9O4&#H0{JujPEIN*P@eio%? z#KEtR?}|@7D5?Sr0rb?786-HQ^>;*X!$WiWh6AWzp$l%7{-iZon(DU`h+Xs@e_I(a z=9@cdoxE_Owz0l3^T6e=IbS6vFg0CERV$j~PLNQuDG@~^Ve2IKs>`P5QaG!5kNM^4 zVdnQ6rBQ;!dm)E@Xq`tVIPX5SKo~6zl&H(8pZ=$E-{U|2lC2;YCGQzq>^S}1xC zfB&2Lty|F9r)X>Kk|@&q!vEWg-uw99GBy8gXp`_T-=|qKH&t<8 diff --git a/StyleTextRec/doc/images/6.png b/StyleText/doc/images/6.png similarity index 100% rename from StyleTextRec/doc/images/6.png rename to StyleText/doc/images/6.png diff --git a/StyleTextRec/engine/__init__.py b/StyleText/engine/__init__.py similarity index 100% rename from StyleTextRec/engine/__init__.py rename to StyleText/engine/__init__.py diff --git a/StyleTextRec/engine/corpus_generators.py b/StyleText/engine/corpus_generators.py similarity index 100% rename from StyleTextRec/engine/corpus_generators.py rename to StyleText/engine/corpus_generators.py diff --git a/StyleTextRec/engine/predictors.py b/StyleText/engine/predictors.py similarity index 100% rename from StyleTextRec/engine/predictors.py rename to StyleText/engine/predictors.py diff --git a/StyleTextRec/engine/style_samplers.py b/StyleText/engine/style_samplers.py similarity index 100% rename from StyleTextRec/engine/style_samplers.py rename to StyleText/engine/style_samplers.py diff --git a/StyleTextRec/engine/synthesisers.py b/StyleText/engine/synthesisers.py similarity index 100% rename from StyleTextRec/engine/synthesisers.py rename to StyleText/engine/synthesisers.py diff --git a/StyleTextRec/engine/text_drawers.py b/StyleText/engine/text_drawers.py similarity index 100% rename from StyleTextRec/engine/text_drawers.py rename to StyleText/engine/text_drawers.py diff --git a/StyleTextRec/engine/writers.py b/StyleText/engine/writers.py similarity index 100% rename from StyleTextRec/engine/writers.py rename to StyleText/engine/writers.py diff --git a/StyleTextRec/examples/corpus/example.txt b/StyleText/examples/corpus/example.txt similarity index 100% rename from StyleTextRec/examples/corpus/example.txt rename to StyleText/examples/corpus/example.txt diff --git a/StyleTextRec/examples/image_list.txt b/StyleText/examples/image_list.txt similarity index 100% rename from StyleTextRec/examples/image_list.txt rename to StyleText/examples/image_list.txt diff --git a/StyleTextRec/examples/style_images/1.jpg b/StyleText/examples/style_images/1.jpg similarity index 100% rename from StyleTextRec/examples/style_images/1.jpg rename to StyleText/examples/style_images/1.jpg diff --git a/StyleTextRec/examples/style_images/2.jpg b/StyleText/examples/style_images/2.jpg similarity index 100% rename from StyleTextRec/examples/style_images/2.jpg rename to StyleText/examples/style_images/2.jpg diff --git a/StyleTextRec/fonts/ch_standard.ttf b/StyleText/fonts/ch_standard.ttf similarity index 100% rename from StyleTextRec/fonts/ch_standard.ttf rename to StyleText/fonts/ch_standard.ttf diff --git a/StyleTextRec/fonts/en_standard.ttf b/StyleText/fonts/en_standard.ttf similarity index 100% rename from StyleTextRec/fonts/en_standard.ttf rename to StyleText/fonts/en_standard.ttf diff --git a/StyleTextRec/fonts/ko_standard.ttf b/StyleText/fonts/ko_standard.ttf similarity index 100% rename from StyleTextRec/fonts/ko_standard.ttf rename to StyleText/fonts/ko_standard.ttf diff --git a/StyleTextRec/tools/__init__.py b/StyleText/tools/__init__.py similarity index 100% rename from StyleTextRec/tools/__init__.py rename to StyleText/tools/__init__.py diff --git a/StyleTextRec/tools/synth_dataset.py b/StyleText/tools/synth_dataset.py similarity index 100% rename from StyleTextRec/tools/synth_dataset.py rename to StyleText/tools/synth_dataset.py diff --git a/StyleTextRec/tools/synth_image.py b/StyleText/tools/synth_image.py similarity index 100% rename from StyleTextRec/tools/synth_image.py rename to StyleText/tools/synth_image.py diff --git a/StyleTextRec/utils/__init__.py b/StyleText/utils/__init__.py similarity index 100% rename from StyleTextRec/utils/__init__.py rename to StyleText/utils/__init__.py diff --git a/StyleTextRec/utils/config.py b/StyleText/utils/config.py similarity index 100% rename from StyleTextRec/utils/config.py rename to StyleText/utils/config.py diff --git a/StyleTextRec/utils/load_params.py b/StyleText/utils/load_params.py similarity index 100% rename from StyleTextRec/utils/load_params.py rename to StyleText/utils/load_params.py diff --git a/StyleTextRec/utils/logging.py b/StyleText/utils/logging.py similarity index 100% rename from StyleTextRec/utils/logging.py rename to StyleText/utils/logging.py diff --git a/StyleTextRec/utils/math_functions.py b/StyleText/utils/math_functions.py similarity index 100% rename from StyleTextRec/utils/math_functions.py rename to StyleText/utils/math_functions.py diff --git a/StyleTextRec/utils/sys_funcs.py b/StyleText/utils/sys_funcs.py similarity index 100% rename from StyleTextRec/utils/sys_funcs.py rename to StyleText/utils/sys_funcs.py -- GitLab