From 9cbff35b06fcbc932e16b5122c05c0efb3866d68 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Fri, 24 Dec 2021 07:13:13 +0300 Subject: [PATCH] * added protobuf module (purely in C, based on protobuf-c) and Onnx parsing module based on it + simple demo script * extended compiler to simplify creation of complex modules that include big chunks of C/C++ code * fixed a few bugs in the tutorial --- compiler/Ast.fx | 2 + compiler/Compiler.fx | 8 +- compiler/Parser.fx | 23 +- doc/ficustut.md | 12 +- doc/ficustut_a4.pdf | Bin 632320 -> 632669 bytes examples/onnx.fx | 13 + lib/Array.fx | 9 + lib/Onnx/Ast.fx | 215 +++ lib/Onnx/Parse.fx | 421 +++++ lib/Onnx/ficus-onnx.pb-c.c | 2765 +++++++++++++++++++++++++++ lib/Onnx/ficus-onnx.pb-c.h | 1562 +++++++++++++++ lib/Onnx/ficus-onnx.proto | 818 ++++++++ lib/Protobuf/Impl.fx | 3671 ++++++++++++++++++++++++++++++++++++ lib/Protobuf/protobuf-c.h | 1110 +++++++++++ 14 files changed, 10616 insertions(+), 13 deletions(-) create mode 100644 examples/onnx.fx create mode 100644 lib/Onnx/Ast.fx create mode 100644 lib/Onnx/Parse.fx create mode 100644 lib/Onnx/ficus-onnx.pb-c.c create mode 100644 lib/Onnx/ficus-onnx.pb-c.h create mode 100644 lib/Onnx/ficus-onnx.proto create mode 100644 lib/Protobuf/Impl.fx create mode 100755 lib/Protobuf/protobuf-c.h diff --git a/compiler/Ast.fx b/compiler/Ast.fx index 89670fc..270590e 100644 --- a/compiler/Ast.fx +++ b/compiler/Ast.fx @@ -488,6 +488,7 @@ var builtin_exceptions = empty_idmap var all_compile_errs: exn list = [] var all_compile_err_ctx: string list = [] var all_func_ctx: (id_t, typ_t, loc_t) list = [] +var all_c_inc_dirs: string Hashset.t = Hashset.empty(256, "") fun string(loc: loc_t) { @@ -1640,6 +1641,7 @@ fun init_all(): void freeze_ids = false all_names.clear() all_strhash.clear() + all_c_inc_dirs.clear() for i <- builtin_ids.0.rev() { ignore(get_id(i)) } ignore(fname_always_import()) all_modules_hash.clear() diff --git a/compiler/Compiler.fx b/compiler/Compiler.fx index bccb131..939f84d 100644 --- a/compiler/Compiler.fx +++ b/compiler/Compiler.fx @@ -6,7 +6,7 @@ // Ficus compiler, the driving part // (calls all other parts of the compiler in the proper order) -import Filename, File, Sys, Hashmap, LexerUtils as Lxu +import Filename, File, Sys, Hashmap, Hashset, LexerUtils as Lxu import Ast, Ast_pp, Lexer, Parser, Options import Ast_typecheck import K_form, K_pp, K_normalize, K_annotate, K_mangle @@ -395,7 +395,8 @@ fun run_cc(cmods: C_form.cmodule_t list, ficus_root: string) { } else { " /DNDEBUG /MT " + (if opt_level == 1 {"/O1"} else {"/O2"}) } - val cflags = f"/utf-8 /nologo{opt_flags}{omp_flag} /I{runtime_include_path}" + val incdirs = " ".join([for d <- Ast.all_c_inc_dirs.list() {"/I"+d}]) + val cflags = f"/utf-8 /nologo{opt_flags}{omp_flag} {incdirs} /I{runtime_include_path}" ("win", "cl", "cl", ".obj", "/c /Fo", "/Fe", "", cflags, "/nologo /F10485760 kernel32.lib advapi32.lib") } else { // unix or hopefully something more or less compatible with it @@ -440,7 +441,8 @@ fun run_cc(cmods: C_form.cmodule_t list, ficus_root: string) { f" -DNDEBUG{stk_overflow}" } - val cflags = f"-O{opt_level_str}{ggdb_opt} {cflags} {common_cflags} -I{runtime_include_path}" + val incdirs = " ".join([for d <- Ast.all_c_inc_dirs.list() {"-I"+d}]) + val cflags = f"-O{opt_level_str}{ggdb_opt} {cflags} {common_cflags} {incdirs} -I{runtime_include_path}" val clibs = (if libpath!="" {f"-L{runtime_lib_path}/{libpath} "} else {""}) + f"-lm {clibs}" (os, c_comp, cpp_comp, ".o", "-c -o ", "-o ", "-l", cflags, clibs) } diff --git a/compiler/Parser.fx b/compiler/Parser.fx index be13813..ee6990a 100644 --- a/compiler/Parser.fx +++ b/compiler/Parser.fx @@ -5,7 +5,7 @@ // Ficus recursive descent parser -import File, Filename, Hashmap, Sys +import File, Filename, Hashmap, Hashset, Sys from Ast import * import LexerUtils as Lxu from Lexer import * @@ -26,12 +26,27 @@ var parser_ctx = parser_ctx_t { m_idx=-1, filename="", deps=[], inc_dirs=[], def fun add_to_imported_modules(mname: id_t, loc: loc_t): int { - val mfname = pp(mname).replace(".", Filename.dir_sep()) + ".fx" + val mfname = pp(mname) + var ncomps = mfname.split('.', allow_empty=false).length() + val mfname = mfname.replace(".", Filename.dir_sep()) val mfname = - try Filename.locate(mfname, parser_ctx.inc_dirs) + try Filename.locate(mfname + ".fx", parser_ctx.inc_dirs) catch { - | NotFoundError => throw ParseError(loc, f"module {mname} is not found") + | NotFoundError => + try { + ncomps += 1 + Filename.locate(Filename.concat(mfname, "init.fx"), parser_ctx.inc_dirs) + } + catch { + | NotFoundError => throw ParseError(loc, f"module {mname} is not found") + } } + var dirname = mfname + for i <- 0:ncomps { + dirname = Filename.dirname(dirname) + if all_c_inc_dirs.mem(dirname) {break} + all_c_inc_dirs.add(dirname) + } val m_idx = find_module(mname, mfname) if !parser_ctx.deps.mem(m_idx) { parser_ctx.deps = m_idx :: parser_ctx.deps diff --git a/doc/ficustut.md b/doc/ficustut.md index bf9d271..45b358f 100644 --- a/doc/ficustut.md +++ b/doc/ficustut.md @@ -933,7 +933,7 @@ Ficus includes the following built-in, automatically defined and user-defined ty for i <- 0:100000 { sum -= big_list.nth(rng(0, N)) } ``` - In principle, i-th element of vector can be ‘modified’ more or less efficiently with `vec[:i] + [new_value] + vec[i+1:]`, but if you modify elements quite often, an array may be a better (10x-100x better) option. + In principle, i-th element of vector can be ‘modified’ more or less efficiently with `vec[:i] + [< new_value >] + vec[i+1:]`, but if you modify elements quite often, an array may be a better (10x-100x better) option. * **variant**, also known as sum type: `Tag1: 't1 | Tag2: 't2 | ...`. Variants are used to represent various data structures from from simple enumerations to very complex hierarchical data structures. We cover them in the dedicated section. @@ -1055,7 +1055,7 @@ If you want to insert a non-void expression (e.g. call a function, where you are // Since it's value declaration, // it cannot be a last expression // in the code block - ignore(waitkey() // Same effect; ignore the return value + ignore(waitkey()) // Same effect; ignore the return value // It can be used as the last expression // in a code block ``` @@ -1257,7 +1257,7 @@ In the nested loop you can combine iteration over ranges and collections. There can also be simultaneous iteration over several collections, e.g. when we have two or more collections and want to process corresponding pairs/n-tuples of elements. The construction looks like: ``` -for val1 <- expr1, val2 <— ... { exprs ... } +for val1 <- expr1, val2 <— expr2 ... { exprs ... } ``` For example, here is how to compute Hamming distance between 2 vectors: @@ -1698,7 +1698,7 @@ fun (arg1 [: T1], arg2 [: T2], ..., argn[: Tn]) The differences from the regular function are: -1. the function name is omitted. You can, however, declare a value/variable with a lambda function as a value and then call this lambda function by name. +1. the function name is omitted. You can, however, declare a value/variable, initialize it with the lambda function and then call this lambda function by name. 2. `=` form is unavailable, use `{}` 3. it's not required to specify types of arguments, because lambda function usually has very small scope and its parameters types can often be inferenced from the way it's used. In particular, the standard `sort` function, used in the example above, is defined as: @@ -1718,7 +1718,7 @@ fun make_coin() { val rng = RNG(uint64(Sys.tick_count())) // 'warm up' rng a bit - val _ = fold s = 0UL for i <- 0:1000 {s ^ rng.next()} + val _ = fold s = 0UL for i <- 0:10 {s ^ rng.next()} fun () { if bool(rng) {"heads"} else {"tails"} } } val coin1 = make_coin() @@ -2027,7 +2027,7 @@ But when you unpack the record, compiler already knows the type of unpacked valu ### Modifying/updating record -While tuples are usually small and rarely need to be modified by parts, it's generally not true for records, and it may be too much of a code, especially if you need to change just a single field. There is convenient record update operator `.{...}` to solve this problem: `record_instance . {filed_i1=new_val_i1, ..., field_iK=new_val_iK }`: +While tuples are usually small and rarely need to be modified by parts, it's generally not true for records, and it may be too much of a code, especially if you need to change just a single field. There is convenient record update operator `.{...}` to solve this problem: `record_instance . {field_i1=new_val_i1, ..., field_iK=new_val_iK }`: ``` type Rect = {x: int; y: int; width: int; height: int} diff --git a/doc/ficustut_a4.pdf b/doc/ficustut_a4.pdf index ca7da7e7b19b6b7f5536135376e493e6aba5a315..1369a3cae32448017f150efd9cc46610cac1530b 100644 GIT binary patch delta 390847 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

8XVu9|1TM?kR+`?GT5uC6CE9 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 x5shevGEZ=%Hd{1ifZ`nUpAt>h(>- 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 Ic~U zRm59`YH4qVoBAoKAeNtk)xi2(jYQjj=Mysp15VmiVN+Q@Z3_+%9UGHj^C-tp@5wT) z#OG~%Q+GY1cvsV0r;W0CZ!b6DLzqtF%iW`{2KQwhC==MCO=57y@%wXm%Xa_hoV+EG z@Ozy!_Y9-=`ZN_rb@Mt4Kvc_MuhjMlpH|~iaxq}MwJKL9s}=vzvYhp;QR&SvF8Wcw z2%tAZ=?vJXikpyl;foK1x`tFhsMo=-jXMId0Gpni^K8rkNlbKJB$`(P?P)C%h1I>l zsMu4kwI@YeY|se--EKo2k8og|ymjG3D^iYWcfrly8R*L{bn zA`I`F>{5SQMyv{dn!wI$n=_b0px;lw1gu=suK&1?J4Y%m^c`tpWa^>vi5h%D@Al|O zH-+=w<@?-Qq3BX>(2cSGqB{G&Lc|s5 z)?K~QHXoEuXkH!oemgTVPm__y6H;q(VI9!Q_n_|zOznTrb6?E6SSWkC)QsUz0bsZg zM-n_qyF7k+==6J|Tc1WkdWh33 zBxEbtB8;1=oOYn`>TNI6#k**R0F<@)vR{y}b1UDb5?6{$qiOj;uDgnuHD7j{@Zp7bi9c{`u3gyu^RnzybSy%=)7egf{vg14~^^ zVv!>%TYTEYv0A{TSK{c?C8umo!@C4&Ig~di2w#h5fceVw<=e3i^sGWX3xHuIeV-lu$>s@|zzxC8(lKvv%1Cc448v+9CX)*i$7211TKa#iGRQSLKrXf{eHeS6k zBx}KC<fykj}_8GsgSj6a~E$$sO{8% zjYg(v_TM& zy*4|+rFFCev!Atm>#L2e9M5lOLBFa#L+q^Dg6LC*s+R%?=z-1?FhDTi*ZLTmVyhz& z8Dgn0O{x_#eY^2cn}@qCt_UmCx~*JVXEDSUSy9lzfnFb_nSZtim=*<-u9&XGoJ;5cBArpZJR1{orrJ&IT& z_-_bAF5XH>un^2>F3Ha`$>TxC5^2G&d*$>mD;Id}1V&ex%Vwmuy_$01DRmF8uk1*S z?Bb`EM_}-5I5F@DFYW!t#P^N1-H7t^%)<^MJA*}LpNOp9czMOia}cZ_?x(7=HhHcsG~JITvP+>FlRXQ>!*Ck)V&f|DF0jN%PJQA*?RM-U%+d>}BRQX>F|A{~@&<*JEYCa;B%5 zV{u`&+^jpG(SFOCs-MvA&C}G?LUFUlhY6Y|);M3l!+|Qy2Fh}51|5bv%`ipniD2YY zaSfB@HHaV)vKd(nZg^YM(1bLWJ$hj$aZ3ojjk!M7s;e% z(x6jhlAn-*R8jB8miI$8igWNCQJS__Cj6qTFPUN2pYoC>T?#DD+MS1aN1F@56klw> zLvLj}e$O<|=!0U+&$OeUsH>Q$fN0pU89JoAVekTwvQe$`s8<}UY(4?FRQHdW&ZB>- ztF$h2j0nS2T^xNyh~h|e_xt`?#WtkyhTGcCNMfxij$^O*$VJeB@37s$pPB#+P zxr@lZD{?&wu}xbDD#Ve6Gffu?3D#TjQ zw}X@d+TM(y)_H=Xim3t5Y7>Fw5ViRrJ zB>v#{+)k)=s{E~)$siWe@gI-fwB*z&YChLV@tC`M?Fsj^16%c#%}b=NySQ zeTyTwbzB(cGw3E|ho&97*Y2%;(V-#Ht|tE3Bu;@h%mmOVq}82FW`q=CXIS=<(*CrL!f|9w< zT4=u<{CStc&-gs+4#gl+8>WqYN4h2|gGsoE{|Lt?;=PZ>b3gayzY_OCNw%*V#Wabv zHY#agn@_QeBdH@FU3KPasesXvj^(}v@ZyOgq1K>n$D43iKs&uJxMs4aSswIu<4whp zmx|&mYphbq;Pa0I+<2!v<>!@kgZaOtjK#Uc1HWQgU2LUs10yq?&o`0ckGFdMaYU)F zZjS65CN|(gB<*bYFC_eV^MDunTnoROQ3wyH(WJ%HSt%^Bq?Mf6>B4I7 z3j)&Z?6)I>$Z2w>7d;wCl@@NSL8U~M`|YPmr>A1JMcDt7l_7iiPD)D*|DsQm4uh!~ zmz9Y+2uqVLd&sf(-4K*Bn;VGQNuW|j6&(9@Cg*Y2jS!fjiagcPO1{wOcwL^BWF8gDqK>-CmOR<_9SJr_?`iF~3*jQ>; z@vzB*UtG-g(I=VXO`r6(RbOibFZzI3;7{VOBVk^^Pgr?Wq-Ne0rkFHa=fOSIUk$f` zeGU0AYc+X+5;y)bu-6qSN1nJfMP};veo)t@7c4k$3&_7k31iquAJPh+ev&!pUd z0sn6kVCS0~Yne?=M^1*rJQX*E0!rwVh8XS=?PwL-j3H{ zqBiM9BZQ~$e|T6@pLp<3!$kk^)HjcuyA%p3l+MS2rCT$3>ufA(myiy*PtIeI8>X{R z7GntqKF5ndVV8o|#rcC+f`L!YdAYA~T9xI-3PY8Xs$*MhWB5K1ZSR4uO*eYpyH}?n zVFy877p+EX`{36tp7GE9sK_aNJ^^4q=N9$bNLF=+Yu+_OEEud48v@ykwVGA?`qQg%R;Jm_=lFLZcwSuL+whUbClOvpCr^t~s0opRcZ)eCL z%Y{yzEzWXlPnxoXp`^n5H$N=qFct>17r@_o=Xy8c`qV0QNEth7e|pcJrAhgA_j!%! z6&z?t+K>wZg?s>o+yEiSphoGgf<%2RCZkJyeJp7R1kzw55lpcADQ3Mw7P$ZV|8 znvp#_dlfwa(oC8O=NCYGZ>zQQTNDZKjJv@i&7*Plx#mhSa~`T}g%F!2b_!fQSx%Y6 zKR_nK2PxK2r}!=Kki2BLVqEfZ8Y5ds37KXoIYCBUBh@vEhsbpE9pJ<)^9rE!ByHFo zV%P?HfvdejU{zK-qXb?<;_En}Uwtmp{22EKBa;GF_17T?fWE5hOG@5E(<)=#h*`Re zIL%v|dHrp*VOB>)E;FLJ&5Jup!rTa<<`02(CU%2Ec=y1=%^P*`%*l_+9Uu1Zh3-ln z0n;yXMJ%HUx`!=qR$K7|2Okp9>)-G}ropP+lsXs&idjS%wOkD1PzndwaPjlI9`-&s z3KX+D@o*5UfK3shB`Jzw40pB#lSu641?L9Hy0`FyiXbX&Ljkeb2{=c0^X&$7(2%hm#kHl44_e-zG%Dq<+&NzKX<3Id8AS#rm zD{Apz+FQ6f{qla<2RyYRw&7bXc6%HiCU^epCpy1}0cwdNw!yjj9<)B}O|nm6WqUv` zTo@z#WGQ5GKq!>nD+r{9Ir!PAsyIpnzKFce4WsU>QO^**@2vWP7BeQ*$-Ygl&=*`j zSNwB2pHQ<|ZgwQumNm*S^(y}##-0CJZCm>X%GEEC?4+=uh%n50;L{JHl-9~fo9Ch> z(}DgE=sl#snpAIwsV-HKtt*Nvd2r6h5`|k0r%$1gvGMPR2hgW5Kq9S2Mm=d zdI?VFKbE+4y3|SZS)v|V;h34h!EriM?g0iaIKW7%Bu+A&ISROoHMy+HQlSgxOT#rE zN&6QtizyG+cq2?-;Ey4kt@1#mCKSkeMQFM=)-1zsX~_Z(S5+zBqnN7yZ7YXYpOsd4 z{G?FY)*?U$2B9tv+JuXl4Ji7+`g^2fR$Sl@KGVKgpwj?>wK> z-G``EPvb4#u2+#UTS!2XE>E{Gxe1j?mMS2o;<>up=K3mPc!b@5+WKxU3`K?`VE|{r zLDQJ|{6N^x5tY-%2njt_Fqh8R8;5wD%a**Slo@}yTJQP8156jCK&P6dkv0);+>EzU zr3qvK11{fO?X9a_%hO05oCicQSd#he?yGu=Wr5c17xdJ)wv0iF)3ui>bEo@P0pkmO z-Xwj+z4tFG?i>L&rT3IcK2N2z616h=_QsT z>DY&nG9cR*@VU$w8O9{I@R7L{jmp-|MqxWpMsuadEW+nDEZzWZzC)M3tiVk->ZTI9HnEI&d|EQ?w#HU3fuH) z=VLk?zE32gr;Q~kaOLoHp6z3qGG9spmU*M&0BqpeZSR1j*!+{XG+B@)*=?bav`A5Wlyql?p0aYBFW%AE+Ou8z(~_$ydDZtKS^kb*#fV|Gt}-adND? z^#{3*j<(BpHatHkMo17ZMwe<1@eKMp=~8Q*u=fv!u`-E@E%J!&?zuJ*Yzs5pcw1Zr zP7j$rqe#@J5Y-5ej-jrn?@wik=?-{u00hGw>Uth?C7h>!-X4U^{T1}dZVwz2{>s$w zozDM$xXV=$EtyOWyRfMBs*bv(y%%-;Z2s1w*Z=^wh>R*l@2d(QY<(jo(KB9|^-?mZ zmRi~WwLLNvJ*u)r9a5hsfyjMu_b!@=k!TI6Ih&0AY|sR|V)cK{@c20~Fam-k10a=E z9RsiNmduD>3bnpd9G;~7RZRf*=(Xby!|JRn9diD(Vk26pj6$oP_gJbK#{8RHOr@IB zE)hlpn63pYHc5oGWNSPSYUGZUpg-s4nw}7$Eu?Se;5w~0E--1*97&91*2de)(Fv9oyFV3-naNAA=xB%EyZ{0LVclL=E2e9b( zL<_hn#yMp@lPS97r%_JmZs>rIzYvfveLzUaE)u`aHlqzL46=7liIOb`F!2RviJAph zVR;CvdN)r-!l>S{V82mB1R)K-lZrd+YbN5{gWbFqRIIP@4F&Sxp%}wAyLTv$UTBH3#W)9TQgV*;l9*xPsdnmD2I&h zorMr`Tb+b1zvhsjSAqb|18?IVH<%Da4x6OTWjR3a$+$8`q)7w_TIHdS0@tGz&rqG` z=#%G<`intzMpI^vJE|mAR4-R(BWcULd~Uq)7_=v1NHTDw{#>|(7w6k&fCn-PJsJXb@_L-ny#iC;S`!^%6e zRxF@A{9UocST)>XPhh8Q zFmgkiz-V6z625nD1I*$c1M!XtcWF^Ayh9&2TqRtX3Pah?;7rE9d^$@oTCiN$Ovrl& zUAgyR4#QM)?&O(4pf&6Sll@v5MvR$|GPFB3aT{)h(#qvG78q0MXoQKBDCIijJE&)< z@XAQ=Xrh+@sORNBCII7nTtt?}JoF04UjiA%*3qQ{Y!3SuuBID&3@fQ++8bGC;Il2L z=XKtlv6s)XV+LgkpX`B6F6Pa2{q5bv>+cz(keDh(5o;%B2!SW1dXYoHL$aAAhr&^$ zGpbDBOXZCB!+^;J|k<&3>p>fbv{K@5y15T)|#2(iyT9GstAedxo0G8*M2F5 zs(pKOND;q2hSkLf z?QI={M2{!Gyvlva(Q(m{@}PxaH@MYHlE6Ndkgpt|uE0)HW=OIOxVzj#oCdYgk$*NX4mgQ|3)oSA}we#jRD zh{Emhy1Rsryg7826y8K9F@RfsW}1So@+SNj=6i(fZ{DM7YcJhyvR)Yu4t^R^ZM z-|!`htG~kWpU|!g8`eUOp)FS_|G98qDWKSvW+~LsVVUDWFpLy*1@_De`WBkmaFG$^s506+x{e-P80Q0zgli1ST*ph zL8p)v!P%SbmP_9XAqny(M1Gl|_GAWLi2F4?`a@!psUN+Lv(YVAS&MT{Dg~W*EONB4129FZ_Pmq3iQ z>ZGnZ7!{Pu`M&53*r)}ha8<@i&@IBt@=y>Wgwl-rBp9|b+oGQ<^u za*Dy^2{cP^W3g!*R6{2$jrau}Ch?vf!}_1P(lVP*e?siMj_}qJP3RGW-zHRwW5bGl z>-)S-cD45xHYx6*uH=5^dgr{p>`GL;ezxPwU+L)T#y)2Dcq!Z+0Zy@La`auB1A8_L zCoZr8I0sw*ko5oDm`em0{EH;bOMTyy9lsFRJnpC^l>Pu`uTJ#sT8}q=GVF2DNMp2p z`8Ud2S4^Jt8POGY`gzyzT@dwj$&2t0ag;>&Sq^7w0|hqI4J?o6pPo$5Kl?us)FU!R z|C)*O;*vYkI-tiH@&I4m({6iTxnLAoZI%#!fUro;DVQoD=2lYD_S*;zf z?@zRpKYb~aX$0DOWJ5YOMy{Edc_*5aucDa-Tx?eZgN5PbNkEfA2an_DK9trJo@(I) zpPLk`LT=X31E^|r=rV}#N4!a^oi;S%i8utH}cVR7MG1E#P2;L72VZG2_h zu!ty+tcTA6E_n%t0~j55;JKX2_a?<5gXk$3&x&)<%@3zw2IzcBaPzTU6ljAW2yX7O z0JxXEJmEUrr+^mTD)MJA&Q=BndAmN=(@;$C!|Vat>2(I#Kv^^wO_DJzs+g@EUTh-bsJe1bv24BXAmS91e#i(2pv>)X~=eEzLim# z*1#XpqpQhe_i}hBja9A*3?z_jP#9vaS-oRQ$iJdh`2k82gY0xD&=G7q!gkL6UrAfF z%n0}*VWTGZ@Fg%Qb_7y>a*{JdAycm}4+JAn%Tvm?R~}$QBe+eH1Jhne${pa*1NWdg zcgPauSz36fq)`x?M_mqNo2}6N{^G}$bBQ1~!7zkHIG+|S++LL?(w~PlWEobdPjI%4 zL=fN)SpX@)b{Qq;`>D*4+)LKJ7RnUsXn)<#II-(uB@w7l5gq1U|2sSzUmZu*gNn4d zXLlAvMda?788|d}^wU5JTwy2#LsuMhFLN9#c_<@d62^YA_@Q}FG_^eQVB9iFOs`0s z5zC+7(3oCvL7m4u%oTJ_fGYFv>e?sku9w|mZGe4`ouK-`)Z!xKs`m92f0?m|=ikqY z4`e+j5(HEWQ^o|Qt)}eORZ`1z2(RhF+rR3W(hU+v9Vp_+YUvzaRB{nJ9}MKigXA~9 zb}1+hwVl7kH;N#1b|xgL3hHdfS8(K?0zI8PG#O4z?QJk|3SYZPOm2ON(Ui+qk-avf zs{sDmy*` z@HXvqU$(AjY&UJycZgJM)nx=a)+>8)V*t%s{tIVp(^45plKIzwg09$050?rK{CcQ1 z>5N$LkU~(nCj@3j%hXp~D^8=|VeuL9G!I=(roZpZ3I}Dr?h-w}sZoL?yq|jH^em2A zHcRn$iMmk*Y;bRg`luwVd1JtN-+C?9c;scKfw+^x>mvZm>j2iR zS>oqF{BK1}RPTKR;=f{gp(^MVogOE3H%V(^M%rFd2z&@=O;i8mnRSLyO*fPb?ZY2n zRHG)NT#ja^uAhO1MCL*!4)J~PTiGu#=hq1cgKz%3h0Mu8=0(j@u>4D%rQ5|UAq&ks z{>^bk-F{oY-zK5LT_Fs{zvDSFfWmkJ$QU2zSc3Mw=sSP*;c5co3{kf?LmYvxl7nCg zmS^^|x!b=tmG~qOJgCkk7#{du+wd+BJgO>?9dV~=d5mb~@}Djkei>+lrtXPK?!q}r z!}_u5wEH1q;Zp$C^W#LEfDPME4}6FHn=_B;6SN!xAF z?DuZ&oK>5st?=k)Bo`daI2 zLB~5VgK2rEMqGD8{zZPTM_Xh*pK1@|brIspn-8$o+kYJ5Y}8ufr;u<9`oqAZ&Df0s z$6g%g=S8B*dJ!F@4ZR3N&Zwpa#m(Xs_(lIYxKcf`XMFL5M4HMhK+qX5Oi+~L6l?mD zuAJhgTGJ+%Y-$}MJD@%o_`J3K$1Cq9U}eSG*1CgS+ww24m0R>g=AIzk-+iIiiYxh7mtYQMPZ7K&FgXqz@`~d=J%mSFFv^?v@FI28z4-}T*%LurzDDXNC?sGYvttO{U^+l(p8;^VTPSGeF9+Gog1X_Ckwmb)_Y+KpT zyj8qneGXLlw?5hP<`1CC##v2|6hr<4Px+g0W+P*Oa`-zv*)OL2>a)q8THsEie>UqJ zigrqEyQmEzM+ABXJ;{a5hH7U#2mF@TKFq3G|7Arg;Q7fZmJs0fUC0*Xp-Z8M_U5$ zN}jtId?KprfmtMIth0YbM!icu?vfTe33>XGSlq(>*TPbO$s|}yAJLUgqx8&rZ(@{! zwhfG-&61ncu&I6#L$e^MNBv4`X%F=4plx% z4V!*%P{p-;skCT+b90;&Ie|U!-b#TVcaKD;gnCn1A z%U#vAwDY1&86UdJCf8MQIi?Qd0?_`T9}5r-#RnH>&x$Kf+19+*G-W!IQw)MY2dCUz zI{_9tcRE*+Ojb_Y(p2N|AJJN5z<1T81~G>;tW78tfQ=W#FLRdhTN+Lj{{ITdC%wPG!%MJlImFt1Mp zW9Nc=Q``(PHZ`)Rm9Bmo+^E|3^F;J&R)tsAO%REz9TRpZ#kLusYAYQrEY`n9T*fWAR(N|93;|ZBBkis zl_#39!V4%@*z^-Pq2ufhDysjJt~mbFkIiD zXF?R*L1gidI_w|=eLvC`c5(8%vJ9GEV(m@+&8SQ3DvczR?1kt+!Brq+I)3I&BF|n- zLI#ScvZbeb>ok8~0XA}e_;(c-C*;-5x8(RqZ`K<|7H%8CaqwlHA=R!PvVUO_JFir_1$oVidPm(ET<}}?yp^~ znbz-`NPQE;GK!%HE;V#YsINN0hm||*s27!SYUEF(HRR)i2PC3w$HOWIV1LroZ1UU_ zIeX5o4s{>rP}8qp7KCbPo*%!IW-i3WfN@T}QVAL5D*4@r1#PFz9VW@ufGM-9sbmOFZ1`)jTvtjc0Dn};q~ zy(yf@*uJyo0o2xU-t)*j;ewHOKd7^T);gf>jdIQgi{|(Bl&aSjvZ$1zrpuPmTO$vK zN-K|(B>6EES8m?>R8P~NvMkm@ z9BEzZC&d#J-bv*S)0qN&+vwI?%=~-|);J_H5;@Jan1GP}INNh&Kh+&4W2%%d*05cAvUeb;cmY zmiG`xz@~uDu@kLMJMQ~IHjLd#$yutV-eMIx3T^_q!fZIu^y+@N$Bkgollx0jfEz@Z ze~{OHV&w+vwM{qtnoAbOzlTPINL=pCzcEnTA8R0t4X&s0!LB({g|H@Et`t4<`UKL? zLhOiR4U#JNqvQ4MH{{#V$;C_rC8@JzOW<<>c-}{wy`fXdtk`8|Ocf>peFkdHb?hEC z1}(GcSdq8KShn(3jmiPEVw+&FKe1VMOaOj^cD=!wCsCH5VZ^BNOVDi&?|YZ27$HOW zcmOKv5L-)vt}!7=URn|FfooE{LO#@7=93|qlF(%exYIuu=F&cUvr2qzz}ifMJ~YG_J5?QuaK~z3f)g;WN^jiMA6s!La&u%6F} zZ_vMMpj7{NSz;stEdOU`|NlA(4)Fs!3GzlizruYBl{GO6^@V^I6V9|;m8}~fwyij) z@pX1TTyv5udHp3tbCt;3aav2J3MZjfCc#b-WV{gBCG5cRWnM!*XCTzS86v!S6ZHO! z6Z}4|nb7~DVTg7hy*OO{Bw-^@)@>#3Po1cl27JFtQ#)(W?qqfAM&0EI?ni9xeB$dJ zy#;C=17_=zepCU8l-~RVu{+%@Mn4!I-g4yLb=^M3g@=J-$w{vMg)=LJ2Z_z5vIXSpAVM9Pn!r|%F@<0zM!f^Kcx^%#SW z^D!UH$^g^HAEb$^zK;)&&<+SfC@mG{jD6MrSaS+eM8i=yl4%ITPY=^D_R+9 zl9l*l&ZufBEN#NDfaVYKe&vIKz-HG0ARhRR;Ui9%yxlZ(0p1->nC7>E+~1hr|A(CjMdk~p5n|!%5r`pj=AvG2Vzo5K>nieCnm3KxntbLc0r}x55>R-=pG$x z$QVI;{+(4@;Bdl)mq52cZB{B!67VJGS^HhmH&F6`6qXKO#m9 zwYeB2T_8(u0oF0q-@uRKj@H5w5)w-fL6fA-+~jA1KtRR~U%yQzz|3|S(w>|?n}B<9 zY4{G9U2E7q)2{n`K&^#_W^aE0=)jj7B+K2CeBx!{e+gOeM0FPK&B+uc$+~N}dyYM-RnjYAXOH|L4PG5FuX2G3ZGTzEkW^je}@K`s3sHUw0!z23z8D3_>5|SuB5K; zE2E4M#?`Tgr0bj-#sVf2jE5oVlhx1}i-g<;bL~8HOdJ$|aZyywIEvp%!Ni17Yy$nG zm>z%S1uF$V)1c1sQx^lbRC>mRA2yq9HPvN@7*Pn9@on9*BO%B)4_;$7Fmp2zxR%_-&3IPXrJo4wtk}6e@npu0AH_JHo)cUu;tXc z`Iem?^!qi~3jD(WNXGo!xv|=caJ?Ga7l*nk*}qu57hg$%A#`6$-F$pECT%_t?bNkK?NvyM z#$IrHnR8z%YFhr{?r;8^(bt{S9akF|REuFouTX^0Pmq+~5VN1&xyxdgV61h8ID-xl zz6x@Xl2(%7Bs5Mo4|?i|LpLE{P_Qj{2KnRO1NR>6jdcQggZMBAPX~)W5T_tmYesJd zq;BF#sV@>YfE_e8Oo*1Zcp?NoL$ZKtqsRx!uW(HotD-ue@_szc6ZMC#Q(Lo;{9vvk zOlHOVbuRQg)$YHm7bm8=+E#LD35i z^xq)RHbWS_@>en?L7OM60*dvln8Ol08^U@70)djZmamG^oynJKc=XU z#xt&CS9j$Iu36&S6^^^^Y13XD)|5JU z)Q>l%Vb=W_m$5s&nWS^qmw|)a4UYx~v0ojbea+<{ zB*?=fi{Gh&^0IJ>R!nLuzt9X2tZ2?EPTlD)DgdBy3^D_T{mmxFqg7C&XvT*`)zMI> z0&bjdfBPY|2xe+XdOd#)?!HUT^u-UM-jFZ9`FD3i`*Guu{HY!&RYxew#ks1AYjE-F z+Cw$_kOW}P$}Fjhn8Z}@kPir1P(D>XHTOXXWfHirprImGHk=8@Xul)uyqJgLp{_N6 z-T?CJ-bfGvv-ODIMCFqHmU@aW<=uA-$QoGjYfoVo zqTrKhdoLQNN4jTlzUuu(r5te1zXgl@H#==YH!3Ev%N zY^WpI4r%`u=ufJ%{bT+mL+r*T#+F5Sz_qhXRU{eY4PoUFv}{J|bQz2xNtnPdjHaFvwQE>9_^d%TsxCIv!lwcsR*taDusLNh)5xiLNHa2D{EkSa(PMim8)lB z8Uq&6wW~`cyyEerpNy0QZ*Spb1_`jE^yr&Bh$Rv@{ro#E5qn2@b^`83yo>7Ckp@~I z4!i=4J%8u#vx0ZeWI+=Xk-JT$KBS!;>Bh1aQl^aJ#~$A~F~SSG-8Xbq2#~T+8wqv} zc4870$ro9D^ETWwX=2JQYf(l^4uXqSm z!#TeBsWk*X6_0iFBm3XH1AXnIUrR@zGVkh|1@liFs^_nZ3#=PJYr2(x4m*2o8qhuN zk$?2IDq#HN7wwGre^h-_cx7F%ZPc-C+crA3)k!)|Cmq{Zv27b2+qP|XY+Ie&{O7!! z`?kM&sM>RUd#|chvucbIP`DW-@RF=Cl#d^3^`PHw9#NB}f){L!V5~!LlP{W?#p|ZD zi=UspaBDD9QQzNE`&Qk|w^)Kaz5%Kxe04fWZ_R7Y6Frer4QF;e)w9fe7R%P682_-3CDUBHF8D0|6>*Lvb!HQ9E)Dn%>4I7sr=JyZ^w4so>mds%O3CE70!sULDbPG zAm7SYPFJktEm7P=$~owv~O;M5xiSmP~PZP-oxf-0Q2ouV(~&S9bIfO!`bm zRFEL8B_OFLu64;=Q@j6mOiudz-H?d95egjKi#75SWjB>gzWCPf8%x2qSn*&*w%W4>#o4{Hvl2L6y5Kl!s_E8`g(_g!cKH)IxUd0VA`<`n1J-#;EFFwq6 zThcVloisz!2oxP8csyzk2@SN00?YC=`w$C3vd5yLtY>Qjh7MlMlLgMpA( zVijlK)Li3awCQ51>KQmE#=x|IIJC2UGglMgD#n9-F%SSs4fvQfsEX`ZE*zK7Ds;uT zU|%E((u?sWxrpCXH4x&e%_@|8*KLhEVmItLp!6=~rA~FfrH8ZoHCmr41 zXG`2t`8z?FDGMZsoB5B;@N38sAA|-PXe*uyfAhFrtNm_7rD!v;_R9Z!ZRHb~9X^q1 z)gyH71V*$sXYoiJcK<%0Iw>Hrm~WuS ztC0Je?aD(|6kUWYp?=SKA$U$6X;+MkxU;L(+H|-k9wlJh^jB2!ppm)t_)IhwGx7pe zbtsZMPfIlhKgy+jmj~OutKuWl+F}h_JWN>$6HC#;G!zA!dDKvcJyY3GfB*AN7tAF; ziv|Q^1j_mZF=poVL-TecWW>-{6sFvEX(t**cf?7r>NV07BW&}yGF}Aa!?hM_P#cSp zk?veQUQB)zm9PAcW2N=eF8jbd&l+=!w{Fc|Af`Bnd5JWP1f#&Ravr#Die=c)XtRf* z>edl^RkIBcLFq_#_nWtz5p%@NDE3w};RE2jF25ER?LM%zT~QX9lN`CCA=)#EO~pl?fc0M(1L!Wm2+C0tvQO zD+}ED>QtL=c&6UykERmJg*20R=90rjt#uR$MLq2Lim`WFb2LD)qwD9(w}0Ykpx zfKWAY4pX3H@bOCiC5kMSp`WZfgM=0G2ZQ=yoC7U+8)e}m&OtmQR#TsDP9qS)^;5%4 zSUP;M42XzSJ{jy1Q^lv$Ig2lt|5vY8FUuY10p*eQM5gzE@+%=yR1j~t|f!>>Pn?`=!iIM^lc~r8LI)tv~|8<1BN% z_Vw4{Ag8n7lv~aGI-3SQdD{NaM9YN5+^;3Rj!H4!&4rHffXX*ad(zPqQ)`04+KtUI zy_WCgM47AU5)<+>)GnKfWJ}o96C6w8Toi#_b`>2;X9H4Tgt9cT(y9P~WW~vISNCp2 z^*XILhuu_|L+MygG1;>1Lv2rLoUL0_P^Um`c)-1-nHV!%4_oFRwAt zj<;!Dgv>KEeGriiZ`9RlWVebni)U!slC!|22t?NpPOIWNdc&@@X4G`%)dha{ z{{9^Kj~_xH`C`HT`v}0bIj4DNjkXy)rp}tH(ffiV^frQX?zZiyo11zv5t^po@IQOc z1Lg4}wo~Wz>zhSQM$Y`%1-dP9Z!T{9vUQ7r5#Lq9KQh5hU9LKK4Qg9WKRkU#h2kAn z<@FwyB2@4*8@*1IEOV$}qp9^V``?%R$zXy`VfCax;rUyAzFh%$(7~G5C;fdGUgjyb zE6dtQ2xWB7i-IRzofCOpixWG1`BON z=p=^yt0H8Q90aVtN4DYMY^uaYo6wv>HjT-km-@L6gj60ztpw)tpROt^3mLw$KhYaDM_o+-SGsFUwx!OR!%M|6p`rU{3?S!nSf+cCj6WVg+>hzOc1*5hD;O_ z{eUgC0I5%LZ8rRuc=;WF(w$-}T$S=W+-@99&HACucS0^uT;>Q$-&cjaC3I6`1vwGfFA!DSmHxPX-=JCe z!VnPg#@wv$z@SC=&)Q5Ph-@MMZT4U(wP@M(xhfremWMBH_^W=2la9H4{vsphkB*(% zzWFL&xLH-r4dx2?yI^imV%X3KsUHW17X936?4uxG$A%Wau2}3F4U##lC{lKUL>S0f z4(0NOK)WSM`Dqu{k)L2WM0iF2d~u=xam{i?!n8544__KTA_$0Oqe%Qq_uGpJ$>Gd7 zS08Ux*{HDkWRg{S0_HSfa6!+%Uux_g)YdSDw9EzA|5RmbyzM)GRVNy*f^Vvp;+aWs zF?mzUylsId#>{?Np?rth_-!81+bog{8~y2m05iD$M55R`Hsm}2uPkVdxjPFCOEC|J zDcR(%^tVS4#5^hwJVQ-1C}oJ@GmH(k>v*6`X(!$PwwnFfFx+mEMD|xBXEF`4%xIon zKe}n&h=Tf(p;}TQP2OB44d--NTSDptw>vyxXas$J@bY)pm^)8&p_mK#ZWD^sLEI{Z zEmAJEGr3JygqrfJSu~~Hc-|ba82Z}V|NZT`BXp}O_7AH2p(M0l7q;Gfpg0BmfVJK$;)h|B=a4H3~QHN$q!nCACb^Hf$@Kip&~V-$@#IQ8vPD_IkWalEVern{kFz zMDIZ$dpg%BToVS1^i1Qb@=|JvRR6OD$rS1dG!VWbkXKd%;Ykqqi~+!-(KMs}x9zK> z`PKGiXZ!zHUj_+AZA@A(vaA0P)#OKM`$`aik%R9i7upIVx;QWX-0h#B=q6%VsA~Rm z{%Ejm{w5HXPaU2?-8F8D<&t+PiE;JIJFFXyPbUCQp%Ok$3GxS#k5+Y1voiV5BPkOe9v=zy2^N)UB)u401AxgaI|%! zuACgZS)ckvMGybZoB>^*|8AGBQvNcE{Qyt-V3u#L@ zE?#BkQlCrbMAEc& zBRmmS$r!XvYLY@OKR8++7*s~Z#9Dv(f$H6s!Gf_?mK81&ri)U4T#oiXa}6sinPL)# zH^|u?ELvnAnGS}=+qv(=gK&hxaU()DU*Bpt-m^Yw6FULE7uQYpZH6}4g3qq~gF(V} z<|^e6Cqe2Wvx$a|iLRkDg{6BXBxo>**6wi6 zufDrvh`*plQ12HT+Q~L8>iNkNDDh!3Xt7*Bxgif4=DkEIqXK?+054qikJ47dS5 z%3H<&dBtje`p|WJl`w;HdO3m{(6|$7wC0+~JMdW}@qBhCPm@B^HRdR_&UUDZSikg6 zvaP-*Ue0*E>KxymK^BBecI*h3sAk&V?LeAU zpe|4%*_wH$6o|`Z-#NpPG2`>a;r?!PEz_tGxQ9Lqvo14Z9X4W^YtA6KRhCw}(P0L& zRUQ;;v$&y=547C)m8?TameNLXw{xL|h2#%5v|uQMx?2 zxmyca#&Fjpp^NQvbH|8%K`!<%qqIax-X&nZU7-jEvKKV16bzf#pp0=3u z$5kUSJ!vtCOF~&kJewSb33pd>Ags80g}F4mFjR`1O?Wgc1vz~oRp1m$9Pf$qw*@d0 zuosf4VW>_MYxekeBTb701xmwyaxq6_v< zU0J-@=~RBwnWJG@B+ib-0~1=tb(7IkV;VojEP*2jRiW3AnFX zq_YgaLDp70Rqa-sQuiFq3t7fDYXqZPx*G)?4=FFysi?bCot9!9AM%n_nc1+qU5;|z zw%83Y{L5(6N56Vc(hT-R(37(NdCUL}aad!BY{-lzCIwxj<;k3yiE#KYPzvzh$j+-t zVU2kwgU8s1xx3988ie&i&BD^K-l>W9-|;{Xirf(#o+v(?mr`eS1S#<6uoO z5@S~7WMss(#N?vAF3jB(%m!j7Q1h%iZHIS!Yvx46M49M^JGXpB#E4Kxi8nj$L*)p9 zEMjj^N|4!{3uNjsoN$5KU5E%#qjlbT&E@N>naIU>ZslaqM_z0@XJxlcXqy3c{60>u3zL`@nD0?uI5xxAbbHOi? zyJdQJS>i}2fXSw&Rr#$ZR=QWw_!`N`ikQwi6QmAxIq{r@C<8!Ei2W?9VGmGGsxeD) zy42k!PNKHpNOe=FyMd&EJ{fj3ZR;cAm&8B9x=SJ;)-Gx5-r?2 z+4-17A($FCrmskIE4*vG7MBmp1%!+AaaFx4w&&f2WSQ2L;`zvA!VO1r4+(NKOs>5!_Lh&X6_<*h zj(zK=5{T@V3|!h$v0nmvH=H8xPmyZ$GpKQ&@=HxWISN)$Av=gTmE!lZ zALM$-)B&^r5K-8_v066IUIOOfelGi*0+4!3tdwn{T;_5l;R5mr8#l^C_@+9|++?k~ zIS(plLd#ONKh|s8n?Fq=E7L4fWP406%?j)YC)FkwUFHm8hhXx?kYch}Y!MHok+U0U zhQnZF$U_d1St(5gJW$em4G;$-456YMnT;-gzybX_N5q2M{KJtTo{qValcmOK>OUx2 z>=){*)bXvR6=6XNu$kz5RbO_1ggawFF^Ec1D-G;$&rLt;-0bK4yFj#+gP;!d1ho#T z!a76YN1&5FFI~!)FrcH+gQ$rQ-k5}?DbxCFmRR{s5Ge{)54{-2_HeaQcqbZsa+oJ-^tiX)YW%qe z7axQIT_MLi=Ah*rq&E;>VD72mZ^Z+dDiUcpm^W}wu!xt!O^Z(;j-ugKVUV7b0C&pj zf^Rej3--Sq`m(-V>9#hJ6<8|xqFP|%Ar3bwFst&-?C2HV99cWMp_w9UO}Xb7Gz2n#J+OMNym1Xx=Av>JbiQ$|kpk8v69 z%zF^+fxUa=eyQYIq~4nT$zwnp?b=iYF0M+7L_$~7)B}5tFlGunZ|m_=;;9t$i5d$- z-ULo%Zas}Rj;XFVn)Cr{3=jXxI~H4UEJM^y z_7*bFJE-G@v=2);mWBg5((GW8WI)uNj3Exqp6t%Yz3}e_XIVB=L>^Glmw_Tg9F%FW z*h^RnS_MPW+kR=bA7fVtXCuRQX%?Q7=q$#Pnew`Wv1igL)*{Hfr-}*w zKsRc(#u8qH7!ex5g}H+DC`a-uU4FD7lDS~yTIbJ37cM)CpzKUF)RC@y+s}G zThzl=c(~2MawN7c6vvZH13Kao_r}py_}noL_cKXT_xG$9lI^E&flLPurv|QQf zEp9$j;&rl2FI=_T3ojMUKhxAue&2~w;bGPPMbqxV&Ve#UVBO47K-mvw_`v9OaZQP0 z>0b|+)dD9pCqH=T2__3F*}Flj~Fpw*v#Tre(}|n}#P7 zjD`r!~*PGo2rkpGk9SWeg8G*B%FrD@? zQV!?27W;Aw@RG*&fmOWI=MB?PSrG}?Tfx225duzPS1uo@2(J8RmG77$UCQelgE9Cn zUCcq;6`r-8pxn!vEe{yb>7Zrw{i7V~ZfrVLdfS7#7+14OM2<<;Ylx;~`}^YAwgsXM z_bCp%nM|Nt9?7VoG{5{-9BhKwQX1w2a%0)Y7bPBGmegTJ&8s`43z&5U$BSP}L2BG( zPyrFaN$E`Mt+xDn9nEu9Hc{mDU(PqAeL-QFgZP+!)7O<~6A`uXw_FCqgJ|DE$(PU?SKcA#On|j{75*5?DCtJ5*K|6^t-{e!_X=~aWJoE^ zZ{-*Dy4$BPbTexQm5ICv7;^?K0WE+rYPl}MN}>ibV>UBQxsUwZuEtd9^e=w>Yoq?a zg?MN!SVpx{STi{(g+H|fr_NLPNa(@2n8S9d^zJcc6|%p=a3QzpO7XuMlD9Tm$w1}L zGp7bqg4pRAhAajsa2GQgx1sa-cDM+keRe_BPhgmJb}9hc30bZR%cmk%k((H_jtzh~4VW z(~l-#n`6RJwx=~iWJp@0Hu&@hhQPemlv^QB7PLZ}hx1^H=QS6jZyUzaW53G&N&@SL z;2m?mW{rqjib!`Q=3|z0CS5(s z?f{{gWrPGbS_q4RF(gqowasB30*9A80eTeB8Wh9DaL2J$%D{`h!rlG1kWD)i(G8R& zQ*X(+?F8WtS&gSQvD$5Pcfo}p<(3uV{oj+zJx94%Tb0jK19SGD$(}-r1uV1Q#0RuQ zr09D0zs8I?he*(&;8b7Fop@j)Q*N39Dl<^@$@6~_t;%1|_ zAtwCFqw8I5_rkW%9gC4W?M%g;^FpOFtbc2qu)=_f0ZTJC@(QeNt$XBke7^N&t}@qr zFpd1xa;cRK(g50A&y(o?{7fSyPyYGLE589j^mqpKV?9=e2cb$3X%s-a`N@^9sCX;^ zu@JL(7&y8~uZI|IB<`{PI#XoyZC{1@NsFZ`NfC;Ni*0y4hwZ$svP5^`&pN zrvFF=jDZc=a3w_KkF^wIhdGwuPZQ00s*ShPGsXd`VJxex2%TZBn==UIykdX)`Lc@p z22tdY?=%=?CyNiDdPe|B9)Dhxc76g5T{~6-9#gAy@}x4v(YK?y2`61iNZe0RT>d;Ie z^MksEi}#&#LYa(?;nY9sGch-ozi|V3!W)=g;JcI zhHKw|PmpN2uyN@ebrhx<3iE3@(n3{gk?%q>@B1_HN%?!jG}_#tcwySlwc!^qvV*95 zqP7=*l;NIoHhqCcMN%<=4l@eTyICTo2&(DX*HZd>UZjzKNoQ>SThv7vQBmjOgT?FO zQP=e8XdDt?tM3corRZ>|wOL?_MlO-G(Gi21uvF0EdKSbhd0y+I#^oUOVbE%|P;uwr zvt=DRPqoDsg%+z27vrdt;TmC=+?d^T>SbKD-%1T@K$L+nQ)td{it?^SGOLHtAkOJr z^e>LxMnaA`s;N^-BV-K!Odhj((T=;L?j@T=*#<||qrx6A=>`YRI8;GCN$+qs0n8s0 zs6^Pmp|bEZ6b?1I`i#%YY!1y(+Z}yurMWQ#B3y(^u-={Z_7j z{@lT67gj0*1La3}%W6LSI?B z@(Lg4yO*xyiS1RRguWe5BO6$k)2!Z_7x*d*#jsza*^foRZ4IW~l%=ljfS)tr_;8Z} znh;QI;e9$5c`{hQ__CVlDLYU_|D8M1n0G!Cjp6)9bLDM7OqsMxn5aC*C?nPa%nxu1 z*F&K8#}8j9Ynx1Mvqvv)w4qFiVu$nA3L@+{Ie0sTLT%YYe34_%-JpIFD$~4*Qevab zG|mi;YpROHl#suzi3S&fNRLD&6_qVCNK3?unoOJ9&8j&tH-lnD-G(R0!N0S>!K(EN z?mItkN(hbg{Tm>(O;&9yW_~w*c)9ynRnCg!-6sU&^`|o~RsZ?{ z06q?G^@W%|JBW*uTHcAEMR7<2buY0Pp+oC~;67X4pAM=^!KB8|0pP8&>-Oz0Xp)r_ znuj}?o%Au>5xz7n<8_kt{_Wc`aKH(jcA0czY%8a4-J8cN=6_BOYZrqRJ2R$9)4m=N zL7wQsH5PJst$*ejL6lJUXv+u$wR8D%QpQ{c>+_@v$Mfoq4hWWnCtN_7LdxXf!&LOZ zJ`6DilJq)T6;dUtaD_8n>NUq#|205+nwgTq#$7bFe~!4JQ$s;8iW@5cK*bprB{+-k z=iPX^Pa?pcp#Fh%i_04i@Z3QRa}0^}hCmqgJqnS9{kwW1Ag@BED3bsKL+^2VKNK3% zPqlW$hZf&3Hei!&~^^9uw97rzY`GbIhZr-IXvK`}Rft-h|+)x$bL;v}`aNKO97&aoL_{T-X1 zzDaxV8I#D1Fo8Abd;TxE(}?zE6Yk+cfd&-HhaYgMPH|&o(_hE<$vs*q&~Y~fW(}zX zMvUXeg&;`7pJWwn5_OkphuhcNYb|?dAc~K&TAO%ug73%D7d#mb7(w#*tIQBoJDUX@ zk!YLX#rt=6jKOZ#dQ^I>#3_Di;nms0#r4G} za+J~4;(4Lx*tIJ9C7L52)7Zm>Rm$(7u%L3Go6xn|fA&JjAH)G8;oaWlXS`ysYPjn? zy}?e3SAA{8G}3vr>Q-`QtxasYn+OJ#xh!KcLPmtC&Dt6jC`=MhJ6K31!W>4vv=~51 zi9-h%hbG_-eMyOkVN>I%q%W|-CslJBS+l`N#_kpnWu$=s)yf8#e=@^Rg2>wYZpFHP zhsKE+<1*p!%1~oO{Ng|Vf?ADtxc>`k!p9$QZf;*t%StdT%JGi&e?bi%-cuM)_Pn>b zXIE7*jk|3##_Sz!2F+ox=11+ti9hmp?u?VoUSp&K&*9-f9eGb#%V=l%EMtb3u_bZ_ z!S8ji4EPxQ{xdtfpj=&Q6mCRPRm^auE!@lN3uvLkk&-W<1;2oPp;vJ)4E_RIkaDyn zgiAqijJx5B+oWSS6$W7!O0(G^DtB1$+xAL@SE>vham!_jJg1m^hgvcNVkyl)*WtP* z^f;_h0~_y+4rUk_#Y_32^xMld``f`4@gb>Mzs|mr=WX`N3!JgOQ zDUazWHy?zTmk!e8YpGExpaTydUiM-XZ{6lQjCdlDX5fEL2`9;P#V2^3{XRV>f5^j# zyv_IVt4a&tRP1WM%D>)5@WeL^2*+~6m<@$#n=1Eme;Q(;+$@XW+Seqs4$@~(@d6wI z{*(@}nG%#oaBsz-K?9{Kl9sn{O9vEEBI*pIKcJC|8Dt`7skapQ)%-Ugq0r{wooIy* zgL&j;bDQJY83%>18%@t&v-jckctGMaS#pG%hQqzapSdd*dIczO5;mi>_ab~Z3 zSw>VpRPu?j@2f*OGp;_&a@WhGEPc2Rr7#M)EE*PM^b{!?r7!ur{YFl!*u^AY$_4&f zG;3T^HIQ#OXoU=;#)uLN5$!Xq}gTT|0NHvOxN6tsp)`(!*vNzg9&fbT@7VhaOwXP$QU;;f4s3&2Y4+ z6;=lHEJh!B=mtY|_46>^f05QT>gv<Y7b>5f=eK0I330=l%+<%EKWVdbnDau#PzL@S7e{=1A zsb0^q#kC*oPwX`QZg_BJ5(VQ@3bm5P^ z=TSr=e$Ffq>G^var%0X%O`tiAqxwF>Nz#1Z{Wt3SNc0DoM)kuNK*3{L$~WKj@ErQk zU!P(fXBI_AH&Vg$)kdE+ghhHwAG7tdcrqoFK>_Ny5> zIq=tEoD%MX=Ru%|9pox9O=$$gsG(950hsId~Wlz{89F=-s1}kU}t$!1d1Xf zA`{1#E~(V3AfAhscuFm}Jy##4HXUb73KI*`u%uQ=A{Pk2ewwf;_l5htPAd*7@lS1r zh>-~s8wq}`as7Ux6H}N&Pt?!Htw!lCua~p(5~tDHYq9vG5ck&WxHquso7c)64ryJf zOAS;mo<7y#h1B^VuulIeMoPYN! z23PQqJL5q8cSearaIGiebJt)7RqnzOl2U@nk&!m+)h43WmGzkXKmo08M~Z6GV_0lQ zLeZA*xNJu(9p>=ujj0~E&(~i{DcxKEnZj+mhsN4W!XX|J#uO6u(ANZKvlkD7ctvm? z592m|$Wj0eG+6^=J%eIeE1F@+9uylCwUrSuG&8^fg9lmv$AJ205hY;&@NU0j5lcMY zWt>0M(lZxae(2h4OCn+VF{a#;o-O4*f=Fm?Gh(#VZ)OCR@gv2l^v?vH!-}-uNRy4G z+1C%cVcP_^opDQvlrN@6ZUL6C+EN^`qVv_O zGs#)GZK1@k!cG%&(n*tL-gAB&2+BEurec+ticJhPt&Ojlz1*0xzLYWjEVCmt0dhS7 zf3=BYik!K^_S%lJp80qTGzKOZ&`M+}*rG?DsZ#!1628_Y)*c z%n#z_6UH?8dtlNC&WbFki4xXt%!{ALBViz?ULQg*!V|xD>m~EX**j{u?eGcxm&%=} z5V|9{OrF0|`3{qcSKa7WCU-FVvaMu+8Oo7xyqxACPo`kU$W0V-`Jk($VJ+Uw{uZim zI+x|*=0Uqz|56Dl#2e<4q9BUJE(}kd7Y1!z*G1T7zI`iVCNl(8V$9*{#`_D1y zm*aRX(o@n$vKD#Yz4&3$7O*`Ul%F(<3viN;MYy^eaBu3gVWvi7=zSMwmXv`R%c`(D zGUi6m%PFMfR-QeAX8utIiz2FWyK$Dd68 zyRKU8PDzO*N%3P%3J{$$WA5hE?1;?du95tS7%#ImeFp;p;YMW* zZ$r(6xM_gj(`?^=ENjM!DXmMUNkdjAhDUP(7A=h{163=e>bOrfP6CQVn=&SBcEagk zdxsS4h1pe@wZSa?Cv}!|{AkBUQ=Ej;Hc*xZd`}^~nO9gMxn2~%^-evO2q007-jLs` z%@H2fV_$=TVM|5C5tTuB`TB=>z{^a>%Smmc5S^C%4GZJYBe^#Wj!SJ17?Pl>dJ*Xq z#ND4RJgJ^AaHuB}eanD!npy3Kkb-nOxJq-(>lkkZPr`^7y3St?(TK3~FpwpgSd zlyOL#prt1ztg4e8baZZk1_=DBJbw^!dG>|r*9a$-J3&9o85tAr{pu>njFF1xJ5&mn zlYUd$T$t*0MBrJfkipFmRn?*J``fJ;yKji^{3pGdVDBB@G$uIDV`EF9Gc^! z^c!k?;Uo`g&OA!x7I5yBnjP2wXEIthJihQ;5C;;Z&uSadEK33sWH5k*3g^QfdyHz` zVX}C$rS~zeRR=NXU51zx*PJk_PJT&h(RT|Hsc1yFS7Bm-4twVuW=ZT59HxzYE}bj5 z1_x9Pn0sV*OK?{v0iWCqb+( zIg7yKuAh~7A+Adwmo+`8dFunct%lNb@lf!XPa*oX^uv2xRKUF5Y(-^qFNd2At1|SQ zoD#-voYrh-X-&EI`7aVh+M05wSD!^MZ7*jAy+9OlX$WEG)H8BSJg?JX00SO+IgR(p zfwn2jo!#KCJwQl>Cl62e&rTs9A)~$vn+5kVR@GyXU-8_7gG5PWKgrdfTreAYl;ht& z!EA%Z?0?nG^j2*)2ey5B@HmwA7;6~OdN`R-*N~F?F8JH$`}~1hVm3Ns?$47uBaD@O zQfb1_#0Dc1p%qk+g})`Y{_gkDpJL4A%bcxL*>HZuc>z?7B@8ryn?xuy2k21*cKGVy zw72l8u<>Rr=0lp`bg{6c)QpymD{|&ng5!#stHZOg${yu+G3?FC@SbB8rRL{W-ed*` zj5wmQ8B5Ff3r;w0Xy%QjvHj2DM3MZ>w4o1S3AT&Rr50kJnF?(1?!eCFl5=N1c+tQR zWKih72Ef8^rino_)mv+2l~7N)x@#~$CKgcz?#1-}J(KNMzl-99WSah70#PHWn{uO? z1lxCX`{xYB>~9;>4hzrr_zEU^+rpy0H$Dj2nNj4YVHukmn^`C?w2)lQ!Ep7kFTD;d ziDZ1YK5X&$&QUi5m9{=RP+)5Hu#P+N-&;yCs{kk*7&*!!;$8t=6c16>F8e&M0a$CB znGJlm!4p|;uBoetaehfxE-sU^?;+EH;yFKp+=?pt*zOv;TGeNoqtXxhmrLZNF81L% zxa7H-D0xBLBos1zMew@pXgrdZ63oRZ7MD0%Q8&Nw{tQ5}8Edctf|;dZRIJT&L3%OfBlePj9CL zo5i)Xl|L8LL*AKl@+o;ogYn}`Nw1%)P<%XbFo|5WOSqJOn*LLu28}mISh}a`o@U<; zT@#(+?e~SN=M& zbQEb>OxIhuM-|pjDAQ|AlG=vr5%<{>j25LVQ(Ehnq=Y5e*C^m-zvs{M@NWi+2B`DK zz89>2S}$CTF$o8QMIgLVuOp?Xx4nEnx?A9DF!ELPoq)tyIft^EIczf^s%c2Vg9cbv z4mqDSwF!03VEo3a(yd>moE2~r+FrHNHO5RKfZ+T_5p97o3mIRHwPJucy8xeTaqUTs zU{ZmjY40PzIdQHNy;IEHX6R-`7Oc1STUe3`)FE6)^X7&X)2bx@x~xYbM&~|hX9*&` zMd`_*splx;uHn$lOe0Jfb;-088DKsonYJlMv2VbH5z<%mvl>Q`LQ>{y&0`wN%~rr{ z>E<=mj9{9q(yl|?Ls1Z=alvh>V$T_+J(>zsHz7@)hEhHz>w}s^a4IB!FkpXq8_uB6 z;l;n~_RcjrCp69oLMu128EQH_+Z3hJ}=UCN+u|3Ti_edRlkPncF&<+WW5P)fJ%gU zKJbH((5NSKsj%zBe!dcYB4JLH!Ts+rGjs5N92RUm|F?twKO7dV4z56uPwwwaxS5$= zUjbj+>FkW1fI^iQBLY*#4{t}fs>^h5f(_AqSQF!b0J- zOdF)PL88Y8p_>QE*LNl$`{U*B7r$>=s^GsDM?L zGs!NeyC3fF#oJ=n!b`;OJ)gK8+RJKQORi(nPx43ce?bHP{HH(v9d+k?JWS8)Qw>C7 zmVDNaC zd$zbOBLe|Fml@cBE#izP)7K2|We)i9=Rbm96PfHP8Y7vJ$`NcSA5A!h`LQs5EX$9Z zE3U9$Dx>Bw0cdoqg?@h3?i-YtKS@N?!Tmn1rs%1S;+xq%GrI!;ds<(uqMq7>H;9uc zQdthv@JX~)?!N^IZ2_$9Ft#N#Ul+WAE~tYEaul$Q4z5ZT&D)i=tz@i{U}qycsDOVC zPos#`(T!u~)vW!#u+LUtb3zVTCd@m3*lyT5YLIp`|H!n?wcs`tj9($?T`K$3)A7nV zae__X`e-4_6a*!ZC3Z6)5+=fsL0~e+;1(t=?&03@Lgq#vxWK!rB4vc*#JafFWpY-_ zAL8L;W66Qe$pQ8}{L1qe7ENN~4PUJ1t{lY>6NUu}G%vQIgz6l!AvM6ijy9%QYKCtE zS`Gql@= zSCZMyM6G}Tt{V}tU?|Emo%JXMxKAyn@asYpsCp>=Mh&LExY>(wTsTvK9rV}XB!`)) z4i;rhOaW1cEhJ~<1{|VetJSdU6c_hl?Izs$Q(hc}efR$QoD-?*-Ol}>=a0NUsg64+ zR;-iH0xDz6Odq+F;C_~+YtPQ&IiF*0>x85`TNPIW)%{6Q@fs`eL-!I}B3RNWXRXKH zPPHmg?Qc9$84ZgxCeHS$U0prFG-O-!ckLV7QT$U0A zMlPqeAFk7Cc=vM1$@&+gKy#(N$8n*80I?kb=o4#(?yxE&$*r<^^c3(Afyigr{hQ$W z;rR%Cmf^xJQbD=IQ1sUhJgi2~f=)Amvr466NosK1F3dS>jib}>j8@#W5i$M1oh_34 zqo*wOz`l43z#=a8swc_)NqXxe8tXr^X19B@S55_`%2fVIwX=O?C<6^8^c#d2zas1j z=(4+RMrI5OuuYCeN9@w#$9C2_YUrG8Zr+BcN+v=^8uyoaTDw57qv#92x|ZF-y2cHo zU!RC@+w+Ryv=G3)weefWxszZ<^WT!bS1>duRYGeeg!km?ArSh_v9t?~NYA7@wnVkM zmE~(*N|o$107FD@MaXcv0@2c3K?ar%C@-^wo$>_mp_CqM7ZefbfaI8jq0z?4}5N-T#B+ctlfA9Q_M)$4a}Nj{szMKl%&R}xTB;8qii zN330cuvN&8E$3`+Nf1n_kK6%`a}9t35+6sb zy$VJ0OQM+a>unPwjnHG1k;ud@tcwTek$?Mkl8or}_c2CW8-w*8(XK}#Qx4h<(}0J# zR4YlWu6GiPt*if_Nk1($9OaQiC_vHl((!fak?Eadvu9 zG-ZHzjT<8tNsD@=B-HK=jM>5gcuvQyL^sYR#H83V)1;lIyCm~fj-v4&OgTxaEZ?Zx z28b!CL!qOmg2JPRLUUrr#OY%B*fR^2e_H;$BtqdlgT$txg4M~qo|PR}He3&G(Oe-d z#OdP9++&GxoU9eFA8-3V?3B49) zK6nB0m!?D)8{pa!F@`xH?`b|brLs@qspW@l-mHRv-=s3Dw*==_ z=CnoI7*9q&C{`MUCg@SiN89+dhbChk$S!I@H7fw8majtPB3a~uwp+X)(=j9c3+oNl z_3$iE(SD#*y&;^~_@2fGDNzo!9>FQciQz_HY-hIKBv({`GEW{Tg&Vg2n9++GKVvsXcY{w3J(*KL=sDc@9D83!?Ex!wz4bSof&P zwS+UfbRDcdU22Uu?EA*bxoNdz_~!Ubl)`$CU8c|x2gWfwWTZ-wb6m>ksB@};a6Evl z>W|BK_hf}-gq^*l1@F#7|8ITNc5Kmlbt8{+gPwePiMMQIKgcH%K zN>kT7(~g0|-i5W=czv8-^A&2ef1HqJ_An5-3n{_OZPeF^vDvb_*x-qIiRY6+|yAY0FPJRa%-yOd4}ZPh%O^)QkK2`8l(f<83M6&T3KWE~l2zoMKg`Iu4yCJ& z`A996K{kcS?jFEkn}(slz`?t$0fiGq)ak_!Wb&_NVG-n46qoxoBuiDVc55uCKzFxA zDdaSJRX9liIC}H_mqWw9|U8!C?- zqSX|7Ne+9VSBrbsgejOJDe%50x<`trrRq0Q^9l;$H z3K;4LFK_G}70I+#q5UJyTa)6wXD*|lE1yGQR^0cF(SyZP&CdXNKA#1#2!_cL2DTFU ziDW_Ylnb>gOAGrPv^mGzber}i%#zRH>P zV!f$V0H^VIYE>Q_eo&##nxSLiu=o_0uh{cJd)ryG)3du#PwSfn7*C8In5k~DKc>`B z;QEv&Bt{1(d4EP_4x3g}j!WjRW7G{jA)4e0@;8|rr-a9Ue(fNtB2ep67>CX9PX`j^qlXlXdp8`EO%k$e7gYY z1#-R+M-b%Sq}BvW&HndJxro(m^xQnY5(&B_L)tuFsbX64x6mQ@Sdxp(KEns*8kzy} zo2&uQ_+7dj7HX~nn}5_m=D{17BCaJ5%&A;l_i{DYf?ozN+!SeNT*PYJKjBO7bZ}2G z)xrA3E4BVkM2|drlyu>_&I$%cJF^06g})e6M_f6LuNf1w*`2$h)}`#1v8@FP=5+(* zraj@0n5Vf4!1vOEEE)C+)FZ^3&Vil8TC76pd8$C@z33GwlB302D$hV{$#fAz?SH9K z&0`$}HSg*xa$YV7hy6tqB;VC@j7xrH)wR2kLtJgs0NxJxZpVYh40hodI0BSjs2EpD zL}=j2<+xJvZ%)5sKWKmiiPs>gp=fSmo{#K)7!t;j>ZcUB9-UtY5XG6g$RMXT2Fo=< zE|lQT2fU4pi^BfHWgZ$$V~_}I&uo+4oxh|}`oezh31?P)VyA|7z8gu!E;52a`w-~a z(&ssnX~(IyFN@&x9!^7)N9PBTyTUqbn(E6)iG=w;LBlL51x8DEFCcP%QGl~ISK4xQAwK!`v@|=|DfJ#xyigt-;wm#2Vr<6Y?G9ngpx?X~xfEd5yG4%W)0cb1U@Fk3^Oz zjW~-1XSyG=L2Q$(9I)W~>(~YwoPSW z>TipTizl+q1sk$Iit?PaXU-R57A6JL$$iv#jaI#i10j~A+vi53iF93H-&2--Dm~8G z=oXOYbdwfa5UHjor(E5Z&eDX8RzI@TH!9+-v|iX1XifWmqMsDzXI37vn$}^kRm$bW ze%;;n>f3@9*kuE1_2>l}P31B8F@rV6ce#}g7Z3@nmmJ!Z;u;K?u*Vr;J~=e?sEh8^ zk7PxMuze+nbhr7W3ih8vJphzRL?ms$267g^W`#hPsEDU^+%@(x0-`)YWK#noPB=OU$~!vgcH9H1CnMog zaQ{6eZ_ah6hGW(F8J5CrnD!kEMPwQcIz5@u>&?;rwr(Yj-p}PBa;4|!D~8LMM<&vT zWV|6ILv5i$tUZ7NnXy7d<^S914Xd?0#VDC?HzLtj2t(NAwyz>k8(Ezu*XfbZlF9kV zsIW0XaV-jPipwjv+*2}4IcgW|6goZT3(Ge;)rz_AQ5V!LTmPWnwq}@<&}~ed8yd%H zLe&vV9>t;(+8(;w{kx#QF=qk(E&~ec0z-7e13!nQXuD-=RTQU0xxTu6>KMYdiC`fX z{RGYQ&#u2?ZLIoHjF_wQ?pdKMS5Tw^J$NV4>G>8={|g1!<8%?$oO)RUWhSF(h)5gQ zSfP+uZGKWu5q2PH?jM~@?pgYGHb4qq`lmC z>Dv_Awa!lGg!+Ox0LRX!)uzEdgEFuZMil~7ov!e>bZ5(Scn!rJw*drKH!A}EI$F^M zWh9Pa%EIz5F6P%Y$D5(8%Kxe6STc3u4ABl=B`ZbsT6ql+TMixrRBx8Y6 zdHGsi%A|ji2*bE>(h1k?=nDC>EYzMK;%Uh34MzlSbiG-O$GIG=Xhh;!e_eYC)PMzW zH-_lI+7=`+3)10}W*Bs3Cs5Yw3 z`+R4gG*`l?22y#ajgy%bmCI}*9A2ALtwY`oJVO=|*$`)RhMiDFq@KE#g{X_()+`G( zWmLgJ2BNtYZDF?2+@R31`?Qj5;LHQmwOQY+cM6%XVQo|=Yf8vr6uZ>B{!G5@w}&~t zL!%S#TAR)9W3azwD;~yT8?do*G52|(ZPrIA8c$d751U=>HiqnBrcbC3P4pugFt(Q4 z=?0Q;omfgdJDD_|N%$F$XF*BT+KqKo%{NMqD$yPabsjO_9ap@|>Qvee9r*xAyW499 zhyEqQ?yR#PQD3v_|Cv^C%{fCTx=%l!$^)5v-1szrm$0lkdY?v~N|B?7QT(&~d&thv z>TF&tII6gUf9nDzd>i{beX>$gIQ>ain{QUsJVthH5uJ-GX1=K-*?8J`9(`%IQFyU& zR&!Ltf+)arU~VLOi*tNCrYcQ>T`X6bv$;zb2k!& zY^O!eM|P_z^S`$ZBuQt>GJHL(d0>)alfVxCjKd(Uu2eYggy;tRl*Y`lY_&%TcBON5 z;8N};-AJj0>}8@04Z}f6u)K{|yW@T<-$+td<=|6lABc6NbeNi?L|z3%|IqOdIVXsO z5Kbfxa)C9LhZBNls{U=v{4M}zWViVvurNvq!!hE-UySy5e64Y9?V9Sp z7o9GeiClgN#yeCJ`yjofQK(Mcc@(vAZo;bHw(>!eU5ihvR%h)zdyt}?O)JQfOQM_} zB!jR?#YQh{zl)EzliPX#gZcABtx-G@e;Ux)ZdrD2^I7cJ2Uu&SFAp7mb=Ss2JX6B~ zjv4zzrL}X(920il}xLvBo;4BvXKq_iq zb30X9fe5U%{fDGW73+jX4MO-j^FVKtBul_>3r;Dg`bp3C^+5TTvslub*ph&MOU?D@ zA8I(KPEW4=_(qqP-qxkRx{FpNymifCxrs30{FP@PmC5bq2?uPCU0wanPikdfQ(F7%;g+QtkNQC%Os{kHfBh89u zrS67-DoRjcoV!n40~{MswTE&gQ?xG;5jF$>ZsvMCenxx)fE!57kDsw*sNYlhUS>ri zMbUc*=-)QNJYSJ+WtW{~PtYsV6Q}sb4{(=rV_~;L%B+xss)|0;GMP^u`ky)IBqOAX*Gdn5aQvKlg-wB?cGJ(GNuZ`f2@Q zg50Deoowa_I9hc=hG9dD3-6Nhhv>aMd^%2^(!wDB0{xwVWq{0;S78zr`Lv5rkv$M9 zu#gUkhODrMhZYIwoW?AX=Qs4^@G3wizXNTYEkm0Rn(TNwBaCK+X}ReQnug?rzbfT} zCv`9NvZ6Sa$;k%Wso))PlcO;U18dlnv>;DYL%sb3FhN7OzkM)Uwm!@Afhbr`Ai3{@ zff)9ShlEpfItwA@$rEzFLCrG7R=f7PmFc1tQ~wN3$X;_a+abHf5@-b zKDE|ZB$Q8s)Z01k`k$Y>z-g0jeIS1V@OdHt*JGknD(5(Be|>M+2Fbf5ixii$yu_{M zVU%*HqUtIfU~K%|nigfYb)nrTRtT@8)U7scPt9>5=Bh?nso;HXgRzo|KM%sWLf&44 zBj(IFjeVpRs;xwq^637~hIR}XA2R;1YV3;UqZFhf`H=hP^rME?wj^)h^z!yHYj4e1 z`sT*dbA{Hm5lG})3v!1eutgTpQI{6%!~Uw3s6L#qmah^f_~^cawU%cUE!V~$+E|KG z>-b}Nv?4@RzBy!C*73^!b@mMk!X?r9Kc_mN94T>fpkx3BPS*eTTxSZ{8FA6>m~}$^ z0XB6@sn{F*6Qh+=z>IyZf#9zzKT{awiOl^wWw?nV$rYLC#!&?P&2{q7(7aLC3-FvK zfy3d2T&{s=k^us`)lK7q30`ui&kcO94OtIvpATBM$XC1Is+)# z$@zYYaH`9!3ds5RnSLXV=d__cZoR3fxzFa(+I!ytyv%=BB?`*aa{%N>n-9ZB? z9YLza#iAMFo<<%J#ZRZ9MMSyg?MeE8dFJA6F~=N zv3#d*Q6k0k^CfSua!@SZpI6XCh||)Y{Y!gL`r#$X#wydLCA(`k!DOYi%m8Mh=305( zP4&@&8Mz&O=QX4#O7mraQoAZtcZJUk_pEb#d#J^nPzMz`lTwvk!6&=DrbT^C$Uc%X z0DwhNA*U8XNStNvhoiJ&A^;ZhA9w;&uxvvvbD6@9*6*QQN!B|qS*l&cR8*vc(%Vsm zKd67nmihLx6A)w<`<5EF)(90T7rehsCk;Q*dJqJZrXyvRrJHU_2N`Ukz+ykK7a}y>(GTD+^ zZ|@6ajK(IStaQ}+qQ>aR(BHhv1y&hC7+S+(ZG0Q?n0V*F(9X7d z4Og9D*xyOldR?(&gavpZzTa)f2+$ARtk=bK>++8TeSX~O3`e`=R(w>-UGXj}LOu?_ z!=ec2*(uBCa{t2)nIdT-BQpTSoGn_{rh;)Fr~ornJa7L^$s`2*H5M-9_A-J#r`vqs ze456%B*ix4%n0-+SzIKK(*Hy16_yfk1@CUua$eai%% zMhO$$PD(M8@_7w><5ba|YK?DYd&Z4o=AR%&w9dCfK7dXs1S;jS_2y+u85lUI>~KBlBpnYmwyl)p=6Nk`EYR1pEQ*iuBN}jtU;+v42!p+iut_MAE7+nA=86Le^sVqlNx)7P)MJ(SMxK z3=J+*sp0krMy~8f9bQ=IJvNbmB*Ui(STqCa^Y8h(T@GROTBCz^foFo6cLjU6gJM(V zM^nfMQ)$@)l&;;v-#Ku37;tFSP1peJrvRHlJ$lSoicSKgn=wH`=_G8RO?L2DU}~@i zZXTz$sTGnD)CH6C&4A`GnDC$1mA6p()eyF1Gyw5DkBn!=8aWYrP&mlS=5GPnrr0Ix zo}Y+eKk$iP2qjZtkfly zel;D7`hg-|OU3}b;*8dE!me9M2SW~GMY+p{gV!vdbXZK!2%Rbuyg+9hygHj1rmqmzo3=$} zv_FPWcjE=JZv0v}hTc;Jd#FoE<{39WY?*zYa}7gdHTiGSABgw>WQEjC_B*-Z&Y&%} z;TpI70qF9V$9gA{#Du}}9NqgnSzdLj`OLDh$JJgiCzGS~OeS#zv}%`l?sVc7Brm5! zKan_MV2tL~P0FMk#hnhx_PaRiGh2#0=_lfzpY%BoLjLsz>ZI33%ybY4ww5r^35^fs zMIup(Pj8&;A#egrd(()fb5u6iTgqZ8M@-lf47mRa4P|59o&8cDZRM^>o;^a* z29Vg9)o(J>xIXGq5W@@uxuM#hO-zL8mOgZ=7SPfp7=dCI9RhJ#rBbF?kBfCc9cA zOas?eJDFxB;s>Li?#BoWY>=V&rP_D)u7k?c){hvD%pP)*k2x-^DukE%2RfVSP0$-g z!?5}$2775Tdu9_pa^l`8j2?iQ$OcuUDTn&BQ1brtt*a)p2L$v zX46$;meKW64ySJd|Lo*I8Nr&7KfufDm*kw;!Ot1MF2yof>445r-C_|^DRFB|Bx%nGD} zGf+_m2g3@%!wP#^Bh7QOt74b%QJ`T&EXaVn?0ockm7)KPBG$pfLjrzrZb8Fv`@MAg zox6J)etC6@-^4bm{^?M19DlKaC2Wk{xP&k$ryV5$-Yhl5ovvt9#?&mRZ9~kqGXPDA zyRu)V4VRSJ?BK`+@e7D0!O>Li*mdfCKr9IW*2yB0W;u(qN?%6kjQwajvjm_R`iWJg zbs2`eyatGaKJXH#Z&HI^N~9)bO09}MHbmQPwPI~9^_CuM{pmnlSZma-CFrsLk!pP> zlo>%u;@MX$p6NX%3Vp*c@SHN&RYDdSakw8_Z5t*`l?L^Aq1{iTC%hoV0VC6h3=9k&FfjkwM6Cb0 zJob}W;nxM^`8kG&j^8S78KZHI&cXx>MSr2edGvXyGaOnxR~eL+`AotD6SuaUK!vk) z03Zg4OCyvaLrT30)qlF8lJf{tsI@NJdMs7|v7^gVApaI{4n*pZ2pZM@jO<7mdOnU1 zRR7AT;S-Nym6WO6OaIF&mA;M8E*QL63e?Qd=R&VhrJ}q7m~9bj*^*L^0B^%?b1u>l zj@o$wddy<`h5^kR{?sPYO=0-o_xNsPP+5c_Fe~fG;_z)zt5&0+Vg0dT?(%HGG^)uQ zmZP$O!D2%COu>#P}iML-*UP|FPc{tj5C@BbNCV1Lt@mvsY5&;9& z;v3*CIcQA)9xK++V`gorlN})+tE)yxA3f~ag(C=pA2H&CoNq*hrH&eZzp9~Er6yU` zC$%0H%S>qnn}h7xRe*Js=%mt=;n!7;>qh}_&Io-fjF3<&%Ptt-`qAl>E*J4z;c24y ztp3d*=9n~_`ccqpT#;^yT8;qv=3opwkNcbXn1=HgJ?A$w8EqRyAvy0*-lCNFLADXQ zd~4kUC%-kZr)?}OU{&l(I#L}w0cu~)?gI-|W*i-fNa4+v~KA}%19o7|w zrTsLJA6+brSGn3g$R(s!j4v{+2;>O%$2Je+#&*h=Q>m|hsRnc^R*t9%+DwUIw`Dvi z`ZwKq%|psy(m}o)bENEZRwMlU3@U&>6O%%%-(Y3I6q4yPH?`o z8JAufZkMOpyf-J8*!HYv=3fqX-NZxNSoockm&iW0S@1l{EG=MWb@5NT?h6tKaPy_gRz%y|OP4XP^TSNGM@e&sbZF?;n7${_c?Xsp&KYKX$wS%wPoreT zKWt{Z8~4%?Ad!}}Xn8R_exqvJl(64DihHo{?4&fF3~w#LciS`{^|4PF9PBZx$m&3r zeViOds#`auI;a4)!Lu_CcrVC z(nE3Wl+>nV){)QimEP~7RvWiO^>89R--{AoCGuz6g^pV1+jt!S4;m=iHoNEk_U*#M zrna|;>aLb{g{6IrFQO09>bEHOj8HwQM#*E1MoxMj`x-#=Fw#9ucz8Ea(`qM8ergu^wBnIAsI?`unasNy$|D|NAA{l2x-D%~Q zXYQWgp#=b2Z7VMA!_bo{7-?VCJi9^s4IBAAGyH8fm_#TT41-BN9HR#nfA}ZV1G6jS zAb-7R)n5)_KOA|r9WK*u=@^DiZ!=P0ZBvyo<>t1(#xJi47l${&A2M{M;*9`tej?N| zM!@zoUaQ3CRd5fbA5vy_dCy-P{D$bI?DSNX0DXX2-u;&tKIEb1`E@6aJEo102@{{O zV)^91cx)&LRd@T^X3m2{g&qMJYlj$P^c7r=HoPYqc*7cjNtssY4ualvI*rjG)2x7k z!P~ARIxul^#Og%S@f$avzuKbZ*seZ*Gfa)dLGVd+$Fh&&4yt;Sf7FxNrYg?p$0B2s zFSh`auiPrVHsM!@jjfNNib+M#tFt*71Vy>2l!(d~oBJHX$abd;p-r&Er;f9EgVvcS zFI7uzVw-sdDprY3kauT|mjB$DFQGG?I)7xPt$V?8imVjHALJRw&Fv2Lx015F07;Ft z%iJOMJA^cEfdU2(qWy#*BITsH=yh+Dx<7zN+g9L!FKf;Sm}-(hZRwI-AQ_`HCkSD; zkE?X+2UOn^86@8lE(Y%ARd30Rl>3TI&9-rEv1e|1>di%^dmib24(MVj^YAv{?iksR z`?`X+n6ej`t%z8sdZOPpjR8{FDJ#Im!;_Kp3HQii&Av$*!0?#GGs~P5w<9lwrVe?wrT##hR!IlKK7;2 zC2n@XJF)AeMyaM4Z~tj!j4pmz3uK(qU};e6QDP1N=boxf|4nIU6^!i=?^yGDZ(Me& z7rAWD4z zOB5#LU62A;8Cd@}QTRV1hX3mV_$SEDurK>S2vyQygiC7om@wJ;qGD-rAV1|D;Wxd&M)Nt?9R3Y;BBxQjPZh5N1{1DJN}g@aD46- zX~kYee=`U*oJC4Jj8}Mr5j(ug9I`L-|4lFzBzZIqnrsK5Zk5QbX~g3uSP(lSQ06FE zR9K***{Y!if%WAf)ZeoM8(T=4xkf6nsShy^Ce=s~opJ5)R`>TuExF7@_7CV)H1F<# z61}2+fMS2?MOka+POodPK2FpCdpTE&$Ztm3C6sorn(7f}ANX}VQ~6plig%La0y?4; zPaodWE34b(MO==`QrUg@b)==iUh>hl%>w8DR2F|al+0^NUP>%IL6nnm8fMBXHw9jA zTTL*kYX5B(UqY^gE@ulnDuo&?($hpJU&rbMu&SaY`Mb!Y7)!uFlo#Mm7TYHs(z zl%Jzb0oG;1lX*?RLK-kA(v?K8*<|OCfo@TcpxOZ45|swJwGMO(iy*~Qm9x|W=oTvc zOKzE*P*sJ1O~R_>KBh(Lav)4?gwhXhmjDI@i(u$ib1Hj=W3NXB5yZ4i9VP{x~7%hDRe10(ar7_kV&5i;8 zHNxsG@TOY^k2}Vcj$j>8cetm%wzaMi0LFUTx^mBuy z5_Cnug^1nXM5caLhEz(J8*TO(To-2A>V=t&;zhNv&QxW}NFM6h4YQu~k#E+%f)aa; zLX>FoSKJVizER+c3yh$Bqvsg^@Yh8;o15QL<#IG#RoMA&iTh7gy-Htxk ztaGVAT7$C#4>u&~D3UHbt^-|c()ITJmSQD#Z78+NB3T>4F9@^4J4i7YB#o8dDxiEK zp!|$xXZzvwsA>Vv>U=)MB7%eQM3M62V8i*+uo|2nV=&7XW|aX_wyEV0ohQPr z7HTKA?2flI2faskxllg=oRO8%N|o~*qaTR3oWxs1LWvy|y>=_xZP=ppdy#+jCh&S* z=@qG{(urZH5_0oWed}+jMp^-$t_adBRJI9U0d?1X*5PlPq5xZlP`gck!i6p}GV0tP zVFCFn;@mmH(7qK@0CCepFtHl*Qip0&#p0|J4pQutU73Qg0DaL*fm_<4H@9u3v-_Xv zdMl;I&bUn_7F*)xxU)=<=nm^I-*Yp1GvPMNHdUQh%gIpDL--A6hKpCnhTQ_O&t;u4 z%llbI2h{LgsyO9J(AB-dNTO}OcH5$nd;ky6O6+Mw$Xd>Y05z<_l_&3{6d0VAIxv3E z1=OQ3SWR&pL5Yq~`h@`NKU;oM{tAmh0J(_qi_s<-7vZlEKj-Y?^|v9*Ks%;53*H%w!PM+Z%h4DoB6Z2?ysi1M7L(k1t4`In2~n==i!+g^;~Jdi5>B_ z$FawC7Sf-|7_-!{?ngw%`q3Z3{H&S(xdhOjh-=f6ID43~Q#PnN$jY?|D&QQ(I!rG> zzZh;&Yo@t?nu7K* z7yuTL$pN)MCe)+YnkY#-BtInoDTM#L3*&2-Z1_SZ7kL@uoX5CCJ0!`@X0H$X%%?iEHlEI-GvN|QgGt6L8`)%N(1sn(>K z8vQIXt2oP_9>Qcv72I5THd|V(LJ-I`yr`HJ56vP)RF83E+2MztT7U|GR=^)3-_~2{ zvS*;LDge*ql+S_vSaFCypg_~?J_>@BU6)YNTdi5y#S%3)u~v7?%)l?AeffO+A3(i` zYy#_ST!|Jx*~@4yl4(CsFErNV0$SO9aizI3TqqXDCfqLeS5!xCRY$KxAttw9Nlwm$ zp-rPIb35feJU>rrnlnPzr%<00VZ$J$bc>zXJMENi4|H)@-8Bh(WOM_{N#l-?MlUS% z^EvvGh$FWQ5k`HU|MBr*O2|PiN#L`??LXR!RWJwGqDF!7ftUU!mWCHS5$HA+sLj43mJ38hJv2R_ z6l8h@SEQ<74L)?W@E$LwyKPlZu)?!+t#}->XrzA5mO^hYC4*-W2j1n&Prysk1i5#L z6NM6DT?nfSyr@86$++@B=ff+@?eDTe_STWaZ!hGTQVip^L6)0+Ue4^wixCn>pax{6 zS>@QBF?uV6@hK8ynU+hIqw7-wKBf)x46WYr91AwIGs8)+G3!;J(bkXQPQ&>AyqVmJI5I-9mcsn+?oItc0C0 zKipLGRtRmAR)9b2l-u`0B0ZcZuopjaLEA_9Q?@+l@Gs%dA6Zbbjjwx2e}fq_9863W zUe=rhaq_!;FGk`@e^jP~IS_FVACPG1q z@0Y1U6h0M+revZ5%E4sdEgxjK_`#%0sP+Lc5@MO0VK=1UB6RTn`*R#lX#46xB(Qi( z-iqS)OP{Syi{0&VbTcfsD-&Fp?n^UQ{gFp$kPpH2(WETbM)s)8!IrFn@S?b|Y&_Q< z3dVZtVdh!E0OUf}Er5;e2gz*c=Q0yaC;dFu;U?I3J3DCj+aC45xR1F=m;)=)0Z~W{_ zmlN)5F{KT$Vleb9&Z8`zb;g5VD{{+hQ%QSZCHnv@tf1TX%!Rs(q^GOK`J3o92)go# z98Z!kHIC2$v~*G-JPct~z=tR=T#h4PF{rA)E+mxWBsuq@fRsg?3CAAar=4WFraU;T zG(nptQ6DvOQC;lGPn)vs_b5VWi-w%PIT-Q4%4IC(z>2RF-o%P0kzf{zm-Mb-dmGom zG6IATbo{Fl{2=;F$wV5)JNbUvX1TEID?TEiRp{a2wT^tR^NKSxDet#rB_h&nDdCdlhMqP=%S{^efOq>lR9VrFNL+P=Rq zqpTtGAha<5e`HUZH3uLGcm!07C4V>3ieh~POr)OHZ;tGL#<*^nt#FI@SR^*S zSNjHnet-9xiQmc4!27q4QLdZ^-SDq26`8wW>?@L@{md}WIC%i{$IJ~DwRPgMk669x zP~{FHnCyy5DE;q1DQ{92v|TkxSwFMTbCPNdK_RlIc~=#+6%anfCZ=#GGC;khs`72h zDq3z)Xo-@)XG~a#e508xjh47Y=r&e(;!*ED5nO}W8D*RypC=|AmNdOTvGl-W)Yr1Z z{>xyNJ5&GrDPs)RCa^wuZGrW10K}ZTU|@ZifWS0wqt~n67{aPrTTkI@2N@8c(?n-Rqmtc?B@vbprTO6?)Go!F) zjX~WM1o2wrvI}fljFVaP+CIth_n=Dj z5H$ka;c3@EAHQ@#bk0;t_4|m{7SOJc+7y~glQLwqlZW^a!Yxe0r@Z=lH78%UFzWf?oq1%%yTRc(N{(MAQj5Qc? zpH|ETtcd1+rDb}+icle!V3v6TR>VNK4gkygN>RBB<}UBCghE5m{e-0kop$&|V(ZpA z_6FSzG?NX*ZQ{TG)`^Gq42=2^uV6aib;64t2~r!&=!K$#e$Y#RQV2}j_F&63bN@TV zf8dY1ujU~eYc_fTTtiXlKTJ~5QzyjB(Nj>0_3nO-0WwJ7fl7RI5vnf$-Y&F+@eju@ zZV%o#4GvrVjaPr&P$&QVJp1$e`A(wzI1ZeNs5%p8hq29W(<8ApEK0Zc~quK9X(#MoN?p7S8)zs{z_RhBATFpL|L@@&m`R^IlX5SSpnr_j12E zo`!fTryS`L3%*VK5(pf0CSROYl9GZO;|DrU+^>zea)XHX`d8Loa{Gh$353_TVUa({ z#RFH;zBwVqnNsdd5*Zj_wQmfl_A8VV4`jGD-IK+2m1@n!e2ts{&LF{u8jeeJOmE{t zpZGi8)w!W-+@^hzmZ3=yP+f)Nd(V1WDBxZ^-u`wLUJdEfd~)Ka7U%HH$Bhg^-KvY{ zk&8WfKpknQnlQ`(+(`^O60P?e?wqaGY5NRo+v?(D;>3Q5%Bc*5%o|=VX`20-sc&IW zVJJ?2HBQIxd1JvNwc7`mdC29*j-A`H7UL0OT4*`DyiW#O+H3lx+zp!m)3@F5nnA1c zfc~i7UiqbVGA2k?n2vI;!WmGDBcBpo9?7IK{Wse0wo?KGV8(yjYE+y&6Nw%(ZIDuB zVM635qy??-lzF%B(30UnspC#)%};;vlR7-u|8w7dw=yqgW_f#@dFedD;EpYls2!y*hLoF&C}j_Uf)fu?OQz5bpT0WAF1iqEF8L z{f_PYl+#l@W0%7J+4^xuzrPRU1@(LZoAmLP`B7c=!hwt__&ML6MTuKAkq$3^yZeT? zz1`n7dQVXJ@K*reFB?ZQ{B%9~q4sLJUq5%-2qMEK4v5hHg0gJC%pB#U^xOz=5tPwQ zA{L=NYs^o;>PY6n1Wfm{e|IvyAhW-eR#aYh>ZbK1vgmCi?F1th6M@4KLO84g_7Hgl zJocm@IP6JlzU2FuDt(yC#Sd;vF2z-R(LpuEh_5qkh4mbWD$jPqI>gZ>9OYlUR&S78 zS(%Y2Ar_?Ey!pS<)|CP3<}lztfY(fZuT}O^`;ii{_|;KF;#1-rEa?gWBG_UBO;gsv zRwHpz^$c=}xNI2$nnmH@WYcR)%D(ay&Ji%Agcv=BsK(Uh8zr4)4cE3H2P`>i|9WY>FMxkm51=>)q{S*btm@+U$#>>q9 zylKjzQq(mQe{M22vJP4R=3=UrM_iNb86$l*7@G@k*_%FB+wnWT@mMNN(nEa_B;yEB zs>b40{1kPN(lOMRO05!!P;12CwbZC_sDV1o*ZC}-dM<{e$u!BxRv!_fgm!#qYp+ZPf4?arI-#oYW~?YO&zIyO3)GgXgtFbND2ceosX(o8G&rD+MPM7 zQ%{YM6sNd&^CB(iEZ?0YP&Zq-U#UOWbAY1qQpVd5fk0JBWT(5TkrL0yL^COhj~}0} zftBJ9$iZB=9SF6lS)7+$9H3wvJz$H7w^lT_7(8ek`eA`^A8%uOSAuvmfKn|}tcI0LEM! zZxKA*Lr&vVun_TLUQ@5zao9WOkUf#ReG9p6u2Z6QQPez^$@e68ja@pFNDN0~Sn&SO zg1Z_5s^YBFRbrzLBaZizor2reI+SKT8rV?N0wYs@34#j1uhtzu+h^U@t@k!<+Qyck zY4Do(c&?D`CX&!|+&s7^{q-j%ZzV9M!f|kxnMhS0t0uB7nUF5>$2G5PO?hSOI%<)r zT2PNAF-}r}&_d2`i)F#RMAYWwOGXpkuP5fhm_ zQ-+Y`hd-IJD{Ry*-3^E818*jl_DW{CM^~YtLi!{iTp6NKPoI44C#GB$}o+Axkq*ew*aT%(Hc^z>bP5p6a|w3LvaEwl6ZF0c1)esnJk9Iyqtl!@WIZy z`^5ubSm~2h0kw|Z>?Nn(sBWj}Qd;Tyhn~4|xWt04nFFeaJx_ahtpqy&?xfHJJgnQS zhRRaB-l&k_N($uXdy;*INnXH*c)EBB>i)fy&=p$Ol4owADLRE3V^aCSA9bGn=j|5Z zH1BvJq-JHM0AImq>Dlp;5sJ^{Q6CwlybgVUiiX@B^czhB>8iY0Gq~=2EYf5A)%oc$ z;y8&sX$ZpFuBl_;qkjC(=IT-eL$SYukTa%%?2V1aZ~R|$7L2{Z^pzM1GfZ)3D+d>7 zpfWhY;BCcdLX<|c)MMaR$@`{9H>vCWL7^O84tRlCBPmFzT#C>#idJiMivtLG2GfZE zx=Zt25@QZ{b++vk$`XBP4?j8vNIvs~W8*R-cb$FGCA*PZ>wCmDFViyXda>hpP%UH|&z%nn5a_%*Dpa!zWH$>8-w4b>z&CU36P z8ti}cKV`ZjjT-o_gcwb#zFJjZ`urp0niDe>FwGx3Ph#m%5cxk`y<>ExP0%(P+xEn^ zZQGelY#S5r*tTtJV%wS6wylZIe%|+6>wM?@+pE^zcX!pk>Zhfccd776Fn1oQCDH*Br8u%3u38ok?iFP^z9lY)5NTY?>{E(u_6*FpuJSqVO>Z|a*7L@ z91L^qAeqVjo~QHH3_3p(b7)7GJ`gQ%_SeTsgLh4V8j+AQHrCN6bV7n3_P-%m!%tm~ z6R^@oJP+fb2QS(O(*e#aORnByzkJnsi!SoXoMHY-`Oaf0b8_<;I`rX?)xwR5YqT>MaYd!M=7ID%H2k&B;AC7)Z zOLR|V3(e3YMF!K>E-$<#J{Va2VcCAFv(Q1fJi^dIgeUw1ktl8_L;n&SksQW@Bh0xf zW03RQR+nG7r>7Pi1Da*s1{aXAimr7HKZ2`8i};FzjckMXQv1m}#E?D@27pbwyBJr& zIVA7E)|^ns!?FLd^;=kX9UQSZ)ITt?7&e6~Jl`he#rUcgQE!0$rXRLRKd(6A*^J3f zN>PqvI@cp0NHT#8i>=l2w3??uM2J1-%y;w^Y7^98ni&`1E4D70mk`YS6@{c3)NsER zg2~<2hiM+VeEK1;OJ#WM1W;X)d{ZPVu`4HhO_8K6xW#c>X-t?8ZTlOR8kLbSaTOV< zZ3*mK9kZyKN5AKZ6hw3yy_m^$ke~3co4tN+!rOjm(vg9kZZ9ZT zRyG&MQ|N@(&4zoUxglDa^ZbxWfNNH?HEYXRWtOsB6EAj~1rX6)Y=dCa?f7H! zOotXv)kC*jG{(u&Q&b$xBI;|pRlhnXt>G+*VIk10SC9{(Mv+*4O(8!(JVkON2RLd1##yknD`<-uK@5aCMZ09P!1me~Da zes1U14S8ZkXm_Wl88Adp>763(C>ZTRuQ%3ZvA;k{*sOce1nersM*)J8dBJX#7sKaY zJQo~gG-38_qT$_Pv?sEEl_}`B@bC0<1|;5JnbNO>&7WF*2ISRo=tt%+S12Fws-Lb< zx5oPj$?j{*On->*)MxsPe>8uXAsuP5h24bzgd7@@jd~!}Bmms9FmCsUyMYhIpwfx* zk{Am_U5BKwra*=A;WX5WO?_0}QwcMsm0RLoL{t41?bKHZfU@j2v0 zNPh)U3R4+zNLFEX$~z{oCCAaT=e0d8yTwuV@(#jL1(9rhy+W`4%Ax_>kb9}X0yc<- z!-{`kCze>@WWMk7I_ za!)S_oqZ4Q!(JzzJ&Mk=44U_kn+qrSBLdtpUC)O&L%?@M+lulWQ^$)QQ^9YByOUW~ zfAuA|>Y=q+58O!Lu;X*?phA*-{~Oayr?u|B?FIqkQUXZ2<2sc6)E45y1&pQa=lF)P zu$=IaazzaN4&|Q+?)%UR<%bO!Ee}Z*BRZNCF@^J-AErMXzlv=9`5!FBa!UlYH6I9| zBDV9sF-D*at@yZ?3~}kBtQF~tz3NIIm$5w@r+AMGt*WO1jcij^+qmX7kT0MyWhG{h zo{#r2=Xf#$%x2uwAurntRR>h>3{WJR~3=E^aiW;fc9{`^)ExtXE(XwssYRlySSEU$inua zon?wID7iNGbi|te_b2;`1BgT4JOxN4f5(aU?M|YlJ_2O395w__f`}3q6EV!IK= zsdJ*sw!%IGwM!&N>J`Jik7ZH#X^S=^w6OyH2x;DZlLu1FB-P7eHhC78rXAhiqlNC+zr<~?4c{K*KfBypmxudCLu&hKoZU!C(P zpcd1!vg7=hEw0JgKdjyTM2snQ=Kx}qRcL0hV3aJHYTWVJ7gJY{Q-76fdkX7UoGBqv zGS|>fYsD!2PdtaAMAtxj)m2XcEtP;^ z$YA3Zx^HjNjlsDD6ROMmgtQ3va~qTzS&q1uz_>}`?JVcfVY0sd)`yes2A$`7cSJ5E z;$M9W=$^@(WVU=bS}CrvVN&zR8*$q|c3$t_M^w)Ya3M+IG%!wIMk>@MRq`GB^Z=1y zcgARtsqQ>uI@Uly74{7a;@qe3B3JQyfm)WMw7t9PO;i6xo{XRV9{LVa`)v64vy z$PNBv+&c^-zRLD52zDh?!RZ6=Zdqh!RQh$o+B9y_irFA;fPo+b=tJZu<-5Q}Fq9q> zH`cxpyG!xL>VE3C*3v1v6%MHU2K^GV7+vhUCdt`FfvreRRl5|@7BJf~u1u^673|Xg zJuu`|{x({uHYLs~<#OToZCjCe75Zd`W8dglv6QC|aI=a?DSl=baF=wdzsjU$WjJ5N z-vf7t8>d6qg4r|B!Jcp2aZv7QC49C1b2(Mnz++P(+Sh_GypZ*9MhRUXXb{;Qk-aSt zr=nZZV)Wn_`VNbBT6MhQoBZ2au@59avrwF2#lscg6iwTTK01(`=z1xoEp9J>Q`}7X z&u%JydLgevfK}@B#+H9o=c&Aor2I(u!u_o=(7YH*P|~B`d)eSS>Ia90sy!nWgvG29 z1~hSj3Fvyg+?ysCrA3WxP!3h(P}~+{do+)XV2P(}Fmo!nx&bfpVC^LQy+Kl2Jt0{o zI^iOpVrmt#>N zs&sTfE+2&5Y~V%xhT^3&91tawAn;Tu{=Jmo^s2nUN-e zuAu<#T=5rDnhe<>enQMqjd188m8@Ik$#J5;piZ{_gy^HNf;+Uany6=rK7TQhUU81j z%DHRBHfdvF=W+KvfP7nQN{e{!s!pIq!l=bbwfBJh591>lk>ZG;fcexjIv2_(I@>FG z4*0gp>=8)Ol0p&JA<%3oP>KQ*r&TD(s{lf(h$h<>9@oBW_P*G)9N=(Pzu6DO+tI6@ zfmoqdf*y7P#-{!7ctw=arqf)C5@oCSvY`Doq&t}bCADu!`PA8yAM`lO+2}7e@S&(7 zqhkqCkb^yODwJ3V2gAjNZOwGiP5z0QM|U=(~IWG*MxUsBU#%<}PHT&ivOo%CL9=6T4ZU9oL! zNJY``2c&GrCF{#ADD>7I8+Z>Z2*&-bQ*fay_2f2etD8J%s^rR_`KOuloLhFMgnb-} z82o^{Fw248y_cO$9(qRP^*#d_zGE@G%39~D5lRZSh6KkIYo4AedS+2t;K`+DycvKk z^L_I$R2XAm;zg?#lEJ%qob{K#vh;yAb5UN*W31MPnZI8o^+BKg>f)%rQHnW`o(4VP z_wh@~u{7uDN-~3@xbP1i5MWhLACuyXu;2XquGy;N1TRHgxkk)mP+ki#u`U=wE+9J$kWNLcWu$ z!|2aan(3YWae=+VGkQ}q-0pUQ9`<0`#I>$jR`sHe__~Vk_l*T!2 zuzDO(Q))5YddB%97*-j(Ul`8#-UM$+M_t9*18;HX`xXF4Z7}q|cg5ChKvDx(SpV;m z;$dJ(@g;rY_N>|=eDdfff^>;)^Wvvm_eDk%{&XR0RU=nU)EC#ozd?q;ten-h$f6?t z6!-l&Vq!sJu)(7pZ0C$=A?JigQfvVl-*%zt7@?_?yuAl#{qLidBcbmRMz6xeipjds zklD#*X}1DrV^x5@pYPY~JAcw>3W{~l)Q{tRb3t~WwBrXW!Iz8guYd1Hb-j$=J@WE& zPH#fsN^9aUo%~F?C`tWbTwiW)HBSf^4kHE@)7B8Gxl1n8_7Sk6fbY! z%_%nZTqtTdiL{99=cW9a0VRPD@*z^DW4IC`1l}Awdn8(YxKZLMouQizr>#|;z#eG& z>hh)(^^lIRODS_2HLvmn@`Yoa*bj7u+qH}OYAy`hNnO&fRVF#BqNnlFd1{@mRaHx7x>r&@}Ow%;*tVjI)7HKFaOAt zRLf>gV#zTQLlxVaV-9U!ek6r>d#fb$*%3A8Ej7XWqB1xAtyL z(jRq>CeCZte_zz;F`TH6BxfcYfa7yqr8*P3CYc_Rm_o6jqM}BlxN#bzWtyN_ zqD^qXqQQh&$9;|9=3sST)Fk+|%Q|UXsvqGDx18#!I&-RENr0sI)xgMwk7L0%)89`J z&(;CrZ_26=@y?AUsB9BMcUiddS!)cG3!9g0@Tqd@azSDF_s7Y~r(=6-Bha zjCOt*Pr5I4s@hAInvKKFbi(D9^C;sx+BJ_7<9ELKU6i~QTqaQV@17Z7E0=*W&-kmY zLz|{ium!`|&H98~+rrBCD@$9}wIs5;?w0~yQpN$_Pg0&Ivw+Ol?dN%0k~A(7`Bp_n z-9#B1H`vzij}HDsdp~4zdAhp;v=O;9HUySx2-5=UezxsBAK=kE_Iv2;v11Fnsad4x zUGEHcMb&-~b2_`XPETVN#MtpGs;QgJ<|=C5Z5fH3vV@$c5~}X{$&JEj8r=_xd=fx; zmBUy`C4SykQ)RVsUy;UE;0D5b^KbQeQ-L?6;bimAAUQ~4_k1%Cv#(^6U}jgPnI;XDIrPXa&U#Tp|r?w6e}#|+lmg&1;=gjkW9 zOh?UmW?D!FEzELrMz)|ft+qhe`?{p82y2*VE7<20!5zR_=(DGc3qO)0PEaypqH;L( zg&*-e8OD)d`z9X30Ao`$ImtLy$G}I}m3O;uOK#enf?5R^AkTX@%K;Wu%__T7fdx{T zyeu#5As}=CN@d{b%$zDF-@S9-2&DWM$L(hjEwfYC89e&cZ2=}7tC5_lTCiwJx5sQh zBYuWfRz_*N-L=9M^y1pe1qLc)ieTi4@kfSn3u7Yk@1`vz>6&JU$-aIxxfgR3bN-Bu zgu~d!W84iV(TWz1BnPYp1R!OKYn3C0QyucKwa z7$PV53%1gU>@QuNL+MO*R#U7lfB-jHdLe4zhPEz-l5L*0E)>AGN4BpDwzKcr6FdwV zLgtEv5u3o11jzAZg~7t#sFEYn??Ay8V5V8#A*;NKs7qkdU-N((baNW_9Od`5{oz|GS+)?Kc4 zz6TSQeOrlS9Vwt12hESdndYz7$S^1g&M3od{$YuK8W$c|qGmQIFFZwCO$33a>uR>d zcD0~mKWuQK*jIYYZbqr`LNq){J?vqXvncY@kX((} z3kog3a8=KNJs>9D?jUsz&s`QKU_H+O@Rif0!%Xm?ijk>%f(I%ODGd1j& z=SYl!GKmE>Rb^TPhWkG)G>f$@GVKj)&WbP%@}dn4B(DclgRP3-*7*JCgR zlA9Zokj1Foo5bCtg0O$o-PF3fbV)^+V$2~0kCL6 zhK&A|LvVGB9Z0!m6Na&Gx@Qm|Mf?443)|!>NA^*#-&^Xo@`OP!NWtu3x(A(zsxoyv z*3gek%oA2MFwxwfuL>K&3~h`jSZL2UCZAdFFz-KQlk;10MK}XVhxoKn{fvq2@dk#* z`!sIi_nIm@W}H0m9Z#4E{Gkv4gFq(5S5;SCTj!P9Q|QyGrRQQ-+2Nw{*U*v>LE_0Y{FQ)xfMvRCqcVX#Q|c#D*hI4eMIYT( z=ZU2+kEkdes1{VI-vu}*^Cg&C{i6@%br0lVh1l-Rb;(V+T2L#9b|k>O_o3*bszhA( z<+`|!NZnKqJu4uKN+|4rgwi|MI0yLY?EVlNC3evr72o3?e)`el-Ua5u1r=K0jVf5! znV~qnRkvj$_k&H#Ru#ie4n8aQSe>4mLaNA6Rnq0G_JyGc$vy$H7@JIu7FCD;lZpFqcyy~c+JJYxa9 z5Ng53!EUJg87p3Lb%VHDN==wS<3E|gPz{v5D$UA!lqXu?qpPwd87{*#|>~NKYYZ+CeC; zJDDbamE-AI@O!JKlsM&n4?)QL1M0qhgEW-$3@;6S`8#?003bM7UNQl~chwrR+Gt?E z^`@KKutN}NwTk`wrHc#tH1h>(_-Eh_J#6mEMPScTD2LH z8BYKl*QPnZS;g`!uq=8=qWv`ct(b^XNe|Kf9jueb#$v^qh$j|0o4Mgt(Gb&?h6g?m zV@*)}GWM&yB=SF5#A>mmdC%<;28TI{JYlH>L6NC&DprWl!0~d!Z5#D!gT$)Qr$nq% zbZERfTXYdS#03|ej9+M2+nEZKVKaf}OCq&_4%tRds?P2-uu4RbLNgGg0hz7)YuVO-V)p3RHsbw%*0Be?V z((wmIlNrkESC8PK#DKO1l)L+K2DW{gkk$KB0KpZ`0I`C0dy>d(h!-hn>5)n{5_%sqk>J2UH^xBvp6#Ow(JY34 z77{oT#QJ0}aHJ3Xc*)xv;7Hcu3>yE*fFpfZnq~3`4EN$f{JF4Luj3w|Q+*rEQRIAF zH8X^^Ba-0*=aFpU)(|9Ij3#Y8+OqJxo%FJo<@nk%8@v&PzH}gYklygJ z1_n>V$e^6;(MfqbS$Rz%u}9fPiF6uCs=9N7!6Cy1G!-~Piz_<5iv^AvRfjX)c+f_K z_f}^Qqc=L2$@-cp$eF(5cMO(%^iyJR4!X*8u^+wRhIcv(DuZnDqnsQC&<$%-zs1HE z@&gDZh6ZZ~Oh^TaAd3g>=zKu|2b!@1%4jD4THSw&1UC<&ZRYo^PR-SyikoutLohD$ z(#vDN7yTDvn+MmupuDN*#kx{b_NY>Q;n2|NcD{-M5&u&WTJIL1aldlp@8(foqc+M zPtUY{8pegIduPc7fwHXdI{Iy* zH5_Cj9=kVBWG-nW-_uw$GkTs>XFV-lTH~_!+fAAjJ zuzKf1`MoYkj9CAv;w9A-{i`y%b>Vp{3qXgn4@P0Nv^J4pzui zi*$kO!hHJ9b4m$OxW&C2!19}bu#fOQW8`oT;@Bhs6-EPlcmum75SwLU|Iv0z8|Lo| z60&{0rzmN(J2o2Oj_Pb4AVY%A3W?)W!i!7ZNRkifGcf05=CJmZ+{Tya)U84jJ*_%% z-%lA$@>Lvzj|8@8{pUTMuaAX=+#~sF-z_1~7~YfHGc7S~txbs1WV{yqd0>% z-v;IWS3G7l-Oq4lP3f5gx~{IIAU6icNs`!0>8qVj8u3%F7b?K$sz`Yo+MfJ%Jz7C| zf=Qjku52*6M!@7pRLAPgNS|-J9F2aodF*_TK#0v-3l;(2f?xNrJ;%z%SNB#$O!d^E zI^X>k?TzKIEhl)bOU7sq_iR@g(@aU*U|?BH!Ii+Lt0X;E+KYpLFPyl?a`%<_(12jm zDT;AeR7$vnJT`!D_&+F-8#lZmJj(!AlPBl!4NL>ko!A?6hlOT&YnZ+7f&dB zy9BV~rFUE@KW?F%W;GwZbtL~`#um6Bc11Jz_3`*VB{<6nYmi&aLt4oY^-Ch<&!rE&Ps+8)jLXj(&tn^1u`?S3g15yeuq<;ic3qt+N*ycS%2AEpG ztO^kNHJrc&()J`y47fqqKZ&5#4nKqJsz>~Jc!;%~>5-38HKTcXL&`Kaq1rL6O|DB- z9u35JI?II3ThPGr(bwkdN79MZdPR^!peBNP+q04Ct_#@|QRII8Td`jE3X>SpM6vfO zo`>Ax0GRU7^2wX>9Mq0_VAE*kih#%5OoVBiGUuQE$OIlQund{Pw%gs0_HO(#*4O)O zM5MpnWDbA#uXqh>eKbf^Y@}719f^MNkG@_d3Q^=`b1)hIU=w{sul!Vvo6>bdqX?|_ zSVNjLsKfNw@OtA9rYC`NrhHNSwiAm|Fwp_VdZ7v6t06%%P$bT#F50G0b)rq}Y!18? zz3ETFl?X-(z4(1CL5{QR8S`dGPqry8nTYo@-|C#3hq&)oz{bKg;s5UBCfotfdU7(e zvi#qBxmS8}aRqAmcv;OT7T9q>_{yfqW;Jq zaOe*`16l)f0QDjNm}arQ9LobxEX+6KT0e^XmCgZEPsf*&+U*Xj8Cf8xaoAd6hoHk@ zfXR;)PRt2)ZvEjncA|`^L&<)sgUFCHB<1SGmCyH9q5Z7h(aen`lJ%t(Pk9&8wr%ws zrerW;4P_F)ptQA)`W=jA6p5=+hN;B!Ya^4bo%^&O<115qQ%j4!;7pl43RIYN4{S*l z3c#u-TzI4;A@JbklOMVw{Lb7;H91wzYZWAgS=w(T9k0h(tQk&xlYd+GZd+epu)ai# z?iPQ|;Am|v#;3W71=@`mWumbaJ-1W7^|QNT>>2B$P^f`NQe^hiCiyYjsAc;tHgv=^ zwz}S~@9bTo0e#Zo|=MV2A)w30qz~*%{fSmDP_o|xz4HuFj&dp zizQ4HNbl393?{rEFyrBz_$Oc-ubK}cda?O^imXU6UWTbDy2e#y+Y$x_Ly+9 zt?)5fv6Z27)_pTy>Wbm-v@FuO?t%c|TYoCOqBQ#?SF=hD$P~6IR1$yc3>=L z%+}7em)7UXyFEddjZi~Tt!}KpkNZsf6 z6i0#m>@q@x1XVDsV2U>*^(neJDIefD!lEIt{QjuYBH5UvG%R;P^mp@-CgxEVNpS ztk^B*EvlHf-^^TUohfiEC9DQ`7mqsmuuZU&mCHilquXS_)MOobg~aKpP9aat87Iwm zoNR1oh>@^7v%_MEIcj7zDY3qb!Yq>TpX0Pd{%S^aH8w1T`{qgcePukfwy6JfvOX48 zgJBDmkcH({>?tTzfIL#{oaH()c<#QH(qGn*>&cZpLHMYMhwN?R4Eo7uk4W5eV@E% znH3TKv-{sHs?H}O^JbnOH6zyXm$Pv?zYGrFulTsv&mAGf)+hQ&5KA7-lQf}vpGS!@ zTp|lF9S@d0{hr2b>6B7{*ST8P((QZU<|fMYP3!3Vl8P17*;>QK&R%p#!tmW~6Wi|Z z_>ez$Z&eeoEOiK+nH26$YHGH3UKoNSGg-eb;U}zgsIfd8@EMk!e`md*O3{}<()`(5 z=_HeaPTi4nG-KkpYni>_L&-Z**jOp`kQ+M(SaZXQm;DUZ0R44; zGR)7i08^;rsQ7!;f?`kBjzkyh$W`p$S_1IoT4%cduSv7031Qn5Dle}!HVt?Zt6%tH zvIMsGG>r=#tvzWuOTA1yMxFCFPK7@5zzXSrfxk)&Xj#OoR|suHU0HQ3~M?vOODF=rWSh?k7TaN3P=( zE&{2j;2mH@5I4XHPCMOB*E#1$9eq4o>(j=X>J(1lYC$US`dr(Mb#%pjV(sdhMEuHN zqdr-WUeyNS0~(X?NK9aV(nPkZpT0vX!;#WBks*gKq?BuNF^5yMn%H-2!(bimUg&Ci zc;q7n;5wTe0|Mak)Y%yfhyKQQs= zXXPHLusQThTf&||gf0vxMT@6Jy5$yyUq7iU19vYf$awg>Q~0zYIn&TIQS2+CoY!eP zI1jsOTa4nAnqi_AI63`i*m!c$X43N123kG>#KUAg9Pq&J*~@iqhSuafW~Bo&^@H!P z5uE_j^ZLjR$xmQNP#1e1UCOHWe^Xn`W$J=n*aH;7e~Q7zi;?y~2dxBzh$b}Amj7M* zlz1{4r~q+S$T1tRvR!2%nypp|xFj{O31G>6H6G<|=G^7vK(Z5H;l`U;nXsnQce(1b zZlsPH^JwVv7W>tdyaGvZ)CChP;w7!ml${L7X{M;vUcUf!_nZ~2srf+LuF4lpY>0cI z_2=2Pu}$CWhBJ+QA$m22zFC5ry3@ai=uR0iknsTz51LAg zM@dJXyvaz3OvAg*EbbB9hi6=JLNXyOK|SCA!VBDu*nr_D+b`3w9vx1%RlVz)WiygP1C72=Ol;v^*YAXXWJ#) zl}N!~g62JxS|R=R+t5y(N^0QyUiIDXlml&!8?x9+Pw@d|7ohtUOzT@8dT35}hD$B! z_F1Yo-l#wPft2@b?`t4tn5dw?JqO`EhZ&8~QbnRN|Kf5Qo?rCPD+aa)E&&wDqxRSl zp1@O`=MzR-cco55xmvsEvb_-;L^2%fun}JjU_EpgiKY%GPl;Y@BwO3E)Ok0_n+Ja# zD2PqO^PrSk8B?Y|+;RW-6djLysos_Gqrcs@ey%)nPJ)vX_E=TAiyC_^IdS#H33v}Wj?C1$vP_%d5L zUO8fc-@g*py*Ga>71u_jWs=-u6IU3w5+r2P01EMqtf!-r$`)!;n$pT)U^`s;>B?U} zoYa>{(LyUp-nwBFpH<1^nktti_$#fWE>L!8tm(k-i(Plg4rR_#NC0Xs^T_5|2W~eL zkS84=NVztZg*)*0Qkvd5A2;XqOx z(v!^rilSiDA2gnBqYozsXJ^u7)%@(tmDGILqP}-fN`D%$!|>r^%dN#08S#I z?1hrg2-?jj`WNhIsrk0D7D75c#a0#{)xiUk1lO{G7xe_#(>VKcTeXkh(Gr_iYk3{- z@KB_0>r?B61^cZ)s$3TltQ=6kF3hrBqq9rh+ zp^^8dJ(73>D#rhlGVad>2h$V|Ii$v`yGbfZSI#Hkj0psY8nG$^;iNi75B`KIg-cCp z#Eg=-1J7gnp9Yh{KsX@`k!)~G-V6)7NnDduBiEq@7Y#_&lU=HQKv3j=l#!tavByz5lNGz1e0zP4M;8(cN2{EH0f}&G`WA zB0G=p?5sR;uk5;+yUH zQClHofv||lPFWS)FCUX6M@W#k_g3k6mR3| zS)1hwg3~bCrH75Q9{)4DhM(Zo2s~3aDGd$92?!r0kE(n27UM5 zsrUOOlDAY3A%gpJKK+bC;rczdA-pha#FF#jR%q90J0Y#N4Z(_Yi*;ldvPb zl5fkq^iiCNKFFIoTB@xDLv1{C` zO&E#~#ESqaDg>B?x!P(%b%uAB<;fOAELypsjm%$A1k_>_U^y+s0)G;-xF!sY98g~3 z12C>YI|6W~^sPzVIRAErZ}}j1iL}2J2G@Zd$l=V>g5EgXvJTD`RRxq1edvf?#=r8r z*4VYl^MCw4(B*tZm|?%KL2R25jI&=yf8!ki)k-F>eHs>qOUHs2yd7=|BSBtG=8WDM zvdJXb6Pu-!6DlFMw;CGFgy(=RAQxy1JQ9GD}J4R19tIeJ%va%q|saWW}W7s~pU5Q9z%sJrg zz}Fu@vs}?M5!S?Uug{U9NlJ;`d!K=?$tfshTv_T3S%6;aO^+3(vEHt;HOUn#tT@@1P<_|$sF{!T(@zuNSTGP73n(z(l(kiRZc-V>W{nLj&Li6% z!JF)C4Q3hV^6eAph!BRc4LW?70$&42AZp7yD`3}`okh}ufsbtR=meg=JV;}5B%fq| z4L>>>So)sVs#u@b+nrfwU(FvXBC>L{H~lFBXfxSgwbFQ>XKsU2MVDy46>g72rX6ZV z^0|)`cK}m#k}B=W3$R#KJ&1u_Uh+C@`w7MM`6c?bClKUXHg$xag`GFk>qlk} zd>3?}6r=t|d}=_LFF(%pHeJ^9YonCbB8U1twSDQ=gnrED;|8zCcH9kgmPUzv82mjH zq?=2-#WG8X�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�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

X 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%0A5K>iKQQ(_pBJKRp{ERW09GBcM!BT4azNh2zRu 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 f + | _ => println("specify .onnx model name"); throw Fail("") + } +println(Onnx.Parse.parse(model_name)) diff --git a/lib/Array.fx b/lib/Array.fx index cdef2b2..9e4e44b 100644 --- a/lib/Array.fx +++ b/lib/Array.fx @@ -18,6 +18,8 @@ fun total(a: 't []) = size(a) fun __negate__(a: 't [+]) = [| for x <- a {-x} |] +fun map(arr: 'a [+], f: 'a -> 'b) = [| for x <- arr {f(x)} |] + operator .+ (a: 'ta [+], b: 'tb) = [| for x <- a {x .+ b} |] operator .- (a: 'ta [+], b: 'tb) = @@ -118,6 +120,13 @@ operator .>= (a: 't [+], b: 't [+]): bool [+] = fun sum(a: 't [+]) = fold s = ((0 :> 't) :> double) for aj <- a {s + aj} + +fun sum(a: 't [+], v0: 's) = + fold s = v0 for aj <- a {s + aj} + +fun product(a: 't [+], v0: 's) = + fold p = v0 for aj <- a {p * aj} + fun mean(a: 't [+]) = sum(a)/(max(total(a), 1) :> double) fun normInf(a: 't [+]) = diff --git a/lib/Onnx/Ast.fx b/lib/Onnx/Ast.fx new file mode 100644 index 0000000..4b1a762 --- /dev/null +++ b/lib/Onnx/Ast.fx @@ -0,0 +1,215 @@ +/* + This file is a part of ficus language project. + See ficus/LICENSE for the licensing terms +*/ + +// hierarchical representation of Onnx format +import Hashmap + +type datatype_t = + | DTYP_UNDEFINED | DTYP_FLOAT | DTYP_UINT8 | DTYP_INT8 | DTYP_UINT16 | DTYP_INT16 + | DTYP_INT32 | DTYP_INT64 | DTYP_STRING | DTYP_BOOL | DTYP_FLOAT16 | DTYP_DOUBLE + | DTYP_UINT32 | DTYP_UINT64 | DTYP_COMPLEX64 | DTYP_COMPLEX128 | DTYP_BFLOAT16 + +type tdata_t = T_FLOAT: float [] | T_INT8: int8 [] | T_INT64: int64 [] +type tensor_id_t = string + +type tensor_t = +{ + name: tensor_id_t + shape: int [] + data: tdata_t +} + +type opset_t = +{ + version: int64 + domain: string +} + +type dim_t = DimParam: string | DimValue: int64 +type typeinfo_t = TYPINFO_TENSOR: (datatype_t, dim_t []) + +type valueinfo_t = +{ + name: tensor_id_t + denotation: string + typ: typeinfo_t +} + +type attrval_t = + | AttrInt: int64 | AttrFloat: float + | AttrString: string | AttrTensor: tensor_t + | AttrFloats: float [] | AttrInts: int [] | AttrStrings: string [] + +type attr_t = +{ + name: string + v: attrval_t +} + +type node_t = +{ + name: string + op: string + inputs: tensor_id_t [] + outputs: tensor_id_t [] + attrs: attr_t [] +} + +type graph_t = +{ + name: string + inputs: valueinfo_t [] + outputs: valueinfo_t [] + values: valueinfo_t [] + initializers: tensor_t [] + nodes: node_t [] +} + +type model_t = +{ + ir_version: int64 + producer: string + domain: string + doc_string: string + import_opsets: opset_t [] + metadata: (string, string) [] + graph: graph_t +} + +fun total(t: tensor_t) = product(t.shape, 1) + +fun string(d: datatype_t) +{ + | DTYP_UNDEFINED => "undefined" + | DTYP_FLOAT => "float" + | DTYP_UINT8 => "uint8" + | DTYP_INT8 => "int8" + | DTYP_UINT16 => "uint16" + | DTYP_INT16 => "int16" + | DTYP_INT32 => "int32" + | DTYP_INT64 => "int64" + | DTYP_STRING => "string" + | DTYP_BOOL => "bool" + | DTYP_FLOAT16 => "float16" + | DTYP_DOUBLE => "double" + | DTYP_UINT32 => "uint32" + | DTYP_UINT64 => "uint64" + | DTYP_COMPLEX64 => "complex64" + | DTYP_COMPLEX128 => "complex128" + | DTYP_BFLOAT16 => "bfloat16" +} + +fun string(ops: opset_t) = f"{ops.domain} v{ops.version}" +fun string(dim: dim_t) { + | DimParam(n) => n + | DimValue(v) => string(v) +} + +fun tensor_data_prefix(t: tdata_t) +{ + | T_FLOAT _ => "float32" + | T_INT8 _ => "int8" + | T_INT64 _ => "int64" +} + +fun print_tensor_data(t: tdata_t) +{ + | T_FLOAT(data) => print(data) + | T_INT8(data) => print(data) + | T_INT64(data) => print(data) +} + +fun print(t: tensor_t) +{ + val shape = "x".join(t.shape.map(string)) + print(f"tensor {{name='{t.name}', shape={shape}, data={tensor_data_prefix(t.data)} ") + if total(t) > 10 {print("[...]")} else {print_tensor_data(t.data)} + print("}") +} + +fun print(a: attr_t) +{ + print(f"{a.name}: ") + match a.v { + | AttrInt(i) => print(i) + | AttrFloat(f) => print(f) + | AttrString(s) => print(repr(s)) + | AttrTensor(t) => print(t) + | AttrInts(ints) => print(ints) + | AttrFloats(floats) => print(floats) + | AttrStrings(strings) => print(strings) + } +} + +fun print(n: node_t) +{ + val indent0 = " "*4 + val indent1 = indent0 + indent0 + val indent2 = indent1 + indent0 + val indent3 = indent2 + indent0 + println(f"{{") + println(f"{indent2}name: '{n.name}'") + println(f"{indent2}op: {n.op}") + println(f"{indent2}inputs: {n.inputs}") + println(f"{indent2}outputs: {n.outputs}") + print(f"{indent2}attributes: {{") + if n.attrs.empty() {print(f"}}\n{indent1}}}")} + else { + println() + for a <- n.attrs { + print(indent3) + println(a) + } + print(f"{indent2}}}\n{indent1}}}") + } +} + +fun print(vi: valueinfo_t) +{ + print(f"{vi.name}") + if vi.denotation != "" { + print(f" ({vi.denotation})") + } + print(": ") + match vi.typ { + | TYPINFO_TENSOR (dt, diminfo) => + val diminfo = " x ".join(diminfo.map(string)) + print(f"{dt}, {diminfo}") + } +} + +fun print(graph: graph_t) +{ + val indent0 = " "*4, indent1 = indent0 + indent0 + println(f"graph {{") + println(f"{indent0}name: {graph.name},") + println(f"{indent0}inputs: {{") + for x <- graph.inputs { print(indent1); print(x); println(",") } + println(f"{indent0}}},\n{indent0}outputs: {{") + for x <- graph.outputs { print(indent1); print(x); println(",") } + println(f"{indent0}}},\n{indent0}values: {{") + for x <- graph.values { print(indent1); print(x); println(",") } + println(f"{indent0}}},\n{indent0}initializers: {{") + for x <- graph.initializers { print(indent1); print(x); println(",") } + println(f"{indent0}}},\n{indent0}nodes: {{") + for x <- graph.nodes { print(indent1); print(x); println(",") } + print(f"{indent0}}}\n}") +} + +fun print(model: model_t) +{ + println(f"ir_version: {model.ir_version}") + println(f"producer: {model.producer}") + println(f"domain: {model.domain}") + println(f"doc_string: '{model.doc_string}'") + for opset <- model.import_opsets { + println(f"import opset: {opset}") + } + for (k, v) <- model.metadata { + println(f"property '{k}': '{v}'") + } + println(model.graph) + println("// end of model") +} diff --git a/lib/Onnx/Parse.fx b/lib/Onnx/Parse.fx new file mode 100644 index 0000000..9c9dbdf --- /dev/null +++ b/lib/Onnx/Parse.fx @@ -0,0 +1,421 @@ +import Ast, File +import Protobuf.Impl + +@ccode { +#include "ficus-onnx.pb-c.c" +#include +#include +#include +#include +#include +#include + +static int64_t unpack_int64(uint8_t* p) +{ + uint64_t x = p[0] | ((uint64_t)p[1]<<8) | ((uint64_t)p[2]<<16) | ((uint64_t)p[3]<<24) | + ((uint64_t)p[4]<<32) | ((uint64_t)p[5]<<40) | ((uint64_t)p[6]<<48) | ((uint64_t)p[7]<<56); + return (int64_t)(x); +} + +typedef struct onnx_dim_t +{ + int tag; + union + { + fx_str_t param; + int64_t value; + } u; +} onnx_dim_t; + +typedef struct onnx_type_info_t +{ + int datatype; + fx_arr_t shapeinfo; +} onnx_type_info_t; + +typedef struct onnx_value_info_t +{ + fx_str_t name; + fx_str_t denotation; + onnx_type_info_t typ; +} onnx_value_info_t; + +typedef struct onnx_tensor_t +{ + fx_str_t name; + fx_arr_t shape; + struct { + int tag; + fx_arr_t arr; + } data; +} onnx_tensor_t; + +typedef struct onnx_attr_t +{ + fx_str_t name; + struct { + int tag; + union { + int64_t attrInt; + float attrFloat; + fx_str_t attrStr; + onnx_tensor_t attrTensor; + fx_arr_t attrArr; + } u; + } v; +} onnx_attr_t; + +typedef struct onnx_node_t +{ + fx_str_t name; + fx_str_t op; + fx_arr_t inputs; + fx_arr_t outputs; + fx_arr_t attrs; +} onnx_node_t; + +typedef struct onnx_graph_t +{ + fx_str_t name; + fx_arr_t inputs; + fx_arr_t outputs; + fx_arr_t values; + fx_arr_t initializers; + fx_arr_t nodes; +} onnx_graph_t; + +typedef struct onnx_opset_import_t +{ + int64_t version; + fx_str_t domain; +} onnx_opset_import_t; + +typedef struct onnx_metadata_entry_t +{ + fx_str_t key; + fx_str_t value; +} onnx_metadata_entry_t; + +typedef struct onnx_model_t +{ + int64_t ir_version; + fx_str_t producer; + fx_str_t domain; + fx_str_t doc_string; + fx_arr_t opset_import; + fx_arr_t metadata; + onnx_graph_t graph; +} onnx_model_t; + +enum { + REF_GRAPH = 0, + REF_NODE = 1, + REF_TENSOR = 2, + REF_ATTR = 3, + REF_VALINFO = 4, + REF_DIM = 5, + REF_STR = 6, + REF_FLOAT = 7, + REF_INT64 = 8, + REF_OPSET_IMPORT = 9, + REF_METADATA_ENTRY = 10, + REF_MAX = 11 +}; + +typedef int (*onnx_parse_elem_t)(const void* arrelem, const fx_arr_t* refarrs, char* result); + +static int onnx_parse_array(const void* arr_, size_t nelems_, const fx_arr_t* refarrs, int idx, + onnx_parse_elem_t parse_elem, fx_arr_t* result) +{ + assert(0 <= idx && idx < REF_MAX); + size_t elemsize = refarrs[idx].dim[0].step; + const void** arr = (const void**)arr_; + int_ nelems = (int_)nelems_; + int fx_status = fx_make_arr(1, &nelems, elemsize, refarrs[idx].free_elem, refarrs[idx].copy_elem, 0, result); + if (fx_status < 0) return fx_status; + if (parse_elem) { + for(int_ i = 0; i < nelems; i++) { + fx_status = parse_elem(arr[i], refarrs, result->data + i*elemsize); + if (fx_status < 0) + break; + } + } else { + memcpy(result->data, arr_, nelems*elemsize); + } + return fx_status; +} + +static int onnx_parse_dim(FicusOnnx__TensorShapeProto__Dimension* dim, + const fx_arr_t* refarrs, onnx_dim_t* result) +{ + int fx_status = FX_OK; + bool is_value = dim->value_case == FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__VALUE_DIM_VALUE; + result->tag = 1 + (int)is_value; + if (is_value) { + result->u.value = dim->dim_value; + } else { + fx_status = fx_cstr2str(dim->dim_param, -1, &result->u.param); + } + return fx_status; +} + +static int onnx_parse_value_info(FicusOnnx__ValueInfoProto* vi, const fx_arr_t* refarrs, + onnx_value_info_t* result) +{ + int fx_status = fx_cstr2str(vi->name, -1, &result->name); + if (fx_status >= 0) + fx_status = fx_cstr2str(vi->type->denotation, -1, &result->denotation); + if (fx_status >= 0) { + if (vi->type->value_case == FICUS_ONNX__TYPE_PROTO__VALUE_TENSOR_TYPE) { + result->typ.datatype = vi->type->tensor_type->elem_type + 1; + const FicusOnnx__TensorShapeProto* shape = vi->type->tensor_type->shape; + fx_status = onnx_parse_array(shape->dim, shape->n_dim, refarrs, REF_DIM, + (onnx_parse_elem_t)onnx_parse_dim, &result->typ.shapeinfo); + } else { + FX_FAST_THROW_RET(FX_EXN_NotImplementedError); + } + } + return fx_status; +} + +static int onnx_parse_tensor(FicusOnnx__TensorProto* tensor, const fx_arr_t* refarrs, + onnx_tensor_t* result) +{ + int fx_status = fx_cstr2str(tensor->name, -1, &result->name); + int_ n_dims = (int_)tensor->n_dims; + int_ temp_dims = n_dims > 0 ? n_dims : 1; + int_ total = 1; + if (fx_status >= 0) { + fx_status = fx_make_arr(1, &temp_dims, sizeof(int_), 0, 0, 0, &result->shape); + if (fx_status >= 0) { + int_* shape = (int_*)result->shape.data; + shape[0] = 1; + for(int_ i = 0; i < n_dims; i++) { + shape[i] = (int_)tensor->dims[i]; + total *= shape[i]; + } + } + } + if (fx_status >= 0) { + int tag = tensor->data_type == FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT8 ? 2 : + tensor->data_type == FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT64 ? 3 : 1; + size_t elemsize = tag == 1 ? sizeof(float) : tag == 2 ? 1 : 8; + fx_status = fx_make_arr(1, &total, elemsize, 0, 0, 0, &result->data.arr); + if (fx_status >= 0) { + result->data.tag = tag; + if (elemsize == 1 && tensor->raw_data.len == total) { + memcpy(result->data.arr.data, tensor->raw_data.data, total*elemsize); + } else if (elemsize == 4 && tensor->n_float_data == total) { + memcpy(result->data.arr.data, tensor->float_data, total*elemsize); + } else if (elemsize == 4 && tensor->raw_data.len == total*4) { + uint32_t* dst = (uint32_t*)result->data.arr.data; + for(int_ i = 0; i < total; i++) { + uint8_t* p = tensor->raw_data.data + i*4; + dst[i] = (uint32_t)p[0] | ((uint32_t)p[1] << 8) | + ((uint32_t)p[2] << 16) | ((uint32_t)p[3] << 24); + } + } else if (elemsize == 8 && tensor->raw_data.len == total*8) { + int64_t* dst = (int64_t*)result->data.arr.data; + for(int_ i = 0; i < total; i++) { + uint8_t* p = tensor->raw_data.data + i*4; + dst[i] = unpack_int64(p); + } + } else { + memset(result->data.arr.data, 0, elemsize*total); + } + } + } + return fx_status; +} + +static int onnx_parse_str(const char* str, const fx_arr_t* refarrs, fx_str_t* result) +{ + return fx_cstr2str(str, -1, result); +} + +static int onnx_parse_attr(const FicusOnnx__AttributeProto* attr, + const fx_arr_t* refarrs, onnx_attr_t* result) +{ + int fx_status = fx_cstr2str(attr->name, -1, &result->name); + int t = attr->type; + if (fx_status < 0) + return fx_status; + if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__INT) { + result->v.tag = 1; + result->v.u.attrInt = attr->i; + } else if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__FLOAT) { + result->v.tag = 2; + result->v.u.attrFloat = attr->f; + } else if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__STRING) { + result->v.tag = 3; + fx_status = fx_cstr2str((char*)attr->s.data, attr->s.len, &result->v.u.attrStr); + } else if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TENSOR) { + result->v.tag = 4; + fx_status = onnx_parse_tensor(attr->t, refarrs, &result->v.u.attrTensor); + } else if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__FLOATS) { + result->v.tag = 5; + fx_status = onnx_parse_array(attr->floats, attr->n_floats, refarrs, REF_FLOAT, + 0, &result->v.u.attrArr); + } else if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__INTS) { + result->v.tag = 6; + fx_status = onnx_parse_array(attr->ints, attr->n_ints, refarrs, REF_INT64, + 0, &result->v.u.attrArr); + } else if (t == FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__STRINGS) { + result->v.tag = 7; + fx_status = onnx_parse_array(attr->strings, attr->n_strings, refarrs, REF_STR, + (onnx_parse_elem_t)onnx_parse_str, &result->v.u.attrArr); + } else { + FX_FAST_THROW_RET(FX_EXN_NotImplementedError); + } + return fx_status; +} + +static int onnx_parse_node(const FicusOnnx__NodeProto* node, + const fx_arr_t* refarrs, onnx_node_t* result) +{ + int fx_status = fx_cstr2str(node->name, -1, &result->name); + if (fx_status >= 0) + fx_status = fx_cstr2str(node->op_type, -1, &result->op); + if (fx_status >= 0) + fx_status = onnx_parse_array(node->input, node->n_input, refarrs, REF_STR, + (onnx_parse_elem_t)onnx_parse_str, &result->inputs); + if (fx_status >= 0) + fx_status = onnx_parse_array(node->output, node->n_output, refarrs, REF_STR, + (onnx_parse_elem_t)onnx_parse_str, &result->outputs); + if (fx_status >= 0) + fx_status = onnx_parse_array(node->attribute, node->n_attribute, refarrs, REF_ATTR, + (onnx_parse_elem_t)onnx_parse_attr, &result->attrs); + return fx_status; +} + +static int onnx_parse_graph(const FicusOnnx__GraphProto* graph, + const fx_arr_t* refarrs, + onnx_graph_t* result) +{ + int fx_status = fx_cstr2str(graph->name, -1, &result->name); + if (fx_status >= 0) + fx_status = onnx_parse_array(graph->input, graph->n_input, refarrs, REF_VALINFO, + (onnx_parse_elem_t)onnx_parse_value_info, &result->inputs); + if (fx_status >= 0) + fx_status = onnx_parse_array(graph->output, graph->n_output, refarrs, REF_VALINFO, + (onnx_parse_elem_t)onnx_parse_value_info, &result->outputs); + if (fx_status >= 0) + fx_status = onnx_parse_array(graph->value_info, graph->n_value_info, refarrs, REF_VALINFO, + (onnx_parse_elem_t)onnx_parse_value_info, &result->values); + if (fx_status >= 0) + fx_status = onnx_parse_array(graph->initializer, graph->n_initializer, refarrs, REF_TENSOR, + (onnx_parse_elem_t)onnx_parse_tensor, &result->initializers); + if (fx_status >= 0) + fx_status = onnx_parse_array(graph->node, graph->n_node, refarrs, REF_NODE, + (onnx_parse_elem_t)onnx_parse_node, &result->nodes); + return fx_status; +} + +static int onnx_parse_opset(const FicusOnnx__OperatorSetIdProto* opset_import, + const fx_arr_t* refarrs, onnx_opset_import_t* result) +{ + int fx_status = fx_cstr2str(opset_import->domain, -1, &result->domain); + result->version = opset_import->version; + return fx_status; +} + +static int onnx_parse_metadata(const FicusOnnx__StringStringEntryProto* metadata_entry, + const fx_arr_t* refarrs, onnx_metadata_entry_t* result) +{ + int fx_status = fx_cstr2str(metadata_entry->key, -1, &result->key); + if (fx_status >= 0) + fx_status = fx_cstr2str(metadata_entry->value, -1, &result->value); + return fx_status; +} + +static int onnx_parse_model(const fx_arr_t* arr, const fx_arr_t* refarrs, + onnx_model_t* result) +{ + const uint8_t* data = (const uint8_t*)arr->data; + size_t datasize = (size_t)arr->dim[0].size; + FicusOnnx__ModelProto* model; + int fx_status = FX_OK; + + assert(refarrs[REF_GRAPH].dim[0].step == sizeof(onnx_graph_t)); + assert(refarrs[REF_NODE].dim[0].step == sizeof(onnx_node_t)); + assert(refarrs[REF_ATTR].dim[0].step == sizeof(onnx_attr_t)); + assert(refarrs[REF_VALINFO].dim[0].step == sizeof(onnx_value_info_t)); + assert(refarrs[REF_TENSOR].dim[0].step == sizeof(onnx_tensor_t)); + assert(refarrs[REF_DIM].dim[0].step == sizeof(onnx_dim_t)); + assert(refarrs[REF_STR].dim[0].step == sizeof(fx_str_t)); + assert(refarrs[REF_FLOAT].dim[0].step == sizeof(float)); + assert(refarrs[REF_INT64].dim[0].step == sizeof(int64_t)); + assert(refarrs[REF_OPSET_IMPORT].dim[0].step == sizeof(onnx_opset_import_t)); + assert(refarrs[REF_METADATA_ENTRY].dim[0].step == sizeof(onnx_metadata_entry_t)); + + if( !data || datasize == 0 || arr->ndims != 1 || arr->dim[0].step != 1 || + arr->copy_elem != 0 && arr->free_elem != 0 ) { + FX_FAST_THROW_RET(FX_EXN_BadArgError); + } + + model = ficus_onnx__model_proto__unpack(0, datasize, data); + if(!model) + FX_FAST_THROW_RET(FX_EXN_BadArgError); + + result->ir_version = model->ir_version; + fx_status = fx_cstr2str(model->producer_name, -1, &result->producer); + if (fx_status >= 0) + fx_status = fx_cstr2str(model->domain, -1, &result->domain); + if (fx_status >= 0) + fx_status = fx_cstr2str(model->doc_string, -1, &result->doc_string); + if (fx_status >= 0) + fx_status = onnx_parse_array(model->opset_import, model->n_opset_import, refarrs, REF_OPSET_IMPORT, + (onnx_parse_elem_t)onnx_parse_opset, &result->opset_import); + if (fx_status >= 0) + fx_status = onnx_parse_array(model->metadata_props, model->n_metadata_props, refarrs, REF_METADATA_ENTRY, + (onnx_parse_elem_t)onnx_parse_metadata, &result->metadata); + if (fx_status >= 0) + fx_status = onnx_parse_graph(model->graph, refarrs, &result->graph); + ficus_onnx__model_proto__free_unpacked(model, 0); + return fx_status; +} +} + +type refarrs_t = ( + Ast.graph_t [], + Ast.node_t [], + Ast.tensor_t [], + Ast.attr_t [], + Ast.valueinfo_t [], + Ast.dim_t [], + string [], + float [], + int64 [], + Ast.opset_t [], + (string, string) []) + +fun get_refarrs(): refarrs_t +{ + val some_attrs = [| Ast.attr_t {name="size", v=Ast.AttrInt(1L)}, Ast.attr_t {name="url", v=Ast.AttrString("http://a.b.c")} |] + val some_node = Ast.node_t {name="n", op="conv", inputs=[|"0"|], outputs=[|"1"|], attrs=some_attrs} + val some_dim = Ast.DimValue(1L) + val some_vi = Ast.valueinfo_t {name="x", denotation="", typ=Ast.TYPINFO_TENSOR(Ast.DTYP_FLOAT, [|some_dim|])} + val some_tensor = Ast.tensor_t {name="t", shape=[|1|], data=Ast.T_FLOAT([|1.f|])} + val some_graph = Ast.graph_t {name="", inputs=[], outputs=[], values=[], initializers=[], nodes=[|some_node|]} + val some_opset = Ast.opset_t {version=1L, domain=""} + + ([|some_graph|], [|some_node|], [|some_tensor|], + some_attrs, [|some_vi|], [|some_dim|], [|"abc"|], [|0.f|], [|0L|], [|some_opset|], [|("key", "value")|]) +} + +val refarrs = get_refarrs() + +fun parse(data: uint8 []) +{ + fun parse_(data: uint8 [], refarrs: refarrs_t): Ast.model_t + @ccode { + return onnx_parse_model(data, &refarrs->t0, (onnx_model_t*)fx_result); + } + parse_(data, refarrs) +} + +fun parse(fname: string) +{ + val data = File.read_binary_u8(fname) + parse(data) +} diff --git a/lib/Onnx/ficus-onnx.pb-c.c b/lib/Onnx/ficus-onnx.pb-c.c new file mode 100644 index 0000000..90af74b --- /dev/null +++ b/lib/Onnx/ficus-onnx.pb-c.c @@ -0,0 +1,2765 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ficus-onnx.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "ficus-onnx.pb-c.h" +void ficus_onnx__attribute_proto__init + (FicusOnnx__AttributeProto *message) +{ + static const FicusOnnx__AttributeProto init_value = FICUS_ONNX__ATTRIBUTE_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__attribute_proto__get_packed_size + (const FicusOnnx__AttributeProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__attribute_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__attribute_proto__pack + (const FicusOnnx__AttributeProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__attribute_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__attribute_proto__pack_to_buffer + (const FicusOnnx__AttributeProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__attribute_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__AttributeProto * + ficus_onnx__attribute_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__AttributeProto *) + protobuf_c_message_unpack (&ficus_onnx__attribute_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__attribute_proto__free_unpacked + (FicusOnnx__AttributeProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__attribute_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__value_info_proto__init + (FicusOnnx__ValueInfoProto *message) +{ + static const FicusOnnx__ValueInfoProto init_value = FICUS_ONNX__VALUE_INFO_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__value_info_proto__get_packed_size + (const FicusOnnx__ValueInfoProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__value_info_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__value_info_proto__pack + (const FicusOnnx__ValueInfoProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__value_info_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__value_info_proto__pack_to_buffer + (const FicusOnnx__ValueInfoProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__value_info_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__ValueInfoProto * + ficus_onnx__value_info_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__ValueInfoProto *) + protobuf_c_message_unpack (&ficus_onnx__value_info_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__value_info_proto__free_unpacked + (FicusOnnx__ValueInfoProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__value_info_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__node_proto__init + (FicusOnnx__NodeProto *message) +{ + static const FicusOnnx__NodeProto init_value = FICUS_ONNX__NODE_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__node_proto__get_packed_size + (const FicusOnnx__NodeProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__node_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__node_proto__pack + (const FicusOnnx__NodeProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__node_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__node_proto__pack_to_buffer + (const FicusOnnx__NodeProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__node_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__NodeProto * + ficus_onnx__node_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__NodeProto *) + protobuf_c_message_unpack (&ficus_onnx__node_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__node_proto__free_unpacked + (FicusOnnx__NodeProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__node_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__training_info_proto__init + (FicusOnnx__TrainingInfoProto *message) +{ + static const FicusOnnx__TrainingInfoProto init_value = FICUS_ONNX__TRAINING_INFO_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__training_info_proto__get_packed_size + (const FicusOnnx__TrainingInfoProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__training_info_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__training_info_proto__pack + (const FicusOnnx__TrainingInfoProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__training_info_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__training_info_proto__pack_to_buffer + (const FicusOnnx__TrainingInfoProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__training_info_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__TrainingInfoProto * + ficus_onnx__training_info_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__TrainingInfoProto *) + protobuf_c_message_unpack (&ficus_onnx__training_info_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__training_info_proto__free_unpacked + (FicusOnnx__TrainingInfoProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__training_info_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__model_proto__init + (FicusOnnx__ModelProto *message) +{ + static const FicusOnnx__ModelProto init_value = FICUS_ONNX__MODEL_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__model_proto__get_packed_size + (const FicusOnnx__ModelProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__model_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__model_proto__pack + (const FicusOnnx__ModelProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__model_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__model_proto__pack_to_buffer + (const FicusOnnx__ModelProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__model_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__ModelProto * + ficus_onnx__model_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__ModelProto *) + protobuf_c_message_unpack (&ficus_onnx__model_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__model_proto__free_unpacked + (FicusOnnx__ModelProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__model_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__string_string_entry_proto__init + (FicusOnnx__StringStringEntryProto *message) +{ + static const FicusOnnx__StringStringEntryProto init_value = FICUS_ONNX__STRING_STRING_ENTRY_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__string_string_entry_proto__get_packed_size + (const FicusOnnx__StringStringEntryProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__string_string_entry_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__string_string_entry_proto__pack + (const FicusOnnx__StringStringEntryProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__string_string_entry_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__string_string_entry_proto__pack_to_buffer + (const FicusOnnx__StringStringEntryProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__string_string_entry_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__StringStringEntryProto * + ficus_onnx__string_string_entry_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__StringStringEntryProto *) + protobuf_c_message_unpack (&ficus_onnx__string_string_entry_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__string_string_entry_proto__free_unpacked + (FicusOnnx__StringStringEntryProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__string_string_entry_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__tensor_annotation__init + (FicusOnnx__TensorAnnotation *message) +{ + static const FicusOnnx__TensorAnnotation init_value = FICUS_ONNX__TENSOR_ANNOTATION__INIT; + *message = init_value; +} +size_t ficus_onnx__tensor_annotation__get_packed_size + (const FicusOnnx__TensorAnnotation *message) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_annotation__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__tensor_annotation__pack + (const FicusOnnx__TensorAnnotation *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_annotation__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__tensor_annotation__pack_to_buffer + (const FicusOnnx__TensorAnnotation *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_annotation__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__TensorAnnotation * + ficus_onnx__tensor_annotation__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__TensorAnnotation *) + protobuf_c_message_unpack (&ficus_onnx__tensor_annotation__descriptor, + allocator, len, data); +} +void ficus_onnx__tensor_annotation__free_unpacked + (FicusOnnx__TensorAnnotation *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__tensor_annotation__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__graph_proto__init + (FicusOnnx__GraphProto *message) +{ + static const FicusOnnx__GraphProto init_value = FICUS_ONNX__GRAPH_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__graph_proto__get_packed_size + (const FicusOnnx__GraphProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__graph_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__graph_proto__pack + (const FicusOnnx__GraphProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__graph_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__graph_proto__pack_to_buffer + (const FicusOnnx__GraphProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__graph_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__GraphProto * + ficus_onnx__graph_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__GraphProto *) + protobuf_c_message_unpack (&ficus_onnx__graph_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__graph_proto__free_unpacked + (FicusOnnx__GraphProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__graph_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__tensor_proto__segment__init + (FicusOnnx__TensorProto__Segment *message) +{ + static const FicusOnnx__TensorProto__Segment init_value = FICUS_ONNX__TENSOR_PROTO__SEGMENT__INIT; + *message = init_value; +} +void ficus_onnx__tensor_proto__init + (FicusOnnx__TensorProto *message) +{ + static const FicusOnnx__TensorProto init_value = FICUS_ONNX__TENSOR_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__tensor_proto__get_packed_size + (const FicusOnnx__TensorProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__tensor_proto__pack + (const FicusOnnx__TensorProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__tensor_proto__pack_to_buffer + (const FicusOnnx__TensorProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__TensorProto * + ficus_onnx__tensor_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__TensorProto *) + protobuf_c_message_unpack (&ficus_onnx__tensor_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__tensor_proto__free_unpacked + (FicusOnnx__TensorProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__tensor_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__sparse_tensor_proto__init + (FicusOnnx__SparseTensorProto *message) +{ + static const FicusOnnx__SparseTensorProto init_value = FICUS_ONNX__SPARSE_TENSOR_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__sparse_tensor_proto__get_packed_size + (const FicusOnnx__SparseTensorProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__sparse_tensor_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__sparse_tensor_proto__pack + (const FicusOnnx__SparseTensorProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__sparse_tensor_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__sparse_tensor_proto__pack_to_buffer + (const FicusOnnx__SparseTensorProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__sparse_tensor_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__SparseTensorProto * + ficus_onnx__sparse_tensor_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__SparseTensorProto *) + protobuf_c_message_unpack (&ficus_onnx__sparse_tensor_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__sparse_tensor_proto__free_unpacked + (FicusOnnx__SparseTensorProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__sparse_tensor_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__tensor_shape_proto__dimension__init + (FicusOnnx__TensorShapeProto__Dimension *message) +{ + static const FicusOnnx__TensorShapeProto__Dimension init_value = FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__INIT; + *message = init_value; +} +void ficus_onnx__tensor_shape_proto__init + (FicusOnnx__TensorShapeProto *message) +{ + static const FicusOnnx__TensorShapeProto init_value = FICUS_ONNX__TENSOR_SHAPE_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__tensor_shape_proto__get_packed_size + (const FicusOnnx__TensorShapeProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_shape_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__tensor_shape_proto__pack + (const FicusOnnx__TensorShapeProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_shape_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__tensor_shape_proto__pack_to_buffer + (const FicusOnnx__TensorShapeProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__tensor_shape_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__TensorShapeProto * + ficus_onnx__tensor_shape_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__TensorShapeProto *) + protobuf_c_message_unpack (&ficus_onnx__tensor_shape_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__tensor_shape_proto__free_unpacked + (FicusOnnx__TensorShapeProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__tensor_shape_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__type_proto__tensor__init + (FicusOnnx__TypeProto__Tensor *message) +{ + static const FicusOnnx__TypeProto__Tensor init_value = FICUS_ONNX__TYPE_PROTO__TENSOR__INIT; + *message = init_value; +} +void ficus_onnx__type_proto__sequence__init + (FicusOnnx__TypeProto__Sequence *message) +{ + static const FicusOnnx__TypeProto__Sequence init_value = FICUS_ONNX__TYPE_PROTO__SEQUENCE__INIT; + *message = init_value; +} +void ficus_onnx__type_proto__map__init + (FicusOnnx__TypeProto__Map *message) +{ + static const FicusOnnx__TypeProto__Map init_value = FICUS_ONNX__TYPE_PROTO__MAP__INIT; + *message = init_value; +} +void ficus_onnx__type_proto__optional__init + (FicusOnnx__TypeProto__Optional *message) +{ + static const FicusOnnx__TypeProto__Optional init_value = FICUS_ONNX__TYPE_PROTO__OPTIONAL__INIT; + *message = init_value; +} +void ficus_onnx__type_proto__sparse_tensor__init + (FicusOnnx__TypeProto__SparseTensor *message) +{ + static const FicusOnnx__TypeProto__SparseTensor init_value = FICUS_ONNX__TYPE_PROTO__SPARSE_TENSOR__INIT; + *message = init_value; +} +void ficus_onnx__type_proto__init + (FicusOnnx__TypeProto *message) +{ + static const FicusOnnx__TypeProto init_value = FICUS_ONNX__TYPE_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__type_proto__get_packed_size + (const FicusOnnx__TypeProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__type_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__type_proto__pack + (const FicusOnnx__TypeProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__type_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__type_proto__pack_to_buffer + (const FicusOnnx__TypeProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__type_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__TypeProto * + ficus_onnx__type_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__TypeProto *) + protobuf_c_message_unpack (&ficus_onnx__type_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__type_proto__free_unpacked + (FicusOnnx__TypeProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__type_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__operator_set_id_proto__init + (FicusOnnx__OperatorSetIdProto *message) +{ + static const FicusOnnx__OperatorSetIdProto init_value = FICUS_ONNX__OPERATOR_SET_ID_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__operator_set_id_proto__get_packed_size + (const FicusOnnx__OperatorSetIdProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__operator_set_id_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__operator_set_id_proto__pack + (const FicusOnnx__OperatorSetIdProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__operator_set_id_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__operator_set_id_proto__pack_to_buffer + (const FicusOnnx__OperatorSetIdProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__operator_set_id_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__OperatorSetIdProto * + ficus_onnx__operator_set_id_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__OperatorSetIdProto *) + protobuf_c_message_unpack (&ficus_onnx__operator_set_id_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__operator_set_id_proto__free_unpacked + (FicusOnnx__OperatorSetIdProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__operator_set_id_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void ficus_onnx__function_proto__init + (FicusOnnx__FunctionProto *message) +{ + static const FicusOnnx__FunctionProto init_value = FICUS_ONNX__FUNCTION_PROTO__INIT; + *message = init_value; +} +size_t ficus_onnx__function_proto__get_packed_size + (const FicusOnnx__FunctionProto *message) +{ + assert(message->base.descriptor == &ficus_onnx__function_proto__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t ficus_onnx__function_proto__pack + (const FicusOnnx__FunctionProto *message, + uint8_t *out) +{ + assert(message->base.descriptor == &ficus_onnx__function_proto__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t ficus_onnx__function_proto__pack_to_buffer + (const FicusOnnx__FunctionProto *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &ficus_onnx__function_proto__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +FicusOnnx__FunctionProto * + ficus_onnx__function_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (FicusOnnx__FunctionProto *) + protobuf_c_message_unpack (&ficus_onnx__function_proto__descriptor, + allocator, len, data); +} +void ficus_onnx__function_proto__free_unpacked + (FicusOnnx__FunctionProto *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &ficus_onnx__function_proto__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCEnumValue ficus_onnx__attribute_proto__attribute_type__enum_values_by_number[15] = +{ + { "UNDEFINED", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__UNDEFINED", 0 }, + { "FLOAT", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__FLOAT", 1 }, + { "INT", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__INT", 2 }, + { "STRING", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__STRING", 3 }, + { "TENSOR", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TENSOR", 4 }, + { "GRAPH", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__GRAPH", 5 }, + { "FLOATS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__FLOATS", 6 }, + { "INTS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__INTS", 7 }, + { "STRINGS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__STRINGS", 8 }, + { "TENSORS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TENSORS", 9 }, + { "GRAPHS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__GRAPHS", 10 }, + { "SPARSE_TENSOR", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__SPARSE_TENSOR", 11 }, + { "SPARSE_TENSORS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__SPARSE_TENSORS", 12 }, + { "TYPE_PROTO", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TYPE_PROTO", 13 }, + { "TYPE_PROTOS", "FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TYPE_PROTOS", 14 }, +}; +static const ProtobufCIntRange ficus_onnx__attribute_proto__attribute_type__value_ranges[] = { +{0, 0},{0, 15} +}; +static const ProtobufCEnumValueIndex ficus_onnx__attribute_proto__attribute_type__enum_values_by_name[15] = +{ + { "FLOAT", 1 }, + { "FLOATS", 6 }, + { "GRAPH", 5 }, + { "GRAPHS", 10 }, + { "INT", 2 }, + { "INTS", 7 }, + { "SPARSE_TENSOR", 11 }, + { "SPARSE_TENSORS", 12 }, + { "STRING", 3 }, + { "STRINGS", 8 }, + { "TENSOR", 4 }, + { "TENSORS", 9 }, + { "TYPE_PROTO", 13 }, + { "TYPE_PROTOS", 14 }, + { "UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor ficus_onnx__attribute_proto__attribute_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "ficus_onnx.AttributeProto.AttributeType", + "AttributeType", + "FicusOnnx__AttributeProto__AttributeType", + "ficus_onnx", + 15, + ficus_onnx__attribute_proto__attribute_type__enum_values_by_number, + 15, + ficus_onnx__attribute_proto__attribute_type__enum_values_by_name, + 1, + ficus_onnx__attribute_proto__attribute_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__attribute_proto__field_descriptors[18] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "f", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_FLOAT, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, f), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "i", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, i), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "s", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, s), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "t", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, t), + &ficus_onnx__tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "g", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, g), + &ficus_onnx__graph_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "floats", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_FLOAT, + offsetof(FicusOnnx__AttributeProto, n_floats), + offsetof(FicusOnnx__AttributeProto, floats), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ints", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_INT64, + offsetof(FicusOnnx__AttributeProto, n_ints), + offsetof(FicusOnnx__AttributeProto, ints), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "strings", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_BYTES, + offsetof(FicusOnnx__AttributeProto, n_strings), + offsetof(FicusOnnx__AttributeProto, strings), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tensors", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__AttributeProto, n_tensors), + offsetof(FicusOnnx__AttributeProto, tensors), + &ficus_onnx__tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "graphs", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__AttributeProto, n_graphs), + offsetof(FicusOnnx__AttributeProto, graphs), + &ficus_onnx__graph_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tp", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, tp), + &ficus_onnx__type_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_protos", + 15, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__AttributeProto, n_type_protos), + offsetof(FicusOnnx__AttributeProto, type_protos), + &ficus_onnx__type_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, type), + &ficus_onnx__attribute_proto__attribute_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ref_attr_name", + 21, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, ref_attr_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sparse_tensor", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__AttributeProto, sparse_tensor), + &ficus_onnx__sparse_tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sparse_tensors", + 23, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__AttributeProto, n_sparse_tensors), + offsetof(FicusOnnx__AttributeProto, sparse_tensors), + &ficus_onnx__sparse_tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__attribute_proto__field_indices_by_name[] = { + 11, /* field[11] = doc_string */ + 1, /* field[1] = f */ + 6, /* field[6] = floats */ + 5, /* field[5] = g */ + 10, /* field[10] = graphs */ + 2, /* field[2] = i */ + 7, /* field[7] = ints */ + 0, /* field[0] = name */ + 15, /* field[15] = ref_attr_name */ + 3, /* field[3] = s */ + 16, /* field[16] = sparse_tensor */ + 17, /* field[17] = sparse_tensors */ + 8, /* field[8] = strings */ + 4, /* field[4] = t */ + 9, /* field[9] = tensors */ + 12, /* field[12] = tp */ + 14, /* field[14] = type */ + 13, /* field[13] = type_protos */ +}; +static const ProtobufCIntRange ficus_onnx__attribute_proto__number_ranges[3 + 1] = +{ + { 1, 0 }, + { 13, 11 }, + { 20, 14 }, + { 0, 18 } +}; +const ProtobufCMessageDescriptor ficus_onnx__attribute_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.AttributeProto", + "AttributeProto", + "FicusOnnx__AttributeProto", + "ficus_onnx", + sizeof(FicusOnnx__AttributeProto), + 18, + ficus_onnx__attribute_proto__field_descriptors, + ficus_onnx__attribute_proto__field_indices_by_name, + 3, ficus_onnx__attribute_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__attribute_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__value_info_proto__field_descriptors[3] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ValueInfoProto, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ValueInfoProto, type), + &ficus_onnx__type_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ValueInfoProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__value_info_proto__field_indices_by_name[] = { + 2, /* field[2] = doc_string */ + 0, /* field[0] = name */ + 1, /* field[1] = type */ +}; +static const ProtobufCIntRange ficus_onnx__value_info_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor ficus_onnx__value_info_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.ValueInfoProto", + "ValueInfoProto", + "FicusOnnx__ValueInfoProto", + "ficus_onnx", + sizeof(FicusOnnx__ValueInfoProto), + 3, + ficus_onnx__value_info_proto__field_descriptors, + ficus_onnx__value_info_proto__field_indices_by_name, + 1, ficus_onnx__value_info_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__value_info_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__node_proto__field_descriptors[7] = +{ + { + "input", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(FicusOnnx__NodeProto, n_input), + offsetof(FicusOnnx__NodeProto, input), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "output", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(FicusOnnx__NodeProto, n_output), + offsetof(FicusOnnx__NodeProto, output), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__NodeProto, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "op_type", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__NodeProto, op_type), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "attribute", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__NodeProto, n_attribute), + offsetof(FicusOnnx__NodeProto, attribute), + &ficus_onnx__attribute_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__NodeProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "domain", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__NodeProto, domain), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__node_proto__field_indices_by_name[] = { + 4, /* field[4] = attribute */ + 5, /* field[5] = doc_string */ + 6, /* field[6] = domain */ + 0, /* field[0] = input */ + 2, /* field[2] = name */ + 3, /* field[3] = op_type */ + 1, /* field[1] = output */ +}; +static const ProtobufCIntRange ficus_onnx__node_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor ficus_onnx__node_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.NodeProto", + "NodeProto", + "FicusOnnx__NodeProto", + "ficus_onnx", + sizeof(FicusOnnx__NodeProto), + 7, + ficus_onnx__node_proto__field_descriptors, + ficus_onnx__node_proto__field_indices_by_name, + 1, ficus_onnx__node_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__node_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__training_info_proto__field_descriptors[4] = +{ + { + "initialization", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TrainingInfoProto, initialization), + &ficus_onnx__graph_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "algorithm", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TrainingInfoProto, algorithm), + &ficus_onnx__graph_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "initialization_binding", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TrainingInfoProto, n_initialization_binding), + offsetof(FicusOnnx__TrainingInfoProto, initialization_binding), + &ficus_onnx__string_string_entry_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "update_binding", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TrainingInfoProto, n_update_binding), + offsetof(FicusOnnx__TrainingInfoProto, update_binding), + &ficus_onnx__string_string_entry_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__training_info_proto__field_indices_by_name[] = { + 1, /* field[1] = algorithm */ + 0, /* field[0] = initialization */ + 2, /* field[2] = initialization_binding */ + 3, /* field[3] = update_binding */ +}; +static const ProtobufCIntRange ficus_onnx__training_info_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor ficus_onnx__training_info_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TrainingInfoProto", + "TrainingInfoProto", + "FicusOnnx__TrainingInfoProto", + "ficus_onnx", + sizeof(FicusOnnx__TrainingInfoProto), + 4, + ficus_onnx__training_info_proto__field_descriptors, + ficus_onnx__training_info_proto__field_indices_by_name, + 1, ficus_onnx__training_info_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__training_info_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__model_proto__field_descriptors[11] = +{ + { + "ir_version", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, ir_version), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "producer_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, producer_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "producer_version", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, producer_version), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "domain", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, domain), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "model_version", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, model_version), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "graph", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__ModelProto, graph), + &ficus_onnx__graph_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opset_import", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__ModelProto, n_opset_import), + offsetof(FicusOnnx__ModelProto, opset_import), + &ficus_onnx__operator_set_id_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "metadata_props", + 14, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__ModelProto, n_metadata_props), + offsetof(FicusOnnx__ModelProto, metadata_props), + &ficus_onnx__string_string_entry_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "training_info", + 20, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__ModelProto, n_training_info), + offsetof(FicusOnnx__ModelProto, training_info), + &ficus_onnx__training_info_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "functions", + 25, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__ModelProto, n_functions), + offsetof(FicusOnnx__ModelProto, functions), + &ficus_onnx__function_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__model_proto__field_indices_by_name[] = { + 5, /* field[5] = doc_string */ + 3, /* field[3] = domain */ + 10, /* field[10] = functions */ + 6, /* field[6] = graph */ + 0, /* field[0] = ir_version */ + 8, /* field[8] = metadata_props */ + 4, /* field[4] = model_version */ + 7, /* field[7] = opset_import */ + 1, /* field[1] = producer_name */ + 2, /* field[2] = producer_version */ + 9, /* field[9] = training_info */ +}; +static const ProtobufCIntRange ficus_onnx__model_proto__number_ranges[4 + 1] = +{ + { 1, 0 }, + { 14, 8 }, + { 20, 9 }, + { 25, 10 }, + { 0, 11 } +}; +const ProtobufCMessageDescriptor ficus_onnx__model_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.ModelProto", + "ModelProto", + "FicusOnnx__ModelProto", + "ficus_onnx", + sizeof(FicusOnnx__ModelProto), + 11, + ficus_onnx__model_proto__field_descriptors, + ficus_onnx__model_proto__field_indices_by_name, + 4, ficus_onnx__model_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__model_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__string_string_entry_proto__field_descriptors[2] = +{ + { + "key", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__StringStringEntryProto, key), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "value", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__StringStringEntryProto, value), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__string_string_entry_proto__field_indices_by_name[] = { + 0, /* field[0] = key */ + 1, /* field[1] = value */ +}; +static const ProtobufCIntRange ficus_onnx__string_string_entry_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__string_string_entry_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.StringStringEntryProto", + "StringStringEntryProto", + "FicusOnnx__StringStringEntryProto", + "ficus_onnx", + sizeof(FicusOnnx__StringStringEntryProto), + 2, + ficus_onnx__string_string_entry_proto__field_descriptors, + ficus_onnx__string_string_entry_proto__field_indices_by_name, + 1, ficus_onnx__string_string_entry_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__string_string_entry_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__tensor_annotation__field_descriptors[2] = +{ + { + "tensor_name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorAnnotation, tensor_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "quant_parameter_tensor_names", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TensorAnnotation, n_quant_parameter_tensor_names), + offsetof(FicusOnnx__TensorAnnotation, quant_parameter_tensor_names), + &ficus_onnx__string_string_entry_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__tensor_annotation__field_indices_by_name[] = { + 1, /* field[1] = quant_parameter_tensor_names */ + 0, /* field[0] = tensor_name */ +}; +static const ProtobufCIntRange ficus_onnx__tensor_annotation__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__tensor_annotation__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorAnnotation", + "TensorAnnotation", + "FicusOnnx__TensorAnnotation", + "ficus_onnx", + sizeof(FicusOnnx__TensorAnnotation), + 2, + ficus_onnx__tensor_annotation__field_descriptors, + ficus_onnx__tensor_annotation__field_indices_by_name, + 1, ficus_onnx__tensor_annotation__number_ranges, + (ProtobufCMessageInit) ficus_onnx__tensor_annotation__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__graph_proto__field_descriptors[9] = +{ + { + "node", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_node), + offsetof(FicusOnnx__GraphProto, node), + &ficus_onnx__node_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__GraphProto, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "initializer", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_initializer), + offsetof(FicusOnnx__GraphProto, initializer), + &ficus_onnx__tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__GraphProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "input", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_input), + offsetof(FicusOnnx__GraphProto, input), + &ficus_onnx__value_info_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "output", + 12, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_output), + offsetof(FicusOnnx__GraphProto, output), + &ficus_onnx__value_info_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "value_info", + 13, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_value_info), + offsetof(FicusOnnx__GraphProto, value_info), + &ficus_onnx__value_info_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "quantization_annotation", + 14, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_quantization_annotation), + offsetof(FicusOnnx__GraphProto, quantization_annotation), + &ficus_onnx__tensor_annotation__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sparse_initializer", + 15, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__GraphProto, n_sparse_initializer), + offsetof(FicusOnnx__GraphProto, sparse_initializer), + &ficus_onnx__sparse_tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__graph_proto__field_indices_by_name[] = { + 3, /* field[3] = doc_string */ + 2, /* field[2] = initializer */ + 4, /* field[4] = input */ + 1, /* field[1] = name */ + 0, /* field[0] = node */ + 5, /* field[5] = output */ + 7, /* field[7] = quantization_annotation */ + 8, /* field[8] = sparse_initializer */ + 6, /* field[6] = value_info */ +}; +static const ProtobufCIntRange ficus_onnx__graph_proto__number_ranges[3 + 1] = +{ + { 1, 0 }, + { 5, 2 }, + { 10, 3 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor ficus_onnx__graph_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.GraphProto", + "GraphProto", + "FicusOnnx__GraphProto", + "ficus_onnx", + sizeof(FicusOnnx__GraphProto), + 9, + ficus_onnx__graph_proto__field_descriptors, + ficus_onnx__graph_proto__field_indices_by_name, + 3, ficus_onnx__graph_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__graph_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__tensor_proto__segment__field_descriptors[2] = +{ + { + "begin", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto__Segment, begin), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "end", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto__Segment, end), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__tensor_proto__segment__field_indices_by_name[] = { + 0, /* field[0] = begin */ + 1, /* field[1] = end */ +}; +static const ProtobufCIntRange ficus_onnx__tensor_proto__segment__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__tensor_proto__segment__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorProto.Segment", + "Segment", + "FicusOnnx__TensorProto__Segment", + "ficus_onnx", + sizeof(FicusOnnx__TensorProto__Segment), + 2, + ficus_onnx__tensor_proto__segment__field_descriptors, + ficus_onnx__tensor_proto__segment__field_indices_by_name, + 1, ficus_onnx__tensor_proto__segment__number_ranges, + (ProtobufCMessageInit) ficus_onnx__tensor_proto__segment__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCEnumValue ficus_onnx__tensor_proto__data_type__enum_values_by_number[17] = +{ + { "UNDEFINED", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UNDEFINED", 0 }, + { "FLOAT", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__FLOAT", 1 }, + { "UINT8", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT8", 2 }, + { "INT8", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT8", 3 }, + { "UINT16", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT16", 4 }, + { "INT16", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT16", 5 }, + { "INT32", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT32", 6 }, + { "INT64", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT64", 7 }, + { "STRING", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__STRING", 8 }, + { "BOOL", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__BOOL", 9 }, + { "FLOAT16", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__FLOAT16", 10 }, + { "DOUBLE", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__DOUBLE", 11 }, + { "UINT32", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT32", 12 }, + { "UINT64", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT64", 13 }, + { "COMPLEX64", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__COMPLEX64", 14 }, + { "COMPLEX128", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__COMPLEX128", 15 }, + { "BFLOAT16", "FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__BFLOAT16", 16 }, +}; +static const ProtobufCIntRange ficus_onnx__tensor_proto__data_type__value_ranges[] = { +{0, 0},{0, 17} +}; +static const ProtobufCEnumValueIndex ficus_onnx__tensor_proto__data_type__enum_values_by_name[17] = +{ + { "BFLOAT16", 16 }, + { "BOOL", 9 }, + { "COMPLEX128", 15 }, + { "COMPLEX64", 14 }, + { "DOUBLE", 11 }, + { "FLOAT", 1 }, + { "FLOAT16", 10 }, + { "INT16", 5 }, + { "INT32", 6 }, + { "INT64", 7 }, + { "INT8", 3 }, + { "STRING", 8 }, + { "UINT16", 4 }, + { "UINT32", 12 }, + { "UINT64", 13 }, + { "UINT8", 2 }, + { "UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor ficus_onnx__tensor_proto__data_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorProto.DataType", + "DataType", + "FicusOnnx__TensorProto__DataType", + "ficus_onnx", + 17, + ficus_onnx__tensor_proto__data_type__enum_values_by_number, + 17, + ficus_onnx__tensor_proto__data_type__enum_values_by_name, + 1, + ficus_onnx__tensor_proto__data_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue ficus_onnx__tensor_proto__data_location__enum_values_by_number[2] = +{ + { "DEFAULT", "FICUS_ONNX__TENSOR_PROTO__DATA_LOCATION__DEFAULT", 0 }, + { "EXTERNAL", "FICUS_ONNX__TENSOR_PROTO__DATA_LOCATION__EXTERNAL", 1 }, +}; +static const ProtobufCIntRange ficus_onnx__tensor_proto__data_location__value_ranges[] = { +{0, 0},{0, 2} +}; +static const ProtobufCEnumValueIndex ficus_onnx__tensor_proto__data_location__enum_values_by_name[2] = +{ + { "DEFAULT", 0 }, + { "EXTERNAL", 1 }, +}; +const ProtobufCEnumDescriptor ficus_onnx__tensor_proto__data_location__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorProto.DataLocation", + "DataLocation", + "FicusOnnx__TensorProto__DataLocation", + "ficus_onnx", + 2, + ficus_onnx__tensor_proto__data_location__enum_values_by_number, + 2, + ficus_onnx__tensor_proto__data_location__enum_values_by_name, + 1, + ficus_onnx__tensor_proto__data_location__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__tensor_proto__field_descriptors[14] = +{ + { + "dims", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_INT64, + offsetof(FicusOnnx__TensorProto, n_dims), + offsetof(FicusOnnx__TensorProto, dims), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "data_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto, data_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "segment", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto, segment), + &ficus_onnx__tensor_proto__segment__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "float_data", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_FLOAT, + offsetof(FicusOnnx__TensorProto, n_float_data), + offsetof(FicusOnnx__TensorProto, float_data), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "int32_data", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_INT32, + offsetof(FicusOnnx__TensorProto, n_int32_data), + offsetof(FicusOnnx__TensorProto, int32_data), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "string_data", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_BYTES, + offsetof(FicusOnnx__TensorProto, n_string_data), + offsetof(FicusOnnx__TensorProto, string_data), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "int64_data", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_INT64, + offsetof(FicusOnnx__TensorProto, n_int64_data), + offsetof(FicusOnnx__TensorProto, int64_data), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "raw_data", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto, raw_data), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "double_data", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(FicusOnnx__TensorProto, n_double_data), + offsetof(FicusOnnx__TensorProto, double_data), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "uint64_data", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(FicusOnnx__TensorProto, n_uint64_data), + offsetof(FicusOnnx__TensorProto, uint64_data), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "external_data", + 13, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TensorProto, n_external_data), + offsetof(FicusOnnx__TensorProto, external_data), + &ficus_onnx__string_string_entry_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "data_location", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorProto, data_location), + &ficus_onnx__tensor_proto__data_location__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__tensor_proto__field_indices_by_name[] = { + 13, /* field[13] = data_location */ + 1, /* field[1] = data_type */ + 0, /* field[0] = dims */ + 11, /* field[11] = doc_string */ + 9, /* field[9] = double_data */ + 12, /* field[12] = external_data */ + 3, /* field[3] = float_data */ + 4, /* field[4] = int32_data */ + 6, /* field[6] = int64_data */ + 7, /* field[7] = name */ + 8, /* field[8] = raw_data */ + 2, /* field[2] = segment */ + 5, /* field[5] = string_data */ + 10, /* field[10] = uint64_data */ +}; +static const ProtobufCIntRange ficus_onnx__tensor_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 14 } +}; +const ProtobufCMessageDescriptor ficus_onnx__tensor_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorProto", + "TensorProto", + "FicusOnnx__TensorProto", + "ficus_onnx", + sizeof(FicusOnnx__TensorProto), + 14, + ficus_onnx__tensor_proto__field_descriptors, + ficus_onnx__tensor_proto__field_indices_by_name, + 1, ficus_onnx__tensor_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__tensor_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__sparse_tensor_proto__field_descriptors[3] = +{ + { + "values", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__SparseTensorProto, values), + &ficus_onnx__tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indices", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__SparseTensorProto, indices), + &ficus_onnx__tensor_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dims", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_INT64, + offsetof(FicusOnnx__SparseTensorProto, n_dims), + offsetof(FicusOnnx__SparseTensorProto, dims), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__sparse_tensor_proto__field_indices_by_name[] = { + 2, /* field[2] = dims */ + 1, /* field[1] = indices */ + 0, /* field[0] = values */ +}; +static const ProtobufCIntRange ficus_onnx__sparse_tensor_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor ficus_onnx__sparse_tensor_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.SparseTensorProto", + "SparseTensorProto", + "FicusOnnx__SparseTensorProto", + "ficus_onnx", + sizeof(FicusOnnx__SparseTensorProto), + 3, + ficus_onnx__sparse_tensor_proto__field_descriptors, + ficus_onnx__sparse_tensor_proto__field_indices_by_name, + 1, ficus_onnx__sparse_tensor_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__sparse_tensor_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__tensor_shape_proto__dimension__field_descriptors[3] = +{ + { + "dim_value", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + offsetof(FicusOnnx__TensorShapeProto__Dimension, value_case), + offsetof(FicusOnnx__TensorShapeProto__Dimension, dim_value), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dim_param", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + offsetof(FicusOnnx__TensorShapeProto__Dimension, value_case), + offsetof(FicusOnnx__TensorShapeProto__Dimension, dim_param), + NULL, + &protobuf_c_empty_string, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "denotation", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TensorShapeProto__Dimension, denotation), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__tensor_shape_proto__dimension__field_indices_by_name[] = { + 2, /* field[2] = denotation */ + 1, /* field[1] = dim_param */ + 0, /* field[0] = dim_value */ +}; +static const ProtobufCIntRange ficus_onnx__tensor_shape_proto__dimension__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor ficus_onnx__tensor_shape_proto__dimension__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorShapeProto.Dimension", + "Dimension", + "FicusOnnx__TensorShapeProto__Dimension", + "ficus_onnx", + sizeof(FicusOnnx__TensorShapeProto__Dimension), + 3, + ficus_onnx__tensor_shape_proto__dimension__field_descriptors, + ficus_onnx__tensor_shape_proto__dimension__field_indices_by_name, + 1, ficus_onnx__tensor_shape_proto__dimension__number_ranges, + (ProtobufCMessageInit) ficus_onnx__tensor_shape_proto__dimension__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__tensor_shape_proto__field_descriptors[1] = +{ + { + "dim", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TensorShapeProto, n_dim), + offsetof(FicusOnnx__TensorShapeProto, dim), + &ficus_onnx__tensor_shape_proto__dimension__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__tensor_shape_proto__field_indices_by_name[] = { + 0, /* field[0] = dim */ +}; +static const ProtobufCIntRange ficus_onnx__tensor_shape_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor ficus_onnx__tensor_shape_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TensorShapeProto", + "TensorShapeProto", + "FicusOnnx__TensorShapeProto", + "ficus_onnx", + sizeof(FicusOnnx__TensorShapeProto), + 1, + ficus_onnx__tensor_shape_proto__field_descriptors, + ficus_onnx__tensor_shape_proto__field_indices_by_name, + 1, ficus_onnx__tensor_shape_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__tensor_shape_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__type_proto__tensor__field_descriptors[2] = +{ + { + "elem_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__Tensor, elem_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "shape", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__Tensor, shape), + &ficus_onnx__tensor_shape_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__type_proto__tensor__field_indices_by_name[] = { + 0, /* field[0] = elem_type */ + 1, /* field[1] = shape */ +}; +static const ProtobufCIntRange ficus_onnx__type_proto__tensor__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__type_proto__tensor__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TypeProto.Tensor", + "Tensor", + "FicusOnnx__TypeProto__Tensor", + "ficus_onnx", + sizeof(FicusOnnx__TypeProto__Tensor), + 2, + ficus_onnx__type_proto__tensor__field_descriptors, + ficus_onnx__type_proto__tensor__field_indices_by_name, + 1, ficus_onnx__type_proto__tensor__number_ranges, + (ProtobufCMessageInit) ficus_onnx__type_proto__tensor__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__type_proto__sequence__field_descriptors[1] = +{ + { + "elem_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__Sequence, elem_type), + &ficus_onnx__type_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__type_proto__sequence__field_indices_by_name[] = { + 0, /* field[0] = elem_type */ +}; +static const ProtobufCIntRange ficus_onnx__type_proto__sequence__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor ficus_onnx__type_proto__sequence__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TypeProto.Sequence", + "Sequence", + "FicusOnnx__TypeProto__Sequence", + "ficus_onnx", + sizeof(FicusOnnx__TypeProto__Sequence), + 1, + ficus_onnx__type_proto__sequence__field_descriptors, + ficus_onnx__type_proto__sequence__field_indices_by_name, + 1, ficus_onnx__type_proto__sequence__number_ranges, + (ProtobufCMessageInit) ficus_onnx__type_proto__sequence__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__type_proto__map__field_descriptors[2] = +{ + { + "key_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__Map, key_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "value_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__Map, value_type), + &ficus_onnx__type_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__type_proto__map__field_indices_by_name[] = { + 0, /* field[0] = key_type */ + 1, /* field[1] = value_type */ +}; +static const ProtobufCIntRange ficus_onnx__type_proto__map__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__type_proto__map__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TypeProto.Map", + "Map", + "FicusOnnx__TypeProto__Map", + "ficus_onnx", + sizeof(FicusOnnx__TypeProto__Map), + 2, + ficus_onnx__type_proto__map__field_descriptors, + ficus_onnx__type_proto__map__field_indices_by_name, + 1, ficus_onnx__type_proto__map__number_ranges, + (ProtobufCMessageInit) ficus_onnx__type_proto__map__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__type_proto__optional__field_descriptors[1] = +{ + { + "elem_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__Optional, elem_type), + &ficus_onnx__type_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__type_proto__optional__field_indices_by_name[] = { + 0, /* field[0] = elem_type */ +}; +static const ProtobufCIntRange ficus_onnx__type_proto__optional__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor ficus_onnx__type_proto__optional__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TypeProto.Optional", + "Optional", + "FicusOnnx__TypeProto__Optional", + "ficus_onnx", + sizeof(FicusOnnx__TypeProto__Optional), + 1, + ficus_onnx__type_proto__optional__field_descriptors, + ficus_onnx__type_proto__optional__field_indices_by_name, + 1, ficus_onnx__type_proto__optional__number_ranges, + (ProtobufCMessageInit) ficus_onnx__type_proto__optional__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__type_proto__sparse_tensor__field_descriptors[2] = +{ + { + "elem_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__SparseTensor, elem_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "shape", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto__SparseTensor, shape), + &ficus_onnx__tensor_shape_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__type_proto__sparse_tensor__field_indices_by_name[] = { + 0, /* field[0] = elem_type */ + 1, /* field[1] = shape */ +}; +static const ProtobufCIntRange ficus_onnx__type_proto__sparse_tensor__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__type_proto__sparse_tensor__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TypeProto.SparseTensor", + "SparseTensor", + "FicusOnnx__TypeProto__SparseTensor", + "ficus_onnx", + sizeof(FicusOnnx__TypeProto__SparseTensor), + 2, + ficus_onnx__type_proto__sparse_tensor__field_descriptors, + ficus_onnx__type_proto__sparse_tensor__field_indices_by_name, + 1, ficus_onnx__type_proto__sparse_tensor__number_ranges, + (ProtobufCMessageInit) ficus_onnx__type_proto__sparse_tensor__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__type_proto__field_descriptors[6] = +{ + { + "tensor_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TypeProto, value_case), + offsetof(FicusOnnx__TypeProto, tensor_type), + &ficus_onnx__type_proto__tensor__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sequence_type", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TypeProto, value_case), + offsetof(FicusOnnx__TypeProto, sequence_type), + &ficus_onnx__type_proto__sequence__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "map_type", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TypeProto, value_case), + offsetof(FicusOnnx__TypeProto, map_type), + &ficus_onnx__type_proto__map__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "denotation", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__TypeProto, denotation), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sparse_tensor_type", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TypeProto, value_case), + offsetof(FicusOnnx__TypeProto, sparse_tensor_type), + &ficus_onnx__type_proto__sparse_tensor__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "optional_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__TypeProto, value_case), + offsetof(FicusOnnx__TypeProto, optional_type), + &ficus_onnx__type_proto__optional__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__type_proto__field_indices_by_name[] = { + 3, /* field[3] = denotation */ + 2, /* field[2] = map_type */ + 5, /* field[5] = optional_type */ + 1, /* field[1] = sequence_type */ + 4, /* field[4] = sparse_tensor_type */ + 0, /* field[0] = tensor_type */ +}; +static const ProtobufCIntRange ficus_onnx__type_proto__number_ranges[3 + 1] = +{ + { 1, 0 }, + { 4, 1 }, + { 8, 4 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor ficus_onnx__type_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.TypeProto", + "TypeProto", + "FicusOnnx__TypeProto", + "ficus_onnx", + sizeof(FicusOnnx__TypeProto), + 6, + ficus_onnx__type_proto__field_descriptors, + ficus_onnx__type_proto__field_indices_by_name, + 3, ficus_onnx__type_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__type_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__operator_set_id_proto__field_descriptors[2] = +{ + { + "domain", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__OperatorSetIdProto, domain), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "version", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__OperatorSetIdProto, version), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__operator_set_id_proto__field_indices_by_name[] = { + 0, /* field[0] = domain */ + 1, /* field[1] = version */ +}; +static const ProtobufCIntRange ficus_onnx__operator_set_id_proto__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ficus_onnx__operator_set_id_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.OperatorSetIdProto", + "OperatorSetIdProto", + "FicusOnnx__OperatorSetIdProto", + "ficus_onnx", + sizeof(FicusOnnx__OperatorSetIdProto), + 2, + ficus_onnx__operator_set_id_proto__field_descriptors, + ficus_onnx__operator_set_id_proto__field_indices_by_name, + 1, ficus_onnx__operator_set_id_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__operator_set_id_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ficus_onnx__function_proto__field_descriptors[8] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__FunctionProto, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "input", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(FicusOnnx__FunctionProto, n_input), + offsetof(FicusOnnx__FunctionProto, input), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "output", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(FicusOnnx__FunctionProto, n_output), + offsetof(FicusOnnx__FunctionProto, output), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "attribute", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(FicusOnnx__FunctionProto, n_attribute), + offsetof(FicusOnnx__FunctionProto, attribute), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "node", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__FunctionProto, n_node), + offsetof(FicusOnnx__FunctionProto, node), + &ficus_onnx__node_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "doc_string", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__FunctionProto, doc_string), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opset_import", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(FicusOnnx__FunctionProto, n_opset_import), + offsetof(FicusOnnx__FunctionProto, opset_import), + &ficus_onnx__operator_set_id_proto__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "domain", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(FicusOnnx__FunctionProto, domain), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned ficus_onnx__function_proto__field_indices_by_name[] = { + 3, /* field[3] = attribute */ + 5, /* field[5] = doc_string */ + 7, /* field[7] = domain */ + 1, /* field[1] = input */ + 0, /* field[0] = name */ + 4, /* field[4] = node */ + 6, /* field[6] = opset_import */ + 2, /* field[2] = output */ +}; +static const ProtobufCIntRange ficus_onnx__function_proto__number_ranges[2 + 1] = +{ + { 1, 0 }, + { 4, 1 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor ficus_onnx__function_proto__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ficus_onnx.FunctionProto", + "FunctionProto", + "FicusOnnx__FunctionProto", + "ficus_onnx", + sizeof(FicusOnnx__FunctionProto), + 8, + ficus_onnx__function_proto__field_descriptors, + ficus_onnx__function_proto__field_indices_by_name, + 2, ficus_onnx__function_proto__number_ranges, + (ProtobufCMessageInit) ficus_onnx__function_proto__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCEnumValue ficus_onnx__version__enum_values_by_number[9] = +{ + { "_START_VERSION", "FICUS_ONNX__VERSION___START_VERSION", 0 }, + { "IR_VERSION_2017_10_10", "FICUS_ONNX__VERSION__IR_VERSION_2017_10_10", 1 }, + { "IR_VERSION_2017_10_30", "FICUS_ONNX__VERSION__IR_VERSION_2017_10_30", 2 }, + { "IR_VERSION_2017_11_3", "FICUS_ONNX__VERSION__IR_VERSION_2017_11_3", 3 }, + { "IR_VERSION_2019_1_22", "FICUS_ONNX__VERSION__IR_VERSION_2019_1_22", 4 }, + { "IR_VERSION_2019_3_18", "FICUS_ONNX__VERSION__IR_VERSION_2019_3_18", 5 }, + { "IR_VERSION_2019_9_19", "FICUS_ONNX__VERSION__IR_VERSION_2019_9_19", 6 }, + { "IR_VERSION_2020_5_8", "FICUS_ONNX__VERSION__IR_VERSION_2020_5_8", 7 }, + { "IR_VERSION", "FICUS_ONNX__VERSION__IR_VERSION", 8 }, +}; +static const ProtobufCIntRange ficus_onnx__version__value_ranges[] = { +{0, 0},{0, 9} +}; +static const ProtobufCEnumValueIndex ficus_onnx__version__enum_values_by_name[9] = +{ + { "IR_VERSION", 8 }, + { "IR_VERSION_2017_10_10", 1 }, + { "IR_VERSION_2017_10_30", 2 }, + { "IR_VERSION_2017_11_3", 3 }, + { "IR_VERSION_2019_1_22", 4 }, + { "IR_VERSION_2019_3_18", 5 }, + { "IR_VERSION_2019_9_19", 6 }, + { "IR_VERSION_2020_5_8", 7 }, + { "_START_VERSION", 0 }, +}; +const ProtobufCEnumDescriptor ficus_onnx__version__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "ficus_onnx.Version", + "Version", + "FicusOnnx__Version", + "ficus_onnx", + 9, + ficus_onnx__version__enum_values_by_number, + 9, + ficus_onnx__version__enum_values_by_name, + 1, + ficus_onnx__version__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue ficus_onnx__operator_status__enum_values_by_number[2] = +{ + { "EXPERIMENTAL", "FICUS_ONNX__OPERATOR_STATUS__EXPERIMENTAL", 0 }, + { "STABLE", "FICUS_ONNX__OPERATOR_STATUS__STABLE", 1 }, +}; +static const ProtobufCIntRange ficus_onnx__operator_status__value_ranges[] = { +{0, 0},{0, 2} +}; +static const ProtobufCEnumValueIndex ficus_onnx__operator_status__enum_values_by_name[2] = +{ + { "EXPERIMENTAL", 0 }, + { "STABLE", 1 }, +}; +const ProtobufCEnumDescriptor ficus_onnx__operator_status__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "ficus_onnx.OperatorStatus", + "OperatorStatus", + "FicusOnnx__OperatorStatus", + "ficus_onnx", + 2, + ficus_onnx__operator_status__enum_values_by_number, + 2, + ficus_onnx__operator_status__enum_values_by_name, + 1, + ficus_onnx__operator_status__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; diff --git a/lib/Onnx/ficus-onnx.pb-c.h b/lib/Onnx/ficus-onnx.pb-c.h new file mode 100644 index 0000000..7412a2f --- /dev/null +++ b/lib/Onnx/ficus-onnx.pb-c.h @@ -0,0 +1,1562 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ficus-onnx.proto */ + +#ifndef PROTOBUF_C_ficus_2donnx_2eproto__INCLUDED +#define PROTOBUF_C_ficus_2donnx_2eproto__INCLUDED + +#include "protobuf-c.h" + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1004000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct FicusOnnx__AttributeProto FicusOnnx__AttributeProto; +typedef struct FicusOnnx__ValueInfoProto FicusOnnx__ValueInfoProto; +typedef struct FicusOnnx__NodeProto FicusOnnx__NodeProto; +typedef struct FicusOnnx__TrainingInfoProto FicusOnnx__TrainingInfoProto; +typedef struct FicusOnnx__ModelProto FicusOnnx__ModelProto; +typedef struct FicusOnnx__StringStringEntryProto FicusOnnx__StringStringEntryProto; +typedef struct FicusOnnx__TensorAnnotation FicusOnnx__TensorAnnotation; +typedef struct FicusOnnx__GraphProto FicusOnnx__GraphProto; +typedef struct FicusOnnx__TensorProto FicusOnnx__TensorProto; +typedef struct FicusOnnx__TensorProto__Segment FicusOnnx__TensorProto__Segment; +typedef struct FicusOnnx__SparseTensorProto FicusOnnx__SparseTensorProto; +typedef struct FicusOnnx__TensorShapeProto FicusOnnx__TensorShapeProto; +typedef struct FicusOnnx__TensorShapeProto__Dimension FicusOnnx__TensorShapeProto__Dimension; +typedef struct FicusOnnx__TypeProto FicusOnnx__TypeProto; +typedef struct FicusOnnx__TypeProto__Tensor FicusOnnx__TypeProto__Tensor; +typedef struct FicusOnnx__TypeProto__Sequence FicusOnnx__TypeProto__Sequence; +typedef struct FicusOnnx__TypeProto__Map FicusOnnx__TypeProto__Map; +typedef struct FicusOnnx__TypeProto__Optional FicusOnnx__TypeProto__Optional; +typedef struct FicusOnnx__TypeProto__SparseTensor FicusOnnx__TypeProto__SparseTensor; +typedef struct FicusOnnx__OperatorSetIdProto FicusOnnx__OperatorSetIdProto; +typedef struct FicusOnnx__FunctionProto FicusOnnx__FunctionProto; + + +/* --- enums --- */ + +/* + * Note: this enum is structurally identical to the OpSchema::AttrType + * enum defined in schema.h. If you rev one, you likely need to rev the other. + */ +typedef enum _FicusOnnx__AttributeProto__AttributeType { + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__UNDEFINED = 0, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__FLOAT = 1, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__INT = 2, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__STRING = 3, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TENSOR = 4, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__GRAPH = 5, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__SPARSE_TENSOR = 11, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TYPE_PROTO = 13, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__FLOATS = 6, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__INTS = 7, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__STRINGS = 8, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TENSORS = 9, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__GRAPHS = 10, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__SPARSE_TENSORS = 12, + FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__TYPE_PROTOS = 14 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE) +} FicusOnnx__AttributeProto__AttributeType; +typedef enum _FicusOnnx__TensorProto__DataType { + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UNDEFINED = 0, + /* + * Basic types. + */ + /* + * float + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__FLOAT = 1, + /* + * uint8_t + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT8 = 2, + /* + * int8_t + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT8 = 3, + /* + * uint16_t + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT16 = 4, + /* + * int16_t + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT16 = 5, + /* + * int32_t + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT32 = 6, + /* + * int64_t + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__INT64 = 7, + /* + * string + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__STRING = 8, + /* + * bool + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__BOOL = 9, + /* + * IEEE754 half-precision floating-point format (16 bits wide). + * This format has 1 sign bit, 5 exponent bits, and 10 mantissa bits. + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__FLOAT16 = 10, + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__DOUBLE = 11, + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT32 = 12, + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__UINT64 = 13, + /* + * complex with float32 real and imaginary components + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__COMPLEX64 = 14, + /* + * complex with float64 real and imaginary components + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__COMPLEX128 = 15, + /* + * Non-IEEE floating-point format based on IEEE754 single-precision + * floating-point number truncated to 16 bits. + * This format has 1 sign bit, 8 exponent bits, and 7 mantissa bits. + */ + FICUS_ONNX__TENSOR_PROTO__DATA_TYPE__BFLOAT16 = 16 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__TENSOR_PROTO__DATA_TYPE) +} FicusOnnx__TensorProto__DataType; +/* + * Location of the data for this tensor. MUST be one of: + * - DEFAULT - data stored inside the protobuf message. Data is stored in raw_data (if set) otherwise in type-specified field. + * - EXTERNAL - data stored in an external location as described by external_data field. + */ +typedef enum _FicusOnnx__TensorProto__DataLocation { + FICUS_ONNX__TENSOR_PROTO__DATA_LOCATION__DEFAULT = 0, + FICUS_ONNX__TENSOR_PROTO__DATA_LOCATION__EXTERNAL = 1 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__TENSOR_PROTO__DATA_LOCATION) +} FicusOnnx__TensorProto__DataLocation; +/* + * Versioning + * ONNX versioning is specified in docs/IR.md and elaborated on in docs/Versioning.md + * To be compatible with both proto2 and proto3, we will use a version number + * that is not defined by the default value but an explicit enum number. + */ +typedef enum _FicusOnnx__Version { + /* + * proto3 requires the first enum value to be zero. + * We add this just to appease the compiler. + */ + FICUS_ONNX__VERSION___START_VERSION = 0, + /* + * The version field is always serialized and we will use it to store the + * version that the graph is generated from. This helps us set up version + * control. + * For the IR, we are using simple numbers starting with 0x00000001, + * which was the version we published on Oct 10, 2017. + */ + FICUS_ONNX__VERSION__IR_VERSION_2017_10_10 = 1, + /* + * IR_VERSION 2 published on Oct 30, 2017 + * - Added type discriminator to AttributeProto to support proto3 users + */ + FICUS_ONNX__VERSION__IR_VERSION_2017_10_30 = 2, + /* + * IR VERSION 3 published on Nov 3, 2017 + * - For operator versioning: + * - Added new message OperatorSetIdProto + * - Added opset_import in ModelProto + * - For vendor extensions, added domain in NodeProto + */ + FICUS_ONNX__VERSION__IR_VERSION_2017_11_3 = 3, + /* + * IR VERSION 4 published on Jan 22, 2019 + * - Relax constraint that initializers should be a subset of graph inputs + * - Add type BFLOAT16 + */ + FICUS_ONNX__VERSION__IR_VERSION_2019_1_22 = 4, + /* + * IR VERSION 5 published on March 18, 2019 + * - Add message TensorAnnotation. + * - Add quantization annotation in GraphProto to map tensor with its scale and zero point quantization parameters. + */ + FICUS_ONNX__VERSION__IR_VERSION_2019_3_18 = 5, + /* + * IR VERSION 6 published on Sep 19, 2019 + * - Add support for sparse tensor constants stored in model. + * - Add message SparseTensorProto + * - Add sparse initializers + */ + FICUS_ONNX__VERSION__IR_VERSION_2019_9_19 = 6, + /* + * IR VERSION 7 published on May 8, 2020 + * - Add support to allow function body graph to rely on multiple external opreator sets. + * - Add a list to promote inference graph's initializers to global and + * mutable variables. Global variables are visible in all graphs of the + * stored models. + * - Add message TrainingInfoProto to store initialization + * method and training algorithm. The execution of TrainingInfoProto + * can modify the values of mutable variables. + * - Implicitly add inference graph into each TrainingInfoProto's algorithm. + */ + FICUS_ONNX__VERSION__IR_VERSION_2020_5_8 = 7, + /* + * IR VERSION 8 published on + * Introduce TypeProto.SparseTensor + * Introduce TypeProto.Optional + * Added a list of FunctionProtos local to the model + * Deprecated since_version and operator status from FunctionProto + */ + FICUS_ONNX__VERSION__IR_VERSION = 8 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__VERSION) +} FicusOnnx__Version; +/* + * Operator/function status. + */ +typedef enum _FicusOnnx__OperatorStatus { + FICUS_ONNX__OPERATOR_STATUS__EXPERIMENTAL = 0, + FICUS_ONNX__OPERATOR_STATUS__STABLE = 1 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__OPERATOR_STATUS) +} FicusOnnx__OperatorStatus; + +/* --- messages --- */ + +/* + * Attributes + * A named attribute containing either singular float, integer, string, graph, + * and tensor values, or repeated float, integer, string, graph, and tensor values. + * An AttributeProto MUST contain the name field, and *only one* of the + * following content fields, effectively enforcing a C/C++ union equivalent. + */ +struct FicusOnnx__AttributeProto +{ + ProtobufCMessage base; + /* + * The name field MUST be present for this version of the IR. + */ + /* + * namespace Attribute + */ + char *name; + /* + * if ref_attr_name is not empty, ref_attr_name is the attribute name in parent function. + * In this case, this AttributeProto does not contain data, and it's a reference of attribute + * in parent scope. + * NOTE: This should ONLY be used in function (sub-graph). It's invalid to be used in main graph. + */ + char *ref_attr_name; + /* + * A human-readable documentation for this attribute. Markdown is allowed. + */ + char *doc_string; + /* + * The type field MUST be present for this version of the IR. + * For 0.0.1 versions of the IR, this field was not defined, and + * implementations needed to use has_field heuristics to determine + * which value field was in use. For IR_VERSION 0.0.2 or later, this + * field MUST be set and match the f|i|s|t|... field in use. This + * change was made to accommodate proto3 implementations. + */ + /* + * discriminator that indicates which field below is in use + */ + FicusOnnx__AttributeProto__AttributeType type; + /* + * Exactly ONE of the following fields must be present for this version of the IR + */ + /* + * float + */ + float f; + /* + * int + */ + int64_t i; + /* + * UTF-8 string + */ + ProtobufCBinaryData s; + /* + * tensor value + */ + FicusOnnx__TensorProto *t; + /* + * graph + */ + FicusOnnx__GraphProto *g; + /* + * sparse tensor value + */ + FicusOnnx__SparseTensorProto *sparse_tensor; + /* + * Do not use field below, it's deprecated. + * optional ValueProto v = 12; // value - subsumes everything but graph + */ + /* + * type proto + */ + FicusOnnx__TypeProto *tp; + /* + * list of floats + */ + size_t n_floats; + float *floats; + /* + * list of ints + */ + size_t n_ints; + int64_t *ints; + /* + * list of UTF-8 strings + */ + size_t n_strings; + ProtobufCBinaryData *strings; + /* + * list of tensors + */ + size_t n_tensors; + FicusOnnx__TensorProto **tensors; + /* + * list of graph + */ + size_t n_graphs; + FicusOnnx__GraphProto **graphs; + /* + * list of sparse tensors + */ + size_t n_sparse_tensors; + FicusOnnx__SparseTensorProto **sparse_tensors; + /* + * list of type protos + */ + size_t n_type_protos; + FicusOnnx__TypeProto **type_protos; +}; +#define FICUS_ONNX__ATTRIBUTE_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__attribute_proto__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, FICUS_ONNX__ATTRIBUTE_PROTO__ATTRIBUTE_TYPE__UNDEFINED, 0, 0, {0,NULL}, NULL, NULL, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +/* + * Defines information on value, including the name, the type, and + * the shape of the value. + */ +struct FicusOnnx__ValueInfoProto +{ + ProtobufCMessage base; + /* + * This field MUST be present in this version of the IR. + */ + /* + * namespace Value + */ + char *name; + /* + * This field MUST be present in this version of the IR for + * inputs and outputs of the top-level graph. + */ + FicusOnnx__TypeProto *type; + /* + * A human-readable documentation for this value. Markdown is allowed. + */ + char *doc_string; +}; +#define FICUS_ONNX__VALUE_INFO_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__value_info_proto__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string } + + +/* + * Nodes + * Computation graphs are made up of a DAG of nodes, which represent what is + * commonly called a "layer" or "pipeline stage" in machine learning frameworks. + * For example, it can be a node of type "Conv" that takes in an image, a filter + * tensor and a bias tensor, and produces the convolved output. + */ +struct FicusOnnx__NodeProto +{ + ProtobufCMessage base; + /* + * namespace Value + */ + size_t n_input; + char **input; + /* + * namespace Value + */ + size_t n_output; + char **output; + /* + * An optional identifier for this node in a graph. + * This field MAY be absent in ths version of the IR. + */ + /* + * namespace Node + */ + char *name; + /* + * The symbolic identifier of the Operator to execute. + */ + /* + * namespace Operator + */ + char *op_type; + /* + * The domain of the OperatorSet that specifies the operator named by op_type. + */ + /* + * namespace Domain + */ + char *domain; + /* + * Additional named attributes. + */ + size_t n_attribute; + FicusOnnx__AttributeProto **attribute; + /* + * A human-readable documentation for this node. Markdown is allowed. + */ + char *doc_string; +}; +#define FICUS_ONNX__NODE_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__node_proto__descriptor) \ + , 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string } + + +/* + * Training information + * TrainingInfoProto stores information for training a model. + * In particular, this defines two functionalities: an initialization-step + * and a training-algorithm-step. Initialization resets the model + * back to its original state as if no training has been performed. + * Training algorithm improves the model based on input data. + * The semantics of the initialization-step is that the initializers + * in ModelProto.graph and in TrainingInfoProto.algorithm are first + * initialized as specified by the initializers in the graph, and then + * updated by the "initialization_binding" in every instance in + * ModelProto.training_info. + * The field "algorithm" defines a computation graph which represents a + * training algorithm's step. After the execution of a + * TrainingInfoProto.algorithm, the initializers specified by "update_binding" + * may be immediately updated. If the targeted training algorithm contains + * consecutive update steps (such as block coordinate descent methods), + * the user needs to create a TrainingInfoProto for each step. + */ +struct FicusOnnx__TrainingInfoProto +{ + ProtobufCMessage base; + /* + * This field describes a graph to compute the initial tensors + * upon starting the training process. Initialization graph has no input + * and can have multiple outputs. Usually, trainable tensors in neural + * networks are randomly initialized. To achieve that, for each tensor, + * the user can put a random number operator such as RandomNormal or + * RandomUniform in TrainingInfoProto.initialization.node and assign its + * random output to the specific tensor using "initialization_binding". + * This graph can also set the initializers in "algorithm" in the same + * TrainingInfoProto; a use case is resetting the number of training + * iteration to zero. + * By default, this field is an empty graph and its evaluation does not + * produce any output. Thus, no initializer would be changed by default. + */ + FicusOnnx__GraphProto *initialization; + /* + * This field represents a training algorithm step. Given required inputs, + * it computes outputs to update initializers in its own or inference graph's + * initializer lists. In general, this field contains loss node, gradient node, + * optimizer node, increment of iteration count. + * An execution of the training algorithm step is performed by executing the + * graph obtained by combining the inference graph (namely "ModelProto.graph") + * and the "algorithm" graph. That is, the actual the actual + * input/initializer/output/node/value_info/sparse_initializer list of + * the training graph is the concatenation of + * "ModelProto.graph.input/initializer/output/node/value_info/sparse_initializer" + * and "algorithm.input/initializer/output/node/value_info/sparse_initializer" + * in that order. This combined graph must satisfy the normal ONNX conditions. + * Now, let's provide a visualization of graph combination for clarity. + * Let the inference graph (i.e., "ModelProto.graph") be + * tensor_a, tensor_b -> MatMul -> tensor_c -> Sigmoid -> tensor_d + * and the "algorithm" graph be + * tensor_d -> Add -> tensor_e + * The combination process results + * tensor_a, tensor_b -> MatMul -> tensor_c -> Sigmoid -> tensor_d -> Add -> tensor_e + * Notice that an input of a node in the "algorithm" graph may reference the + * output of a node in the inference graph (but not the other way round). Also, inference + * node cannot reference inputs of "algorithm". With these restrictions, inference graph + * can always be run independently without training information. + * By default, this field is an empty graph and its evaluation does not + * produce any output. Evaluating the default training step never + * update any initializers. + */ + FicusOnnx__GraphProto *algorithm; + /* + * This field specifies the bindings from the outputs of "initialization" to + * some initializers in "ModelProto.graph.initializer" and + * the "algorithm.initializer" in the same TrainingInfoProto. + * See "update_binding" below for details. + * By default, this field is empty and no initializer would be changed + * by the execution of "initialization". + */ + size_t n_initialization_binding; + FicusOnnx__StringStringEntryProto **initialization_binding; + /* + * Gradient-based training is usually an iterative procedure. In one gradient + * descent iteration, we apply + * x = x - r * g + * where "x" is the optimized tensor, "r" stands for learning rate, and "g" is + * gradient of "x" with respect to a chosen loss. To avoid adding assignments + * into the training graph, we split the update equation into + * y = x - r * g + * x = y + * The user needs to save "y = x - r * g" into TrainingInfoProto.algorithm. To + * tell that "y" should be assigned to "x", the field "update_binding" may + * contain a key-value pair of strings, "x" (key of StringStringEntryProto) + * and "y" (value of StringStringEntryProto). + * For a neural network with multiple trainable (mutable) tensors, there can + * be multiple key-value pairs in "update_binding". + * The initializers appears as keys in "update_binding" are considered + * mutable variables. This implies some behaviors + * as described below. + * 1. We have only unique keys in all "update_binding"s so that two + * variables may not have the same name. This ensures that one + * variable is assigned up to once. + * 2. The keys must appear in names of "ModelProto.graph.initializer" or + * "TrainingInfoProto.algorithm.initializer". + * 3. The values must be output names of "algorithm" or "ModelProto.graph.output". + * 4. Mutable variables are initialized to the value specified by the + * corresponding initializer, and then potentially updated by + * "initializer_binding"s and "update_binding"s in "TrainingInfoProto"s. + * This field usually contains names of trainable tensors + * (in ModelProto.graph), optimizer states such as momentums in advanced + * stochastic gradient methods (in TrainingInfoProto.graph), + * and number of training iterations (in TrainingInfoProto.graph). + * By default, this field is empty and no initializer would be changed + * by the execution of "algorithm". + */ + size_t n_update_binding; + FicusOnnx__StringStringEntryProto **update_binding; +}; +#define FICUS_ONNX__TRAINING_INFO_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__training_info_proto__descriptor) \ + , NULL, NULL, 0,NULL, 0,NULL } + + +/* + * Models + * ModelProto is a top-level file/container format for bundling a ML model and + * associating its computation graph with metadata. + * The semantics of the model are described by the associated GraphProto's. + */ +struct FicusOnnx__ModelProto +{ + ProtobufCMessage base; + /* + * The version of the IR this model targets. See Version enum above. + * This field MUST be present. + */ + int64_t ir_version; + /* + * The OperatorSets this model relies on. + * All ModelProtos MUST have at least one entry that + * specifies which version of the ONNX OperatorSet is + * being imported. + * All nodes in the ModelProto's graph will bind against the operator + * with the same-domain/same-op_type operator with the HIGHEST version + * in the referenced operator sets. + */ + size_t n_opset_import; + FicusOnnx__OperatorSetIdProto **opset_import; + /* + * The name of the framework or tool used to generate this model. + * This field SHOULD be present to indicate which implementation/tool/framework + * emitted the model. + */ + char *producer_name; + /* + * The version of the framework or tool used to generate this model. + * This field SHOULD be present to indicate which implementation/tool/framework + * emitted the model. + */ + char *producer_version; + /* + * Domain name of the model. + * We use reverse domain names as name space indicators. For example: + * `com.facebook.fair` or `com.microsoft.cognitiveservices` + * Together with `model_version` and GraphProto.name, this forms the unique identity of + * the graph. + */ + char *domain; + /* + * The version of the graph encoded. See Version enum below. + */ + int64_t model_version; + /* + * A human-readable documentation for this model. Markdown is allowed. + */ + char *doc_string; + /* + * The parameterized graph that is evaluated to execute the model. + */ + FicusOnnx__GraphProto *graph; + /* + * Named metadata values; keys should be distinct. + */ + size_t n_metadata_props; + FicusOnnx__StringStringEntryProto **metadata_props; + /* + * Training-specific information. Sequentially executing all stored + * `TrainingInfoProto.algorithm`s and assigning their outputs following + * the corresponding `TrainingInfoProto.update_binding`s is one training + * iteration. Similarly, to initialize the model + * (as if training hasn't happened), the user should sequentially execute + * all stored `TrainingInfoProto.initialization`s and assigns their outputs + * using `TrainingInfoProto.initialization_binding`s. + * If this field is empty, the training behavior of the model is undefined. + */ + size_t n_training_info; + FicusOnnx__TrainingInfoProto **training_info; + /* + * A list of function protos local to the model. + * Name of the function "FunctionProto.name" should be unique within the domain "FunctionProto.domain". + * In case of any conflicts the behavior (whether the model local functions are given higher priority, + * or standard opserator sets are given higher priotity or this is treated as error) is defined by + * the runtimes. + * + * The operator sets imported by FunctionProto should be compatible with the ones + * imported by ModelProto and other model local FunctionProtos. + * Example, if same operator set say 'A' is imported by a FunctionProto and ModelProto + * or by 2 FunctionProtos then versions for the operator set may be different but, + * the operator schema returned for op_type, domain, version combination + * for both the versions should be same for every node in the function body. + * One FunctionProto can reference other FunctionProto in the model, however, recursive reference + * is not allowed. + */ + size_t n_functions; + FicusOnnx__FunctionProto **functions; +}; +#define FICUS_ONNX__MODEL_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__model_proto__descriptor) \ + , 0, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0,NULL } + + +/* + * StringStringEntryProto follows the pattern for cross-proto-version maps. + * See https://developers.google.com/protocol-buffers/docs/proto3#maps + */ +struct FicusOnnx__StringStringEntryProto +{ + ProtobufCMessage base; + char *key; + char *value; +}; +#define FICUS_ONNX__STRING_STRING_ENTRY_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__string_string_entry_proto__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } + + +struct FicusOnnx__TensorAnnotation +{ + ProtobufCMessage base; + char *tensor_name; + /* + * pairs to annotate tensor specified by above. + * The keys used in the mapping below must be pre-defined in ONNX spec. + * For example, for 8-bit linear quantization case, 'SCALE_TENSOR', 'ZERO_POINT_TENSOR' will be pre-defined as + * quantization parameter keys. + */ + size_t n_quant_parameter_tensor_names; + FicusOnnx__StringStringEntryProto **quant_parameter_tensor_names; +}; +#define FICUS_ONNX__TENSOR_ANNOTATION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__tensor_annotation__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +/* + * Graphs + * A graph defines the computational logic of a model and is comprised of a parameterized + * list of nodes that form a directed acyclic graph based on their inputs and outputs. + * This is the equivalent of the "network" or "graph" in many deep learning + * frameworks. + */ +struct FicusOnnx__GraphProto +{ + ProtobufCMessage base; + /* + * The nodes in the graph, sorted topologically. + */ + size_t n_node; + FicusOnnx__NodeProto **node; + /* + * The name of the graph. + */ + /* + * namespace Graph + */ + char *name; + /* + * A list of named tensor values, used to specify constant inputs of the graph. + * Each initializer (both TensorProto as well SparseTensorProto) MUST have a name. + * The name MUST be unique across both initializer and sparse_initializer, + * but the name MAY also appear in the input list. + */ + size_t n_initializer; + FicusOnnx__TensorProto **initializer; + /* + * Initializers (see above) stored in sparse format. + */ + size_t n_sparse_initializer; + FicusOnnx__SparseTensorProto **sparse_initializer; + /* + * A human-readable documentation for this graph. Markdown is allowed. + */ + char *doc_string; + /* + * The inputs and outputs of the graph. + */ + size_t n_input; + FicusOnnx__ValueInfoProto **input; + size_t n_output; + FicusOnnx__ValueInfoProto **output; + /* + * Information for the values in the graph. The ValueInfoProto.name's + * must be distinct. It is optional for a value to appear in value_info list. + */ + size_t n_value_info; + FicusOnnx__ValueInfoProto **value_info; + /* + * This field carries information to indicate the mapping among a tensor and its + * quantization parameter tensors. For example: + * For tensor 'a', it may have {'SCALE_TENSOR', 'a_scale'} and {'ZERO_POINT_TENSOR', 'a_zero_point'} annotated, + * which means, tensor 'a_scale' and tensor 'a_zero_point' are scale and zero point of tensor 'a' in the model. + */ + size_t n_quantization_annotation; + FicusOnnx__TensorAnnotation **quantization_annotation; +}; +#define FICUS_ONNX__GRAPH_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__graph_proto__descriptor) \ + , 0,NULL, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +/* + * For very large tensors, we may want to store them in chunks, in which + * case the following fields will specify the segment that is stored in + * the current TensorProto. + */ +struct FicusOnnx__TensorProto__Segment +{ + ProtobufCMessage base; + int64_t begin; + int64_t end; +}; +#define FICUS_ONNX__TENSOR_PROTO__SEGMENT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__tensor_proto__segment__descriptor) \ + , 0, 0 } + + +/* + * Tensors + * A serialized tensor value. + */ +struct FicusOnnx__TensorProto +{ + ProtobufCMessage base; + /* + * The shape of the tensor. + */ + size_t n_dims; + int64_t *dims; + /* + * The data type of the tensor. + * This field MUST have a valid TensorProto.DataType value + */ + int32_t data_type; + FicusOnnx__TensorProto__Segment *segment; + /* + * For float and complex64 values + * Complex64 tensors are encoded as a single array of floats, + * with the real components appearing in odd numbered positions, + * and the corresponding imaginary component appearing in the + * subsequent even numbered position. (e.g., [1.0 + 2.0i, 3.0 + 4.0i] + * is encoded as [1.0, 2.0 ,3.0 ,4.0] + * When this field is present, the data_type field MUST be FLOAT or COMPLEX64. + */ + size_t n_float_data; + float *float_data; + /* + * For int32, uint8, int8, uint16, int16, bool, and float16 values + * float16 values must be bit-wise converted to an uint16_t prior + * to writing to the buffer. + * When this field is present, the data_type field MUST be + * INT32, INT16, INT8, UINT16, UINT8, BOOL, or FLOAT16 + */ + size_t n_int32_data; + int32_t *int32_data; + /* + * For strings. + * Each element of string_data is a UTF-8 encoded Unicode + * string. No trailing null, no leading BOM. The protobuf "string" + * scalar type is not used to match ML community conventions. + * When this field is present, the data_type field MUST be STRING + */ + size_t n_string_data; + ProtobufCBinaryData *string_data; + /* + * For int64. + * When this field is present, the data_type field MUST be INT64 + */ + size_t n_int64_data; + int64_t *int64_data; + /* + * Optionally, a name for the tensor. + */ + /* + * namespace Value + */ + char *name; + /* + * A human-readable documentation for this tensor. Markdown is allowed. + */ + char *doc_string; + /* + * Serializations can either use one of the fields above, or use this + * raw bytes field. The only exception is the string case, where one is + * required to store the content in the repeated bytes string_data field. + * When this raw_data field is used to store tensor value, elements MUST + * be stored in as fixed-width, little-endian order. + * Floating-point data types MUST be stored in IEEE 754 format. + * Complex64 elements must be written as two consecutive FLOAT values, real component first. + * Complex128 elements must be written as two consecutive DOUBLE values, real component first. + * Boolean type MUST be written one byte per tensor element (00000001 for true, 00000000 for false). + * Note: the advantage of specific field rather than the raw_data field is + * that in some cases (e.g. int data), protobuf does a better packing via + * variable length storage, and may lead to smaller binary footprint. + * When this field is present, the data_type field MUST NOT be STRING or UNDEFINED + */ + ProtobufCBinaryData raw_data; + /* + * Data can be stored inside the protobuf file using type-specific fields or raw_data. + * Alternatively, raw bytes data can be stored in an external file, using the external_data field. + * external_data stores key-value pairs describing data location. Recognized keys are: + * - "location" (required) - POSIX filesystem path relative to the directory where the ONNX + * protobuf model was stored + * - "offset" (optional) - position of byte at which stored data begins. Integer stored as string. + * Offset values SHOULD be multiples 4096 (page size) to enable mmap support. + * - "length" (optional) - number of bytes containing data. Integer stored as string. + * - "checksum" (optional) - SHA1 digest of file specified in under 'location' key. + */ + size_t n_external_data; + FicusOnnx__StringStringEntryProto **external_data; + /* + * If value not set, data is stored in raw_data (if set) otherwise in type-specified field. + */ + FicusOnnx__TensorProto__DataLocation data_location; + /* + * For double + * Complex128 tensors are encoded as a single array of doubles, + * with the real components appearing in odd numbered positions, + * and the corresponding imaginary component appearing in the + * subsequent even numbered position. (e.g., [1.0 + 2.0i, 3.0 + 4.0i] + * is encoded as [1.0, 2.0 ,3.0 ,4.0] + * When this field is present, the data_type field MUST be DOUBLE or COMPLEX128 + */ + size_t n_double_data; + double *double_data; + /* + * For uint64 and uint32 values + * When this field is present, the data_type field MUST be + * UINT32 or UINT64 + */ + size_t n_uint64_data; + uint64_t *uint64_data; +}; +#define FICUS_ONNX__TENSOR_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__tensor_proto__descriptor) \ + , 0,NULL, 0, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, {0,NULL}, 0,NULL, FICUS_ONNX__TENSOR_PROTO__DATA_LOCATION__DEFAULT, 0,NULL, 0,NULL } + + +/* + * A serialized sparse-tensor value + */ +struct FicusOnnx__SparseTensorProto +{ + ProtobufCMessage base; + /* + * The sequence of non-default values are encoded as a tensor of shape [NNZ]. + * The default-value is zero for numeric tensors, and empty-string for string tensors. + * values must have a non-empty name present which serves as a name for SparseTensorProto + * when used in sparse_initializer list. + */ + FicusOnnx__TensorProto *values; + /* + * The indices of the non-default values, which may be stored in one of two formats. + * (a) Indices can be a tensor of shape [NNZ, rank] with the [i,j]-th value + * corresponding to the j-th index of the i-th value (in the values tensor). + * (b) Indices can be a tensor of shape [NNZ], in which case the i-th value + * must be the linearized-index of the i-th value (in the values tensor). + * The linearized-index can be converted into an index tuple (k_1,...,k_rank) + * using the shape provided below. + * The indices must appear in ascending order without duplication. + * In the first format, the ordering is lexicographic-ordering: + * e.g., index-value [1,4] must appear before [2,1] + */ + FicusOnnx__TensorProto *indices; + /* + * The shape of the underlying dense-tensor: [dim_1, dim_2, ... dim_rank] + */ + size_t n_dims; + int64_t *dims; +}; +#define FICUS_ONNX__SPARSE_TENSOR_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__sparse_tensor_proto__descriptor) \ + , NULL, NULL, 0,NULL } + + +typedef enum { + FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__VALUE__NOT_SET = 0, + FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__VALUE_DIM_VALUE = 1, + FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__VALUE_DIM_PARAM = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__VALUE__CASE) +} FicusOnnx__TensorShapeProto__Dimension__ValueCase; + +struct FicusOnnx__TensorShapeProto__Dimension +{ + ProtobufCMessage base; + /* + * Standard denotation can optionally be used to denote tensor + * dimensions with standard semantic descriptions to ensure + * that operations are applied to the correct axis of a tensor. + * Refer to https://github.com/onnx/onnx/blob/master/docs/DimensionDenotation.md#denotation-definition + * for pre-defined dimension denotations. + */ + char *denotation; + FicusOnnx__TensorShapeProto__Dimension__ValueCase value_case; + union { + int64_t dim_value; + /* + * namespace Shape + */ + char *dim_param; + }; +}; +#define FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__tensor_shape_proto__dimension__descriptor) \ + , (char *)protobuf_c_empty_string, FICUS_ONNX__TENSOR_SHAPE_PROTO__DIMENSION__VALUE__NOT_SET, {0} } + + +/* + * Defines a tensor shape. A dimension can be either an integer value + * or a symbolic variable. A symbolic variable represents an unknown + * dimension. + */ +struct FicusOnnx__TensorShapeProto +{ + ProtobufCMessage base; + size_t n_dim; + FicusOnnx__TensorShapeProto__Dimension **dim; +}; +#define FICUS_ONNX__TENSOR_SHAPE_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__tensor_shape_proto__descriptor) \ + , 0,NULL } + + +struct FicusOnnx__TypeProto__Tensor +{ + ProtobufCMessage base; + /* + * This field MUST NOT have the value of UNDEFINED + * This field MUST have a valid TensorProto.DataType value + * This field MUST be present for this version of the IR. + */ + int32_t elem_type; + FicusOnnx__TensorShapeProto *shape; +}; +#define FICUS_ONNX__TYPE_PROTO__TENSOR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__type_proto__tensor__descriptor) \ + , 0, NULL } + + +/* + * repeated T + */ +struct FicusOnnx__TypeProto__Sequence +{ + ProtobufCMessage base; + /* + * The type and optional shape of each element of the sequence. + * This field MUST be present for this version of the IR. + */ + FicusOnnx__TypeProto *elem_type; +}; +#define FICUS_ONNX__TYPE_PROTO__SEQUENCE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__type_proto__sequence__descriptor) \ + , NULL } + + +/* + * map + */ +struct FicusOnnx__TypeProto__Map +{ + ProtobufCMessage base; + /* + * This field MUST have a valid TensorProto.DataType value + * This field MUST be present for this version of the IR. + * This field MUST refer to an integral type ([U]INT{8|16|32|64}) or STRING + */ + int32_t key_type; + /* + * This field MUST be present for this version of the IR. + */ + FicusOnnx__TypeProto *value_type; +}; +#define FICUS_ONNX__TYPE_PROTO__MAP__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__type_proto__map__descriptor) \ + , 0, NULL } + + +/* + * wrapper for Tensor, Sequence, or Map + */ +struct FicusOnnx__TypeProto__Optional +{ + ProtobufCMessage base; + /* + * The type and optional shape of the element wrapped. + * This field MUST be present for this version of the IR. + * Possible values correspond to OptionalProto.DataType enum + */ + FicusOnnx__TypeProto *elem_type; +}; +#define FICUS_ONNX__TYPE_PROTO__OPTIONAL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__type_proto__optional__descriptor) \ + , NULL } + + +struct FicusOnnx__TypeProto__SparseTensor +{ + ProtobufCMessage base; + /* + * This field MUST NOT have the value of UNDEFINED + * This field MUST have a valid TensorProto.DataType value + * This field MUST be present for this version of the IR. + */ + int32_t elem_type; + FicusOnnx__TensorShapeProto *shape; +}; +#define FICUS_ONNX__TYPE_PROTO__SPARSE_TENSOR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__type_proto__sparse_tensor__descriptor) \ + , 0, NULL } + + +typedef enum { + FICUS_ONNX__TYPE_PROTO__VALUE__NOT_SET = 0, + FICUS_ONNX__TYPE_PROTO__VALUE_TENSOR_TYPE = 1, + FICUS_ONNX__TYPE_PROTO__VALUE_SEQUENCE_TYPE = 4, + FICUS_ONNX__TYPE_PROTO__VALUE_MAP_TYPE = 5, + FICUS_ONNX__TYPE_PROTO__VALUE_OPTIONAL_TYPE = 9, + FICUS_ONNX__TYPE_PROTO__VALUE_SPARSE_TENSOR_TYPE = 8 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FICUS_ONNX__TYPE_PROTO__VALUE__CASE) +} FicusOnnx__TypeProto__ValueCase; + +/* + * Types + * The standard ONNX data types. + */ +struct FicusOnnx__TypeProto +{ + ProtobufCMessage base; + /* + * An optional denotation can be used to denote the whole + * type with a standard semantic description as to what is + * stored inside. Refer to https://github.com/onnx/onnx/blob/master/docs/TypeDenotation.md#type-denotation-definition + * for pre-defined type denotations. + */ + char *denotation; + FicusOnnx__TypeProto__ValueCase value_case; + union { + /* + * The type of a tensor. + */ + FicusOnnx__TypeProto__Tensor *tensor_type; + /* + * The type of a sequence. + */ + FicusOnnx__TypeProto__Sequence *sequence_type; + /* + * The type of a map. + */ + FicusOnnx__TypeProto__Map *map_type; + /* + * The type of an optional. + */ + FicusOnnx__TypeProto__Optional *optional_type; + /* + * Type of the sparse tensor + */ + FicusOnnx__TypeProto__SparseTensor *sparse_tensor_type; + }; +}; +#define FICUS_ONNX__TYPE_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__type_proto__descriptor) \ + , (char *)protobuf_c_empty_string, FICUS_ONNX__TYPE_PROTO__VALUE__NOT_SET, {0} } + + +/* + * Operator Sets + * OperatorSets are uniquely identified by a (domain, opset_version) pair. + */ +struct FicusOnnx__OperatorSetIdProto +{ + ProtobufCMessage base; + /* + * The domain of the operator set being identified. + * The empty string ("") or absence of this field implies the operator + * set that is defined as part of the ONNX specification. + * This field MUST be present in this version of the IR when referring to any other operator set. + */ + char *domain; + /* + * The version of the operator set being identified. + * This field MUST be present in this version of the IR. + */ + int64_t version; +}; +#define FICUS_ONNX__OPERATOR_SET_ID_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__operator_set_id_proto__descriptor) \ + , (char *)protobuf_c_empty_string, 0 } + + +struct FicusOnnx__FunctionProto +{ + ProtobufCMessage base; + /* + * The name of the function, similar usage of op_type in OperatorProto. + * Combined with FunctionProto.domain, this forms the unique identity of + * the FunctionProto. + */ + char *name; + /* + * The inputs and outputs of the function. + */ + size_t n_input; + char **input; + size_t n_output; + char **output; + /* + * The attributes of the function. + */ + size_t n_attribute; + char **attribute; + /* + * The nodes in the function. + */ + size_t n_node; + FicusOnnx__NodeProto **node; + /* + * A human-readable documentation for this function. Markdown is allowed. + */ + char *doc_string; + size_t n_opset_import; + FicusOnnx__OperatorSetIdProto **opset_import; + /* + * The domain which this function belongs to. Combined with FunctionProto.name, this forms the unique identity of + * the FunctionProto. + */ + char *domain; +}; +#define FICUS_ONNX__FUNCTION_PROTO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&ficus_onnx__function_proto__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string } + + +/* FicusOnnx__AttributeProto methods */ +void ficus_onnx__attribute_proto__init + (FicusOnnx__AttributeProto *message); +size_t ficus_onnx__attribute_proto__get_packed_size + (const FicusOnnx__AttributeProto *message); +size_t ficus_onnx__attribute_proto__pack + (const FicusOnnx__AttributeProto *message, + uint8_t *out); +size_t ficus_onnx__attribute_proto__pack_to_buffer + (const FicusOnnx__AttributeProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__AttributeProto * + ficus_onnx__attribute_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__attribute_proto__free_unpacked + (FicusOnnx__AttributeProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__ValueInfoProto methods */ +void ficus_onnx__value_info_proto__init + (FicusOnnx__ValueInfoProto *message); +size_t ficus_onnx__value_info_proto__get_packed_size + (const FicusOnnx__ValueInfoProto *message); +size_t ficus_onnx__value_info_proto__pack + (const FicusOnnx__ValueInfoProto *message, + uint8_t *out); +size_t ficus_onnx__value_info_proto__pack_to_buffer + (const FicusOnnx__ValueInfoProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__ValueInfoProto * + ficus_onnx__value_info_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__value_info_proto__free_unpacked + (FicusOnnx__ValueInfoProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__NodeProto methods */ +void ficus_onnx__node_proto__init + (FicusOnnx__NodeProto *message); +size_t ficus_onnx__node_proto__get_packed_size + (const FicusOnnx__NodeProto *message); +size_t ficus_onnx__node_proto__pack + (const FicusOnnx__NodeProto *message, + uint8_t *out); +size_t ficus_onnx__node_proto__pack_to_buffer + (const FicusOnnx__NodeProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__NodeProto * + ficus_onnx__node_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__node_proto__free_unpacked + (FicusOnnx__NodeProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__TrainingInfoProto methods */ +void ficus_onnx__training_info_proto__init + (FicusOnnx__TrainingInfoProto *message); +size_t ficus_onnx__training_info_proto__get_packed_size + (const FicusOnnx__TrainingInfoProto *message); +size_t ficus_onnx__training_info_proto__pack + (const FicusOnnx__TrainingInfoProto *message, + uint8_t *out); +size_t ficus_onnx__training_info_proto__pack_to_buffer + (const FicusOnnx__TrainingInfoProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__TrainingInfoProto * + ficus_onnx__training_info_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__training_info_proto__free_unpacked + (FicusOnnx__TrainingInfoProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__ModelProto methods */ +void ficus_onnx__model_proto__init + (FicusOnnx__ModelProto *message); +size_t ficus_onnx__model_proto__get_packed_size + (const FicusOnnx__ModelProto *message); +size_t ficus_onnx__model_proto__pack + (const FicusOnnx__ModelProto *message, + uint8_t *out); +size_t ficus_onnx__model_proto__pack_to_buffer + (const FicusOnnx__ModelProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__ModelProto * + ficus_onnx__model_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__model_proto__free_unpacked + (FicusOnnx__ModelProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__StringStringEntryProto methods */ +void ficus_onnx__string_string_entry_proto__init + (FicusOnnx__StringStringEntryProto *message); +size_t ficus_onnx__string_string_entry_proto__get_packed_size + (const FicusOnnx__StringStringEntryProto *message); +size_t ficus_onnx__string_string_entry_proto__pack + (const FicusOnnx__StringStringEntryProto *message, + uint8_t *out); +size_t ficus_onnx__string_string_entry_proto__pack_to_buffer + (const FicusOnnx__StringStringEntryProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__StringStringEntryProto * + ficus_onnx__string_string_entry_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__string_string_entry_proto__free_unpacked + (FicusOnnx__StringStringEntryProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__TensorAnnotation methods */ +void ficus_onnx__tensor_annotation__init + (FicusOnnx__TensorAnnotation *message); +size_t ficus_onnx__tensor_annotation__get_packed_size + (const FicusOnnx__TensorAnnotation *message); +size_t ficus_onnx__tensor_annotation__pack + (const FicusOnnx__TensorAnnotation *message, + uint8_t *out); +size_t ficus_onnx__tensor_annotation__pack_to_buffer + (const FicusOnnx__TensorAnnotation *message, + ProtobufCBuffer *buffer); +FicusOnnx__TensorAnnotation * + ficus_onnx__tensor_annotation__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__tensor_annotation__free_unpacked + (FicusOnnx__TensorAnnotation *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__GraphProto methods */ +void ficus_onnx__graph_proto__init + (FicusOnnx__GraphProto *message); +size_t ficus_onnx__graph_proto__get_packed_size + (const FicusOnnx__GraphProto *message); +size_t ficus_onnx__graph_proto__pack + (const FicusOnnx__GraphProto *message, + uint8_t *out); +size_t ficus_onnx__graph_proto__pack_to_buffer + (const FicusOnnx__GraphProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__GraphProto * + ficus_onnx__graph_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__graph_proto__free_unpacked + (FicusOnnx__GraphProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__TensorProto__Segment methods */ +void ficus_onnx__tensor_proto__segment__init + (FicusOnnx__TensorProto__Segment *message); +/* FicusOnnx__TensorProto methods */ +void ficus_onnx__tensor_proto__init + (FicusOnnx__TensorProto *message); +size_t ficus_onnx__tensor_proto__get_packed_size + (const FicusOnnx__TensorProto *message); +size_t ficus_onnx__tensor_proto__pack + (const FicusOnnx__TensorProto *message, + uint8_t *out); +size_t ficus_onnx__tensor_proto__pack_to_buffer + (const FicusOnnx__TensorProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__TensorProto * + ficus_onnx__tensor_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__tensor_proto__free_unpacked + (FicusOnnx__TensorProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__SparseTensorProto methods */ +void ficus_onnx__sparse_tensor_proto__init + (FicusOnnx__SparseTensorProto *message); +size_t ficus_onnx__sparse_tensor_proto__get_packed_size + (const FicusOnnx__SparseTensorProto *message); +size_t ficus_onnx__sparse_tensor_proto__pack + (const FicusOnnx__SparseTensorProto *message, + uint8_t *out); +size_t ficus_onnx__sparse_tensor_proto__pack_to_buffer + (const FicusOnnx__SparseTensorProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__SparseTensorProto * + ficus_onnx__sparse_tensor_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__sparse_tensor_proto__free_unpacked + (FicusOnnx__SparseTensorProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__TensorShapeProto__Dimension methods */ +void ficus_onnx__tensor_shape_proto__dimension__init + (FicusOnnx__TensorShapeProto__Dimension *message); +/* FicusOnnx__TensorShapeProto methods */ +void ficus_onnx__tensor_shape_proto__init + (FicusOnnx__TensorShapeProto *message); +size_t ficus_onnx__tensor_shape_proto__get_packed_size + (const FicusOnnx__TensorShapeProto *message); +size_t ficus_onnx__tensor_shape_proto__pack + (const FicusOnnx__TensorShapeProto *message, + uint8_t *out); +size_t ficus_onnx__tensor_shape_proto__pack_to_buffer + (const FicusOnnx__TensorShapeProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__TensorShapeProto * + ficus_onnx__tensor_shape_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__tensor_shape_proto__free_unpacked + (FicusOnnx__TensorShapeProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__TypeProto__Tensor methods */ +void ficus_onnx__type_proto__tensor__init + (FicusOnnx__TypeProto__Tensor *message); +/* FicusOnnx__TypeProto__Sequence methods */ +void ficus_onnx__type_proto__sequence__init + (FicusOnnx__TypeProto__Sequence *message); +/* FicusOnnx__TypeProto__Map methods */ +void ficus_onnx__type_proto__map__init + (FicusOnnx__TypeProto__Map *message); +/* FicusOnnx__TypeProto__Optional methods */ +void ficus_onnx__type_proto__optional__init + (FicusOnnx__TypeProto__Optional *message); +/* FicusOnnx__TypeProto__SparseTensor methods */ +void ficus_onnx__type_proto__sparse_tensor__init + (FicusOnnx__TypeProto__SparseTensor *message); +/* FicusOnnx__TypeProto methods */ +void ficus_onnx__type_proto__init + (FicusOnnx__TypeProto *message); +size_t ficus_onnx__type_proto__get_packed_size + (const FicusOnnx__TypeProto *message); +size_t ficus_onnx__type_proto__pack + (const FicusOnnx__TypeProto *message, + uint8_t *out); +size_t ficus_onnx__type_proto__pack_to_buffer + (const FicusOnnx__TypeProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__TypeProto * + ficus_onnx__type_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__type_proto__free_unpacked + (FicusOnnx__TypeProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__OperatorSetIdProto methods */ +void ficus_onnx__operator_set_id_proto__init + (FicusOnnx__OperatorSetIdProto *message); +size_t ficus_onnx__operator_set_id_proto__get_packed_size + (const FicusOnnx__OperatorSetIdProto *message); +size_t ficus_onnx__operator_set_id_proto__pack + (const FicusOnnx__OperatorSetIdProto *message, + uint8_t *out); +size_t ficus_onnx__operator_set_id_proto__pack_to_buffer + (const FicusOnnx__OperatorSetIdProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__OperatorSetIdProto * + ficus_onnx__operator_set_id_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__operator_set_id_proto__free_unpacked + (FicusOnnx__OperatorSetIdProto *message, + ProtobufCAllocator *allocator); +/* FicusOnnx__FunctionProto methods */ +void ficus_onnx__function_proto__init + (FicusOnnx__FunctionProto *message); +size_t ficus_onnx__function_proto__get_packed_size + (const FicusOnnx__FunctionProto *message); +size_t ficus_onnx__function_proto__pack + (const FicusOnnx__FunctionProto *message, + uint8_t *out); +size_t ficus_onnx__function_proto__pack_to_buffer + (const FicusOnnx__FunctionProto *message, + ProtobufCBuffer *buffer); +FicusOnnx__FunctionProto * + ficus_onnx__function_proto__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ficus_onnx__function_proto__free_unpacked + (FicusOnnx__FunctionProto *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*FicusOnnx__AttributeProto_Closure) + (const FicusOnnx__AttributeProto *message, + void *closure_data); +typedef void (*FicusOnnx__ValueInfoProto_Closure) + (const FicusOnnx__ValueInfoProto *message, + void *closure_data); +typedef void (*FicusOnnx__NodeProto_Closure) + (const FicusOnnx__NodeProto *message, + void *closure_data); +typedef void (*FicusOnnx__TrainingInfoProto_Closure) + (const FicusOnnx__TrainingInfoProto *message, + void *closure_data); +typedef void (*FicusOnnx__ModelProto_Closure) + (const FicusOnnx__ModelProto *message, + void *closure_data); +typedef void (*FicusOnnx__StringStringEntryProto_Closure) + (const FicusOnnx__StringStringEntryProto *message, + void *closure_data); +typedef void (*FicusOnnx__TensorAnnotation_Closure) + (const FicusOnnx__TensorAnnotation *message, + void *closure_data); +typedef void (*FicusOnnx__GraphProto_Closure) + (const FicusOnnx__GraphProto *message, + void *closure_data); +typedef void (*FicusOnnx__TensorProto__Segment_Closure) + (const FicusOnnx__TensorProto__Segment *message, + void *closure_data); +typedef void (*FicusOnnx__TensorProto_Closure) + (const FicusOnnx__TensorProto *message, + void *closure_data); +typedef void (*FicusOnnx__SparseTensorProto_Closure) + (const FicusOnnx__SparseTensorProto *message, + void *closure_data); +typedef void (*FicusOnnx__TensorShapeProto__Dimension_Closure) + (const FicusOnnx__TensorShapeProto__Dimension *message, + void *closure_data); +typedef void (*FicusOnnx__TensorShapeProto_Closure) + (const FicusOnnx__TensorShapeProto *message, + void *closure_data); +typedef void (*FicusOnnx__TypeProto__Tensor_Closure) + (const FicusOnnx__TypeProto__Tensor *message, + void *closure_data); +typedef void (*FicusOnnx__TypeProto__Sequence_Closure) + (const FicusOnnx__TypeProto__Sequence *message, + void *closure_data); +typedef void (*FicusOnnx__TypeProto__Map_Closure) + (const FicusOnnx__TypeProto__Map *message, + void *closure_data); +typedef void (*FicusOnnx__TypeProto__Optional_Closure) + (const FicusOnnx__TypeProto__Optional *message, + void *closure_data); +typedef void (*FicusOnnx__TypeProto__SparseTensor_Closure) + (const FicusOnnx__TypeProto__SparseTensor *message, + void *closure_data); +typedef void (*FicusOnnx__TypeProto_Closure) + (const FicusOnnx__TypeProto *message, + void *closure_data); +typedef void (*FicusOnnx__OperatorSetIdProto_Closure) + (const FicusOnnx__OperatorSetIdProto *message, + void *closure_data); +typedef void (*FicusOnnx__FunctionProto_Closure) + (const FicusOnnx__FunctionProto *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCEnumDescriptor ficus_onnx__version__descriptor; +extern const ProtobufCEnumDescriptor ficus_onnx__operator_status__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__attribute_proto__descriptor; +extern const ProtobufCEnumDescriptor ficus_onnx__attribute_proto__attribute_type__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__value_info_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__node_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__training_info_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__model_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__string_string_entry_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__tensor_annotation__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__graph_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__tensor_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__tensor_proto__segment__descriptor; +extern const ProtobufCEnumDescriptor ficus_onnx__tensor_proto__data_type__descriptor; +extern const ProtobufCEnumDescriptor ficus_onnx__tensor_proto__data_location__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__sparse_tensor_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__tensor_shape_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__tensor_shape_proto__dimension__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__type_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__type_proto__tensor__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__type_proto__sequence__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__type_proto__map__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__type_proto__optional__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__type_proto__sparse_tensor__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__operator_set_id_proto__descriptor; +extern const ProtobufCMessageDescriptor ficus_onnx__function_proto__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_ficus_2donnx_2eproto__INCLUDED */ diff --git a/lib/Onnx/ficus-onnx.proto b/lib/Onnx/ficus-onnx.proto new file mode 100644 index 0000000..d252e8e --- /dev/null +++ b/lib/Onnx/ficus-onnx.proto @@ -0,0 +1,818 @@ +// +// WARNING: This file is automatically generated! Please edit onnx.in.proto. +// + + +// SPDX-License-Identifier: Apache-2.0 + + +syntax = "proto3"; + +package ficus_onnx; + +// Overview +// +// ONNX is an open specification that is comprised of the following components: +// +// 1) A definition of an extensible computation graph model. +// 2) Definitions of standard data types. +// 3) Definitions of built-in operators. +// +// This document describes the syntax of models and their computation graphs, +// as well as the standard data types. Together, they are referred to as the ONNX +// Intermediate Representation, or 'IR' for short. +// +// The normative semantic specification of the ONNX IR is found in docs/IR.md. +// Definitions of the built-in neural network operators may be found in docs/Operators.md. + +// Notes +// +// Protobuf compatibility +// +// To simplify framework compatibility, ONNX is defined using the subset of protobuf +// that is compatible with both protobuf v2 and v3. This means that we do not use any +// protobuf features that are only available in one of the two versions. +// +// Here are the most notable contortions we have to carry out to work around +// these limitations: +// +// - No 'map' (added protobuf 3.0). We instead represent mappings as lists +// of key-value pairs, where order does not matter and duplicates +// are not allowed. + + +// Versioning +// +// ONNX versioning is specified in docs/IR.md and elaborated on in docs/Versioning.md +// +// To be compatible with both proto2 and proto3, we will use a version number +// that is not defined by the default value but an explicit enum number. +enum Version { + // proto3 requires the first enum value to be zero. + // We add this just to appease the compiler. + _START_VERSION = 0; + // The version field is always serialized and we will use it to store the + // version that the graph is generated from. This helps us set up version + // control. + // For the IR, we are using simple numbers starting with 0x00000001, + // which was the version we published on Oct 10, 2017. + IR_VERSION_2017_10_10 = 0x0000000000000001; + + // IR_VERSION 2 published on Oct 30, 2017 + // - Added type discriminator to AttributeProto to support proto3 users + IR_VERSION_2017_10_30 = 0x0000000000000002; + + // IR VERSION 3 published on Nov 3, 2017 + // - For operator versioning: + // - Added new message OperatorSetIdProto + // - Added opset_import in ModelProto + // - For vendor extensions, added domain in NodeProto + IR_VERSION_2017_11_3 = 0x0000000000000003; + + // IR VERSION 4 published on Jan 22, 2019 + // - Relax constraint that initializers should be a subset of graph inputs + // - Add type BFLOAT16 + IR_VERSION_2019_1_22 = 0x0000000000000004; + + // IR VERSION 5 published on March 18, 2019 + // - Add message TensorAnnotation. + // - Add quantization annotation in GraphProto to map tensor with its scale and zero point quantization parameters. + IR_VERSION_2019_3_18 = 0x0000000000000005; + + // IR VERSION 6 published on Sep 19, 2019 + // - Add support for sparse tensor constants stored in model. + // - Add message SparseTensorProto + // - Add sparse initializers + IR_VERSION_2019_9_19 = 0x0000000000000006; + + // IR VERSION 7 published on May 8, 2020 + // - Add support to allow function body graph to rely on multiple external opreator sets. + // - Add a list to promote inference graph's initializers to global and + // mutable variables. Global variables are visible in all graphs of the + // stored models. + // - Add message TrainingInfoProto to store initialization + // method and training algorithm. The execution of TrainingInfoProto + // can modify the values of mutable variables. + // - Implicitly add inference graph into each TrainingInfoProto's algorithm. + IR_VERSION_2020_5_8 = 0x0000000000000007; + + // IR VERSION 8 published on + // Introduce TypeProto.SparseTensor + // Introduce TypeProto.Optional + // Added a list of FunctionProtos local to the model + // Deprecated since_version and operator status from FunctionProto + IR_VERSION = 0x0000000000000008; + +} + +// Attributes +// +// A named attribute containing either singular float, integer, string, graph, +// and tensor values, or repeated float, integer, string, graph, and tensor values. +// An AttributeProto MUST contain the name field, and *only one* of the +// following content fields, effectively enforcing a C/C++ union equivalent. +message AttributeProto { + + // Note: this enum is structurally identical to the OpSchema::AttrType + // enum defined in schema.h. If you rev one, you likely need to rev the other. + enum AttributeType { + UNDEFINED = 0; + FLOAT = 1; + INT = 2; + STRING = 3; + TENSOR = 4; + GRAPH = 5; + SPARSE_TENSOR = 11; + TYPE_PROTO = 13; + + FLOATS = 6; + INTS = 7; + STRINGS = 8; + TENSORS = 9; + GRAPHS = 10; + SPARSE_TENSORS = 12; + TYPE_PROTOS = 14; + } + + // The name field MUST be present for this version of the IR. + string name = 1; // namespace Attribute + + // if ref_attr_name is not empty, ref_attr_name is the attribute name in parent function. + // In this case, this AttributeProto does not contain data, and it's a reference of attribute + // in parent scope. + // NOTE: This should ONLY be used in function (sub-graph). It's invalid to be used in main graph. + string ref_attr_name = 21; + + // A human-readable documentation for this attribute. Markdown is allowed. + string doc_string = 13; + + // The type field MUST be present for this version of the IR. + // For 0.0.1 versions of the IR, this field was not defined, and + // implementations needed to use has_field heuristics to determine + // which value field was in use. For IR_VERSION 0.0.2 or later, this + // field MUST be set and match the f|i|s|t|... field in use. This + // change was made to accommodate proto3 implementations. + AttributeType type = 20; // discriminator that indicates which field below is in use + + // Exactly ONE of the following fields must be present for this version of the IR + float f = 2; // float + int64 i = 3; // int + bytes s = 4; // UTF-8 string + TensorProto t = 5; // tensor value + GraphProto g = 6; // graph + SparseTensorProto sparse_tensor = 22; // sparse tensor value + // Do not use field below, it's deprecated. + // optional ValueProto v = 12; // value - subsumes everything but graph + TypeProto tp = 14; // type proto + + repeated float floats = 7; // list of floats + repeated int64 ints = 8; // list of ints + repeated bytes strings = 9; // list of UTF-8 strings + repeated TensorProto tensors = 10; // list of tensors + repeated GraphProto graphs = 11; // list of graph + repeated SparseTensorProto sparse_tensors = 23; // list of sparse tensors + repeated TypeProto type_protos = 15;// list of type protos +} + +// Defines information on value, including the name, the type, and +// the shape of the value. +message ValueInfoProto { + // This field MUST be present in this version of the IR. + string name = 1; // namespace Value + // This field MUST be present in this version of the IR for + // inputs and outputs of the top-level graph. + TypeProto type = 2; + // A human-readable documentation for this value. Markdown is allowed. + string doc_string = 3; +} + +// Nodes +// +// Computation graphs are made up of a DAG of nodes, which represent what is +// commonly called a "layer" or "pipeline stage" in machine learning frameworks. +// +// For example, it can be a node of type "Conv" that takes in an image, a filter +// tensor and a bias tensor, and produces the convolved output. +message NodeProto { + repeated string input = 1; // namespace Value + repeated string output = 2; // namespace Value + + // An optional identifier for this node in a graph. + // This field MAY be absent in ths version of the IR. + string name = 3; // namespace Node + + // The symbolic identifier of the Operator to execute. + string op_type = 4; // namespace Operator + // The domain of the OperatorSet that specifies the operator named by op_type. + string domain = 7; // namespace Domain + + // Additional named attributes. + repeated AttributeProto attribute = 5; + + // A human-readable documentation for this node. Markdown is allowed. + string doc_string = 6; +} + +// Training information +// TrainingInfoProto stores information for training a model. +// In particular, this defines two functionalities: an initialization-step +// and a training-algorithm-step. Initialization resets the model +// back to its original state as if no training has been performed. +// Training algorithm improves the model based on input data. +// +// The semantics of the initialization-step is that the initializers +// in ModelProto.graph and in TrainingInfoProto.algorithm are first +// initialized as specified by the initializers in the graph, and then +// updated by the "initialization_binding" in every instance in +// ModelProto.training_info. +// +// The field "algorithm" defines a computation graph which represents a +// training algorithm's step. After the execution of a +// TrainingInfoProto.algorithm, the initializers specified by "update_binding" +// may be immediately updated. If the targeted training algorithm contains +// consecutive update steps (such as block coordinate descent methods), +// the user needs to create a TrainingInfoProto for each step. +message TrainingInfoProto { + // This field describes a graph to compute the initial tensors + // upon starting the training process. Initialization graph has no input + // and can have multiple outputs. Usually, trainable tensors in neural + // networks are randomly initialized. To achieve that, for each tensor, + // the user can put a random number operator such as RandomNormal or + // RandomUniform in TrainingInfoProto.initialization.node and assign its + // random output to the specific tensor using "initialization_binding". + // This graph can also set the initializers in "algorithm" in the same + // TrainingInfoProto; a use case is resetting the number of training + // iteration to zero. + // + // By default, this field is an empty graph and its evaluation does not + // produce any output. Thus, no initializer would be changed by default. + GraphProto initialization = 1; + + // This field represents a training algorithm step. Given required inputs, + // it computes outputs to update initializers in its own or inference graph's + // initializer lists. In general, this field contains loss node, gradient node, + // optimizer node, increment of iteration count. + // + // An execution of the training algorithm step is performed by executing the + // graph obtained by combining the inference graph (namely "ModelProto.graph") + // and the "algorithm" graph. That is, the actual the actual + // input/initializer/output/node/value_info/sparse_initializer list of + // the training graph is the concatenation of + // "ModelProto.graph.input/initializer/output/node/value_info/sparse_initializer" + // and "algorithm.input/initializer/output/node/value_info/sparse_initializer" + // in that order. This combined graph must satisfy the normal ONNX conditions. + // Now, let's provide a visualization of graph combination for clarity. + // Let the inference graph (i.e., "ModelProto.graph") be + // tensor_a, tensor_b -> MatMul -> tensor_c -> Sigmoid -> tensor_d + // and the "algorithm" graph be + // tensor_d -> Add -> tensor_e + // The combination process results + // tensor_a, tensor_b -> MatMul -> tensor_c -> Sigmoid -> tensor_d -> Add -> tensor_e + // + // Notice that an input of a node in the "algorithm" graph may reference the + // output of a node in the inference graph (but not the other way round). Also, inference + // node cannot reference inputs of "algorithm". With these restrictions, inference graph + // can always be run independently without training information. + // + // By default, this field is an empty graph and its evaluation does not + // produce any output. Evaluating the default training step never + // update any initializers. + GraphProto algorithm = 2; + + // This field specifies the bindings from the outputs of "initialization" to + // some initializers in "ModelProto.graph.initializer" and + // the "algorithm.initializer" in the same TrainingInfoProto. + // See "update_binding" below for details. + // + // By default, this field is empty and no initializer would be changed + // by the execution of "initialization". + repeated StringStringEntryProto initialization_binding = 3; + + // Gradient-based training is usually an iterative procedure. In one gradient + // descent iteration, we apply + // + // x = x - r * g + // + // where "x" is the optimized tensor, "r" stands for learning rate, and "g" is + // gradient of "x" with respect to a chosen loss. To avoid adding assignments + // into the training graph, we split the update equation into + // + // y = x - r * g + // x = y + // + // The user needs to save "y = x - r * g" into TrainingInfoProto.algorithm. To + // tell that "y" should be assigned to "x", the field "update_binding" may + // contain a key-value pair of strings, "x" (key of StringStringEntryProto) + // and "y" (value of StringStringEntryProto). + // For a neural network with multiple trainable (mutable) tensors, there can + // be multiple key-value pairs in "update_binding". + // + // The initializers appears as keys in "update_binding" are considered + // mutable variables. This implies some behaviors + // as described below. + // + // 1. We have only unique keys in all "update_binding"s so that two + // variables may not have the same name. This ensures that one + // variable is assigned up to once. + // 2. The keys must appear in names of "ModelProto.graph.initializer" or + // "TrainingInfoProto.algorithm.initializer". + // 3. The values must be output names of "algorithm" or "ModelProto.graph.output". + // 4. Mutable variables are initialized to the value specified by the + // corresponding initializer, and then potentially updated by + // "initializer_binding"s and "update_binding"s in "TrainingInfoProto"s. + // + // This field usually contains names of trainable tensors + // (in ModelProto.graph), optimizer states such as momentums in advanced + // stochastic gradient methods (in TrainingInfoProto.graph), + // and number of training iterations (in TrainingInfoProto.graph). + // + // By default, this field is empty and no initializer would be changed + // by the execution of "algorithm". + repeated StringStringEntryProto update_binding = 4; +} + +// Models +// +// ModelProto is a top-level file/container format for bundling a ML model and +// associating its computation graph with metadata. +// +// The semantics of the model are described by the associated GraphProto's. +message ModelProto { + // The version of the IR this model targets. See Version enum above. + // This field MUST be present. + int64 ir_version = 1; + + // The OperatorSets this model relies on. + // All ModelProtos MUST have at least one entry that + // specifies which version of the ONNX OperatorSet is + // being imported. + // + // All nodes in the ModelProto's graph will bind against the operator + // with the same-domain/same-op_type operator with the HIGHEST version + // in the referenced operator sets. + repeated OperatorSetIdProto opset_import = 8; + + // The name of the framework or tool used to generate this model. + // This field SHOULD be present to indicate which implementation/tool/framework + // emitted the model. + string producer_name = 2; + + // The version of the framework or tool used to generate this model. + // This field SHOULD be present to indicate which implementation/tool/framework + // emitted the model. + string producer_version = 3; + + // Domain name of the model. + // We use reverse domain names as name space indicators. For example: + // `com.facebook.fair` or `com.microsoft.cognitiveservices` + // + // Together with `model_version` and GraphProto.name, this forms the unique identity of + // the graph. + string domain = 4; + + // The version of the graph encoded. See Version enum below. + int64 model_version = 5; + + // A human-readable documentation for this model. Markdown is allowed. + string doc_string = 6; + + // The parameterized graph that is evaluated to execute the model. + GraphProto graph = 7; + + // Named metadata values; keys should be distinct. + repeated StringStringEntryProto metadata_props = 14; + + // Training-specific information. Sequentially executing all stored + // `TrainingInfoProto.algorithm`s and assigning their outputs following + // the corresponding `TrainingInfoProto.update_binding`s is one training + // iteration. Similarly, to initialize the model + // (as if training hasn't happened), the user should sequentially execute + // all stored `TrainingInfoProto.initialization`s and assigns their outputs + // using `TrainingInfoProto.initialization_binding`s. + // + // If this field is empty, the training behavior of the model is undefined. + repeated TrainingInfoProto training_info = 20; + + // A list of function protos local to the model. + // + // Name of the function "FunctionProto.name" should be unique within the domain "FunctionProto.domain". + // In case of any conflicts the behavior (whether the model local functions are given higher priority, + // or standard opserator sets are given higher priotity or this is treated as error) is defined by + // the runtimes. + // + // The operator sets imported by FunctionProto should be compatible with the ones + // imported by ModelProto and other model local FunctionProtos. + // Example, if same operator set say 'A' is imported by a FunctionProto and ModelProto + // or by 2 FunctionProtos then versions for the operator set may be different but, + // the operator schema returned for op_type, domain, version combination + // for both the versions should be same for every node in the function body. + // + // One FunctionProto can reference other FunctionProto in the model, however, recursive reference + // is not allowed. + repeated FunctionProto functions = 25; +}; + +// StringStringEntryProto follows the pattern for cross-proto-version maps. +// See https://developers.google.com/protocol-buffers/docs/proto3#maps +message StringStringEntryProto { + string key = 1; + string value= 2; +}; + +message TensorAnnotation { + string tensor_name = 1; + // pairs to annotate tensor specified by above. + // The keys used in the mapping below must be pre-defined in ONNX spec. + // For example, for 8-bit linear quantization case, 'SCALE_TENSOR', 'ZERO_POINT_TENSOR' will be pre-defined as + // quantization parameter keys. + repeated StringStringEntryProto quant_parameter_tensor_names = 2; +} + + + +// Graphs +// +// A graph defines the computational logic of a model and is comprised of a parameterized +// list of nodes that form a directed acyclic graph based on their inputs and outputs. +// This is the equivalent of the "network" or "graph" in many deep learning +// frameworks. +message GraphProto { + // The nodes in the graph, sorted topologically. + repeated NodeProto node = 1; + + // The name of the graph. + string name = 2; // namespace Graph + + // A list of named tensor values, used to specify constant inputs of the graph. + // Each initializer (both TensorProto as well SparseTensorProto) MUST have a name. + // The name MUST be unique across both initializer and sparse_initializer, + // but the name MAY also appear in the input list. + repeated TensorProto initializer = 5; + + // Initializers (see above) stored in sparse format. + repeated SparseTensorProto sparse_initializer = 15; + + // A human-readable documentation for this graph. Markdown is allowed. + string doc_string = 10; + + // The inputs and outputs of the graph. + repeated ValueInfoProto input = 11; + repeated ValueInfoProto output = 12; + + // Information for the values in the graph. The ValueInfoProto.name's + // must be distinct. It is optional for a value to appear in value_info list. + repeated ValueInfoProto value_info = 13; + + // This field carries information to indicate the mapping among a tensor and its + // quantization parameter tensors. For example: + // For tensor 'a', it may have {'SCALE_TENSOR', 'a_scale'} and {'ZERO_POINT_TENSOR', 'a_zero_point'} annotated, + // which means, tensor 'a_scale' and tensor 'a_zero_point' are scale and zero point of tensor 'a' in the model. + repeated TensorAnnotation quantization_annotation = 14; + + // DO NOT USE the following fields, they were deprecated from earlier versions. + // repeated string input = 3; + // repeated string output = 4; + // optional int64 ir_version = 6; + // optional int64 producer_version = 7; + // optional string producer_tag = 8; + // optional string domain = 9; +} + +// Tensors +// +// A serialized tensor value. +message TensorProto { + enum DataType { + UNDEFINED = 0; + // Basic types. + FLOAT = 1; // float + UINT8 = 2; // uint8_t + INT8 = 3; // int8_t + UINT16 = 4; // uint16_t + INT16 = 5; // int16_t + INT32 = 6; // int32_t + INT64 = 7; // int64_t + STRING = 8; // string + BOOL = 9; // bool + + // IEEE754 half-precision floating-point format (16 bits wide). + // This format has 1 sign bit, 5 exponent bits, and 10 mantissa bits. + FLOAT16 = 10; + + DOUBLE = 11; + UINT32 = 12; + UINT64 = 13; + COMPLEX64 = 14; // complex with float32 real and imaginary components + COMPLEX128 = 15; // complex with float64 real and imaginary components + + // Non-IEEE floating-point format based on IEEE754 single-precision + // floating-point number truncated to 16 bits. + // This format has 1 sign bit, 8 exponent bits, and 7 mantissa bits. + BFLOAT16 = 16; + + // Future extensions go here. + } + + // The shape of the tensor. + repeated int64 dims = 1; + + // The data type of the tensor. + // This field MUST have a valid TensorProto.DataType value + int32 data_type = 2; + + // For very large tensors, we may want to store them in chunks, in which + // case the following fields will specify the segment that is stored in + // the current TensorProto. + message Segment { + int64 begin = 1; + int64 end = 2; + } + Segment segment = 3; + + // Tensor content must be organized in row-major order. + // + // Depending on the data_type field, exactly one of the fields below with + // name ending in _data is used to store the elements of the tensor. + + // For float and complex64 values + // Complex64 tensors are encoded as a single array of floats, + // with the real components appearing in odd numbered positions, + // and the corresponding imaginary component appearing in the + // subsequent even numbered position. (e.g., [1.0 + 2.0i, 3.0 + 4.0i] + // is encoded as [1.0, 2.0 ,3.0 ,4.0] + // When this field is present, the data_type field MUST be FLOAT or COMPLEX64. + repeated float float_data = 4 [packed = true]; + + // For int32, uint8, int8, uint16, int16, bool, and float16 values + // float16 values must be bit-wise converted to an uint16_t prior + // to writing to the buffer. + // When this field is present, the data_type field MUST be + // INT32, INT16, INT8, UINT16, UINT8, BOOL, or FLOAT16 + repeated int32 int32_data = 5 [packed = true]; + + // For strings. + // Each element of string_data is a UTF-8 encoded Unicode + // string. No trailing null, no leading BOM. The protobuf "string" + // scalar type is not used to match ML community conventions. + // When this field is present, the data_type field MUST be STRING + repeated bytes string_data = 6; + + // For int64. + // When this field is present, the data_type field MUST be INT64 + repeated int64 int64_data = 7 [packed = true]; + + // Optionally, a name for the tensor. + string name = 8; // namespace Value + + // A human-readable documentation for this tensor. Markdown is allowed. + string doc_string = 12; + + // Serializations can either use one of the fields above, or use this + // raw bytes field. The only exception is the string case, where one is + // required to store the content in the repeated bytes string_data field. + // + // When this raw_data field is used to store tensor value, elements MUST + // be stored in as fixed-width, little-endian order. + // Floating-point data types MUST be stored in IEEE 754 format. + // Complex64 elements must be written as two consecutive FLOAT values, real component first. + // Complex128 elements must be written as two consecutive DOUBLE values, real component first. + // Boolean type MUST be written one byte per tensor element (00000001 for true, 00000000 for false). + // + // Note: the advantage of specific field rather than the raw_data field is + // that in some cases (e.g. int data), protobuf does a better packing via + // variable length storage, and may lead to smaller binary footprint. + // When this field is present, the data_type field MUST NOT be STRING or UNDEFINED + bytes raw_data = 9; + + // Data can be stored inside the protobuf file using type-specific fields or raw_data. + // Alternatively, raw bytes data can be stored in an external file, using the external_data field. + // external_data stores key-value pairs describing data location. Recognized keys are: + // - "location" (required) - POSIX filesystem path relative to the directory where the ONNX + // protobuf model was stored + // - "offset" (optional) - position of byte at which stored data begins. Integer stored as string. + // Offset values SHOULD be multiples 4096 (page size) to enable mmap support. + // - "length" (optional) - number of bytes containing data. Integer stored as string. + // - "checksum" (optional) - SHA1 digest of file specified in under 'location' key. + repeated StringStringEntryProto external_data = 13; + + // Location of the data for this tensor. MUST be one of: + // - DEFAULT - data stored inside the protobuf message. Data is stored in raw_data (if set) otherwise in type-specified field. + // - EXTERNAL - data stored in an external location as described by external_data field. + enum DataLocation { + DEFAULT = 0; + EXTERNAL = 1; + } + + // If value not set, data is stored in raw_data (if set) otherwise in type-specified field. + DataLocation data_location = 14; + + // For double + // Complex128 tensors are encoded as a single array of doubles, + // with the real components appearing in odd numbered positions, + // and the corresponding imaginary component appearing in the + // subsequent even numbered position. (e.g., [1.0 + 2.0i, 3.0 + 4.0i] + // is encoded as [1.0, 2.0 ,3.0 ,4.0] + // When this field is present, the data_type field MUST be DOUBLE or COMPLEX128 + repeated double double_data = 10 [packed = true]; + + // For uint64 and uint32 values + // When this field is present, the data_type field MUST be + // UINT32 or UINT64 + repeated uint64 uint64_data = 11 [packed = true]; +} + +// A serialized sparse-tensor value +message SparseTensorProto { + // The sequence of non-default values are encoded as a tensor of shape [NNZ]. + // The default-value is zero for numeric tensors, and empty-string for string tensors. + // values must have a non-empty name present which serves as a name for SparseTensorProto + // when used in sparse_initializer list. + TensorProto values = 1; + + // The indices of the non-default values, which may be stored in one of two formats. + // (a) Indices can be a tensor of shape [NNZ, rank] with the [i,j]-th value + // corresponding to the j-th index of the i-th value (in the values tensor). + // (b) Indices can be a tensor of shape [NNZ], in which case the i-th value + // must be the linearized-index of the i-th value (in the values tensor). + // The linearized-index can be converted into an index tuple (k_1,...,k_rank) + // using the shape provided below. + // The indices must appear in ascending order without duplication. + // In the first format, the ordering is lexicographic-ordering: + // e.g., index-value [1,4] must appear before [2,1] + TensorProto indices = 2; + + // The shape of the underlying dense-tensor: [dim_1, dim_2, ... dim_rank] + repeated int64 dims = 3; +} + +// Defines a tensor shape. A dimension can be either an integer value +// or a symbolic variable. A symbolic variable represents an unknown +// dimension. +message TensorShapeProto { + message Dimension { + oneof value { + int64 dim_value = 1; + string dim_param = 2; // namespace Shape + }; + // Standard denotation can optionally be used to denote tensor + // dimensions with standard semantic descriptions to ensure + // that operations are applied to the correct axis of a tensor. + // Refer to https://github.com/onnx/onnx/blob/master/docs/DimensionDenotation.md#denotation-definition + // for pre-defined dimension denotations. + string denotation = 3; + }; + repeated Dimension dim = 1; +} + +// Types +// +// The standard ONNX data types. +message TypeProto { + + message Tensor { + // This field MUST NOT have the value of UNDEFINED + // This field MUST have a valid TensorProto.DataType value + // This field MUST be present for this version of the IR. + int32 elem_type = 1; + TensorShapeProto shape = 2; + } + + // repeated T + message Sequence { + // The type and optional shape of each element of the sequence. + // This field MUST be present for this version of the IR. + TypeProto elem_type = 1; + }; + + // map + message Map { + // This field MUST have a valid TensorProto.DataType value + // This field MUST be present for this version of the IR. + // This field MUST refer to an integral type ([U]INT{8|16|32|64}) or STRING + int32 key_type = 1; + // This field MUST be present for this version of the IR. + TypeProto value_type = 2; + }; + + // wrapper for Tensor, Sequence, or Map + message Optional { + // The type and optional shape of the element wrapped. + // This field MUST be present for this version of the IR. + // Possible values correspond to OptionalProto.DataType enum + TypeProto elem_type = 1; + }; + + + message SparseTensor { + // This field MUST NOT have the value of UNDEFINED + // This field MUST have a valid TensorProto.DataType value + // This field MUST be present for this version of the IR. + int32 elem_type = 1; + TensorShapeProto shape = 2; + } + + + oneof value { + // The type of a tensor. + Tensor tensor_type = 1; + + // NOTE: DNN-only implementations of ONNX MAY elect to not support non-tensor values + // as input and output to graphs and nodes. These types are needed to naturally + // support classical ML operators. DNN operators SHOULD restrict their input + // and output types to tensors. + + // The type of a sequence. + Sequence sequence_type = 4; + + // The type of a map. + Map map_type = 5; + + // The type of an optional. + Optional optional_type = 9; + + + // Type of the sparse tensor + SparseTensor sparse_tensor_type = 8; + + } + + // An optional denotation can be used to denote the whole + // type with a standard semantic description as to what is + // stored inside. Refer to https://github.com/onnx/onnx/blob/master/docs/TypeDenotation.md#type-denotation-definition + // for pre-defined type denotations. + string denotation = 6; +} + +// Operator Sets +// +// OperatorSets are uniquely identified by a (domain, opset_version) pair. +message OperatorSetIdProto { + // The domain of the operator set being identified. + // The empty string ("") or absence of this field implies the operator + // set that is defined as part of the ONNX specification. + // This field MUST be present in this version of the IR when referring to any other operator set. + string domain = 1; + + // The version of the operator set being identified. + // This field MUST be present in this version of the IR. + int64 version = 2; +} + +// Operator/function status. +enum OperatorStatus { + EXPERIMENTAL = 0; + STABLE = 1; +} + +message FunctionProto { + // The name of the function, similar usage of op_type in OperatorProto. + // Combined with FunctionProto.domain, this forms the unique identity of + // the FunctionProto. + string name = 1; + + // Deprecated since IR Version 8 + // optional int64 since_version = 2; + reserved 2; + reserved "since_version"; + + // Deprecated since IR Version 8 + // optional OperatorStatus status = 3; + reserved 3; + reserved "status"; + + // The inputs and outputs of the function. + repeated string input = 4; + repeated string output = 5; + + // The attributes of the function. + repeated string attribute = 6; + + // The nodes in the function. + repeated NodeProto node = 7; + // A human-readable documentation for this function. Markdown is allowed. + string doc_string = 8; + + // The OperatorSets this function body (graph) relies on. + // + // All nodes in the function body (graph) will bind against the operator + // with the same-domain/same-op_type operator with the HIGHEST version + // in the referenced operator sets. This means at most one version can be relied + // for one domain. + // + // The operator sets imported by FunctionProto should be compatible with the ones + // imported by ModelProto. Example, if same operator set say 'A' is imported by FunctionProto + // and ModelProto then versions for the operator set may be different but, + // the operator schema returned for op_type, domain, version combination + // for both the versions should be same. + + repeated OperatorSetIdProto opset_import = 9; + + // The domain which this function belongs to. Combined with FunctionProto.name, this forms the unique identity of + // the FunctionProto. + string domain = 10; +} + + +// For using protobuf-lite +option optimize_for = LITE_RUNTIME; + diff --git a/lib/Protobuf/Impl.fx b/lib/Protobuf/Impl.fx new file mode 100644 index 0000000..aaaf28f --- /dev/null +++ b/lib/Protobuf/Impl.fx @@ -0,0 +1,3671 @@ +@ccode { + +/* + * Copyright (c) 2008-2015, Dave Benson and the protobuf-c authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \file + * Support library for `protoc-c` generated code. + * + * This file implements the public API used by the code generated + * by `protoc-c`. + * + * \authors Dave Benson and the protobuf-c authors + * + * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. + */ + +/** + * \todo 64-BIT OPTIMIZATION: certain implementations use 32-bit math + * even on 64-bit platforms (uint64_size, uint64_pack, parse_uint64). + * + * \todo Use size_t consistently. + */ + +#include /* for malloc, free */ +#include /* for strcmp, strlen, memcpy, memmove, memset */ + +#include "protobuf-c.h" + +#define TRUE 1 +#define FALSE 0 + +#define PROTOBUF_C__ASSERT_NOT_REACHED() assert(0) + +/* Workaround for Microsoft compilers. */ +#ifdef _MSC_VER +# define inline __inline +#endif + +/** + * \defgroup internal Internal functions and macros + * + * These are not exported by the library but are useful to developers working + * on `libprotobuf-c` itself. + */ + +/** + * \defgroup macros Utility macros for manipulating structures + * + * Macros and constants used to manipulate the base "classes" generated by + * `protobuf-c`. They also define limits and check correctness. + * + * \ingroup internal + * @{ + */ + +/** The maximum length of a 64-bit integer in varint encoding. */ +#define MAX_UINT64_ENCODED_SIZE 10 + +#ifndef PROTOBUF_C_UNPACK_ERROR +# define PROTOBUF_C_UNPACK_ERROR(...) +#endif + +#if !defined(_WIN32) || !defined(PROTOBUF_C_USE_SHARED_LIB) +const char protobuf_c_empty_string[] = ""; +#endif + +/** + * Internal `ProtobufCMessage` manipulation macro. + * + * Base macro for manipulating a `ProtobufCMessage`. Used by STRUCT_MEMBER() and + * STRUCT_MEMBER_PTR(). + */ +#define STRUCT_MEMBER_P(struct_p, struct_offset) \ + ((void *) ((uint8_t *) (struct_p) + (struct_offset))) + +/** + * Return field in a `ProtobufCMessage` based on offset. + * + * Take a pointer to a `ProtobufCMessage` and find the field at the offset. + * Cast it to the passed type. + */ +#define STRUCT_MEMBER(member_type, struct_p, struct_offset) \ + (*(member_type *) STRUCT_MEMBER_P((struct_p), (struct_offset))) + +/** + * Return field in a `ProtobufCMessage` based on offset. + * + * Take a pointer to a `ProtobufCMessage` and find the field at the offset. Cast + * it to a pointer to the passed type. + */ +#define STRUCT_MEMBER_PTR(member_type, struct_p, struct_offset) \ + ((member_type *) STRUCT_MEMBER_P((struct_p), (struct_offset))) + +/* Assertions for magic numbers. */ + +#define ASSERT_IS_ENUM_DESCRIPTOR(desc) \ + assert((desc)->magic == PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC) + +#define ASSERT_IS_MESSAGE_DESCRIPTOR(desc) \ + assert((desc)->magic == PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC) + +#define ASSERT_IS_MESSAGE(message) \ + ASSERT_IS_MESSAGE_DESCRIPTOR((message)->descriptor) + +#define ASSERT_IS_SERVICE_DESCRIPTOR(desc) \ + assert((desc)->magic == PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC) + +/**@}*/ + +/* --- version --- */ + +const char * +protobuf_c_version(void) +{ + return PROTOBUF_C_VERSION; +} + +uint32_t +protobuf_c_version_number(void) +{ + return PROTOBUF_C_VERSION_NUMBER; +} + +/* --- allocator --- */ + +static void * +system_alloc(void *allocator_data, size_t size) +{ + (void)allocator_data; + return malloc(size); +} + +static void +system_free(void *allocator_data, void *data) +{ + (void)allocator_data; + free(data); +} + +static inline void * +do_alloc(ProtobufCAllocator *allocator, size_t size) +{ + return allocator->alloc(allocator->allocator_data, size); +} + +static inline void +do_free(ProtobufCAllocator *allocator, void *data) +{ + if (data != NULL) + allocator->free(allocator->allocator_data, data); +} + +/* + * This allocator uses the system's malloc() and free(). It is the default + * allocator used if NULL is passed as the ProtobufCAllocator to an exported + * function. + */ +static ProtobufCAllocator protobuf_c__allocator = { + .alloc = &system_alloc, + .free = &system_free, + .allocator_data = NULL, +}; + +/* === buffer-simple === */ + +void +protobuf_c_buffer_simple_append(ProtobufCBuffer *buffer, + size_t len, const uint8_t *data) +{ + ProtobufCBufferSimple *simp = (ProtobufCBufferSimple *) buffer; + size_t new_len = simp->len + len; + + if (new_len > simp->alloced) { + ProtobufCAllocator *allocator = simp->allocator; + size_t new_alloced = simp->alloced * 2; + uint8_t *new_data; + + if (allocator == NULL) + allocator = &protobuf_c__allocator; + while (new_alloced < new_len) + new_alloced += new_alloced; + new_data = do_alloc(allocator, new_alloced); + if (!new_data) + return; + memcpy(new_data, simp->data, simp->len); + if (simp->must_free_data) + do_free(allocator, simp->data); + else + simp->must_free_data = TRUE; + simp->data = new_data; + simp->alloced = new_alloced; + } + memcpy(simp->data + simp->len, data, len); + simp->len = new_len; +} + +/** + * \defgroup packedsz protobuf_c_message_get_packed_size() implementation + * + * Routines mainly used by protobuf_c_message_get_packed_size(). + * + * \ingroup internal + * @{ + */ + +/** + * Return the number of bytes required to store the tag for the field. Includes + * 3 bits for the wire-type, and a single bit that denotes the end-of-tag. + * + * \param number + * Field tag to encode. + * \return + * Number of bytes required. + */ +static inline size_t +get_tag_size(uint32_t number) +{ + if (number < (1UL << 4)) { + return 1; + } else if (number < (1UL << 11)) { + return 2; + } else if (number < (1UL << 18)) { + return 3; + } else if (number < (1UL << 25)) { + return 4; + } else { + return 5; + } +} + +/** + * Return the number of bytes required to store a variable-length unsigned + * 32-bit integer in base-128 varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +uint32_size(uint32_t v) +{ + if (v < (1UL << 7)) { + return 1; + } else if (v < (1UL << 14)) { + return 2; + } else if (v < (1UL << 21)) { + return 3; + } else if (v < (1UL << 28)) { + return 4; + } else { + return 5; + } +} + +/** + * Return the number of bytes required to store a variable-length signed 32-bit + * integer in base-128 varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +int32_size(int32_t v) +{ + if (v < 0) { + return 10; + } else if (v < (1L << 7)) { + return 1; + } else if (v < (1L << 14)) { + return 2; + } else if (v < (1L << 21)) { + return 3; + } else if (v < (1L << 28)) { + return 4; + } else { + return 5; + } +} + +/** + * Return the ZigZag-encoded 32-bit unsigned integer form of a 32-bit signed + * integer. + * + * \param v + * Value to encode. + * \return + * ZigZag encoded integer. + */ +static inline uint32_t +zigzag32(int32_t v) +{ + // Note: the right-shift must be arithmetic + // Note: left shift must be unsigned because of overflow + return ((uint32_t)(v) << 1) ^ (uint32_t)(v >> 31); +} + +/** + * Return the number of bytes required to store a signed 32-bit integer, + * converted to an unsigned 32-bit integer with ZigZag encoding, using base-128 + * varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +sint32_size(int32_t v) +{ + return uint32_size(zigzag32(v)); +} + +/** + * Return the number of bytes required to store a 64-bit unsigned integer in + * base-128 varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +uint64_size(uint64_t v) +{ + uint32_t upper_v = (uint32_t) (v >> 32); + + if (upper_v == 0) { + return uint32_size((uint32_t) v); + } else if (upper_v < (1UL << 3)) { + return 5; + } else if (upper_v < (1UL << 10)) { + return 6; + } else if (upper_v < (1UL << 17)) { + return 7; + } else if (upper_v < (1UL << 24)) { + return 8; + } else if (upper_v < (1UL << 31)) { + return 9; + } else { + return 10; + } +} + +/** + * Return the ZigZag-encoded 64-bit unsigned integer form of a 64-bit signed + * integer. + * + * \param v + * Value to encode. + * \return + * ZigZag encoded integer. + */ +static inline uint64_t +zigzag64(int64_t v) +{ + // Note: the right-shift must be arithmetic + // Note: left shift must be unsigned because of overflow + return ((uint64_t)(v) << 1) ^ (uint64_t)(v >> 63); +} + +/** + * Return the number of bytes required to store a signed 64-bit integer, + * converted to an unsigned 64-bit integer with ZigZag encoding, using base-128 + * varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +sint64_size(int64_t v) +{ + return uint64_size(zigzag64(v)); +} + +/** + * Calculate the serialized size of a single required message field, including + * the space needed by the preceding tag. + * + * \param field + * Field descriptor for member. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +required_field_get_packed_size(const ProtobufCFieldDescriptor *field, + const void *member) +{ + size_t rv = get_tag_size(field->id); + + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + return rv + sint32_size(*(const int32_t *) member); + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + return rv + int32_size(*(const int32_t *) member); + case PROTOBUF_C_TYPE_UINT32: + return rv + uint32_size(*(const uint32_t *) member); + case PROTOBUF_C_TYPE_SINT64: + return rv + sint64_size(*(const int64_t *) member); + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + return rv + uint64_size(*(const uint64_t *) member); + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + return rv + 4; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + return rv + 8; + case PROTOBUF_C_TYPE_BOOL: + return rv + 1; + case PROTOBUF_C_TYPE_FLOAT: + return rv + 4; + case PROTOBUF_C_TYPE_DOUBLE: + return rv + 8; + case PROTOBUF_C_TYPE_STRING: { + const char *str = *(char * const *) member; + size_t len = str ? strlen(str) : 0; + return rv + uint32_size(len) + len; + } + case PROTOBUF_C_TYPE_BYTES: { + size_t len = ((const ProtobufCBinaryData *) member)->len; + return rv + uint32_size(len) + len; + } + case PROTOBUF_C_TYPE_MESSAGE: { + const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member; + size_t subrv = msg ? protobuf_c_message_get_packed_size(msg) : 0; + return rv + uint32_size(subrv) + subrv; + } + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Calculate the serialized size of a single oneof message field, including + * the space needed by the preceding tag. Returns 0 if the oneof field isn't + * selected or is not set. + * + * \param field + * Field descriptor for member. + * \param oneof_case + * Enum value that selects the field in the oneof. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +oneof_field_get_packed_size(const ProtobufCFieldDescriptor *field, + uint32_t oneof_case, + const void *member) +{ + if (oneof_case != field->id) { + return 0; + } + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } + return required_field_get_packed_size(field, member); +} + +/** + * Calculate the serialized size of a single optional message field, including + * the space needed by the preceding tag. Returns 0 if the optional field isn't + * set. + * + * \param field + * Field descriptor for member. + * \param has + * True if the field exists, false if not. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +optional_field_get_packed_size(const ProtobufCFieldDescriptor *field, + const protobuf_c_boolean has, + const void *member) +{ + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } else { + if (!has) + return 0; + } + return required_field_get_packed_size(field, member); +} + +static protobuf_c_boolean +field_is_zeroish(const ProtobufCFieldDescriptor *field, + const void *member) +{ + protobuf_c_boolean ret = FALSE; + + switch (field->type) { + case PROTOBUF_C_TYPE_BOOL: + ret = (0 == *(const protobuf_c_boolean *) member); + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + ret = (0 == *(const uint32_t *) member); + break; + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + ret = (0 == *(const uint64_t *) member); + break; + case PROTOBUF_C_TYPE_FLOAT: + ret = (0 == *(const float *) member); + break; + case PROTOBUF_C_TYPE_DOUBLE: + ret = (0 == *(const double *) member); + break; + case PROTOBUF_C_TYPE_STRING: + ret = (NULL == *(const char * const *) member) || + ('\0' == **(const char * const *) member); + break; + case PROTOBUF_C_TYPE_BYTES: + case PROTOBUF_C_TYPE_MESSAGE: + ret = (NULL == *(const void * const *) member); + break; + default: + ret = TRUE; + break; + } + + return ret; +} + +/** + * Calculate the serialized size of a single unlabeled message field, including + * the space needed by the preceding tag. Returns 0 if the field isn't set or + * if it is set to a "zeroish" value (null pointer or 0 for numerical values). + * Unlabeled fields are supported only in proto3. + * + * \param field + * Field descriptor for member. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +unlabeled_field_get_packed_size(const ProtobufCFieldDescriptor *field, + const void *member) +{ + if (field_is_zeroish(field, member)) + return 0; + return required_field_get_packed_size(field, member); +} + +/** + * Calculate the serialized size of repeated message fields, which may consist + * of any number of values (including 0). Includes the space needed by the + * preceding tags (as needed). + * + * \param field + * Field descriptor for member. + * \param count + * Number of repeated field members. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +repeated_field_get_packed_size(const ProtobufCFieldDescriptor *field, + size_t count, const void *member) +{ + size_t header_size; + size_t rv = 0; + unsigned i; + void *array = *(void * const *) member; + + if (count == 0) + return 0; + header_size = get_tag_size(field->id); + if (0 == (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) + header_size *= count; + + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + for (i = 0; i < count; i++) + rv += sint32_size(((int32_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + for (i = 0; i < count; i++) + rv += int32_size(((int32_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_UINT32: + for (i = 0; i < count; i++) + rv += uint32_size(((uint32_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_SINT64: + for (i = 0; i < count; i++) + rv += sint64_size(((int64_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + for (i = 0; i < count; i++) + rv += uint64_size(((uint64_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + rv += 4 * count; + break; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + rv += 8 * count; + break; + case PROTOBUF_C_TYPE_BOOL: + rv += count; + break; + case PROTOBUF_C_TYPE_STRING: + for (i = 0; i < count; i++) { + size_t len = strlen(((char **) array)[i]); + rv += uint32_size(len) + len; + } + break; + case PROTOBUF_C_TYPE_BYTES: + for (i = 0; i < count; i++) { + size_t len = ((ProtobufCBinaryData *) array)[i].len; + rv += uint32_size(len) + len; + } + break; + case PROTOBUF_C_TYPE_MESSAGE: + for (i = 0; i < count; i++) { + size_t len = protobuf_c_message_get_packed_size( + ((ProtobufCMessage **) array)[i]); + rv += uint32_size(len) + len; + } + break; + } + + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) + header_size += uint32_size(rv); + return header_size + rv; +} + +/** + * Calculate the serialized size of an unknown field, i.e. one that is passed + * through mostly uninterpreted. This is required for forward compatibility if + * new fields are added to the message descriptor. + * + * \param field + * Unknown field type. + * \return + * Number of bytes required. + */ +static inline size_t +unknown_field_get_packed_size(const ProtobufCMessageUnknownField *field) +{ + return get_tag_size(field->tag) + field->len; +} + +/**@}*/ + +/* + * Calculate the serialized size of the message. + */ +size_t protobuf_c_message_get_packed_size(const ProtobufCMessage *message) +{ + unsigned i; + size_t rv = 0; + + ASSERT_IS_MESSAGE(message); + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *field = + message->descriptor->fields + i; + const void *member = + ((const char *) message) + field->offset; + const void *qmember = + ((const char *) message) + field->quantifier_offset; + + if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + rv += required_field_get_packed_size(field, member); + } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || + field->label == PROTOBUF_C_LABEL_NONE) && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { + rv += oneof_field_get_packed_size( + field, + *(const uint32_t *) qmember, + member + ); + } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { + rv += optional_field_get_packed_size( + field, + *(protobuf_c_boolean *) qmember, + member + ); + } else if (field->label == PROTOBUF_C_LABEL_NONE) { + rv += unlabeled_field_get_packed_size( + field, + member + ); + } else { + rv += repeated_field_get_packed_size( + field, + *(const size_t *) qmember, + member + ); + } + } + for (i = 0; i < message->n_unknown_fields; i++) + rv += unknown_field_get_packed_size(&message->unknown_fields[i]); + return rv; +} + +/** + * \defgroup pack protobuf_c_message_pack() implementation + * + * Routines mainly used by protobuf_c_message_pack(). + * + * \ingroup internal + * @{ + */ + +/** + * Pack an unsigned 32-bit integer in base-128 varint encoding and return the + * number of bytes written, which must be 5 or less. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +uint32_pack(uint32_t value, uint8_t *out) +{ + unsigned rv = 0; + + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + } + } + } + } + /* assert: value<128 */ + out[rv++] = value; + return rv; +} + +/** + * Pack a signed 32-bit integer and return the number of bytes written. + * Negative numbers are encoded as two's complement 64-bit integers. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +int32_pack(int32_t value, uint8_t *out) +{ + if (value < 0) { + out[0] = value | 0x80; + out[1] = (value >> 7) | 0x80; + out[2] = (value >> 14) | 0x80; + out[3] = (value >> 21) | 0x80; + out[4] = (value >> 28) | 0x80; + out[5] = out[6] = out[7] = out[8] = 0xff; + out[9] = 0x01; + return 10; + } else { + return uint32_pack(value, out); + } +} + +/** + * Pack a signed 32-bit integer using ZigZag encoding and return the number of + * bytes written. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +sint32_pack(int32_t value, uint8_t *out) +{ + return uint32_pack(zigzag32(value), out); +} + +/** + * Pack a 64-bit unsigned integer using base-128 varint encoding and return the + * number of bytes written. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +uint64_pack(uint64_t value, uint8_t *out) +{ + uint32_t hi = (uint32_t) (value >> 32); + uint32_t lo = (uint32_t) value; + unsigned rv; + + if (hi == 0) + return uint32_pack((uint32_t) lo, out); + out[0] = (lo) | 0x80; + out[1] = (lo >> 7) | 0x80; + out[2] = (lo >> 14) | 0x80; + out[3] = (lo >> 21) | 0x80; + if (hi < 8) { + out[4] = (hi << 4) | (lo >> 28); + return 5; + } else { + out[4] = ((hi & 7) << 4) | (lo >> 28) | 0x80; + hi >>= 3; + } + rv = 5; + while (hi >= 128) { + out[rv++] = hi | 0x80; + hi >>= 7; + } + out[rv++] = hi; + return rv; +} + +/** + * Pack a 64-bit signed integer in ZigZag encoding and return the number of + * bytes written. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +sint64_pack(int64_t value, uint8_t *out) +{ + return uint64_pack(zigzag64(value), out); +} + +/** + * Pack a 32-bit quantity in little-endian byte order. Used for protobuf wire + * types fixed32, sfixed32, float. Similar to "htole32". + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +fixed32_pack(uint32_t value, void *out) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, &value, 4); +#else + uint8_t *buf = out; + + buf[0] = value; + buf[1] = value >> 8; + buf[2] = value >> 16; + buf[3] = value >> 24; +#endif + return 4; +} + +/** + * Pack a 64-bit quantity in little-endian byte order. Used for protobuf wire + * types fixed64, sfixed64, double. Similar to "htole64". + * + * \todo The big-endian impl is really only good for 32-bit machines, a 64-bit + * version would be appreciated, plus a way to decide to use 64-bit math where + * convenient. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +fixed64_pack(uint64_t value, void *out) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, &value, 8); +#else + fixed32_pack(value, out); + fixed32_pack(value >> 32, ((char *) out) + 4); +#endif + return 8; +} + +/** + * Pack a boolean value as an integer and return the number of bytes written. + * + * \todo Perhaps on some platforms *out = !!value would be a better impl, b/c + * that is idiomatic C++ in some STL implementations. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +boolean_pack(protobuf_c_boolean value, uint8_t *out) +{ + *out = value ? TRUE : FALSE; + return 1; +} + +/** + * Pack a NUL-terminated C string and return the number of bytes written. The + * output includes a length delimiter. + * + * The NULL pointer is treated as an empty string. This isn't really necessary, + * but it allows people to leave required strings blank. (See Issue #13 in the + * bug tracker for a little more explanation). + * + * \param str + * String to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +string_pack(const char *str, uint8_t *out) +{ + if (str == NULL) { + out[0] = 0; + return 1; + } else { + size_t len = strlen(str); + size_t rv = uint32_pack(len, out); + memcpy(out + rv, str, len); + return rv + len; + } +} + +/** + * Pack a ProtobufCBinaryData and return the number of bytes written. The output + * includes a length delimiter. + * + * \param bd + * ProtobufCBinaryData to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +binary_data_pack(const ProtobufCBinaryData *bd, uint8_t *out) +{ + size_t len = bd->len; + size_t rv = uint32_pack(len, out); + memcpy(out + rv, bd->data, len); + return rv + len; +} + +/** + * Pack a ProtobufCMessage and return the number of bytes written. The output + * includes a length delimiter. + * + * \param message + * ProtobufCMessage object to pack. + * \param[out] out + * Packed message. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +prefixed_message_pack(const ProtobufCMessage *message, uint8_t *out) +{ + if (message == NULL) { + out[0] = 0; + return 1; + } else { + size_t rv = protobuf_c_message_pack(message, out + 1); + uint32_t rv_packed_size = uint32_size(rv); + if (rv_packed_size != 1) + memmove(out + rv_packed_size, out + 1, rv); + return uint32_pack(rv, out) + rv; + } +} + +/** + * Pack a field tag. + * + * Wire-type will be added in required_field_pack(). + * + * \todo Just call uint64_pack on 64-bit platforms. + * + * \param id + * Tag value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +tag_pack(uint32_t id, uint8_t *out) +{ + if (id < (1UL << (32 - 3))) + return uint32_pack(id << 3, out); + else + return uint64_pack(((uint64_t) id) << 3, out); +} + +/** + * Pack a required field and return the number of bytes written. + * + * \param field + * Field descriptor. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +required_field_pack(const ProtobufCFieldDescriptor *field, + const void *member, uint8_t *out) +{ + size_t rv = tag_pack(field->id, out); + + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + sint32_pack(*(const int32_t *) member, out + rv); + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + int32_pack(*(const int32_t *) member, out + rv); + case PROTOBUF_C_TYPE_UINT32: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + uint32_pack(*(const uint32_t *) member, out + rv); + case PROTOBUF_C_TYPE_SINT64: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + sint64_pack(*(const int64_t *) member, out + rv); + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + uint64_pack(*(const uint64_t *) member, out + rv); + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + out[0] |= PROTOBUF_C_WIRE_TYPE_32BIT; + return rv + fixed32_pack(*(const uint32_t *) member, out + rv); + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + out[0] |= PROTOBUF_C_WIRE_TYPE_64BIT; + return rv + fixed64_pack(*(const uint64_t *) member, out + rv); + case PROTOBUF_C_TYPE_BOOL: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + boolean_pack(*(const protobuf_c_boolean *) member, out + rv); + case PROTOBUF_C_TYPE_STRING: + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + return rv + string_pack(*(char *const *) member, out + rv); + case PROTOBUF_C_TYPE_BYTES: + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + return rv + binary_data_pack((const ProtobufCBinaryData *) member, out + rv); + case PROTOBUF_C_TYPE_MESSAGE: + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + return rv + prefixed_message_pack(*(ProtobufCMessage * const *) member, out + rv); + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Pack a oneof field and return the number of bytes written. Only packs the + * field that is selected by the case enum. + * + * \param field + * Field descriptor. + * \param oneof_case + * Enum value that selects the field in the oneof. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +oneof_field_pack(const ProtobufCFieldDescriptor *field, + uint32_t oneof_case, + const void *member, uint8_t *out) +{ + if (oneof_case != field->id) { + return 0; + } + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } + return required_field_pack(field, member, out); +} + +/** + * Pack an optional field and return the number of bytes written. + * + * \param field + * Field descriptor. + * \param has + * Whether the field is set. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +optional_field_pack(const ProtobufCFieldDescriptor *field, + const protobuf_c_boolean has, + const void *member, uint8_t *out) +{ + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } else { + if (!has) + return 0; + } + return required_field_pack(field, member, out); +} + +/** + * Pack an unlabeled field and return the number of bytes written. + * + * \param field + * Field descriptor. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +unlabeled_field_pack(const ProtobufCFieldDescriptor *field, + const void *member, uint8_t *out) +{ + if (field_is_zeroish(field, member)) + return 0; + return required_field_pack(field, member, out); +} + +/** + * Given a field type, return the in-memory size. + * + * \todo Implement as a table lookup. + * + * \param type + * Field type. + * \return + * Size of the field. + */ +static inline size_t +sizeof_elt_in_repeated_array(ProtobufCType type) +{ + switch (type) { + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + case PROTOBUF_C_TYPE_ENUM: + return 4; + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + return 8; + case PROTOBUF_C_TYPE_BOOL: + return sizeof(protobuf_c_boolean); + case PROTOBUF_C_TYPE_STRING: + case PROTOBUF_C_TYPE_MESSAGE: + return sizeof(void *); + case PROTOBUF_C_TYPE_BYTES: + return sizeof(ProtobufCBinaryData); + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Pack an array of 32-bit quantities. + * + * \param[out] out + * Destination. + * \param[in] in + * Source. + * \param[in] n + * Number of elements in the source array. + */ +static void +copy_to_little_endian_32(void *out, const void *in, const unsigned n) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, in, n * 4); +#else + unsigned i; + const uint32_t *ini = in; + for (i = 0; i < n; i++) + fixed32_pack(ini[i], (uint32_t *) out + i); +#endif +} + +/** + * Pack an array of 64-bit quantities. + * + * \param[out] out + * Destination. + * \param[in] in + * Source. + * \param[in] n + * Number of elements in the source array. + */ +static void +copy_to_little_endian_64(void *out, const void *in, const unsigned n) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, in, n * 8); +#else + unsigned i; + const uint64_t *ini = in; + for (i = 0; i < n; i++) + fixed64_pack(ini[i], (uint64_t *) out + i); +#endif +} + +/** + * Get the minimum number of bytes required to pack a field value of a + * particular type. + * + * \param type + * Field type. + * \return + * Number of bytes. + */ +static unsigned +get_type_min_size(ProtobufCType type) +{ + if (type == PROTOBUF_C_TYPE_SFIXED32 || + type == PROTOBUF_C_TYPE_FIXED32 || + type == PROTOBUF_C_TYPE_FLOAT) + { + return 4; + } + if (type == PROTOBUF_C_TYPE_SFIXED64 || + type == PROTOBUF_C_TYPE_FIXED64 || + type == PROTOBUF_C_TYPE_DOUBLE) + { + return 8; + } + return 1; +} + +/** + * Packs the elements of a repeated field and returns the serialised field and + * its length. + * + * \param field + * Field descriptor. + * \param count + * Number of elements in the repeated field array. + * \param member + * Pointer to the elements for this repeated field. + * \param[out] out + * Serialised representation of the repeated field. + * \return + * Number of bytes serialised to `out`. + */ +static size_t +repeated_field_pack(const ProtobufCFieldDescriptor *field, + size_t count, const void *member, uint8_t *out) +{ + void *array = *(void * const *) member; + unsigned i; + + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { + unsigned header_len; + unsigned len_start; + unsigned min_length; + unsigned payload_len; + unsigned length_size_min; + unsigned actual_length_size; + uint8_t *payload_at; + + if (count == 0) + return 0; + header_len = tag_pack(field->id, out); + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + len_start = header_len; + min_length = get_type_min_size(field->type) * count; + length_size_min = uint32_size(min_length); + header_len += length_size_min; + payload_at = out + header_len; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + copy_to_little_endian_32(payload_at, array, count); + payload_at += count * 4; + break; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + copy_to_little_endian_64(payload_at, array, count); + payload_at += count * 8; + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + payload_at += int32_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_SINT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + payload_at += sint32_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_SINT64: { + const int64_t *arr = (const int64_t *) array; + for (i = 0; i < count; i++) + payload_at += sint64_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_UINT32: { + const uint32_t *arr = (const uint32_t *) array; + for (i = 0; i < count; i++) + payload_at += uint32_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: { + const uint64_t *arr = (const uint64_t *) array; + for (i = 0; i < count; i++) + payload_at += uint64_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_BOOL: { + const protobuf_c_boolean *arr = (const protobuf_c_boolean *) array; + for (i = 0; i < count; i++) + payload_at += boolean_pack(arr[i], payload_at); + break; + } + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + + payload_len = payload_at - (out + header_len); + actual_length_size = uint32_size(payload_len); + if (length_size_min != actual_length_size) { + assert(actual_length_size == length_size_min + 1); + memmove(out + header_len + 1, out + header_len, + payload_len); + header_len++; + } + uint32_pack(payload_len, out + len_start); + return header_len + payload_len; + } else { + /* not "packed" cased */ + /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */ + size_t rv = 0; + unsigned siz = sizeof_elt_in_repeated_array(field->type); + + for (i = 0; i < count; i++) { + rv += required_field_pack(field, array, out + rv); + array = (char *)array + siz; + } + return rv; + } +} + +static size_t +unknown_field_pack(const ProtobufCMessageUnknownField *field, uint8_t *out) +{ + size_t rv = tag_pack(field->tag, out); + out[0] |= field->wire_type; + memcpy(out + rv, field->data, field->len); + return rv + field->len; +} + +/**@}*/ + +size_t +protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out) +{ + unsigned i; + size_t rv = 0; + + ASSERT_IS_MESSAGE(message); + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *field = + message->descriptor->fields + i; + const void *member = ((const char *) message) + field->offset; + + /* + * It doesn't hurt to compute qmember (a pointer to the + * quantifier field of the structure), but the pointer is only + * valid if the field is: + * - a repeated field, or + * - a field that is part of a oneof + * - an optional field that isn't a pointer type + * (Meaning: not a message or a string). + */ + const void *qmember = + ((const char *) message) + field->quantifier_offset; + + if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + rv += required_field_pack(field, member, out + rv); + } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || + field->label == PROTOBUF_C_LABEL_NONE) && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { + rv += oneof_field_pack( + field, + *(const uint32_t *) qmember, + member, + out + rv + ); + } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { + rv += optional_field_pack( + field, + *(const protobuf_c_boolean *) qmember, + member, + out + rv + ); + } else if (field->label == PROTOBUF_C_LABEL_NONE) { + rv += unlabeled_field_pack(field, member, out + rv); + } else { + rv += repeated_field_pack(field, *(const size_t *) qmember, + member, out + rv); + } + } + for (i = 0; i < message->n_unknown_fields; i++) + rv += unknown_field_pack(&message->unknown_fields[i], out + rv); + return rv; +} + +/** + * \defgroup packbuf protobuf_c_message_pack_to_buffer() implementation + * + * Routines mainly used by protobuf_c_message_pack_to_buffer(). + * + * \ingroup internal + * @{ + */ + +/** + * Pack a required field to a virtual buffer. + * + * \param field + * Field descriptor. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes packed. + */ +static size_t +required_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + const void *member, ProtobufCBuffer *buffer) +{ + size_t rv; + uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; + + rv = tag_pack(field->id, scratch); + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += sint32_pack(*(const int32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += int32_pack(*(const int32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_UINT32: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += uint32_pack(*(const uint32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_SINT64: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += sint64_pack(*(const int64_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += uint64_pack(*(const uint64_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_32BIT; + rv += fixed32_pack(*(const uint32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_64BIT; + rv += fixed64_pack(*(const uint64_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_BOOL: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += boolean_pack(*(const protobuf_c_boolean *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_STRING: { + const char *str = *(char *const *) member; + size_t sublen = str ? strlen(str) : 0; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + rv += uint32_pack(sublen, scratch + rv); + buffer->append(buffer, rv, scratch); + buffer->append(buffer, sublen, (const uint8_t *) str); + rv += sublen; + break; + } + case PROTOBUF_C_TYPE_BYTES: { + const ProtobufCBinaryData *bd = ((const ProtobufCBinaryData *) member); + size_t sublen = bd->len; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + rv += uint32_pack(sublen, scratch + rv); + buffer->append(buffer, rv, scratch); + buffer->append(buffer, sublen, bd->data); + rv += sublen; + break; + } + case PROTOBUF_C_TYPE_MESSAGE: { + const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + if (msg == NULL) { + rv += uint32_pack(0, scratch + rv); + buffer->append(buffer, rv, scratch); + } else { + size_t sublen = protobuf_c_message_get_packed_size(msg); + rv += uint32_pack(sublen, scratch + rv); + buffer->append(buffer, rv, scratch); + protobuf_c_message_pack_to_buffer(msg, buffer); + rv += sublen; + } + break; + } + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + return rv; +} + +/** + * Pack a oneof field to a buffer. Only packs the field that is selected by the case enum. + * + * \param field + * Field descriptor. + * \param oneof_case + * Enum value that selects the field in the oneof. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes serialised to `buffer`. + */ +static size_t +oneof_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + uint32_t oneof_case, + const void *member, ProtobufCBuffer *buffer) +{ + if (oneof_case != field->id) { + return 0; + } + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void *const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } + return required_field_pack_to_buffer(field, member, buffer); +} + +/** + * Pack an optional field to a buffer. + * + * \param field + * Field descriptor. + * \param has + * Whether the field is set. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes serialised to `buffer`. + */ +static size_t +optional_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + const protobuf_c_boolean has, + const void *member, ProtobufCBuffer *buffer) +{ + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void *const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } else { + if (!has) + return 0; + } + return required_field_pack_to_buffer(field, member, buffer); +} + +/** + * Pack an unlabeled field to a buffer. + * + * \param field + * Field descriptor. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes serialised to `buffer`. + */ +static size_t +unlabeled_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + const void *member, ProtobufCBuffer *buffer) +{ + if (field_is_zeroish(field, member)) + return 0; + return required_field_pack_to_buffer(field, member, buffer); +} + +/** + * Get the packed size of an array of same field type. + * + * \param field + * Field descriptor. + * \param count + * Number of elements of this type. + * \param array + * The elements to get the size of. + * \return + * Number of bytes required. + */ +static size_t +get_packed_payload_length(const ProtobufCFieldDescriptor *field, + unsigned count, const void *array) +{ + unsigned rv = 0; + unsigned i; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + return count * 4; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + return count * 8; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + rv += int32_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_SINT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + rv += sint32_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_UINT32: { + const uint32_t *arr = (const uint32_t *) array; + for (i = 0; i < count; i++) + rv += uint32_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_SINT64: { + const int64_t *arr = (const int64_t *) array; + for (i = 0; i < count; i++) + rv += sint64_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: { + const uint64_t *arr = (const uint64_t *) array; + for (i = 0; i < count; i++) + rv += uint64_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_BOOL: + return count; + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + return rv; +} + +/** + * Pack an array of same field type to a virtual buffer. + * + * \param field + * Field descriptor. + * \param count + * Number of elements of this type. + * \param array + * The elements to get the size of. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes packed. + */ +static size_t +pack_buffer_packed_payload(const ProtobufCFieldDescriptor *field, + unsigned count, const void *array, + ProtobufCBuffer *buffer) +{ + uint8_t scratch[16]; + size_t rv = 0; + unsigned i; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: +#if !defined(WORDS_BIGENDIAN) + rv = count * 4; + goto no_packing_needed; +#else + for (i = 0; i < count; i++) { + unsigned len = fixed32_pack(((uint32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; +#endif + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: +#if !defined(WORDS_BIGENDIAN) + rv = count * 8; + goto no_packing_needed; +#else + for (i = 0; i < count; i++) { + unsigned len = fixed64_pack(((uint64_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; +#endif + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + for (i = 0; i < count; i++) { + unsigned len = int32_pack(((int32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_SINT32: + for (i = 0; i < count; i++) { + unsigned len = sint32_pack(((int32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_UINT32: + for (i = 0; i < count; i++) { + unsigned len = uint32_pack(((uint32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_SINT64: + for (i = 0; i < count; i++) { + unsigned len = sint64_pack(((int64_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + for (i = 0; i < count; i++) { + unsigned len = uint64_pack(((uint64_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_BOOL: + for (i = 0; i < count; i++) { + unsigned len = boolean_pack(((protobuf_c_boolean *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + return count; + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + return rv; + +#if !defined(WORDS_BIGENDIAN) +no_packing_needed: + buffer->append(buffer, rv, array); + return rv; +#endif +} + +static size_t +repeated_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + unsigned count, const void *member, + ProtobufCBuffer *buffer) +{ + char *array = *(char * const *) member; + + if (count == 0) + return 0; + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { + uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; + size_t rv = tag_pack(field->id, scratch); + size_t payload_len = get_packed_payload_length(field, count, array); + size_t tmp; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + rv += uint32_pack(payload_len, scratch + rv); + buffer->append(buffer, rv, scratch); + tmp = pack_buffer_packed_payload(field, count, array, buffer); + assert(tmp == payload_len); + return rv + payload_len; + } else { + size_t siz; + unsigned i; + /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */ + unsigned rv = 0; + + siz = sizeof_elt_in_repeated_array(field->type); + for (i = 0; i < count; i++) { + rv += required_field_pack_to_buffer(field, array, buffer); + array += siz; + } + return rv; + } +} + +static size_t +unknown_field_pack_to_buffer(const ProtobufCMessageUnknownField *field, + ProtobufCBuffer *buffer) +{ + uint8_t header[MAX_UINT64_ENCODED_SIZE]; + size_t rv = tag_pack(field->tag, header); + + header[0] |= field->wire_type; + buffer->append(buffer, rv, header); + buffer->append(buffer, field->len, field->data); + return rv + field->len; +} + +/**@}*/ + +size_t +protobuf_c_message_pack_to_buffer(const ProtobufCMessage *message, + ProtobufCBuffer *buffer) +{ + unsigned i; + size_t rv = 0; + + ASSERT_IS_MESSAGE(message); + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *field = + message->descriptor->fields + i; + const void *member = + ((const char *) message) + field->offset; + const void *qmember = + ((const char *) message) + field->quantifier_offset; + + if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + rv += required_field_pack_to_buffer(field, member, buffer); + } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || + field->label == PROTOBUF_C_LABEL_NONE) && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { + rv += oneof_field_pack_to_buffer( + field, + *(const uint32_t *) qmember, + member, + buffer + ); + } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { + rv += optional_field_pack_to_buffer( + field, + *(const protobuf_c_boolean *) qmember, + member, + buffer + ); + } else if (field->label == PROTOBUF_C_LABEL_NONE) { + rv += unlabeled_field_pack_to_buffer( + field, + member, + buffer + ); + } else { + rv += repeated_field_pack_to_buffer( + field, + *(const size_t *) qmember, + member, + buffer + ); + } + } + for (i = 0; i < message->n_unknown_fields; i++) + rv += unknown_field_pack_to_buffer(&message->unknown_fields[i], buffer); + + return rv; +} + +/** + * \defgroup unpack unpacking implementation + * + * Routines mainly used by the unpacking functions. + * + * \ingroup internal + * @{ + */ + +static inline int +int_range_lookup(unsigned n_ranges, const ProtobufCIntRange *ranges, int value) +{ + unsigned n; + unsigned start; + + if (n_ranges == 0) + return -1; + start = 0; + n = n_ranges; + while (n > 1) { + unsigned mid = start + n / 2; + + if (value < ranges[mid].start_value) { + n = mid - start; + } else if (value >= ranges[mid].start_value + + (int) (ranges[mid + 1].orig_index - + ranges[mid].orig_index)) + { + unsigned new_start = mid + 1; + n = start + n - new_start; + start = new_start; + } else + return (value - ranges[mid].start_value) + + ranges[mid].orig_index; + } + if (n > 0) { + unsigned start_orig_index = ranges[start].orig_index; + unsigned range_size = + ranges[start + 1].orig_index - start_orig_index; + + if (ranges[start].start_value <= value && + value < (int) (ranges[start].start_value + range_size)) + { + return (value - ranges[start].start_value) + + start_orig_index; + } + } + return -1; +} + +static size_t +parse_tag_and_wiretype(size_t len, + const uint8_t *data, + uint32_t *tag_out, + uint8_t *wiretype_out) +{ + unsigned max_rv = len > 5 ? 5 : len; + uint32_t tag = (data[0] & 0x7f) >> 3; + unsigned shift = 4; + unsigned rv; + + /* 0 is not a valid tag value */ + if ((data[0] & 0xf8) == 0) { + return 0; + } + + *wiretype_out = data[0] & 7; + if ((data[0] & 0x80) == 0) { + *tag_out = tag; + return 1; + } + for (rv = 1; rv < max_rv; rv++) { + if (data[rv] & 0x80) { + tag |= (data[rv] & 0x7f) << shift; + shift += 7; + } else { + tag |= data[rv] << shift; + *tag_out = tag; + return rv + 1; + } + } + return 0; /* error: bad header */ +} + +/* sizeof(ScannedMember) must be <= (1UL< INT_MAX) { + // Protobuf messages should always be less than 2 GiB in size. + // We also want to return early here so that hdr_len + val does + // not overflow on 32-bit systems. + PROTOBUF_C_UNPACK_ERROR("length prefix of %lu is too large", + (unsigned long int)val); + return 0; + } + if (hdr_len + val > len) { + PROTOBUF_C_UNPACK_ERROR("data too short after length-prefix of %lu", + (unsigned long int)val); + return 0; + } + return hdr_len + val; +} + +static size_t +max_b128_numbers(size_t len, const uint8_t *data) +{ + size_t rv = 0; + while (len--) + if ((*data++ & 0x80) == 0) + ++rv; + return rv; +} + +/**@}*/ + +/** + * Merge earlier message into a latter message. + * + * For numeric types and strings, if the same value appears multiple + * times, the parser accepts the last value it sees. For embedded + * message fields, the parser merges multiple instances of the same + * field. That is, all singular scalar fields in the latter instance + * replace those in the former, singular embedded messages are merged, + * and repeated fields are concatenated. + * + * The earlier message should be freed after calling this function, as + * some of its fields may have been reused and changed to their default + * values during the merge. + */ +static protobuf_c_boolean +merge_messages(ProtobufCMessage *earlier_msg, + ProtobufCMessage *latter_msg, + ProtobufCAllocator *allocator) +{ + unsigned i; + const ProtobufCFieldDescriptor *fields = + latter_msg->descriptor->fields; + for (i = 0; i < latter_msg->descriptor->n_fields; i++) { + if (fields[i].label == PROTOBUF_C_LABEL_REPEATED) { + size_t *n_earlier = + STRUCT_MEMBER_PTR(size_t, earlier_msg, + fields[i].quantifier_offset); + uint8_t **p_earlier = + STRUCT_MEMBER_PTR(uint8_t *, earlier_msg, + fields[i].offset); + size_t *n_latter = + STRUCT_MEMBER_PTR(size_t, latter_msg, + fields[i].quantifier_offset); + uint8_t **p_latter = + STRUCT_MEMBER_PTR(uint8_t *, latter_msg, + fields[i].offset); + + if (*n_earlier > 0) { + if (*n_latter > 0) { + /* Concatenate the repeated field */ + size_t el_size = + sizeof_elt_in_repeated_array(fields[i].type); + uint8_t *new_field; + + new_field = do_alloc(allocator, + (*n_earlier + *n_latter) * el_size); + if (!new_field) + return FALSE; + + memcpy(new_field, *p_earlier, + *n_earlier * el_size); + memcpy(new_field + + *n_earlier * el_size, + *p_latter, + *n_latter * el_size); + + do_free(allocator, *p_latter); + do_free(allocator, *p_earlier); + *p_latter = new_field; + *n_latter = *n_earlier + *n_latter; + } else { + /* Zero copy the repeated field from the earlier message */ + *n_latter = *n_earlier; + *p_latter = *p_earlier; + } + /* Make sure the field does not get double freed */ + *n_earlier = 0; + *p_earlier = 0; + } + } else if (fields[i].label == PROTOBUF_C_LABEL_OPTIONAL || + fields[i].label == PROTOBUF_C_LABEL_NONE) { + const ProtobufCFieldDescriptor *field; + uint32_t *earlier_case_p = STRUCT_MEMBER_PTR(uint32_t, + earlier_msg, + fields[i]. + quantifier_offset); + uint32_t *latter_case_p = STRUCT_MEMBER_PTR(uint32_t, + latter_msg, + fields[i]. + quantifier_offset); + protobuf_c_boolean need_to_merge = FALSE; + void *earlier_elem; + void *latter_elem; + const void *def_val; + + if (fields[i].flags & PROTOBUF_C_FIELD_FLAG_ONEOF) { + if (*latter_case_p == 0) { + /* lookup correct oneof field */ + int field_index = + int_range_lookup( + latter_msg->descriptor + ->n_field_ranges, + latter_msg->descriptor + ->field_ranges, + *earlier_case_p); + if (field_index < 0) + return FALSE; + field = latter_msg->descriptor->fields + + field_index; + } else { + /* Oneof is present in the latter message, move on */ + continue; + } + } else { + field = &fields[i]; + } + + earlier_elem = STRUCT_MEMBER_P(earlier_msg, field->offset); + latter_elem = STRUCT_MEMBER_P(latter_msg, field->offset); + def_val = field->default_value; + + switch (field->type) { + case PROTOBUF_C_TYPE_MESSAGE: { + ProtobufCMessage *em = *(ProtobufCMessage **) earlier_elem; + ProtobufCMessage *lm = *(ProtobufCMessage **) latter_elem; + if (em != NULL) { + if (lm != NULL) { + if (!merge_messages(em, lm, allocator)) + return FALSE; + /* Already merged */ + need_to_merge = FALSE; + } else { + /* Zero copy the message */ + need_to_merge = TRUE; + } + } + break; + } + case PROTOBUF_C_TYPE_BYTES: { + uint8_t *e_data = + ((ProtobufCBinaryData *) earlier_elem)->data; + uint8_t *l_data = + ((ProtobufCBinaryData *) latter_elem)->data; + const ProtobufCBinaryData *d_bd = + (ProtobufCBinaryData *) def_val; + + need_to_merge = + (e_data != NULL && + (d_bd == NULL || + e_data != d_bd->data)) && + (l_data == NULL || + (d_bd != NULL && + l_data == d_bd->data)); + break; + } + case PROTOBUF_C_TYPE_STRING: { + char *e_str = *(char **) earlier_elem; + char *l_str = *(char **) latter_elem; + const char *d_str = def_val; + + need_to_merge = e_str != d_str && l_str == d_str; + break; + } + default: { + /* Could be has field or case enum, the logic is + * equivalent, since 0 (FALSE) means not set for + * oneof */ + need_to_merge = (*earlier_case_p != 0) && + (*latter_case_p == 0); + break; + } + } + + if (need_to_merge) { + size_t el_size = + sizeof_elt_in_repeated_array(field->type); + memcpy(latter_elem, earlier_elem, el_size); + /* + * Reset the element from the old message to 0 + * to make sure earlier message deallocation + * doesn't corrupt zero-copied data in the new + * message, earlier message will be freed after + * this function is called anyway + */ + memset(earlier_elem, 0, el_size); + + if (field->quantifier_offset != 0) { + /* Set the has field or the case enum, + * if applicable */ + *latter_case_p = *earlier_case_p; + *earlier_case_p = 0; + } + } + } + } + return TRUE; +} + +/** + * Count packed elements. + * + * Given a raw slab of packed-repeated values, determine the number of + * elements. This function detects certain kinds of errors but not + * others; the remaining error checking is done by + * parse_packed_repeated_member(). + */ +static protobuf_c_boolean +count_packed_elements(ProtobufCType type, + size_t len, const uint8_t *data, size_t *count_out) +{ + switch (type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + if (len % 4 != 0) { + PROTOBUF_C_UNPACK_ERROR("length must be a multiple of 4 for fixed-length 32-bit types"); + return FALSE; + } + *count_out = len / 4; + return TRUE; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + if (len % 8 != 0) { + PROTOBUF_C_UNPACK_ERROR("length must be a multiple of 8 for fixed-length 64-bit types"); + return FALSE; + } + *count_out = len / 8; + return TRUE; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_UINT64: + *count_out = max_b128_numbers(len, data); + return TRUE; + case PROTOBUF_C_TYPE_BOOL: + *count_out = len; + return TRUE; + case PROTOBUF_C_TYPE_STRING: + case PROTOBUF_C_TYPE_BYTES: + case PROTOBUF_C_TYPE_MESSAGE: + default: + PROTOBUF_C_UNPACK_ERROR("bad protobuf-c type %u for packed-repeated", type); + return FALSE; + } +} + +static inline uint32_t +parse_uint32(unsigned len, const uint8_t *data) +{ + uint32_t rv = data[0] & 0x7f; + if (len > 1) { + rv |= ((uint32_t) (data[1] & 0x7f) << 7); + if (len > 2) { + rv |= ((uint32_t) (data[2] & 0x7f) << 14); + if (len > 3) { + rv |= ((uint32_t) (data[3] & 0x7f) << 21); + if (len > 4) + rv |= ((uint32_t) (data[4]) << 28); + } + } + } + return rv; +} + +static inline uint32_t +parse_int32(unsigned len, const uint8_t *data) +{ + return parse_uint32(len, data); +} + +static inline int32_t +unzigzag32(uint32_t v) +{ + // Note: Using unsigned types prevents undefined behavior + return (int32_t)((v >> 1) ^ (~(v & 1) + 1)); +} + +static inline uint32_t +parse_fixed_uint32(const uint8_t *data) +{ +#if !defined(WORDS_BIGENDIAN) + uint32_t t; + memcpy(&t, data, 4); + return t; +#else + return data[0] | + ((uint32_t) (data[1]) << 8) | + ((uint32_t) (data[2]) << 16) | + ((uint32_t) (data[3]) << 24); +#endif +} + +static uint64_t +parse_uint64(unsigned len, const uint8_t *data) +{ + unsigned shift, i; + uint64_t rv; + + if (len < 5) + return parse_uint32(len, data); + rv = ((uint64_t) (data[0] & 0x7f)) | + ((uint64_t) (data[1] & 0x7f) << 7) | + ((uint64_t) (data[2] & 0x7f) << 14) | + ((uint64_t) (data[3] & 0x7f) << 21); + shift = 28; + for (i = 4; i < len; i++) { + rv |= (((uint64_t) (data[i] & 0x7f)) << shift); + shift += 7; + } + return rv; +} + +static inline int64_t +unzigzag64(uint64_t v) +{ + // Note: Using unsigned types prevents undefined behavior + return (int64_t)((v >> 1) ^ (~(v & 1) + 1)); +} + +static inline uint64_t +parse_fixed_uint64(const uint8_t *data) +{ +#if !defined(WORDS_BIGENDIAN) + uint64_t t; + memcpy(&t, data, 8); + return t; +#else + return (uint64_t) parse_fixed_uint32(data) | + (((uint64_t) parse_fixed_uint32(data + 4)) << 32); +#endif +} + +static protobuf_c_boolean +parse_boolean(unsigned len, const uint8_t *data) +{ + unsigned i; + for (i = 0; i < len; i++) + if (data[i] & 0x7f) + return TRUE; + return FALSE; +} + +static protobuf_c_boolean +parse_required_member(ScannedMember *scanned_member, + void *member, + ProtobufCAllocator *allocator, + protobuf_c_boolean maybe_clear) +{ + unsigned len = scanned_member->len; + const uint8_t *data = scanned_member->data; + uint8_t wire_type = scanned_member->wire_type; + + switch (scanned_member->field->type) { + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(int32_t *) member = parse_int32(len, data); + return TRUE; + case PROTOBUF_C_TYPE_UINT32: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(uint32_t *) member = parse_uint32(len, data); + return TRUE; + case PROTOBUF_C_TYPE_SINT32: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(int32_t *) member = unzigzag32(parse_uint32(len, data)); + return TRUE; + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + if (wire_type != PROTOBUF_C_WIRE_TYPE_32BIT) + return FALSE; + *(uint32_t *) member = parse_fixed_uint32(data); + return TRUE; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(uint64_t *) member = parse_uint64(len, data); + return TRUE; + case PROTOBUF_C_TYPE_SINT64: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(int64_t *) member = unzigzag64(parse_uint64(len, data)); + return TRUE; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + if (wire_type != PROTOBUF_C_WIRE_TYPE_64BIT) + return FALSE; + *(uint64_t *) member = parse_fixed_uint64(data); + return TRUE; + case PROTOBUF_C_TYPE_BOOL: + *(protobuf_c_boolean *) member = parse_boolean(len, data); + return TRUE; + case PROTOBUF_C_TYPE_STRING: { + char **pstr = member; + unsigned pref_len = scanned_member->length_prefix_len; + + if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) + return FALSE; + + if (maybe_clear && *pstr != NULL) { + const char *def = scanned_member->field->default_value; + if (*pstr != NULL && *pstr != def) + do_free(allocator, *pstr); + } + *pstr = do_alloc(allocator, len - pref_len + 1); + if (*pstr == NULL) + return FALSE; + memcpy(*pstr, data + pref_len, len - pref_len); + (*pstr)[len - pref_len] = 0; + return TRUE; + } + case PROTOBUF_C_TYPE_BYTES: { + ProtobufCBinaryData *bd = member; + const ProtobufCBinaryData *def_bd; + unsigned pref_len = scanned_member->length_prefix_len; + + if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) + return FALSE; + + def_bd = scanned_member->field->default_value; + if (maybe_clear && + bd->data != NULL && + (def_bd == NULL || bd->data != def_bd->data)) + { + do_free(allocator, bd->data); + } + if (len > pref_len) { + bd->data = do_alloc(allocator, len - pref_len); + if (bd->data == NULL) + return FALSE; + memcpy(bd->data, data + pref_len, len - pref_len); + } else { + bd->data = NULL; + } + bd->len = len - pref_len; + return TRUE; + } + case PROTOBUF_C_TYPE_MESSAGE: { + ProtobufCMessage **pmessage = member; + ProtobufCMessage *subm; + const ProtobufCMessage *def_mess; + protobuf_c_boolean merge_successful = TRUE; + unsigned pref_len = scanned_member->length_prefix_len; + + if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) + return FALSE; + + def_mess = scanned_member->field->default_value; + subm = protobuf_c_message_unpack(scanned_member->field->descriptor, + allocator, + len - pref_len, + data + pref_len); + + if (maybe_clear && + *pmessage != NULL && + *pmessage != def_mess) + { + if (subm != NULL) + merge_successful = merge_messages(*pmessage, subm, allocator); + /* Delete the previous message */ + protobuf_c_message_free_unpacked(*pmessage, allocator); + } + *pmessage = subm; + if (subm == NULL || !merge_successful) + return FALSE; + return TRUE; + } + } + return FALSE; +} + +static protobuf_c_boolean +parse_oneof_member (ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + uint32_t *oneof_case = STRUCT_MEMBER_PTR(uint32_t, message, + scanned_member->field->quantifier_offset); + + /* If we have already parsed a member of this oneof, free it. */ + if (*oneof_case != 0) { + const ProtobufCFieldDescriptor *old_field; + size_t el_size; + /* lookup field */ + int field_index = + int_range_lookup(message->descriptor->n_field_ranges, + message->descriptor->field_ranges, + *oneof_case); + if (field_index < 0) + return FALSE; + old_field = message->descriptor->fields + field_index; + el_size = sizeof_elt_in_repeated_array(old_field->type); + + switch (old_field->type) { + case PROTOBUF_C_TYPE_STRING: { + char **pstr = member; + const char *def = old_field->default_value; + if (*pstr != NULL && *pstr != def) + do_free(allocator, *pstr); + break; + } + case PROTOBUF_C_TYPE_BYTES: { + ProtobufCBinaryData *bd = member; + const ProtobufCBinaryData *def_bd = old_field->default_value; + if (bd->data != NULL && + (def_bd == NULL || bd->data != def_bd->data)) + { + do_free(allocator, bd->data); + } + break; + } + case PROTOBUF_C_TYPE_MESSAGE: { + ProtobufCMessage **pmessage = member; + const ProtobufCMessage *def_mess = old_field->default_value; + if (*pmessage != NULL && *pmessage != def_mess) + protobuf_c_message_free_unpacked(*pmessage, allocator); + break; + } + default: + break; + } + + memset (member, 0, el_size); + } + if (!parse_required_member (scanned_member, member, allocator, TRUE)) + return FALSE; + + *oneof_case = scanned_member->tag; + return TRUE; +} + + +static protobuf_c_boolean +parse_optional_member(ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + if (!parse_required_member(scanned_member, member, allocator, TRUE)) + return FALSE; + if (scanned_member->field->quantifier_offset != 0) + STRUCT_MEMBER(protobuf_c_boolean, + message, + scanned_member->field->quantifier_offset) = TRUE; + return TRUE; +} + +static protobuf_c_boolean +parse_repeated_member(ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + const ProtobufCFieldDescriptor *field = scanned_member->field; + size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset); + size_t siz = sizeof_elt_in_repeated_array(field->type); + char *array = *(char **) member; + + if (!parse_required_member(scanned_member, array + siz * (*p_n), + allocator, FALSE)) + { + return FALSE; + } + *p_n += 1; + return TRUE; +} + +static unsigned +scan_varint(unsigned len, const uint8_t *data) +{ + unsigned i; + if (len > 10) + len = 10; + for (i = 0; i < len; i++) + if ((data[i] & 0x80) == 0) + break; + if (i == len) + return 0; + return i + 1; +} + +static protobuf_c_boolean +parse_packed_repeated_member(ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message) +{ + const ProtobufCFieldDescriptor *field = scanned_member->field; + size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset); + size_t siz = sizeof_elt_in_repeated_array(field->type); + void *array = *(char **) member + siz * (*p_n); + const uint8_t *at = scanned_member->data + scanned_member->length_prefix_len; + size_t rem = scanned_member->len - scanned_member->length_prefix_len; + size_t count = 0; +#if defined(WORDS_BIGENDIAN) + unsigned i; +#endif + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + count = (scanned_member->len - scanned_member->length_prefix_len) / 4; +#if !defined(WORDS_BIGENDIAN) + goto no_unpacking_needed; +#else + for (i = 0; i < count; i++) { + ((uint32_t *) array)[i] = parse_fixed_uint32(at); + at += 4; + } + break; +#endif + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + count = (scanned_member->len - scanned_member->length_prefix_len) / 8; +#if !defined(WORDS_BIGENDIAN) + goto no_unpacking_needed; +#else + for (i = 0; i < count; i++) { + ((uint64_t *) array)[i] = parse_fixed_uint64(at); + at += 8; + } + break; +#endif + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated int32 value"); + return FALSE; + } + ((int32_t *) array)[count++] = parse_int32(s, at); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_SINT32: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated sint32 value"); + return FALSE; + } + ((int32_t *) array)[count++] = unzigzag32(parse_uint32(s, at)); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_UINT32: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated enum or uint32 value"); + return FALSE; + } + ((uint32_t *) array)[count++] = parse_uint32(s, at); + at += s; + rem -= s; + } + break; + + case PROTOBUF_C_TYPE_SINT64: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated sint64 value"); + return FALSE; + } + ((int64_t *) array)[count++] = unzigzag64(parse_uint64(s, at)); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated int64/uint64 value"); + return FALSE; + } + ((int64_t *) array)[count++] = parse_uint64(s, at); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_BOOL: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated boolean value"); + return FALSE; + } + ((protobuf_c_boolean *) array)[count++] = parse_boolean(s, at); + at += s; + rem -= s; + } + break; + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + *p_n += count; + return TRUE; + +#if !defined(WORDS_BIGENDIAN) +no_unpacking_needed: + memcpy(array, at, count * siz); + *p_n += count; + return TRUE; +#endif +} + +static protobuf_c_boolean +is_packable_type(ProtobufCType type) +{ + return + type != PROTOBUF_C_TYPE_STRING && + type != PROTOBUF_C_TYPE_BYTES && + type != PROTOBUF_C_TYPE_MESSAGE; +} + +static protobuf_c_boolean +parse_member(ScannedMember *scanned_member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + const ProtobufCFieldDescriptor *field = scanned_member->field; + void *member; + + if (field == NULL) { + ProtobufCMessageUnknownField *ufield = + message->unknown_fields + + (message->n_unknown_fields++); + ufield->tag = scanned_member->tag; + ufield->wire_type = scanned_member->wire_type; + ufield->len = scanned_member->len; + ufield->data = do_alloc(allocator, scanned_member->len); + if (ufield->data == NULL) + return FALSE; + memcpy(ufield->data, scanned_member->data, ufield->len); + return TRUE; + } + member = (char *) message + field->offset; + switch (field->label) { + case PROTOBUF_C_LABEL_REQUIRED: + return parse_required_member(scanned_member, member, + allocator, TRUE); + case PROTOBUF_C_LABEL_OPTIONAL: + case PROTOBUF_C_LABEL_NONE: + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF)) { + return parse_oneof_member(scanned_member, member, + message, allocator); + } else { + return parse_optional_member(scanned_member, member, + message, allocator); + } + case PROTOBUF_C_LABEL_REPEATED: + if (scanned_member->wire_type == + PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || + is_packable_type(field->type))) + { + return parse_packed_repeated_member(scanned_member, + member, message); + } else { + return parse_repeated_member(scanned_member, + member, message, + allocator); + } + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Initialise messages generated by old code. + * + * This function is used if desc->message_init == NULL (which occurs + * for old code, and which would be useful to support allocating + * descriptors dynamically). + */ +static void +message_init_generic(const ProtobufCMessageDescriptor *desc, + ProtobufCMessage *message) +{ + unsigned i; + + memset(message, 0, desc->sizeof_message); + message->descriptor = desc; + for (i = 0; i < desc->n_fields; i++) { + if (desc->fields[i].default_value != NULL && + desc->fields[i].label != PROTOBUF_C_LABEL_REPEATED) + { + void *field = + STRUCT_MEMBER_P(message, desc->fields[i].offset); + const void *dv = desc->fields[i].default_value; + + switch (desc->fields[i].type) { + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + case PROTOBUF_C_TYPE_ENUM: + memcpy(field, dv, 4); + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_UINT64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + memcpy(field, dv, 8); + break; + case PROTOBUF_C_TYPE_BOOL: + memcpy(field, dv, sizeof(protobuf_c_boolean)); + break; + case PROTOBUF_C_TYPE_BYTES: + memcpy(field, dv, sizeof(ProtobufCBinaryData)); + break; + + case PROTOBUF_C_TYPE_STRING: + case PROTOBUF_C_TYPE_MESSAGE: + /* + * The next line essentially implements a cast + * from const, which is totally unavoidable. + */ + *(const void **) field = dv; + break; + } + } + } +} + +/**@}*/ + +/* + * ScannedMember slabs (an unpacking implementation detail). Before doing real + * unpacking, we first scan through the elements to see how many there are (for + * repeated fields), and which field to use (for non-repeated fields given + * twice). + * + * In order to avoid allocations for small messages, we keep a stack-allocated + * slab of ScannedMembers of size FIRST_SCANNED_MEMBER_SLAB_SIZE (16). After we + * fill that up, we allocate each slab twice as large as the previous one. + */ +#define FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2 4 + +/* + * The number of slabs, including the stack-allocated ones; choose the number so + * that we would overflow if we needed a slab larger than provided. + */ +#define MAX_SCANNED_MEMBER_SLAB \ + (sizeof(unsigned int)*8 - 1 \ + - BOUND_SIZEOF_SCANNED_MEMBER_LOG2 \ + - FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2) + +#define REQUIRED_FIELD_BITMAP_SET(index) \ + (required_fields_bitmap[(index)/8] |= (1UL<<((index)%8))) + +#define REQUIRED_FIELD_BITMAP_IS_SET(index) \ + (required_fields_bitmap[(index)/8] & (1UL<<((index)%8))) + +ProtobufCMessage * +protobuf_c_message_unpack(const ProtobufCMessageDescriptor *desc, + ProtobufCAllocator *allocator, + size_t len, const uint8_t *data) +{ + ProtobufCMessage *rv; + size_t rem = len; + const uint8_t *at = data; + const ProtobufCFieldDescriptor *last_field = desc->fields + 0; + ScannedMember first_member_slab[1UL << + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2]; + + /* + * scanned_member_slabs[i] is an array of arrays of ScannedMember. + * The first slab (scanned_member_slabs[0] is just a pointer to + * first_member_slab), above. All subsequent slabs will be allocated + * using the allocator. + */ + ScannedMember *scanned_member_slabs[MAX_SCANNED_MEMBER_SLAB + 1]; + unsigned which_slab = 0; /* the slab we are currently populating */ + unsigned in_slab_index = 0; /* number of members in the slab */ + size_t n_unknown = 0; + unsigned f; + unsigned j; + unsigned i_slab; + unsigned last_field_index = 0; + unsigned required_fields_bitmap_len; + unsigned char required_fields_bitmap_stack[16]; + unsigned char *required_fields_bitmap = required_fields_bitmap_stack; + protobuf_c_boolean required_fields_bitmap_alloced = FALSE; + + ASSERT_IS_MESSAGE_DESCRIPTOR(desc); + + if (allocator == NULL) + allocator = &protobuf_c__allocator; + + rv = do_alloc(allocator, desc->sizeof_message); + if (!rv) + return (NULL); + scanned_member_slabs[0] = first_member_slab; + + required_fields_bitmap_len = (desc->n_fields + 7) / 8; + if (required_fields_bitmap_len > sizeof(required_fields_bitmap_stack)) { + required_fields_bitmap = do_alloc(allocator, required_fields_bitmap_len); + if (!required_fields_bitmap) { + do_free(allocator, rv); + return (NULL); + } + required_fields_bitmap_alloced = TRUE; + } + memset(required_fields_bitmap, 0, required_fields_bitmap_len); + + /* + * Generated code always defines "message_init". However, we provide a + * fallback for (1) users of old protobuf-c generated-code that do not + * provide the function, and (2) descriptors constructed from some other + * source (most likely, direct construction from the .proto file). + */ + if (desc->message_init != NULL) + protobuf_c_message_init(desc, rv); + else + message_init_generic(desc, rv); + + while (rem > 0) { + uint32_t tag; + uint8_t wire_type; + size_t used = parse_tag_and_wiretype(rem, at, &tag, &wire_type); + const ProtobufCFieldDescriptor *field; + ScannedMember tmp; + + if (used == 0) { + PROTOBUF_C_UNPACK_ERROR("error parsing tag/wiretype at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + /* + * \todo Consider optimizing for field[1].id == tag, if field[1] + * exists! + */ + if (last_field == NULL || last_field->id != tag) { + /* lookup field */ + int field_index = + int_range_lookup(desc->n_field_ranges, + desc->field_ranges, + tag); + if (field_index < 0) { + field = NULL; + n_unknown++; + } else { + field = desc->fields + field_index; + last_field = field; + last_field_index = field_index; + } + } else { + field = last_field; + } + + if (field != NULL && field->label == PROTOBUF_C_LABEL_REQUIRED) + REQUIRED_FIELD_BITMAP_SET(last_field_index); + + at += used; + rem -= used; + tmp.tag = tag; + tmp.wire_type = wire_type; + tmp.field = field; + tmp.data = at; + tmp.length_prefix_len = 0; + + switch (wire_type) { + case PROTOBUF_C_WIRE_TYPE_VARINT: { + unsigned max_len = rem < 10 ? rem : 10; + unsigned i; + + for (i = 0; i < max_len; i++) + if ((at[i] & 0x80) == 0) + break; + if (i == max_len) { + PROTOBUF_C_UNPACK_ERROR("unterminated varint at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + tmp.len = i + 1; + break; + } + case PROTOBUF_C_WIRE_TYPE_64BIT: + if (rem < 8) { + PROTOBUF_C_UNPACK_ERROR("too short after 64bit wiretype at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + tmp.len = 8; + break; + case PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED: { + size_t pref_len; + + tmp.len = scan_length_prefixed_data(rem, at, &pref_len); + if (tmp.len == 0) { + /* NOTE: scan_length_prefixed_data calls UNPACK_ERROR */ + goto error_cleanup_during_scan; + } + tmp.length_prefix_len = pref_len; + break; + } + case PROTOBUF_C_WIRE_TYPE_32BIT: + if (rem < 4) { + PROTOBUF_C_UNPACK_ERROR("too short after 32bit wiretype at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + tmp.len = 4; + break; + default: + PROTOBUF_C_UNPACK_ERROR("unsupported tag %u at offset %u", + wire_type, (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + + if (in_slab_index == (1UL << + (which_slab + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2))) + { + size_t size; + + in_slab_index = 0; + if (which_slab == MAX_SCANNED_MEMBER_SLAB) { + PROTOBUF_C_UNPACK_ERROR("too many fields"); + goto error_cleanup_during_scan; + } + which_slab++; + size = sizeof(ScannedMember) + << (which_slab + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2); + scanned_member_slabs[which_slab] = do_alloc(allocator, size); + if (scanned_member_slabs[which_slab] == NULL) + goto error_cleanup_during_scan; + } + scanned_member_slabs[which_slab][in_slab_index++] = tmp; + + if (field != NULL && field->label == PROTOBUF_C_LABEL_REPEATED) { + size_t *n = STRUCT_MEMBER_PTR(size_t, rv, + field->quantifier_offset); + if (wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || + is_packable_type(field->type))) + { + size_t count; + if (!count_packed_elements(field->type, + tmp.len - + tmp.length_prefix_len, + tmp.data + + tmp.length_prefix_len, + &count)) + { + PROTOBUF_C_UNPACK_ERROR("counting packed elements"); + goto error_cleanup_during_scan; + } + *n += count; + } else { + *n += 1; + } + } + + at += tmp.len; + rem -= tmp.len; + } + + /* allocate space for repeated fields, also check that all required fields have been set */ + for (f = 0; f < desc->n_fields; f++) { + const ProtobufCFieldDescriptor *field = desc->fields + f; + if (field->label == PROTOBUF_C_LABEL_REPEATED) { + size_t siz = + sizeof_elt_in_repeated_array(field->type); + size_t *n_ptr = + STRUCT_MEMBER_PTR(size_t, rv, + field->quantifier_offset); + if (*n_ptr != 0) { + unsigned n = *n_ptr; + void *a; + *n_ptr = 0; + assert(rv->descriptor != NULL); +#define CLEAR_REMAINING_N_PTRS() \ + for(f++;f < desc->n_fields; f++) \ + { \ + field = desc->fields + f; \ + if (field->label == PROTOBUF_C_LABEL_REPEATED) \ + STRUCT_MEMBER (size_t, rv, field->quantifier_offset) = 0; \ + } + a = do_alloc(allocator, siz * n); + if (!a) { + CLEAR_REMAINING_N_PTRS(); + goto error_cleanup; + } + STRUCT_MEMBER(void *, rv, field->offset) = a; + } + } else if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + if (field->default_value == NULL && + !REQUIRED_FIELD_BITMAP_IS_SET(f)) + { + CLEAR_REMAINING_N_PTRS(); + PROTOBUF_C_UNPACK_ERROR("message '%s': missing required field '%s'", + desc->name, field->name); + goto error_cleanup; + } + } + } +#undef CLEAR_REMAINING_N_PTRS + + /* allocate space for unknown fields */ + if (n_unknown) { + rv->unknown_fields = do_alloc(allocator, + n_unknown * sizeof(ProtobufCMessageUnknownField)); + if (rv->unknown_fields == NULL) + goto error_cleanup; + } + + /* do real parsing */ + for (i_slab = 0; i_slab <= which_slab; i_slab++) { + unsigned max = (i_slab == which_slab) ? + in_slab_index : (1UL << (i_slab + 4)); + ScannedMember *slab = scanned_member_slabs[i_slab]; + + for (j = 0; j < max; j++) { + if (!parse_member(slab + j, rv, allocator)) { + PROTOBUF_C_UNPACK_ERROR("error parsing member %s of %s", + slab->field ? slab->field->name : "*unknown-field*", + desc->name); + goto error_cleanup; + } + } + } + + /* cleanup */ + for (j = 1; j <= which_slab; j++) + do_free(allocator, scanned_member_slabs[j]); + if (required_fields_bitmap_alloced) + do_free(allocator, required_fields_bitmap); + return rv; + +error_cleanup: + protobuf_c_message_free_unpacked(rv, allocator); + for (j = 1; j <= which_slab; j++) + do_free(allocator, scanned_member_slabs[j]); + if (required_fields_bitmap_alloced) + do_free(allocator, required_fields_bitmap); + return NULL; + +error_cleanup_during_scan: + do_free(allocator, rv); + for (j = 1; j <= which_slab; j++) + do_free(allocator, scanned_member_slabs[j]); + if (required_fields_bitmap_alloced) + do_free(allocator, required_fields_bitmap); + return NULL; +} + +void +protobuf_c_message_free_unpacked(ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + const ProtobufCMessageDescriptor *desc; + unsigned f; + + if (message == NULL) + return; + + desc = message->descriptor; + + ASSERT_IS_MESSAGE(message); + + if (allocator == NULL) + allocator = &protobuf_c__allocator; + message->descriptor = NULL; + for (f = 0; f < desc->n_fields; f++) { + if (0 != (desc->fields[f].flags & PROTOBUF_C_FIELD_FLAG_ONEOF) && + desc->fields[f].id != + STRUCT_MEMBER(uint32_t, message, desc->fields[f].quantifier_offset)) + { + /* This is not the selected oneof, skip it */ + continue; + } + + if (desc->fields[f].label == PROTOBUF_C_LABEL_REPEATED) { + size_t n = STRUCT_MEMBER(size_t, + message, + desc->fields[f].quantifier_offset); + void *arr = STRUCT_MEMBER(void *, + message, + desc->fields[f].offset); + + if (arr != NULL) { + if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING) { + unsigned i; + for (i = 0; i < n; i++) + do_free(allocator, ((char **) arr)[i]); + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES) { + unsigned i; + for (i = 0; i < n; i++) + do_free(allocator, ((ProtobufCBinaryData *) arr)[i].data); + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE) { + unsigned i; + for (i = 0; i < n; i++) + protobuf_c_message_free_unpacked( + ((ProtobufCMessage **) arr)[i], + allocator + ); + } + do_free(allocator, arr); + } + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING) { + char *str = STRUCT_MEMBER(char *, message, + desc->fields[f].offset); + + if (str && str != desc->fields[f].default_value) + do_free(allocator, str); + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES) { + void *data = STRUCT_MEMBER(ProtobufCBinaryData, message, + desc->fields[f].offset).data; + const ProtobufCBinaryData *default_bd; + + default_bd = desc->fields[f].default_value; + if (data != NULL && + (default_bd == NULL || + default_bd->data != data)) + { + do_free(allocator, data); + } + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE) { + ProtobufCMessage *sm; + + sm = STRUCT_MEMBER(ProtobufCMessage *, message, + desc->fields[f].offset); + if (sm && sm != desc->fields[f].default_value) + protobuf_c_message_free_unpacked(sm, allocator); + } + } + + for (f = 0; f < message->n_unknown_fields; f++) + do_free(allocator, message->unknown_fields[f].data); + if (message->unknown_fields != NULL) + do_free(allocator, message->unknown_fields); + + do_free(allocator, message); +} + +void +protobuf_c_message_init(const ProtobufCMessageDescriptor * descriptor, + void *message) +{ + descriptor->message_init((ProtobufCMessage *) (message)); +} + +protobuf_c_boolean +protobuf_c_message_check(const ProtobufCMessage *message) +{ + unsigned i; + + if (!message || + !message->descriptor || + message->descriptor->magic != PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC) + { + return FALSE; + } + + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *f = message->descriptor->fields + i; + ProtobufCType type = f->type; + ProtobufCLabel label = f->label; + void *field = STRUCT_MEMBER_P (message, f->offset); + + if (f->flags & PROTOBUF_C_FIELD_FLAG_ONEOF) { + const uint32_t *oneof_case = STRUCT_MEMBER_P (message, f->quantifier_offset); + if (f->id != *oneof_case) { + continue; //Do not check if it is an unpopulated oneof member. + } + } + + if (label == PROTOBUF_C_LABEL_REPEATED) { + size_t *quantity = STRUCT_MEMBER_P (message, f->quantifier_offset); + + if (*quantity > 0 && *(void **) field == NULL) { + return FALSE; + } + + if (type == PROTOBUF_C_TYPE_MESSAGE) { + ProtobufCMessage **submessage = *(ProtobufCMessage ***) field; + unsigned j; + for (j = 0; j < *quantity; j++) { + if (!protobuf_c_message_check(submessage[j])) + return FALSE; + } + } else if (type == PROTOBUF_C_TYPE_STRING) { + char **string = *(char ***) field; + unsigned j; + for (j = 0; j < *quantity; j++) { + if (!string[j]) + return FALSE; + } + } else if (type == PROTOBUF_C_TYPE_BYTES) { + ProtobufCBinaryData *bd = *(ProtobufCBinaryData **) field; + unsigned j; + for (j = 0; j < *quantity; j++) { + if (bd[j].len > 0 && bd[j].data == NULL) + return FALSE; + } + } + + } else { /* PROTOBUF_C_LABEL_REQUIRED or PROTOBUF_C_LABEL_OPTIONAL */ + + if (type == PROTOBUF_C_TYPE_MESSAGE) { + ProtobufCMessage *submessage = *(ProtobufCMessage **) field; + if (label == PROTOBUF_C_LABEL_REQUIRED || submessage != NULL) { + if (!protobuf_c_message_check(submessage)) + return FALSE; + } + } else if (type == PROTOBUF_C_TYPE_STRING) { + char *string = *(char **) field; + if (label == PROTOBUF_C_LABEL_REQUIRED && string == NULL) + return FALSE; + } else if (type == PROTOBUF_C_TYPE_BYTES) { + protobuf_c_boolean *has = STRUCT_MEMBER_P (message, f->quantifier_offset); + ProtobufCBinaryData *bd = field; + if (label == PROTOBUF_C_LABEL_REQUIRED || *has == TRUE) { + if (bd->len > 0 && bd->data == NULL) + return FALSE; + } + } + } + } + + return TRUE; +} + +/* === services === */ + +typedef void (*GenericHandler) (void *service, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); +void +protobuf_c_service_invoke_internal(ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data) +{ + GenericHandler *handlers; + GenericHandler handler; + + /* + * Verify that method_index is within range. If this fails, you are + * likely invoking a newly added method on an old service. (Although + * other memory corruption bugs can cause this assertion too.) + */ + assert(method_index < service->descriptor->n_methods); + + /* + * Get the array of virtual methods (which are enumerated by the + * generated code). + */ + handlers = (GenericHandler *) (service + 1); + + /* + * Get our method and invoke it. + * \todo Seems like handler == NULL is a situation that needs handling. + */ + handler = handlers[method_index]; + (*handler)(service, input, closure, closure_data); +} + +void +protobuf_c_service_generated_init(ProtobufCService *service, + const ProtobufCServiceDescriptor *descriptor, + ProtobufCServiceDestroy destroy) +{ + ASSERT_IS_SERVICE_DESCRIPTOR(descriptor); + service->descriptor = descriptor; + service->destroy = destroy; + service->invoke = protobuf_c_service_invoke_internal; + memset(service + 1, 0, descriptor->n_methods * sizeof(GenericHandler)); +} + +void protobuf_c_service_destroy(ProtobufCService *service) +{ + service->destroy(service); +} + +/* --- querying the descriptors --- */ + +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value_by_name(const ProtobufCEnumDescriptor *desc, + const char *name) +{ + unsigned start = 0; + unsigned count; + + if (desc == NULL || desc->values_by_name == NULL) + return NULL; + + count = desc->n_value_names; + + while (count > 1) { + unsigned mid = start + count / 2; + int rv = strcmp(desc->values_by_name[mid].name, name); + if (rv == 0) + return desc->values + desc->values_by_name[mid].index; + else if (rv < 0) { + count = start + count - (mid + 1); + start = mid + 1; + } else + count = mid - start; + } + if (count == 0) + return NULL; + if (strcmp(desc->values_by_name[start].name, name) == 0) + return desc->values + desc->values_by_name[start].index; + return NULL; +} + +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value(const ProtobufCEnumDescriptor *desc, + int value) +{ + int rv = int_range_lookup(desc->n_value_ranges, desc->value_ranges, value); + if (rv < 0) + return NULL; + return desc->values + rv; +} + +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field_by_name(const ProtobufCMessageDescriptor *desc, + const char *name) +{ + unsigned start = 0; + unsigned count; + const ProtobufCFieldDescriptor *field; + + if (desc == NULL || desc->fields_sorted_by_name == NULL) + return NULL; + + count = desc->n_fields; + + while (count > 1) { + unsigned mid = start + count / 2; + int rv; + field = desc->fields + desc->fields_sorted_by_name[mid]; + rv = strcmp(field->name, name); + if (rv == 0) + return field; + else if (rv < 0) { + count = start + count - (mid + 1); + start = mid + 1; + } else + count = mid - start; + } + if (count == 0) + return NULL; + field = desc->fields + desc->fields_sorted_by_name[start]; + if (strcmp(field->name, name) == 0) + return field; + return NULL; +} + +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field(const ProtobufCMessageDescriptor *desc, + unsigned value) +{ + int rv = int_range_lookup(desc->n_field_ranges,desc->field_ranges, value); + if (rv < 0) + return NULL; + return desc->fields + rv; +} + +const ProtobufCMethodDescriptor * +protobuf_c_service_descriptor_get_method_by_name(const ProtobufCServiceDescriptor *desc, + const char *name) +{ + unsigned start = 0; + unsigned count; + + if (desc == NULL || desc->method_indices_by_name == NULL) + return NULL; + + count = desc->n_methods; + + while (count > 1) { + unsigned mid = start + count / 2; + unsigned mid_index = desc->method_indices_by_name[mid]; + const char *mid_name = desc->methods[mid_index].name; + int rv = strcmp(mid_name, name); + + if (rv == 0) + return desc->methods + desc->method_indices_by_name[mid]; + if (rv < 0) { + count = start + count - (mid + 1); + start = mid + 1; + } else { + count = mid - start; + } + } + if (count == 0) + return NULL; + if (strcmp(desc->methods[desc->method_indices_by_name[start]].name, name) == 0) + return desc->methods + desc->method_indices_by_name[start]; + return NULL; +} + +} diff --git a/lib/Protobuf/protobuf-c.h b/lib/Protobuf/protobuf-c.h new file mode 100755 index 0000000..b633722 --- /dev/null +++ b/lib/Protobuf/protobuf-c.h @@ -0,0 +1,1110 @@ +/* + * Copyright (c) 2008-2018, Dave Benson and the protobuf-c authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \file + * \mainpage Introduction + * + * This is [protobuf-c], a C implementation of [Protocol Buffers]. + * + * This file defines the public API for the `libprotobuf-c` support library. + * This API includes interfaces that can be used directly by client code as well + * as the interfaces used by the code generated by the `protoc-c` compiler. + * + * The `libprotobuf-c` support library performs the actual serialization and + * deserialization of Protocol Buffers messages. It interacts with structures, + * definitions, and metadata generated by the `protoc-c` compiler from .proto + * files. + * + * \authors Dave Benson and the `protobuf-c` authors. + * + * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. + * + * [protobuf-c]: https://github.com/protobuf-c/protobuf-c + * [Protocol Buffers]: https://developers.google.com/protocol-buffers/ + * [BSD-2-Clause]: http://opensource.org/licenses/BSD-2-Clause + * + * \page gencode Generated Code + * + * For each enum, we generate a C enum. For each message, we generate a C + * structure which can be cast to a `ProtobufCMessage`. + * + * For each enum and message, we generate a descriptor object that allows us to + * implement a kind of reflection on the structures. + * + * First, some naming conventions: + * + * - The name of the type for enums and messages and services is camel case + * (meaning WordsAreCrammedTogether) except that double underscores are used + * to delimit scopes. For example, the following `.proto` file: + * +~~~{.proto} + package foo.bar; + message BazBah { + optional int32 val = 1; + } +~~~ + * + * would generate a C type `Foo__Bar__BazBah`. + * + * - Identifiers for functions and globals are all lowercase, with camel case + * words separated by single underscores. For example, one of the function + * prototypes generated by `protoc-c` for the above example: + * +~~~{.c} +Foo__Bar__BazBah * + foo__bar__baz_bah__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +~~~ + * + * - Identifiers for enum values contain an uppercase prefix which embeds the + * package name and the enum type name. + * + * - A double underscore is used to separate further components of identifier + * names. + * + * For example, in the name of the unpack function above, the package name + * `foo.bar` has become `foo__bar`, the message name BazBah has become + * `baz_bah`, and the method name is `unpack`. These are all joined with double + * underscores to form the C identifier `foo__bar__baz_bah__unpack`. + * + * We also generate descriptor objects for messages and enums. These are + * declared in the `.pb-c.h` files: + * +~~~{.c} +extern const ProtobufCMessageDescriptor foo__bar__baz_bah__descriptor; +~~~ + * + * The message structures all begin with `ProtobufCMessageDescriptor *` which is + * sufficient to allow them to be cast to `ProtobufCMessage`. + * + * For each message defined in a `.proto` file, we generate a number of + * functions and macros. Each function name contains a prefix based on the + * package name and message name in order to make it a unique C identifier. + * + * - `INIT`. Statically initializes a message object, initializing its + * descriptor and setting its fields to default values. Uninitialized + * messages cannot be processed by the protobuf-c library. + * +~~~{.c} +#define FOO__BAR__BAZ_BAH__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&foo__bar__baz_bah__descriptor), 0 } +~~~ + * - `init()`. Initializes a message object, initializing its descriptor and + * setting its fields to default values. Uninitialized messages cannot be + * processed by the protobuf-c library. + * +~~~{.c} +void foo__bar__baz_bah__init + (Foo__Bar__BazBah *message); +~~~ + * - `unpack()`. Unpacks data for a particular message format. Note that the + * `allocator` parameter is usually `NULL` to indicate that the system's + * `malloc()` and `free()` functions should be used for dynamically allocating + * memory. + * +~~~{.c} +Foo__Bar__BazBah * + foo__bar__baz_bah__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +~~~ + * + * - `free_unpacked()`. Frees a message object obtained with the `unpack()` + * method. Freeing `NULL` is allowed (the same as with `free()`). + * +~~~{.c} +void foo__bar__baz_bah__free_unpacked + (Foo__Bar__BazBah *message, + ProtobufCAllocator *allocator); +~~~ + * + * - `get_packed_size()`. Calculates the length in bytes of the serialized + * representation of the message object. + * +~~~{.c} +size_t foo__bar__baz_bah__get_packed_size + (const Foo__Bar__BazBah *message); +~~~ + * + * - `pack()`. Pack a message object into a preallocated buffer. Assumes that + * the buffer is large enough. (Use `get_packed_size()` first.) + * +~~~{.c} +size_t foo__bar__baz_bah__pack + (const Foo__Bar__BazBah *message, + uint8_t *out); +~~~ + * + * - `pack_to_buffer()`. Packs a message into a "virtual buffer". This is an + * object which defines an "append bytes" callback to consume data as it is + * serialized. + * +~~~{.c} +size_t foo__bar__baz_bah__pack_to_buffer + (const Foo__Bar__BazBah *message, + ProtobufCBuffer *buffer); +~~~ + * + * \page pack Packing and unpacking messages + * + * To pack a message, first compute the packed size of the message with + * protobuf_c_message_get_packed_size(), then allocate a buffer of at least + * that size, then call protobuf_c_message_pack(). + * + * Alternatively, a message can be serialized without calculating the final size + * first. Use the protobuf_c_message_pack_to_buffer() function and provide a + * ProtobufCBuffer object which implements an "append" method that consumes + * data. + * + * To unpack a message, call the protobuf_c_message_unpack() function. The + * result can be cast to an object of the type that matches the descriptor for + * the message. + * + * The result of unpacking a message should be freed with + * protobuf_c_message_free_unpacked(). + */ + +#ifndef PROTOBUF_C_H +#define PROTOBUF_C_H + +#include +#include +#include +#include + +#ifdef __cplusplus +# define PROTOBUF_C__BEGIN_DECLS extern "C" { +# define PROTOBUF_C__END_DECLS } +#else +# define PROTOBUF_C__BEGIN_DECLS +# define PROTOBUF_C__END_DECLS +#endif + +PROTOBUF_C__BEGIN_DECLS + +#if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) +# ifdef PROTOBUF_C_EXPORT +# define PROTOBUF_C__API __declspec(dllexport) +# else +# define PROTOBUF_C__API __declspec(dllimport) +# endif +#else +# define PROTOBUF_C__API +#endif + +#if !defined(PROTOBUF_C__NO_DEPRECATED) && \ + ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +# define PROTOBUF_C__DEPRECATED __attribute__((__deprecated__)) +#else +# define PROTOBUF_C__DEPRECATED +#endif + +#ifndef PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE + #define PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(enum_name) \ + , _##enum_name##_IS_INT_SIZE = INT_MAX +#endif + +#define PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC 0x14159bc3 +#define PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC 0x28aaeef9 +#define PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC 0x114315af + +/* Empty string used for initializers */ +#if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) +static const char protobuf_c_empty_string[] = ""; +#else +extern const char protobuf_c_empty_string[]; +#endif + +/** + * \defgroup api Public API + * + * This is the public API for `libprotobuf-c`. These interfaces are stable and + * subject to Semantic Versioning guarantees. + * + * @{ + */ + +/** + * Values for the `flags` word in `ProtobufCFieldDescriptor`. + */ +typedef enum { + /** Set if the field is repeated and marked with the `packed` option. */ + PROTOBUF_C_FIELD_FLAG_PACKED = (1 << 0), + + /** Set if the field is marked with the `deprecated` option. */ + PROTOBUF_C_FIELD_FLAG_DEPRECATED = (1 << 1), + + /** Set if the field is a member of a oneof (union). */ + PROTOBUF_C_FIELD_FLAG_ONEOF = (1 << 2), +} ProtobufCFieldFlag; + +/** + * Message field rules. + * + * \see [Defining A Message Type] in the Protocol Buffers documentation. + * + * [Defining A Message Type]: + * https://developers.google.com/protocol-buffers/docs/proto#simple + */ +typedef enum { + /** A well-formed message must have exactly one of this field. */ + PROTOBUF_C_LABEL_REQUIRED, + + /** + * A well-formed message can have zero or one of this field (but not + * more than one). + */ + PROTOBUF_C_LABEL_OPTIONAL, + + /** + * This field can be repeated any number of times (including zero) in a + * well-formed message. The order of the repeated values will be + * preserved. + */ + PROTOBUF_C_LABEL_REPEATED, + + /** + * This field has no label. This is valid only in proto3 and is + * equivalent to OPTIONAL but no "has" quantifier will be consulted. + */ + PROTOBUF_C_LABEL_NONE, +} ProtobufCLabel; + +/** + * Field value types. + * + * \see [Scalar Value Types] in the Protocol Buffers documentation. + * + * [Scalar Value Types]: + * https://developers.google.com/protocol-buffers/docs/proto#scalar + */ +typedef enum { + PROTOBUF_C_TYPE_INT32, /**< int32 */ + PROTOBUF_C_TYPE_SINT32, /**< signed int32 */ + PROTOBUF_C_TYPE_SFIXED32, /**< signed int32 (4 bytes) */ + PROTOBUF_C_TYPE_INT64, /**< int64 */ + PROTOBUF_C_TYPE_SINT64, /**< signed int64 */ + PROTOBUF_C_TYPE_SFIXED64, /**< signed int64 (8 bytes) */ + PROTOBUF_C_TYPE_UINT32, /**< unsigned int32 */ + PROTOBUF_C_TYPE_FIXED32, /**< unsigned int32 (4 bytes) */ + PROTOBUF_C_TYPE_UINT64, /**< unsigned int64 */ + PROTOBUF_C_TYPE_FIXED64, /**< unsigned int64 (8 bytes) */ + PROTOBUF_C_TYPE_FLOAT, /**< float */ + PROTOBUF_C_TYPE_DOUBLE, /**< double */ + PROTOBUF_C_TYPE_BOOL, /**< boolean */ + PROTOBUF_C_TYPE_ENUM, /**< enumerated type */ + PROTOBUF_C_TYPE_STRING, /**< UTF-8 or ASCII string */ + PROTOBUF_C_TYPE_BYTES, /**< arbitrary byte sequence */ + PROTOBUF_C_TYPE_MESSAGE, /**< nested message */ +} ProtobufCType; + +/** + * Field wire types. + * + * \see [Message Structure] in the Protocol Buffers documentation. + * + * [Message Structure]: + * https://developers.google.com/protocol-buffers/docs/encoding#structure + */ +typedef enum { + PROTOBUF_C_WIRE_TYPE_VARINT = 0, + PROTOBUF_C_WIRE_TYPE_64BIT = 1, + PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED = 2, + /* "Start group" and "end group" wire types are unsupported. */ + PROTOBUF_C_WIRE_TYPE_32BIT = 5, +} ProtobufCWireType; + +struct ProtobufCAllocator; +struct ProtobufCBinaryData; +struct ProtobufCBuffer; +struct ProtobufCBufferSimple; +struct ProtobufCEnumDescriptor; +struct ProtobufCEnumValue; +struct ProtobufCEnumValueIndex; +struct ProtobufCFieldDescriptor; +struct ProtobufCIntRange; +struct ProtobufCMessage; +struct ProtobufCMessageDescriptor; +struct ProtobufCMessageUnknownField; +struct ProtobufCMethodDescriptor; +struct ProtobufCService; +struct ProtobufCServiceDescriptor; + +typedef struct ProtobufCAllocator ProtobufCAllocator; +typedef struct ProtobufCBinaryData ProtobufCBinaryData; +typedef struct ProtobufCBuffer ProtobufCBuffer; +typedef struct ProtobufCBufferSimple ProtobufCBufferSimple; +typedef struct ProtobufCEnumDescriptor ProtobufCEnumDescriptor; +typedef struct ProtobufCEnumValue ProtobufCEnumValue; +typedef struct ProtobufCEnumValueIndex ProtobufCEnumValueIndex; +typedef struct ProtobufCFieldDescriptor ProtobufCFieldDescriptor; +typedef struct ProtobufCIntRange ProtobufCIntRange; +typedef struct ProtobufCMessage ProtobufCMessage; +typedef struct ProtobufCMessageDescriptor ProtobufCMessageDescriptor; +typedef struct ProtobufCMessageUnknownField ProtobufCMessageUnknownField; +typedef struct ProtobufCMethodDescriptor ProtobufCMethodDescriptor; +typedef struct ProtobufCService ProtobufCService; +typedef struct ProtobufCServiceDescriptor ProtobufCServiceDescriptor; + +/** Boolean type. */ +typedef int protobuf_c_boolean; + +typedef void (*ProtobufCClosure)(const ProtobufCMessage *, void *closure_data); +typedef void (*ProtobufCMessageInit)(ProtobufCMessage *); +typedef void (*ProtobufCServiceDestroy)(ProtobufCService *); + +/** + * Structure for defining a custom memory allocator. + */ +struct ProtobufCAllocator { + /** Function to allocate memory. */ + void *(*alloc)(void *allocator_data, size_t size); + + /** Function to free memory. */ + void (*free)(void *allocator_data, void *pointer); + + /** Opaque pointer passed to `alloc` and `free` functions. */ + void *allocator_data; +}; + +/** + * Structure for the protobuf `bytes` scalar type. + * + * The data contained in a `ProtobufCBinaryData` is an arbitrary sequence of + * bytes. It may contain embedded `NUL` characters and is not required to be + * `NUL`-terminated. + */ +struct ProtobufCBinaryData { + size_t len; /**< Number of bytes in the `data` field. */ + uint8_t *data; /**< Data bytes. */ +}; + +/** + * Structure for defining a virtual append-only buffer. Used by + * protobuf_c_message_pack_to_buffer() to abstract the consumption of serialized + * bytes. + * + * `ProtobufCBuffer` "subclasses" may be defined on the stack. For example, to + * write to a `FILE` object: + * +~~~{.c} +typedef struct { + ProtobufCBuffer base; + FILE *fp; +} BufferAppendToFile; + +static void +my_buffer_file_append(ProtobufCBuffer *buffer, + size_t len, + const uint8_t *data) +{ + BufferAppendToFile *file_buf = (BufferAppendToFile *) buffer; + fwrite(data, len, 1, file_buf->fp); // XXX: No error handling! +} +~~~ + * + * To use this new type of ProtobufCBuffer, it could be called as follows: + * +~~~{.c} +... +BufferAppendToFile tmp = {0}; +tmp.base.append = my_buffer_file_append; +tmp.fp = fp; +protobuf_c_message_pack_to_buffer(&message, &tmp); +... +~~~ + */ +struct ProtobufCBuffer { + /** Append function. Consumes the `len` bytes stored at `data`. */ + void (*append)(ProtobufCBuffer *buffer, + size_t len, + const uint8_t *data); +}; + +/** + * Simple buffer "subclass" of `ProtobufCBuffer`. + * + * A `ProtobufCBufferSimple` object is declared on the stack and uses a + * scratch buffer provided by the user for the initial allocation. It performs + * exponential resizing, using dynamically allocated memory. A + * `ProtobufCBufferSimple` object can be created and used as follows: + * +~~~{.c} +uint8_t pad[128]; +ProtobufCBufferSimple simple = PROTOBUF_C_BUFFER_SIMPLE_INIT(pad); +ProtobufCBuffer *buffer = (ProtobufCBuffer *) &simple; +~~~ + * + * `buffer` can now be used with `protobuf_c_message_pack_to_buffer()`. Once a + * message has been serialized to a `ProtobufCBufferSimple` object, the + * serialized data bytes can be accessed from the `.data` field. + * + * To free the memory allocated by a `ProtobufCBufferSimple` object, if any, + * call PROTOBUF_C_BUFFER_SIMPLE_CLEAR() on the object, for example: + * +~~~{.c} +PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple); +~~~ + * + * \see PROTOBUF_C_BUFFER_SIMPLE_INIT + * \see PROTOBUF_C_BUFFER_SIMPLE_CLEAR + */ +struct ProtobufCBufferSimple { + /** "Base class". */ + ProtobufCBuffer base; + /** Number of bytes allocated in `data`. */ + size_t alloced; + /** Number of bytes currently stored in `data`. */ + size_t len; + /** Data bytes. */ + uint8_t *data; + /** Whether `data` must be freed. */ + protobuf_c_boolean must_free_data; + /** Allocator to use. May be NULL to indicate the system allocator. */ + ProtobufCAllocator *allocator; +}; + +/** + * Describes an enumeration as a whole, with all of its values. + */ +struct ProtobufCEnumDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** The qualified name (e.g., "namespace.Type"). */ + const char *name; + /** The unqualified name as given in the .proto file (e.g., "Type"). */ + const char *short_name; + /** Identifier used in generated C code. */ + const char *c_name; + /** The dot-separated namespace. */ + const char *package_name; + + /** Number elements in `values`. */ + unsigned n_values; + /** Array of distinct values, sorted by numeric value. */ + const ProtobufCEnumValue *values; + + /** Number of elements in `values_by_name`. */ + unsigned n_value_names; + /** Array of named values, including aliases, sorted by name. */ + const ProtobufCEnumValueIndex *values_by_name; + + /** Number of elements in `value_ranges`. */ + unsigned n_value_ranges; + /** Value ranges, for faster lookups by numeric value. */ + const ProtobufCIntRange *value_ranges; + + /** Reserved for future use. */ + void *reserved1; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; + /** Reserved for future use. */ + void *reserved4; +}; + +/** + * Represents a single value of an enumeration. + */ +struct ProtobufCEnumValue { + /** The string identifying this value in the .proto file. */ + const char *name; + + /** The string identifying this value in generated C code. */ + const char *c_name; + + /** The numeric value assigned in the .proto file. */ + int value; +}; + +/** + * Used by `ProtobufCEnumDescriptor` to look up enum values. + */ +struct ProtobufCEnumValueIndex { + /** Name of the enum value. */ + const char *name; + /** Index into values[] array. */ + unsigned index; +}; + +/** + * Describes a single field in a message. + */ +struct ProtobufCFieldDescriptor { + /** Name of the field as given in the .proto file. */ + const char *name; + + /** Tag value of the field as given in the .proto file. */ + uint32_t id; + + /** Whether the field is `REQUIRED`, `OPTIONAL`, or `REPEATED`. */ + ProtobufCLabel label; + + /** The type of the field. */ + ProtobufCType type; + + /** + * The offset in bytes of the message's C structure's quantifier field + * (the `has_MEMBER` field for optional members or the `n_MEMBER` field + * for repeated members or the case enum for oneofs). + */ + unsigned quantifier_offset; + + /** + * The offset in bytes into the message's C structure for the member + * itself. + */ + unsigned offset; + + /** + * A type-specific descriptor. + * + * If `type` is `PROTOBUF_C_TYPE_ENUM`, then `descriptor` points to the + * corresponding `ProtobufCEnumDescriptor`. + * + * If `type` is `PROTOBUF_C_TYPE_MESSAGE`, then `descriptor` points to + * the corresponding `ProtobufCMessageDescriptor`. + * + * Otherwise this field is NULL. + */ + const void *descriptor; /* for MESSAGE and ENUM types */ + + /** The default value for this field, if defined. May be NULL. */ + const void *default_value; + + /** + * A flag word. Zero or more of the bits defined in the + * `ProtobufCFieldFlag` enum may be set. + */ + uint32_t flags; + + /** Reserved for future use. */ + unsigned reserved_flags; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; +}; + +/** + * Helper structure for optimizing int => index lookups in the case + * where the keys are mostly consecutive values, as they presumably are for + * enums and fields. + * + * The data structures requires that the values in the original array are + * sorted. + */ +struct ProtobufCIntRange { + int start_value; + unsigned orig_index; + /* + * NOTE: the number of values in the range can be inferred by looking + * at the next element's orig_index. A dummy element is added to make + * this simple. + */ +}; + +/** + * An instance of a message. + * + * `ProtobufCMessage` is a light-weight "base class" for all messages. + * + * In particular, `ProtobufCMessage` doesn't have any allocation policy + * associated with it. That's because it's common to create `ProtobufCMessage` + * objects on the stack. In fact, that's what we recommend for sending messages. + * If the object is allocated from the stack, you can't really have a memory + * leak. + * + * This means that calls to functions like protobuf_c_message_unpack() which + * return a `ProtobufCMessage` must be paired with a call to a free function, + * like protobuf_c_message_free_unpacked(). + */ +struct ProtobufCMessage { + /** The descriptor for this message type. */ + const ProtobufCMessageDescriptor *descriptor; + /** The number of elements in `unknown_fields`. */ + unsigned n_unknown_fields; + /** The fields that weren't recognized by the parser. */ + ProtobufCMessageUnknownField *unknown_fields; +}; + +/** + * Describes a message. + */ +struct ProtobufCMessageDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** The qualified name (e.g., "namespace.Type"). */ + const char *name; + /** The unqualified name as given in the .proto file (e.g., "Type"). */ + const char *short_name; + /** Identifier used in generated C code. */ + const char *c_name; + /** The dot-separated namespace. */ + const char *package_name; + + /** + * Size in bytes of the C structure representing an instance of this + * type of message. + */ + size_t sizeof_message; + + /** Number of elements in `fields`. */ + unsigned n_fields; + /** Field descriptors, sorted by tag number. */ + const ProtobufCFieldDescriptor *fields; + /** Used for looking up fields by name. */ + const unsigned *fields_sorted_by_name; + + /** Number of elements in `field_ranges`. */ + unsigned n_field_ranges; + /** Used for looking up fields by id. */ + const ProtobufCIntRange *field_ranges; + + /** Message initialisation function. */ + ProtobufCMessageInit message_init; + + /** Reserved for future use. */ + void *reserved1; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; +}; + +/** + * An unknown message field. + */ +struct ProtobufCMessageUnknownField { + /** The tag number. */ + uint32_t tag; + /** The wire type of the field. */ + ProtobufCWireType wire_type; + /** Number of bytes in `data`. */ + size_t len; + /** Field data. */ + uint8_t *data; +}; + +/** + * Method descriptor. + */ +struct ProtobufCMethodDescriptor { + /** Method name. */ + const char *name; + /** Input message descriptor. */ + const ProtobufCMessageDescriptor *input; + /** Output message descriptor. */ + const ProtobufCMessageDescriptor *output; +}; + +/** + * Service. + */ +struct ProtobufCService { + /** Service descriptor. */ + const ProtobufCServiceDescriptor *descriptor; + /** Function to invoke the service. */ + void (*invoke)(ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); + /** Function to destroy the service. */ + void (*destroy)(ProtobufCService *service); +}; + +/** + * Service descriptor. + */ +struct ProtobufCServiceDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** Service name. */ + const char *name; + /** Short version of service name. */ + const char *short_name; + /** C identifier for the service name. */ + const char *c_name; + /** Package name. */ + const char *package; + /** Number of elements in `methods`. */ + unsigned n_methods; + /** Method descriptors, in the order defined in the .proto file. */ + const ProtobufCMethodDescriptor *methods; + /** Sort index of methods. */ + const unsigned *method_indices_by_name; +}; + +/** + * Get the version of the protobuf-c library. Note that this is the version of + * the library linked against, not the version of the headers compiled against. + * + * \return A string containing the version number of protobuf-c. + */ +PROTOBUF_C__API +const char * +protobuf_c_version(void); + +/** + * Get the version of the protobuf-c library. Note that this is the version of + * the library linked against, not the version of the headers compiled against. + * + * \return A 32 bit unsigned integer containing the version number of + * protobuf-c, represented in base-10 as (MAJOR*1E6) + (MINOR*1E3) + PATCH. + */ +PROTOBUF_C__API +uint32_t +protobuf_c_version_number(void); + +/** + * The version of the protobuf-c headers, represented as a string using the same + * format as protobuf_c_version(). + */ +#define PROTOBUF_C_VERSION "1.4.0" + +/** + * The version of the protobuf-c headers, represented as an integer using the + * same format as protobuf_c_version_number(). + */ +#define PROTOBUF_C_VERSION_NUMBER 1004000 + +/** + * The minimum protoc-c version which works with the current version of the + * protobuf-c headers. + */ +#define PROTOBUF_C_MIN_COMPILER_VERSION 1000000 + +/** + * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by name. + * + * \param desc + * The `ProtobufCEnumDescriptor` object. + * \param name + * The `name` field from the corresponding `ProtobufCEnumValue` object to + * match. + * \return + * A `ProtobufCEnumValue` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value_by_name( + const ProtobufCEnumDescriptor *desc, + const char *name); + +/** + * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by numeric + * value. + * + * \param desc + * The `ProtobufCEnumDescriptor` object. + * \param value + * The `value` field from the corresponding `ProtobufCEnumValue` object to + * match. + * + * \return + * A `ProtobufCEnumValue` object. + * \retval NULL + * If not found. + */ +PROTOBUF_C__API +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value( + const ProtobufCEnumDescriptor *desc, + int value); + +/** + * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by + * the name of the field. + * + * \param desc + * The `ProtobufCMessageDescriptor` object. + * \param name + * The name of the field. + * \return + * A `ProtobufCFieldDescriptor` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field_by_name( + const ProtobufCMessageDescriptor *desc, + const char *name); + +/** + * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by + * the tag value of the field. + * + * \param desc + * The `ProtobufCMessageDescriptor` object. + * \param value + * The tag value of the field. + * \return + * A `ProtobufCFieldDescriptor` object. + * \retval NULL + * If not found. + */ +PROTOBUF_C__API +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field( + const ProtobufCMessageDescriptor *desc, + unsigned value); + +/** + * Determine the number of bytes required to store the serialised message. + * + * \param message + * The message object to serialise. + * \return + * Number of bytes. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_get_packed_size(const ProtobufCMessage *message); + +/** + * Serialise a message from its in-memory representation. + * + * This function stores the serialised bytes of the message in a pre-allocated + * buffer. + * + * \param message + * The message object to serialise. + * \param[out] out + * Buffer to store the bytes of the serialised message. This buffer must + * have enough space to store the packed message. Use + * protobuf_c_message_get_packed_size() to determine the number of bytes + * required. + * \return + * Number of bytes stored in `out`. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out); + +/** + * Serialise a message from its in-memory representation to a virtual buffer. + * + * This function calls the `append` method of a `ProtobufCBuffer` object to + * consume the bytes generated by the serialiser. + * + * \param message + * The message object to serialise. + * \param buffer + * The virtual buffer object. + * \return + * Number of bytes passed to the virtual buffer. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_pack_to_buffer( + const ProtobufCMessage *message, + ProtobufCBuffer *buffer); + +/** + * Unpack a serialised message into an in-memory representation. + * + * \param descriptor + * The message descriptor. + * \param allocator + * `ProtobufCAllocator` to use for memory allocation. May be NULL to + * specify the default allocator. + * \param len + * Length in bytes of the serialised message. + * \param data + * Pointer to the serialised message. + * \return + * An unpacked message object. + * \retval NULL + * If an error occurred during unpacking. + */ +PROTOBUF_C__API +ProtobufCMessage * +protobuf_c_message_unpack( + const ProtobufCMessageDescriptor *descriptor, + ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); + +/** + * Free an unpacked message object. + * + * This function should be used to deallocate the memory used by a call to + * protobuf_c_message_unpack(). + * + * \param message + * The message object to free. May be NULL. + * \param allocator + * `ProtobufCAllocator` to use for memory deallocation. May be NULL to + * specify the default allocator. + */ +PROTOBUF_C__API +void +protobuf_c_message_free_unpacked( + ProtobufCMessage *message, + ProtobufCAllocator *allocator); + +/** + * Check the validity of a message object. + * + * Makes sure all required fields (`PROTOBUF_C_LABEL_REQUIRED`) are present. + * Recursively checks nested messages. + * + * \retval TRUE + * Message is valid. + * \retval FALSE + * Message is invalid. + */ +PROTOBUF_C__API +protobuf_c_boolean +protobuf_c_message_check(const ProtobufCMessage *); + +/** Message initialiser. */ +#define PROTOBUF_C_MESSAGE_INIT(descriptor) { descriptor, 0, NULL } + +/** + * Initialise a message object from a message descriptor. + * + * \param descriptor + * Message descriptor. + * \param message + * Allocated block of memory of size `descriptor->sizeof_message`. + */ +PROTOBUF_C__API +void +protobuf_c_message_init( + const ProtobufCMessageDescriptor *descriptor, + void *message); + +/** + * Free a service. + * + * \param service + * The service object to free. + */ +PROTOBUF_C__API +void +protobuf_c_service_destroy(ProtobufCService *service); + +/** + * Look up a `ProtobufCMethodDescriptor` by name. + * + * \param desc + * Service descriptor. + * \param name + * Name of the method. + * + * \return + * A `ProtobufCMethodDescriptor` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCMethodDescriptor * +protobuf_c_service_descriptor_get_method_by_name( + const ProtobufCServiceDescriptor *desc, + const char *name); + +/** + * Initialise a `ProtobufCBufferSimple` object. + */ +#define PROTOBUF_C_BUFFER_SIMPLE_INIT(array_of_bytes) \ +{ \ + { protobuf_c_buffer_simple_append }, \ + sizeof(array_of_bytes), \ + 0, \ + (array_of_bytes), \ + 0, \ + NULL \ +} + +/** + * Clear a `ProtobufCBufferSimple` object, freeing any allocated memory. + */ +#define PROTOBUF_C_BUFFER_SIMPLE_CLEAR(simp_buf) \ +do { \ + if ((simp_buf)->must_free_data) { \ + if ((simp_buf)->allocator != NULL) \ + (simp_buf)->allocator->free( \ + (simp_buf)->allocator, \ + (simp_buf)->data); \ + else \ + free((simp_buf)->data); \ + } \ +} while (0) + +/** + * The `append` method for `ProtobufCBufferSimple`. + * + * \param buffer + * The buffer object to append to. Must actually be a + * `ProtobufCBufferSimple` object. + * \param len + * Number of bytes in `data`. + * \param data + * Data to append. + */ +PROTOBUF_C__API +void +protobuf_c_buffer_simple_append( + ProtobufCBuffer *buffer, + size_t len, + const unsigned char *data); + +PROTOBUF_C__API +void +protobuf_c_service_generated_init( + ProtobufCService *service, + const ProtobufCServiceDescriptor *descriptor, + ProtobufCServiceDestroy destroy); + +PROTOBUF_C__API +void +protobuf_c_service_invoke_internal( + ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); + +/**@}*/ + +PROTOBUF_C__END_DECLS + +#endif /* PROTOBUF_C_H */

v43EAUw`9K#c=x_GW{M>WirAUGXXN-gN?Fn@4ptt%UXB+Y~r z6ygV=jo7>oy(m)cvX4(~D27YSy+fp%!k?YvU6$y*-pX z$VR0|lmb=v1-kk~sNZFr#A?QHwmR-E$h=9&=EgB8JlO+Wssy zN^p0(dLQrH-)Nkxm0(BAhUg+6_O!G39xdgVbo|x21mO_?^3}Yp!FuWS_A})`4(+MQq{&w@6EbR=Dh*D zHZe(p_>27F_2Bd(chkByRlyMJ_Ha`)jis`rFyM;#JC&=+g>nzfTdTP;7L9~i!u1wW zB$ zTX|JZw)WPeEL9wUigOVcbZNQmjKsC$CJj!lt1S}( z3|`@@71N4Csm)1{wLxuEdvy?PSA5{}CAfH2{?0%IDJ-b0ZcJ5PNYiyI^;b9PcO-$P zNA-oN*~D{rkjp#4d>>oN_OP>6!>l11O?sg8)Csn=)CO43qpRxvXBi4NVvxO_V{D*x zT89?EN6LRY7{`2=Ezj0)g~ugc!?wZ;6K`guhc$PY#mU8wZeaL_T z2Rq!fJbRq+fk9H)WOtk(OooMu0<2^b@OUj9Y`O|pZTb}W*j_x*tP5SqWG&6$(c z5Du89&3J-r-mbBZY+J>&sse{6&cvZT88B}~0=y=M>wyLlHMO;5Dx22m{UbPnx8_zv#LY}@8%;%s|O z(5t6E=x#QPg!CvZwa2de~fnzJF!zeJu1vefEJQ-r(jVr7o z8dbIeli9}ctX@}tP_H%?gRnzapyUM?$a^%X33Bx$xAS-7%@+j6%_Rnhi+P0s{_G9C zX<@7RUy|7@?0F{o=CSGNjECD>6O}0R$KJoJotG-rl*Y0Rey!i2CD`ieBsIm>Uj6i_ z`|Q$@p393U(w%o70Dn66MK)m)8I72_l>&yr_k89m=PY}y6sN5PIy{)6Y|WRKjE0k* zyj}Q7ub02;9x~O1Hxu-hSu(x=5lqlFmWz)HFcr_QN zqN_@DUKURpnN|$Lw^+DZRhd<}N9S>5o!MIqG`y)lll*-TkA7C{l$EmU)^AC2l<&?O z4MKkx_u-(lu}>Ps!Q>(O>Q6xBEbPNtNVlSo9Pkl#fxoO%TG=ekFE|qb3>UXy(Go%_B-KoL=PB8rLBzDp ziFmW^3SUl=AkY%p($!aM~>n! zDaFX%Ucq$W3>6L~a=TSXzc&!zuI6cesjeSM_VSpH?af#Pl~55yY`F4;=)q3RQCM#s zviRL~^xt%_%l$2eWz|$I!Hlp89(i(=k}k2oW~PB2PO}hW=Nqg5Nr!`2?*x{Q`o} z1CyYS-I6uKFqyk)^&7hXC^bet%_m_@Z@w-)TSHrF<-v?(^&Cz7HqA9Xy)F#$7&& zf%PZm^i%Z5?jAp006f~;j`e0`&ew7J)JoCTJ1}+#t3}TD2FNK!qi#d}Wa8g1j$$bZ z$n5E>a4Y%DfsgFT4|%1k8>yV?$EmjcJG_e+3Q9*!QP)^%IRpFBaOcIy?81thI*iLImoC zj;oO5tvZ(CZgjZyazjsKJVH2f&2s^zAjWg{l1r2ZElV0~=RVWJsUjIT^mY5{Oy6Up`f6VFoHf9nFojFS2 z{M6Ur3TynSAIJVv-}0yaE}=x}(70sbR(?zIk=m#Xi8bPw!j)3I_SbO>ubso6LK>+| zd(Z~cq|;*jA!vxOOkcA+g^4hdzB2C?z-)}IFQD1~!b8}i@goBAoT2tFQLM@#XGYA` z7EeW17v$E;gtQHr@@077|MkDs+Xu`iLly|iz|Wo>%_FF zd+l2|cFQVJ2F!Lb3(zsiujOl9qs&%G6UXwW-+dr0Sx7Q2uYrTyem zLcj)J44&#W?#5qDr1Qr3D~w=K50iJt(xScx?v`&;f|#+UjO2v5(MOUN>x4OV$&42{uCx|vkmZnBCYCUGB24E zV)pJY3vj!v-$A05e8g|CeTlEOqizz@_M-MHjcIW8#}cB^?uVm)S;(i4r|CvEt^uWj zt8^nLTrA5aXYcHt7+6^=?Qgsi;-Lb6EDMKy5q{662MqgR_ETA}%d8VI!y%htG=vix zKT`Q*T|yF{Y_N{xU&30Ta<#U+qRQk}BWVMa+f}vrybP3wFG6ETQfwwjc>=i1_m|T)rwyB9l@+ZiA0KEpcXV3qb=kod%+(`x zH!oy#y1|ss#9J7qTWiEzL?gGo=z}W!d9Pl-k!AXn;BzFsddTA+kH_BFclIVK7+^%L z)^DCo;WM=Z%sJF&uUwDH&HF3x!Hd0*LrC@{w@|!CI*QE=J%#<+q)+oClK`SNiH24Z zmy2ZHIpe0l?fTOyLH43c*5aJM+OnWsqF8o67wQSUEJ2Bl{KD<~Iq*UXW6jTF=bQZv z1tGc*3h|1R&8`F>pu?{cF8#{xl?*mOECk4u6em zzCvwjFb6$O^g0}MtDh6}fZ^T2t$y##Q+}4neGIg4hB3R4A*!A`O?&4D3< zfH9MV66?SsnYDSPm#=q46O(VaH#hR(jBz@!#FyE&{OVK{!z^p^7b_kS(80gzcwgfj z$7#exTKb<+zC?qfNq+%yrCV`!9%_5tAAS?2)p1ViN!;>M7Ba*G3V3{{r^RJ{`j{gV zR3|(PA?q|zdDak|ssV~Z#@OJ;^AJnu>kS75kTyKy41QL_DWj3MgR&L@;n)@4hT186 zoLOvDw8YHSmyB`l1>E%}%aD;knK~FA`EU0IR*Kq8tNKx>&~+q4AL@*|6I{>SO687> zXBjqx#7@qz{D}~#k%|79!aWZv!c2ckL5h|cnEd`A2E_@?@&N?T@}J}4UAe%;Ceih> zXrY*Cjp0#gYb~GRTHUXCSgP6}4SmFr%6}=O5|Ra}W_f6fhPp=8o~t-T7zMUB!U`cR z{HDrbp-#t+DL&bI07ZL-KUeeUFuar0LH_cz{GBN>!|1k^KUG&OkUq3c)8WR*%$#&0 zG?fW!W!}b-5CNbZr^;6XoKREODVVV`PQd%r#@3I9KqVWJCGpYH7CE(LzBDPd(k?ioPM=Wc4~xLTetUQim=pCSy<77{j0lOkPVu&o5h^rL2>iQ8t$>1EHZvS4*3~F z{j%YVZm{lu$KQVOZmlyBRVXeP6l5<@RUK_kqZShd%F0$MI25I1;KR-FbQBb+7IPWL(a-{T? zAVPOjRN@PmCnuT&K5+p(Q;D3lEk!PZ!*E8 z5u^&k8SV532ipHlfzrTAxOU-!-7)F91Sx;W)nF~+h9Doh$~Qb{T(BQ#{Q}+OVILH< zS+z`SQwdIo=LojbnpS#O%4I`wq(T5&|A9?>Tr+p8m=mV)2Q~rEAJ`!L6S)gB!PjL0 z;T_B+rFo$@JAA+l-KBc?D64gXKokNeoWKM;HMjFJjM{Z*HD6lX1ztl+(tD_64 zMeyfCf<}euAy1pse&{5EuXaItJL(NMB{T!jV-$>|1T=VaNbtebEo90GXyCm(60uHA zWAEn#7Oi5OEhG^xkc(GBi&QEn!YPvr&(amsu+`0{hKnqk=xOX)b0Lz}7Z6p5Hs0y> ztAUgRvV{TXWkH4kn^2ikGb)_O6wxvfC{hTPBBgf=6|Lnu+dWlg9OBi*nkEDCA7#I# z<}%0w?DKN?%&cA38-X{-O}sTj!!UH?U=#qB?+C;ZH>qL}tca`UH9Pv~W`?G2Df`#)e{XRR|nlH6r7< zBb(;G2{jFv)w(m>oB7{eR`_D@9{t4pgh2oDwfN%7dlO+5d@6d7I4L*5CxGYGte3aI zFL(?K3ObPZY1?2G=siJciaJ1wI%?G*H-i>~K4q7JYBcCr=wh3*ZwvtyM~k~%IPGIY z_w0RrO-{srdbQpt%gjYVh?>^f+f=qmUvKx}{n1WpMin&(n;69N$Zzv;gVIlg8`8Ky6%##x`t`xUR~*X z8|beVpjX!^Zq@nW=p{_$@|asj5#OKpHvZ6Fu9v}iqCqnZ&P+74AwwfM_2&5j=$_+4 zcHA|sQ!c!at9 z=@r*Bro7*T7l4mB2+81tImD2gNQB;%5>g{rOyJ3netz{i>Ua{YPEv17EBnB?2{L?3LPw*pR0 z{N`0>-t6Eg!MAs)o%OkgP8Rt(og}H1FV&|(qqoPO*%sJ1D%xTX_$T~FZdda&5$m6i znSfkfzqqe|1~qz1b>oU7q|zSj-VB?LG63>=PE|Y;IsqSeg&>AKR`0dCnCDHGa7XgC z3G(1oxY%9Q2|*$!Ms{&CwGl7YTQMz?u@S5gIXW}mp(W_OBg0A~Y)0xJOu@nUMH{mhqz?Q+WlF`uWW*O$iHoU*XMRpx5 z!&#nd!s;S4S%SO6sdI#xTs*bP%AQrHCl)JBd)Fy&!7C`R1&_ouEg)gPqyPeyhF*8a z?E#}v^oRDdL4+=sqxitQaoIu%+mN5ZouJC8@|0-)i?Y%_k6lVde!3kygbwf7AtWp# z(q_q-D$s9*bTrKqHdOCthPTH>3gCm(S^ghcqAmg zJ10A?NEPZ6G!+|5P(J?jj*8{2#8`OSqPLf>L0J=d zJlSq?k@0fv)*%I*@p3lMf9y@4!l0#3wS`W}exrWT+cYs7^r^ZQR0HKDWeHdrg3Ja) zTy1^$Wpw2O5_V6?zWip9TOJ8W9x6p7MY4*g^cH(WZ|79M;)(K2{}R23r;Q=Vm%&Q|9YX_wNHcF&7FO+SFxUPco?6DHH0F47I~{?rVCM_oxH?G^(e zIFR&`4+WZ+IyN=9Qh8C@qyPl`nXiuP^L!LhS)7^ZMg28^jy4lY${T8~MY_nXHXmCe z0x~mi+1e_S;9~R_F-M#e1qJ#mvs?kzxRu~EOfWx~XuZO#F4z4iv5JYCQJIR>?Z#|# z?ad=#^VH^Q43|lhfcWZnoY-BX^VOxySL$ZLUoFYPRQE9!7b_*B*Em3m%aHB|`0elP z;;VW7)n{0va35ilahy`g%UcL+tizLzD;{nHRL`l=-a_1LjQZY??FmqsDKYw1LeP~%pG5AG!eh;%NrY>>RpuSM6@A$BMadk8CAG=V3j`LM~%Hq`%0TbC>~#PozlVOMZp65L87I zx}o%nr!V|p1WtDnw*M8pa2!F&6IT8rrPwThzyWak8*mB>G)1JU6Sw%=Iw&LR%rj*@ z9B;_=`8#2-YvH4=u<@SmTDQImD9^#s9NsSmdTkF668vDEQZk=DbP`wr78TzSry|)-!l|Z%nL8D@twcq{QeycYG!J ztOM*TzCQhVE-$m+46a8eLY&7}Z>&=$1z)+RPeLLKe_#Mq8VB4}X;lKv;$1`K8h9`kE2d^v@`XQt-#=?|^8ee>XQc0$xNi57<%KXct_EDZ&jaC{nST0B^HD zvxG_X`e&c$QYJR)ht#1+<+SnESJlR|4PX|+Hc!+bmD-0V6(55{{)#k>#YUe)%%8NB z4cC|j#VVA1uN$6HoB<&Z}Pr z=%kze;2N6bNuxPqShdAUXIZmscQRDAsFZu;c;i969$Hc9(|{FiBLhw?1=TRLuOo!u zA0vt8YvX~))1EeAnELB%=|zVeZ`xPv2OX4|iO+{a72#08t;iZJ;W;=>jj4-u23vwd z88(IU$1RMoyIWHes0v4;CF@zepi!i-{vq&!U|45^i}Xt*YFd}*&T1+R3!&M3P;~o&_2eVO6`}ZILLR+audm=plR1DTr_fwdMr=T+tMKCI& z9&p}&(_N~G%yrt6?$LKsZI`ToqA^lm?RaDd9@a=>)8CwiTL9#i(Px4K_nX&YWYS|1 z)^ow3DWQIWg{(*p`0*scr?L{p%tdb?R+P}F@*Kr_4(3#DYRcHPGS z>(*Ei&kaLn=s^(I%3A6Z(kGj*q^x{YU;Ast(OvzdZ;J3jl;l`=2&83LXwpo?1z6lU zpBPC@2@Pe%SxCZ2$(F+GA>YGywynvruyvj9 zetA;Gqvsyn;NTsKeXK9($9Fw(VuJ=K6?u_9fPDp^gHdpBAFxa8Hz6h#4PB2q9AFx( z`vTz-`lXbm`GA~<&Poxs%syF<<$k)oa!KFch~iS?US?f7OuZrU~1tCKZ{35>N)vo^8H+5>gpML*QMVK{G z2E}Zd0JBOuWA&0sK>rkW&OmS|rbLK>LgBVJ3sOkWNP(H^rqsU^yZta6psj;5>|R%# z-}{7CZd^T6-6`*^Bl~3_G!~<(#MM$Y4G-U#9Qg5NnO#2Sd_nXIUw1Co-95_z+oFTL zz%c^SvfMWPe$2ODYX8IgZmh7IHCu9ewrQ7T4mV^1Td)!J9@4X{G*2CBVkFc&qrciT z=?(E);JE0QK!HRnoWExPD3G*PgHCGYp1uza{hQnlc8iG9a2ROr3=iH24f(6u18rk) zHy1Bxc_Ykr>LbAn+ZXQ^2OxTwG+$Ko*Hjs2a2*o{Gw3Pz@BToD%eZV&-^D--;)(K0 zChf1PsOKN>qMq$OprNaCG6RsFz)3DT4E9mjNzZg)CtAjS+CR@fb6sl;hs7o_Lb#pq z!KceNlmx36&I=t+UwKY-vasZPimZ!l|3tlmM%)P};d50P+pJGmBmIJC>e@%3j&|MT&bhbTX_{WO1j&pw>V-BLCfX&G-pB=cAWm^oJzW zG9+~>VL$DQJTp9i4uRw1fG8;(V#wgjr8i0nHUZnketW3=E2p(u5HkPS!82N}yjr2; zsXq*Id}bc(MOWm7xchl6IqiORohdBuj;R#BO$<(ONX|80(b#>7g^x#-ymFIwGP?)V zP$kuTRit6{*m&161}v(~M~`6g{C;ly@xudahcNtVMyMP>_k_Mc|L^9s5T!2D%my^L zovjU{_r4s4X}42_#TT`l`YEW)}W_0W`)`Xk5Ome@vNTN9N7l=Mu`J z0D`R)4$}Js6{SVSW7y^zE2lQw*c@KD zQnHZnmah)L>4Cqu*B%9MkCYnPXhx8#lM2P5E?-%0|qud}A!ey8Ur0R{}% z0^JU`IVN(-1b9W-Wjm>Py#uS;BxyG)IIU}(Vbhjt9{>{F&N40lv%5}7@%NI{z%M@* z+b_h=>F?3LU+qZ9Lrsh&ZwBA0?+wA~>0J!J7QruqqWrH5aKHNNzUgJu&3wpw^!}7F z1b*Jy)zO_0GDSW^n9|C6JpD;J$V2J_eRKb6uB+MLpCwE%vs6SK)9*40F!NYYI_?A` zRXY3d9t6!yppI6kd+?@RWn5JmqKOm8QEuiKfE;%~-Am9fBqrD#uM}1U$6iUs zOp*N|Vrj9XL>FLcXyoxTk64`1db{=r545CcfQp}0C8qmn)%wWFb{4rE zjAB35N;#{CS|hxBuX3@ov&E-VkZoD2CP3F9@4l;7LY7l^<5WalXM(({I+I#O9`LPT zdZI;k!- zJ_0=Pla&R?eWs7sbbQS)^pt|pPA@`FXQV1;;z`FvCwrTuhPPy6e7Un*2Go0RRQG3} zX`hgTVA4ZQ5B0iCLh1yM?eh>l2tKIrG@>=5*Fh{`Ghb}X_YVp?6HHy%Z7atj%EYq4G`Mce(5994$}0M#J(XZp&&bf_ zOVggT>Y>4;zxNsf8M)xzhhI?pjNK516x`t*AnvF1z(c)6zY+T5pw_G%jd2jg4Ym1s zcW2CQz3&@^4A5m;m{A4dFZvBKO2CasMq4H^R>h0xPNeY~!9Ie(RWRGb9$q??`@L8_ z68;mT5TmBIGY&F!#m#|MI*u}}r^lBazOn5AlVFMW0i0M@GOQZ&!G;5$WJ|FrOqz8m z+~@g!QxzD+nksxUyzv2 z&P+06e8#`QtE$v;mPhyATlu8dnn+n{W9=0mN`x?e_Og}ID#eA22`m~~o;EUzh&m0S zewGJwJD4v)GtIX%_8rniSpXbMOTJcZ{}qwW8Ufmw#@`7a(VM=-EZf2uQtmin())Lf zZ_vgwPMWaBlX9YaJnZ?yU#{2>NGFm(%&w?Qmo9kkXJY0M)q`T)CVmXp(mgcbK( zJHoXXmK|TJoWZP%czaA&k4eX~5h<(_sB56l=iIr9IP)EvXPYNO8!0%G@R=A#uWfiN<2YjXx^MJtF73qx`=?sUpGiKOg-Z2kRjkumF@=5;sNF27pjH?wEsN z;Zf1wjf$|2NBtA&fOqBjJKrYYGqWpO+er*?fo!B(!SG&e z+u=!i&IYOu+Zd*c%l-!XJ2R@DCy;~uG$?WirkLSZpG2nvfYKpw)P?9iAWcnWQ;ybq z7%BrZd2>?&!JbjI*QcBb3RaY2XaEM($5}PvHp2IsHoO-dq)hLT*jD?eqlAv=kiR`t z-8URGiN&Xd=>%4wyd{b_uW@`&VSPUwGqrDRjC)xsnOdyFr)GoDeUE-dN4 zw7PMj{!w|wnZBRyAI-mK3g4W`Oc!iwEc;Hd5mb9zv18TE-!|72*~DBOu`qq2IjCz0 zu3Y4TwdF=cL3(1E4Vd=rp?zjQBtnl>g(@?(77GmnTpRQS9OOLbNzI3_U&OyCjjpU9><>I0G68Fp@y}j=Iw7lAe8+ML|m7sGxYC`e=~s7%>v=Jp;sG0Bd|RTWKH$YZW0! z*bE$ct$qRWHplc92H>{hx4EWd-sw9164I^Z$h8=KXjNmUqUb{AqFzIV5v)z{$R%fN zC`X-?thfRDg>n%BC$uOCCqF%`rZ9@!#sF%D)YcvZSS+%OJqT^)Z#a&h9DwC4JCf!5rNAlfcHtnioh8$z zEmVW@lOqgBdOv11ZW#BY2hgI)Qqht*Tc}lNrU}pPCyxv4Ua6j-c zq<=FOCC=717%GAJdG+b>L z>kymAj|6st>)0W-7#C5B=yDRFmbR3eO>f7!Y_ z;L?4mCIpyY6JR;cg@o>OVZPJ{Ba-I86j9!u$t_SYGY^t=GaXm5$+ zvxWweRX1W%!!=Og%$Tw|Rv4ZuNG_;xv!3)y@xxO#wFs!rpv)~DPOy%@-E~8|SUCC% zOzuqr&EEH%wo9xmJ+l7R%Q7*yxdAn~0y4D$hy!w$zu^)%FW?cknl0#Qc;L*|0-fQ9 zFW?JUSS@Ib$TqSd<8a4OqgSEwT$NI};XH8u#%h1u+ST-g@$2#IeyKH;SvUm1Yg1|U z*Y&YKM?KAjxBPH;S+QtEeel2MgWiIIZ?qjRgO0B8xhpBD)&%*Gs=DDkRSb`MDCn;N za7;F-^~7;mEd$xBs`!C7XFJgTG;>=nbcbN8dN&@X0ywtEE3uhoG@cueV5{^%rZk_y zj7BPF7vrlx=CLHydORE#DrY%`S}z{)$JBa?4^-893ait1d`d*!KWUVPR3CxvBlAcz zY6nOe&w!M%5Xg~#Yyv4G`K;EHHlqVQ>ob7 zsK8$Vyp6_%{~K;5hydnSa)g6>A`9_PFoX*fV$a`pOc~no!mFv$ z7tFVbyT~mHRl2Rq+jadUO0tzm1Nbw=;7PR`+$A2aG#EpPsK;9;}Ql{sSR^l2!Ht#_Wpy;|HOE zePSPntUw5y{2`2<|RCcnFSH6^KjJ&7HQq;rMvPEgTYoyUEi?`M7n zn*r*r?UO+iHLY$n`7(l2*Z!o*BKdCyl1UoGU*yR{2m4_3gn;pY2$+K%Q-MG2z%jCv z%cMbP+5Zbi6F(o9!84hOz`y@vUV^wV677f$H^y0BWGfuU-oOEttQ@b5a&~!*L*Aa5 zoQ#P16jDEVhyy{M)sA+}tnc5?b-V&z;@02>1gpyeL`}n7k6bqO(_dKg+YC}OC1qy zuIZhpgNfV(5b~N05e@t1K?T8e+#g?3D8-of7~HZWBCh#)$yh9m)b?%JSx{#{DNl$a zslb8VAMhds(VL){YKqzcNQM8x5bOcgRfB?65;`J|mz0SErm(0`jPX1JgKVHoqExU1 z5#!kH*6Pu^J&`)%YFj(unha_ zmRuTFvJZ?gMv84$4eb`E*e>Xd?yfMjP)a+Y4yK~D4N1=3wNo)l5;rudH+zwdYTET` z1B~(<>{W%UU@rRn99$dnKR6vhzrY$P^E;TE?S_-V`yBSL{kWCe6e_22yEVc4wz}i{ zK24RG7aY9J+6WJga6`j=P{zv z=@UHzlcmOHprmj3AVZOY*5SVi_#F#nC|DI%l}2fE#n3Q7t_YaiPzsV@+UOS zdJpyF4C&>?$R2U6EfU`7yYofZQ~SW#jP^xvha?LzyBpxwai9}!(l7uZN4~reOP|Jv z=y%&;IaC~v%L+d2wAKf(IrP4eQu6$Z4I(`;Ns`{_>G@2**r9z34xSU)yUU>YfKl za1GZs79j-`lLd+(6?&VMh?Kn*7xRAWGFT ziaPeEX0{e;>qEqC28Gk^;ph{!KEeVt{MRyYoqEG4WZI@KQdx$fHY{*- z>t@Uw3Vo=|5GXP!kGXlFwZL#`3lm&L zgbW2BB;Sou=(Q0T#SXZ0m|d3AimWbQ>$}^X7Tf--y#8B>EUOeVZR?Mh%%w*_9JcH6 zNzI=qS=o6-0=EFTSc z-j_Dg;>bW)gy!*T7%&&`D2m+yYB5$X*d@5g9c7!14yZ(gpBHB}LOu;<{mGflMxrtb z?Y$fpWw5~Ed`29Ulj=Lr!{@0S9 z?RhL&6(BcS8)z=9JL@%$TJBrQUjS#-gige0{#x&Bq~)61yz%1v{Y*6PQsxo4;7m}d zV$G#d>V%auE3Tp@oT)4;>IaTX5jFW#f(|*1A3iUgjw&s+!dsPEWW{7Emx3;{T1<)+ zi!nu&u9ydOuLBR`<*0^f=!cb{^`1obpGH{DC9&egFu6=AYG?Jy=h9%q|u47jNZkol}YfpV5w&NbTlx6e0{ z6ob=mD!RyvQ7Koj$p)p`0tgOzi}4Go1g~OaLJbZsyuew1(CaOJbsmTa|6KevzVRq+ zlG<^#0nXM8TpcEtBGxV>V7mx03GuNj;QOMbmM_6>mrvCSZBaEb=8Iw+FQ~!L$VIj+3^KSB}@HNesUiGZfi2P0KwGXE8i zoL+{B-sRkOPMAI*ZTRGaFRt+XSVcKy!8kc1 z0=l`{=>##gq2m)6YIv)R|GM(82! zP-y~0MO}0-R9oWw2vmVv&JAj!{T2PIN19Vr-uaW>Ypc%n&%v+ zM#-=}tz#5`;zW9g_%#)F16uAvoCPx$OwAeS1cMJIN?{WDrx7Z%eKFB7vIZtoBs-)Z zp!C{LwW>VU190gU3{~VQ2w0fqGL^0g8iLuRV3mYUGI=+5^*`n%-bd%;^~$n(@jwS= zUnpcJ5vUBY(XvCb<;hGn$93QmH)$!BI73S&D=wq~X7jB~V|o;-rm@kMYitnBO)iy> zS)ne+biAF?Y%bjT)TpXTD&oWeV5rXF4WJDetC-D%luRR>3VqCqqFSK!q-|`Yp7*St z^y?P}uUzOo+jR9{dC-TGT)Vjr1XdiL%ln2)?5H}0yY$prfzrKLr> zTLoW$=;;xx$m(n0g*$9L%K2dg6@>$x@iQylHu0a=BPtFvrjd4t%00CN*)c6;Uec-H}*dI13TH@0N6 zpC`1Pu@TGlnTq?3QsL#;ACiv|k2C_e55 z7|`ufN?QC0h*mMv>0v*#v^?ckMQL$&iJ9MPp+onC=1|P6v5%iR=q?&jO#n?dpW_~h z-WgKz@tV)FEla|nVpmMhtn$CVyn7tRM8S$NHp5BX8uN-I{6L3dj@CcFW!A$_>vuPq zfoFBkMX#7~F3i&Xp>=-+?g%@IGmo4H01p`WH!o-2wxRoy(F>l+Fiu||RB|;Z52e?;0;No|a zhjP-`RCS8;%oj@#cv!B39Tn}@xrbSyrLnac6djpiqhmFM3GBa&6ki_A3D(BxUt^)l zTJ7hkwLKK6tKPdxF_6m}ak;3+8Mb1Djck>#8*}9p!e%15(40#R(EzI@;oV>IWL@qt(~+|D$;7_qVmVTaTJ9U#bz_qICsA zFeM;(Xo?1QSukRwb*)0tmn29@lC70ahzC~enhvPG=oLKOreuhsTwDLggol}lpN*E)7<=o9XhF@|4 zJrlUg8dV@|wACPIFutw`(@m6uXs#D#D%v%mI#W?%wkB`I)jkcY?eEPLI$$g(rJIqqH1d_hs)6=uows=r8-ckuL>h;svZY1{gJ_w~1#=$n=(xvD+yXuX zpyMP#{%@#ECkvbsz`@S>zwRP0>yF3LbvXS`;k>kyDe}4U5YR5r+uUv5KT%34M=>pD zJ8!SkBx6VMXlyhz7yLR$3^XaY2!v3^2QD9vz--OG##Ddg#k3pO7FVaY-?nxCfv?`a zfA)Pjew+f(sifOcC(q+9C0S+J+oeLH?UiUjK}o&UqPWP}0!4X@-dzGIHv*X_B0JV1M$gi`>`tNHP-)2$@Kd#B~u=tE2pl%1s^F1Ov$7+%shRt8zvx)0Z4K9XdFRw z@bfLmP!@c9;iH+-cbB+vajolsYTe50^`ve6fJkN%!406wSJd5;?}G$FMA)~8ct>nAUY=54vZPF~kk zpwwA=wROOG$V}MCB=N!=h1(^*+k87wjxa*R=xu+g6cvNo}Y+aStK+o z3=bjfZFLCS@0h~er3Y{)_oRtEY%RI=L~2L$qEvb>L41Q?F#8;r86*}Y*c$>92qB!J zXo>PVGJ4!%H8FE&JaGtdMU0|IdKLe8>kq8`lRybT=vi7Bn0=4OjMQuTf!;lo6wX0R z@F#5yZi(D)^J8xbN9w&Pv;q$nD6;DS6t0dX4%`yMwQ8&lkN9yl>;QYEU^~ zF+45-ssq)OxXN2qz;4H(l!Al4*GIsA#+YV@ZiRl_4n?RQWJosXLNt0sSzyunDtwHou3 zHn_>^kqC%uSC?T4SkqnrDbmfbPED{<*?#FMeJu5_D&i7Kr20JN zc+>Y#Em{nxR77kN;5SIo3FZ~s`*)X%WX1DeOo)cJc)h}PrPW8yE$M9}%(!;i z`9^*(j$%&?HUlo5osf)q3Gf3B?R$(oNhAi9Yj;7&JI{ChT!JurZ|o1L%-wT%R+8la zweS@bxbEi@n-#oRnwyr;->`r1NcVg3Dx;OmXUuB$ktW?0Q7Ra4y_gHv_##V`}v`$}HcvIty=S7PrA0G@IqkfvE~i{9~?XT5Yc6mwg46 zvJGAvY}4GRl(WapGff)50)zJPA-?|(1Y)~A?+V~J=S@HCs}$Y23kZA#S~t}rG4*$5xLQr`_Bl6eZB6tNzLjSX4xXK(CokjjWX)BI;&~X`+E!CZ~mRhS8`T9YW z*g*Z`vVd+R{N8SY0ky^v z74nVX#BKf zn9BDz3b4l~{9VqDz*2B*IB%FJnz>MWN%lP!&}s}P4J@p5xrcd7i9=*og#+RkNb&%& zIQ}z4$5V#*cZd^ht;%>n-Bk|vSiaFr^LVEPm3l`7UV$7n2xmmV7F!zqLvIvA=b5uL zq}IWm)+m|^$F8zY)2+qVu=`+ugwt+eX}dzqWsW$m zb|m{EyH)pO_R|=GI6eitB0W20x@O=+PACw6r1I@C z$0fDF6)%dvUNp9Sp?0UI&P|o6dZZ9>CmcN=s_v^REfIxzDY}Am7B2fGNeuZqo~+x2 zH^L3&rO3ls+P>6)g>lNbAmY+bc?-r}t3IV96;f@u&KA@Ax6kbTgQ3tVef^RP#tEBm-da7?U(Kq%{uEA&)D}3b9ic6>t_q-kZ{BV zj*LraCz7B>nuhQKHx)?-vEKLrA{cB@9Y%i9Ax=aDjs$-IB`+uXKYZ1=Kn<5h<;21` zW>ILf$=>AGr)riAHCu&q-#Uz3=R4Y+7fo>GQ$HDCpni9Vz_OX4VY?cIQeT_b3=ePL zRLydh`Ii0ak2AcFGn!M$H-*?#x0TnFIygAuxTO=s4+JwJ7V)CVvDyAjJc&dBcOR&S zn|Im*qsO`qm|dEba`#;xp*^oZ`y*;qW7^1_uAmym;LSaRBNkg2Ii0HS-EQ}xQz>4z zC@hKZL9NqxH6DT;RAgikVM+0ac%5cXYFHEk%u2uFg<|x4e{^pX?2Cf?BjC_t1T9eZ zj}I28w{by!K`UQ!@eR{BgZ-bGEmJ>KlD}e<$>BD=080nZckK>2$m+rEp0NetSL;JU z1Jf`~kr#2%<{ufrBIU$RdHmkJADe#o-l1=T>{P9#g&b z+nt!lu3Cqb9w_mz zX^z4wz$^Da!*XW$kN7&(z0^7s9#ONRm(QZv=6wn1BC($@pm-g#q4Xn|=6~<(TSFx? zYj(=RmV*clpY2sgRl<18l6Os0{zxcOtcq|DoBc|u#>e_gGM$An3KGE4peCTv8B6<1 z$!ulj$4G=3SDgbDT9VDAfxnUlx+galD5+$e2B7D><6;-DYM~c*`;(eA3)C_Jw~&Uf zao!Nt^n8PLxZX)zEa>s*mpCY_WArqO*6~`X{nI4BU+jJMCq3?~`iE;wqRRy6J;LQ_ zj!(1 zGJ|G98fv#(H>mE|)`0i;ECbnY<6#xoxDf?yK2DzYJ)=o-hg}ILJ>=x5se|xS zrT2u4qlZt`B(PRHtENE_-1G8Y!UjUU3_zDcJM{?%M5Zm;0nzYWI%TiK{?&&j&ugAi zZl>W?NjK1bk{QFr-r@keK&tKBIKk+S_d(~x$XLF;)w04YeWXf2?1!T!VdUhE-U&)$ z5?Skl!hzKLIO^t*PzP^%qY3KdUsP@A_{UKh{03QlPBEL+)0Lcy8@_FRh3K^%UjUVT zZOUc+PUXd2Y(?dQ{8Umne7|x)TkpNuPab^bt*&KYEy1-*6xdhQWLBx1{%JdRu3|3k zw9U5Q1`(zQ=oK4g(db>C(gS}*jfoQuhLy|+cHg#fOy=gL#YifVSF|_!Sg87Fl8-c(Prqh6T!K4HkeF3M(?`+aiZsG7~zT z*-tV|C6kXi6ha_i2_}v7kT}3rm^(&Ue?(qKH>$Ot>Na4}{x+yTq}dh@Fd24I3LyVs zIbceK?_qtunD`wEiG>K&SDgo%W1ul-qpjns4?l@p<(d6*PxRyZp7eCUYq_+I2N)jc z&miwyg-dhp+G(4^2#2rj;0*pqDd+GuJhn6$ZSqRbi3tSz+e!rdR9)6o{8gVUvZeeV zVCczNk2wM&20IGmWM;riqWGZiHU@9ek|%G|<~TCV46k(L1&YXbc9V)DiuWhQ`S9IO zI#Pf<{MWRDHByi!``v37d(vo|l*dM*di8sZr`lfqPxW$&ab$)*gEY8fb+LxlT&A@I z(&2fIReMfQozC8v_EmY>yOqm3O?2kc_EiWF3Iufj;Lpl>HYq?3QXU5=5UZ?U(+ULA zX|UDl=uyQ2sw8Fc<5T49t6&{@8rqEhL`83+6xYBkt==TZN7|V%n;ec?; zG~Y$RIMYn%4<*#VH-1-anytGwVv9&2?%H!tNy8p$5ju*es_fOM^EB~T%Q)7}fJx!- zzys|m$0V7j1i)6+6pFEHXiVV0AT_nvX#|8{d!@6NcuHHoM(V}EPA1qufVwUWTOzkt zDu0cq=tDY{IHLG9PF-b?zh%8-?rn57D5Qt++zi))a^Y-;>C7UCn3aFL{c^`C0{=+? ziCuDZu};6Vco<9ZlRF@%@OToJLv*txO`fPW;1mxVPzK{COGR3OwwO?lX{A>v2F3QrJv7!zS7+qp(-=lc6cq5-7PTQ1Vn**w%QJvopG_EoH~+3LG=RI3tZ&M*^XX z1ORB(!<88?Itb z+5HMw{KgROb*+TEjLCYwP2aswq)7lGs)=aueSP&E0hN+6rWws%jwB-F&W9YYH~n+^ z!A?>|0NTjxb9ry46!(ZWFTW?`P$%yJx~0J=+`wJkLJP z8O;K$?4THQq<7B3L-HK?k&*1;=s9$UBf(Ekz6FpKC_;PO@C848$e}CPWcSOKk7`96 zv@L6NQWAtD|DgBEK6H^Bu{;hKvcN}N-)Rg(vA+gVeFuBDjAi90lw(p+m1Ak9Su(%j`+;86`Xg$GC=85S24p=oruMzTpqwoW%uu`hz|-9Foka;k9cUW5ECO!JTazYV7a2!;B1kD5 zUkupSmQNF)fpTt&hhgO5Sk9%wJSIsu(;@MwlbQ5k=2n5m>V`}_9>Q~1GM$gyhd{d5 zW#U~s1E&6k(j5clvpd^Mv=Jqpju&_k3nqjw>C%t^#N@WkN=;vIOfF=ATOB>DD@}^X zlg}EzqrwPXl-2nE!UhQ$EsDmG-nJMDgY}BQO>#n3w1k_X`GceQEjUJtt0B8*Tdc<$ znl!ydb){4zIJDVaTPjmUryoaIp+&>^-E#`iW3`PPeM}{-zKr5bFHqJijWqbyOtfy| z2u&|W;r37rMP73!jBoRNy3CL@w&zJ;=_)fl*qak@$N6*^h=w~7^z#RzGcsW>Tajk6uA4m%_N(2;Gw&Nb zT0MLstuoJpr6D|R}p*P2=xBJ)a~9s?)v3?KlTk- zQf!4EKVAAI%AilLqW=^D;5dIg-vjy-rFLmdvHum`nv1EwB|fq#-_6vX{`>d5Th{lF z=dUNJ5imZhPn-!qn9gNORe=MudLISI{eFECR|>=N`8#{NKH7IxSGE54lyR&#!1|l7 zr^aOY;AsS-KqvQ$iZVR$^1N>I+%D=f)W~QV*nU_Bc;|c5SGZUa&=8u3#Z6o*E*@!A zxZJmkr1(JZEsf{~vMU26wTrOUrM}hcTU{1{V?o^NtMKZh))HD;pe9ukyvpAScJZxA zu+`T`2(wQtcp;RS)EK&oNzUe>pSVN?M)UBUdK?MXTK9zrk@~D%Ce9r^V6m zf6>PY{u(d_-J>?W^e?Jl-=|9Alc8#6XPI>UJYre~s4 zG+SW;n)9p3X9AdOAUp4fHefmDVW3?KuXeUUZceM)R;qo-b;*djYkb{s$F`UU2nVXl zdQ^Il+yL}DtHfbc**PJK{|2RZsD#m(14=)5Ln$-JVGjW%f$Zo9o5RS8JVrW*HH%`m z88W;Qu)={h@dpQHc9Xnl(cr`njUTIScLbxD>oExafrjnZP*6m7fgfz;Y}$RL=d|G! z2-S?Ty4)cFnA&+~7Yy&eSFsV$pQOy740_uEHA2OLeAW?{!E8)sV42emoI$V$aIBQCs{7 zj;)20Q%&E)N|g~n8ktSk2|PMrcolWh2vF|RArGcT72%1|PPDd=o}K6tT7p^_fB+ZZ zWoo**v6X{nYc2KZ^=r>_Gb4G4?*zcR-xty5(Z3BrlhNiH|K)+M%iJ zTl}QC`Mq5uZus2samG|w6{#uIEj+PD!Fd%|<(IDAsR8%(13pmsEFS*=UyGaHTx6{CexCDi- zfRGPLE@s9Vio3Mx1(u3E&+-UnT(~W(>>nZHtwVb02#IF>N94dPBVjsKuAgv8vJpW| zcj17ATB9Z+4OG-ji?;f{Re#WpP8z>)vsy6|p0#5bFVwg+T)hHtgd0`BGyN7=_%axF zcy!B5@iMIdZx)?N3W|Cksqvq0c)#41U^5t3U!@ZkHAvpFi=Gk2!u8oCl}P759VKQw z$a2w3v@ofJOZ2n*`NIc1D_10cm!znEX5Y0q9dCBMVza=Sa=pR2AGS}?wn}PqTtyK* zr9t~okO#Dv4!Jmc9vjgBltJ{o%xuu%wl4NexZ;{<8hBF{r85&Jxkqoh*b6L5Xt{7_ zPHiN8e&yi@Vp9~bT!{s2AukqlGpC1-qj(!y;;#|jIyQzMxG8|wQ`Fug*6S=XtK zT107u#lQO+jysZjJKOJl-%}-_Y_7k5%X|t)38uerzo;11p5EL5geMU#eLUvA;on^D z*Pg7QQWS(o%*6V!`Z{59q)`Aelwwr&MDh z?OOiCd{}E6)%8J1vVFP!f6I7YEgiZKR%m4|Tsekj6JkT$A|5Z{!xI2EP$nC8UC@D{ z8XQLI5Cg2HhjUwUlF#^^YBB$m2?RaDXK+xKxgomMCnz@5QD2$ixBcmUFPV5L{iR?r zsKcI9VG`r(owtl()ZC^{B8O#?BzL1rV2_?Ry?qq-_TW0;7zAwY*UfI35n$}d$uiD_ z)xP}q(BgF?b#1c;C}QWTq?o-%N>om@6byMQhX5OlBJX zEZu~0zSiT+u`6a89~|1l>cM`iY=Vo$>mWB%V^7VUsYqLO6V3Z)6;KMdD!E4Qjj}K` zKxJpzJYtn>L>@VuV<$>a=IxrEa=4OVYe$Yhf~`XXDuB_SC?hTgyh#T_ZcM6gw=Bqu zSjd5K?Bt+*n#z$a5&;m!j|{SSuI-*8nWx{}m19l1CbI+sY3JHRBpL(UAxkicX89xJ zU1glHYL%IPsjb*4Vn>^^od-+42huqKi}@S;mn$1oC#G*0nKD#AMcTaP;yM~kYlo+} zqqz)|tx<&NOLrW#?6taMGSX5M(-R%VOr0*|_9>FYjoV{r?SG$GVV~z?8#BcO3`?a( zbUXmv+)cFDXJcvqPVE$Y=6uq0gXe{DVMJxDMKh5#>=*qT=A3Tzg?8Ys&JrU)dgprl z3OV$UUWD;Zff;`lI`@)2y(2E@MdzV`A(6$oaISV&h|7$rxxJTsP%Th``Gija4$=;@ zIyz8E*?@@}Qjkr-GI1H*EI&cY05_y0wO{=yPb*240o|7aqkVaY^P<`|qGtz>eEMz$ zxbnHdYL#EMOS)NTeav{xx*GsmKPUF~)&3Z;>-N!FmbG!+tP4K6_aCPftTBGH0r_)A z%mMkSMDDA{@;fqGwQ;Zz0@jBZbf#8o`!{wZRMk7PgvK|j50Vgm!g11d>1GA-u$ez3 zt~np)Br`pr5cKd)cpM|c;V;}Yv1oPpes!ozx#4Mpc8I+g>@bkle1x88hPjd<$oop=j-V z0#$(XTn8aEC6UpFh$$ddUFMg6r$KSV9yah)eZqt61KP|Te4?5EF7Q;<5u#H)0|MsZZ_OL=Npb`Q-4|sWCQ!N8X@}&xRkbT&EstpFP!hhmSRbHCa+7s=cQD$2y7o@ zBgT%__}5UTW?rJr4^3aAHv9eVb%NZ+9i7;_Zs!cB7;{f3^gC(B8$ZdN6towTT|iJ- z6`8`?z5lcWNYrgThfrQ>^2y0rTn;GDfIGElf||O8;w4Zio*g`ya-Dx4QmaBJMNz>@ z%4UQl5RG94y6X!WH6L!$(@;{_FBXKOvVPg_JsCt*LJ~`SPhv3)8lwEX^N9a{d@5@G zuO4V3!j%HAp;61AkQHJCn$KxX9=I)O;-eA?bih=}?*+Zto35|a5@Gizsz7>px=Ej% z5{~Dv3#QIw^YLH;)B8Y#;cwq(zP|fI-UswY2N2!zA`Sk34KOl;Iurcw^(qXpdmd2? z6R`UMBHWk+wQJ7A`deAog~2eZ<7D8jU7(Y9_RWmyi59AoE+Uie?33c`uuF;W_TASF zoB#!DGiT)KciD~DG&0>sg6Rz3hf*;#3v*tob3!6uGs|j5Mw#g4{r74`PM)SNFgui+ zzbDoWkL1>WezMD)AqDE*oKEH0k?gcn4b-AZBHos|o8wWX!&sWbgSxj59m>vDOHMHi zp&QwahT7Uo0&ig=;YYo?A!4lM{?39NzXz;$^VacUQCfz{&^=`v0b+|EC6-eLwEK|9YL%r`PJ$)m{5kb?yBX zl~|tYL><`bJvj9@6hlYvQ<;U)Hhx^#ed^9tr@3QgB+p~rRjpW~i#}=>3H6(;FF<>% z&Hh@3xZ)$I%^3<_mPxvRL^2E;%%-vOE$c`4<8sxA#aI%w!Rwv?KV-I-^=&dKJ4n{B zC*b5y(2>AP2TycCvP*HEHz1SN~)&ZvW3+VwlLtZX}z31m@zAcY`u z01!YU^ke4bPf)F95o3L%QU|H%6OWT?tpV4NEY4ScNGB=iu-XSRv>U78qW>5#ed4Ui zj1s?>#pZ@Z;m)+ykC?waa3IS}cA!l(k7jgWA{qbUgZJ1{c*f_M{ZqlKy!X-$_%{+X zsdguk!|l9Yv}x~i5Sm@Bo3^ufRouSY~Cdp^emn8*nqEr-jebg2x=5K0I{SjEAza=&lwQ z3g)d0{7exfZgNy3;{91{M{48{sus5#S~M2czZ)QO&?yztFR2rM$QL0wk|c z1f@ccFoEDs`NT9rSEDn~Greg1xBg6DN>oV=Mp}DD_t~u8zN7ul6t~d$)2;K}{49;mk_u<)ZS?|Ln-w75-i*#qkl^(uOB>fY&6=^4-Ys zh+MbQu7*&@f@x(AnD2biQ?Ny@sKEH2$*AHeT17m8$Sw*ezrDcar~RaYZSj2TeOJeg zoAsb9zKP*Qt@5Njp@6NXKg=`79{(aa6LexaH-<8w^YIj4dOXQJqHTCX=2RF6*|Ky| z)H{9LKOFvPGEPm34{G_50v6x?w!zX$2DMQ%U|II&;&AhgAHqPCgvk`*hi!!SC?>xe z;Y(_i^&L?+>Y?{vDa@xwS&zp}$~{Y*>YWwY0V`YzV$P)DVDSq7;vtohGX!UbY5utu zGNN-(rM&gr+0)&bcx3l!mOy6Gb;A~%90rNvwe_8aAuaGWL zd6@t5EqU817p#>gO|GEEDQ-Ix!fn$A5?vE!gZaKk5L-z=u}ogT^e;$JOeA=qFa$xV zOpxw2BvaEq$2jp`ZEAI$4zRe*h7t^U7xd-9o&EH_BK(`IIg&CBy-T!0dZRPxXtvxk zas9kxCT(%3o+E?a0vNeN(*`pM(v3q70a+qxLNhKdg@I<9zFB`uNu!O$4$W*ES@jl+ z7RgaF>6hvv)UJj$8|=&k&)N8k7eh&PulKI|G41gN%k_z1zIYVaQS19X*!Y^4;Bx-F znP82>X^JHi;AX}Q(zkF@nH(|4+bsD<-GUqW#N|hTDxOM(6o7HW-JpF9U$WG$vW{x5 zVGM|Sxh0+d!@ZtB+}rUV?xg_YUZ?m&2UQa^Po5CW0Z-ZP{J+y21?;&|aju~-3=XX{ z(Oqs(Qm=6lZCK+?ZX}1cXz1M8vt@*)d@)CxdJ>WeVN?Ofo+6HioW%G!RCkuW7`*tI z6p?wN4ghFA?tbyxNnaUf>L7&eoDGs8<2B*cSP?ckDZX+je)=(qdcn?1{R7FR3q zyj0u;viy^`ZTwXLQoj2H$%yOuN5o@O_stA=f7a$TtZbN|GnoUuQ_cJAf&*|C?OO=R z7H-`sSNT3-zf@Kn<2|~8zFe-G4z#fRMOLu`pf-i-G5-(938BGvTImS%uWufS?8EI; z8v>mKI#n)n%6kqneuG^Vi|JXOhluAu_sF+h+2022XAA6S_+LL%V80G!fW6EId<@5k z_@2l^u52+0OltuKNjKmuG(~S{O@ccKfhOhra9FmjM)ZwJbmo{O_*%0x2l`_#2sJ8K{aGfuwXE!=% z%$7bq8R59oi>b1N9tA}0_ChWxK#%&>Y=iW|l!i#E{@LZf4phhmFkW6P#mifP3=vhC z3(b=%j~|uDGG)%G5cSpw{%j_$L{)A>KC=3nR7 z@2tFY+Fwb_Z`5=;7)V-v-DQPlAwDSXLBpMNVz!~hQ8@*Q+fm`Ie^K3TRmDCe9(;3* zv)BwBCkPSoQ<6D0ivW0vL#Pez%BuHf9_CCPe2a#TgCHcFI&s+~QN8|*&-3O83@ZqE z5!2eIs|f_yCCip|K5pVO^&tTEqN;xs5N?@U z%Z6{(l-c&(N22dY>=7u5EGw}WWfnHnl%?$;hRbcRDz>VQR&jUdNv_yQF_|E}v)G%S z5k4)DGe;1E5kyOAx)jxa!?btbcf~D}mtZ&-kG$Z__uzJ3LyJC*AZKMY0974jJGpRX zV>@{a2)1iAHH3d=?#GOkksQmg9c4c9=A^r{7|Hn3Fhpvi3RK(0$WJs_3~nkPU6@oW z%n$ANV>y*-l^(v@D0ea#dkZ?D9YASo{cs|bqRgrBe`*45mE295-r&+;Rcu6fe;`96P7ctNoWU;80* z{oQrNVdoWkz<1m|K<@(iAZ|WIt_IzkcC?J~F-Wf*AV~sy$Mi;+%TQ&ZOg90jH>1D; z;s~*A)I^ZCxMBidM6Lqq^!BU%N|+I=Ybt+3G4SK`KKa)sRa()PKt7lLXpSs{bqWw_ z;0xx$h}xMUV?F}oao*FC3Lak#`4o}o#V*L1vvLoK426O|zg6dpRm(0~w(@=}1dqyK zXCPwqGg-g0J=QH}uegK%y&%05epSdWTbQPi#bH~%`Y7Fh3{Zkqhn+BF#{zbEZ*-AXUxjNyi{9wS}T;{=2sU=82PUIHlOIXq|!!_`x|B71-^pW;BDDOu^e(s;V-uDt}$)26C+n)u;vA&?&H-zHVr1_XiuBo`fX2qGa ztS{z}8UPxM(b1)lDN?|U`&F?n;@K2o&>zBVg%D$peyi}ZPY28FkiyM`dArqURl=2l zsqCldm1!7X@ne=5s}((DdHEpYd`G&jB3V{1Nc}j!)r@a_5=y~mou@WW!V{GT%okVw zF)86>ODT{RY3=HPmaUX|DO~U@$~Dk`rdh-9f}JCV;iC+hvQ#S) z29biN9>{pYb$s)YgP9`dW#(8PvL+pGAD)@(TGN{h21 zS-dsKGD}uRmFO5l-v3E>pxUC(N6$K*Lset_=4&K+!uInZW^ef>uu4&c@} zu#nvm295)1Q_jI6xh75`_dG1^DI*tzhV*pS(^p3T$a z=hz6O76+Hfar5&U12Sq{5dcB*8n>!`fsy8jt99=#-I^lBA%*LbfT~~N3}D)} z0Hjfe+d(HoZ)D^3FqDOOrubP+(h{`LZnh*8yq<*L9_TpjG;^e6D!kx0ipjp9b@XMR zoAIPal%qX_>-mbXn1IoMICJCHf$I;{DBGc`Yq|i0K4+6*^o{8hl#Xp%+M6-1N_hml z3Aueddaf!Qvu3D05YjaKw?4dG>Ld^B6%fb2_+Ce9XmqdMcj>r22`_HQyOh)lL%PLo zU_E&h&$0aCGT?#)q3!n3?+0yjL96odfl8Y1w!Rs&_L!(kYbx@LczQXpvgfIU?M;XmW-q}o@WBA zhnf$2&Jz%JBVhd8-W*YL^S-3cVqXEt%hOjgA{P~R0A-MM(ibDL3|V3FjLNO-fEWXC zP4o_4#fGNA_sT3u4Bwo?S_`r=HuiV&POQ3V68)P<#P%1g z8IeYkDW;T>Wmf56Z)n@PaO%%(G@-$$-_2A9TSz^XuN1bTfu{(S`k0(ddi^Rga)Cp! z^o#RW0BKK_iBih!xScdUJ8xCjy@g2D(0Fi01RuPETTUvCk%?^uLSL|e505yQfK3M; zZdtu`PaZ}n1&V_s>KFNNV({bA_6qH>RU(+73imeI276k-Jg zGB!C8Is0$~&aJV~j?EvuhuwARRU4hVY<#`bdN|Zcj5W=C26{~Mq}K#>3^W$fA`hol z=wb=d%EzaVH)@}xt6n!+$zcwYC*6%i0AzF{k~cTJd}_6zt0|WXVddnnpGnG_4#Fyp zqOI}OL#?J{U_(E4IZ|$fXY8pV4KD!e(s^ucC4|ty|>p zg$s&O7HeE=D4)fzWt4Ls%4PZxRL0`lWKvsj)TMJWIr5GAG8NU$c3Yeb`*;A|d8d@z z&U*0pp~QF8DK^<0uO-uyS;QxaD03zG6?Uj}1`PI+*Wp>b{1uF4c2qO$mrJ0kqZVpc z36$^T67k~+M7_n!lXgX`2=H8Ylrjr{E@pSBBHnd@z_z}cC_Ka<>lq{T3T5|_?R z-O)U8C#o_8u4@h+9Xqp2O9Sq+!*FYG%DG;6s7zXOZ!oE-?SJsZC+SJM$EZiZ%tte5 zO{i;5cUnhfNL!IeE$pQ=}Bif zx2laCbop5NLH?9@Jl1-dvQ3)WT}A>&{_xMWer`5~W~ZGzn=|PvI|i`!hw}0<5m*GGSkblG*SyfHQRg~N7-(%ysT+L_TTR|Ik#=Y@FsM1ZnJ%~O`#m1w-i#2VRuO0>+% zi#u59tW8Ko>}Ne%4BeTO8NS6^6XwmP+K1hWRz^wHT{ZZxLlP1$$H+2Yq*Ob2*IL@%&05~7Z`)ldLf-s2Af8ybDw$+$KN3=SloWSfm+qtD_IdqS%?4>CLobM>g? z=K|xXc0@6+KNonEU4EO%2>7u`;-0^zwTAPr=CxwvC{g@=tqPi%y1Uj+a6Z9@l~lv) zmCUh*dhiJ*lhcMy&r&GP@7mGe;@8mWUHwa8WyJGavQ#y^HZgE$DN+8Q#SEEmieDaDf!`#JO zfef9+h)&mUJlh)$EIYh74L&lkhA)$g@iS8m-pL%e8eWjSKEDAclgeDYzhO0S^hqYz zrT~oL`b=AC3gbmYy=^Dapd)V%$vOVB9>;<^*@6c?C(UaUAwk|v6t9dwb!HF-cvtVe zXeVtUKzSj6z@&Z!ss?KJ0LIO3B`vwqA)>;*6V@7=ZdZWjx>Z`cTSSZt=4avQXOO7)hSaGH&&nS_1a*kG|f(yop7%+2@ddD! z(tT)`Mgq=-RwPAp-&Qvvh(!MCCc@E?-FRO-i5<_6QX3v*!NB22LXBIZ?>Wa(WSqn! zV?mk*jj1&Bw?Zrhe7R48v++*js>n*Pj|@aZ8kZ5kjZ_A7?9eTe%04-V^fF|CGB%|* zpeF>GRlzlSqLy(~@e5sK_8er9`~Ai+xFZ8o{F>Djhp;Po!e70$g>LDNN0V2yMK#%5 zsh_@Bm@Db-n{w#0%*WreY7dUwz}J^pzLuM`#G|s) z%G;qpB@vmSzmmvC@Y_Z$kvc{nHrcf(e=#u^?lCmn3ENT{NXb{6sVwFCW~p z9uztUl8{nrQ0{@LBJ`b5JdQaizqWaHH_c?8AZFgqd-d#21J{z$N5Yp>mHT;EPTD;f zlkWTA;Xqd=d#Y2MQXc@=Ft&Yn5u+Yewzu|IxUQE5XkIiME&5maK5zY$TppMsWLk=A z?YG<;Oehj$sp9AGA}YG3W_3`_4U;H!gJjPqe+JXlmI3b|7#)+3)@?7KmV~J&&UrP) z+Qip>;5tstH@xM-@P>=znSaJ+JsI`fTDu%M9-0Ss~k{xL&HPx5}#%pg1W*ed7E()(t8*xKobPYm|-|xaC(YX>Z5-> zZ+DhgfodpjTS)_erd1N~n<}%A`y7p2hUx{va#A4YlC*5FlIR~y8;yhhMIB9G59*1^ z;6Gsrn2D(t;7sm3{?FCNz2>a`KsQ)>!A6X!v^mI7+^enh_o*Ph|PIj077#(#dPUC%MN| zK}Ic?CDk;SMe}@xgl+@wctym=ml)>bVI@NiVCO3YImNYv3ed_X=+smGN&}u7J|49z zld1rc=OTWaw>tvmPF#&>g{5U%j~M=nyJ4hu z1HRxly-@A(rC{$*Dq|Y*jAD^c{Ew4&R6A8d#)Q<;%#mLgLs@QEIj{j5N{SJqfW=; zxO+3P9-T*03xYX=2@fnspAbkpm| zKfp+<;OFauVLvp9Vd!sHucQV=8H;xk(*m_k!1?nj;QRHq0sy4%1QL6;BvpL3l;RXn zpHyr~OW8!xz3c-e)4ks$Ei4z$ABg~k?SO7aOZ|^|p+Lc=`49KE%nI%MC8#ts<3sda zWkG3{g0H^Z`uc7xH*nGSLbKxNvM+~G09DFwREd|yX+#%YFY+jOsn16jkg1YmhSao> zm09}259x@W_GG%XaX;3SHn@>GBnuw&DaA$l(+KXa4u_VN|aP96Crie!7f{YGjYrxZhq^|SARz8*~m_kH7490 z&~v!i=BXi9>{w-enuU4qX#21vGWR+;4LcBXzyb!nE3{SmvN_7%LY5t zt2F3R*8Iwl%sj+x1m~c}z8vE40GDpTHUBt$2BjIa#MpLBb13p&`2D;dc6X4A8% zMC4}&IWH0VkQ2TbAVrz+d>Wl0$(}rI)BP$2waVHTjKp}s;m3%hDo%3A0cuRI3L#Ar zOxIUtKHgog4D?tsShY~?_m#2l3Kp@xE0-rM=LV1+JI`HCHD-Z&ubFekP)hC!)ETDO zKwo-*0j{Pr4niWd*#{{Nc14*y;$28y8OOy@!`;Y&Z_KtaJ_u%isjE$4=1{Uuhr`af zUdrwx!RQeEsiykM5s9}BC?)ppfIg4`qdI1dL^GAgwoi-q`wq=89jgvBL?Eu8_J((r zOPuW3K|hRdv`kBa;aITwEeB{fGsLo&YVRyRDvn#Vpqa2Kp+Fp)+|9fJH?5IuP#k=09YjoI_R5xSKTmt3IR9)v=g<+?q zhY(M|#D+p9bCIFzb`z4z1Ck_#A8=Tu2_X{z>1@KYABTWX31vGMC+gm`^XkEhJrcB< zQi~9r*0&VrIrh^AkS_toSk$eHHtZ(x)ApDX@@LRY;EQGKFI6Y7!>Xf?xYf)-P6eb5A z4UMdLR@~OC&eR0SUtO1w{V2RXScP4%TU<_Sfw}e28;90Tz}YVjx@FGn?4Ra=RXAjq zX0Shb)0)nHu_sgsbWS&~3Zr@NGuD_5;I=kpI&8d>WHRD@CS@`vj{sYXV)X`*=cFXQ zm3O|(~4I89Ngdd~EAfc>L&7Qi)!;L~(`d|=DD zA7|d)JOCm;MuMNV9I_%lW8*gPl$3)XeO~;61%H0j;}n`7i>{mla?ddifPZF|isN-d z?%`z{oVlAqRRhtUFAxGGG;@N1~=cZ)^fDAjx?o#fVX z1^fg&t~o!U9Y-rgHKk5GUlAP-LfO2VpFTz;H+1+o`c;i9FBy+-BOcH z5U3$eru(EAg$dh?J9peKlvK;zN86Bg#mFL-u_5k6o$?hP;c3R=ecI4xcoY1L9u?cj?u4VySjCGys{Z zVLsa&kRT?=?wJ1JKRNU=l69@`eHkzIRX&4rT#Gp($m-6SW9_hFr?#K>DPZ6zX)$lo z3A;Kf+H9FEZ&!b6q4zd}AL3aJ5MVqq^qLreMC#t0nuA2Ry4RO$B!_-QXgeTx|1zmgImNbkIFc4gy-=0 zx0lhhfiz@V#XTodVlI=B1*9?0`FdGxC{zUA(q>n8tGF=+x-AOMHFZ&`66@K*F7p<| zz)TiqZ<|HhVapaX!HCN`XYCc>C7d`7o0xG(;!b@uT5HHqaX5!YNNbS*0H_4@1VG2< z^~jcp4woizrdlN%x;ZLV-wdz`{JqFOGs`(~hKSC)Jr?`R4Kb>)=CWG->|3~QZ5pwz z%X@x5L~U8l$&BrVK<(ybJDj>pZJBqtN=>DLi*f>=?2Gs_IW?QPjB84}?8PqCG?#{B zT%5=JdpvkHGQ~4^R_b^h5I9Q#2lZd`7BWY-i3p6dge3tg=icX?V8Eg@2G~=D+Nn#2HMgHa8-o9)7<(?}r>@GPK|G zP{F%=bM}9`bpWzUtICe4=tV;0TC3DSF8W41p`_Q*SWd4qVxzm{bYwKH$m< z(nwd`>-EMvrXBYFWb)=Lr(#fZhga0P#_BqH{>#i$#aU1^hJYiOCq;sI!$%42q|327 z9ZoGkxIDm6z%P`=2woG~>U^3=>bCvX91(Ji|D=Eg$m?`eY9-IeFQ~8i1pO$@W%s^6Tfoy3+_Qd`mUn8BXDcZFy%4qF4p0RbDV z2<3hVfSqNjh)8O)?eF-jQR41PrJ(XY#X_8AxHp!z^XK_c*z;K@J0TTb#aYv^Zb@}- zbf1hV?G|Sn5?4a ze2?+~*eFs@jyy1&QN{erw8RaSy4Z*o0k~lf@6oHEx2s>N-tufAno$hAQ6MyzLQGv&X!JTe!010u3$1FOaN<>B1EG`oqWT?U_ZCcG-HxN z{*&SFObq7g1H&Xa3MW%;5GYpX=9;_6uE$wYB@015-dkt{KPB2w5G3Dt}O&6?A}DyBWCE%bKDK6rs}0XS&#Nz+-v9Y+l{~uztYQC zxBURxAC}{U-`KmL8m^O6yv-^Qynvq8lr@|r$HER4awr*ak-y3=^VO-P%hY<7a(xO- zY%xa`BI`d@@RJJ5To%9DLu3(Ediz^aN|Lof&dC(Q2?7#lbfgz1jE|AJNAMy35aWZu zxcjlpp1Jz4=nLE_{L8E#TLM2#mM9pI!uolTW@^f8k?QX+pnrGCC~Aj6nhxkJk8R-J z!j=r(?x4Ht`}S(^P~R+B!))4ddDR z1mrg&m}e_r3)-yj^u|TU($SAqOF^yhI~{;c_*8k59ot+FfAqEt1k!O-C8fFlKBz%21OrQac%u9 z_u6*RG!{nW@t7B(&KSGyN&?hhYi%RF5=J_TVLH^o^d>l3ao~)R0s2t(=nwGDJMGSI z_<_rGi1)lnE}Am-JF{eb|9giVgrf~@e73ecYbe2Yej2mXZo;iHLl^;Or65_Y&{%>I zJa-Zr?3HkTZo0#4iiF%r=)m#EA+60so3!f44b$(c(-fGW91RpHh>Td+Im@5~pV3Z^ zBZ53*g5dIT$_we~0J-@ITAqXK`LmiIcC8a6ck61kC1Y%pO0OkZkQhz>sET;iAh?b- zf0hW@S?&GM9S`S0g78MumUo8));GK;fgQ6sAmsX$`NhZyFx2STDH|OhOcpBK5csAN zM5AexapRw4!YoxUrcOluy@L9|;KCR5Nh|NUL87?$qn+zB9l-4?b$8O49dnZWww(y4 zEk__cWuCAoRlsn3;sZxV5zvx|=Qf#kXFoMLV@z!Sg+|Cf4t2wD%)51lbr5lv9-$}X zofjTy##KQQEmoUsUQ7|&EQ2HSM2FM=s@dktoSE5?>{pYgBUPSGFn@xoCdja8CV zFfxJv_LFBk6OfJR4f_zRt(M(zY`Vx=PH$!WQ6r@kQwC4`tGEVd0!cxOU-~qMBZlr0 zp$ra9G^R|QF^@InBQTDe&`f0LXpNsgY5Xq%O(^1RnL*Hs-Q&%}P3n~5b(s_aBfV^w zbpUt<7P;7|y{TcHxAk#*Y7t|HqVZVq9|&G^e^6Ao3;+^kaEuRWM{RNJ3yj4`0Fa$N z?v|43i%j0bI-?EXg13=MVIDlL9C}B~9;zfiAX*GvHHGeBR(`)u?FLR`b`4ux^D8Ds zawwgSunHeBVQxT89TY5z*+-XMdSEuWSuHx@6K&D2SNg$SF%jJ!nFDk+q>@Bli`36v z^e+3CKR|8AHP3gf@t4oDl~*BHOb9N1)(%an6e8Mo=dBCF6_P)PhrB(JovEDJNmw*B zn*+E<97Q@-7%H{)Rk_m0t9qw7VT87q0rj_$1SwVlb^0HS>+I-Y%=H|7)q925aM2I$ zk~}%GX0_J`VSsuX>)jd!QeX&*PUW~aP+lbg9Ke^4w4V2ZN|Mh-HN7PBMv~~d+^CAbikBI{U&X4uOwfAJ1w9kYAYQ&|HQj#2 z1dycRNrR(QBL51ksELc}GIS|WEafI9+nia`|0yyRh3fy7m?}R)-tEI^!$kCx`joaq z8d_>XHIJWn!dmRAj4!!#f6UvaLTgMvNA&;saX)$f z&Ky}wzgm_uEntgM{epFkEl>ZJgFLm}5D>eo{o{l%bYZc*`4^pu-9k;M_yW3$1gh+y z!hZ1Zg<@;WfC1tg_D=PntY}Elc2%%>Z=$Ld^!tIxPh-``&f_hWe|UJqH(UuUDlXd+ z2by5EYiR5=JyP5JNAg}D-SoH?2zn_)FFHM&+oSqm4%mK8tKIcRS-(V4%hFR;i~&*- zTC9uph*iU7oPtYYM`4__etjg`B|FV^*6$^rQ-7FgqQNj!LSBo)p=M-0zyzjnFGIje?(*4xQHzig z^=(oIt##q%_k?(=3`a8%*MS`YlNhO)Qb{zM;G+hs#NC_DrOrRGZ?c*SqW|uTp@1b~ zUzYq1nD5l`G|173%RL$K=GB@q8PbgC*UwMq()`)^Mj_?h=Di)~O*(gcd?8K?IRt92 zlXZrgp*O;}RJ%QjwumpQl)F#(u@hOJf({avWyN_yG{C}XcS?aZYstAfjA!q5n*{xtD1}}2#c1ZD8h$8Ru<2{*pch|{BK(kI3&~5woore5w*ZT@>bDi!Qecl6 z5Ug34fYh4P1x1z=;|b?KP8 zpLa8`#aQPlsi3Lr>`HE6H+uQBrm{}c9vdzqRJQ*zeie(h<^Hw$_MG<6cDSre1URrz zmdmam9?8)e37@7vVT6>(!f)~3|IYLuN%V^-|oIRV)vvB+2S7M=j^|% z37?2UQC8hD|F&aBQ2@ZvJCXCPvcL(oE2+x5%+0+-g}6=;H5W=^rh~$X8)u=$=RieF z)wN{S?uHJrdbKENr5DJ$n?3`j2dQDFZ`y)roB6{(P;iI&q8rnivsoG;`GBFeiux7^ z-@N@X*efZkpP)~~S(Xf7C>+(R+5x>XcfyaYE|Ss^FR+?=qyS*{Jt8Z%VvD&+UejH^ zMaf+>LCM*zfSG}%CXwpVef^9IRO2<&FkxVaXZ*@BRs$6G4n+5z42iG0hQ%M`elw?n zYei<<=Q6!Kg5l*U+gi@paEDt@LerVVbo&v*SZ0S!q=UXb8{@}-9E8IRt5i#0MFl^M9Y9AsUMyDHvT36IODSpbCc8T*gHSl4eQfjjEm}QT*I%5ReMlQV*@yE) zTB^18_7T$-g2)?=fkEJ&)G;XX`W~~g=ovE%;MKVnsLI!|wdRe`aZI!Xn6n+|+=;dX z>2^O5UR9JRi}}gY>Q6Y5Ia$KwmDu1!e4amN)5zpX4ETDpT)o@9{<)83N9(i2KYP^TK-Z$Cq18 zahtrk1ayf?<57qeLA0BvNz!>|Q8S_WvJNV~?k=kaAU~6l zknOf^M71k2RVq0;B|9`!zVt{~*BBTu@QC2{%C)jtY*EZ21T9`)gPF8ajIa2SBg4^e z>sY#DMY`KpB68b(_=1MZD^f(boNm0mgN5|2QGmsI|LJ3So7?TeR_MNL=lBRL zilw>XWc>I~6)g2%SmOWY3#|SERl(RfIRD>t!HT|gf+>$n-@E1+5_!Zs7`hwtzV$$R z)1}1=F-=(?H_}eV>-+G2pLBvBlPp3>;gsAtixec8;F!e4zwxNt#!pFw==@Z6shp+j z>Aw3M|4%}L{<8k>&(m{9fF)H(rODgB2j@dEQt8VXy!8qIe4U;P1>}EmlUV%X{#;5fhesJwFr;FPq+mS4`}TahT@s2uKp!Ti z3Pwqa9pJt@AO12AjS_9tUz%rY>Tizlk7D~LPjreDorQOZ137wg$6G^mV;yv@$au&m zwuR*QB)$#)3gDSK;K`k6zSJI0n9l0@+J^Xk@>IW@j88BjXF)h38+lfw_vE+#PRSLD zbS{9FoNOEFQ)LUdI_UE3&u*y|EP39(JD>prABrgW0se92o#|ibSJU0owMq(~Em<7I z+#)-tWrHW-MrV1ZZHaohZTi(B`|?W7>sdl#S*;)P0totyi&$8{u`&urqnAvRBou3t z2>yo;x$0+hIs#A=Jy3wHG&~VIM-9*Y@*tpyH>#COy_AuWB_RgepsYZmJKUV=&44f- zuUodztucC9E4QBymSMc|>ima#FiKrN-Rl!;Y2BgT?C$PoE8d8a>2q;++aCbe|A9kk zqJT?-4G?4w(oP(#J_#nEYVVCvd{;&4R7Od{rdenPH`E*>`N4{LZG)QX_*_RXqP+0r zZ;L001x|sIQHQUE^HPW!8ogg@T6WBLkJo#U`yV441wcFHQZ9`s(;niy5|V;i{c^0Pq-Bk`xQZ3CY~QBpqatEXJVt&^pTo z=bX?ee6{bk?XFWYEib$8RCD12p3Of%E5gCG>3n_vxy z_&qzU(C6)QVF1cwS#xKKBVRkHlHe|J%}|n+dQE;y=dXGo7nnUVLW&liWN}?s7w8W? z4nY5VuGQ9aJQG}5R{cv{M1%N#C|T1UFq@2}`zwT&fRpd=w=EGriiNP=gT)7%$pATO z>MykZcX6#nZ_?BqC^JzT34C&K*!Gz{Di9T|33hZCOnKFT;~$`vn~ZRQ{`m;Abro+n z?KR`go2F(I6*xCDKDs@HGQS?+FRu+u3;-BVlts;gv33(wx`E~X+}&Uab}{-gs{QNV z&h}RZxZ@x{m%13$I5Zv}>BA*FZOQh6!J><!g`MJq331b`ow_`WI)IV9lqJ5)E zTG6fawD7HS)XayY-x@Uxi>M~Re;uzVc3V_!&VUH9VDd%@)Z&L5=QAc0p-i5a0>bQ6 z%{<3uq^cd=R`P2Zd1%x$T;ruWXHEcuPtYcr6iN6`Y*8^u9rfnL z%ku-^UHrzjEjUvI@+Bv0i}nnB9LDVMhQ|Ff7f85RCu=B_l8nQywp4Rd++Sqkn>rQ- zZK8o=lgS2gNjr2)j5yf(SB!n2MNA)^J#DB>4y&#)vbFE#o9WK(&vp4hiQs_Hl1iCP zFJ0ZCj+iC5h3<#W_2(uEdD`!c*Tia=0pbA3a2Bs3{}r zAKk$aN3`-LzoK3=ekW{gg|_QbHw@X>1zLX1YN+0*&j?D+I`+E9+nVyij}$eU5=Ek! z@c{YB%rb7V*4OAZts32pjoSfg@YdD&v`4Wfrm^rx3=E(o!fg?RrRCh0W0b2axu~US z)->ktkfn55cP_ar+QVGM8}xW>;SO=A!d*Y28O`lG+XGCHy$WWl?JUBGog-9Pr(th* zd)fu zb_j2DU@Tc~_9}7|a~!&_XCfQxW88#2~`zNM7erZ%Ej!|tU~g&!wIHV zO)PI?mNTbWw#Avs9{2{p73Dv;T9U87AuTelc}6lf#ZyBY56?@Zl*6;kZLJ>nInvJ% z)2}mjF$y>SE zsj#*2BDiO)eNPZ9jqVid;g>!rwLnrvSHb$43QdPrUDBoq0?!J749&MOD{Dy&Y^~Lh zH&O?K*rIN{N809tf)FtY=DfTnB%Dn7E=;5nZa=nOS<}EpktAjdeP*B*kUNdh;Y6%2j+_!$VBK1WOb#76_MylxF)+PZ#^hg| zP31dM{7Ribo<-=JOOt-G4{dh?EF>N2ecA4!*5QpRDKQZMr9u1h>cu2F`HA;KhUu$f{qPdv0`X#NbP^$7^nvXC^2B^k$wLQ zwMCzRo!8R`)IM?eum6Z2dZ(bi=-BQ=XZfKQody>oozw)?qh$=;XkfzpNLwb28#~Tjsv~=C7epxm|F-C!kyoh~g zjQ1zA)WI0>L72v@(9L2XA_{oRT0~lZJc5;9o3HE{Fv>6}LStfA(Xk!}ejbn&6DC62 zYlJ;o0Ql-drB*B?<4BHXtS=XVMJ;zfLcuep8rC`lN?eR0ZxwOy(NL5nv}^3CqTN|% zLGudwYikPoGgZ#!4`C1A=38mGstv1c6dAJon7WKrx%ARvzTWp1{%jIig>YP380te3 zPE-;G1mK;>Lne;ZwoRsQ*4qbfWK{*29r6~*4G}R^>eh>vz*PMT=VD8{f^g=}TZr{9 zo5?y#^wP~2q9R$)X#YT*8DNYxCT=to8PfsPSm~p2xK2>qZhl@`W|Ci7^-5@-gnf6Z z{+abj?XN)f7P6UZgKe+xP`y>9`qeWH;c&bM=q~-Ovw)#CXtTiVRsAQLbhnPa?`kpt zS_zwZ5t}9KQNeRnb0yX20r_awRLd#}zoOp9ST_`M{NHMEz%sFe7++Y`p;wGw>@SA< z)5BM0GWE50i_I@_B`r~ZsuHCQOPOm!x|V8~&^&KSEas9MwFteGltkZK2t(KiPBm#{g{RVJ+(T-MB%OopRkqkErc6&T?PN}s3F9=;>s?8kW z@<%-K%G+Q(%aOLtQNN|MJ~aVlSlETqg*sy9n6*QiI1tf!Vf_Pmy;rI}UJhYzkA}=N z5l_^(xZA>#o+-FV;(gwaDMShW)lyb==hYCOf}GPPWX!*IWz0Yo?~9Ex|6|YxXB!9W zk|>jiPRjkVrH>%ESWm($HpJxA0;Lk*Al0n(ZZ(4li~Y+2%PN&|%dx!JD1M~NFzE*u zf)j;?yf6JG0pDsXoXGED=GS*|wU+IIlA9tOo;2__e97$z6}nU;6~PfQaRd_@5*v$+ z5>fRe9UNAu;=jFMDA!<_jgV<i&%T=IaHwlAmyiR`71cw@84b(`_`y}G?Eb?hrsbHh|rQzAA#6Xvade7 zm^B4l?J{&8bOM%JRdnpImWr9C1VIExhd_W6>~I?wTslkJVt03+2}=MQ!Y*&anfTmz zJYHFxg$F)D-Mq~eTjWZ~N9f%JTA{vmz_M$%svBo`O|fyl2MuBMMm%v#69C>yZRs zpr&$Kcptw_1kyk_<>y@lxY4wynjsPp4vmm6Hz-Rj!!W(p&Y~0A$0^)|BXgHN^PjSm zQqT0clScLBociq@puGe)7heU>QXV42Qo1nn{L2J4A;on3EL9`zDMl$F5_W5`&5obX zF&l$zBvqjNPsvf#(FI_g?A?W*Ey-`g_oZXYvGSp0Yqi~Ft6F1xJ&Jb-I>G}HmeVe- zVdXha(5%3iQT|$g&lPqpdLf;YhLG?<)OTDqFMLI3xGc&HfS6R75}&>cPC|Sv+oZ`^ zH>8#rKvo@n!`F$=M=y^+Tl#0^6 zbN_C5DWaA0I7-RD^^)UCQ9tv%M;|H5?|5V!d{TQ=l;SrSf+IgEcPIPb`LuWb$yE#L zq=F)l^pHqX02B68n;qgX_WF+NlGmm%D8zPhs75rEh&F^=!qk)svvjC6qk2)gGkbK| zkLA5tz8|XHAoSf#7u%hDpazf~H3EZb3N5-bvREUj_Z^1Deuj+>C#hU+Q zjNq*$kFN0QRUFwtR$g=_&ys|~W~M!UmN*(U1NWAJfCzd7FSt71_|-}pZRr(fo+q#y zHZ1&?S-*n4dVYKkO41?VzpZuNz|R${M9yWpO7cV_J%_r_-QGzOsU4_+Uh9H2vFn^9 zLE}4%LmVqu51xx2iB4--S-Yu$Lpu@|A{#wzz8uvVRp3rCvlR|*`WaS>)vS33lz|pa z?mYVj;Fq_nB`yEbCV_nT3&yQ#Z)f3em25VTE~nU4rPz)d#Kj9kZ$?)_(9PWJoxtBn zdlp=IyA&H_mW<1 zH`A6LLwS8}{?`1)mRkS9NLS8L_~CH1I0eZL7cw~1+)LYEPUjc5rTt|&K5SWV#gLm} zbngEg&&Rm18MDV^+#%_rl!Q=9#U1+m39zl-=3}ZBDt$P`RCrO(3IDU)2iZr3=zY-d z2~eiL5m%ewSMu9rtgFitY&yxc1S0R}sB!|L@-@KWQYNAGkFi4Z;b;L=cN75a z4q--)QW+t`2pW{N&@AG4gKvOsg}A$KRY;16BMSpFqI=9u-*!WiX_1#n2bgi!wX%1O ztwp=d`dyIrb;90M%8xnzn5pBvv=d&xPM`kPzzyVG(EKvH3otxshI_nuokzT*cGeD0 z#c2ow`X9pf2NPe|KUiuvIUW}3R8MZI47!=74qJ9gIa!snsYlG-{oTnxyfAl~0IuW= zZlG!J?gsS|TsqRmr|`?heO}cI;&7RmeyrOo4u% zMn-S`ZUQj6(;lIDXMCi=xXB=rl?ffls|g)*1J@r;^-KPAM}~zP?23MS*E~k!nYSTP z9D|DAo{S~*Fg43LVT6H}c=Z1PWWD4flQ>lj{b!YO`W$aH;SZid*{3J%V$c=a^s`YA zle)+kr6=vMrJle~#&V)$#`)$3Rr;B&v9xjENKf6D`^oeG}f(|l0$TG+|x zp1J;KRMu6oI_i^UmF(d!Twtem5v{OMP9xRUOX~boZo$A)n%OP~EEf#b=`%i8K7Ny& zTM&}B3zi-Be3sjXOXUAEQjCBh1lQA6{5CjcN+u;*DHgKm|87sNWOx83)hXM-)iXxH&K2qm^qUJ%d)W2hh99{V+ zhl$|ZaVJm4Xu!AUp|{_jGkt!09wMiE=J;*>_PlAP7y|m0k6^_~d4iiqo<_@py@D^6 zh*EOsP#3;}FV}D#&sy0Ussb&ZTV9%Zc$1=2?2Lz45p|f;j}$x%q0bv`<7ePEC!Lr{ z(Hjc9H}V=g2PKXBKVuf!3X!4^a_}n#G_O2>M(D4TG7PAVayU^vg&Xw$ZQO8HfCuUn z_o9OCD&`%Yy%90FzATxn>O+6uSo|3nIL||LBj-DNlH9&%^q;Y~9WoG-G^cmy01KRe zGKJ{>c4w~;LDEd(1`qtN;hC)()Gw#3&?h|zOSh?RLfvU_$DtY(EB6Kc(gpyD{Sj#O zKai{-3^*l#i=Fv@L$V`!G7dIevD>qCH-r)5*HDhTVqkm_ziZ8}?3tp-IIiR@lv+;v zb{5~P2&E{U3jR($-XfDLP8A=I>h{nVIphqc>m|rv3Ay*pSjwC`3>N*Ej?@T3h73!4uu2M?Blbn zNaamQR{C-g6YiQ`rpa$W>NBvD^K5T?Qgt&Kp9Ez7d^}sEGanTu1W}tBY%pJZZi$)384s4;mianv9;F(P5 zf2BRx@{(5C&M8AX)RQ}n?yjQFN$_AVVZFQJEup%OrSdE2-bX{0&ZE2*_RGr|UQhN2 zf1o(j%fAQrdM1mdv`Xe&l&+TZ@(^{9+GdWaS2Q5Lo>2k*Pj730w8g>y`|2^Z*!O!@ z@`WHM>EQZ83LTIOV#ub^y&+>xK>9z~No`;SXxcYxk<6>0{A6p9QRuY%`k(?PS8yhe?^4GTp9HW(vJ^>*rhFyLAnl9xlaSicUv`eur8mTmI z-{pP)2^z*dWEb%KSp1;;XpW?{jH=dAL~qFkH9tcWUgAH49B}yQF#1qzzx*{(G_=tk zW@G3pF8b`R>|V_0c~bT1lD0{&Dr!=r&Xa=I+b47^CkBd-#cI^mCg zdL?G|_vwqi5q+_%U+iU|!zjlUTMz3osU6C*p{vF}k}wyRP5!c1jseLnPN~hHwvDbr zu@;yfkF3Br#0bQvz&Gx1UbAeZLBDTdv0@qVcr^$0(XoZ!5g$}JgA&bVIrq=}%PjZ@ zkc;8< zne@EQIT404?oa~Rn(Om2j`MvfMNTD?+QGxNQTsK#@imh!sLga_n6O6+8JD_{xa=UV z*bBNzV4n7{1m+1@ZgF$8l2kCpI}}|%Uz<(ca*5Yr1W6Z{bC-OVvw(03^r57wO20fo zC&*hV%UKh)75jPvrtdRjiw!I_g?o+16Jgq1i=qlR^eo z-keLXBWkid{7a?n$o# zw_HhD^l@0VabI#$=e0D{%~dVc`>QwK22X@8CVd)0Hvn~l8W927(E>Qj{QSi6331U%Z}-bQ>t#Yg)F6&|9wi$Jm{U8bAPPb zj`Sm;>)&fSao=8JpHA5^7wW$q$(WT?$)I=HI!v5t7GAUmz0vt7NUEda^&S5A(jrN{|J*vJmC47f?@tk0-hwYEb=?zI_O8yl^Z_UwC05921Tr8xUoaJ zs9j|F1rw`i?waGPDr9cN>wG#W$S%}RQUMUN(3@&AnKn7ia}Sl@oNsI$pa{d_$#%%2 z9n14&t}-p;2EmK~yy(AamZw2AGgPy*khi1?XS}nkar5Kn;SEMsX5`N6?Wp)IWUO+D z^d+)VwTp_KLg*h(We?SfL?so>qr9{dGk`4Y%s^F4NH!Wjx+S9&lg7+zbbAF1TlpHV z(#kN^fx>B30pTIBGbOt(rOgwYs%KFY`%B#tC%m0t{}^$As;-cuy+z+j_wVHMn0Yi= zBCGZ-t4~`xl_8|1;>V`a-CvKEL%*S&Qwcl!_LF-^gRV%zLZK$TsBxYVq;pc@WC(8Tv`}K;TZ$R~UZl(CfY~ub7zWL>(12 z%QERo^EauKa?Do|@3!?Mv2OVF;1$`iB?{Yu#|4?e?t^jAC?Wn`>rNb3)RUuAiZ5c0 zMQa?)M|7ONh*u?dH2}rg26B`krZrrYY2UQMWc#NI70j=?Ij*LW+c8H*x$&GHEOW9# zK172@R#untt_X6Y_<&;hot4&JQi3PBR%tAr^A5V02`v z<}g9x1@0V`qgi-wcf!fenX;LyYN_+{_Ii0 z@=x#@NmuW!P`D1ArR@yzu}P5jP>fBr&n0#EGbv7o#gZ5u&}_n`9LQD>hx`NY@6xDD zgMt|w^vUvDD&5Eh6@VBN^P3#!{gv;bsp4{`ln!`w=-1^H6zD-*&gNQ zFE%wpQKeTVRre9Nit(CsVzmK2*5a#4oBHH`nGTgCjTT|5WXr$fD^GH<=T~|S!_L*lA`&#G&*7;u9tbdop(E#F2Lm*n0+BOd`T*kmeDTr~d!2E?SKPQv)GHEkPrt!38CQP8j8}(+MZ= zSR&$2F-|X7>Bx-Hzp#suD^C-d-bf%wF-`$m$TDJ&mQA8l=7{{G4>n4GEA!4qcNfGj z;LepzLkhGrq+=Se#6oi0I<0gk_J~E%3DCVYkFd4bqTUefd8xBhlS>R;2S&`Q0oiDgz znNy}=-A|C|Vke>jox8kEZM^L%Dr9!niUwky)FU@)F&g*5m4;fhhokxG5E8*O2Sl-I z5iGxYxFeDMqj_%+HwxetBt&S3qubbe(=qF;z>CVr+3voJ`FB#6C}_Lx>&7)WZ0ur% zbM(x9wFIPhuw-XwN_M!0_|5MnE#{%tjjmn7tvTJft0odbLY}0HG=P!pea;b{m&C+SL zfMb}=PbVb;7@?FJQ5zINncHIP%D1EN>x$Y9Lx-QZMGESf^(+WBPEcbx_x3+ zMYUXdpvL8}WTXgNTs&&=A&_d?YG*hBwklxd+7Q`)JK#Wt8U@QFo1ViKF>qRaFsA>5 zus>%X92#h!z2EX{!tDWSm-+SS&&I0<|@;Z zS2NTE$h{}f3zS*`pL=K5~`=98d(qaT?p$;8etK!f{5|IaQZ#Nr?l#$F^e?<4=Rw4JY%Gwa}& zqPKYJ2IVauDfKtRv|(SkAp(5v{)}Bh!_M9$G=zlKBh1a5k=Tew(T@fq%_>y;`@2{H zm=VFw(9Xu`@fjjB46-nK!h^Ny#)#c;9RIWgR)fD<2G=)*(4eH^9tPsEI0?eNOucPu zUK-6>c1(9YPt=UECz!IYv8vd=z4H4+Hqyo;z|2gNDx6^NopABa29Y$DCsA|_o<#g5 z)haHL!N4k=9PY9#2GOsWGYux#mNhP38p-XHG#&i~BGe9WM!?DGsUZF(E!QMB< zd0RqS_p4oYp%#6~YB^GL5bv|5i-I1%XB1<;8#mHRC0KEHVaq-GAHu0b@|4XRfcF%W z=KbPurS^rVl#})gw8Ub(?|TfRs=h(7pi9_(5nwpVA3Oe=L4S0q*N#w$eV6QBnnDV? z?PD_~wfNO&D9#)mqbx{(oU1SeZg4y5k=p=%Y;lY5P-3JSBpBOc5t>(G6FB4TaISp6 z-wwqhM8c#+pS`qyoYFY7WTFKCIHI^~!MNf+vd284)qq9CCql;`d97vqjZ`|@Y0wcU z>-NP;C}x?oZ>~DVx}ZC|S9c*5@)S`-?_k8_knPg2(6-7qw$s4cB%n;}Rq8aPD$qrB z0Vj=zYeb7J&O<&M!uvPjA>avxn=iFH@fFRhk58k=6-eAyfp{P>Y3%@GHWt4f3`OH$ zbY0JXFv*IbRHq${5h#-l0@yyFrqDJ+f`49@D8Tv;EO0Gn{Q6ura5{ZV$B8fA6QRL^R~`HMO05|T#2goq&cif(CO zvvBI{M`}l_%5AN?fun%L(W-xr^7~6Qnsc6NQo6ap+6!)Q6}g18od~1LTX8O+gjxo< z15jopy4`JYan+0(w+YRrd`vRj@{%5;Q`~e^<1lH){&4cSzMwnB=OKLdjCtkf!l8LR zjq6KpW8Z~S^zt9z^q$FjE!e*yJnAYvJr7AIkrkL&Dhdl%Ju!gMt#W_)ISmdgP8hW4 zhO><~x!2x#r$)8~`}Hpk#UF~7u7gjKWPBP*n*0fWij3xtBwugAN#?zs(UH+^BqO;( zBdc{Zm=iSe-7ZaZ_Gy3#5O-@flE9g=0ZxiBQgY$`asbV_&*0p{cO8^7sN#Ral{C*p1FlL!bqz5T#(AbM64$Bx!3H^0}mX&h>>%Eqbq)W!*3E8o;? zrOz~?gC4s^kJ|w^2Y=}gNiW|sAAobzCWDudlH>d6F_iN)N_g~P>nGO+n! zEi$tk?J@FsO(Y!>X1-zRxPj*Gs(aQBeB*+Tz2wkR=y)Z*(q?WW*&=w~9+14Ei{q}a z0#l4*j#^8u2^F84v`f&92Gf)LQ;U?&bp?YDy<2L_joZ&{=C44K- zQ*Ae$wW^O(XAy>G-D-TCYQNV9Yo27;D^t1>RZH5dbV_xC?V4bnkPABGPkvt&~YDnJ@=e z#*d85m|=4FNNPkl#upjL_7s~E*hH1UX`5}sU5eSn!baL~_;F*ULzLtDA?IzK-2Vi-ypF#Js-l=S6 zoA_jE!RT>;UkeQDORHzcw(s@hB|ifG<5kOQq>c(b`jx(yskBX|jC)*cVkh4z__bcV zVKra-D3yO_2Oj6C7_lNRtDwa}%)vU#Av7FCpl#ATVfat6Pto=k;1&2qTq2E6&3*as z26)FM`dw=TYi4iil7=A#j*#X>1Wo~9<>F%d-%xyyZbvLx2lC@1`Xku%q2G@fHgHR* z__le^py=8w8ZK>D!rk;qkG&`!MYX-GDK>8!xjfceB@ko{z(~%Q#%*naT|SAD1rD z=S(fL40Q! zwOPO6(3{Z|=qBgWSWl=_(N;R%NK2!H33p^8Vwsk9$F0?V$t-e^4+$@q{NcE(fcQa= zPdW~MMMo!MH0I8i2;{}t0hWwq6C;t{@ z*tTtlMk4gCdUx>N!KZ3nm7zvFXH`*Hc%)SlB}#W7)pp;J1D(J6cDb)omc%wWCLP!d zoA-=j7B;ff^%d!CbTzZ+9FrCrZ}hkVp`u)sU_nrBmepBBa0O*#%c>p576qH84$49;hyr{3SHrvY@kxwZOQAku%=V zmu|oh(1p){s*DTD3rp4KS-Pk=aRg;kn!~^1OO(%enGuA^V(R=G_Xtz5Pm@%Smw9_$ zZcM7uf=D)F7pW;L&kDd6=xq_;=V3gD*YjOVh^47dvmI8xa;0Kd0gz-wkV9Z z+7b2lH~;EW(SXN}yGVO-GJe7$P007kIsdKCvPTuWC%pM~GS9&p{xk%%-BIr2=w-I8 zo^F{awo%`Z=6awYe2E*1v9-+nN4N1W$>p^!GO)QxIV- z-)2fDs;cRk`b-%;>t;^vFV?cG77I;y_YbK2xs+?p9tQu8{xF8rwS|oA*S{m<_uNfZ ztF^Vo(23zu1izbZ3np{#eNToOwn>-d^4GoaR20rnTE**x7njQt22wuO+kstgZYx!O zfsm`_=7%@rCB3WX8+6v9*MY5oTuVXp{j=24+p4AvAJg}u5P#_+eQJ8zVzD#AeD{OW z^+=Q49S3&1+1v+V8Avij@glOwlQxT1 z5|)#^)tBwmC}gQ^|M8cA`ig>4FuErh^@%^~}F6+Ed!c zad3Q|%7`Kq{wGh?x10_@LnbomZ})d!EX-V8wy=v}&ay~Fo7CHtw+@g0Z28%0bOPF; z>x8Bqiun_vtrov?#-#km!GbQ=fhn_8xw?LEJ-oPJ{9*`gby#|qh78Oj&!o9`6?Qd|b z+Fi3rM4H^*a|LpwIdDNn-1LT5ZHyka7Z$4NCSf^*(X68{Fm4T>MxTZ9XCd3d7%)f&45~cGyMDpFH4?IhThVEJi*J>?aEijCorJTy#XIrjkptGV!+ z28%7{s`M}@10f&}ty!-@sbUtjU%|TnzK(fZfJ39|>M0Q5X>IB~A7cwg;|0)P747I- z>DS%$boN^!`wTp7j)&A8UMxCDe+2feQ=dsaVx%=!qEyDiW@B~sSImlF;A(I42)`lq zm~0M1x8(r%&d3u7%+-jY!APgLgbi=bE4O|_#<*|=@}_6y%eF9Sq3Vie4tm#4W-k{? z?~=(D)8~jkW?ODh%r#`rKb|V^8N3hq>#? zFfUVXxXb{JFz=2l2&!-%C#_KgiM12bWYfx)C+PyDbg_i*gqy+fVZkJU|76cRIgboi zE0By`=Qo$BWuUwFano#7T54NL;Zkmfv(y7&b*$r7Eu!z#EFk8}BxI73uVO+7*&8g` zgT}7htLE3h3yf9T;50|$4iI}?WbZ{UXt{3>)X$FINw>bdpPRkn2wkM;Y z`8P~{Fawf6qNkSv@|J5Wep$t=`*STW(J5$pFL(8D?a_`$VtYN1)Zwxhr?w)Cj^U)N zst&vpvFjouTiElP&E5M1?S5280A|nrgK2%MB`=Gan)U&LOm?}K$@!;?@siG za0^_>Avj_U=3rf$*Svl0Jmt4<9=9(b6`Rb4o(Hpf?M2?z>l{Jj0&X8M+^UA1&DG zx8*|fZZTLwadLksXwpa-*T%+|@W?xl56LsCl8V@@-65?>k9gdZT^$cfvtd`q6|V`Y z+Z7qn+e*Fgc>Il2*2Q2X&^*Q#7&MjV*oG^I_BUjxjMW4_tGcGTmc%QG?HWe+j!Qb7 zuUUPQ)@@P}8gzaa?GX`Tflto^NYG>9K5xv2|L|v{Cf~w3IIXEUHy)o+*eduqd__oF zuWQ>}=sUHzK&@?hSa_%$;*gH6syB%`<=2V78INg1q6}e)u?3_#LMLQDAtDD60{2WfpB)Wb5T-irHeCk0lkGV)q0sn2iYFvG1%pSk1E-$sK(XljN zNgdw4XOn5N4Ynl5=RN8`PxVlE)|36n-#~WF2Af+Vgqn{Q1}`drys9RU-+@RxA&v70 zes68KG8*TrKaaXzA-t3l|caL&IGCmo0j zj_ntu!1O|~<#LoT9a!AP6QFosjFxjlUS1{T{ zy)la-Bc+*7d!6y~lC3`;*KnIFr879L1F?dSZN!pX?0!O}H&80M?Yj#ut?omsvR}bg zGSDfx$5d9adIwTV_i4E$7hQnH=!Sqj z8Vepq&XoYj_34w8);=|k<+R$gK_>2*j_ZA5xh*gjUc8Z*|*el*iCpYoyqKZKJ zrr(0PE=GRppcVQcjrR*b>|1R;v&T&Yjvh-#og7|eoB6OKVPJ=!Y5;EwUq3E>^{V|3 zx9&I7_l};0jhX#_@939wCSplDkbB-}@1R6k+flJjm;$x}986ZGZwiVNeQ)v18SdW@ z7zXGw5|t~ja>YgBrKKTFyc!aF-dp6Sf@-km?u`(A?TzK&MX?w)5IrVPFq zFlR$j?7g}el%+;%bVAJL*AFlEcK`xT2w^V%FxL{$0B+x$SoK{C;#erhTmtVg4 zvYUTYwlBF0d++wQk52Ei8v?0)J@kF_vfgEB0`d67*a5o!ddZNc<9{%}bUs_&=Og~q z+v6?|5K}kd1+don8S8n<^VrpjDBYU$#mdAmDy@V8zTOiB-g7HnMwoGzAps*+=1@4V zY+GG=B{yDNH@}T$dncJRo$7Q~@eNQ6ybtzjDPl}=&jU+eI3Zc5rjR{7q1d_+9g$W{ z1cP`F34Q$q2!+BuG%$wy&;`zp6yCKU+o|wRLKW_CI0ldRxHngd^*}Sp3V#Oa5x=9P za`0pinmC2tT*|-fg?7f$y#j_SBJc*3+WjT4cNl458po+@bcvB>=ZonFXC#G&DQ}zH zcCFA)_c(yX6e!nX@J6AD!+*e$}Z!p!!lRHsJB zjnDG~u&I%l60Ot((}#a)*&@5)Q&p&!@xCW=-AL7Ug9c?*^AQxI%mHW%B~b8l3T5iG zJZC0~WHQSr{{a7?@}sIjxG0X={m~Q_?}`{6t&o&_-*qk_+3MoFmZJGqO-vDHt5dTV zu$D%DNTr`u05L$zst8orw&Mk@3U1OZk{g*o(Zm%S z8B!hA+dJT3kOpcr)mvCT1)7g&W+nAPRt77CLWTX7^gLj;qXOipjH1npG)wM65Z-v~ z5-GXI!i*G#HK0s{sUiw7VZ=FW@{kqL?U9dQMlhWh?U}v2*Tc_%xRu8y+=$3t90AWhOX&Rk-5HBDR z<41!pHpA#z0t*;(q=vpR*PuGZeAWtnaFi*Ub#<5}hlsqQU*5ZVc2GpAKnMw0(2;7Y zVr{gD{c~DU=z1qdn~bAt!JqSv-)TvkZ54G(fv7Lte!|o1&RwwVH_&;#p`-|EAzzLB zPkUJdr5+%xUqHb#E+hqatBDFdQ=Bi!NOGQ2*?=28grx>H?SIF zIa3G`lSfZDR^CBblV*P}E6-VQ!&>(7%*@TCCU4dH&aqeH-B$LIs8vF&!(>EK6@*yT z32O4s0?GQQHKS#p?i^JRTNCV7EVtw#IiO(7r(IrI#{7*1KJv4oNe28!l$^G0Nc)g> zOaM@_Q`<5lnih;72NX)4oW7+(@sS6E$TCcx<|MJ9D5NpzAl1r#S7^-l?-yuJOn+VT zHKuN6bKeD6|6tLaF7=bgrI0eZtI>IweL#j5N9nn+`{L-pwCzB2g|c7J3fPptZ$c~} zwk&*XHmH=g8IkX~vb)m^tO)`b6a&&=`T+Ci@zU-w5V|^&)}LI{PP7-*LQih?(pl;$ zrlkZ9{U|-F0UZ^yGddw--cHU_8s4{B9ldMPE5dEwVk#$LE|>YgzNM;L8W=~=Vb27k z#CP)pf}}H9ef7tZ%n@{mWp6FGa~tC+kip(Irfs)71VXIjvLwi=nwsB-E`#8TzW^Y~ zD~R2w2#rX~rHKr=J8(_a8JH<>N|k~&C&|k#W{8|F_fB)S2N%T@vJd($+!p#U=HyHk z`uaG+Ts@3T9y}h}Ikad0yeXSnfpf#oKTWh7_DFqJ4_V_S!c1L zY8!wQ@%GZNf8$lKO?9VP;4@hg)AY0}D+)KhE__ooH&cXBMl)Q^)f}=;$P8B0Bc^X^ zouw`Oqq0BApJjuJUz0orUKwlx@f|X5YvJ4nFY#NhpXBq6*}*DkQh4~FFacMKoFi2g zRNPiq?L*a)+&Y>CUJRz+{lSUv?KBbGO=lVjxOVlR zxg*)21;=hQDn@P5809Tv;TXA&OXUEnZ_Pb{R3GWl;-i~GxG3}5c7->;-`KUpfB+hl zfz`@|sfOsf8?bx4BZm=J@_@UX{EvI+?Od~1INdXNrp&Z4G}Zb*1@&fu{qv6B^X$gy z{GkelI*F#gBqjcav%@~|YzkNGRiLOL!pL5ahR}vq)bPrW_gdmR9ffrE=EDN&s6Rwy6ro2zN^1 z`G=obwqZqCK`GwRXSFd2qy?#pl~++R#rrXT9+O7yEv6U97#<zMWxYH^qM2WAhGp+G+mr3a=d@u}4I>QA3< z`N?paMo!nh)H~39VGU)Eq-vUFPoVav=F8w9p+U7~^=;Mt)W@^qu8ijgY#rm_8)Dwn z4j?hgAT-7PpD)AwzZBYD=q_oSwAs2Zz^h?2z$}^%3zgS@n_;ub^Rbt@eZpavd~nL1 zSKoLS+w)*2Pk>Rtp8-Hu^&rpq1v3TP;mnY>gIVIG`CYmAo4CW!hc-V5UDb|A`ui+f zhar%N0E)V0@{TV~%2sm_5^mQSUH%6q3lnj#{b2Yk&@NIip*@f`0k>o*`1xiJ5b5lo zv9Fg8ReF;psc~6$#p0vtRT^jgx{Dj62;yXDVM%Dgnc22LzieFuNcW-hFSB zhGDR)-iNftiWnG*UVbeq{vbqA1vu&~s?}g^C2V0L`~aI2Sv3~u4Qq-Zz~~uRBp4&Q=0&3f+_?DsplT^z_+5Q{LsP9%eREn2r`52y6g zI6ZW((KIo0?6|VD=pZ)>ykt+U;=LChe(L^UYW5rp2o2+DTV96J${{75q!Z)i4)nUH zts3VUODXM?JXJ>yk{Ck)lxq~QcP)s2u$>CEWt=$J>=&2jMt__h!hK;(r6>W~g zz0f&a%%ehIy~NZzO%A-N>ys%4D(t9Tns9~t20|e6t}ns_7S;f(5hxElkfqOs^f!S^ zq4Bq!!CzloAOdcn>~y+?F`?uZ7?NOgc^OMl$;xAA52JkSk)s*_8Dv6cm%e;lj{DkR z3bGgsonVz^yOpuOg{&+M$S9@LEXh>lwpXE57nR7TaWgSA3{rcGr_1vE=q(#91$pQO zP}I780&{c7fvJXDjaY02kKsyA*_(K{yeAEybCN$gqVtu8JZAI@kXiSJ&wuR;HgKI$ z5-=h?{Kni&x6~p8>=#=t^?F!I%D}&}IE2*D%A@~V-q<(IFQDMNxb!*f7nHOhBarZ* z!G+kP@Had%-dY@yzgPUwE80Jwc_%W=tN(J*sX^?%g|QH{jyBi70d>H{0H|%wbuoaE znf2BQeC2T%t49Hzb*U-m&3Y6k8r3WbK5Z~~zpO*GK5xwc&bPA$V>IfSjtY}R(Dv#! zf5wS+06cWWMm|K5XwGKxe~fV%FOxTfz>1dx)#nmDcbD@ORgayT8ptgUjPZ=~gEQMB zEHZ?a0z^m%CU|AWTetuWC*tkK;WP+kk2Mdz=RE|9bY&JMn-_R)S?CLYwEqz$7e`ac zrpMR)=DbJ(T%Rq6wd)umEFlxNmrQS)D56T!6fw2-?A98>6W7))S1 zF43Uqoo8@pHF0-X^Tbq#vz1KS_eEx4WeUBwd~QMN;FHvZyo8jyCGBaCCwPDok1y*- zJHy=nhp%snt|W-oj&0kvZQGvM*2Fr&2`9FliEZ1NWMZ2W+qk({|GM|(f9zhhYJXkb zRS&yAKu~9BKacG8*e7K}Wyy0iBmzA|@nsR3;C0Qo6+Qx3wXOXr-;YV1mhHjN>hv7z zxw!qj0TlzoCngYZ3*53cv_ulsQn`$JITrF7T~7}>cYSEvt|Z_CnrO2qFi7#8zv5k4 z#DK~>N6{{P699y3hP?{n_&l?GGB{u=srp57SEU{3FwOvwFJe;!vi7;~-TE>js(wC@ zK2aIII4U00qC|!(I#s*dGm}a#XD3nIs_0b?K;TSwZbdg{|Cz5SCJvt9UnJJn@taL1 zu^s(k*b)kk^C&Xy}>*B1fZ;R(i986)a>iK>OQ zstNWTVVoFuEv8qTk#?6>2`uC+kmy`7IkAfk1}nP?a;oBIeNuqrd}v#%hgS$fD3`4O z;06wB{yy3MF0?TPf1Gq(Ypzy5ZR^xO$^FZA%gHqdZ6)y~cx>)x9XLeQu8lW*fjUO4 zYNvt2Cqj9zaivN63$!+gj;3n&ubXcQ6|7%34as&hR*bzfwR0RSD5)Vx-sDSN-f!6A zcox@0&12lPo(#u9^-vtkv9N#orfr4R0H(ZNLU8sw*%BVo2dYaTLiWs`KPuQ-f7c{_ zWI^n%^(=rv5Vh z`nh+dqSVeyEefA1+TSUvqL#!h6hh9C#lX`CQNwe!y=3txfk~D-)l)j`0Nb@AEs7<% zuz`$@EjyE5U{TK{q!`s-!t-+R6fUTh9<*nKF7`w+^`&$*G=*FChwJPcBzr(^5gPcB_<^Wob z){xci3r(t&q@>R#SN6e>fb?MCeDkG!=9Q0Mz=`GGJLu-+)Le@vwo`ZPY$&)$X`v9$ z`a`$ivnboc*!=FAAicx6lEMi!f({#*NE@HZjq(jlqDc(8kjj!q0DcFXgTt1@j}Zm6 z%6n|~iu>@$WFvi;C{g9$5t`piEPj7m>uTUKLRxg6G&r_NKCfAOkvmp;ug-q&RyNfL z>!~QYI2#n9_@u=f!SI;>%ucP=3OBB;*6XeVrfJ)k;xepoNd1{sh;;{ZASEx>mu3FYSdDZ<~lT8STQWXR?+2i z08%JeW}+dQx2Q6Dww$)e{OEzWKRBV%e72<9s2f;a@oG5#gL$K7%^EZ!ao3U&3;UEB zzVgg3y(xDl1^1%@WwS^$tS#503mR1)Oi>g>D$@Ah;SSDvHlV<2^?)kemQ2)Qu)w2> zRnf66oj9@3t#fX*4Cns0$IZwZIPiGCG#ZwZdNi3K88K#e&2E4f)bO@#|GVVE+`b^jgsN6cCoSF@%=9Ez|r=@T}}&YmC=y%dRtKimqEd?AWQ zTdVnU>=NT{25<~<%IXBBGL2U-X!3*8-4C%1aQ3=?sDgLX=Wi8VUw*^&8(YkYe=j2B8 zP|DG$zW95z`}OC8*%k3H6s~&Bps?QGyUl-R$~-htE&w5jk?okscq<&cIah zjJH^N;L(_=w5uF%cEu~3pG2NlvE z!HmV0ktWQ15WFkws(N2oEV`yIl;^yQ{QS=D_bCJTdaIq>{+#}A?ep^fK$9pi>3_7( z?q7L%I7$2?&+uk)=TB$Irghz~-iN!=t|7>waUE#Bu!DlTsb3!td1+tI?k{)$rGp0i zWweMu@$fcmBl%k&js5BVay2Oorv;Ct*-thrB4?NnZ4SI)Pzy0ruDmdoxo&n0=S7GV z+#%n&10}W$w+dLR)P6%A)wT^E=mB6k%{`u`&;d&8(#BGTpzetrgNTwlKJ(QEn4jO+{Lu{JT3wb71JVB+9J0$NnVM=aFr2_qi{n>jeXJRHLO!9+uZfl_X>4O;gklLtL?y=YyC2wVKMql@Sc3>o0xbbm!Sy#PQE)|ex{Dm8#D zvVkdvI(pL4t#I!BL19e_A_O#yt)*EpuI*S^%>us=R2KUsM9QQop!hI*`ke$gS^+mT z>)Is8tiRNu|J}?4Tpe#XK1@WA_>NYE+QUM(2y z)LenpY*`;#RE)tFvb^|Hj$!LGs6^V ze(?Al|D+&BW+Wt|@4f_fDQS>8C*PCXYLk>=ZKSF+ue&xDtZGsl{d>8zOyRFC)tJEy3@?uGwwqf3bpxAOQ#gf1R;RY zNRbK#1HY~vKm~*YfpHC>^eiArv?5jSW+L;55VaMgVNOV$VVpT?&rEn^0hR-8mG#(3 z*?;ZD?6BBdB65jNmyi0(y;-;>=WS_B28^ zE(gx9H2>9cC-jqPU$)+mH6c2Q07%5`^FqzqzsGO+e||nTmH&|&FsWJ`LQSE%{1HRr`sZ1p z8W#YfnQ7VbIMN;MB7>+Y@4$9#p-;AGYpA;Oor3o_o+8oF%|ip^Avh+bFhz8QfGDN@ zOolOmEBlEO5B~Mp#lk@Vi)yu)=QpTjnk?&hJgY$@a|OpTJlzG;UZ5vybxa4oo);o_!AAchJU_v%b;kqW1n^uV1f9N^{;g63~ zl~G^QcSEp9W@)SeD~DWSnKWi3aC=YR4W5>v`(fKiR|5gzSzIz;t@1mL?D+&9T6QKN zJ`cX;?-v}*=_EWTM99QXLZGVja>{gIz>uy5y^XVLip7oEb;*EOThB>zsMoe>SxEMpN{yEzmT!N)s|7IKx7qsA z8mg7tDrFLlM&PfZ@v0!9lOWOl2nHnOs+$$V3i5CaqAJ+PQ)v3d=yMH526JKVZ1ZzH zEqwwdf(Z!Nf#zk)kx1fN>_HkYG{Z?#5t$(0?C~PdG6{6sw>MsT@|8Lqn;|-HwB3r^ zFHNaen&WyVAIRxnYwBYLgd3Y5e8`HFH8o25my#y5l8#ykb_?YVV=fP}kAO(&G(3G*9ra6dtE#x!P+-F#`7f}{!fiugb-T)LMA)R zRw}Q0;f@Xd(i9<6(|pn{Lx7vR{j9#p%j=`pB&L<1oH6Iwt?lt>HjI2sBQ7a)Q8LV!*t>WQ;^1eihC0ZYzu z%SSySFGm+ce&zQd%#l0&TD7+Ez_{gA9fS;R%hPUOL6*|(4X4oWGWu1~x97E2eW9d? z>Q%(cYsVeNGV$cJEd%&~vPT}ee9T(ORp0h9iMs?Qu3I2Fq-1-)Wof$>B($t6*}+Qj!H;yUse>%ax4PjMK;|@Vaisqp_w3M-o7f;yyYe>}K z>r1Oxn3QWQryCZtTuV$FQR;x89tbmx+S`;oQ625j$Ntk+5DTCO0io3LKqA2#wl#$1 z6rD%~R6MHFS%YhLikBS)hOy{{N<>2`4~1A2X2|>g3ER5lXGG)16j*6lCW8v=mmGv> zpD|CCBAb^rH76LKygbfZ6Jt-3eh%M&zcECoIwGa|lY13}#$UX{^;OQ7-G>Z=v8nVc zGjI^}Se`qncNrj+D#&WK>a1Q`Oxtk~P4!ZvVGjZHJ=B=k9Q~9^Dhl-N^*V8~ZMRH< z6-w&F4j_lFk{NcVz?E~a5AmV2s|R~4D~uynXdm^o)=9Ilb*~$|jqXpgqJ|>Zh*EjbwNiZs!+@doN?7c#{+(9=C(JrE;7z#?QXJ1uT9BRUFK#0%9yo_EeBkcNO4LSLB%Y!M#a24 zsQN8n-tE8D$}fQw2`i&`c4X==L3?H7Eb)1CArwgl;^$Gd``!3KIBC$9!GV#+KcsnC zFo7}>7g%Fqzv58b?h4vT5SpUO#gjxu>b+_+!0$xc#Ne_9(ZxtUU1vNm^H5a~#UAQ$ zX9+R^9zL{}q!x|;Xf~DBS*)>nIY^U1UZ3Fj)cQ!l)I8Ue$Gkwp*Sd+TNk}^~cJpj0 zRucXdXOoYCAS+TILP@!L@nK436J{yNM3roC=1h+_lF!?)BkMaM=$Xhb;Oc09RV=Pq?6P1vjl7FRdRLlDByXw|=8`?~fS1eU;EQ_z zRckG4L6PdlJ4q`Jh7t)kx^RaC&h^#W@ z7_@B%-H5?Xgmsye4+x{~sbH*cL?!_Q*b9-@M+V3L!09}zK#Lsxn_WfvZ6wDltF0|E z1?XrLONUS+pr^oWcb1H2eMPJJdT{qnrUpSo`SaAX#+I&3+`xeHBk>o5z#XM!G9vm1 ztAsoHX!D1`3KoyQ)79{>!Hru{v+w$LL1?vh$COD4xxXWUp{Vp(*aeTN;tJz1st7V{J`gGagJ&URzR#CGq-#9ytz{`xX2Q444Y%(emo|yF8&0eTPCW7SNfWGC+&HjRQl&;WoImeBIR`tTr4hsk9);!9dTlJOJNoeTFk+Hc{dF_Md;rbkc%|*)@$E-~*uFmxa zzdkF4XzCwYegF0HAKmyIP}A1vb@APSt4qA5pLw7E!mmv7(BkvqYv~_@I7fdYigx1y zXCf0z)Ls|?=2tDSZ_&h@%+Y%}yRCvAa)`KN_(izYyT1fjGhqpZ-ki;yI2sjQI5J_A zrz0$tzB4&F5|car>#ppLrl!Q*?RmYpWm+uzV^PPKNWgsh;^PdZ^81;tkE_&jmFsFVc zboX*!F0H_RzWvBoOdP+IJE*I#B$M5~1sRu}GZ7+VwJTfh(Fjygp1%h54kVuCB zFlrrK^ru4IZCDU-|5^$R!lQr{Mhz4XpCJ-`0=woKRs}&yo(9=TI>@bOl`R+l+YQns zdjkTZoGDM`<%1$9xl-jshQO$;yNT96#T9{}jidsIMMavCXs?kR+qfSiRItZs5^$ zy4QIeqa9be*C`mZx^jK=srvrRi0D=L2F-FPp3W7%4}!GDWitmgKUGBZDGaNmwTsA0 z9MbwCyrp=&ZCV3vinwvB`8_;cMN6-B%lUJ=(SYJGh)QHyk7IVhu-w#1RBuUu%PDZA zX=A}z5?p)zt!d777L_U8|6uX_Z`66k>6Y*&Zh|n-H(7S?YK4OtDDmABzZ2ncdp=in zV}@~3CxF})`G^r9cdJ4LXmC3Hl6hiWB_RBl(EUs%~~oNvy_>`-)8Q711z*LYwkr-A!SJ~I{g4?S-o!rJ0 z$fK40)VRNwS@6^_yz3heDYTpw&%yWJ@V7`*J63(-J5Y?O9dH>TNw;)@9ko+KFP#p9 z*02S8c(Hm`{p55faC6PX^bUA(>4^Ks?acuN`vx$q%p5yl<_p|5Q;VyWs zBt%kvR}s;{R@X$k0DI;Tc5=t^_te(@L(5r1gSnD#mKPLw0F>J{jPxBDPkW_69`%)% z>97F|we_?y+D%2tHM16fYhiX{=SRj&04L-d-eq~x8!r?@a>qVJSN7j-F>NG*Ql$ja zs-oahLqj{|E4C{9B>#Hk%B`)_*d}GqW$871fVCjJQ!3q-)_t?v=L4{qq5-AqLgpd) z;y!kbNV@8WsX876V~Rm^wX6aS%FyQq6WcNb)rWw1MG4D8EH1d=rkmJDrhh9OD|*EJ zZT5l**?AE{js%rEjtVU7lB~s!pu%I!p9#k$;J0KsQ2^Vh3Bmc_sbNs3_DyvN< zRp#YEp5?kJj}r6O@R}}zK|p66eCXH8@b$0RSRGIAFCcM1&`j^%aoYQpuz&CS4fEa} z4EKOx&o=V_-vC9YvpA47?TQ%i^(;mEmj9g@eTdL&WRza?eDuLGRuQP#m zp#%P_{;=J^zKJ9@3o2N`KJZoU+|-z0wy*%c#0eZnN7h~%84`!3oxej}V$AXWt?wk7 z&NRaS-|zxyCY`FQNZ9|X-Sk&wAZ+L%a z2KUJ`5iE*CFJ_qty<_qu)zHqpl1ecPvne{vC5|uLxC^N|w{3YlGmrboaoPxH`Rs;OawNJq*j9YcQ|3&kabSy_1i zlxJ$ZWm}_9Koq|=Ydo8dW*p+@BOW7zq3^o(O)}bI0k`>1LuC04`s`W=hAg%VUtk=F zEByQ(yRmCASY83ZzzcFi-H#BH>}QKP1wgv75Y%3-Ulz z`g}fE!}Wkuc9`$ny97(o(T@da*NpbBG`JSGJ_%eDN}J!Qo}Lq63gxpEph!!{!z$@u z;gRKY&)W^`C|1KEPk)VM;29;aDMgM;LZL3GgVXvg5Cu>G?A`=UL|p*ju*t52M29uj*zUR+ax;a&cr29>9Llg`ax&~tRXza|ftn~?zM8yp?)WE(TZ7ImLFhXXeDb8(+P8#n^BJIb(?G`=$?}<1CFet5$8O`Fe`GH zcxEk_>?wuqvh0w1_KO>?mp?3F_S$XIu>W8zzt(3=1a$uBuCx4|$S>sZJF|_a4-et2 zOIv#QCz~i_8SWo-@N_jn&WI^E!>{wbger4HbD32jV9YrbZ7kb1f=*JdRLn|bl|_^y zWs|I^MV0J2{TD+i-10nqZWgvpTLSeVI+==Sngrq&J$oIB_6T6{Hm7fehbSTuOd>r_ zKBY8kc+v;o$f3!w+9D<*4EF_#)O`nS?O@q*R*DI~<=~&E` z=q`Nj7t-srqfw)3976s^bh8bu1Qf6`R;;r64u8|twQq8*Yr#%Z-`p)UByhB;Xt$dU zP`7#4HUF51471B7;}~E1uT$c%3Wijz)#CD>5>xnoMdjEcKYV4}@yIJX$zsni@E?sA9crdK_=lL;&ARZVr~=N~-}KH5wh z0^#9?AG`lr`}Y&5l@P_U3a0M@D)w)ZJSOUlT%k2!r}1Y zwVFM+Xe@tK$acht4Iy9wwCh}&!)6b8T{t?r_ov!j{6#{^sB+MgrGqb%6^!2Uf zfaM*sTUga2+B39a5cZlie4;FL#=odVJdl0}2R`&xs$`)@u&FGYM2<-K#V8g4D3VMG z$9P=e5@?QR{sJ+}a20jH)8~MQND1m}+C4~i19&@aR0o8SKRvwFkfq?;E1(Rl}d*q z<`uoLsO^C*@&fkE$ov&iP$XgYL7RrK5aknGfSw6MsTYxcih`l~yLN`e8Ddu(age6B z_n$o82RGCVOFTFp)V*UEKwGL+LXe1#L!f9@J8uDKq&ryf*#c=l;aO)NvHxkKWOV}9 zt(kW?5ppke={|G?$vM?|F&~Y!=n9US-lAN8LRm)p%MdiZ@q`m;9J_~6lSGcV^#rr7 zT<;wZ=oVh7h^ObLketO~CR~N(vm>(*5xtai?2`h8k6DCHTz+l_An$K^FvlG~r@vp- z9KFWL@LEK3lU<;1QRAgWz;!{xanU1Aiv*|4ip5#p%e$9THz6)P;6(Q#x^@X6%VWZyvO!251_>7$E~(xC3N{O-<3OC*0hs5HHo8`^uN83qoE znb-SNs(T7nHh`c7ddU_vE7LxZXXM}?ORlY#^4Nhe3r&C&k58!@_v1MsL$SM^nRz-G z&6BaXkja*QvIg7nVm@f6Sp+10K4^UZi67yyjtwmn&5Z8=FvX_0r*I>jH&Yn^y7%D$ zig|%UBn?W8&GAoC4mN@ghCK4``R&_N&>i#6`b*-j zGhLk**B25$<(}_cg)>NxhtBhWuxF?i4E-p}v?n z%LO@38$mKS;1>@glPYq_gYN*#rqA$=P$y=zI)TBLftPfheykOwb)r0&>ofRC0`5U2 zOs}){Z;erBvtr`FwzPlP3aFHcShwqV4IYzF)6JUshDB+mY7Y-4+nrFr(x#~HuynJ2 zAYs6Xpn+m3VDcj4u%gwWzHQj4_{5fZFLI9o!X(Ncki#>2Bg7w+jd5(?CB8>c;2+8Z zK;6ZbolHJGaM8;4B>e=rBPW%4<8yo{^7q)_8n5L48^*IZ_zEZVffme+fMK)1y2=oD z**8g0aXUI_@R?x`Q?(K$c-v{h$_>NB7QnatN_wt~a0_~c1|D{F#za#DC2SNT%Ll7s zHsF*D5Vaq`F}?@IFKT=AsJD0!bC`8RgOdtMr@ zEL-K{br+P!EG7z1mhlF9R!X{Yi4zi>G|a+!|9y49lUIX~+_D`ojptfXIQ*_FpYDm6 z*A2`Lfq9gVNRcvxa5CIvDNsT#-gDW^YXSoBlHX?x#L$0b;)#2P%)p`M9v|7r@wDL? z9i4o?4SXwyx!Ls~u7eXv9i!b-f7DrQBZm3%n`O(KZbGllRmc+9##`FeP&|z!gZTQ> zKjF_psLoxqvWOYT4{&2bv*PDS2SQk1#laj}xnOjXHSzwA)Ew9w3xDe*AeG@>C?)`E zP<#!dnTR%!I+sO5xD2?CPFysHYZ~tO70xnJPB_R3cr=_<>JJzLb3wjkwlETEI_6vh zZyS7Kgn9ia`joR~JVQzwyoG)QYH_&|3ZrV~xZLR%Oj=+kBi%P=I&ktVER@>zXR#L{ zIB*^hR*oSM5JLP}&CT$^$TC`&!NmZh77x)>YApE18yQdWdiaJH1+5z!x*S5Ct2?i@ zKM~G>VA1cPbWqD2ya7a=lWvt9t(vJkf4mIwV9t|pc%=;3)s0sj3tq!{L z(;w4v-lu4#7@!Qua+Sz^d^WQQ-ae9fTWzf=KNOz|x7!T`*Bm`0n7_!2#>fv<7@aFG z|0Ot&Ew9E<%sZUg`CPhLWm^?=Dlm?jFfNs=o{C9BCtN6;KJ9Z?f>@H*h^J;)=3O^# zBRJ-qL^1dS#s99~EJ}VHDFYxnEJ?FWxOl#sbR)D%eb38)frHENb#9Xw6Rp2Qmxszf zhm2n4kH$Y;#~8M*SKm>(uHgm+h&Y$Vp^a^=i~WsFaXx3gRM|d9x_;@`HC3`ANiX5> z_UcveWcRNlON)=GM({d0Hc(AOhIGgTb)B*?*nNPc0_yziOOnH`#s=_Lb2>Wr(mi4w z8ZXXj8OMI|tN?sltlm)xN{s)^a{7SXd6c$;;p~7oEzSSZDjzn(QCcA-COGp!{Pjjm zzv)l#kl%_3jL}Cfc5Qqd1nrVJ*L1`rA#NrY2xMUORu-shSsR0L6Xq!NWXC+rNsDn( znC|qXW*Gty%!}afI5B`kTh|!#$)@5ihOvZfMBWzi2AFLv3L$kz7*!)=*f^i#*cHzM zrvFV#q(C*R#`>mi`{Y|^p&oZ6ND+vD7o7fFlhe-6-IV|y33IL#;PCm5Vn(cS3MLOM zZpl{UM{}o+ESU?&Z}`s{N&cv!3E}F|G~O5x0C35 zph$CMg2O2Pd(;)n9RJjuQKtN|MVP~q?|+8o5Z4N(tom6xY6YA0%lU{lsWEK5n3gXi zpXoYkfk-94z7Jp?sx<0eRx;$e%tl(FLLb(tJ{0Z&CTRI`P-)h-1e{3aY|%Xv;fQw0 zv;o1Q_Lh1K?F+Tl-d~v`I?;x+FZ)3>AQGbcaZog8Sq7U;sn&)b6)rbWELh@QMqWt% zUVI8_c8H&qn^^w7gjVs9@%x<#w)x&#?{>)v-@nFGcnE+4LUGsik&0Whm*dVO%1ed) zdhP*;hvye`?dI?>HMLIK?AO=j{}&mstzgod28GgEVXOVj_>9>;DVpnW(on3nJXmM6 zqiluOETLR6)-L0X+3ucQJF=toW~C(q;g}j$Ye%tW0f)MFxCn7NFpwhJ51VN3sCzw? z#~fpq8VXSMN{_Ps3Qi6%*mA|I+c<^QNPE)&_=>n}{7gv_pk;t}M}0Ub$#j*#CE~oK zo`K&_HGBDeH^hWGQ2xWM*ue7?%kNm^+cL;zJ2Yst=b_0?#WgNGN1Q)?;op7!NMwE@ zSmcGO_O$?h&`CJL8EOoe75^YkBsh~KPXf=TAGy;2-k*Lc5544>o+*0aNgGpCk zVO-Y8(a${>Jty>XP7gf@S6Bh-9?i+67E7>4*n)evTBJhM1B zZ;Z_X#Qy|kiYhi?QjbSR$3+e zqc47|uf`L(>6kh`)?=qQ>fIF{jq1OKl|O{hwvR3&xUJXi3~m(_WKCQ=D*#kp&1L{; z^(a3wN;Swd^TYfyPWyR{euKFbYCGOr&^b5uC_tJoq`8=e6(gO^PA6da<9?gpC{pv) z@4ti-?bOkSTuoUrCigEmp5%FP+?u}TuatTKEB?7o-^*qFp=j{^#Z& zd>>v`gnjKU2G+(VIdw#P67x7xiuVKHuuOH{fzeSbKjx4s9$oEP+b}lz9o3hsYP|A{ zi-R4kk607(hgr(B?nnUP{3{|JHk#CT1Mk4*j}3yo!xYv)q10qz;KAXICD(8}>*-O6 zy2b?hFjI2RheQpk0+BQm$K&B(MZlS&?UzL@d>$tAfbK->;>aW{Z*Ag7KSdZ|Rr`Z& z{x8E!r#~lIrIq28->8XNs9r;tMdx&h0ewqmQiTt)8Ax9e{!hCtl2J|4EJ<*c8thhw z;$UTzi+6c{+yptS>BAu@_#XR2le7UmJ?krKq82y$<+twu4nqBp1=zZs^a^1k!}rlH zk4a{2-IjMvT}>>#vfr{Tf*R`pFv_!v8o-Mr2bUI3q<&GkdCpzb%m60pB7yq$>1V$e zV|Sn|X8`A<)AIqRm1Oeil{r({n>%~Na9V)*@&8Q%+cb03TgS6sO ziSK#=nXcr1bTNsO?i^4?rnfh}+S`b>r>k>9OV^!vKE>wf(4oCt+-;ZLv4dNB+dTU? zvwY5hzyndkQ#ZZH%#?{4Dr+ihV+QNvb(-_*0r?A(wV|u+zgwz(Zr_?jZr1*8{}QPs`6w(x0Eq!pvXqPVc6$){acVSJ;jWCcy?G z=rs?A$ADwNM}D%unp`gpaE*t;jfR|TH)^! zFs)LCpV;A$N;vyzM%bjdNL6#8U+wS5hs=z&9bz$tC^YqRR8=dT!vG%NC$pQ{XXc+U zc<&U?{OB)Hy=h0%@5r9n^P7TEfLp?i{p&*jAkJF-Ya8&6D*Vn^Xu%w2Jv3QRf(g1_ zFhUvY2p2C*H}LgvgAhX+RgQ&)(;gUYAwk<6iHN4aWHv+-Kven^9sTU-Yc)5UH*&Sy z#zt&o@xJ)>hTjm~JHw8)g_TBIBl?ajv~7XIAtL+5_QhLWb;BJDdu=|5BO@VMz67HR z*kukBpG;*Yqxat-jyv)1syrgR9h z4Y}Iu1EE{~@4?F$dBs3^b4aD)u_|YHK(c(+)u|3?lCX<(;g9FoNn_o921ZDovh*Nt zSu(OcFHRv~+`2R9gu?tBB?%HD(o2>Nq@?~K&-?q4sT#`fom;428Cx{SmDd`zK(M%n zK(J-Tog&D7#m$f)qP!SrRP5C_TagSZ-e)bYF$lB^b^vP;)_Wos!w zt(y?-)o=w02{5GC2phqm2~D| zNfGpJJK~qDz&@8xmyEO&XmzIdFp2S0lfY2VklrlH3r%Fx!Qmg3%ItHZfO!TPXt_wP zw($~Df-nDZ35Z@y3FIlLLZcAxM*8vQH=)DbrFlh*YU3Wd%JhAR^RCEqaRCM)1hNu#2V*o* zdj~O&fAYBha=1D+!;3cJ0bIVSS0ehkVzet)PtC*JM{Frc1_T9f28Yd$BlC-E@DXbM z0aGxj?*H|!`n+K@>zvm(_^lwYL$uIKbf&i z4f2pm@*5bbQ^@Rd4E99@TU?-osJS{By#BLMQDW{cMj0Wr?X%ngGf^LG8w zw#$X!e@|~|R5k5HfYP=;tmLgHDKVcz%2^1wTk8ymMj&0Bl zLanU);tgFf6#esD3P2`z4y}l14J96uw3e#kO!NA1GD`Es1j_`~yIg#k+1BZKEl__R zFWAXx0}j-lqG>`@H!&KVzW9HO&|1`jZ1I^FG&!cEt@1iFl*M1g(qYF^*P(Q83jI%sXrE{4n-WS!(oKcM3zagQmF38zLPx!>rP{;sy!ML zryp8568A@n#J=@hphLfN-hRzqG$Olryh+Gx*ZcQGUWPWZr$BuQcldjd3atxmko6_c zC2)No);$N~05tjq5Zj-V0$Wah2J6tQ&@);73c?6+_bix;6z79K@Q5>Thw+uJeq zD^iI5e#+1_)r>Y|7cD9&nQc<^-pETyeG587v5PVVz((k^0+rk~+66+!O7I-%Azf{? z<}FAH!wMb=4gPkr=i$b5h#knk&`CiULLX(%XVBVN2DN{-Z;ab!w^v+S`_a^gs)|n| z+4aw5R0H@jRD%15*6)ysJitJUewLkJ0D}zX6G0pA*fyCe2c?>SkqGQ}t^?$Ns&@mt zvsN|)KxCU#u_ye60?N1w zO>o>l6*!qaOo79?C1gWn*pSg+Y$sw~zdvBg2fO(UEm@_I!8#7Yr&MeT*Q}wJv>Q!c zsm5>YY8OM5@g*RiS_{j5&;nN`Qkn4}(%)tah(~08z`btoBwq%Vw*fO4uRFEKhOoFUhu&fxX?61lCwmGW^RG&G^Zbwxu{3OJq=th|V zKU5F>j8xl^FNqw>iYDT6$K{xn3znn1@it_&-qt{*ny_R&PdrU3hb+n$@GA-B49{iT z2L(0Xhu|bKT-EG2lbHCoP5BCZ7&4*6o{;&}bLwxU5B)6AWyEr(tVw@Yz;x@br5|RZ0fid8TF6>tf#*LUrhwcwi)(EA&~ zJniroveH6-av{eT3XY*BdPz#!W{1HU1B<+O7R$-X+xF;M#&L*^~7IzwimZgom@M>q>sMT-~CkCQWPFi=zX zp!k#~I!g5A4rjp-qF<%{FE84h08RYUtTybn^VDzoblv&^yDsWVMKJziN1-^VXBF<) z%cmZ}{2#tHwH3{wPba22`(e|H4mf3mxhI2lV%-|$aYjIxcs5z9t;&3P0!3?Pc-(k3 z6!2%01tEKJ(Cb#SCKFzp(_ud9S=SoYb>e$NqH_V%8p9a#2uuoi(1~0&AQcooS4Fzu zM}*63Jc5RcGA3=wZ>@M6B2!96H|#Bp76=}&CdsKF*}~E0hYp&WYNMIrBsJq<1&H)` zyQ73$ZS0fDT`S&mh7|bG%YHXnPU)DERJegIj6jVaT*=)x<%wgV))|^7T({mzo0LG~ zU>L5dO$kh`rKH{Km|36;pi{R$b8@$@6Gpv5ofvCal@K<(ga1}L&vj)R2u6s%TO3(G z1oJsZmCZvN%mKX>hs9~eo!W7*9J#V^pu_<90?jF11K)SUGO#3x3{rhT*TVW zT2!F)&(*$dDPL}+o7r$f38_x0tokv^jM(V&81ZJ`c3%22ptU;<5J&(Y5}2vbYGp!6 zVZ1Z?>0O+sb{MJY62#5KyDQXWn5G?|X>o`ww=N!IcUwQnZ8)J)`{77e!(DoNQ{RcH z`5UG&La>wvG0QVSXPZF z8_>K;y%SkEK@OUM~Wf;9(A%S^X(7+VEx0*UqAFM{eYqoMjzIJM;KEnUQTSjKp&Z27^vHfCBpfJWJFPD<)S0AC{BQZ~4!g(MC(^%kPFGl8Twrb*>3 z+H!_eLGok{(0XvvFR1JtW#2t*w2?24B zk_6X?{%M+h9?u-I%0dX3<%Xbq9fDOj7M^=PWYE(%VmNN>$&A<;`0Z>F)CaXj734KF z^3!i@0ftkOi3`iD$N*8plC-gq)oN}=c`7||cy9v*V5ZQ@n4a< zNe^gz5;C22n#>^G8Cy{%1Rr|^bi?m%NT#YqL4;aji-nBKJH{ni(FJ0Zd9gyK(v4*~ z5D5q4uD_3<4s6GCo+uNq53}_NFIpY?Z4GPN64@XA-(G;+ReD6SJ;{5*nez#=1aZIJ zj*=?U?nXcu|M}T zh_U)&bP1-Qv>sjGOO9@w-Dj%YQEJTLbl0nN3<9fwiLpt|+twR>&GHRX$<|RU2EdO~ zgpa^Rn!cK<;mgan6vb912-2-F-7Jh>-dq4Xg&YSw4FJ$qi~Iu3Dm}|&tS}}nd5Of2 z2yRnVuRoPTW+cipJSx93X=0#84zJ;j7Ix=r`>2pK+tmkA7!ZAWyQuz4EkTz3e}=oaZF&6p4hR(`8V zdlX^p@SOctd8VqZI>uDkN&8#1jxufgV_DJe_c;=l>fCh$d48^zL_}8rUhJE!{-8!g zB8`ceb@~afVU1debZ9N>v?ei`DwNW|P*WmnpeP{K#Y?id8ngwM#)e1`gXUs5FD|7< zbFVBzop1m56=Iat5AE}MgTMVtl(DXc(b+@jS_Co4g_Z%n=gz?lw=O}JV3~19^)oQJ z1sww;LtC)9HLpi3yH8eobhbj2t??wb!~+ExsgxK{Uio_Wx*8?pYphsq_RPL?+G*HL zjqQLoH@ZAi1JyU(>mQ;1 zg6gpMcpofbrnc&slbvaTp^NGXQ_pGoZ6Q2(YU*Qd3a~_8LPHC>%DQNECDZXtl{L7F zjqAS%1xs6TQLc;|^!YKUmUFmm0_m+uH%kDMbcJb14^h;Zm+st~$cvM1&D=DR!JVRf z9u=YfQH0K4`p{i7v!Z&T!T!nIBN%aycn;QY`d_du^%5Uzhp^r+!x#Gp2!AsNx2O&J z`U#}j$?yo}_qcWO4vDRliQvdMea<6mEZp`?u2s)JIH1Cd4?FoP2wkamYg6hEHYNdX zS?D5E)fPT62(jUzP=zHtBmbb%`K(Cn&s6#zO}31Di>ZXNs!?OOdJ>=;Yq7eg!6g!0 zyz-Ie*dBz#LUW%PmJBDsVOKn+Bp!LoS&%Wb?5U73PUx#Tm6|Qw@}^{TFQb$|a%2$q zbWS-D$*C5EMWY!JF~UCytcio60$c%|8`S+3f@x4-QCJ{H0x2Ar!gkbccE+Ez{3z49 zFl*9C;32!ZB7DwiEP=V z@TYz4O-nhKp@y^!Nhc2URmPa~vqDfNc-j8daA9vPmD}WTVGK-$$@Xac)S= zgr3Hndvm{0MR#{?iTl0ZrFN671mwvy<_qOP=BbPyI=V_iX7O%+*-YddB5P7n0`#&t z?eq>jvcvN&7jb1|Lin!cMIQkpe9hNQLdN^?=p=gGxnFyJ4zI2S(W}Kol&r#fHRb`n ztF>bwU(b<0Y~lk&CS17>RWZQ?qGAQ4;RN8azsO1gQiOXI2^BzjY?Kb-0LfOVS~Qgy z3H;e$NsMW=N|7ZT`5LCyR|DZD)(jB^cWC%gHZ8&{(?P>Px(R)a=|;c^*acD~g;a3I zfTwN#w9FibdA~?0*1L?Q2u&0e$LvkW>+g$rUdC%L?OY6WpXPfT?c5Z$Uj+n_HU%`p zISXrc-gzgeSzd&9MgKIqu|nVtl6arB70W8o53-e;-u#nXngrw&oP7KEYmr&<%S`S* zu%KN+Reb|=hW=a%*>3|*{~1n87lQX4(tPRQDo=RVdc9`k+6eR8Gjng%l|Xuy8_G!~ zgMaDpk}tdJU1rXz9McnoGX}c^>7JgPwri2kCEg%lLW{SvF(gY9DUo2BbD;n@y}%dq z%KZYtoxe}G(P}@63Er435>5rmEKAvIjv=s#2IFp&COKK9?@j^8S38r%qIZrS+wVp5 zWujP@D=1P2lWcBb%IgPgr>mBS#6(B6kj43lV2M|V z!UsnY9#(C~UeJ;FE zW&^1p5zEyzOZ;9Fs^){ZTYh-E;;o~`Ju#h@yXIqc4VZKQM5M}+KYldN&RiMJ&Rq|F zLndo6L7xB$+wQF9R!m%eqNmggG>Z`ilczKqzkJjdxlhcpB{#H{JuS|K&knBl^!`2N z&&G9I2>4D*cAroE-RI11N(vUP7;+)K80%wM1ce2le3Xp3p<4$qK-V_Fzjp;GRHoY- zXS-8J6p{%le-^8X(08pD7ahRT(x}TQnRHhtanq_=5IyX%<*+9{^~I7JqmWi&P)+qB z{896LozFO?*auy0QpQB7y>f_9XPMBT3mYKAbJ#Ojqs8ZF(d9fura62Z-qO@>H``2w zZ%F_I1BPa<-9&htFf+?$z&7zR^@8)Tob@Qj7VrjvN3&tE{jgLkR!hjBH>SP?4EaND z>xIYMNzvvT?!+uY3F;&#D+-=X!elK=?Ipxx%l64idb;bF*8UtZ`n`TZ0$yT#bV{z* z96qb2>{q9jY4G`(44WHg360|E`0YVOoR3Wg=>Jo+#&2f_Gr%xubG;o;GOs(N>JX9wNr)y8ehgkT}H ztZzhd`GSzrrT85YpEb9&d1OOb8`0~K!|S_`?-!7fXy&F&=qodi9&~Ez?Bi+>l1%R& z-KxJu&<_Ckm*|44ZM!kT_Q9*~oZg{Zyn6P5iF{A!WZ{y|Mv`Fi)*4@^!= zrtr8U+`QW3M=krAZgE*MziQ7m4RW>Tw0uZpr}_X)Est+cxMW)ddjp(z<~K4wj_WLs zCCBS?E6AhUm(9DHnK@|>=^z2fC9a3W$SE)M zhzIlUp>&v(?bMa&iX`GBj5P7~eg==^^&GI{$&;OFOYTa2gY7UV0Xs?(p<0A7Bfa|O zrrrW1K71b@SWaGWn|n>+ha&dh{oz0LchPu;6M8G4SfqZBd5N`(kdmO|?5&Q|`kQ1+ z8$T2a6r{T+nRp1TYeygGX5UNAS}@Bm;2FcBK;Z0AC6F>jGm&~3h-S)OvFeh&vv>V` zUrQEo3V38FCR!1-hhxq{+E$b6l|zB0M}&H<@)adz*i*+axW>chDbwiw%EwJEA4Wl>^(vmUL!t@{ zD7OQdU%|{KN7(PjjC9;_P^-#wr|JFij$#IvNT{kpV-`xG7&hNIt7hXiG)CPr2kW=_&;@i0M(IS zOOcM>6=FybzP#7NzRHbV0xJKg>|o zMjCED5FVa1Wppg$e|6syZrUWS^2ZloLdMd}cX`;;p7X0M4#4Te?{uL@H9f#99}p;6 zo&cQBcis|$m?|Fm0p=sAE;LTRH}q%5h=#mu9pHKwmjtxDt63jy?v)90nf@h7)TO`r zPi*ydxJP)cXaZ@v{6PP8OC4bO+FyIMx7s(@Z(8Qx^~E5<$3je*dOl$f_Bt|8`>o90 zMV~dW*tKGpCBP;n!x%*TDB|sOBmK)zn9o;);g2lV4S`HK1?U;ea=`t}9s85%@5ATs z^Nm(HpnluMiKNzL3$&^S2u1)SoBV=(fVdaN-2aWRgbw1rJMlhj%cMRjYi2RqUE2hqM ze{=Wf1ZyX58DQ+w)pbsCu2M>qp(q-U&6X>+c3mu8g?Q5S_1?`l6Mg{ZR7*L>u-zX! zyw6geX?Y;s#hK1E2&MaxdVo#ypZ1#}e4-vFhr|Nf_0_CoD6_W;ap5?8H!Fs>cAN~d zEM=+$a?Ou3qe3eMT>Fq@Gvh`>h}%>o`B^9#R*ikVoGDIqElEIU{!9P zT?G_zdP^K9LTQ#ignEXA&O8zd$?o(*=t@4eC}P!5!U zA%Qud8LF-#IzTSK>k)u0)n-!2dxdR`t+)raw*_?g+8HjtpT4uoEX=AW#R6Y*x>44r z+69&u7T8!CZViu3Jg zAX<~0=M4K*qh?Mn^q1o^)~-5Aou(a|W~`bt08;i`ov_=kpo;(UE4-Hkk$A4^Jh~7p z7v*x%bJ*XB*kY%d4~*;HjpDl2@|=20`bDvI^AALAXBxNAWl_jYQWY5W1n3owiZSuw zXX3_*8-6yRES}u~7|hXdlWq9;`L#Bp;;6?o(mGb2fA6-nG)n37CRk-FchJnVlN0Cg z1K38He_JvgHS(jUz-;v6{O%sbvKp{8rlU#Bt+KH_nkF1|v;u*Y5M$I)F zy|&Y_LBV@S<*ebzw^YiQ9h6=!_`_n{J{Pjzhi163rv$nmJf`+2`|=| z3pnQa{3Jn`ZV0x)*_^-uaZnWjXW#?#0T^=UE&Cyq!T#OOEL~d-CRr3TmmfwOTXdBF z^`AlH%8B6KMe*;zSkG|Aeq%C20qABQFsFeigYdroZc~#DL0AW&-DaUSJ;Y; zE-7MGCD$g(l&8Qx0aZ9ejtf$?C+Ag1FXt3w$!M(kT!jlM{s=zt{vT|8Qf#0{n-3ro zg1#_jM@kSa zQDXp-zF@H$Vm4xh_iJas+Ikiw2|i?tW-NhFb~k$CgI#y{7m?-BH?r0}eB__xWRM4H zTbDO#glw>jxm{TqHG(-~w67Oq2j`@D!J(cawDB$0jMJ)PPC4E!ln5r9%nkdIOM z!RLJ_HtXc~qy}|bFMh#XfJE*hD<_VAu-5{1I|62heYRiQsk;Msi#4(k))lq=f|j$g zD(4442_o111y!LpKwFQN|KWz>YYAx%fCHlsi6%E=5v&$PxfA{}cm8NgK8SC^Gn#2` z5gm-n@s%NlL=26ml&s5-02ql0JJ5v2m9g6-_8}5?hi$w2HX8Mlo(sKVrPVB%3=7rZ z+-#nuMY-pg22#dmkx{xWfrO(ep=HM^2!)f3KU#@-*W5^jP9(prS!LBf+0StX?vL1z zNso0!+h742aMU3si#5NWqAs9r-$1Qp9|LHzg9DmiIW5WN4qWCp0kA!73DL(&w_Y-k zHKPR&iIuZ!JymOCdiKNXEW`N80l}P8VIH-M)SY#i%Ha(}ja;v7wwOK4fndmjT~N7;!@{*7gbC{55&u)}{3H1cU_+!1zx}k#nC=4sZ6jUYoYt!!KL>b1pf$JoCG*pzX@Tj*#|=|(^o&g!~XdCxf^!K zzwzwv?V@2|{u&6zeiq;$u4@vJKf5fESAuwlD0WIFwGDsV1MAA8Ch*_TNkp}kw+ztD zA@Q&iI0`>O2ebw51bI+F@*244NA``2%c-&aX<`NCZmh?bKel=hyV^6=O_2JFDwM9w zyC!3tJADC<5~SSLt8;DE#|ugmbmEq&2VV+HEt0ZzW=g^u-Wl;6!!b7&q_WRnXdpzd zG!~=*NtdW&TbBGbG*lt#d{sXdWF6|5sHclARM*5q3_#hY!AK2V8tDP$cteW;MXC2`5H2pgMt%}8N(cQ6)tXWBE>Q{Y|QBMgzm{rAuuR9;(@+%CAt>x=Ni{ZBp{hSg6$b@sI(NC z1AAZD2-sSr#A;y!^~rx2Cdj@NyY=LcV+qrB9a;}`9{i%kS}(?F*PqcZ5*W4Aq2 zt7;y^E@yOHnUTPhVmmFFn#X23>Idz8Lm_j07AfnJFz}`eLG$Lhn)G$dW~KVpiB?Phht-3&+^#)YEb1+V zqKV%L=F1^9MQ4%yQUN3i%5XSk#TD(R^Ei3Si%}#I<2Nd1E5U0qqxdx5R$Z77h7;I7 z!~r(X#T3)2*gu|%WlQ83z;H(ynEbR95T5D~)%pPUpcTHWQDl-M&E@Jl%(;2}t;;V75-we@#;6dH6auso zK(Q3u?O!4U_M)J`wso~cnBwkxMzR-DesUXK{U#xHGSWpep9C#+Z$V!1XdR&x)syQY zE~m@6L(rfm@k>Le)dG>5%vZVKHrMNWJ-7`bRjXq7rBn}g&8?r%4fY+H?Ra5>q)&(W z+LQ?@)DG4$vm1uCShiLG){0Uh9R(8{9#_~@wb zvM%_?`YV{P#yYp3hN4`_MHVuq=f*k?Zj@<&q5Z|B!kzDd1+~v2qyzUS$D^T48+V{c z-T=#gZ^}d3l5pp^$w3;0>kjskwSlmRUQG?D{e&!_SAd#%8UK;JDmu@zCCng1WDCV8h-RYK z&&Q~jST%SF?8oAOMqhEjw8PLILiVE5poEwCcL6QE96fXZ%e8fHtZ8~WtBFu8;k;+N z;onsFo46ic8mjMlN>HQ-;)thuqb0|y+M*Of&EVB$k|ciH+f1dLC5+evq`xM9Jafwn zf|R!#D*SvaBa79{v|1LJOO$%!dRZl>a{iLs%F%g4gjZCTki@cps<<=J&Un2w(h8MSHwt!Un0dp(H`^QnBzrWMnCXohe0{s2Sbat{ z8Ho&U-XkBE>IPig1|3yBI*5PKfR6F?SJra(K>=#-N_S|FTte>K^GaRJ+-?tbpPjx` zc#6>;xy>iHw50p=%^+zvZI}Ero4Z^+v}J@kz7?sg19mI z0GZ&|J_l|93DQbYp#^^S=rWd1tmUx6wVh5eRU#)I(z5cgr9a~zr5TgjmaG=(6)Eq( z^^jL8>D_2Ye-PPR2oFDTwj*qDniFC&piP2vx2s>A2A^Hj7rfl?{%o$qp}nB1c$&gJOIRF|ZxXE&8rup3O{&rrqg$3JNRGY6#) zB2O_z~vUz>>np}^u!XKr$*DQ|kJZ$cv`9NX?ogBf#~ z;Z`^ch+D@Vbf6d?8-m5mlggsmRht5=jh{&t zE)tTr#y;d;wLdM!g9_Azcl+4Y#hyrc9vx}yH|u5IVwLU#n31bE*dA)^P@=6$bW!jC zE#9NQ17@7EeKR$7K4LXT8(OS0Mc~$lHUV`zX#e z+V16Lv(;UEH850|jF+ayV~wn_Y-nI!g)T)+r;c?@{2>Kt>qGa=HjJtX82bGlD-6AXV`pvx|axOl$3hfr>pduMe5MsZSg zZZ|mFc^KNPQ;6tHEwzuT*{qj#ckCzE zo!qdx>Q1H~puMbR4&z%V(@Q<}(EDEaTZkLQU7wdtq+Y{rSRwP^2ybZ<==B-Qbx9!AggU z{7lfrq-$Fs44#sl48F) zKUkloPwQ{Sy&;BvXqNz@e_toPdEZwvK!M4t&AeZAsNvC(EKci6KUv6T(RyF=767^5 zVG;(&q%&oPwz-@wkk%y?8l%YO+i=f)mxdLB{!Rr`eEuKxtbnMd4}Dyo&~Kw>tU-ho zJ$;!6YZvU}tUBb6;P%XPX98`r1Ovh2^5@+7Hxx zz4dV+V+t!oHy|1|95UQIqSCodRU<>rjL;SB{n3p>d+p6nFe{b2T=;e;bjxw8awV`5 zq06>YZFukfe$YQ?AfBy4s#Jo5pZx10P;Uo+RD@c5odFW}D>9ZWe#$!~W+r);^=F4@ z>o`50%^jdXB%1ay1(6Q!+@oN$|j6eK7uU08Ge`wGzNFXbctn)qgLSFtdzEKV7&2WHU zZ1P+asHlH?X~+>ayG#dLVBDrT_CR?r2*aIDEFcA(Gx)(;__Z-C|j8U<8xe@w?arnkDK~dAXjci(| zOI65%0U00UA8#&0wMkoV>R`X8S&(&p+F5(~rGWY66fyh#&3$N$muIG-zyBic=b@In zPcj2&ZzHoDW-G_0%h`jv3qUEENw@b#TV3a!_rp&eu$x5EZByn%A%C~abt<`XhYF#%pSz72i ztwuK^!IJu>_W~7f9`^?KU+I}b?sv&r8B7OwOry+O6c8DThtdfc7!gdc7Ysnc?jv80 zVk(EWZzby)!66FcSur%@=tX*x_`=45+cQOrfn5gjn+(1xI0l&w=pY&$=X_o#6~D%e z_6iQ-%d^F2Xx0A#sR`1J0!Ot1C$gct!^;GLue3lVeysT03dgHLb4NNtjzodnoyh>8 zJs;_w@Z30aPlTSfoNz|?4s3s*HBt^M>g01O>&C>n0C=`3s;67kUn_P*gE)*(Grv?7 zG_~I;FepX^t&j$ZnqQ%cw2$!J!N-UplYsv8{d0h(!)Ni?VwW6AU3k%`XNy5z2fc!+ zp9W`dJF%q!YEMil5RKp~_$Mw8JInfNhxQYWK#aE$z~ z>AY_TTi|P8iY8*{RcrWZkVi=7!j{VqZs*^FcPD`bg^ut-3tiV{=vh$}?{tI~>S}*7 z%*P&GtKxdZ-if3m4ijgS|7o+&SI5g+%fntJ_tE|7`lpAgiSYvI@(9J`&CgRn(c>8% zxnGt6ZkAnE>yQ?HvaOD$`#n)GQ=Hv%koPzz9OkuoQ|O;d`zKzL=wcVqsMuF;H}VJK zc^_7a*`LOae%?32zJngqICTrZyu}5gk%S>4Yu(h(G^e`auQEVt zE;L3JlGy79Pn(-~=#XlKc4^D#b*ZIV>?OAsp)atHzby;atdao9Y-1vC`E+FF`swsT zejb;?3WU@-FyZ(wil~9=eg#7pIwG_4Dh(2-tJQy$yOe|apWszv8I_j;Y8_b4C9+0; zku{$y?-{Hf0ne8~b!&J*R5Cacmy_oLlbk2;TP|>k2T$P)khuL~Y6BX4`X))Il$lor zSJr!?NOs#+i_oyCIx-Z)DU2T6EG&TZ#`JwFvSg7?jq4o}FwJcdyoHBw113#0kirM-C#_Oy)kL#CEMZJw9 z0$D0T+D$nw{_~-Wh#Gr-VwH9$(r&6B@H({kcjZKNq=FZtQ@e@)>bK;$PwGG_5z=QB zi|PnzhPk;OMD0)-JTWai1qC;dM*Ic`>fi}!NNsxoBNR@cp%F4)v0&Z|!{oDqr^ojD8$T9zktb~&r zxeM@g5>(REa`WiOib|Y0$%m2$tVyF%M$gZvElQr@J68A{;yWerC>gWSlfT18_E%SMY)aI+FC#exl3L)x-fB? zDXZ8|5wO2^u0TA@<)1Dgars-k(AGPtYLesblRqLu0os(}fL5kZ?lKhAW;OBHA`wf>yE#Sl z2--EyDT`NiTZtH-PH)byF*g(6DUpdpGZp6POu#`NOctHoZ z8=!B~$S8m_#oBA?L(m3pQ3|a8FLz`TxGxv0BWvY-3=rR&jeN}YWw5Ha9W6rYj(VM1 zR$+WCR%?FdT5J8iwT;WWfrNQo;uN>;PSCK_3XT?PhkhoINnlmMJgu@(ONtb?Z!5QI z9Y>UbYyL||-#7XE#YNhfAkKRq8SE^WA7D&FaqVF$OWCn+dC$=w9AKZ}_eH)99z=iq zV9qBT7p1u&GB@ME%A%I9zw4gx`S#X|p+%%4Ud~)$11?zusJ^-g(!J?Uh%j`L z*um&)TIYqpJq1GY*wcY@+osj;PEgV!Pd|ic;V(?6^Z8j0hT9kfF$<1f`2# z76pXmB&cw&g4GAld2HwzX{EN%g7h!gYz)4#$S>!$2|5rsB1{`vuX+RH$?^%-bA!|(RyOI23 zh%obB28Z(isk3h>J)r6fjZ62jrg-FRK%R}I#;)6~A7PKJGs3jpUw@EAuQu8v_5eb+ zEOwsY_5C?%TB=(FvwjK3lNioWxadKAQ$+$YHQqZ2m)LB?mM{jk2%4dwEMlMw1%89x zo`6jYySC~fC|DQ;@qvkjb@IHGaqkyjuRf^IHHjS3faMPcD!?FE=0tu%K8BR3W!}e? z3XXFA^WurW?x&?3r8`|rC+Wyr^w%@m^tqjxsnl%9hpd>NPajs1p6Y;232wZY2nRc^ z5$EG0(@Cc&AE8cl}_vm#bak5N75=IA5mg zg4>uGp`N~;BS5xCv^l#EgJ?mc2IdYbBS}l8;xdP z-@wF<3T>``a!%Oe?ILIyf`>dt$`!wi1v_24_01UeOMH?x%AT}E)sxaE9_PZh?2N_U zfBHI|m_lGC!iZAS zb_de{C>SuIxUeObP)E3UqwKOCs{xKxWJ$XTRw2*YuJjVCzpUE~k_04R!B>jN8M`Ak z)ZTDZtx?R^qR>;MnY;?)9~U{)8Pm8|B2vtV2DzarwtUf;|3PprO$%o*i<@XGyiL`+ zJ|obuIgMbwn{S}q3E-xB1PkSav)Ozlj1N%)B?DIGD30hF;Xj|d5#4+qXtz*B zZC+rMOLw1YKJZF#IOG)D)rmFQ)3*Wap5q@F+s=KPdj(*F?;g{(e!w=04h z3)Av#bQ?fUtT2J&fo=@TXvm@sfAxTqiIMU)G|nc_ z0Bard(yLkoe0{B&wOyLqZ@Y}O(%2tiTJGQwM{9OKtBpyN6srchqzKFeYEgQiOFD&a zRvVNqBGJISi$s|qL?M_de$Pa?pa%3Amw)-z7NZF7@%a*RO`a0#kv%lEJ6+(Wc~DG) z#owIYKLR`X^-3&5S?eoQd(dN^XaD2GXJ9{c+unjqe!zc3LAgcYkI`z& zJ3gkHaoLYAk(0(M;V6wq^3d?_1JZH`fuio4QMupuaodZUhDw45@#tb>0vlk-E?x=N zDk)7EK`LB0=LM%<7!~zu!OmX^>fZ!EN_fn$Ao4JiZJQ-hsm3HcW8k*zzOoP(K z=U~0f91-}T*n+4#$F|0}m$)%=Tyu(TbnB`+iX1+7X(3KE-{D8aD_PIScwA4@UviI| zf?UcJb_Cx0B;4a+o0T$7s18u{tky`eA?8*uPixOW=eXQ>1yz@Uk61;EGjTh4DKHIg1E1rH*5pc?-MZfp z@}z+vSHg#Kh8`;QN~v)_NdKf_#ExhU(XTa}sNLT4vhpI6JA$kp;|?$v%!G%}ahM(( z&8SseYgyMniq|IYBb)*?-J!GH7qE`>NsYs-)}D^RIUe9Pr~!o_je!8%;l&m6OM?0( zaq6SA%!Q{Yp-%ADP&7b45Gj^nR0Cl&T7*>M;fI@nm*17sHB5Kkv=G++j#?uG%f(TX z$6C}Y^5#bRRs5WPg$7JKti8+IYFrDb>{(Qn@ZZw{mw7SgcqCAkB2ZTLf3h@zvKA$I z8lqlDdyMUdffqqX>=DeV13VE#ILKkcJMh)&nc(1YBpNqh)>d#msR$7RKzY$WrND;Z zPGR~?esjglrs`6tFr}Hmvbk&E&Lx~rm4Y*_i@Or=08kc+En=Omg-nPS1}+!m++xv4 z15I&o@lkEtI_QG468>}#AW{!gDSE*u06&wL?<^uaF=uCBg!nEL&>JD-G^^dd=Hmg4 z@`Ne^+?C@ZvaE<@9fw1*4co{niAW4V{@yfzQ84z-l~Rl<=e>bv_>^qn6u0rYy}6Fw zOconJx{v|Np1i+#t;{Mg-HkRV?Y~MHu$spVr-kS>PHTkv4f`h`T(0vfi0xpdI@vE! z|1T)}mOCgOHQVoY!p+MKXAqhN4)&uv=Km0GYEf-#-0Jx+APTCY0B#R4!0kaZu5+E% z#BQ*JJ4@p!3iOBQIkrQAv)BNGFY;Fr13=B+wtmUyfq5zJq6hJ9zi%U4rk3iOh@YkN z9}*Y#h!#x#415riB&%zfjnp~d-|0_V z#@aF$FCZj+)GlJI18Q;)h88+OHt%yU3Dm?gwzG?N|L^HMMBIL4!%@NO>gYWHgqgLL zAEOPL$aM~jyRQg|@#=#8^w@!nDzWhQ%v8~8(RAmCgHx)P@`E*gq?!;bLnQgBtB(KA zyNKD71|x*^wdY;>@C`y=1IvxzBEDt4nE7qapKKuwDuk*SbenR$Z0D^&pk+@7jDHw_ zp-4QK4(;c3`9>va>mLT}KQaJ;v;Bm;G>C8eG7v_=lwwRV_86bP=KGyK?E?vENfYQE z$SxHJFUX4MJAiO-SVe@?8$ILb0U>&^8#rD3za%MwTwv2EZPF8Px~@U(G__>O{qDUP z@Kp5}Cl*{$8~b0T`R1AAN2rSbeIBTy>0;od$O9*Zjbz?u-)r_KU=L9;M+Vc$2*IpO zWml~vQ3VAI8xNW!A~6y8pldw98dFnG64Qstxk)HMXWLFvt5j2OOyjMwT2E+dD=2wZ zgVdgQ3CbR&+zGy)YLML@_`ZdPJ*K;%V#fjKfrPXh#!q@iqdo-ZCe&W#EmP( zb(BgWWyfpm7By@F4sgb>TIFd8Cm+ag#u6ZC)?R))ON2HTnVpdz__~v1D(QK`MwUb0 zmm;1xAhS(M7kV8Jo@qKgrNbMC&2Z-gZjiT1$aB-Cv|**U%A!(L#5Tce$;Hq^|I!j4 zT7sTR09b>TQoymqz=W6#PW6U%&mN$&bT*MyW@|x2G!uTE_j3*_V{fR0R8)m3J=m7OMnppwp)}3?B zmGkxnXC0->1*}shZZ$*kt@a*OJoKubX@mi<^Ie#@n%u2Fa7}OHre@pCcq?0&Ca@up zU=(Vu@Cuz|Qod|YX$s`Yo>b?JkBSyYrMEdER69AqNQQ0L!QfFdCC{PYcz6v9QMCq7 zmtnZ*sc3P%CeDXQSFF`TI(`8`&sm&gw>B^~%7P?^bC4{4IkXa%3+2OovQQtq=>lY8 zP<8Iu5Mb_Q<@qqGE053++px z+8|6*V(h{=L}y}w*`P25%z4!rssPUgwCr8-4tPbxip)_zJ1;C%TXsEWXq^ZA`WS_( z;s=i}o+K_Km-IsCdGH@~3HJ9kz?%@VrLpUOW%C&6e>#9CCLGKx|Fd|0N?TKa=B+@A;!-%R9MfLpg;{nj? zZ!BN`bz|SF{@SyS+ydBPv@~H(VZMFt=l-nmL!=HBx@=jXf4-2RUH=Sty9T~1` z*Bdy*BM~xxpvB+(a+%>u6r4NC8iGK3CJ3D+XunLMY!Q+3OE?-JkwB19y9H)t0r${=-pc*5bivs<1BML^@?=Q0yF z=H7UU+a8O5-iQA;e*~b+=cGigG-1TI<^rj=ub3!^Wa}S;%T3b4oCaiw>}GD274X%8 z{Nz~dw$qK34xCdb4G_Yl+y_VZZjZamc&Qs^4IVkcnbfMKlQjX_aOHjWF_! zo#Bcn%T4`T zhrAObuE7gMcLGDo;IhMD>ayR^DE~$FDSBnqkY@P#hz4y;oT~m$TXbu$6-&{bAOM@Gi>x}C&w;t zSi)$^kJS%QT4{h@pcp%ZCcQZ5%z8M<&=SA}w?7H2>n$=AFu{^g&-lTX83L zf_lYTmlMQc?)|D28?aw%&y_;6LsKn@sp()e?)vge=iLxY>bolAMKYY3-sB28c|Z&n z#KIqcv?N@@VHwEQ>BPd5Jou3#8x%IXnK8**FceSqBUVMb z6c~C20@{SY28wnVf%8;;hizw5HQw-%By6;}EVwudf9AM0T80U4@)_@C^vX*h&a68i ze@Nf`Egm@1kh@f1T^nbj1WnObp=tRQPdbY22X_M~3XrD!*HxG%W@K$Z{gP6BOoQp? zSu-5p<&RzVXH*QtSBr!bIEORK*E`ZZ_>q^*X}RZe8)Yt^(*rP>hD&df+fn(~9{q>_ z2ZCHcq+HAqzi2Z`1gy|*;n=I^ORV-SD&!^Zen8*U4_Cx8Fr+rA!3i4W0xsm2Aqns( zeSz(OjClrF=K=a=@%yaV-|hr441&H@%8Xr3i{mblaA4ES@_~SgM})1OPaEb8ghQz1 ztAwO1sx&+T^oFM6dVhuTs+&E5B~LxGQ*Q;p=L|b1`)urcE>ekHB+H2Vk`s;q<}fWy z;x?YAvr9_iXan48-r+URpo1|x5o(q6(<|MsjBmW!Db!OJwsw^FWh!8?AwEu5i?9MF zS-+e zYVubMc2jg8qd4qOIinL*$-T8p~bfd0n&ZV z%i^LCm}I1ou<%3w$Jz2YKSyN)7{nQXwiS1MR~jPG9v@t>&4=Irp<$x+umdUkv}OJRk6YXeRc!Jo;OqQgETgEqVd{#ZZ39S)J;XX;MmzC- zQZI@I38%F^i;PE^ecWu6qWKYXG_JU{h3?p>s>5fgQR=k0{{aOkZuLFY;Lr#aS8}&$ zN63-OY_zV{tBl3LLTSGJ__z-CaGP1-l0umh7PFu0nX!i=2ZMSgq=Z*y zv{cY7$!qt(%wCL3VCfGLnmub8`tfG}U`t$XY&smXLdBR*OY`bh1sj3d$jqcq`MR&0 zXi*OqZF5L+Dlz9q@B%I}qA}p~V-po7c3yS9VG4y;{JO4Ggul zKxTw5!IY3k+BuPdyi($X1Wvxtwu(2aJFZ{D`o^|H86$@D&;TD-i-MQ4NDk8yOowN4 z^=!B~*G#;}1Ub`0+Vp8whP1a6lg$Dir_C+aebjRyP zVAm~J8itvjLAbl!rU4bIIUMco_dG>tkv&_J`E2POrD}} zH?IIX*t{j?h4=}DCrKY|*DZk|(kR3sRGtg!rtdR&+tO(RqEpcn83=Fxku&lP8=3^F zdrs@pUIVNXEz&RnU9l--*8_F^eit$iR`C-%eMu^fIAH%W6qlN0)4$eaZ8ZE z)5<@*SimdewYj!0k!|ot3{wylfCk)pobx8clne1^FHNHI_1hZIrqi)?9O?{#fLm*zG3P6 z1aXnz3t}n~<##$M9|Qb6j5po^0}-cIdQnal7l4$C=KE+jMMzOsEG1g|L<8)KpIc^q z;)yTQy`GZt0vEm1WJ{cH%7kQ&*0u6a#N>P z%{7tFjC1l3k^Puz``qOZUYeS){pIZmMcVUVjv+-wk7a0E=QeKk2i89rDhgTTV+lWA zv|Zv@a0UL><|m`QOxEcgBXU%B8~9cW?*SyVrDMo^spVKiOyxH_WJG~Aua$-JAJy#LVqB9?&y(n?2Tr+ z)hYgDU{DLdQ93taS-p;(XNS4kvNOsW!`m_$w4wz4NbAieS|)~tr``JNAFuy90w4f! z!(7W_>(WxzXo#m@3%RsPhtkE-odRpeL4Tr-HQ##EresLN!axCC~F?$+zMHqt_EfuI%gsIuSOs z?2wUXkMCD--+1Piabue5WE!a*ims)a3pqzH@2`W`lZh@DUn zS}Ly%llviJ*VbCHDzPNsXPG(Eh_~)|4qv z_7whG9=}3&6ncVW;oGsySC#8_9|(nBTMhJnIAVl8ytB8yTk4yYimjalah+uxN|I2F zDDjq(!k)Z^>XO76d6nk>iUHu=9}e}irB0nRv17@4Lcq=~o94QG8l8&;XgnS86=nq? z503|$%&hM>5q0-SY1N8t`*@lEavMHNg<23G+Dk8AX4&2ar`IA;gy4eEjEH&}<)q6X z)~0z=wQ33)Ym?%%;Z09os7c`K&hD(Oc%v&}5d z*XbB}Ie_zNzoceqSW&T0i14{( z354VSXRK<$Urdb1dwVI6+WjyeQn>MF{&b{ zE%F+{jT-EHt1s3Y25U7d5m;Fm9zu=Ja%m|K7PO;6SB_+(miMf_L&~V4=@yR zao+_Vv;Dx8>E|BgmBN&i+ta0N<5(&_nM3hxrnGo&c>Lj4iPtr)_G$F#N zjTT7l7Q0sJ;QX`gCOhN8-FHszB9ww9uW17x=DK)W=<(!NB9v)!%hnL=PjSu-Vk1mu za_Xe_Y~0q1LPA6VDMj62Fw8C658MgX(kMn`$D`9Bei{ zJ<#aGumHgO%=m{n`rHp|Ivx#9Cz|`V3}yuELgik=G~lL#`ljuE4vQ0&N_DN@U^MBZ zPZ`LAW%KwaVFNE^nfS}(Bb3YyD+Ze3q+Q*jVqF*OVdwCNQEdPz&~QVg5$kn5bpzrkppDNF*JZny~wQA4jMIjqcVQ&%unQ@WNpq5E04_ zIEf5}PgxX@peAj?sP0hkW<$u17sbMV%T+Vgng`G0w0kv};KA;#1vyxMeeh|BMw2hR zJiGyfI;Ndh1;J}ObGWKMrLunD%b;Y4q+0al6X)0e`{9GK|N>nl?4*{bxYgqupU)qWib6@e>J7-&8N`C>#su#rS zxG5YK`1ENfhs<0o9UY3ZbN+5pHo!jM3?;(3Q>__zM^rv^I&TUC{cfU@BR@B3)~T`coBH+H|J5Snl8)U^kaj(&+rGE7^Muo<(Mh(t^P=-k z*o!vh6(bpYlKA2;>8wj~i&HBAF?H@3Fb&(qp3 zHEU18;l|c_-8nhXKuPVr3rRCH?7hymPS-WR=LH$~wkYMN7Ut^T=;N zr8vx?zaN_%G5m7DAtEQ$2&W5gGTqO?)nyUGsHr8*{Za8#-aU66CN%NbiHKQ4n#KSh zovBj}@O{Vhjl>Q%!ulT<=0M_y0M)HJFGa>uUI)e)rV)2N3pVW@Dp%KB1S{ z+rr|c?gq>khuxdLePn#sTAQ>5<*Jkkct|s2C+?W;&wv6fu>|E);=c0{$SYr(Kqiumyly`GPfDmOEBFNt#8tuP{wBCol z-`D2)4F26e+<%xKu8vQAgDQ+t$-bSqqa=Z8gkt@3eH%Nu$&8mNoBRH!`Sm%p)6)4m zhgDuHoVmy3=+PKuv|FA7jh22JeJ=y+`*!5)-Fe=dk88JyM}ek6zw$y`D=#W%cVLrB zHGXxFNX|&cJ_w&Wf&?k`X_l+oP$i#>=+ zI>0iFCWyNe_zH-_`M!zAu@O~DISb2D&m089QdMF=iqYRgC%MJy2vl=9{q2-Gc=G~| zufxJZqZju`DYdFNxcG<1C45fmIE-)~%m-&a@_M*?0sy(pu49VzNOpok*gvnp6t%^P zluxiY5fo&v>{1+1LRBHYh2CJ$XOV2pamTOPbijz*%+Tk!W;abPwC7|?X{){E)S)9l zW*pKpN(gmsp)Oy!w1XJ`Q(m-g$0i!TGJ8tKU9xXzKZ7{=>`_86ZkYi+IK4<3`rjL+lc9>_Bs`VMoPiREE>P6I2rk4u?G8!aP*46EiW7ujJS ze0SP$jjM78Iib(!1PKt>=_oR&6!ikZKYk$e3~)B5ME}LNoob?m_uGvnTB!CC$|S8* z_pn6I`6JIJgznmVpjJMlGeMXh)V*ZWpCHHwEN@7hzhN9mLxuMLS;IJsI{x z0Dv)h6ex%H`&LQt%U`7&8k!l^f#S()g-`_qy^z!8N0e~w(92SC^m78wDd&2M#IE_u zp~6!)g-K^1-Q=PU;)Bgy8l(SEJ#6l%up!&y;Rlpru1$Ymta~3AiN!Ag|KOV!EBF#Z z1505_32l1(6J2Z}jHrf3NWxYLE+t-WGh$O1Cj5msxd=7uNpnY9RZ5(v6)} zYUH-cI-~1Ukph~AUqUoDcOeWDr01`Bq}5aLFkwldq7r587`B1EC4v6 z6LSUA$8gPehPq#e0A`e75yS@A7gFCRH83Fz5moCmd#3T1$Xtk40=v;9hkxTV!;PU`zp->->k>{2}nrqpha$4UxwQl)Dj zdH?CYJ{Oh+g?fMN>eb9*KX2+JwJvngAkg%(_f?*-(hTpuq!OX;=ZyN93;>SJX@Ony z^*q(nW5+G~aJOVh+Io2Nj2Jk6SXT8M{`&I$jB?~>9jib8$tRi?DK!J7oFST@DrIbG z?1$S!u|}gMT{ukB^Hewm)bZ%p@+`Xit&SR>JIbF?m{4hvH-C7lBoQVWUBzw4`6GXL zs7d+ZI%|!rd@fOgW#1tF2!O|Z1VCut(L1II=L+pK!M-W8*FTGSU871XfxN&)GRtVa z2k)C7_5>1w_mI8UTJ%qZ+wcR+fDFsp6@PsNi9HdtH)9GQ~ag&X_)(C_PXb| zpO4hdetsbCAgD^_%|0p#ZZDUIaXVZ9(!FsSi5X8((&J(Cmuq<%IDm`heLiGcNSW={ zR~dP_gYZP%TYiSy~9%ECNKDCV)i)GyO!SJVjqw~+hXRmNsiYw%R?43Wc zgPTq}Uc*;CXCijR0z==p-zHfi$A43TIS+e*j?eT+CuyIP5iwDI7)8jg{%2XS&~<^? zl;{`c;LBA8-!V|EtVYaI2A;$;LV#W>1V8pa|86<07H0Mla}bRfw~Q@$E3hxAiT`O^4c zRokrjHVr?S`F8&(k?Z)9IwRh~f5jh+pn(r%1xHK4(j)J`6nS}7u0Yc1$cPH!re{)* zjC;`?)0CgkrO6(u^s%MKsgnCx2>Y?nYf*iFco%Ul>DXXNYi0M>A{Jfh$!k%{Ou%~w z4Ku3&pp1kO1A?`FDB_qA%j4*J7_idanBWh){lmzhnj$i!Pnbt4ch~je+w2S-Yt&PP z6xwvQ(uuH2VI^uG^%iN;7IEO?VVqWF(+9qX^Rr}AuMYh9L9Mb2<$CIHe^i!nQ_e2wGgKi4T`x%=|7!LFz*1vRFM?cH@u$p&-Td3qDwm4$#t2uW zYb*yjMxc0A(MyXrn*x{LF$3=ynq=pwK4=7e(Kb7H`)3?_O7pM z_~=nc;``~J`MFww3sw(ADjPTto9q#suZ?BoyrLi(0sBU?NPbf#TAJ~vrSe_? zazP%p@gsEwhhqe^GMVI%quv#%v9!@XV%B)Q+TVhlNC!TL#Yg=LB_poc;007Q_G1J7 zTnV{yf`J@u=s{8bNIf$w{09B!#xw7#ORW1xvxzm6yaSacFIDu$rrrl zNK#5}7qeg=`CweKw3P;J@(49f?dMW}`}JHoJeMQ~!ht|ENVQpxt#$PDJ!VXXhV_5F zSk6o8uy!*+l*Y0LaGI5{F2D8JWUwh)flCgF-yO3#3c9vR2F0E zd9SOpwQ?dukGnb8Heb@RLEv+J=(JbpPv`eE$=8wA6nr?_f)9)-2FsM~CK?JFcSuhc2FvWj$=L)vXxhz;tlfItwZ zHV&=ZC7AVD;vDJOMW>0qEd@ehSYGjR$B>TWW^wx;h0z-3B^77r=aMe2ST z*=`iAD;`T{8LV_S?nF8`!Mj=-O~u1P2r7+5(7t|@2*6b3;Y+QRE`HRojP6$33ghNw zqK6fz!EOf(diE2IoylfuaM&TOf^qXWQG+N6;e+CoOzF>ZBM{xAlJz^j1 z-Wc^GiJ?Ucnkmb30r$Rei&s0JD36Y{X9Pwm*->wy*g(1KN-ginN1OTF*X zv6Zgup~|H%kY@U>qnTlYywQJj6t`s?YcvH+lx2 z5-@v=5AC&*kq4J4M;co)Q<_xjMvPC zrHIxujXtQvks!ps3>?)zF4n{C>cA%l@HAMz2ky)q#Cp|R4zw=Sq#=VfIh|TC{wHd9 zT6RR7PnR)i5HdF7l6*N!$V+DT6&39PZ8WvjNHUPgx~ZCa_WWdb{LVoolqU}odk-?0 zw5Cb!Eg$qU3iA|!X_!N`Wa&z(^XK{y8W^klbUo_x6MqA%+O-d=Je!&fI~APk(j{fd zy4@1Co4|oF>EN*{$3>H;#7okV2Vb(6;Z}HP%yKY{#aoz?Yz(dy)G(-ZBV!35aLzt7 zl!{4_BiS#+(F73JZ3( zmvJ+@+7VsB_aXmLC*#-Rord73;Dj=B{#`f(7oa=%%Z&-2M5R2wY*aMc8E9$jUS6=QIxQ2to_G2O-73*|Amwh z);zlN20UQB{Z|-9?|XzBYyMS!J6k?U2`H$2%C=hdgz7oz;>5331!waGMU=B8U%!D$ z1BG+Av@4sStqYHT5ali>yXWr)e)eY@cC1lBFgX8mLBM|=tb81k_V)`E#X^ICf3kox zkDoMN(5GC(qJspFSSGQQak@SGU)zVt&PSFhCmRARt#0i-o9g;q%h?vl-)}S0;!_`{ zc}b(RgI0$x(N;SC+(z}_)FVaSs1~1W#qd@_pr58WODYiJ>XxE(B-S` zH~Och0z`D2>v3ra1N`*?%DW}6sq~hxkpW$NM?c&Yt~sV!5R6wL?Y4D0lXE91i-VjI z?CAiew4#6T1>Cu#!PY$PziebuaClxEYF~ruMx!h-z66W@3Q`T>tr~*j$oPT#W$r=j z?PmU{at(?u71`euFJ#SBfi}<}?8H4VM${SA!>-Eqk}FS zMn^K`36(M}3#=scZfeX*@%U;$PnIExC7J_>i!y{@nc~V4Pl*!S2mI1hZt9SJ?yFj- z__W4#VO4@g!`;qykEMCKx87g_Z;+Z2XxuA>Xab|vJ>xRVJ&HpVl&t11ShDobFnJq^ z%|+e7Gei%fR_1bgAVqT1{p&-G`5?N~28?juenr$J(X<=1@26`y)h?5v zB`w-DcTehu&`LJGApghW4p(V+$5~Z9TwPXcbX^vrhR{6@k*AjW?fdZRWVUG+nY}Gj2nK5Q;cg-K`n9 zIHjDls>&fu^|(uWo{C0J3p^r(A!EmatLPAe0BSkRmzy$0^EqiT zE=#9d(Um5Odym%5l(R&pmkcB7r01Meg_F(5FRGEo6k<0C@v3K)DO5Yf~b#ijDas2;>fg`|HPFuR9kAFZO%^FVeYt^jud|ev!ZUkx_m{2on?qa-#MjHuwCtHkN;t7xD*A zF=phgXMYiT>N#2GP=+@62EiQed;S;}y^r|uivQsvGY1L^!Sn15c(oM+JJn;hO#L|yH;y!yt{iQ1^SPR~GN4#t-`B4(gF)}Hhy6mLfH4B?U*xMyr z+?@iVzlNIo?2TCyz#KF${SORLr-#|tp*mMN`}^NT{Cl?0x3xl26P0|@5+0SbtH)s! zvDqU{z}M-M+ZJ{)O2(T`s^PzZ&jm9`v%l2DNtCeHZ+Mc(YwWlqjiF^5{}?%Vc!m&e zE-df<(A2lY=hXn(7>fPJmX9!>JslKWO9lMZ<^@NS2T<6?0n#2mXoIREN(XAodf2sC z`PN}nhh1FYm|b3O?OnH$<-;(D@Vgg0iNmHSW697Ih%2TZF-JqUtt#O>*2Q+~C`E`< zV3H*BD66rqwsx-!8@S(dCU$U0>Jl)avXe3`F{LA>QYXv@HV42NEeal-|=!IV#RP&aU2 z$@tb!s9$u%8_53Z-%%c^{~`&#@XF+^`H~RKW6ixvu5F^)b;`T`Q`0N6a|Kkh15|U( z2vk!IRP#aU-Ud{&({evk;TL+1nb3~Ex&tUQDCxSV=+slC>{auO70;+s+xd09`**ka z&vQQltpiAtu;ZE&9}Px**=mE4`ozx6&3MWz%r>zCfT z6jT`!TCZ0Z;WPbZ2R;>1Y^M`_5>v6iun$s*aS}e>*MH)LAxQ9?L`ihOigdfQs=fe5 zpoG4a5_Q<7>nT5wxhT29U^K5=!jR3n<@A7+qodo zhO2k|zQ1u;38#gN8a1(K%TZi2rFw(6eu}RoMMIscWk%Z?Aq8Dvr6@CF%^97;4KQcl zZ!f-={E_7HmaQsM7!wetd6S?J&w=AyT0u=ZXmp}-rtBPnf$xk(b z^cLy1FkA^H?9fpn8}`mcW;SXW&j&AcAfLrHpn|*BdA2KE`QjCLS zYt`fHGBh0I(6*!=YODwr66S-2Pw({I){L(=IPy|1Ip3^!Z%lN^*mMQT-(sqY=Swt$mnP^O$1-l0!ld@io0Vg zs5$j8g_MVh@z!Pz(du877z86h^_OLC0lv{ng;jpoP{UBd){SHpYk?uoA)&A&itN9b z$5@fuTXu6cWvI*nlsI0>`SZ2z&>@>`v;x-@CyhE3u5fS+gt$1+E|zAMsQn+zOlIrp zx+ck{qQ1JN94KVg+UrUAT5#i>tCza;`H|^7!jTqGloosIoN z62f$mpCZ@;fEz=erZi4+gvvq+WXUDG2B8ooEqO{V>`xK33C|uA544W88p7aXqDdPS zuu)()9pz|ciO;nX)~uN+Mfe-;qD-f3)@TCGs>a1niJO+J&)(ir_Zqqx+E^FQ$dIH% zSc#i}mH;kRNPgI9UfJABORlW?gTNmz(5M@%i#Z|+ko)WReK^{H2w?EaZlU}iwtJU! zNMpfI;1v=>}g%M zF&yhOfL+Wjq~{2}mngiA>7_F8JY0H|CX;X!D0-BP#KHo+;WGz{VAWsh);?RgR9dbN zV|0^T_qY}d*=IZf?b{_)#-?rFvx1i&wSmNvX>~GC8kKa zGW|X{OmI}KRB%aRWlGN>WZ;LkUed{Y>7qwQ@&NpJzT=!mIu0>lbI4w8P&TseQ*Eje z1b~Cmwmnc9ibd^M2^2}1Ci4oNOH?Z@buM(zl)t$-%d4D_FoLI05-=b5Zu8GE{|(h+ zDH@8xd7-tub*K@|;CW5Yo{AW8wD~*&VBCigx1hjdb4);{BN$ z9p<{)0fM5*9;=d!4rJ*a%MiH zB_)AS*V?R%$aGT{4Q0H<5pp;a~ zZEW#hRM_T-2~Ck=^pxh<;+HPjE@1LSdSC$8{G?hh^vlG{$*H1nYS5Mf;8H=FploO0 z!4mswbJG|q#cgMZNaW$kG~}9nHSwXug@lfmLDVesk*Y?-sh82_{~FhWALBe+q1~1Z zj=Z}yki9+60^;nX1SPCnUuA}|*F;Uh$N|RH(NctT7tNqk>oIEBNKy6c7+^{=80Ps4 z-QGY}13QBn`TB~@ZVGjT>dineD-+=*Mz_5K7I|0CKTBgwa9G7XCPB0Oh_u&IK}O%^ z(OQ$B3%PH|Ut2w>Hf1g1b{BTLy8D?VZqhcSS=12gP9R$KP?gN7>3%bmyMtvcHbmKj z(IUWDDMwHHSnMh(sESEb1>m96mJO>3m71cx)*2I3FVHaPxOx!&6^Q|1N&vA*eCg7J z0pW6x$2)!Xk@lk{;RjxYvk*9~jFYbS$E^RkJWL3N-rpS3LEj4li(ECL!*bWC1WoQT z3BS1jGUtjr#-`Z{xVx&3SW;-S9Yu%3M^H@Y_v0GgG`Q!jF}WY$IDmYs$Y_hlaZ!f0 zn7z|H+G(*ShM9!LW^236WjDZpHmfB?^*>QwQvp{oaAyK(I&0`?9V3Lj2(l`_ZB+J4 zfoqdZa^Qto48bIS#q6?pv+&qy49B=XeUWl(E<7Z8!&X0aVG{S)MpkiUI&aqng}oeS z-mA6#is3)OqAbGJ)dM1KHjJqlIV}8F>D)*H#L$Ntw!T_!%jtoigm6$bgd#?qq!ZR9 zuB&>@iw~05xA_5l@dNpHhN)h*LjC6i&2t*qXT_&8(?5xjkB>`GB5N>%M|FS3EdH&8 z{;r3@^z;#`i((qLAzL|#*AJZUcQTJlx#~O(2N|;3>B}Hq02Nq{IO_)OKnO_v{whMa zGupPZ4GInCAH--9*=xTaE}DrV_U($18+hbQ6TjhPOxB4YmRv$2qJ6o!={No};2`9KDVHZ8g*l=qD+{0E~!gck!rh&|&t7c?c4b zj~3Vjp0+**AT>eRnZo9sSf2YwZQ+w1TgM1!4b9f`;PP?w5NbF3PT+bvDK-&^fJR6EvkSfX*o+t8a5`uc_aKe0rLQ ziK`m)z0cp6-yc3M$Z3FGGbGx8LYhgrb%$T@+sGL?7G~_6mP21x@OMhQS$rq(dw#g%^kx^@d0FWQ!|KB# zlVxj?P${$XH(O((9&7ZCan6)#ms#O+&JY%ZGwx>;l1U)XEhVN&%A=sBOLYe!a)0-t zMm021+AW7<1PD)D3c%2?7=ak@Z9rSjr~d%dJNA@@%6){DhYB)~cDE^7ua-TL#Jx8| zTZby?4ZmDEpr+%Nv0p58BKL_IUa`l@btoH>4f@jk7uMn2v~@r)_BI%Pp_h%6i|wD8 zw8c6^gP}F|JGg~HQ`dtH;1tnN4ysdPYWT%mzkfG-{XGG^PI>C!rNWAkWC(m8z<(rM zuXZ2CLdS*}0!xlJTb*;>l?*#ENHF*7cK1C}hifUE``m)G7{kE=Wv>ZJTHoe#xH|hx z^wXx&k(xEgPOIkSBz39Tz)v>i1cV}VO2C-toND7!@1V2!`PJruyC+==@FkPI27sh{N1+flH*BN>7 z3-mfvJ))%SktaGF3Jxd)AZwF0sAvWpqg!y}nZf<+-xa3rvzNS&#G$tbRJeFH6S4#< zcQf#=crt{M>3V|C2G5rHIdwO!T%=n3auFXNd_Vy?=vg_^VVe)|N@BISY?$XXw&jL+;t`9`*Q_MSoDzQV=BK9WUwa|6k}9?D|6=PHY*lSyGTAfZ= zfIAAyRaFNJjCWj;n)x*#mRF{(<_j-_c5L66H<8u6!?wc^_;G@!<1oV44o_K10 zc7aHh2!ZI5eA;^Dji72Tk6%~+eF0JQq8*9;sLz{xDU+@T@uA*B%6!hMy(^YqxJ`fx zUG{?kn7XCnEel=DhNnF0+w>M53)}RXg2$E32E?;*X=Y$D)<(Ww$FgK`m3}kRbaF=GamY4)()3Q?plnrz&Z1m zKTe-!%WZtx4<9P)5IHb2ff7WKn7qiq98RobE*2@xLu~QbbcP+B!+J6Xo@4)aB2-o-EsX;i{h^GCvk+LC?fWl&O2SP=>nNV$CO#=}Gk8rq-+}AkTk6rt~G1#>E z4}!M<9L~~4K)^m+EN=QZZ%3%)e*mIsy;=_RCfpX_Pf`H_h@B%4K&senmphT;M}l(f z96bFfG3h~OMuH$Bv_^se4{jye^@XO=T=9p5D9rk=r+o-PKEc(=!J>MlY6RH1$98+MG?LT;yx zkgANJl0KN7V)rF;0V>!uybYcU<%rEGSbTVd5p}iot!>MNIFgHGUhfR1=vJB6 z++=f1NmpEj;ul7)eBTj$BSCLzaQ$ybY1{h`DgZmj|KU(x0gltVKUF`Qc`sth>E&{351PnAd7vQMrwc|5!n*S4bU2N)uJc2r&E`+Arjj zxnZtpvH0iSJsb+qzxVyxCp35i_;!DrGI|@4xBK&cf8l{*m&a~~^}7E6@Oyju=-Y)U zK>dgP>2DDF_4XmVmu~d^b>W!){p$Yq!0KFda`FvAd4yK->Cy)+16nx<_3isMH?@bx zpY(iM>|Y6*(%G%Ties(+F^z0z-9)$#XY}ABjx5^VPWw7}mMZ%pZMav?avS>vWE}YC zUownw%f#KMdQ?U4C6B;| z92{~C&k2|J*LzOhSDV!@Q4(*sJRZ}Cs-~$mV0yheN3m1EmI{lMLERBzweI;!3=DYN z-48~Rs#h{%RbE=kU`jF9qP!36eiQWZx`UvI+4&Tc^7u7@xwwM}KnuEv9PjvzY~8~k z$~>~BlS1={dS7zQQ~3yvI_oLQC%}N(*_Je8)A_(R{$3=IXW9i;RuARfR;K zh!l()l)v=1iDF6qC7xPPmG@>(eiMe!^t?1HF^KB8f0o~5z-w)IEyd-H(f(gEP#iB3 ztc09I>#zedYCH}Tz~X%NOIImjLmWpjkA1x865rAJ06x@ zQWK=kI2Db5lX58U#IYbK!U=B1)fP`So6(f-+3u9zx!r<9P^HQxD<}o*q%;b(>rY)8 z9+issG7Vj(1PExV#$BfF!OU!nQNbqGoH;)|PFKOYIf)liKqE3L=MpZtcZhprO%)d5 zOVR5=MGvpqX9ihipg`=<-zrbU@p0yeaDCVxs#}2X*CD`L8C7S;U+dQ5R&lM{+{K{t z={U}5dQf+R?1nG-D=^2Zl?boDWc6e``sb@H8)((1T0WaUJ7D*!Cdvp=8`B{A$c7a zUB|ax+S>{v%9JfbV_NaRu_xwwpoBi(YIg-z+MT+?Y55cdCU7gsQ~s%sRl+ZyZlrB* zRlAj}V9w-uo0HA{go(%%N;ikrBJQBpKvOv+wcy1mV*2+c)W_83#^DBHMb8)BS7Q9x z!5&M;0*D5K2*p=!r;3lr>DRxrZS0N{!-K`9HpYrOkkZL2K5=Sk)9IuIaYxTZ|Lu7$ z3_9Sx8U9LrF~o9?kI&DBW1gNgEgz+eH}>!G9$o4h=4zSj1h0E7_|$hp;MqPxikSih z74hg{0tM%oyi-aOR=pCtHvXCb8N6@uwoN!r2(Sjy@1=f3k>Rz?h zC!{C}N)Our-GvT8+ED~)MVK#7L`xS7&FefPOPMJ|1Xca3plviy_Ra}BDsZ5L?)je= zK7d*Kl=%jBdg7CLKU0CDmo6osP!iP-b!bLh-bn|yZ8E)i%mkzdqY^B&ru*vshoA^G9NcboXMk!xG20`l zDqH?>6F5@|RpTWdx);Y*-rF#id4@)DAE3_BMyD`=&@&1WTRpvh)el8Mc~pLI-d~i9 z4=Yteaf4}1tfRW1(+8Vl>Byj%nW-hk-`}qiKh5SYAeSoKKlnvAA#U=3bGXQ5U5r-@ z@wfO3H7R&1tq3n|csBCOasAI^)W0Sv3tj<~j&nav&&5|gu6Ar!@lP%(`-@_(KmfS| zYp3)4F8E31rc)}l4xrnn=f;@S94cf)4a~v=e8xBVnEfvYu_kVhj5eznk*DyHd%+S+tZQJ)4ERX`n;1{GK12>hLUIoNS%AY zlhsgl$X*B+d zs;|k&m{iiTlyEgcPp##E7FqNx+H8cmEpL7NHLILXr6NGvBwVa|6nj2}+0Sr|DC@wv zL_dh$@NrdYwiz_9j*+l+_vE3OxS06lvD=EVGVCo@la^*=KNCUA0WL0B0{{*@NYfr4 zYcYd#RFD5LlP03}g9Qy*ZsVqW=HphvKqKaG=vi?Y6~fy0F^D+X5a*OLo`sm81nCYN z9C%_nvJc0DNDRWJx@LCDUA4q(lBMu)=yy#C9#e}@;uC==g7K$DOi4UDoaexJ;6{o0 z-M0bX2h8bM9E57nM3;$;RBk39B>6!PY289!$OikL8G1Ntl^(;stZs5n}^vh>gXw1e0-!1;`|kdncR9eM0< z8XMe)_95BXB4V)T&-e^Cn_l=d){^e0v7PG=Y>g`5+AzZyV_6p#{LlHxlry_2K>d<_nO` zIf7PZ$w{ZX6k(jB-%8Y!GouS^I7m!kLm-azaf+oVYUEOJiR55Lrto}nS$9;w>um%+ zh7O9!wYw|n0W+Hiv`I?!o}MnT`#3DtEB0k+QlHaFbvp^q#PcK~8*@|^ zVFUC)9{l{#22I5d5)B15(V<9%*u%tLF+#z0OzunWU5uyZs4{bqmL^~@FCWHS)LYGh z;~Hdi(h2@gHBq8lA;SdHx?;-xOW> z6Z{$5*2K0Zb~3R!v28my#>6%zwmq?J+qRv(zx_Y#?m7E(zqcOxR99DZeY&cE z|E*p`J3jkP0&s?vXIJ!?w7V3dZ=>;g?~qo8C2*f=V9x4G5OKL#O5uUtq@UvilndlG z4;q9ddk2&&@(NhLBbhc7{{f_t_`B+u7GkZ~Po-?~Zaz(@vfSn*RrgyWu^VZ@S8JQ8I@$+oM zsZP%<)tz)0YTA?trVN;GBj~dhq2*GUr&mbotM2q>_$3kIfWD)IdjXP75;*dcDfcQRUsV@l{?{4Sio zAS;g8fYF^Cn_sL#+^G2&|Mu{1$bU;sq*^zia4IV2@e;=%*NTMmdiZ0D!000FTO9Nw z;FT2ng!{aB83YA78>o0o?;J0Q0nIgGF;j*V34L7=fJ6wWr2k{oMya3vjBESK*6;a_)SW>LWimf)E8Nf2+OKWl=lH5KiF*U5{QK3wt{uh=?yBp~wgQ+TRH`e$0OE@v%4G-P^){mjG) zcz&HzzgiY2K1$=nkB~&vd|tKQ+#C71M^W9STUpm;vrRLZe;j@rT`Sw7&%PdcmmNVU zcgcoH(!1oF$sNB`KUMXp{Cp@eKKDV;SZTvZQ86ZLuIY;6CY7Q7Bem8=#dMNURAdE4 zTDe7jy{i8X{Y|&&tLacfe-TN`pH{jAU_?i=G28`cl8#9#%GGwZ2@_LW@4C~jM-H^y zEN729@t*qJ{Upt1@@X$5X>6UhPj#Q0ep~#=fz9E<9e4TlxqjiX(pIv9fs3u!jliF*pDOppHy&}l^b zZ=sagoGOskqUw-mqbA;N;J(}QoY2Ixj#qnu`}YoFyBm@a-^seLBo&wYRKE8?wNTNY zU8qf7+wlFcl~EB_&^-s++4piHSBRKf~s^&goH;?wr&D^oV!OVJ=YiK!`Kq79fr39CPP} zZe(q*FUb+_=_hXY7ff|IeoZR|Cm&E;~4 zeS!`wbKp;!Z>C#}1IWCz2TJtHM<0k_M(`>!d$H0DoP;0tiHSgxhy)K?=eGy5$}}9) zfB>OK%1!}X9uN$I-Na2Pf&jtb*bxv62FB9*Qx2#*Br7^8%krntmw-6&Y0B$4Qftc3 zK6%t<5zOq5I!Wgfq=pEKnxL#1nu6c858Zn5@E(lO(C`8h=t?pNnKh=s>9LHqoNzkZ zoR)Ct9eyXrd5ZakhENWfY?N=72r=^(XT#cT zBPt_aOio-G`)81#dcK)aTMxT-Q3aUP!i3omg2tH;E0g!2nxalK?a)l+NVZRPJ}QZe z$h>7_pSWLIXURKk8n$ec0X2<|W9!2@PaB}Eu9$$ov62kNKNr0{(~Swi-s=F<#%QeV z&ewTMQta+`=eVgQUSRIfTQpZ~%=>{<+c~uKg5cd)RgKpah$M431}6#B#I1ai_(MT8 z;?VDLC**CvWb4q$G9$XBxU}uj)8bfl(mK!<>K9FamrYO1VXA+T8nqJ95`vxHE;_j6 zC*c7O`lkPA#)^=d7uD(oXP<~^_atnMYJMBbO@%rsMcE})!xcKYRmjIR{6)T1S_;#+ z=#u6&dm9MB=kTb3wx4O|1^Ok=usC__-9Cx7HQ+z`j)XH|$ zynBCD@^DImaD}a>HMt|;Z)-9p!Qd_hKwr=EAy4os?r;XGruRlT+`CXPj(+3X0rR0V zTCBR#fHd|xhCi&YhpDi53@79>XH^u!jQJp+5=qaSrM7qUVir~;cW!X!>+*D8MJ+ca z@qjAS#t3*SaE~tU0-g%Wr-7$}$853Z(qyn?+RdNkZy6}hs=1-GXH5YT#9frYibx22 zeNfjw|Fb6iJ*BOuxT&2>p#85hDwY{dDQ($_*gz6WkzrFkql3l5DTdkp>*^`!NUrNC zAP~<1eANzO%jF}iS#Y6kp{nn2n8X>V7k8p^6TqpWd~l$_H45K!WwPfBtDyQEs55sn zeL{GJ!4DDUyN}o?qkMqEqX0&j%x;qeobojw#r28$7iqbZmIs_^#wZ6BqK<)lH5m~s zQ~<&2LIunzM5hDh|f3_8=KG1dO|qR*j&W-Tpoz~+Ts!t@WCiq2R0 zWYO!zjTiMIAAxVWfvV!U7IWVH&0V<+u}cm0CXq{%?E{oiN0c<61Sq7rQJ|1`fI^~{ z0Sf7sl{PyAC37x3Wv&GZ=8iOor5)-9__Ii%6+~9w zbNt(eZ0&?XSiBlk4EjI?2Av=jISz{9A+RK769LEO?&lnFq`N*Mjve0yvGVbvKhBHh z&P#od!r&x;J@-WH5qKm^W+`{f0Ewj~fIdO+bw-*jpcFz=J2O&UZv=UQ_M^p*uRgGD zgs|H`j7EU;Yrfr>;%V~D+5sKNhpJ>jAGZHsU_Md9G^DeGg!lYyj>Xj>wk3r>;9|s1 z57bk!rP3a2Fh1HFzC1SaEh*L5J8G0N46Opv8c2YH`LHA`8_Symd!@3E@*Y)xBOlar z1}_bAnJAEG=*Y2o>ZD6pM0y(C3YEgq1!~|`B7d!!3K-@Lf%eF!fx$ND1USz$etME_ zT@B7w`+&qd->3a9#R2%pIVQ zyxkSdGFs!4;-QwYZVJlUwYjQ<{~|fl>vHw-yh5R%#?i{rJlY3hxgm#ppQY{ zx9jb1zt`pMR6(Y2OA5wsYi1f?Io5Hn-9VfL$gY>%ae&@eMhhM1<=!|`ATWKJkwm1E z>HhR6TE%)P{A(4c55Z)CU zN|lVGNkgjU3&tC*geYmac~gI^VsD)2V8;Yw;(T<}jJVBIFEm zA)d}ZT(;)nX;*dV6W?)rM5mAm`4jdy4X{Pw<*f`dxT?YRN98%NNz7Ulc(0e^;7yUs z*BY?c9nO&=lPt-qbD4_aH9>oN*0s1UF6hhDO1TJKup9UzkY^(4fN}>dk;hFi0ea;TNpC^MKw)b0b5HKP##K zNP9yrGqyOXmqq>Bl!)Pyxk+KjSW7VQ#Dn}v9`=6?+~7w|O;0|LePddn3kk7=glzNu zI7v|Cd#f@KKB^A%v!Pi<95gwwbknAIype*5>JNLTF_BTtzx8h)6mic_Pk2!h0A~yubmb^6KnEBf?6P9Cqm;T2ayfFRs{qt#I!!Y|?ahd)fQu&iX z0Nexe=3}r~IWS0Cr4|+ue&ZRP$!E^LJPBM(h z$X=6#(8fP>Pu}cc?~{#P)auM`&6m6gd2L*WI;wu4-C#ic;wjUvmn5f+ez53u_AU#G z|DqVf(Om2vN_FNO3aoM6oJOR@-MB zHDHWxI%L)bi2dZ}NKw&Z$u^NET!!lpMH|thiiRDamWV__h8cj=DyPf0R6dSiiJ%~4 zVWIqQHC0(~64`Hgj1&CXNGQ__Z*f?}5R;V#4P@u~cqv7R& z;nJG-kKLH#@5G!aN%zoDX)Bs9ONYL&#zV#S{_z4nMgy{9KcEySs?AAJ_bsfdvII_guNLRxL@*RJYQ=+2nwxj1@s45$$cP#al)h3{cZh50MYg3s?syxO8{6f}$ zFg|`{+cp3BJaN{Ts~@MB{L@7&aA78p^sP>hxtE9#?~tX@qY%3gmj68GKz|8s9ZiVu zE?5s>@cT0UXw-4CbhB3J^q_+sB{i!VmQr@7%{YBKMt=y4BOKR$Y{1rDXB7l>iI$LC zXRWq`KH;qi@ujw*H9kfrpucx^5j68Ly5BjUGd5L`=f&u*wQ0@Vl%oY39@}!{)JM2c z2Wvcadkm3|3PB}}TKbQ&ziy2aJlXJu_w6*`=2IigoIHGi0V2$|mRYMTd?i_3RtBRx z9RIo6OqI*DU| z7+OSXT-TajAKlS%#3{@C_x+WruebH4V*zJ_T+h}&O=R|cJGYprMAU#kv@-ae*|wlt z>BcS2NwWN=37!6DZn|#sD$iN&TO(!RI+no^<%c%SKdxmP(4k9~_SijRI5-ZG&I_Ma zw^^=#P)@*a4z0gn%dMBC^OZQs-;tRClJ>6xAMY|VMD4678_Kdm#2YuDmjuO0d1>yU z(Q7opCwjxMKxJOva9Qkm8PQRjKN}6*ev9*vQ5eFL@*2&dUnFF6x9X&uZL>BKrf5?e z*@+h}EJrMTwr|AHU<%wzhSuU}lXp!hv%&)SZDvM&}D`D-#89aB=N<(mOfH z8tGE{iprf zWcw-p;Cz3hrAq4;1I=-T&7w?0SX>Uv-*m=+Qd~KZf81xuJ6MUWoBoDdVd7S~r)3WQ z7SBW=HGYUkQ5-Ab#OW0%{owpI-PpaHS-ZjEv(-A~yi76K-S?e~`^+LI>K4a*l@( z)HXe@6O>1JaF{H%BxOjqNI+x2K$S>3SFt!89^|p1YqrOw&~?5_6@i(pSVn;@%gibj zbyCclSeGeXHJXOhzb*K5Ew$H^KjF>5Ww$*wSUXEB7A{B+u!JVHn)eWW00;JpMV3jbBB|gifl3YX26F#s4$oMaYm^cwjUnT?a?Tj=-A_HQe2t&C zfkr<08iJ{o>|J6AS008#E01O6ljXn?}{B}33oB;4Yb zIEOu!#-K8unFNtUtRkJ430cXu^y=LGl&2w5TU;L|8E$E$vP;YjzRd?^=9kT7zH?XD zq6n@yK_ckjz{Kf?th6CPhZ(kD!I&7WO+F_AkYir_$50^0_BcR}`+*$C&;mI&FW9OD zM68te8;&n9=Mz@-EA>1q?~W)Cl=mw&^6Q0>L3@e(h#{ES0&ts=S38ND1OFI%B7&!H z&Da<F!tc78*8hI|eCIH#S%ogdH3JArU5}C$q|p9Hq%@kp#kF-ngTJ@x9!$w?qtPs7 zDp3~ledO)95c4|n1dZcK6@56^2*KF<7*L53Y+vrU?CRq?&0*#Jw=(%Ho1!^^*$^@K znAh7>9HEqAN%mAPE0od8n)r|dLu^%+{~wK%L(^>c=q_yh0yZKA?Er9)C6T2)CN!n? z1EhNN@a60{qvNtJPXJXSbSMR7alflnKwdohoJ{?NzbcMBTFv6X)E(;&>0e5xTzmVf zHtVFf4FArF;{Y?1ZGvnnX)sK+j-S%r3_X$L|@zb-y zg-IgqU&_0$=_P@6Vl)6;ar3&dR@~~2uYkT_M+t3`(NS)%w8be%uOFgT1%l;N$|gWT zOWGxoX8Lzx;QE_69FSL0K}AZ_TG}O%Yx_@nV#}d&^dBapM-r^}C8B={0uAJd+hX%a zc=i#ZB>IGR%2vTC1%nzCkHxm_05AL}0e-6F3t1u^v#e8T4!{Z2O-neLYVNmCX4@LG zW;#i{ua;5hV}k^lY4}`v0Sj=neoGhjW>jwpW1$QdJgQUv=%V8P4W^@wpTk0U#`JY>60v;6v< z(@Qkucv)(&fZZog5@N$b6j2Iwxk2of59`SGHm%>saJw?W6lJ`v1$fv$pJTkwydeAW zt>c}H>i?S_2LIR%P@6-MCE0NN61LD^#TnH8qsa|?`FhL0Vn~UMd*A#vW|AFk9L04@ zJMfSB9x`ii&ZBCJ`<=icA;_7y$LWJ{7x2!-4VXl@r)^rJSL$|B%Z87_$xdTHLahE7 z5#^+aUzZvLHiv+e0c>oBtR#c^9}T@OH^_i7Ei+ySd!#;uq>F;=YqirLCkPRaB%ymIeFmVZot9U0RQc~ zFu>9OBcj*+OdSgm|6`MreDuS{`S3LTiHTy*#Yi3#IB6(8t8d_>-+`0903>WBS^_8i zA5CsxDUhxONqOJ^5jEeZ{Rhlew(m#%Bc2MZD-LO`Eq;#eZq`FWvR(=E<}O`}(QSfZ z;iWrzA`8$+2%!rA{iV?>yis6tQHJb5OYAF1DR*S%i2@ohXFeA8&?UBwpe7^uRc1?? ziZ!H=l^>-reGwX5^$#=rZjpR0naoqMZD!NCu4Uyc+C*Ar;iw4r6e&p5r3@sb@xnD{ z71s5HHrvL5u#tI2@z=J4tMSnKRV~u}@0B|_77^#0j40q&AE3&lJ+|{_S zjc`&&AYfKC@Z7AkcFB}(SBSp8*gEd)?{(aYfi`8{+Ob%1RW_8nK6P~4qPMIB%NNCU z{}s4@Vvj0vT~pqm;pk*A>O8p{1uG$saeAGb=`wOE&%LZeS_D(1O%`W5dxUnK{}{-} zaRHN60O%lueEIg8QtMoqBXuM{F7#C&E_tc&ba+h|mwqth$*E!Zbnz=LXyW)S1$QS` z1;XGrqh*oaKmKTDg_cAmJO?FuTA?LO9XZ)KIrC@G{*jHoN~#E6|^1(V>LhMLoQE2p=!v*m3m;R}ck~_knHu@g0+oZEf9wvZ z94SEM`2C+nfJ!i^{YR4<;C*ij#*lP=jbfF8T$u8s<~$u{SZ|ae5Aj(hcvzqX5U6U> z9-irePACx2D}mpmgkbpOi6tzBuj8(G|GAnLp<(yNmy)KdDgi`lSFOi~foCdJUJPi+ zv<)w&!*T2A7S^rFh9Km3bEwRsZ|}eP`#Ldbwu`$`FFnLH4YJB`k6HhrgS9>JPEYgw z&vl{`JpKhTN(6MBFEc<#1h`@VdZNGrfyM}rFVry+%`QE?dzeE49}9PBZ2`$5^tWJb zTx@zu&Xk15>j)aH>3O(Z$)E5k;j$(fGh140gT%9qpuC=xAaZ%>QarH`C~B&81H_~3 zpxV=n`plwfOs=&84^d7lLm356Hp9=E8u$0&@Y;PN4As%kVF|D4fMYPtGzDrGkdBsz zYd}R43tEq`?DAJeC4W70mKO9Y{A2dg9UCV!4g#S{= z#5=^H8I5TY@{<=x6%c6gUAZaEmt1P6uh-2vy^9Ld9~d}r1@7M+OQqA+U{7xyAng68 za&ulz%1Tm2+jx&&0EV98Wiog)FKx!Y>fyVjgP$j!#72|1!>t@%bp+=J3kb627#bh- zz6)X_ z8!ch;0Q7#M{WhGO-?yN^iM^Pze*nF9s354N_zRoVH4SToR{37)>`h6;i_nWPAJgHr zkBBKH=vSzOihRD}NY`kQL)U?~-IE++Z!Gc;pB}O!0bI63lXjIzLk&tuWIcl|XBNXi z8jVnbZL8Otu2CHfkF<*Ch_+llIG)^-DRK#bv@AU#7*JM%c&_F^#dODtGiz-CDrOF) zRoR_H!Br&?(~a+wBGyt)uiX6>+T6UuY4#EFjDB))$oihb&{VgW z4NCGR^Nz`X+rvf@QO8lfR-fhBbs)MVJ{TzG8(p&s(MD}5mh&4Q8i<`*xX#poORx8n zc=Dzkxby^i3(ALB5}j7)b!rO+N(3zOguZhdx;v< zo;$awmfFgGsBgh4V^e%BWpn_jH*>YL4NbSBwtA!4y2C1Wfhzbv3n|M)sXbxt>jvmk z7nX-*w_0oSY+C@!;s=}WqOzIWFB$JYtWi_P-iqiDij>Ij*Rl?#xi&Hw_&C2NS^;{` zkLQGEhF6*KSm-|(fx8o-^USUru^W$$P{xjf`6>TfUt!UhF%r)PhY>-=8SKv-4Z{jV z+V~_Zl@TRX+(E!+$u~Hy-JtjXgz1MVAgKYY|8JBYSbu|_+s+;E>r2S8k*P=Y2UMD6 zPfOjq*^6QYQ?=;xV7I*$qSBv0jbux@ zTU|SS_BXG&53f}|-{;q<-5^@0eYm&)2{Z{rWXQZyH{Ge<9UsR1L1}ldvD-7t zf}b^0s^9ROd2|lbM5$B~Sy-u5#W06=Xx%KrNiL~^f{eL-tTlVG88Tb$#RLoK4v(8rL8X7X}L^TY-9J|CSGonj=1wFPRyhqeA!t;?`Mr?`SJq6oTZ8AS?DfzQW#8l z4T`0U<&iwEFk9{NSSkMB_dz^u;>6SfOzQ*(*@2bafAUIp*V1`#{~o9*u%kbhA=Uegwb6RAeWueQ?0~rb}P%Qn)7+HJ@WXKW> z&axaZ!@dYZ?(3REgO*`YQ_qYxD)1H(Xwoa5)2ugoR3T1nb(eS%;Tp`kem5wgx_3lQ z3t&E@P~-S*qT+;y1xDVHjlhU7vwzP!8RT{_5h6oyRiSbnIkXG2k!KrjAkU0=toZNb zQZ`4ui3u+h+<{Z1Qwz2DflQK;l7L7p)4={baal=RDbb76X9AoeujK0v8&ZH_{^0qrEGPsy3o&4F)-?tS+}_(_0` zgTADcnezm_82PtU7r|bC?{7)_0ha77R<(s;1O@O}&1WZY)m;O6a@)4hy7W3oSq}wF z1ysUxE|ntYrtebY4SK3#ZyLA?HGj-`Y7m^#!!q?bGEqwSq>h=Jr6E*PVSRk@EI>o5 z3pd@I5qYd(4DP~@e~HX5Rt!oD!7l+(^)SdYckbRyRadl7`(vG#*Gg1juN_ZfORJEN z;#HhezW4TNW-1iTx#4jFnzEK4sb;Ss%Ahwru9TZ!xTpkajAehHJ-U1?lG!cmYd4iF*%25kGo z>zkTQQQACZ6!0ZXzJ565abW!+20nr3w~0Pv4nryTIv=^3`p$}BxS^w~<x-8HJFVTuUR4B#KVy33lCfuUU4WFDm9AYfzD?|>Fk|fNKvtxQBdSa?7t{C5y}`%d-CmEn87jjo)|Q|5 z8QY7y8h}wYF5~RrRDoQ8SwfE$vp2;^1rBp!UTDYbkYX`C7>~` z?`FdZVF!va_i>RPK~H;uU`$XHRj~@rt=7(tv7Lkz*Pj!7@r;ahM&&Oh*L>i(l{DWl zRm2W!MesCfv@rs?&(`F0Yh15{)}9IER7Mg*9F6!=;0;prPS4#zH2}Zkr8V#mqy|$G z6|qnv!2~rIjjW4m@0*LXanA+K(N!T^qQPfVd*qC)l~D)&A4AznzmImIdT%Kk^14qk z&%14-~q5F;SvF)*QXUPcDdBCL*WN`vRww1 z=HW+PB<1bnTI9o-5Mb`XPqL(=Fy6~FMZ$}Q%&^IGl8Oe|E=NIx#UjH>nif80(x=#J zsX+741}PExF}1tFs=W774XKsb6XGL1ovWRpIxKul$87qtY2^l{`iP*mQ?&uiUW1wi zYy!;^vad%R!G%EM^39iD`3g@y4}>9c9Y$iysGrohc=TU<1VA)6SDY>v>&yhhw%^=8+A%Vc?>Yu%*Uu?ARY|DG3N3H#9G<_nW+x)Ob#7eWEyZiySB>Q4 zYjYEE(dzn)t!S>ILsacUt-HS^2?gK4$XcP2L>}DlF|kEU+y}w2F@Z~%ry%KtyxqQ1 z^}iM@R@}EFfPu#c<67y}>(BTPvOeO2_l_<;UeJizJR+tt0;rBXcSj`3ou}2jE);$~ ztdD}ErWdWhsud^QxmkzXJmR02FSIqx;Ko0cJ<7elmqfA?!0(J zC`!=O20Mq#@eE}3s8+FzEu(_t8D+0Zmyfuv53t@x&!W&;8x0+_CRG_~&0&5%=bEd< zGnKBX2$IqgBx}mz+$J4)?3kc|MwrCu71t>!SXP^o&!qCYW%C!MQQ(LTM<$^cWt;d@ zkzNXLG4o{0p^{1WjBg`NdWVykbv}sl;Z`kaNdT3#t3(;G)mz1U;4#-ch*(Ol^>GIC z&SGbfZaJ-g_J~6T&XMg-KPlkb>;?tST;mfPi^PJ0aZpb-ri!Pl=&c5bl8fG9^&CnI z5H#x30!#}Cl!rGQ4Mh7`_S9_cRofl%hH?Sg)0u>Mj5)WZT(&vfFlb$|++9VtNe1j4 zm^;lYf(7FB=l%8h`>XEGSq7B+3xRB0h)#GFtAu0fi+H26zD;vA1G=&&A!!+^ZHj_OUk(BruSJUOAxuDHN8= zA_$Qv!OtGxB0>G9PtA3TWes^1P%kKZ(J;uzF^XT|d%g&kRUSmWJ-%8gSkv5$!H)C& zEI%GL9{SoKoHKTh|2#+1hzbb+ilsf3Va!tyx}YTAt;l7=%2@NW)_aV%_5Vy|K@v6i zmUSvW*q<%zTawA!6eUA{oc+8i?-K~+Dz8N^WW#s@ip|CHuX2f_2IdpVz_kOj4`v;I z;{R7@b;|!oXqa7K_d^>B)i(fZgg(~5VutmLs~8m1&zP;dO55SVigF3_v!B(2hf=?= z@s>LLp23RmwYBQAF;PcO`DG(_Xlk9wXxc2XNG0s*=2VBXuq@WztVrGp8R7mS%N?Yz zWF9rjGY^hh2R~%(j)%^KS|jb*BeSnTVKMJb_{IIV{Abm8m&V}*;s9P@o_-79Wz5MO zELvA}_eBdLk&b=~Yl+6M*`>IjP;!ao`Q=krh!GCbyEiBskBjDdu3iN#KmYKx9ijep z&wyk2MV-bYxQc7u;F=b#e|1flf=6PY+})Y%{@8HcM&c_t{zs}$lZxHkU6K|N6^|W7 zOM%ZSL-_+J?W%7l-c!-= ze#9cOLKPnAT+!$9Hj83q^Uu^wX(Hi{WaV10hiJ>EqbbbJ!z?hcpD1-${LN#xH(eGb5#gRS?&+Kj}pQ#}iI zRa%NAiAg2EZgb7RsjAouY{yg?dGJBPw5OcL3&^BBXLO~*DKI`|Fr?#qT5pkLN<5g@ z{9)NqqxYh2`i!zudLk}lE_ubxzCA#nSc=}E*2WL!(JuzyU66ig2ImUsarK-(HROJM~=@@r^a?UN7es|azF+W3fHe`k>dzFN?Ue>5PS-wPzZc2kt*?v1$Cgi7cI#Fb_ zigp%}+zG()t+JeaJo-sIO+2@70a#^Do)USI+*MlnA7q%ND|kJgG=Ao&@w!=iFO zz5oyq6*Zv56Qk75g*EHJOn$Bn-|_1v(>6yX`N$cJ5j9hcOJHswCJ_PCevNTC>2;Xe zjq=3k>Sj8Ab}XsID_q9i<38lQ0MzC<#dtVHTof_n=cv&;UWy zy_5TsuhIi!qzDFMk|yzXj$BB#aC<&(1-RaN$n1$P7W_8}*sv^U@do;)3zn126BRpV zj-NPsRl;(&v|bL;8ku#^?NtQ#F_BU}2sU#uzp^=abI2w?>!a~lr z4oRCtyTuQm)v)3TE80i$!5HJ~G9_H}P+vdZIi)Xy&$)8TK+*Tu)Kn;)!E(p($#5iKQmrbM#-KD9IZeQ?Yyy_f4bElEjsG z4ew)mBDiki%Pd)qi$Vs)YBHeK>FVV^S2ZAXqrM?bgv(B_-i!IG5%L-3Q!yw*8Rew+ zCt|>Gjv!?r3_TdTMnIB=EF$CZV~_)Y^Dau;kfQDr;e`^}X6Hf#Q>HNU)*ML!R71?I zve37Fl_0C)G2Q-bZsACaMR<&7guZAuP>_-yljnvy@l>alAyOyrDhr@gr$QcJ51_-n z@qrQzvP{L>7#Ecv`zLTzv@b;BKF}IdSMotYg0U+g#oVVqj1y2Xpa#tlMr1!BmR_6S z-6zq*QWb`imsEFwfLY(x=T5}RXy&XoTIFI2^Vw#dRuA2-@mg3{A3M_tRJp4`WX97i zGn+QZmi}$~{&sBe41k>G$;xOENqLvw$^| zJxX<{u$&_#P~GTmR#;0!L$low3`VVoiKSiZ2X%vLG)*NMXMPZ(_bU8Qc(A2Zjjj2r zS0S3l7J0|&frW}|v};I|$+&1eRR2RgJIiApzo%s^IJ1-l3#hy7DD(l#w!Szx;I#)E z(rHR66LJkx$3&F{v#u~%+Pn4d7a0#YO!5n#S;{l3AT6ZWV2WXmqXA{S3lp*dL)cl! zlZh0Tjc|w;i25}WLiDeZz4{{KwuIF6RC0qK0?JFB1JUnBjfP8OAi`b*(f>h_j@Wl(pnA2Cgl zNV|hl09?X82tj63X1Yp~S6#6OI;%X4x)g6ANh5$z=bjc=<0#!Ned#oEs;JGJq#AO~gySvh-`lmcIFf9mC#qTYoyQ zrTh2)EfCnko80>!_n2*MA*-BmhhJY52kA*C~trXO$T-Qog| zJ^t^O*XUF)CjLE64=jLo{w>6(0Woi(>Aad&pq*0fL9*H085t{0mYGFHf}Kcerb7yv zm-0lk9H5I@N^>fXTrI^(xNeK@XtGJIj==3;y6W#gm5rPnc#1Pnxh{uUC+x*SioTTX z=ug>h`Lwh-p~cfMy!J&3z3Q+Y-=8_iTJg%@Jn53*W8%1xqs#%UM7E|zu8|d>hUPjY zv>|`&eok$FziQq18D!;N3m=jv=0cA>7Ve1#3E<7$o~XCwu9HSkg}J`Qu!0ZLUxTn* z7-pIFaSwD^X>!bve2dHHgRqi*{R_REL`2A&`g)$!y)X|~YrzEJAq|>xA{Dg$@&_uG zza_s;-L2u=m(cS05iXVcJJs$~^zk;O{+(%S34+0Gle|LIBdJ<3o*P&FnpcH>J2nW! z03etKtR6z^f1uDjL*gIIqG*icAcxa!&f!~OUG>ks^xgt_K2Jw`k0%FHDrPUikoayd z9Q}=PcXx{Da0)wu(O|7j=HyV+(P*hqwC61JlCB4p zRa3k%$z3YUA&c1ziwcgAIAfFS$DDheB4Cr(pi{MRF(*2@%*uZA^J&g+zfLS?R#kzX zrZ?DPTT!{Ltt`Nl=|0{0qgIeGae5~Xsru3(?J2N_kd;we$nm-9ixGhIKxxqx1Lw}; zB7nl=p0@>4>>DHz_UgQ#J5R83k2<9VX)&Z$L8R@pFwS8$X* zw@*y?$f*R4i8{6`Rkp84gDGY0*xj?PCs=DPQvQq!99Wr;}IKO z<7{5Kv!DmEM$Jg~?~$m_H=@js!j*ZXeE0;wk#<b2<4Jc*&J5)J*PZ*!xrdn*`e1Ax5LwOpuqGl^5S z;691oK>M&}M`h&`D6|yed@;qn_m}u@rsX!7WgTXJF_9?(!7zggZ_aZ}b;niMbtOJc z7$%uM0(Z~`zSpnc&|p%G99GsAf|yQNF&38YEL`fCLgalOg74=)|E|^5y7>izRSL^N z9s%*kUv3D}V|h_}LqLZv9u#ZKHJh4O6MLGb^Zx8H{sp^=r)$B>(iGiKZ<}T|JDGF* zw>Res(~s6AzlXEXvh2xJ&M~2yz3m!zbS+zw*8)y6I7AF=;|Bg(Y_tug&D$HHanWs5 zRZl(;mftdKRtm*u8N8qS+h0UmiOQI8rgkRIE>5O~w*P&l5=lWorrrqvA1ttPasJ;A z7XB+mPR{#3sgRH+CLt1Js0-*9j;DXP0;;CwQ>JIk*L&NXz{ot7w}wPPe6|cV^`AY$ z!n3Do{BD+)VSDwB%G<>ImSOCV8|aR&m>R*8_wG;6_vP<6PC;0@&CBU!IXn(-KXkW* zrLC`zTS35elq0|$ZEJOS^X%qR!mEy|1JF0VwcUEZ`$wukmB7_~w;0;z;0Dc+7+GWG z6Y%{pz25!p`F?Dhuywlr4azDapEbU|EN6*ylJ?OrX!q^=uC3W~VEecY_?-Q|Tiyme z!#7W4=j-ymv>&@0^>**i{r1|@19rZvOVM*Qcm?2@Po2ZEIg`Nz)!dC2f+jYWyZH=w z)H55d)IO9E4O@s&&VRH%(MECju+A|?hgQJhml06>cal$uY1D}6Wf?)$uG-&$h0=l7 zdKA#uX~5;iT>5A_8Z^4bbd?JZvGJ@!>zphradyku)#C-ec4J=S|F*8|^byaHw){y2;;)7NLU1Ts;i0pbVbxv=#*N2*2n zc{!I8O}l>i%ODb>c94fHllgQ*;hIu0+QcGI`(vL35Iy0MBiPg@|3I4nLt|AE7pN8< zsF1SQBmrCR%OS$Pg@R8g=Rtr-3si_W*jZ+Q*6>M?Z(ON`t}XfMkXFAK;QOBZ7zHpe zmtGV?c;s)zpQovU#FpmB1Yk*-?7buV00@Vz%mhq{PtGukePax|ff=TA)3mlJg`U?g zC>g++XZK+k_2k`9QU=N+G)d3F?9PnQIY9{tk+=Fh*Zh-Zk(srdg$dl4tNlOY`vY$@ zN0~gnK;@%M-+0!;?|l)ME(>ipfUCtpngwsO4^+YNUl?aq>r(5j07!c!il9QMD$_*> zRyPqc^K3ova4m&v^|8r~Fc-b4K+eQ_-NgGFuAe8tW^N0fYwynuZ{1V_u*qR(FMPUA zwaTJgc~{g6Czkz$tAyck4!dD4%rlv{xZ$LLC;ZfnQ3ZKGqSW7|o`PRBMXR>!t&cWm3X z-LcdC<-PCyalfCn$2p_+*tPbms(I#_&sU1ljV_acck$Q|y#d6_EznQC-RCR~6NN3H zSOSlC2fky#&Ia~E5{_i=xrH9wVaVN#c#)jX8GAEkNGIa>sh=43IKbA#@7$$7NE0X` zvL~*q9T4u^+xfU0G9>GZT>~Q3^X|2GmKvU#LYpu!23}9E<`KnYD)mI+itPdY0Un)2 zPHc&&7(5*hR~t#W3VcR;>z3Oo6=&Z0$2K{`dYTgCxF?0vK^A0PN0P^}fI*OqWl9YR z$KvS+m+$CEz`p0yTT`vDOm=RJjx*l4adhHBqr}azVpEQ$Tq=wUZWX-6^G_6-CxT;V zKF~)hZGOy1HHxipQ#*20Yot`mUXG&Ok9Ul|!=w_hdf^$c0AA+5dw0(Y(A3&NsDVZg-}0Ip|lIO3BDK4J+xhhjE%l4*9qi+oxeN zN}D9Kmz)|npfqt{NC{jUjELdyOXX*Mkd?d-0@qA8PSo~ zV6))+HiDftIGtIuZpFnf0gK6rs9i2OavTkqRPS9HO8fqbIsd+D=SUR&0-B-mZ)2tl z4e2zzD4>*o$1bskvXL{pz{DtrisORlO~leD1Be*N0b>-;UGnWc=xqJv4%ucZm#50* zNGLIT|3c|7aa>x8Y2JxnJ~~-yh2l?380;oF;+@((WVo$by{MJ(syI=5;Py~ga(ZAC z_-U}MJ4Y!X%^B^R=1Lr%a{>HhfQsCCaA?&ZlgkJzr97lvOnB+Fh*1mHAN;R$47Pm% zFggRAz$#LZeS+Kc=U~Vme=hTn? zNioGzr_5Psp#f2FfrG6Z`OhfHsDdK%ESJGLr@^sJ=j9q=M>sdKxl%8DwFr#nCRttm zAgZ@HZgw3dX(BAK<-@G**ElK8?8}0zlO-%V03pW|;?K1n&7kW^K;gz%xVjTa0JiD6 zna*jr=F{3dml4A8ZqV`X)|JPqCKk+X;a)VKA^dckmaa!Gw=1;ic=w3p8}eHLUOu+V zwVHN+nJoP=98VQVwe+XNb&M!lHNaAzt&0+x;=_^NBPu|9PX`(GK{hiqK zz)<%2Xgo*@fuwS%iF2VhR5*8T(=)et=|H&2HRb%G?WtU=nffwg$jp_Us}5E3&rLnb zGq4GY2;TY0wm~z&gr@;Mw)^(!S3F%O7VNE3#_`S=65pf3)61zr+KTYBMZ`8=(U&@g zzeDcW#H7-&1SYOmsmNAbmEeXVYoV52fZg@acCbAb<{Z+_+A4{waSd&w04IM7LS=@% zj8AS;m3gUJG|5`-mLlFwpP$PXws?B1uv4O+&|;|w{P2lRA)m2ppR-&P{-%;v% z_Fh>YU1X9>v4UdF1hwcZ|@?3P1e0v7b5M{-w~tOVMii#|1A60PeaR zq2!V*DKU*bE(?!pq4^d z`rh>$xXk>*7!mQRWyR}O?dBQ91AGWo`96n)V62y2govSr`!IKRv1w})`|P&%2wpP2 zA#R-Dpq@7VvWln|AIohSXJ?btz1=PO-KL&J;eEJF6p{Scr?qwo)69A%C(f%+rGvyc zFXDuv2eFMn8_l80En11vxy-)*7bJSV`rUF6e<%5Uxa~CM%jbVLMyt0b02HaALon2t zMoImE`y;}R_ksD?h7ld(M;o-O8lu5vLQPA9uoZdWC0olw^(5v3yL?CNnC<#ENGkLG zUxb?QuQz2`4j9w3-R#=f8$XmaGfE#ler@{Wrh!V%QrPdAuYE5L>LXY)S=sWSWOMD& zC=qa;W^0vF{9e1tmD#->fv%ci_=N--9jGswU>!d03z*@0L0n6%qv? zRM1@;xP{?;p`m;X!}pdgGczJ7GZi*=Kj$?UDOxA-BTV}f#Qg6eIN%AQzPXIOjDPekw zS0uL``hLcsqgGqtfolwAfC3$-c{7PA>N-s;QU}Hp=3wC<2MKa2ze=VRcuDeSG2Z9` zvQbs7iU3UR-XZzAFvutJMaOj^H|ru1_62J=VL9YE$(gDnjKG25paa&z>X zTf=C>^C*h+)|JFOzxY|65R=#j6QZlXDI?E)Ajz-nW%@QffBP+K&0sCHyePY==jNuG ze{bdIz)U;H*QDD)V9wyMcgfnZFXYtlY+im~8-C3ip2TQOOd&e!(9yr2O;B6#WFyC8b;rW&Pf)|U=nVt); zhYv$i+H`aXT5*pEQ*qSfXks#` zl(pt&s{hnT=yBKbmS~+*d!VjuBvXJRh!3~c+FMO$h*pkvbXXgVPt}znivMw!Ctzf| z=>-E=e)0{1@M#f7yFJj7`G*tfvwl6$viUd)OJtm|j*Ow>Ygey#f*M1oRui_)zKipN zsDpanEkw;zlb}YEGj?qu(Nx~mUaxpq=&+r2D*RQOj~rWOU*M-;nJVXRYE-r)x;X?| z!NJ;!qI%{bw_-jC1}CEA_@w?Axy=?3SRH&I)9<@~!DD*GYmJh4rh5hD&3(xHQj~cc zuUXl&?CDiSI9-T^QK;7OuO$w7b+utb`*d}@D*9PxLOb=dYo(aPvirdXr0=RClsq&N zeX_7i*6w3Thvq80;R(BmOFUcl;j`r##V*3umt=D#Oa$`QI+Y>P8>sN2`@A%0nt0sj?pu-Ey%?Ic%A%?U=FoxcsOV=pPwL{pp^Z)AK%$+=c!fTt1Zj&RiJ z^u(O#WAsP=e)B5(eLGS`p=Qel+e>>u7&(-wxzFjf`*itmIs@~HKwP(>8!TsHfV+fB zb@O=*ZGTTL5fk|Rn0727EEL3!`l$PEkj%UV!Pm8H z9@7D!dksnxrO<0W!@&-n^y0M;V4bh+8{e9{h|cy{4%2Xbd)uadBgV&M2>ve1DRn*2 zv1fp!IY`hz>@3eVZ=6*XH5^ln7-`o+LBb?2==wB}m}!$his2RKZ~ThW z4qx=vc`Xu5_?okita~b7QgQHbOQw%W*aA_@yFl7drZgz-&tPtH}7!OtzOMp3p##Vd$bro*`T#k z(x34!u_-dV3v9II?8&5Q^wmHk!^>jh%OKci@{Jhc?tZ)aC6CqKIMj-DE_sPRU;d*g zr~DXgeL5)n()pZ*_HA8S#kAIxQCr$p!wy?o!q??TDmIG~C2A8e5Awa}x2U_@RS`+GzMc7TM*EE>f;__eiyYdDf1~k{?Y1;%$3$I@&c$7$72iNK8 zqeb8Lo68>2%l4N67Zw#6yk)@bhm;`bdJ?-Fs6srSIN{5g17reoSZ_vDXQTzZnbsLa zd46*zLFA*A->bq~Z1kM(3%9$rruS)b1%o<|uFwZ(2L0s z+Ue(x*gh5od6nCPkzIB!bDr~Qw$pjgwO6(1ptEDOg~TwN2BW@-zPH z8HBM9it1Y6$Sq4ju`{Yy)NkL7KXZ9}P)x8;j6E)X12w&bp;&^7ID+u+VW1QA`XJ>^ z#3`4Zw}3csLtfk+GfBI2n9VC-fq8Y6A=x-a!#0UN5Wf0@p+N{Trm?w_baS1@#^gq7 zSTn8Iu;Z^r0d~jj&lI7WV(4JoJH{7L7oJ2C#BN(XuTENux=vk~Ea&qwJ_ZKd$8%G2 ze%VtVXE_xXg$D+5Dlj@G-@V!Gp-IihJo3_hq_!{NYtB;Blc#u@%jyrZKIc*;Oc-p) z!in&l_C*Cc{Nt?4{cqqE$N{g}N=221Ku^6=`_ehN*;)Rt&UvLb7Q@El)csET04DBi z;7`npz-;%wmT#40pL(S4*gf4r?-|Cdm2~*v2zci`Nzzb3eY+!u%sA~Ij-=QK|KfiY zU{fN_A3Fj4K|8zmf_wKmZ+}yFnEt)lUmByR%Nh6qx@m(_iSX*-w64JG=RuF3k=&#@ z+Y5G&L2})W;0H9&-^2A%c7Z=P+#TPI;a*&`uF*b_3n8$GN%4f({r7(y;a@It!Eawk z#xF_#atRQdom81QD@we*2 zXqwp^OyEt1*~elP_$Nzz^9nN~aKIOpJa)DEmFw~QE7wEx*Kt97!?bYhGDSRIxZyxJdJmD>!5CQR?dnC24y%zr;1aUZ|56EQ6l_Ln_BG$a;_3HlgkF>k zA}y)WBy1VuM{%ezDtt`>VjApUmM}>a0`pr_uafCBH!oND1nZOJIytm4>Nvf_823E#J9BZ?)T{(v^hyCALME%vYN*-5Z7n4T4ni8x<2<~ zwbKPvnF{q$USy)jK-8)f_GgzU`!FYi9lB|Jt}ma_dT-pW@)sg!hPmHJYMTZbA+%?; zi=dZ1Jf(3F2y)j+J0h)w>oiDTVt(}WH5ul9s^x`Sb6*CMS_oZisSr<_*>0)(Ns?5a zd6h2mPoiG)okYp$T${YmTB(H#rK^`T?q=D3Y5J+OuKhcExs^XyoSf2V-WjY-$X?|` zweA_oStR?lMW1w`+>mxwO6zeyB&W71*5Bv_KVaAo^gQbiFktgHE5&kg=!ZBI@|$pw zSSEGqYAG3@i ze8OMMCFaP$_E70dyOCCtQY9i(7it#s2+vNd_7tJ0W)tdtoeA#@vLW^dCilP;rc2je zR_)rMUbZNjpgyp4HCGZH3$h9EoQU{n0`mUZR@83C&_7h zONPYJ{g0R}kLHZ7ghnh)J8k}_j1wWX2`wi8LKeYPu6Y%tkU97B{16h6SOclRy8`SF zdQk)A*7oGhd^vv&D_w zWGU2r4$Hk|Lv`w*rH^WkHQPqj;fXO+@XcFl?GOcPJ~tn9p$@+kw&?tz-K5L#=NDxnMzDsW;sLP3-qR{%*2wC*lN(mF+p-Gn?Xn^Z^|KM+s9Qh zLD}Uce4!TrfY^?E*`v!_AFc2y)-{7`FB=jbTi()v@HMr&D<0u{Hw!yKeD^s)h0%Mh z18(zwVBo?YE77E2My_*^C!v~+V7trbgEP63B8rz}rR2KuQw5WO>J;DSL(l_*AwPMf zR4cbSQxbfBBa5?#Y;|isrf6+aM{0>a!eNcFdxy$R5^gaxleGDy+(@p*qoqi4+b z^SFV|SGVtDshMEQQH)eX>UcLjmpK#$XJVUCb1|HM!24oIwsFeWUUtR4amK#T;~sBZ zmU%U8odLO)XMytHtMXESZ{Qk_4IB$SX&sKxl+ix^*f(L?{WM=uwk;eWIlC8adxp-W{$vqYmWE+J)mb`|CCN#h?Wr z2|LRaZ(|F&JLlk>QUeS?l}j>K;TE^=3?UWGF_9f#j&g6)7b1$~%xCrK!M`SLIDu4D zT{7bb8`le60j>=pqbV32$y|>MzlacSVrs<5Rhyey(T0CV!t~TCR+-FRIiP zYBG!bE(%mxhEah)JRP=+cC@zyib@!nm47Nh@&leq@zw{|XFgJo>lN}QAC1-mP{Ua1 z4V!EEOSEf5BJi8BT<5RCF07$R{qQSe(Y?<<+B#E=g#N5B+59exUyRTJmJ)Wb>0tG2 zd1n;$7Kc)SR(nSP4fhm`!rYipE#k~+lS4^S+nFQvw?r7L+?k>MAKkO5XgSq-T%zM`!B^5n9r zZ7!d+muBJtSvYgrp*Qxm*uwJ=X;QfCFn&~%J} zJVz|5;=vK!`Ne`DcA!9(*Xic+!D)ih*4ke=#dm(MFGZC%c?OQXX11H@V_t`2-lIg{ zMU)@OBb#VK)ebpXANNI@KvmU1(L=Z)z z#xAP&aS>;fgcgv$5;VaNZBZWhI2;vHPc65(S2Yme;k>M3swb0yVim}j6-nW@5ZS4y zSH&hkOZutZv4$(&foHP@39+osNQ0HRj1~l9LfZg^E%eLNUyQ_l_e(~jY_+E1K+Pxv zurkJ~$M?X*wqMy&0fwMgxDkIr5(H&0mF0{gyvB$!@%xfkgT0@wI|g28AhVl~edYUx zU^dt;Sr4gyu5LRZ(pl``b&CyN2?;=->trkT1^?d9>$b}aCvZVFUi2?L5$QRSIsMH* zmbe9^a}6yIjbFrNp;*R&p%F^(UI%mCrtWhHz4WI~$&lqBr0Ro~9MBp~P^-(1iucdo z9tHGz#>7nt_cy`C&&pSgAK$5>kQ_J^3VHsf;^8f%VNxuM27jFL(^-_HXja9e17#0&j$os zS!X3@>H2Hho76IOTSLQUQze)pS@5Aeu#(PK$%I7+@?X_u>SHHS-YuY$b4RdGWgO9&*7QFTE?;ONK4}FCJH$%X3 zwU9|lsY+Fm>WG}6B)DiU_~qnW>9=98z7o^Ad28Bb+wlrx%!F1w1AJM~$8S1Pp-oAy@iMCX$caXnCmDQ&xO`E0nnrNpCAU2)=UI zRqN5gtus0ZnI$NNY-kov1 zIfbR8Ly7Czc8>xYJj2?z2^pFbP0p$49qY;mrF{)&7}d`)g5zwM2+=vxZX;Q&DU!%e zR|1+~$@sm2xii}%PWMsM3QG!sz&-y6J4FcR*0{wq(cr#6oWm8y)%xzwp<~m`JpT5y zlF7T5q_1P&0`4WDFPFr_&>QdwBRRFTO*2dGLi!^4$%W$qB(v%z5@r-XKcQXyeI4%e z%3t;f{6PZ4NG|t>6iN74RrW8@waR5i3}2_gx?cKEZ38w1?kZ!qr$u(8B7Krg5*ueG zwWNJWeywkM83=g8BY#FZZaoXdygODFe+wl{WF$P{l~va3gpfg={HX^3+sU-#kOBRm zgNDRCg;_|26ya2OW*^HhxN>qV#kuBnGs%6xMsQTk3|cmq^XE_@mjuTAH;?kp^e2J! z_hM@UHB23MHaBab$6)GhmRw(Z??P(ah8ne!OTzWq*agE5!|(pK;MV9WGFp8{&n#^N z&G3xtC?O@{sLLb9PLV(#CPT(dTrj?ls(q=m1YEpIwvR@PSiKK4UX@3|bW*&n6zx*W z>E@1H=Qw@da5~YvDVnhj`FlA93~O4mG>w)+_8k>@Y{&M}vHFeT@$*lkN}YDz2;!eT zdBefKj|0HUj@bc4dSO5o5!MKBK7tjYSU7r4i*a+}XLYK^U zvkJo=*&ZYFYP+9mxy8qNbdO=pAW&sqcS^9Rcj$^P@oR|d=f1QsOy781dWzRxOCBwm zdfY<{`y4?~*#fM53tDR1a;`@qdbvJHMnq6dHu+h#gf-wdtl}d6O@tHJE6;C2Jm9KH zgxs37bSd5~SwDwHq!@VkpBb$(`sg-qd+m+B9}IbEymSVS2LyQsk{Ssc$u(8KT)N6? zL^{=PA`*@uB3Is+BySL=L<+CJZJ%p=(rvzM_X}Nxf&x8AJq-yV46(Gqy8OXU%Zf(% zsieX;j9#lB2H8D%?40x8#<8~)v@v3eX%o7r zig=a+&gL7h`1_pL>0^cVybb3B3?CERYqv;#7Ze+>;@CAJMJK4#ADb={6JnmFkAhj9 z#u?CfvjI4`A;}?A%?g$wc05g097zJdvVO!SoDq(=f#V>+gAvy$I8YH>EDZ?ks%0qffA<~ymZg%la z)~<-GI(o{HZaXiRCjW5fmkBNELf27sQ;?j*uk0YRv+Rt0}0<54C1 zI)*dbAAB@()1fhCYmJy?A|VG?jiGVWHFKNPg_2o|j-6=N;<@S)atp01N>nJJKoe=M z1eUp_Mkz+36h*bE@=T5A;wJ}3F;HX+#|J|NSXgF2A0va9s6x^FCJle0G~M_%Ca>${ zJwb`cuT5#Bl4tIZH=3R6o9S=~;Ew!JZE@XKi&9JvVCnWqYWrUKV5htqLQ7MEBwsg2 zt1|iExgLpl%V2GaE~jP|ZL=>5YT7(H2e8KuZGtU+yXdbUe?H+Pg-9`pxg%NTtup33 z3FXyF*vu|=5#5QQz6u z)9D55XDpg$d(hH7Qwmn_-h;z-LPTZRo>h5g)OT5M1&&->PM=k8E<`OVw3d3N>^9O- zO1r|j-{c%;?c0D;waSxCMLG-QTdTSdmFJ^Uwv%JB>a~BKlfQtO)_GXg`H8QttV_kr zC{cB~ξ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/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