From cd01ba2a3c9d0506418e707492607c448a96bfca Mon Sep 17 00:00:00 2001 From: SisMaker <156736github> Date: Fri, 1 Apr 2022 00:14:09 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20CS=E5=BA=8F=E5=88=97=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/writeCs/ProtocolMsg.cs | 1 + src/writeCs/cs序列化1.jpg | Bin 0 -> 78789 bytes src/writeCs/cs序列化2.png | Bin 0 -> 18265 bytes src/writeCs/gCsCode.cs | 17 +- src/writeCs/gCsField.erl | 87 +- src/writeCs/gCsGen.erl | 758 ++++------------ test/gen.sh | 2 +- test/genProto | Bin 84795 -> 105022 bytes test/protoMsg.cs | 1654 ++++++++++++++++++++++++++++++++++ test/protoMsg.hrl | 16 +- 10 files changed, 1895 insertions(+), 640 deletions(-) create mode 100644 src/writeCs/cs序列化1.jpg create mode 100644 src/writeCs/cs序列化2.png create mode 100644 test/protoMsg.cs diff --git a/src/writeCs/ProtocolMsg.cs b/src/writeCs/ProtocolMsg.cs index 46819fa..1ae82ce 100644 --- a/src/writeCs/ProtocolMsg.cs +++ b/src/writeCs/ProtocolMsg.cs @@ -328,6 +328,7 @@ namespace GenProto public class AllType : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { + public const int protoId = 11; public bool Bool; public sbyte Int8; public byte UInt8; diff --git a/src/writeCs/cs序列化1.jpg b/src/writeCs/cs序列化1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b56c0675630090ce984a4b7a3363bbe8420161a GIT binary patch literal 78789 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 UhDScw^<~s%KArzoLBII_01jnATL1t6 literal 0 HcmV?d00001 diff --git a/src/writeCs/cs序列化2.png b/src/writeCs/cs序列化2.png new file mode 100644 index 0000000000000000000000000000000000000000..b11a219eadba51af2a7b8a483b864bc56813ab41 GIT binary patch literal 18265 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 literal 0 HcmV?d00001 diff --git a/src/writeCs/gCsCode.cs b/src/writeCs/gCsCode.cs index f407563..447ea52 100644 --- a/src/writeCs/gCsCode.cs +++ b/src/writeCs/gCsCode.cs @@ -190,4 +190,19 @@ namespace ProtoMsg } } } -} \ No newline at end of file +} + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } \ No newline at end of file diff --git a/src/writeCs/gCsField.erl b/src/writeCs/gCsField.erl index 2cdac94..8806f1d 100644 --- a/src/writeCs/gCsField.erl +++ b/src/writeCs/gCsField.erl @@ -15,85 +15,36 @@ , <<"double">> ]). --define(TypeList, [ - <<"bool">> - , <<"int8">> - , <<"uint8">> - , <<"int16">> - , <<"uint16">> - , <<"int32">> - , <<"uint32">> - , <<"int64">> - , <<"uint64">> - , <<"integer">> - , <<"number">> - , <<"float">> - , <<"double">> - , <<"string">> -]). - -define(TypeValue, [ - {<<"bool">>, <<"false">>, <<"boolean()">>} - , {<<"int8">>, <<"0">>, <<"int8()">>} - , {<<"uint8">>, <<"0">>, <<"uint8()">>} - , {<<"int16">>, <<"0">>, <<"int16()">>} - , {<<"uint16">>, <<"0">>, <<"uint16()">>} - , {<<"int32">>, <<"0">>, <<"int32()">>} - , {<<"uint32">>, <<"0">>, <<"uint32()">>} - , {<<"int64">>, <<"0">>, <<"int64()">>} - , {<<"uint64">>, <<"0">>, <<"uint64()">>} - , {<<"integer">>, <<"0">>, <<"integer()">>} - , {<<"number">>, <<"0">>, <<"number()">>} - , {<<"float">>, <<"0.0">>, <<"float()">>} - , {<<"double">>, <<"0.0">>, <<"double()">>} - , {<<"string">>, <<"\"\"">>, <<"string()">>} -]). + {<<"bool">>, <<"bool">>} + , {<<"int8">>, <<"sbyte">>} + , {<<"uint8">>, <<"byte">>} + , {<<"int16">>, <<"short">>} + , {<<"uint16">>, <<"ushort">>} + , {<<"int32">>, <<"int">>} + , {<<"uint32">>, <<"uint">>} + , {<<"int64">>, <<"long">>} + , {<<"uint64">>, <<"ulong">>} + , {<<"float">>, <<"float">>} + , {<<"double">>, <<"double">>} + , {<<"string">>, <<"string">>} + ]). builtRecStr({TypeStr, NameStr}) -> case lists:keyfind(TypeStr, 1, ?TypeValue) of - {TypeStr, DefValueStr, DefTypeStr} -> - <>; + {TypeStr, CSTypeStr} -> + <<"\t\tpublic ", CSTypeStr/binary, " ", NameStr/binary, ";\n">>; _ -> case TypeStr of <<"list[", LeftStr/binary>> -> [SubTypeStr | _] = re:split(LeftStr, <<"\\]">>, [{return, binary}]), case lists:keyfind(SubTypeStr, 1, ?TypeValue) of - {SubTypeStr, _DefSubValueStr, DefSubTypeStr} -> - <>; + {SubTypeStr, SubCSTypeStr} -> + <<"\t\tpublic List<", SubCSTypeStr/binary, "> ", NameStr/binary, ";\n">>; _ -> - <> + <<"\t\tpublic List<", SubTypeStr/binary, "> ", NameStr/binary, ";\n">> end; _ -> - <> + <<"\t\tpublic ", TypeStr/binary, " ", NameStr/binary, ";\n">> end end. - -builtPackStr(TypeStr) -> - case lists:member(TypeStr, ?TypeList) of - true -> - <<"?", TypeStr/binary, "(">>; - _ -> - case TypeStr of - <<"list[", LeftStr/binary>> -> - [SubTypeStr | _] = re:split(LeftStr, <<"\\]">>, [{return, binary}]), - SubStr = - case lists:member(SubTypeStr, ?TypeList) of - true -> - SubTypeStr; - _ -> - <<"record">> - end, - <<"?list_", SubStr/binary, "(">>; - _ -> - <<"?record(">> - end - end. - -isBaseType(TypeStr) -> - lists:member(TypeStr, ?TypeList). - - - - - - diff --git a/src/writeCs/gCsGen.erl b/src/writeCs/gCsGen.erl index ce1ac71..45707c5 100644 --- a/src/writeCs/gCsGen.erl +++ b/src/writeCs/gCsGen.erl @@ -1,22 +1,35 @@ -module(gCsGen). --include("genDef.hrl"). -export([ genCs/4 ]). protoHeader() -> -<<"using System; + <<"using System; using System.Collections; using System.Collections.Generic; +using System.Data; using System.IO; -namespace ProtoMsg +namespace GenProto { - public static class Protocol + public static class ProtocolCore { + public interface ISerialize + { + void Serialize(BinaryWriter binaryWriter); + byte[] Serialize(); + } + + public interface IDeserialize + { + void Deserialize(BinaryReader binaryReader); + void Deserialize(byte[] data); + } + public enum BasicTypeEnum { + Custom = 0x00, Boolean = 0x01, Int8 = 0x02, UInt8 = 0x03, @@ -47,7 +60,7 @@ namespace ProtoMsg float => BasicTypeEnum.Float, double => BasicTypeEnum.Double, string => BasicTypeEnum.String, - _ => throw new InvalidOperationException($\"unexpect type: {value.GetType().FullName}\") + _ => BasicTypeEnum.Custom, }; } @@ -92,12 +105,32 @@ namespace ProtoMsg binaryWriter.Write(stringValue); break; default: - throw new InvalidOperationException($\"unexpect type: {value.GetType().FullName}\"); + { + binaryWriter.Write(value != null); + switch (value) + { + case IList listValue: + binaryWriter.WriteList(listValue); + break; + case ISerialize serialize: + serialize.Serialize(binaryWriter); + break; + default: + if (value != null) + { + throw new InvalidOperationException($\"unexpect type: {value.GetType().FullName}\"); + } + + break; + } + + break; + } } } - public static void WriteList(this BinaryWriter binaryWriter, IList list) + public static void WriteList(this BinaryWriter binaryWriter, IList list) { var length = (ushort) (list?.Count ?? 0); binaryWriter.Write(length); @@ -117,18 +150,102 @@ namespace ProtoMsg } } - public static void ReadList(this BinaryReader binaryReader, out IList list) + public static void ReadValue(this BinaryReader binaryReader, out bool value) + { + value = binaryReader.ReadBoolean(); + } + + public static void ReadValue(this BinaryReader binaryReader, out sbyte value) + { + value = binaryReader.ReadSByte(); + } + + public static void ReadValue(this BinaryReader binaryReader, out byte value) + { + value = binaryReader.ReadByte(); + } + + public static void ReadValue(this BinaryReader binaryReader, out ushort value) + { + value = binaryReader.ReadUInt16(); + } + + public static void ReadValue(this BinaryReader binaryReader, out short value) + { + value = binaryReader.ReadInt16(); + } + + public static void ReadValue(this BinaryReader binaryReader, out int value) + { + value = binaryReader.ReadInt32(); + } + + public static void ReadValue(this BinaryReader binaryReader, out uint value) + { + value = binaryReader.ReadUInt32(); + } + + public static void ReadValue(this BinaryReader binaryReader, out long value) + { + value = binaryReader.ReadInt64(); + } + + public static void ReadValue(this BinaryReader binaryReader, out ulong value) + { + value = binaryReader.ReadUInt64(); + } + + public static void ReadValue(this BinaryReader binaryReader, out float value) + { + value = binaryReader.ReadSingle(); + } + + public static void ReadValue(this BinaryReader binaryReader, out double value) { + value = binaryReader.ReadDouble(); + } + + public static void ReadValue(this BinaryReader binaryReader, out string value) + { + value = binaryReader.ReadString(); + } + + public static void ReadValue(this BinaryReader binaryReader, out T value) where T : new() + { + value = default; + var haveValue = binaryReader.ReadBoolean(); + if (!haveValue) + { + return; + } + + value = new T(); + if (!(value is IDeserialize deserialize)) + { + throw new InvalidOperationException($\"error type: {typeof(T).FullName}\"); + } + + deserialize.Deserialize(binaryReader); + } + + public static void ReadValue(this BinaryReader binaryReader, out List outList) where T : new() + { + outList = default; + IList list = default; + var haveValue = binaryReader.ReadBoolean(); + if (!haveValue) + { + return; + } + var length = binaryReader.ReadUInt16(); if (length <= 0) { - list = default; return; } - list = default; var basicTypeEnum = (BasicTypeEnum) binaryReader.ReadByte(); - for (int idx = 0; idx < length; idx++) + for (var idx = 0; idx < length; idx++) { switch (basicTypeEnum) { @@ -192,581 +309,98 @@ namespace ProtoMsg var stringValue = binaryReader.ReadString(); list.Add(stringValue); break; + case BasicTypeEnum.Custom: + list ??= new List(length); + var state = binaryReader.ReadBoolean(); + if (state) + { + if (new T() is IDeserialize item) + { + item.Deserialize(binaryReader); + list.Add(item); + } + } + + break; + + default: - throw new ArgumentOutOfRangeException(); + throw new InvalidOperationException(); } } + + outList = list as List; } }">>. protoEnd() -> <<"}">>. -genMsgHrl([], _Index, _Len, HrlBinStr) -> - HrlBinStr; -genMsgHrl([FieldInfo | FieldList], Index, Len, HrlBinStr) -> - TemStr = - case Index of - Len -> - <<"">>; - _ -> - <<", ">> - end, - RecStr = < <<"">>; _ -> <<"\t">> end)/binary>>, - genMsgHrl(FieldList, Index - 1, Len, <>). - -spellHead([], _Index, HeadBinStr) -> - HeadBinStr; -spellHead([_FieldInfo | FieldList], Index, HeadBinStr) -> - spellHead(FieldList, Index + 1, <>). - -spellBody([], _Index, BodyBinStr) -> - BodyBinStr; -spellBody([{FieldType, _FieldName}], Index, BodyBinStr) -> - TemV = <<"V", (integer_to_binary(Index))/binary>>, - <>; -spellBody([{FieldType, _FieldName} | FieldList], Index, BodyBinStr) -> - TemV = <<"V", (integer_to_binary(Index))/binary>>, - NewBodyBinStr = <>, - spellBody(FieldList, Index + 1, NewBodyBinStr). - -spellErrCodeHrl([], ErrBinStr) -> - ErrBinStr; -spellErrCodeHrl([{ErrName, ErrCodeId, ComDesc} | SortedErrList], ErrBinStr) -> - ErrStr = <<"-define(", ErrName/binary, ", ", (integer_to_binary(ErrCodeId))/binary, ").\t\t%% ", ComDesc/binary, "\n">>, - spellErrCodeHrl(SortedErrList, <>). - -genEncodeRec({MsgName, MsgId, FieldList}, IsForBin) -> - FieldLen = length(FieldList), - TemStr = spellHead(FieldList, 1, <<"">>), - HeadStr = - case IsForBin of - true -> - <<"encodeIol(", MsgName/binary, ", {_", TemStr/binary, "}) ->\n\t">>; - _ -> - <<"subEncode(", MsgName/binary, ", {_", TemStr/binary, "}) ->\n\t">> - end, +spellClassHead(MsgName, MsgId) -> + <<"\tpublic class ", MsgName/binary, " : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<", MsgName/binary, ">\n\t{\n\t\tpublic const int ProtoId = ", (integer_to_binary(MsgId))/binary, ";\n">>. - BodyStr = spellBody(FieldList, 1, <<"">>), - case IsForBin of - true -> - case FieldLen > 0 of - true -> - <>, ", BodyStr/binary, "];\n">>; - _ -> - <>];\n">> - end; - _ -> - case FieldLen > 0 of - true -> - <>; - _ -> - <> - end - end. - -resetPd() -> - erlang:put(pd_v, 0), - erlang:put(pd_len, 0), - erlang:put(pd_bool, 0), - erlang:put(pd_leftBin, 0), - erlang:put(pd_intBits, 0), - erlang:put(pd_numBits, 0), - erlang:put(pd_listBin, 0), - erlang:put(pd_isUndef, 0), - erlang:put(pd_isCalcRefSize, 0). - -getIndexStr(Type) -> - Index = erlang:get(Type), - integer_to_binary(Index). - -useIndexStr(Type) -> - Index = erlang:get(Type) + 1, - erlang:put(Type, Index), - integer_to_binary(Index). - -isCalcRefSize() -> - erlang:get(pd_isCalcRefSize) > 0. - -initSubRec() -> - erlang:put(pd_subRec, []). - -getSubRec() -> - erlang:get(pd_subRec). - -initSubSubRec() -> - erlang:put(pd_subSubRec, []). - -getSubSubRec() -> - erlang:get(pd_subSubRec). - -addSubRec({MsgName, _MsgId, _FieldList} = Info, IsForBin) when IsForBin -> - OldList = erlang:get(pd_subRec), - case lists:keyfind(MsgName, 1, OldList) of - false -> - erlang:put(pd_subRec, [Info | OldList]); - _ -> - ignore - end; -addSubRec({MsgName, _MsgId, _FieldList} = Info, _IsForBin) -> - OldAllList = erlang:get(pd_subRec), - case lists:keyfind(MsgName, 1, OldAllList) of - false -> - erlang:put(pd_subRec, [Info | OldAllList]), - OldSubList = erlang:get(pd_subSubRec), - case lists:keyfind(MsgName, 1, OldSubList) of - false -> - erlang:put(pd_subSubRec, [Info | OldSubList]); - _ -> - ignore - end; - _ -> - ignore - end. - -genDecodeBin({MsgName, MsgId, FieldList}, SortedSProtoList, IsForBin) -> - FieldLen = length(FieldList), - case IsForBin of - true -> - HeadStr = <<"decodeBin(", (integer_to_binary(MsgId))/binary, ", LeftBin", (getIndexStr(pd_leftBin))/binary, ") ->\n">>; - _ -> - HeadStr = <<"decodeRec(", (integer_to_binary(MsgId))/binary, ", LeftBin", (getIndexStr(pd_leftBin))/binary, ") ->\n">> - end, +spellClassMember(FieldList) -> + <<<<(gCsField:builtRecStr(OneTypeName))/binary>> || OneTypeName <- FieldList>>. - FunBody = - fun({FieldType, _FieldName}, {IsSimple, StrAcc}) -> - case FieldType of - <<"bool">> -> - TemStr = - case IsSimple of - true -> - GetLeftBinStr1 = getIndexStr(pd_leftBin), - UseLeftBinStr1 = useIndexStr(pd_leftBin), - <<"LeftBin", UseLeftBinStr1/binary, "/binary>> = LeftBin", GetLeftBinStr1/binary, ",\n">>; - _ -> - <<"">> - end, - UseBoolStr = useIndexStr(pd_bool), - GetLeftBinStr2 = getIndexStr(pd_leftBin), - UseLeftBinStr2 = useIndexStr(pd_leftBin), - BoolStr = <<"\t<> = LeftBin", GetLeftBinStr2/binary, ",\n">>, - UseVStr = useIndexStr(pd_v), - VStr = <<"\tV", UseVStr/binary, " = Bool", UseBoolStr/binary, " =:= 1,\n">>, - {false, <>}; - <<"int8">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":8/big-signed, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"uint8">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":8/big-unsigned, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"int16">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":16/big-signed, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"uint16">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":16/big-unsigned, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"int32">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":32/big-signed, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"uint32">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":32/big-unsigned, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"int64">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":64/big-signed, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"uint64">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":64/big-unsigned, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"float">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":32/big-float, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"double">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - <<"V", UseVStr/binary, ":64/big-float, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - <<"\t<> - end, - {true, <>}; - <<"string">> -> - TemStr = - case IsSimple of - true -> - GetLeftBinStr1 = getIndexStr(pd_leftBin), - UseLeftBinStr1 = useIndexStr(pd_leftBin), - <<"LeftBin", UseLeftBinStr1/binary, "/binary>> = LeftBin", GetLeftBinStr1/binary, ",\n">>; - _ -> - <<"">> - end, - UseLenStr = useIndexStr(pd_len), - GetLeftBinStr2 = getIndexStr(pd_leftBin), - UseLeftBinStr2 = useIndexStr(pd_leftBin), - UseVStr = useIndexStr(pd_v), - RefSizeStr = - case isCalcRefSize() of - false -> - useIndexStr(pd_isCalcRefSize), - <<"\tRefSize = binary:referenced_byte_size(LeftBin0),\n">>; - _ -> - <<"">> - end, - StrStr = <<"\t<> = LeftBin", GetLeftBinStr2/binary, ",\n">>, - VStr = <<"\tcase Len", UseLenStr/binary, " < ?BinaryShareSize of\n\t\t", - "true ->\n\t\t\tV", UseVStr/binary, " = TemStrV", UseVStr/binary, ";\n\t\t", - "_ ->\n\t\t\tcase RefSize / Len", UseLenStr/binary, " > ?BinaryCopyRatio of\n\t\t\t\t", - "true ->\n\t\t\t\t\tV", UseVStr/binary, " = binary:copy(TemStrV", UseVStr/binary, ");\n\t\t\t\t", - "_ ->\n\t\t\t\t\tV", UseVStr/binary, " = TemStrV", UseVStr/binary, "\n\t\t\tend\n\tend,\n">>, - {false, <>}; - <<"integer">> -> - TemStr = - case IsSimple of - true -> - UseVStr = useIndexStr(pd_v), - UseIntBitsStr = useIndexStr(pd_intBits), - <<"IntBits", UseIntBitsStr/binary, ":8, V", UseVStr/binary, ":IntBits", UseIntBitsStr/binary, "/big-signed, ">>; - _ -> - UseVStr = useIndexStr(pd_v), - UseIntBitsStr = useIndexStr(pd_intBits), - <<"\t<> - end, - {true, <>}; - <<"number">> -> - TemStr = - case IsSimple of - true -> - GetLeftBinStr1 = getIndexStr(pd_leftBin), - UseLeftBinStr1 = useIndexStr(pd_leftBin), - <<"LeftBin", UseLeftBinStr1/binary, "/binary>> = LeftBin", GetLeftBinStr1/binary, ",\n">>; - _ -> - <<"">> - end, - UseNumBitsStr = useIndexStr(pd_numBits), - GetLeftBinStr2 = getIndexStr(pd_leftBin), - UseLeftBinStr2 = useIndexStr(pd_leftBin), - NumStr = <<"\t<> = LeftBin", GetLeftBinStr2/binary, ",\n">>, - UseVStr = useIndexStr(pd_v), - UseLeftBinStr3 = useIndexStr(pd_leftBin), - VStr = - <<"\tcase NumBits", UseNumBitsStr/binary, " of\n\t\t33-> \n\t\t\t<> = LeftBin", UseLeftBinStr2/binary, ";\n\t\t65 ->\n\t\t\t<> = LeftBin", UseLeftBinStr2/binary, ";\n\t\t_ ->\n\t\t\t<> = LeftBin", UseLeftBinStr2/binary, "\n\tend,\n">>, - {false, <>}; - <<"list[", LeftStr/binary>> -> - [SubTypeStr | _] = re:split(LeftStr, <<"\\]">>, [{return, binary}]), - TemStr = - case IsSimple of - true -> - GetLeftBinStr1 = getIndexStr(pd_leftBin), - UseLeftBinStr1 = useIndexStr(pd_leftBin), - <<"LeftBin", UseLeftBinStr1/binary, "/binary>> = LeftBin", GetLeftBinStr1/binary, ",\n">>; - _ -> - <<"">> - end, - - UseLenStr = useIndexStr(pd_len), - GetLeftBinStr2 = getIndexStr(pd_leftBin), - UseLeftBinStr2 = useIndexStr(pd_leftBin), - UseVStr = useIndexStr(pd_v), - UseListBinStr = useIndexStr(pd_listBin), - GetLeftBinStr3 = getIndexStr(pd_leftBin), - UseLeftBinStr3 = useIndexStr(pd_leftBin), - LenStr = <<"\t<> = LeftBin", GetLeftBinStr2/binary, ",\n">>, - DeListStr = - case SubTypeStr of - <<"bool">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV =:= 1 || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"int8">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"uint8">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"int16">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"uint16">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"int32">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"uint32">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"int64">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"uint64">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"integer">> -> - <<"\t{V", UseVStr/binary, ", LeftBin", UseLeftBinStr3/binary, "} = deIntegerList(Len", UseLenStr/binary, ", LeftBin", GetLeftBinStr3/binary, ", []),\n">>; - <<"number">> -> - <<"\t{V", UseVStr/binary, ", LeftBin", UseLeftBinStr3/binary, "} = deNumberList(Len", UseLenStr/binary, ", LeftBin", GetLeftBinStr3/binary, ", []),\n">>; - <<"float">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"double">> -> - ListBinStr = <<"\t<> = LeftBin", GetLeftBinStr3/binary, ",\n">>, - VStr = <<"\tV", UseVStr/binary, " = [TemV || <> <= ListBin", UseListBinStr/binary, "],\n">>, - <>; - <<"string">> -> - case isCalcRefSize() of - true -> - <<"\t{V", UseVStr/binary, ", LeftBin", UseLeftBinStr3/binary, "} = deStringList(Len", UseLenStr/binary, ", LeftBin", GetLeftBinStr3/binary, ", RefSize, []),\n">>; - _ -> - useIndexStr(pd_isCalcRefSize), - RefSizeStr = <<"\tRefSize = binary:referenced_byte_size(LeftBin0),\n">>, - VStr = <<"\t{V", UseVStr/binary, ", LeftBin", UseLeftBinStr3/binary, "} = deStringList(Len", UseLenStr/binary, ", LeftBin", GetLeftBinStr3/binary, ", RefSize, []),\n">>, - <> - end; - ListRecord -> - case lists:keyfind(ListRecord, 1, SortedSProtoList) of - {ListRecord, ListMsgId, _} = RecordInfo -> - addSubRec(RecordInfo, IsForBin), - <<"\t{V", UseVStr/binary, ", LeftBin", UseLeftBinStr3/binary, "} = deRecordList(Len", UseLenStr/binary, ", ", (integer_to_binary(ListMsgId))/binary, ", LeftBin", GetLeftBinStr3/binary, ", []),\n">>; - _ -> - io:format("this an Record undefined :~p~n", [ListRecord]), - throw(record_undefined) - end - end, - {false, <>}; - OtherRecord -> - TemStr = - case IsSimple of - true -> - GetLeftBinStr1 = getIndexStr(pd_leftBin), - UseLeftBinStr1 = useIndexStr(pd_leftBin), - <<"LeftBin", UseLeftBinStr1/binary, "/binary>> = LeftBin", GetLeftBinStr1/binary, ",\n">>; - _ -> - <<"">> - end, - UseIsUndefStr = useIndexStr(pd_isUndef), - GetLeftBinStr2 = getIndexStr(pd_leftBin), - UseLeftBinStr2 = useIndexStr(pd_leftBin), - IsStr = <<"\t<> = LeftBin", GetLeftBinStr2/binary, ",\n">>, - UseVStr = useIndexStr(pd_v), - UseLeftBinStr3 = useIndexStr(pd_leftBin), - case lists:keyfind(OtherRecord, 1, SortedSProtoList) of - {OtherRecord, OtherMsgId, _} = RecordInfo -> - addSubRec(RecordInfo, IsForBin), - VStr = <<"\tcase IsUndef", UseIsUndefStr/binary, " of\n\t\t0 ->\n\t\t\tV", UseVStr/binary, " = undefined,\n\t\t\tLeftBin", UseLeftBinStr3/binary, " = LeftBin", UseLeftBinStr2/binary, - " ;\n\t\t_ ->\n\t\t\t{V", UseVStr/binary, ", LeftBin", UseLeftBinStr3/binary, "} = ", "decodeRec(", (integer_to_binary(OtherMsgId))/binary, ", LeftBin", UseLeftBinStr2/binary, ")\n\tend,\n">>, - {false, <>}; - _ -> - io:format("this an Record undefined :~p~n", [OtherRecord]), - throw(record_undefined) - end - end - end, +spellCalssDSTem() -> + <<"\n\t\tpublic byte[] Serialize()\n\t\t{\n\t\t\tusing var memoryStream = new MemoryStream(); +\t\t\tusing var binaryWriter = new BinaryWriter(memoryStream); +\t\t\tSerialize(binaryWriter); +\t\t\treturn memoryStream.ToArray(); +\t\t} - {LIsSimple, BodyStr} = lists:foldl(FunBody, {false, <<"">>}, FieldList), - LBodyStr = - case LIsSimple of - true -> - LGetLeftBinStr = getIndexStr(pd_leftBin), - LUseLeftBinStr = useIndexStr(pd_leftBin), - <> = LeftBin", LGetLeftBinStr/binary, ",\n">>; - _ -> - BodyStr - end, +\t\tpublic void Deserialize(byte[] data) +\t\t{ +\t\t\tusing var memoryStream = new MemoryStream(data); +\t\t\tusing var binaryReader = new BinaryReader(memoryStream); +\t\t\tDeserialize(binaryReader); +\t\t}\n">>. - RetStr = - case IsForBin of - true -> - MsgIndex = MsgId div ?MsgIdSegSize, - Handler = erlang:get(pd_handler), - {MsgIndex, ModName} = lists:keyfind(MsgIndex, 1, Handler), - HandleName = <>, - case FieldLen > 0 of - true -> - FunRec = - fun(N, Acc) -> - <> - end, - RecStr = lists:foldl(FunRec, <<"">>, lists:seq(1, FieldLen)), - <<"\t{", HandleName/binary, ", ", MsgName/binary, ", {", MsgName/binary, RecStr/binary, "}};\n">>; - _ -> - <<"\t{", HandleName/binary, ", ", MsgName/binary, ", {", MsgName/binary, "}};\n">> - end; - _ -> - case FieldLen > 0 of - true -> - FunRec = - fun(N, Acc) -> - <> - end, - RecStr = lists:foldl(FunRec, <<"">>, lists:seq(1, FieldLen)), - <<"\tMsgRec = {", MsgName/binary, RecStr/binary, "},\n\t{MsgRec, LeftBin", (getIndexStr(pd_leftBin))/binary, "};\n">>; - _ -> - <<"\t{{", MsgName/binary, "}, ", "<<>>};\n">> - end - end, - <>. +spellCalssSerialize(FieldList) -> + FunHead = <<"\t\tpublic void Serialize(BinaryWriter binaryWriter)\n\t\t{\n">>, + FunBody = <<<<"\t\t\tbinaryWriter.WriteValue(", NameStr/binary, ");\n">> || {_TypeStr, NameStr} <- FieldList>>, + <>. -genCs(SortedSProtoList, SortedErrList, HrlDir, ErlDir) -> - initSubRec(), - FunSpell = - fun({MsgName, MsgId, FieldList} = MsgInfo, {MsgHrlAcc, MsgEncodeAcc, MsgDecodeAcc, MsgIdAcc, MsgNameAcc}) -> - %% gen hrl str - Len = erlang:length(FieldList), - LastFieldStr = genMsgHrl(FieldList, Len, Len, <<"">>), - HrlStr = <<"-record(", MsgName/binary, ", {\n\t", LastFieldStr/binary, "}).\n">>, +spellCalssDeserialize(FieldList) -> + FunHead = <<"\t\tpublic void Deserialize(BinaryReader binaryReader)\n\t\t{\n">>, + FunBody = <<<<"\t\t\tbinaryReader.ReadValue(out ", NameStr/binary, ");\n">> || {_TypeStr, NameStr} <- FieldList>>, + <>. - %% gen getMsgId getMsgType str - IdStr = <<"getMsgId(", MsgName/binary, ")-> ", (integer_to_binary(MsgId))/binary, ";\n">>, - NameStr = <<"getMsgName(", (integer_to_binary(MsgId))/binary, ")-> ", MsgName/binary, ";\n">>, +spellClassEnd() -> + <<"\t}\n">>. - %% gen encodeRec Str - EncodeStr = genEncodeRec(MsgInfo, true), +genCs(SortedSProtoList, _SortedErrList, _HrlDir, CSDir) -> + FunSpell = + fun({MsgName, MsgId, FieldList}, ClassBinAcc) -> + H = spellClassHead(MsgName, MsgId), + M = spellClassMember(FieldList), + DS = spellCalssDSTem(), + S = spellCalssSerialize(FieldList), + D = spellCalssDeserialize(FieldList), + E = spellClassEnd(), + <> + end, + LastClassBinAcc = lists:foldl(FunSpell, <<>>, SortedSProtoList), - %% gen decodeBin str - resetPd(), - DecodeStr = genDecodeBin(MsgInfo, SortedSProtoList, true), + %% todo error code + %% ErrCodeStr = spellErrCodeHrl(SortedErrList, <<>>), - {<>, <>, <>, <>, <>} - end, - {MsgHrlStr, TMsgEncodeStr, TMsgDecodeStr, _TMsgIdStr, _TMsgNameStr} = lists:foldl(FunSpell, {<<>>, <<>>, <<>>, <<>>, <<>>}, SortedSProtoList), - MsgEncodeStr = <\n\t[].\n\n">>, - MsgDecodeStr = <\n\t{undefinedHer, undefined, {}}.\n\n">>, - _MsgIdStr = <<_TMsgIdStr/binary, "getMsgId(_) -> 0.\n\n">>, - _MsgNameStr = <<_TMsgNameStr/binary, "getMsgName(_) -> undefiend.\n\n">>, - - ErrCodeStr = spellErrCodeHrl(SortedErrList, <<>>), - - %% gen decodeRec str - SubRecList = getSubRec(), - initSubSubRec(), - SortedSubRecList = lists:sort(fun({_Name1, MessageId1, _FieldList1}, {_Name2, MessageId2, _FieldList2}) -> MessageId1 < MessageId2 end, SubRecList), - {MsgEncodeRecStr, MsgDecodeRecStr} = dealSubRec(SortedSubRecList, SortedSProtoList, <<"">>, <<"">>), - - ErlHeaderStr = protoErlHeader(), - HrlHeaderStr = protoHrlHeader(), - OutputErlStr = <>, - OutputHrlStr = <>, - HrlFilename = do_write_hrl(HrlDir, protoMsg, OutputHrlStr), - ErlFilename = do_write_erl(ErlDir, protoMsg, OutputErlStr), - - io:format("protoConvert hrl dir : ~s ~n", [HrlDir]), - io:format("protoConvert erl dir : ~s ~n", [ErlDir]), - io:format("protoConvert to hrl file ~s succ.~n", [HrlFilename]), - io:format("protoConvert to erl file ~s succ.~n", [ErlFilename]), - ok. + CSHeaderStr = protoHeader(), + CSEndStr = protoEnd(), + OutputHrlStr = <>, + CSFilename = do_write_cs(CSDir, protoMsg, OutputHrlStr), -dealSubRec([], SortedSProtoList, SubEncodeAcc, SubDecodeAcc) -> - case getSubSubRec() of - [] -> - {<\n\t[].\n\n">>, <\n\t{{}, <<>>}.\n\n">>}; - NewAddList -> - initSubSubRec(), - SortedSubRecList = lists:sort(fun({_Name1, MessageId1, _FieldList1}, {_Name2, MessageId2, _FieldList2}) -> MessageId1 < MessageId2 end, NewAddList), - dealSubRec(SortedSubRecList, SortedSProtoList, SubEncodeAcc, SubDecodeAcc) - end; -dealSubRec([MsgInfo | SubRecList], SortedSProtoList, SubEncodeAcc, SubDecodeAcc) -> - EncodeStr = genEncodeRec(MsgInfo, false), - resetPd(), - DecodeStr = genDecodeBin(MsgInfo, SortedSProtoList, false), - dealSubRec(SubRecList, SortedSProtoList, <>, <>). - -do_write_hrl(OutDir, Mod, BinStr) -> - Filename = filename:join([OutDir, atom_to_list(Mod) ++ ".hrl"]), - ok = file:write_file(Filename, BinStr), - Filename. + io:format("protoConvert erl dir : ~s ~n", [CSDir]), + io:format("protoConvert to erl file ~s succ.~n", [CSFilename]), + ok. -do_write_erl(OutDir, Mod, BinStr) -> - Filename = filename:join([OutDir, atom_to_list(Mod) ++ ".erl"]), +do_write_cs(OutDir, Mod, BinStr) -> + Filename = filename:join([OutDir, atom_to_list(Mod) ++ ".cs"]), case file:write_file(Filename, BinStr) of ok -> ok; _Ret -> - io:format("write to erl file error:~p ~n", [_Ret]) + io:format("write to cs file error:~p ~n", [_Ret]) end, Filename. diff --git a/test/gen.sh b/test/gen.sh index ac49ae1..ccae33e 100644 --- a/test/gen.sh +++ b/test/gen.sh @@ -1 +1 @@ -protoGen ../proto ./ ./ +genProto ../proto ./ ./ diff --git a/test/genProto b/test/genProto index 3ee183ba6c2f6e9b7d44b81f309e3ad8e6d3357c..6f34fff0ec5f4fa1f1abecde493346d80eebe981 100644 GIT binary patch literal 105022 zcmZs?V~j3L)GYdpZQJG^+qP}nwr%XOZSS#d+qUiVUgmx`C+Y5_E1mwiQmd*K2@!*< zvlD}nr5%H*og1O4v$2z-681_*5pE$s-+P3;t%>|N{$=^VWN-wVV4 zgEE-@_Y1UwGzcgv004jlxCi>H5R5IuOhW?~$!YGXogWNK)e zqh_h1yo%m4ZVJ8NBpDPTBbYx$UM>SX3lKtt1ZGlEAR(TG2DV_3i2I^}gvjy}In!UIhlA z#&flEB;mdPumJ#l$cjq&+>bg~jLH9^s0|q3dmPr_`PBc8@7;SoDBkrrfJc*$9y(*u zcHpM=7dpHKqLQPGhnjlgk_Y!vXUd{5?jwTJWYa-7XP~0%X23rR^EpdPWUsS8VGxTJ z3iat1=@D0v0u$#0Lq_UB5IOv-+%r=}EDH(F764p=3NeYG!6t&9AvG8P$>jppw7`Sr z%%l-1G)L35jEXVq0~9D=1Q5$h^RHn@iGYaE(n3Jnm3SpXrDTLAXfHK8EO5aEDIZ6H z4I25&4ODP05rno#0i;QUyu?u96)M5?U?QHtCLqBjgfGl?_EfFWDVwID|1It(`z`2% zHZ7YL%?yM2tJXcesH(C2~X@_`rdSF6o7^^fyS?xBA8(~FDZSfP3R%EYWF8B7(SB1 zRNViP&tJqwV8v0Dx$WAUaq^S0AJg(kHBg4jbme}3iwFiqsaw7( zb?W|RzBN4cZxG|-pBTm7mc^2-A3wvb*Z4|l86gX7*Y4Dm&exi6om5Nf_(%w|N}jwf zH-brL+Q``+8wm;sJFSQ-8 zy|Gj0l24wolp9iDNsvBFeCu@sL4l8?m8qqimCMIqXOjE)^~l7;nN5xTB-UM19?Id# z(LNpg;OQt}fvjhozq~f^`UiWGM2##0iQvj$Psf8IAWNE8i1^{ilh9Dc;?9^d={N)X zje`dG^4O6EB0wu1*rD?Mi&#G9c=ZuqClP690L<=Z#gNu6(Q32zl%vekE);xA= zqaL09$g>8af52GYjN@W|3B`+9G~!0l9R~L(1MXU2lPHEqov?h?GQxj7+-uTwcoPBj zsZ!<=6HNYd+7FHlBWN$6q7C6S^`j#aiLyug`mS8|8h^@t8O)x7*)iN(&crFHpO>^U zdrK@xvr5^pzY=RMov)9ZG>nbW4y#0`zD{Lln>MfVEXpE7U(EVnkr!4YB4rUaX300$ zSrR&C?ev1vJ0+|$wj{0Hnn~4ttTS;4cfAcX1a)ggM*513__*klJ-oTfo7QSyYOkww zgSF;xj>QeVtMl}|y<)l(tESWZo$e9azfuRijxq*dW48dY-#~U1=J+}a?)B9-x6$al zF`s{OM%xFcq*!P>W*A27to_P66m*xgB^0;cHasI%-aEG6XhwNq72FMBs=gqmbWzb5+cNl1#3A8Q`v4|5NAQ-ZnoP-#dm7No{@iqL-yKbDlx+-ZZSzBd&|anL-mtZu zbLe7S%{6aTu;%JyHJ4P*Z6+zy^eDfpn0PiaWM?G03TH>5mJX$={fw?|)m?5~SP{8d zI1w3j-AVb$ltwz16IhM0vPS(jT1)9(301hF8Fl;1W#B(%Z5Mnoy*OA7qU!9r6?r(0 z&)aYLcS2QloS7MJ0#ux#@ITHqdvemslqXTEtc`Ydu~X6C2s=2wSncZhHpFtbCtI;7*t6_;)vrdUpKjhg&D=4x>N3)P_-6`Q&vgfbwH`Hil!ak#M@Lt!sGe;fcUES>m?<<8c+Kmqx2H8AX3;o7Pbwq7nv@T~#A92Gay9SSIH@|pg zo3~pZtB&P%ap8N;XJWHB=d4=%2%dAb&il+-h@Hh_6ykx@WKP*SkqlhDM8isNw1xG4 z^~2H7_ta-03pCPco(?0acj#0pxm=&;iPqI{9TZiqW?!v1=WERCzHHEX?Ivu_zGJv; zifG?a^T3%fql)(bSpQ!2T~R+Z%+b6qrSWExL$fg|ZqKRgYc`a{a3MLH?bhHXJE-MT z)?d$^Mex?Cz8A0F8~T#WI}89btG~qY@ZZbYswm34q-`*m(RQwa8h0s)39CAMaJOf^ z&{;js%(E%1yu$=l(>h;-8OD{1C;ancsdJHEWM>68WA${Vn}^X1*GpM~=M;z^mn^V* zq&xkW+ZK(!R0P)UdF-`m7d2n*o;X1Bh2-&EQ$^3DoKsppiFTOuo})Q}lRJg>npGLU z)Y%Ose$O|t0kVGlK*4~8WYxJS-Eys(BqWQ1zuca9$oWp+buv?~bS=bAQn!U?`e4P~ zVAW;p-Sq5qfXsrDGSf!HvzwQf+eN9|J!#nRe$H|-KVmyKrtDOxSZ25rbN3v$xe`f% z43ecqZ+;uMgy|DzAnW2ou){~Q@zgf>%_xt;aHXZP!YMJDY{)0NK;O*wOay7BST2)} zjtsB-224K{ouZQ%KoLy#eG3E17pqFsjTtC*Ubs^5q$oydoI*8$EBf|pZ`fx~AfCB< zWvsud`61EN%tSbpmir6*KUols7g;F@J^&Cy1OQj7W$jZlzKS7gFdUC6K^CK}AF>BUp}e z32%LOZ##Fp{kI-Jd9P-!rg)l~C_23v|23-t2a4359^VgOUlomQ1Zg8&P>-&$N zMXi6jQG`ES;};&%Sj-B{p}9cuuwf)AaSa82_{g{92g^K6(D0(?0aOnqGU)AK$VewR zNz6$H{r$0$s`4>! z@Q-ntiRj7SQB<^)BgY&31NtcFiGX<`e_%F9Fp*zo8gzHm4K&DLqI?MtV7f4YJ`|DT zUtzQ#)~NcgUiAn4QNz9mEaN{MEXm%4=;Dnd9%~7Z;2tdCpoN?u)eN{#rxl=t(y9Fp z(6|Hi(7+@KsY_Rg+^M zvJD9?B$x{c#b01tGG3q$iLeqr9eyDM_N)znmz0PjHH|YO80ZKR`9K+Dm`&>tLaY=s z0%?^5n|?nxh?dBL`?-F%K$74@tD_)hM-7BZ$T$uv^A;dsfQca>ugizY4h9;63|iS2 zY!a^3SJTJ1!%xkDIU-I+oiExJX!wPS$)Ar7oDIgJ@m7!tK+V`jEa8#BmUBcS4X@!t z9V$QwjXoDf3R@zM1oDKQBV?2)hh9K5KrapisUnpN#480l21?yjho0}-j4H=7#D3fI z+kwPJgvka*dAI&HsW5HcW+)7X_UVl|pjv8O2t-M!4p>37*oK$7{w*83vg_Ldr8*WE z84wr=U)BsM@KX3w4j!G5P7Vm^!PJ2@PzZ6p>+`@ua^MI#ob3!WMl4i{_)a`XISWXG zf<^gQgsiG3%%c{*ck4t_cKO52IT^V|{^aJ8B?=K)9L<5wakuEq$+o#54DyFp5wA zcylLzwg&oNrD<`+z+zxw{ct1i#7hVP!Y2t3m|28y9Dy-=U<3AN=l^3Le0U{nFO)ij zV%P){LSxx)n|*;Dc_?u=?EbVA~6$>`$-%5>md-ejW#5%WV=~OpzrB=G` zotP$%FwAb@{Lj=aN$UEBN&ogHLSuH*dU~x~7IsEdA0w6HQDd#`o&IF-LaF|*YrR^& z*@xW6WgZX0qxzjL$)XDU_kzCQ4pgZ{EMlq#L5>h1q^Mf8HqvHZkfwuQCzqpH&#UonC>(x-6{pd3!Ayq zuQ$|7gGh;kcp?xB%Fg5HH3t2qu$&Eb|7vMu?CZSdI5hrAHNH>Q%MT73YHe1h_BmoA zrve%=r%of$*SNWmmO!~Exp^G&RYN}O=>xlv{KH8!hA3XS0LS_ER|iv3-TytmX`V--E-Yl_Q{y2BI4~kbMfd@ zl~q>lY3wc}xAnZ{TCPr+*~N#gxw85h39G>;$A`?ewkyR$g;1I=q@@AS<|u_n?e0dI zf>#I)7FXbZm_lR~yj7%b593H}8|DmE=c}thqwnC{52bsr86zscP7u0_%5J@H7Pb!> zFZ~Adm>|^Q1{3^3GdFkUeP7X%?@tz9-GrrbUfp!MGXygCSuh68>7~P_e-QF8>@f)@ zeAQmoG?|q=211_E*Gm{eK2hzFiOQw*{+S|*x{oxz*m~ISsj2iY8mxewFxS%*i*K)t zGqrRz(@vbm{Ar`FaAwNC zFB9o-4Mt;^|EUx!^+uf5#zZEVQhMI^^QQD=IOv)v)%j*u)x=MCJ+ zZsteo)7}wwWV7vio1^&-;&~pPMB(+Ed0XB`M}x!7lBA%$HOdoHg~8=5^L4KM7&MZ2 zYy`ePn)a%4?$x3ZOSR^-r{<|Zs;$OrUSi}|%cfRwXbK?`?64%Zs=U!zFTznCTxqVx zPpW$~0=vC5F+GQ?Au*Fm=BlL8F_D_S5eW@3-$~v#cu5|Y_8ULZ+(blo)eq7pqZg6> z7u9gHF{M;`C2ZMkcU3KrvoPP@EO$)WO_i8}jP_s>?-V7lj=b~JT1bR0dX z2~-)r;uCtKyQRv>E$!umey!sn;riC*{RyY~h0*F{GPm~Za#JEJnf>Q$kTS@d#mr=) zbxV*S&ttqoldg@0Q?E+I?2xB&I>+^nWQQ6e8dyJsOD;|Huuji0v$BTH_Qy_}x=D|h zk1|{_FeUYlpU7I>y_h?QHagjNWhSDgH{RLkO9kX4249_ zMS6@PyYxCb0kE2l_a|?ZrSl?J7)|wQ3m`Yei{yHLV(T3$y>=r(y-LWm56R-nP8o^L zu#KSuU^7)roTIHQck|Vrjgry>j|8DA!|~tz(SI zmp?%J!Go1mOHMIuLLb=VM^xNqt%o+wvv(BT8)MwNe!nCRUfn2G01sVd;ulBe(U_y? ziDDdw$Cp;$IbhZ29ZWuv ztK`QWVRbEImq~wz{7P)i7+S+mk?@1tQ1et}TCiMXN%6S3>Z)vdz&0buDG97`}@&2~U*<0Fj73_P3e^^pnbt%meL%=lP&qUIBb z0tV@W6|-=A%TYPJuzNz7@XXrXQ26lhO^#pr7_f3u&lD>H_j*mIEb%^)w`y^Z{ScwN z595hbnJ)|*2kq6w(B4qKo9bQR7|Jp2tvWrKrlt55FFMIg7?(QP94AsMj+kdWX4&(RZ0>2X6Rx2Zg*ib!QSA`#U{s{lv2j6cO3zIUO6+gm!i5wvzak7E8^pLpK@B!o24GXdP7lwocDC{ zIG^K}o_FHe%%l&pmDq0a?P8-db6T-weseK-El-|u#Md)!?q&BSxl`Ho?JKdQkf>rR zo6}A-dKDMwy>(rRc$>^1Pl@h^Wr*y-94B2|l}BO~UtoJ!iO+utCq;DX@^&Y=u>xUf z{RYSXB@z-swNhoFosuZNZi70-)dHhYYAYA2?;COM##=%tb~`b=)A}&p1*YbLz^nb! z{Gm1LBO&J}zj-BjY)e1uKxez0y!TOOeDK$oqf=*5vZ_Xy*JNYxYprQ(ba|KIBEQ3G z@NHL@u}jD*gTHr|E1{ANZD!q1Jam#wV9riElEGqw z(4yIRXsMugdrhLilz~1mkFYvCe7-r0#n*E{l-&1M+;rqJx2-5;l~VUIUZL# zxHm)T#4G{bDmMNW?b0E7AMS8_UV;22Az{06Rd zv_=y8DTFS@8#bdj@6LyXMfwvIRc;RGx$g@+0r``ipP2c|2(?7UK5?fArEnvyzmQEz`H;;wL#Xn%t{ zNwKR9I0I~VC$R!fY&=f87yRFQ^MGytnzCgH8ZYr=3=~gpS!hv<`w6dJHpG_2RtmW; zXL8Too!JB}(b;guJ=o@)9mFUME3I~Dt()>6`IJlLYg%Wx!^S8weSMTNcH2sOXKm>Z zuNKP|`_~&8hX-#M?a%FQmGFg`T5U8IwN7*d7&*P*!faYl(P#3T74#M>z%mvyeiJpC09C=i#pmg>}AqRSGiZq!8+MD zEJTCN&2bUd6Pq=zFm&`YY1xz0KNU3ebdAQbnQ^yM2~eF2!(L9Ik(gvRXco5*Gr>QQ zHQtrW_JRy(P-s<;d*$nVH{=gqF++CpSwAo!8J+N#%C1Vax(hn96wxz`DqGRsEn{E= z{;5to)Z<$g?}eS+esk;WI#=QHZhW(Gk&f$8&h(kxQyb=X8y4QVD(IinWd39aSDNdS z-l`1i{O~)ACM->~?|go&iQZ_#W9 z^}^uZMCm=v{poDL6ZbaNzmR?VZ`+PAj9^|$d1Gw{q>~_4ToHO}u~C-SuGo&Wd5m3^ zrUu})UDK_(CwJbQP6Dhy3cA_(p*$yObYl4#cEK6Vtcx8yNB^CfA6~3%vct>D@mWW| z@s??s(j;seI)wFhUrY|1zqw}#X8L3^Sk4@HI3v-aA%Q8CA4Q|fw4i0Z_X}^^V9aQV z){N8GW3|?dGtcBQZ#A|xJWrix;q9BXI~_D~yp>xppB*S<`Yp*qD-(85Nm+$T(|FI)jb2cMCP<-2^r%M zL_Yd%dh4fjQvIIPc&4-DqDBlSWzwZtBluC}o;rH3O7L$Ua6D$MIHCRMlo0dfz5R~U z>*BO(LsqDoxGZ&KeQKDQPX<<>(}Pc~l1H1DtIbDL?^Z*a}^Rid`oqDLfi)~r{t z`y$c_ovQS-tWmPrJ|4^Mr}d`za($GUz81%BiD?IU^)2!tgIaomTpsB#o2op-DBCi@ z;o}FcPpf4B+rB&F;ArH*TjHW|l4Wn1ME8{9cBfyAy^p-}j?z|hoOtGKMihQ(8)a^x zPY4k4fCk3I68G+=r{u4Cnp*JC2UqJzPONLpNK1?K>A_oc4Nr4zv3ttA{XtHTR}|k5leGn1$`7Dsd?m+O zdfKZ7tKL=a+4uG8XhnPcDYwO}j&{YO{~;+N^lg>F!x$K6_I_JFQMsBFLoMUn50>W7 z&XG113E5&%wR@yq2g|lpXofxmO*O}5r9}?1+)oeIN zJMeI&u_&xbU8J3ViDb)9-d|gHl#*!fJo$ma%qPCC+@F%~eIramPb?I4JI-fm?{D{A zo0axm#hT9Ed+V!;6>qBoZ>v#1StmO--QVuASI;_P?jpU{#taWenFeVg3yRxVi6#%m zn%@UqObz5tXvjdXK8b(OvKO>Ja9ec41DI;HHUf6hKy(2jnf%xZAma|~;J%GHl+$+A z5m^?m8-Lbi4I@9YT_z%5kq$wwWBNlKU~&Om>bAL9g^Qu_TEfVjYS+RK#)HC{4=~>` zL|+T+bgCW@KBH~3*}%OPrxl9SIGrpOABLj-rD&T@;oO zW-I9(_c@`|D>7<_(2ht>r0LwhFpjP^O;d%HcGMeN^k8(Xc~r3^5@>xfFDUa>CkEOG zMQ%yNEQ`D^@yXa8<;}T$=${J;Bzd$>hALl!>_}RGW*cm zedzwNnqFVhlgOiZn8Xw`@4@xNdr=4TtqU9* z*Ix#DwAo%rl-%w-)nrHI>vX5iRa*1iq?#7c>jUat4UvTgh!f+La-WttA6A5EZsSZ- zxW`#`CMUKHU%zaROxA7oQ~o#I%Shy8GRjHq=SQa2i|?V6gmC5w-<6Volah(Lik?`L zZq7-m3{67)dBV54Hkvs2$Ex)c%UO)8adu?+o7B(nMP14=k+tKvDBBpEv#->>s#s0J z9GdHLYy5v#me2mB_?!zioXvL3a>`0`ir^$)?sA$iYCr4TV}YWXJRWH4EOic(@QP#g z=FOk_W_7cvn&p(_zM-4j7j>l@dBVIY=i!jaF_RmgQ5?^+@3_pmhaY@gi^FCuLdo&SC6x;;iG4pqv>!=g~IC1`(~;P(I-eajh;T+~cv zDWW^#?IyS5YMvjr2~Hj0(9ce7>1NCJuj10`%)IePFjCT_E-Cuu>?AA~OcA~d6^1N- zj?x3pr49ENFyx(C@*V6~TuU!{950%479MG<2nTr#ow+xEeM%?9kW;^s zXeRJ&m=Hm{`(*gf&;0$Z()3ySHB(xuam&G4WmxxwAZ74#=VW{{JowVhHAG`ydSw@H zv%jX)d2<>B5C0All~2>B({%oPKRIm4Q@h~SG5U04@)b+68u`s2U}1`znBMTByy&Ib zgr*N4cx4`d7q9G*)6RZpt-jaG1rc{sBXDlm(x-a2f532)f8HVWr~B+51XHtLb=S4q zWIr7p?uPl%XZ_Ib;A}EVT?@y`guw9sSJ%if*1wmfl{D7ZN4S{{LW;$lu7nAy^oX47 zq@;YXsDvUd6|EHA)EJ<|m*H6q)t%dE^S%`DC= z&#d31&?M5N*Cg7c+9cbg+oaqi-K5?m-=y!{XqI8tZWd}*VwP&wVis#wW5yAj>nCL- zS?K3w7U?YKr&sCcWu+&e=qK6Z=cw4|=c#BWS?S#1*WujYZI!EMr6?z13N*&cMfe$* zF8RYhrTJSB5D29U3izMSve4mjuLT+a;Di0Y&DV)K*$CU4nEqe+It_0g<=~OGc#eug6O$asYzDk?PTdFdTJ_YD!y?FMX6%>4k`9t zXN}%?zC7_?pVm=p@9wSi{@A3q1}=#NH^m zlw;^0Sabpud^~9k${%DtI77~RqAd-BY4=6p3Kx;mj4E{6^-1v=7i8Gur6%prFt)J!Tc zcnF`C8V6+(Rg6R!Dn8Y`36!X51rQK}1}G-q<2($=80B2kF;o`V7vX>s#lwvf(2G&a zk|N_4&YB|@LIdyHpK}&=b>M(<$@Fk_MM|IsqU1nSB2z1LZM&bZGL>Ga=$)M3ak$CbNgzVqpbyuIP1wYHAPB)WP@U?_gKm0;f*x>c!ZX zm$mlzt`y9v5zHuQ2%iv$7UFdPREi8GD@^ql%wQYcTR1&Ru>fTVvNuD$h*UHk8|<|@ zw@LZMG44ycB=HX<3ygXHi2i)DfRAb5;xaNPI5MdjdJ#v6jrX$paibxMk5CUF{mOu= z1SJ0E!4{|8aAe2YIo>4OqBHD+j3MMy9(9EN%2gIm4g<6+HaQR!M%2_M=)x>aV zOGA-&A|o#J^-A`l?y+VS%kYMy$I4^m3w4K~2ew)I*Fvf!DCmR;2UbQmSTRK!YGvggDN2nNfk#i|Bz<$xuyE z_f)XO8y@#y(L7iLBbJ8-#gQQpQ4He`lA+U;WbajowW0z_3I(R6csg+5Q39za=O`WU zADHw(XF@|!sVEgD0n!3RM-HgeddMdc0;-m{V1D?5vt;>XXpRnA1B%sbxkl7OR#{4m z4gn+w9-If|aghlp1uX<#fQyY5mw-#0nrY<-q2o z*ajG1Ns5pBSQxm&*fQoU>EjxP7ndzqdc|7YM!)IOq0J4XWB66kz^*9uUZpA#Q6P86 zrKKuJ9QGh#T*?s3Siep1#L!DL?4pC4kBK*uP#R1!#9#c9m+Yhuu#o`?KZr)pvcmhd z_mL4G?$?ySE#|JVhtL#WGLcYp@j6?fGXbJTrG``)0-bm%GK!aHoA*Z|p9b z!`Oua#z+!{D3SoYIFfx0Ok{z9L_jtt*w4l=5KAth-+Y(QZW+d zzy8MxQwLoW`;-j$cP*e_aT@iG1Gpcn#zab2p!i^3MUn@628dl4De$9r+@2U1E@1^D zvM8)w3zP+Cvs@E6qEWsw z9`5OSdsPBvO$PxUw)^S9_h@v~Tdm^%wV=&FHrvqHx?A;KvX1eK3+(7p&m4}V6x zwG_aWXMph*cO$axR7uLTkT?Pt{_0b9I4{w~;-oqfc`OEG0aGNpC_yU^0J)cd41*eD z)PyDS{=kleDt9y%KJa`Jv6IlSfsIF*J_x^iYcQ;S^9YGN5CJ+Fk?9Dqn>vBSEi!JW zHD-&x9F9jD!VYH)$+jr{lZ+;ZAqEpu#2MrNa`0}*|Gx4IlQ#$#jn1UW&noi^5i1cw zi$*|m6y8t>NZzIDOU0&m-~>kZ!L$2%G}?mf>4*c(#})7+?_?L<@BQttC{lw>Mb)w$CMZzHAaoDgO-@hpr?e|2P^AI^N9u}}}K^|)ux zb<{|Y@ZZT7s0}RD-Y&Q%YN0$JFx!N2Q269xkg=2YQhrz|vEgrM-3I8}7J+6c0z_PCF{qS#s zR{YM)^u4zBTpFRdKK*yXZs-H@5>1_Rn?}Wd_`1mcaw{*D3dv^Lg4SXGDF@DL4udL_j@Bx5PhKSNk4uw9K1(bnF{ ze@uC3G$b47zKA{?Zf;k@o5NLD)DGa^jqyX;%Bam!(PJ$xYQOIMHxL|L!{(MMJ(nu| zSB+lrWipNXhMq?GCeT)0qekOX{J1D{LcHy!^9sIcLfoB(fa)`G@hKaG(BJygu2#A= zT-`Rso$mf^eqgXDC24-9QIWxZzecJmQ>tzrf^N0;%qy)V&tZx$knd<)g?CRgR+hs> zqkQ+AEU^r=97mB7OQir^MCy|BUkgRk;#tcU$$v59(cC3=hJ~7B@Z>)$KDdXNu?;O` z{P8`TLc?!MmCA0x7?n*?8#8?4T3?hR?4`F_^2+y`Uj|hb5$5BFdUm|{`e)wOWm+rV zzgp3VYToe+^*$eqtTz+Dw>ndi_ndGPyYXmUNp4FH58WOP!)KK!v+*jW7QR}4k_LFz zJl4mAzKc&c0%1RqH~tI3H$i^=iPdF5i?^)i4dDOF-{m~pI2ub;lcDWXnWS$w_~;Lb z>-_w|01q8Z!F4}>OTQ8$uo}d@h&q|9U%H*Lza^fx4icK4(m82Oz3T}Dbo7~aQTfaF zMWK)ZLC~q_zcjkC^nBN_h%upm@E*dS&|URo^KCG_fAn#e1?>J-o=UOW$%2_fP0Un> z^t|DByF)L}+oUYHE$qAuaCUL1e2;eWJ7@Pd=^J3MPIoUj{qJ()-QopAd- zpTAJ0Linq@{z)p2NF8NDC{o_^=e}8IO^S*qb1|VI%f`*4e*~uhg2C)+$ELjM zXZZ+C?&kg(U9Wo+)U|}lc|V;buU56gb&#$u9INWgT&s2+9V+W#qh}9WI#wS|x*ail0sjXAy?{4@yo!Rr?#WN$1TgJiVBIhwuvIEm>=_?i)w#dIB7FNj@IT2)fgLp)FObtkZvdJ+@QA5 z=l>I+wn{Te2@e&n9THl78m2oRXy=3DbiSFQ!&>OA-s)g=tCFjKdQ&ldsp0(OKk}pg zL;X@;O=B;;NISP|&oJF6`(v&A8>IbGWpB=UagLSuUWM`6!YY~ERG{&Bn(rYwAu$)-^jVf^>lb`nbN9aRpR+SgDYfyIQ( z_MBdsmz0(ZG}asykEvaWFlgnUy=AA>-s*C7>f^$+%T>hY(97U|K}wZ|#mX0iVauBu{CSIDO9bkQ#mbbhA72 zy2egpj-vlVM<`8+uE|1eJ;{!#_}AK6`f;;;7fCHIYi)$0gPHW!26;5|H2TOBu(KDC zq-&d+Yg_CO-C5;DZH2Hp)0RGRjKiksVC$q5U+S8STJ4a}hjd=_?Oiv!yTCZN9jdXV z3!3rT!4|f9$=X5Jv*vlAc?tW$&344*q&73Dygyoq=Z()R1`y-EPJ>sL;IWC zaY-HwAvUz-2MJA&PE}{aU5q)jaqE{s%SULNGgX<87ru|7?%AK0;TB)0j>Z$0ct^h@ z_Z~`%Md%%;XnP1Bz2P{}M>sh@p3{k%DEU){ZffQr=r-qbl!t#(JC}bpwHhSf3vM^5 zb8lM9Uc{Nw=pk*NHgFy0__%V6Jho$rc6%^|y{7>~9~zlZ z9$Tmzb);t@*l_*4nNJFQb`JV0a?BxecKsZB6?AXwa-EIpcdMRp1JhcJVt>nQf9gJG zFM3CE4Mq-f)ot+9znTa6skG@mU19V&&+LAd-sdrt%PuIivrkFgCb&^{vvreG+jNO} zXgf_zs8z$ATp$Y8Ww+QFB7Ff$&t_dZu!o>K+oW16`$)$9*nIx9rb}jHPDO!N0)ZLbyQ7N4r_#`A za-_)RB5PWGHK2JMG{Lh;ldC_u2+RIazRbzJE3@n4*GFupL-r{rQnxq)h_cp6Ge)sJ z9)#y*j(<*7BYAQyE`cWvMbUaafuro=cX3`?zJ89+{3oxZ|HhIh%gq*t-zBX381*LE z-~zcE({MNoRyVd?Mc{BfvW6#Nqt(dFZpK%U@o%>9wU62CXL{3h1K$;Vy7e+e!grI_ zE4Ep}t$EY$*ikq4)da%XD+=L+FVw|L66mYc*X^t#TRNB} z74J1JWq^Q3p4X+bjcIj8+a9H8Z!;sSHQLlE61y&(r_&ze@^pjl<;}6j+QQ~aOvrxc zhQRs222E0}=s9CI)9w2j;zZ*EGBQW=*Z@tnb2!<2 z?NiWof$40}1e$wZJ}D$EU`?TwIi)f9#_()H>}Fu6a2_IiN`Mv^ zm|(vGrAYVyAvr31LxBV(^nuVHM1-i|72(T#5lWy9K#9P;0(AkD(71OLjh(qHK}w1OXq z{%=0;Z-OK9qhFx^DbSYn#N#!=0RU?V008cPQu+UH0Qx_H_Wv^ht?tdEV*R?y>>ZOa zZb>gjv>YOLbEHJgGNzl^F9F58R%$pEli|ossYq4e0!_l%ex#(>o+1(|!8yT75iXTu zC!%uT@_2L2VgJ3e`}yPia@u58W6o>syZYK>Htm<&uzS#h4T#8Lb6d%(DWP=+0GJGj z4%^*~dUz2IAm|_?_U=n=6!ODWXh%;ai;>?ID9O_)AP1a8h$Rp~o!)$^MW|1p+SUNM z0VHvP(L|h)5wpqEQ^!mkfdvjsY_QNU0YjJ-9KghPq-?lQM_435=pj(S#BT}w@`$uU zLPmVzePm8V6~FFw=?OKAkiY;I6gJ5|eR(ok6^$bWQY4O*{&gG7TGD4jjgk3=?liRi{rlZY=Q9AUuiBqnu)wSM%485?mVgg^Ge zrUV!NAv3`X2l(F^``KiAAlvR4{9`b_K9*hGq5O_N7J z?9<>Iw`1A-oqnoKtzTQ6XB>3d7IkYw#~+@Po#-YgA07{GAL_`wqFtUaS$bc7>=4^Z z{ZH(Il5~P6`t9s=YYpht(d|8~3=sQQMsip%A*_U^ugV_!6KH);zrBkxvYyqnY;k14cWYY(}t`l_`}a7VQ*=~mY8 zDPnl%MB~EH(f&$i)vpla$J=g5@PEl2!{7O=i)&mUOo~MOL#&-C;*xp7|(fxA}Q>UAR%%= z03iqph~Un>(1HLJfzV$f;zSAj1BGEC9v>3>i^Re}NFqTpQM^!Ktzi&H$}!~fq_%va z05ar40)|*96&m^@FV!GJcmO#Oe5oOy7w~OQA`bjJf5Sh?=LrJ&5kb)37$*M!BLqpt zN`w*OKqwS2{$B_%Q^P1RPYS{3jN!iz8w2AtL=6is&9|NZPzE0=k!&A+9?_?PA0O?Z-#pC(p4_c z_ZF@Gx^LL4BtCBYQ2Din$;KjeUq)|n)uYbTOAlt=Gctl%E<$>h(5JI?$K(4-w-twZee^o}_CYs) zO6YR__0wN=o3gf!7pk=Fdzs59dX-mZUYC-UUP5%u)l^)dUln!W!@=F=dS$aqb25hj z-&^Ji?@YYyo3kPo7E{Z9i%iWdmtjYuZP4cZQq!S_OrNXD;psc?WW@C7FU`H?%w=jP znn4?q*DLvn(kR1!th%tH%kKTlu`F99v+%denFh9p+cunB$l5>ohtFfxXhMvzbaY&_ zU!g?5hCA^7qg{ak@zR6B{w}ib=-eoCvErC8=SQn!i3OJ$yTWF# zyHUzL!a6^NjD&CxROu*3&Ei-?x7GCG%>NE){Ke&BEt-sUSnHzb7NOHyU6` z?NfT0dp0a&bVOfE*E_3F(yvA=P3i5+fU6H-HcXZNxP0&)`?NTI={7g*;-21~*){E$ zGwKnMLEc@Q5zgkpdYP4{R2kogIkU#}PT=4;BYkh7$MaK0jwR7HnU&c|0a_=G<*Qzf zxYRVr*O`dM*4pU|o4vUdc&UXLz07%&=~BvsMJ`u5+*T6yndBRjR?ny{ zifPqMdqGH{YWL%Yd-7}#%BBaOwOH)7eH*^VIEJ6DrxdXQ~Q>j9P`E+J_-`w_rH2(qPV%Z_X)X|T46V{Cpnb7E4c5;lu=3~ zxx&Gt`Vi*H4KUDqz^-&cZ%p0dc~fh+NaO7$jwm+jlcN1w=p)gBWy?V>CP zlALdur=QO5QpEz#WBoq+*WEpNg)N=T9U!c)*;nSiIKX9VcJhlWN$Q#UQ6=m%~kiWqnEYfl5p4APJtuDlqRxY zQaclOzA-8lt9EkXuvzWxbc;X5RZm=3AA3+x$7{RZiV<0;gv^YT8E=QVsLeRk;X8r|#l`2$;b*M>T!>r449!drqCp+spsGS};~ zW`9c7pI-I9);xLk(yQL$x0I};@@Sc`rF}(t^tw7FLx<|Q4K;pCdjag}Ov$p{J}KU$ z>zBT>rQJ{WtMcgXb)xXSmsix@GF#M9ueyW7EFb>)IitMs{JAOBm=8(MeA6s`IqH8FkB`Ymq&%VP7aS?lD_(j}HCfCOOu3irIPTxj%h|t~Rlm%up*Nqp zt)cgUQ2vAExt^kT>}DpFKgEu`?-ZGG+`uUfr=)~W!(|#cl^^J%;>!Ar z*AKxMm#n#Nh+Z8vRcq{C`KpSn>w6Td;a#U`rr}lhcrd-cj@7Y-KyAC?BR6m*I6Lj@ zinukZ4-E^v(`?)MWnZku9ljFlkDQQf-R$Rb)Y$XZQ;(M~KNH`4u`U8OLsAZWOKoPMRIIMWo|BFWnpcsS!-|`$9=!!9?1p7YmPWj6!knBkVFZhc@SWk6is;v zfCgoo5+uT*;}<~@M-mnUK)^w=T&aO*#bMJtWY$T&i5p3g;wFvLNN(NtgH7zX(+?f> zgD2B39d$B&1ZJNeWv{qOD_2V?e72a+y8svrw$(tOVU^D*x2aAsQuia zB%voINjlO#KUU5st-`OA%0;_4Ue1qOGg+%FmSgVHGjA0pD)VscVf0VstbBIev1%@F zAGKyD?Q+{psbm$hXeOU;JC-ZVl+UzT<@`)xUhel)N>-kWkwcxif^E%Pn=9n($?7qH>H#?w@dZp`Pj!yP zszXpX3qj=Y&SbOVtCaz)v>&(5%;gH%*14H{#cIpV7m8(z875&d!@vbv=Zg7k9%XZ< z*i{y03fa6>MiuL18#7-yuT+X<8*>MPPg`=uwz*>Y#EjiiJnqd}GkFI@wm5ydoU^Uz zg>oLx<-nRVCoJXFVy>XDl~)|H&s9=z`nnUvY&CCzjpvG=fs0Hxto{9~@&}^*bJaq> z*)Kn#^$TFmR=EF;4YPlJf8zxQB7A%Ay|=^n-ZuMN%2sQol+W2(8P3Yt=_>Pau3%+b z?S*pj^u{~ca)mrQ1y=tmpw&%@MWrN#wm}|glKAHX`15`EvrX2h*5Z3ak`0oSkS?3l zXz}fpWI~b}EK}5M@x_Ro8T=4+q{#c-nnEH$5{ME#F^Z5sRGrebsQ@q=%E%Yw5=okh zT%)92lR{sgN@$&MppSf4zDSZpmoMLFm5dtd#=f#vYnf8a#bu+`f)O`U7i zG{&ZL%1HMLCkzV0DP%5^Xn^=pE3s1YbrJ!DD>T#M`>`qC9QI7sx#7I z5`qA(p9F$LN9~#kLbY1JRS#1CORBXSU1Py{Tq(`V>1?(9gVTn%x@@J!G32k0SmGEm7w`r%knW3P#=RRDWJf2Xqy3G`C1bPYRSDMJJQGULK;!WVW z^^%OYc1RMDb>i(t6mM=fGJMeki!JVABP_PMi%qcD<}NnF!f+Q`VA1O?w!-2Ocd-o? z0e4}*B8ZI)=-x*0c7V~V$=L9=mbmO4hgj10QoIvR0&wyOoJ^sVPI2G4R>ROc^$yJ- zxO-B>e$5+W)DOhJ$wWa138uC<0_7OLAR-UCNF;AjVF0Terdt^bgbk?~H7 zABCenIO=0uI~n~hiU(kG7i{k4^t*xH2;TcrR@3fmC=jhNM79 zHFa-ShhakL;6fEA?iBzTX*Vy1)PX6K@eXK)H0DybRaV0ed#2?gQ_MSUO zR-e`Y9ZJ-y3YZ%eROJRS#54*R+^G)T z0pCbF@D0DfpKQRNX86;9pP;nx&3I!}1i9>MHyDN}@40EA?nk0PJLs>3x$+^354z}m z{NN{H!O0gty&~iN6hG~Hy=j7C-gj%TuLPMh3@#i;GJb;MXCQ<2K{p@is6iuy*&rAt z5hqCqvMGL6k<=aR%9^;ciMlnL*btZ*D0mZay&?4gFI&Qgu}!9(BE|U3lDIbaG2tUdgEc=77xTc0s9?suGbJ%eWqs%H+Ys=8?xl60#g7) zGR2dCybm&q;xv5iZg3kx;5Jc>D1NTpxXBxB(ufe7ZNjZTs}Pm&`%fv-7#H%qB5jY^ zkbbrX#qD!!e5u)x+)b9&9ZR#pgf;a5{5K_LIEr6z2Tai*(W-a24gS>$K;j)_D6&h0 z@T&46H2ws@WwR}U0S_?(ieG~5q-JPieyIK^$j3U9Bul{Ya=USh)lQ{Fhmn#bYq0l< zv&X0zsYa3)VSBofR3gdCu$O^7;vGgl31Z~{IGM%DlN8TDtULj+LI%}Q)RA!przi=) z$eA8RK|k>h=rFHPd<>k>&8;>Irr%1^P{Rk%Q~7 z4t0SK;^3c@j7OvDlc<9<&u|pafz~~sKdQz6&3x0K;mkdK6CM~?%vJ4vXMfJqdkv~D z(tYqG!7+*#?uee0h#s&u#W@x{N`&~~ayr8V%?NtWt6-@S_)Mr8G}wSLhLYC-$nkdV zHghC1OupT~T1Xv3-eI^7AEm~aou8uk1aQZIJGsie0^EfL?jqyfqmBbN3jqX9P2L2W z61Yyr(-MjN{Gq2Bsza>`|kx@_hR@nmXX zi`Ln^T{<)|icgDd00FP@Y{)`3bg}+Mlq~TlmJCRUGb|xuQ3(?J_2v@DLm%o(EUNK0 z6BH1B5)darc49=}gt#Fdsi#XUYKoIc(@BDz5a`jFR4pz};`P*n;7{oRc+K)Te6r0@ zzbE4~#lH&PI|$x>&K+*gHarw~zfqbV%sc=;OYu42dm8wrT)tm>2)^ej{ygwK1J&kp zL+VwCmaE8s4~UklIvY43x}-RZu=mtUC^cDCFHL4V(4uCCXVpvHSnD}fRNw8%7FF6a zmsh{hlPjoi_T+PFv8PZ~^F0+?o$smU)E8v@g5cfY^45k5c392A-w|~N{@$m)0)G#x zFUt7EGe9bJXeqcyNPQ{JCNTCWsfn5EyxZD+jZbbK8t-~KN7R>P{E}c;6bx@PG4%a# zw3$Q3FH?Mh7b(ZHO5L-pM0vYJmcMcVVAc9=G@+ZWqx*tT_U8T3ecaqni=vK59aDtd8zWLfLQJAKk|c-K>m{35G8VhOexF?qh~-mg28I z7+sd5!^2JJtU9`{31t`WkM3s--JFaq!SI$~SY89&<KnihuLL=;j$ZZ1nv?z{@~g zOtHGis$xi8h`UdKx0{{-Ul$m@(fs~^(cfqq{Ylg4pBPbdGG2iCnvii$ysv+Y31Tw` z7yFJ-5)>;c&ivxq-xMpz?r%Yf3x?EJ5nxLiXhc0O<5$I-`dvZ|LQ$1*II(^Jt+P*|D^?ntT|3@G}QI+ zU7qc18gs-Ry22g_&fc764s$G41qjZ(0`zWU^!D82-K zHCb`vqhY#Ua@`S}HznN}3Mm{#C}hR{l1I+ zOI*@_{C$Ji{{f5FqhUb>Z)BRZ)WcyR0Ksv&P8k8pl_tttb;^VPxs2iNs;(J5-xI{t=F4^?M6LDm@_{RtDyKj?f2_Nfl>Z};By@P zp#b-X99+VQA1Cd_%Xi_lNc(7005ybc^gZ>Btc0rS8%Sf#ULV%gH@a`JUcbnC{dv~w zYpmD5&f5GL*5*&MHeZ%;S#WJ|xkQ^k#oK(9w|Sel`HGAyXMj|q_>bHN_dbs9A`f+c zy(W=5?r(ZFHT+!Qgru@slm6H(b=)E2&+^|LL}Dy_=y{Y$a>DZGVT%96`QIQbO|L{K z7$fQh8QT{C9B=j<C zTI_3x{Y>{!6Y!-^!mIk6Ul|3|rN4!$mZ|^91V?q;OaJK6xW3m!pZ-{6>QDcFBvbrJ zpUaw$T}W(#NVu`^?v~X0RR82mj_f+N%z3hfR{it5V{BtK{qS`DG^zk z53nJ~(!^CnYG`5*2&iC?rXUuis6>z^BA=@)SogEH1yMnS)fKTTf?~shWnKNxD}ewX z(f>KiIpdqTbLZaQ+?m`v<|C;TUixcNDkb{`T{S;2mEwbqp!mG})Km%$pX!daXJ(S2 zqy%OLl|^T!*EtbjS-vblxz?J2D|N z5M?$}Ww2KRR;@xpsbc7^g4yPum}}-!18taVsAf)765EN&sxoG-VTU4xY@irgD2DFQ zV5TWjMcu2xsuDx@6{NKcUpga`^wF(R2h_@?(jpnk6hjZ{<;++B9@0eV zGjVny*n=7PP6uBE-%}M;17=L7s?@Q`&>9v@nh{E2XV;OCS&%Z=(?bRL9>Q=3y+`0Y z)JSA#Z345*I}pwKA+{mRGCb=Spjm%2n)NrLSw9EO`dMTsD--DAS-;Giqy&3_P16vz zsxdR$nW2U-G=SYM8jCprq0$hB4j4T~M`Ea35|baXoyW$a^!R2ktnft9@y%WkrJ*6g zXCeZx+B4UYp={i6&k(~;aKlfB8eUWJorcNKIx*BsgcQ3Es(3^t5mck9z#xJ-_)b|K z2%BciTtBeOXSn<4689>oU07Mldv2dSa|0P#kL$m{^1t8Bd@_`WFZh5j_$Y&}7NyGg-436aDeV_+}Y>R=}w|_ zTgXr$zTh8x!50~HCsDdBV(9C)>9*oOFtp@I;cb)PaY&dq4tZ3(2qw68MPz6ju1~@B zsiV_@1!Sm5%%Oc7PK?1}rA7*F`v9CA?o57kI7S8z!i%*^l!tJ zU~pK8LE#XPn#^dbh6tNy%-n$?jsq?kz$J`O4e^m84xl6fz={ZzAeEf3l7kGSZ?QgD zYtJktLpzXJupt>LMHt$^5ED;Ls<_!PxDy&a8jCw&VNPh0MAZ^ISn@7hqidp0q+A9{ zRXIFZ%D5SoA*@8fBktMr*ui>t;cc3j!yZyHczE0liIPDZSuzk1$12sKXE2OD_RI=0R1U)ELxw64h8{4afroKA zZdMa_!ox>exD##62~QHn&se^nE+dRQsguJaIc~^d>0l!v8!0qEsD%id3SI$X&Umc! zS7N2Va-j5s+g`~QBAIN2mWikev*A=RM;9yqp=kLJ6?61J`4@9wNhHEh-#zkI2VVd^ z?7qQ3^h^N6fKiAu=2i^8ZhCC`&?ms)f0Is2)OuX*=f9GEDL~2ti{^tv*B^4|)A2*+ z5r?ii^3YSkp;w~s1R;1QloRg+&IHLjfnz|t6L!kO%xW?O-Z;O`rjnsuVrVr*h2a5{ zp=x{PE;6)R48;P0ClJ)wGj~%--oiK^5=kL|3;P-wabc5CepsY{&oMHk(Ta{7?r6F6?j17%2uq zKhQ$?=t`$Z0kG)C4-OdmEI5V;2}8f^w$WMs-P0;X-O zhlG*~)9vhhc{WzOVPXp#ON(Km;m5#*<01v&V7(h(Fmld^zZBdDUmGwy(~mIi~XV`t}{u+%A1 z7;j@eY&V1)_h@MeB8@Hwv6aLzEIKAgIIswHW;KQIg=!H8Fj6Z(N{MiSX-eWusKyKZ zMxKF$5FAltJlezN@y!FZNTJj=KveudD16~ntH2FHd&8~@_#xSWUlMM}pUW6w%Zew< z*svQm#M%f`mKL&14ZE4LO_^KCGBqNzNSUH1`-;GlP(HXG;G&~a4!CDr$+hFce*Q*W z2Cf5+23!z{PB=df7rO|A{P02fs6qZ8?njT|_bC%m`aWeM4*xI9*j*i>n-Cn$A02z7 z{(!E%jXiAseK!w}s~48qBw+P)M`9wl)0-7mkRHAP|^ids4 zDV-@&{i#I%C(vw&z5{5}2>S?Vj#7T7OZlBHC7((3-9Vcw<@aY)f5r+lCL|6acP4DO z5qYtAVl7uZ=$D~J?XL?)rY`F| z7wwa{Z|tQ_537*%G*0U~eXVq|IGm%tbV-6?ZvOT}*EjjAS2a!+dBnMe7whWezdxpz z+jz`i7f*ZRZ`vD^Pu*Q~`sHuWBf9<(2dic_m3KIu(~l~?UfyoLFQvQB-7)H@Q?#E* zgY-6+Qg1@8cia6^Df%z+qU*k=YYk2x+sf}0{kr5>Mrr%Y_wxR&d&a0=Yrl2V^m1#j zkwv62bbIlYM78>Z?DLxr^*%c)S~7pv=Evj)9qUb<%S!}zUo2mqY~Ma*eZ;gmSGE=H z48L^2b^E@S7WbWfk2WWLXj!N8jR)ZK&Ff(u&FH_Mtgw12O7(=Y+5%bIYxRR29lgnlV`iL@w`Js2M0iH({+P3; zSMyM81-+@=o(CVX-A`!l^j2;5aDxBo zR49*ZTiWT&zSG;LTU8xku?~5l9MCn}*|h&ZPsOd{U#4w-uNALf?6`VS#bWtbiy-xr zY3gpIoaTvRx|`B-5ALrcbtu-W3lrqpH{8s2YIw-dS9CRTQa)V_d5ao+3i2CI*5+~N z3itlm<(A;GGU>_9CJWC-cmEcjZH3`=wL7>S3D5AUlqInjz3SF^6;e!E_C`m1DA-~> z{`zqpL9p69&n%vCd9n43@z?HOp7UaoyXWhJ){1hqYps4*TfBajLn+rT{pa*kb!oR2 z$1XNaQQPOBo9x26%IJ=lK8?z?&$U!SBUYb0F*7nabqaD$s zcVCI%X^z>yQ~TNOH;#S3d58sD6dP16+P6fvX&v#n>AOXxL3K`Ne&K7)Q)}81_7s{` zdmP({0GPh03MRFZ4d>=fJ0G#;1H)TY>d4leaM zk~{6E#NK^>cDC9^_gWPvXPMjy+xfEYc4zdbqx=3+Bz-|NpUr!3YuuT1Oytx3`_4n9 z2QHNsOg*{ri|wBHdsi2Z?Z2pdi`T5466)4_{C88eGy8%Jb93XyiOg(LEM< zt6x(iZQQ>5-Fj@hbrt;)7~x7 zt$WLfO5D|oG+GB`6_vb-NxJukbNbzLmCL+ycAedAzoqwiQteeJbuzU)qbKdLhj0P( z#~GbF>Pm0ruc+`{(tqB&ho==~VA-DbP(8C}j=SB~C8A4|htn2Br9HjAh2maYIOQ+X z>=PDr-f`=u8;6&^+iO!P_Pp4;Fubp0LwZz4#I=wOhkFiiJ8vyMLI0!VYuVhQ8uiv1 z<(8YOQ#uz`WV-(+=fj80u9MnM1tE41j~ud<^G-Xc>bAss*3PNcm%a1~$qt$N^-ryQ zDl+A7tyK+HR)~W39FObe(gF`%-}-#st!-MOhUaY^?qS&;)31nK6xynuRr{Gm?g;vP z|BaXZFOvg4En}RRq;YUVPJ^#v@cD%Gd;D*ndi%@A&)!abMJGfTJW2}p{5_spk2F#H zd>aDVuBn6@f26&59L}ucgm2v2F(c)LeA=b<+&tf?<^AI|mCD+3FSlhcf@^(Oted>7 zh&MONEF)|qg>64(-lW(m>u>z(pAtR4`mx(!gC<_BN8GPG`8tefs|Vu4-Y^P_qzTAPnGc=x+}nWuVo>kko*TQ7`-v@3fx z{j&~fE;{p>R;1@zWEkvofOMGd5o@y}@w#)Y$=lxIiT<6(8Z=&?k{^HX^UlTT|9zBP z{81`FoyXCSYX*f-|WosYiS!H)j#n6Ko##LyR@kj8|dZw|C(>VW1+ z)U6t#rlI}nVRclxc1qVv=^80r7o}^V6QP67+Y^2CEnr93N8b$QgdBZ$aEZ0(+r*ft z;i$}r=>JH(4M@ay646J$hD0Cz8W43Jef#JWeVBy5v(P_X(Ab184bW7GKKh1Y5j^Nu ziRd#4UbM**G7>SS5PgcHP#A}DWkjPMBPgLHYGS+q8wgmW<}`(}x|-^cqH$^@KZ@?v zs3>O_K^U0x!t|-AzCt2DE}BWY?GOaEbMo@^27&;-cHX{T zP5?i@|D5PR4>TzuX9s@=Ay=Tk3djo#5OM{8^?kkky@c!>1AriBA!mS#LjcHM2n2Ne ze?326r~mQG{crq0uoEc28Sp)OceVL3{*w@DV&Xu1ZU1m=Dt;C{%n9=G^Z?sjcYGpQC z+W7MVd&rJJ_9llotYU&@^GHvX|%N8Ssa z<91etlOyqHphYXh$Y1`=s*j4(8!Oiqb~o|%53_Dsu2xQMO#(|xYZT%_A3Vh0fH_9B zT-n|d3)=ui78yz}U`^ia1X=41RN+^-H#Yq3{hdL=FfYG1wLI(8Bp1_nLrQOsqiy#! zWDn^1-BisBx-;z7YwEIo`O_nZeg_)NniR|hylpXB|J_we5#-Y z)D9ud$*C0-_9ERT~w4c>?z|CH~D3KgDQYjufBKIbSs7@fONhg49`?b z=x{zj+*ri*FBb{dLV6t$>^dNmN4_mkVNmVu>WC5oLL4<&Av!h)T9Tk-l0x&3WZmM= zz$B_{3=qzly`bEvb$1M6q#4gWvWYHRHQ9R{g5^W6z+%7{YXu!UvoRg!8}(`jK%}nj zpgg)kT>%>OI{3%8c72%PPRcc8?nzzAnM1J_=RNICPWaYg0zaz*4bcQGx^#eZ;@TR- zV?@#>F$%L*Cq9VEmUlI;3cyI!*EOEMr9F+ip++*gZ~R$n7A3=qBzff#bw$NyHRoY@Uxy42>W^)St=*>^>OS`FRh@PQ3S653Gpu8niuQZH^O1m1t{H}O z3Oua!f|YHR zmBTX5>oLAt>Bf`om3ek7C*G-)g;3Rq7>Q}on^0mB_UTVwcb(ywyhGYuTCUdnSL>6y z2UJ*-@&;D8k^Ts*@Gt&ROc!}GK2xf`9E8zT3=DfA;d9j?X2$Z>S{|t_6LD3GUsO{( z_&Nl~DB!!}i zT2~ue%cURt8`Z&lflQCR^1?A1y`GU5i-po}+pBBIj=+iW0uPk9q2)8naijirsP6Vl zK=p~E7U5jUVRKh*a|aEU6O;z`M#%hf?4TGj6p;)jCq!aAeO;Y#t<^MmG1$Dk+$m<% zxYTq8StCfsCY+(;4=+SaFO})AFMiw*d$@aB5&rUAUb!T6{dlq8{pTP6wW8$>SscE6iN9 zMovkKy2ddW<%B;wCH`}W?zeHyrIrad>iGgLr#5k3x~%G%_4QD;Z0~pBVqf0M3MHq6 zl53Q4(^?bIhzg{Bqu$|8E7yad*PHWAL#l;Xt_@kB6afX%BVeNJJl2`_knBW%0oEfd zibvHi-b_r*w12NT|1~HXQ&RHzgdSh0TK|A?eaVy#*m@m--ndj+gr=xPxQ+b!4!iy-L!1Nm|WS(T8VYMJ5ggM^+ zh!%Z@=o7z4sNyJ9*)-%ACoI(NW%uN>fdpm}$}Z`(4MnM@w*MtnHhtMUig&TGKP*Y= ze6)y){inhjRD!>uOjp*W*IrwaziBtgy5Agi|2H1Htn@;lPFgB2cWvN7kC$OaZqMeT z4jB*J;(0~`a>`%8ZsXth-gXWVEgUKXx5Ihifh#57UN+Ah5((l-BvcjbUOX2@uXA}T z43o-@kmEx}Oe4KqtLks)n00?r@vkpU35DbVEWyFF@rwuKPS{^8@n+yr@W(pXu z2+{Gd<)?hl`7c;m3VW6>aV3>L{ulMP-FLB1JE|tg?+tQx(wLQ-aXKHzuOD8<-yL8x z0*^+~i#sh30uscV<=`Qx-y~NBCvOuDs3BCk?wS2G`6Z`D$NNV#3=^0mu9&}RYfR^a z=^!D41&XBWRdG92hsl{e*}F%B&4>;*m|52tcc;7C$LC{u4zP>5HDI|VhAVbF$LRK? zUREhjSwpe?%YIHRXzE<8I~Va@TG9?w{82Z!^{_!BoFyq2)Hj9-P>(zhqB#CE!fc}21 z*0pL%mkUpBIjT|p+F$WZvGB_sp_ES7UrPFCQq|f`N1~MlyZAKb6Q;DMxhx8!msNaU zSx^4)NG8!5^iWcr|P#A=Avdk&2j4y~ja?F&_Yix|qc901C7Na{jq4*0)%UL}}7QIta zd6xl0>6!37@jH{6wdR0= zhvY@`pDsK0l-?MTTz70oeHeQJA8x2+U}+5iH*`H8Q{faI z)ff}5{`^`@_z;~i#bh$S?fpMGN!0`J*A@puv0?e%4Y3pYm88T6ot_P`#vxg;KHL9# zJUpAHbj&hoXTOQ8SUWpLVtN&Zp92bav5STYC8m{*`{el&WWI6^Gvoy_?8`S0`h74N zDst^~m~H2-52xPIk))13EWs>ia(it`lLW`dC7x)iq+mJmyFi&_(w8{ZSjoOkB}P^3 zzz*FWLj0&RX(mp;JoEa7p)Zt3LXP$eLk{!n7U52qMW4X{bKTqQL!z+`X6|L3y&yP# zbDoF4RHrr-Lm>`7iAK44`nSaNV{Az)#t-ldTn;Ys)R+-;)f2s4Hi00k|OmX2GiQ$ zq~iE8B!_vLv(4OAbSaV}(K)m*Ke$f(E5X#Mp$Qp{zw)0xVR(vC^fozpA3w|BbZO`3 za-Iuzb?bg1!nCx8KLEc`b`k>zvtT;&4c@fQFT;ir3Cq?^Ya0$^SfgQbps~R9(LWC6 zHIvFkabS{mpN0Cr!iA;NR*WtbfbR#`J$?BB`pud#q1ZS%*wN)gzZwkV|C(sJviqx? zBgnLqr4=bOm^B);@Lo^_Zxzxa4BoG5pf?K?N{}e;bJKg$4H_Uq5)13-o8_iB9eg+g zDgo5Erc%<>m4@V%3r0U~xeFnvyy>VQVh|b1tu3c5)z)b7ruk^$X8iiEO#ClD_|hBS zgsI&QhOBEpctd!q!vlj~Ly1#ncxuSfSCPgNr@CKkVf%%duAhOSoU!?MUfa$!7X2r> zV(?}4L9hA^Tk5`$ER=Te6{nnbf|OS>EM@N|IEr|C#AikA$ zpMII~&CGb%5JuRF2{3*pMwGDQhg^HLi;aruXeNFc`P0Jx>K@zP2Giwdi?aSwLSAPO zf{q$^)6Bl!BhnOvkPf*FLAMhZfWZRXzWM%-u9(Mnpea7qZHeuQ6 z=vZzceuSh@=LddLjHI{X%!PM!ruATDLpKF~GB)HAXk%KjrUaeYvw`G~u!qnz#ttn~ z45`+N58+R$>IF+=P#{$Gy2Udn+LDUWb@yV$C}ei$RrTyCWY9T9jU~un;FiFD?#h{Y z-VxZ$TJGb~tP$_jvE^cPIrAyl_}PZEk4);^n5ukI>QvHSSmlk1ggJ0m#tvhp?g4c5%;T0 z$sy-!ix^Di=X3O@pNB;68FfA;zceZI446+duP)-cPb_R5T~`z}<3|ppTW_b4_BU`9 znD20SbeFjXV$++lvOOje1Aq(9|2l2nj{6=kdB{GRZ`_XW%ccZv*WDn-`Dp?o$b%vb z&;C_b-({_zy(u8H*jA7~O8EP7GQQ&9%fW{T)<2I))sJsF9wIOv4)TVj(qJrPiVkcU zcqNWxiaBaG#%x11mSl=4kU7p-JvK5$6V)3c$ay~hkn3|Y#l_@v3+vc)=|qU?jSkr^ zCG~DL{}4|KUQGvU(QEE#TzEaJ9uMo=RJ9vx>RrDSyb=$!8~L)tGmi5{KJr~ZwOFAR zJi7_jw`F9zgfKk2NW2&wvi+9XYDAPF`veV$pGH-!BLcJhmxoBXi(YX|JqjC5%lIy+ zPdsVlQ4)V)GmqJD(C#%PNytH`wXq+-``P&cRd-`(|L(25-7CSEyksGkgW^HJnCLs; z2WN3W+wZHKBGr3>N-aj_ci8wfh`=0CuatYsD`M7%8>}^5o0C^d-P}1``s-&ggbOe~ zT0Tu3CwUxlRK<*E=3cs5oqTUOTz0Uvp;m_4H@Xcg+T$AFQn1V}tLrok&(`gHcISVnEN|X~q3|BGvzTM2MNk#Fgk4(H`<} z5J1mJdCpKg%s6F&egvsgDVR1U(SgV?UPSZdd*#4-I;`PCq4?Ikxmjk(f*0#_t-6^@ zY;r16ZG$5dIDBmMjZACya@fSC>guGNyxUl%#zmSwGVt`*%%O zl^2#}_Ok-Z*rlZX1ARo(~hF>=-;MXyy^lbMRo6diELBT2{)StWEj zGPI}~MgWsvC$zF?N(?izX*c-O>cr_)4Z~x~v`X69xl3iC09GGgi!N5ZrfkMko6!W2 zVr|9JKyuA+cl9TMSgCr|cTJ5(bS-`sk-vt5_PDs3izPdE-IJwE;iDjz;w_xhH*DQM zcji;=WAw$?>@{LO+>@R7D;T~P{%XOlEFWU~Y6)jADiw{BL&pz`uSG|xSM)|Kr_s2P z5+KZ&()}(|eVBze2R~)C^!RKJo!5>h>FPqRzbjc>*N(S}gf`HRk2yqZ#6yK# zwpa}m>1#E!o6n6DY@I`_Fig;;uWj45?|rXr+qP}nwr$(CZQC~I`zM*jOeU#CuPUit zbf>FNo#)Bif1qtJD)B+Su0|5supse}!;r8P-PeZG#OTZjHji#b3$@+Zb@|BQBn7jS zYd9!Z&7%Q?&MR zjz|NCgtclsX69oB)}jJrgS9E5V5@;yyQr$aRVJ0BL^t6Tx>~2D8O1Kiqkqwt9GS^o zK^q-BW2NOpD|tQ|e-tZEzvL_`btKI(wVT|woLqH^JA!Qr(HYlj_Ub1MUn5)A%1xL; zJ^kep3-u-~m5ob(k7an0ef@<=vh_;}F)u*10cLpgV^U>3jo)1^iRRn^b$Zjjz*%!W zzKa=vk=mWLQIHP|BtCAo$vVsY(EQi3>m}WS48UV4RE&kW$7HCh`-g*lPp$_$Dnj(_ zz2Yc~J0ELXL{?!)7i6Zx^rU&s5l&CVb9iQ`C74X^LAr_bjd7XR<7nK<&7Zs37noe5 zXQds)#`-5?huo_F=iLyD4C)De!>Z z4*>my2 z-zsLrv~4k}S86sT+O+WAs(2jtIV$jfsep}Bpz%XI9|W|~nDcm7)CKQIh4d87>cJL3 zP-KwZsT=>28|bXk9CA78Rg>yhey~JNM!nRcAv1awh!mv0jdR~4{Uu>kR0fT}<3hU*KD3hNww8RiPIh189kIRJW8*9p!fM1XoPP_>hVyA9 z(feuVj5(WYVoiCtn7ESilvcn6?Qu+M2;b*?MS-EMgc8emj`&Jx>=R0<4YcpuXW6j6 z8JgiwRoysu-3B_`%YV3@$P|YS$f>UQ+9)!EY_2I}?~~~tZ}|n1nRKlNWEYHE>G15DGXc2w6?w7rEZT20c{gxv8)N}rHkr~lb{_} z*kpSU-gzDW95@@O?LI{0eG`Y6BYsD3jGU;|MB!)N7^n5BRXmR=!y4()UmH5VUm0nT z!u>^htsXN1P<5rsFs?bGw+?3E70)bL#!(CjkqOcx(UKy0thx)_rhNjYV&B2M^)7u!t~>8d8ok z-f5BRTVR_Zr6)117@Omy3ndsSnKYAGrV#g=Zi9|Bqu{uHfsD1F7-v0|P}eX8K7iCw z`hXAbLo5W*ZO&tFf}dEE-hA<&P0U-=@LDl|aK`+B7_Zzg#VOwx*VmK>))X7zkMki_ zQrl8%u(Hf_8*;L{V&`~==+M}d`Q5YOxr(5BiGcU2V?coI!kCZ2m>cDOUGCjs3HGcx zhXULHt?Il|=0LQGws<%}h)A9lyhnNoRb5b%uSeyuRT}UETd;>8QEq8aXyso6tW39U z3?JvZcGQ%(*5)umS%<5;hE&KT#Y2w=oNgH=mr5j;qM~NHZc&5+veJXhTzA#DEr6&D z*Brru12)5Y=ik}kirR%eM+Rg4@Iq_i;xwVL%0a7xb2{f~7YfEncr`n{Jex6l^ykTzo>SWWCX^Is|~)INCG!&}ts+xtrH6o_}hce^gAXO3@aN zctXvU%WfVW&|~rSd0_UT4K4A>p6iIn8L5-phn)5W_y`ca%}?(JGZ-rcZT*QGj6GO7 zk8P#0{z7t@t7V(6>2=ZZem&g!J(_qaKIE&f)yqpW`s)WG^nfLbmFX*b#JU%&24&a} z=fhnUS0?YOsR0MMTwrPqvbZp zHW0}{YTQV#kV>@6*+_?{9 zF+hg2*$0QoOXEl|+S_w~*whAvyM+1&d80v3WPaF`C`vD6W4MRN_qQ$1;XV)Lq78l^ zfeCQpnfUGe(!Nxvkvi=^#et)weQC(>mch}mR;wt+lIDFI%VeG#CW>5U4{+P>r*+6% zlbdqC16SsCWF{qJFay<{5mDy)ove|$J%k?8^ARUf$|@%sT&20mp_lKPWWuAq?o#E} zi?`4UY;wp}8>ZJmmdIvXMQ6~Vx8_Pc0q5IMp_Vv(tpA!=%SDW;L>*s62YwFcXKOB8 zrFN{LHz$RyvhDmI&$$g`&3+Lg%Vs)GEVk+q6y)8=PFfWvzhY zla*HEh?Xquje+}!*4{#hADn1taRS^kY5u^FGI8894`g;*i^}U)p4@YdV$?6r&sH1N zSvRafN284_yuskyU(>7QA8zVXE4A!y@5UwC(=Tw%_?$}X4@6ml7yb6IR^J&BB0hw0 zaW*$k-tM{dBmNx!ao3>#O`Ck%q1vI9J{gwTPDD8w{fV7<5x$Z1rLlrs^@O4^$5AY`vhQ1Gmpq55Vkm z8-7rlK=U^uxcRqqN>EzR=xdunjLaUJZL6Q6PuEqM`{H$8?MvTQsn8$z|NO}-r@E*w z-M#&xlJ5`@0AC=*qlgA2Hxn>&fb(V$&oj7~Hq`iSn0qU=bsmA?x@px}58-q`6A`zY@;JP$z z&t~Yw(`_!hXpW5YxdcCLZqLrRkB7Xw&Y3bD2fE&uzWD^db`|c+uqo7Er+o!g&fZ`| zHWI2hpOazZ;x8c*5)n>Z9#ZqEtMa%r=ON<=K?=jY*zX=95(kb7vS$SMw;jC=G*T60 z#V3*m3e`43bqw;?-gQuJg}Gs4Z@dLA%QXjK4nT}1ngA6OZPPJrfSbW%4!`Jl;bqlN zX`!zfZMXoWf4HRi$WdWw;p|y}o8=irWwB9F*AiPd#O2V8^?K$o(760b_yDZEy)ej; z-N#eLW@K}twwU$GR+=qL!ChT(fYw`GENp~PxKBoCnt7(|gyy^AYR7|8oH za?IwwLcZ8AVGO)<#u$poU=F0jl&W8>)oohUZ3+ow{2(zrmdUk`Tf>i@AldEGY#+m| zQM=JHs!4nM@ige?T6XkqWUi_yP(n2U)>}v zxt8VUTmaFD#!^V0fSZ4EN$*7BFryPDd?R?K=EV1Z#o3I)Q zLRipd{o)(yOK;;p;-rQTanSQd=>OL2j}?Y-r#eVmIZk79RR-Y=L|nbG+@$9^du4i9 z9_>SFGC{T0oPb36al$92jYfbc-}Zs{&VES6NJh$ZLGgZc1rK7Pa(4NFG#S%dl#P5C z)bC;3Mva`k9Rx!1e>jX>U{D3 z$<^cdm?*Ld(9&Bx<WW{05u&jD9l0}29o;@)TXY^OagG^pgo&kOMCTD1O3S7NpH!5g~_GFeH+TR z8}My1YP8paM@4@tswJ=HD6`(%dR}?_$>1AO^Vb(VC^)v--nj76?`Lp9v}thBQ?a0_ z1Ns2I_u&Amm1GqAk%d1c-D&zn7`4j*!4cQ>ae=Pq;16WEeP9V1k*Msq_s_|Bk2%a?r%9t6M3U z=Q!FAuT?#+S=bIt-wEulb>=OedH%>X)H7X$8+9Z;3|-i}@pGzOy}ma6&2jFh;A6^5 z3n+g-YJJ{ID>`vNo-WACFAr0eJuTde9y`28*H*N0CY&G{K_iq3l5aLyGd3!X033<$~86i5`^>y`FvOqF_sDI~BG z{fN##4}Fs)^(bFjF-?t{>rFPIGYZ|0NDYWv7k1Ma-?=j7%1L+Xkw_C?P1L~q9V}I^ z3wJkj?sAWXJc*_Sb?#zs8+(}In@oeKh%MEn&azL@-I8WY<>XGEm?bCv`M_4X`j$z7 zA;lWkB)@~hv8ifYAB#UtJ~voB&pg4Tjgr);;wvUh(gi4+JX6dee+=$WjCg8sLZJz0 z-@liVdgtP4q$o-lUA1Hc_HWmwG-F81s;&~XG~hR$AU^nka08Z2W2=w4quDdPITc&T z^@}+3T9qW_I@KJ3n4z1s=91=}PNB#-NJd&OjbDEU_}|gpFL|_u3N`&eWaS;QO8(+{ zLZ$azR=Iz8ItFV3cm&$r-W6_>$&Ajy)dvq_qM@Ki-#KSYUBfP58^?r>80h?{Zn~RY zMui^az}ek7cb#p<8li)YG`uZ6>J_r-hpsf1QJ%SKWPF?JED&ymmgB4FDpE>%V-$!H z9U3(qIJ8D9kJW^QRl!A6-kK%-uj3BKPNSSo)sD${#lP)FE)XWJ=GL*=3uV;6FeoQH zP*RZs7hP+bPnLf%5>M{FEY|GZ05Ift2O%GmH{BqOj{e1cy0$^&PIZ>x&i7JvU7IjK zLX(WjZlUNPs}&ssV6QPv%xaXx&47ESX0>E;SsRXP`m~(1wqAgYhh>fAHRa5?B^lI~ z4N6%8{moLY*WJg@`ICd#TAsQ?c9uSXRG<_Zh-82FAXWiywGkZ)x*q{Vjggy!z*%zd}QL%*o#J!}^eravH*v*>$56j5x&Pj2E z(uk9FX^>orPc3y|cd`CVRHqk7w}3RWf6myk8{pKWz05j`-OKhSyxfvaa!gb%jN!0m zw2i3D4b;neQ`ViMb~Qj_BqD`%Jj$0!#Kr^>9OrcA6idAeQwevjtl9s9(0bF9W4&99E>$H^Xq<4{_RP^w)YMdR{8 z&_{<~5@%;YTQ1^5p&R$~i*StNUeuCz8jLJDp(0FnH$cVzc75>gDZ;xwUzWARM+{Eo zU^Jag<(gOwoMkU!E*qRvC$)R)ZRPEr^Mm`9(!&nqyw`jBNlgPTLdVLLEofT_R5!zU zTPY4^tPgUMJxbJXd&uJ<$6VmmYc0Sbyzyc)D6CzDg?NJ_f)iHun;gw#|U8iv{-7)d1GSl`GtXP@(p_G757+kbTG>pJOZva{=vB%%GlQQl(?D z+0+%ndJ*^A9VS4Tmx}GWRgAudVVIHW5e(ZeoyZ+XYR~*@fN&ywn$NjHa3bbV&bc7T z&c&gFqgl^Q_!it;iHTrpC7fDJ8qrQ7*6h8kf;kZksZ^but04anXxRpD+iNX2!6j#d zBFtxcxDV!`(UlrLgwM(Wjh!5V>!|@YjD4TGmq8jq^%03m9|_^X(wGRQD zoI{MLnm&!q340n>9$Weq{yUnr@Tm??`0|ETDu4aS|3Cx@uYD1Z$>Z7<1cMcSwn=Oq zRI(U!{QonzXJF8qr-fUBn;z3E^a@9d)Fu2lVSN}zOawx5k+spG@y*dcLZMZD)kRK^ z`(Z2;sejN4`y(6!6s!gd=HLtJ1CneJeO@x z?;Z~5Nc_w<4)GG0NaAT4;w3}!j4JbjhW*&FF z8M=jdn4{)&Q5ESIunVv{_R4!5Hhd;XMF}b4Ge3kPvnyFTZ4n17Kp8~Jg6rZin@!y~ z(n+x}WE8*M!qq_Fs&wKOS|jTgSP`GXd`V!MKt!$UM~rT4L05t-Okt#LRq zRHs5-UBA8HFytO$0$y3K9L6GSsfqh~WK3=R_uUTRhYn`8$>nVTPhq_?SoJ>e~JhnIo2lxJ29lL!tkswt$m zuGQ((wXuD}J}gkj;>c=!zg2?saL4v9Gi9lY)DZ}3ZULud)&0+<3!RMf-xAzyD3Z;$ z>`HHRd$Tw3-j;yzo&aox_?4-{yvj0XZ;}nWhre4>`e|g01hmCe3v=}v?8Q~IBpau;x=^1(KZ-3J%1j5`0o5|y8YGdyw>@=)%8T=fKSmeRPfSQ zF!!yNMb7we#lSv$Oi->)OAx;`UBG&D^sh(&mlm5PZ`@NMpr;%}MP**0MSLDulYAZ7 z@5_j4U6xZ|CH0=PQzqI#f2pXECEI|0nZTD4@*=;Ky19&xy(k4fbV<)jm&a28$U>@!)gzP*TJzT@mOUBD-mm#%^E_PI>QjR!64t(=E)p1zHDNGGnH z*NTPrh>*(lx{T)uhWC)Be|_pgt7nnDvgu2Q=mDxz{|mD|(a?9wXwLZZ47|}VV?7zb zTU&wPd0!C1d4}g?6`TOAcdici5i54;6jqr16V?k;R%NGpg>05I8RUJv$6po)q&+Qp zocs}Y%P|7turvuCC9f8(exejoD7-B;Z-bNuQFk6qw__n1<;{E*r*&SMePK0VZS=%w zy3~&OBYQd+PsROjEC>J-_n>8lR8I$|ql?js&@pt5T#dfw3%F5Q)O9TBl!9dMogsMU z#twKuU#GACGF}FodViDOh0g9~+sx1*X>?aPGv_R=$?MRgq6R|SVHj&O?W&5bJ!7Kh z$EORuPA4U+sErHGSUD-l@J)L8C9v1BZg~nrgoxvtB1S6;t!t~h=s^IiQ4Br3+`+7* zU2Oto7S4ROt?=%5Hl!G}qOUBHvidqZ{ns64JSR8C+_!F7KeA1e5LFF`62$C0X0eA3 zj)Vk=`WAq&&&+Z_NfuBwbHk^wTF|yE5z=u-g*^#~C#n3g zUVq6ti{tF3&tJ~Y<}sfTYr?9ifY%A%HjZ=?2tsGaP>_0~k4T{7H>d2kH^(K8?+Mz> zxjzGw>s_};+=~LYR9~XUu)U0HbQ3s;;s4}bEUkRhny;A0K$afPnw5*l*whqc%jzl@g0#8!EcPaeQj5zZvL z0;gdTno*R>BdG?P1j=0FjSPgyRXRE5<@X#~$e-;~W=~qr8Kr2jlowf~#qH`M_BI@< zFaftV6n(W&ewEMcS~2?=e)Zor$91Yh!>cbxkdW~qrYmsrp;4)2z|sMvU#W7^0UOYpn0@mLr&rt$#FaHb7vmrTUkL32P5 zy2_gHD6IpmlCeve6V}s_#oTj3I(mc+FY6p7ZE{MSMHNINiu#S41cWajZ_{N!3J`pe zg&)I59S_ow@3P^&<5RlZZ}6qIT#q`xbkYP~Myh8zUaQjuh}r=-4iZ8tWcl(~Zvk1O zbMME`XH?^ezh2e;wpK|av5b_=bQx+M))YN^1ZP_E8etg@sU!A805>{~^tQ{Ng)2cH z{3x(7dKi{bkFLkHMY{B&T*%q_C>aLhJ7+!pBGYiKLjlj?pY}!;WYOwsLmfpFTXMlY z6#Xb(CjL`F9Y?o;fhN?DKKbuVx9t$*`4I8*7#_;s^dQ>ziHH{MCyZBaABJ`mf~#^9}lOS;?=f0n>TK z{lAKPd5o8gU$LCE42kYdu885f*?covStP}b<1nuW)+(-z3OT`1cDLf*Ud?|~XZS2| zQYd;wHvGy-{^SxsC#RK-w&ohX;1V=zo3s06@YtxO1~BfeY?3c5cQBI5Xg~ygVja1B zJvkc}hCq)XE5Q;LxEI}r$=+5)>6w-BG~f516{;eP0dGF&a+tJk( z&qupWnl;RwccM;rNVn7*6*(sl9E%K&s+|!6FnRR!@D&tveVATMQ(^VuiX+M{m^bNs z_b3N9&(b{r*6T&-sKHLB2ZnXuLs}woDSL~hX&Y|@N}=5xQZYa906)BQ9pOh=MSh%6 zA~*A4X0wk$W72j1u9!?g?+XNO;>^OGg{z1a42;!6SXow~B@E0B71pr%jZOn`7m&Vh z5F>BSqI%L=dZX^!ZWKMg+jv3A6rxF4nC}4<>g49E^`;Kwju=89mh@Mgi4_k@U**NCg%@Eu6~wdTEN@A{-t)s%GZw#HFP^Iwprp{=D@u*$M&W$7y3}7GRP3HqNy-K1 zVzZ8$+9*a1SYYuz6G#-h>rK6~cVdSGMP3>d!g}}gm zJ$}`?;r(G9gEi(Yf&|Cm%9UQ9zaRIW>WsNT2=bj;EFJZJ2`%M5SP~ak{uLarP3W&o z=r2Ni+GY!2T}@3>+h|Fd4oP!U-BsTrdcYki8!jcO_t8k#8D1F-;Owrj-47nVU8Paw zPThuWkmkw1r4?{G+~_ewlbWj#UflLmQaGuqQZuVBJno>c^%|w;fQ$E@+z{OJ{#yMJ zWlMFJskGQEZHoyNfMZp3M;3oPo2GR5s3srgX4;P<*^!d+-gHgt-ZpY0c8<>Lg<1?L zLIrX}4tOH}HOUtJ*lQih>1dOw16Pf7>X<^}NhaFRO0Q*uX0LNk;)AP=cBYrhe>eHc zD2UZg15t-qrcbESpD^^gzIX?S3}m?J(4ATtGP;uY#-xqcen zqg$`g5@ckXizpGXFx)z}lWeY*r`*Ax1&1nbVIYKk!owr}Urax_PV zTKU9!2dowF3OB9sUl-+6c(OEO!FeSNQwMb8pSo5ypL;?pLPaIb4*6yBf!PzWe`GZD zX4>q+vly2&RfIq{7duBnZwSEBs$kP9qwkE#Mk0q@Lsjv6yQr(BN{U(K&R*|8Vm*%F zOF1^NHe(YS&eR(9#wRJ|7A-amqi+~d31cjK_J+ysdX3LY=~zwwOtt7!tsG$NK*HLuF$U#8cq zGKxGPwG@=rCft6tJ-qf|%}|S9u5NZ_oKa?>UDqxzRxCLGfT}3o46CpMc2YeWG|Yf! zWZG1+n*sp$ZBpPQ9!ftE*Q1NyNmo}1A=g+kSqoZyX~(#Kl<6EkE6kG9APT~)7NV-B z*9-_AbVg`OAyW|>*A56eVhfzu(kSZIjUR2W4r)j3t6@bB4>Y4m01Dn%o?rNsueLPm_xp08r9dTY3*k`h=7tWs?$qKP*is8 za8+<)?g&SRm;!&cv}THMRBA*I3E8j#E6MY5==nPud$tjbLcwR5rn8IiH`$xtX668* zuTIt4tCWxCNhbDmjvZ3ZYe$B87i_XVGQGhZK2{b}LezY0k4&DbNGI(Sn_r{~wY%@W z%)YOBRhWD^&AOb42daD=8#Cu#Med-kePv^e|54SxO5n&NPh=r$z5R7y4 zZGusio{Ls?I!jVMLM=^GEKN73*+re+zk*54b33s-XyTp@&*6mVc86I(GxE&*UZJR# zr}ixSNNi|%zjH$ep`Scwr5v)y(l1ig_fM^$FyuHU6Kd2jAwR=7Wn%ZpFTlbN-snwN zdYM$_om9K|9%qVda`y4plWA@-v^S*{rr&_Geg9Z~L5>U+zGVAcVZZ&5XhM-vV0wLW zTDV&TL!x?8iJ~J5e8uEt_KA(P{E0|b_n9jhguCZ$S&mLpsf>uuNY^eXzelbJ=|~0a zZ9QYAbtAMen(A!AeyXo4;>4y7WWDH}%Vqf-N(tlbw)^)|?SSeklDQPz(E`uGX|{4+ z*nrc~3NxYO4oUYW1FNS+;B^_dK5G*`&GMe^Tw{Gn7p~~%d@29uJz4_BbT@D*iaTik zsESXv6=>X(65y*GA^1i-jOA~CA;a8Z4>$hJ_rFKxU6egImhINsqEECM%NSl?W|>0bS%Ymg zs1P?Aqg`kinJKhVBdie-QyNR(P0DCS;$6lSN3jr5BPZntkKVfP?tYFuYTvZiKCr@-?VYP+O@Ah7Oe!L7f2$;|}UQKpKA2ZIp(bDj)ws=Lf z3!6bFz7%HjQQK57pDb9o@yfEWwMS;-kL>FmomijtW*^yH5@7~upbdHk|Hav6dBJgm?aq>c?{$u*LVxQ<`=(Vrn=vy+glr=_8 zE!O$9DKu*`k2i|nvHF$r8n5!~e&iGjf6_!V%X|4vJg0)!RK1~t9BVS+ltbg@*p+QR zswUa6L|C-{Y=4tA0`Cpn0+b>!*EH&txxrSs4x{(;!e|mIH^>>9-(Fzw=IuQDkdxy+ zU%p6Jnd{0$qCe`pY0+&aWt;e2eQ(n&CwLEzrO=st$gV}UY1VVwVXlK|O7hn1Z7}c6 z_Bts$6Ve(uNF&h-4qJ#(i05{MO;+OutP6WXYzjCU z1gTp3MY(m>Y(ARIfDSHEf-Mn9w2lP%!mxWmSpqe{9yuKKn9!yK5;8}F@d)#mn$i>) zHFmt$g%%bO=eZK`Vrv}L=Z1=!;8$>erF|DL{v;_!R1}i2m6Cgm;%kuRH?|9)SjlP{ zk&R~-c!b$;dktb%#*}?kWvYy-W(kvW@oS=bj;`%cvfQYfgtet>d&5C@YHt6=3B3e~ zLnHG1R121EF~fBDdIBiXS|p@sUd0yeQ-Xu8&-SstX&ZPC7fAZj(YQauMfA% zGhf)+3XwslLHdcGuAkSZY`ON9M&=?k`7+q372*FFSv(%Yc)Wg3oqTI`*d##d*rhE0 z*p2d{d*9m_IfU|rKNjK12x5_N|LY1GB_;Dl?8@{eSQ4*yvU*GI6&yRU0GrMo~NHxwwN zH#vlKrs^|~kF*{0uN+m=0$EdG(OZF#`8TypJJ72hag2E#!@kqAuh(C#ndhzjFppg) zk}#K|D@{ri&q)*yH2V%BLZitWL+XY-80bu5ZV0!d(y{*jDS5`eNKn=RH12{HR?;S{lqk%$v1cLtf{zA zZvh6&Zx;={-0IyUE6FD)h{W86BiGJ&AK7a{GHmZq8JxDl{0d~7gU&T4=(dNoLN2aP zMV(sHE8s;c2Bd}H!m$!f2&Pko140DDphV%#lO}S0#)KK)6WL4nuI2=MA-!-paSFW` zqr1MG#;g6u4RaNPsdGzIz*Zf)*h7>jwa%)&qG z)xyLhi5~p|?K}H*qV++?byzP~D^y-+y_D74S4v4OhZ^0R!Uu6_ZmGcwOEnwdqfYMU zoo4>Fnie|E+To=G<80eR$~`susStov`R~A*&QNM19yQ9l^8(WHD&hv&B)!4xjrcU< z=595l$u&DUt?WlhhlS0%Ip3c*$_JdB_xf^;*rD?&queQ(o22Lz6F=S>3pdpqB+N}1 z${+EWf4`K9Iqi$ETq!xms|Yg!zPhJ0-1DhhWuiCvXhx=VF?j-q zF_TBKCJQ_E=3IIrCn$p(&(AMA9R^F&KMDJ`n=Wr66SZQ>?DAB^V1?iBue%tL?RJ{Z z?x^y%hT`wRCMEi?ntH%5y^1BexjyJ#)6c(@r`gNYHF9F_xI!Ol&P3Lb)bfI%B}KEf zhJ4Va<}$NTT5xV=M7b(YVI}O2ITGA$l)jG{jp1*fB=8%ULpxGre4sB(E+7T5#gra7 z9HoHE-is#iZ^s@OA(@-9ki?k*{nS%x<4t1=FL=LNgNq!!PNaeSaJo%=X?;f}slSLy zUXZ!emXKRR+OpEp-qvN%)*N9wTpG@!k_kRO%9S-lannMC_ip~Jk|6`*Gaq4oYVQV{ zA^m6iCp}n$VFep%#7cD7c{rFJ$@#Ld3*Mz|fjY!fU<+=K+u!@CvPn+)S54_yFRGogBr^vXpGx^ z(ers2HI%cQvKR^qq~%~Vby|%fI1zj zYVPaJ8N(+hm$YFgND?Srhg65u_xX?O**-Nyjo2+J{>p){uB$EYZd&Z8bzsKut`DEb zokFo|R%EWEq>rkJWxK$~IJ}UR4?)Y)rFg(CH|4+mkH2sp%12jx)cdBSxomvoo2e$} zZ>n-c>z0faSJtSlBeZ$?Q2dEfPCF|{tw8>6rnW(?a4f!``0bJPcLf!@(IyWmdV7BO zTR_eh5e2nS%dVLAO1&lV`C{?wC^_&9W*od-m*xrhfM3XBG(2=!{^ATMn)z}?YH-`( zwKJrePD$3FuQqp7Jx_y|VVmXCaJ*M8ca=Sw#L>}fS}|v}U*IHm`i}$t4{?BT-9$;}t*oI~YdxgHkg}`ywmC!Cjvy>dW@aOEp0%^Knv~8K*;T;V zOWhb(8c@hQbeMB-ejaRS?dhq>yh1cH0qq!7P?R&Ct{D457?T0nbO6U4em6{|9&5Egf?P$T(t%RylC2v`G0@|chOy6y;*0v_c6r1>Ptfq@9HA^BL! zVdVK_%YmEmz>b1+5C@p%P;){~=76L99O(c``dHoIP5n6P{!aVc?Etm`EcV#O{#^T1 z?O=lfAmKo^0MOk2gRwv1?116yv|~bwzKYL(P8Mj0B3h$BkuY?vtXY`Ka2tawdwo( z^xUfq2w@NFz(&=1L~ICdge>}ZWEbLod;7YL;n%-TSzUkF&g6f7ArJT=2Yhbl8h=wF ze|b=6ew5D6e?b2?;cR(*>!R(yM^Ng2F6aLr!kLM!yrZ479i4%_y-nNz)F1cL4R8fO4HRYh zeisB#aE)aFZ82~MW$j-&?@!u+KEwkkQYpzA`n9d)Wrqoep*^%4 zu%f2SA`=IP0~zS_rXvo+?N8e?BnfnB$a!-yM-CbfC}Pzwt~?Qe*cd1v82x*t6}Z6> z4c%by6u?v>DA9%u4;ZYWn2v~QA?VR0ID}zv;-(bCQSR3b)X8)GKSrjQLj>XSV&c%l zhleTL5a)u1(!eVKGQE?vxX%&!=V)~qRr^!#IRLDR`BC?wz6#_T-g`4kVnm9A?HI>^ z&K~Jat)l!GH8t7;b_5W30ha+odUad)p93fk~zc&}d#r6&0jq!b%R(CBsSti6mK*`tc|vL$)vUr-PuR*pVt!Vc?Ua{~04z zz=VdOYG?`;e{vf8f+j)A%bT}mV1QV_BEqJ%mLka$PU8}nA(dkXO_XD003KmN8Dmrj zeF{PaS3AE`U=AJ2hEBk6n_x?h*l&XzEgmQXk-&@=Z8Ks7Z(zU#U2MrG7vu-XnC&0f zP>}eD2usO>K@l~Kt8;8Bs82zaCae%L$-c9Dg3*u`kW{9i+7>l~6q86vDkdqZ&5Jsa z!gc5kocYce->ylYE+&`v!mx7>g$CM$7Rw4-O;Rwpjv2Xu;avxh=J$idn^Dz@N)iRR zcOulj_$^DbH9Z3MV7*EfTR2)lS;kVakFE|v>jGe@)M@FE|j}H)R z)r2Uz7i5xDC5Z>1)Mtt<2Av1;W8Sa3DX#|oZej4F-LHGG`{h(zbl$gv`*umeShg!R zix)60$7o4;`5mxHJb*tY!}Kv?j|g4R^4L_1q>%fPw4awv2#i(8W;yyBagfKGR3?mJ zj7*aL4LMShj!(#rT}h%N%>c?YdMPqG=-0hhOvD^T;B+@X-;%GQ%uSc$K{MW97S4Ky>hI+?z<5ND0;*4oRjWp@+5;#67yu?5-xW)TTMan&C*Vi% z->-i|Mkv9*o@CMi4X>0Qo7%PF$f$h{()j_;A$nQ>DSQd)i0voJLOk&SXliU&L9lX40y?+iANtRhs<@sIL_WG*#H2pk?+n~$D5lDaWg#P_RtLiaz2b6@B+|8KqQ#j;A{8` zf3u6OHEe*mGP|$W5uR!wbl2hbs~l1bQB}VAXg)yr0y}xWPX)`HNXHnTiNc2*O_lx_ zO6NoLrfXOl)`W0P=P{ckLWm3?#B(C7Cj?~+BaO)XL}?<#?Iobm9hcq@6M--c*%zXR z0xk=MurKX5J#4os=t#9LO}D@tLG5|~@s2%d3yL$rkQzK`pxww8FAXMd1sMyuGkPct zw|mO@%lgpv1(6#(^^P)l(i;vRAe$P4CMkrN)f|8Jivo!M-N}HBwPi$T4o4jUb-tdt z2Mt-0rQvS%WJ=$zs3n>=uc+lvuwW@HwT-t?v$4!*_IO%NJWO3>W9oU1Oe`SWVKn>N znYf*!_1iIr$RDDF`1_}YHDbX}cz`O*r^-C|e%;)2Tj6fa=^cQcWC>PiXAhySJ0L}=xD z4^U?*;salH;l$Twkk-BxozHo@PjM>BTVv$YS*4BWSy?$pbQ5z~tzb8U8>dIp(Mobm zd+@C3YZPB}S^N>Kr*i$;8sBz@w+TORP=gTLP@XHO0!@` zv*$%!WM$oZ+nvJLHurYNyMMrso6YOWxj;TJK`tCL9_e62|Cmv(0xQ#@(&MK;k+2h0 zMx9J%)?w{L@ee<~q4vwhNNRp%+i>8%^$1&$h%R#_4g9yT^G62H$PBCZWGxGCkSxpR z@oIFcHB?E@aK2ECiQIZ8rBGQ77}wA{@tUew92oj0?Afa!G|ONKqD{&jSWhjA`; zRfc3+Q-@UYSwezk`D~?8a7RVMNhgneVlApI?6VwqgTuaX*J5tm6Q4|zMJwn2bB=?3 z7r=5E9lgm7G{!Bfxr_Q@e6YYHBfQ7r@9Oj{XF4rs8VC98f3bB=L4rlwvMt-TZQHhO z+qP}nwr$(hWmlJNIP(ubV#KXJ;Xe6XE7r z>F(!jykEHo-EMz9;p6jOHk>vr+fGphzX$sacCo#Nhk<*Eu{)yOt^8O#%3E$ew0?is z&{3v*n!Va;;+8f+PK7FeDAxTq^-r*Tp7-xn$B{z6_Bi8fIbm06;AC>GSZJ`6n!-A&GhgD)!-#qs;KG_*at&c`V2lqI&-QX5x z_$4oYd-p-ev*4qwY+|%boX#F6y`YqDZSvd=AG7X*lGBGCzFY81x+hO^Zu{QBmuytr zEDIhX5AC;xJGM?S%QVM}zFhpXS$ihBLz&&$X?TBeGtO?2dYdE{|2{v>ca!Zl*9Fs( z{ROXQb$(2ATNeh(O$_oCU+jZQ|AO6YFZweT1swy{r2Ms|?>P?-Az}Q@_ZXq<%iR|e za{fpyE}ZS(Or_S)Hx9>{^XV(Gj!^Pax9IIPkX8mcP=~&GoukZ+gdF!LRI|SWzglblIcngvP#M^l9@H zon1>duyi+8_jJqG{8#EvxF`iShptUuU>LlQ+PyB%xB3|dQNclcE?%0dnCy_36aRJx zoFxB*M3u;|>-8)*Hy^FQhHZ9lDGrB~KGLsp^RjpPSYHpa+4(nLY?tlz7{|>&!lka8 zQ0lNRoo9n?(c7k?U(aPWrrUWCEE{Y6*2Iqyrn8THh{Z|3CQdX3UeOgzZSL5D9%Z@4 zkNAh`Q&(fUR=9*v<65T1EkDBH?Q^!-xW#3@@@@GI2k|U+U@LLoZ5+$aUL0cM?fjKA z*DXScsj70eL6><#d83!WrRVn8=C3up%gvhv+hNr!$~GnpC=wyg*M&PyoS{x`6&weau168w!=*51a;S~Y9SOAN2C zyOIji%Bp|mj~1bZS?(=3{0@E&FR|P4#QdcP{3lYuyY$r>3KKhzAy(>i47B>I4Qh7c zVYPy14T5L0N50H?Q?T2-j1mh!t#&`nXNXG{y`Cm#InLcPmzSY~-M+6oPJMi8Exw|E zIzxPqOgXjnU|UygIHH}C+jl(@K;wvg=HMID!9ts2& zG#~inCGB>qhytI)cQ{D&NVSr^o+Gyi#=!TC#gc}sY?OMKKk>y^ZRix^&if~u~n zWGQ9yrBfe^=;6g>>el>5e_a>n5`vN*{b}2Is&fy42dz-FS7Ua0m$Fb#wlAXHn^r&P z>a-BOBA))(?YsJY=N??EEBD5;(ei7qtU3em7iy;|s5Frk>%;ROurw4qd~F2tn=9D) zPYQV)T<4PH-D!-K_llEXQc?bG$8tR7*DNE~ui-e~=6N0IE8ulcRp&cd#WpNxU<>~Jzo??$PzmL_`Mwn(kpX7Y|JMCM1GMh`oQ<{>Ne$D+jQfX@l z=1&V;YxxtSuYSzW;YCH=9h2EM!9FEz7(=l5<=SYiX!iM!gtJ=Ar5ui0M+<^KXEI^A z1KTY3$D56hP$JEnKkFpP{63G%8`AeB=N ztrJ}rublfIXEaJb438tVu`Q~MQ_f-G?Sa@qGH@;;0Umb2G#&6>Rx z&z<*sf`PW!gh8VJCd*H^rlI}@?Xey9V(~4q3+T(<``q_s%+~cWu?vRlTrOTJBHsC9 z2w;z2t5#}Wx5oa@uK`}+lN;UfVKKz@zS#Xv{Bln2 za;~0upr>=iUw^pM+cgN2oG~yw)J=CbpCC6z?6 zXU7`EhfgTMnk~0XwIpvt??Gc5hkyNGwfu23l=G1Nq4#y;Zp)=+Z`XGp`LT`4o6C(a z?THB?vgWmXf8UG=Pma1SU+W_0SA==?vdVQk%k(uL$fP4rR;3?Tx2mmCDdExXFI&cA_VF#n3vikH|Lj4tpXQlxOH%uRnl9$EVSxeEzY%<*7R?T+eikWFl6^c%MK%cuaCKY8f5ZkUKura^Q#63h>M zcRO_KERYQC+g}qnGh$XrY$AfaC=Qcw4uQ%jVgZ4h8Hhnl7C~tgmO-30finWuD11T` z7lC{j(?I|zLC}N*DJYc4I^kmico;<^vYj9r!QF&$FTj&nI>9vZ`RgYKP5_h?g3+hB z_k&#S{|@#TeHG;MYxxfU-rjd0fiD1L4Oi0K?T1~1;0}SREOlb;f(xbA9oAp%M>(ZoZBuOQU#iCe} zq7u=fJO1JA&zGOQd0+ngPrUq755M^b-@H?Aztb5`YxWLo0)z+dwe`gu%k9`Q2#_W4 zK!FOuMI5$t+hMrEXl4x^FN|Dbu~P2)!1piCJ}FCm6pJR$h|)3D|5 z&_oJ5j&NN1u|rYNMb35qXb96L;7$v%8vf|nXMGri=wm008U{r?_CG2)<3=FEtfs-k zz?^}DI$Y$d`O`1(Mh!rmkw%0rf$+FO?iw}Cd5F`Zj0eg!9N~E2<4cKNN`x-ypc;Y5 zdLA?Z&}c@{6h(tqXCmtdaKVm3AaICoBqHXJ1-R=nj$FxjqUMgFX{<14VS{LY-qi6G zXy_;G2BB%)K)@kcF;tkMaEFYcIv`A?!xuY$`fCi0Kx2pyjP?vsgEe^K294mOVUUK$ zBMep;B!Ct%67uCqHwC!?_z0mw1C1T|Dp+8EB*YLAI09mUOc(@Epac*Q2FzfF(2w(? z1`ZNFMq&eesDLC%myX?MfPKCxID81vhrV=~PUcP2iQw-fL$L+H5ZvFdGV;R#D-H|{$_zy@iJ6Z&$;vF6VQG5P|r1}wI5to<-MWi7S=qofi)bRrD zzd~c*ebU2r{G^7K;{m)OL&MUP;sL%9m-Bl1O|v9rVkxZ(01@aAeSS!6WsVkixVAygz`b45Bi2tSEv!A2WRNO!V%an zOmzSetnuQhIUnXtsx-k-#YG@4sFYBsL<3hDH1u&e=K_GFL(fThFUWyV11gROQFU1a z0iX<$Y zpDHiVsSJP#Ane%OsHh%>jW{n>O(>wkSJ41BuDBNz?I@zrQPf4Ry|+hA{V6UIW7Tpm zEV?lo#cB$-2J4Y%Z4k7cRwPtyK@$8 zs8E)E`A48eKDu}ibOnT@elGx%0mAE}^6ENM1wyI-LYiQJ%=#4^snHTX-_ z(Svv2fVQ6)1%XDf7zEd{Kms2z2CiOGP=x*&(FPqR9`spI^qfEt32y~jWladg+rr?I zf+hrA9Qv=?aadjt1`rXqAaua8@cH`LQR$CG73_96jjC=i6oz8(L0H5ghB{wGZqSfI ztce2#&>&m_sWR)IN{#@kDB;1kJB$w>g;RSg>^ni-!G$m%2U4CVCXTF{Xf`bzEni2A z-d~JO38+H)iUPPj)M^pPGuBIzqr?J6e3C&7sJpT9J3(Jbm4Bn)2HW4q{l{;YeJcRG zQVr@YyTcs?hZSYCfQpC=!)Gz`Nr3rGG0f-0XZc`tW<_e*4;};30YYjik(z+Mk)-C6 zKqMI`TM(IRHqxI=6ZMXj@x9tEPyP$98sw+OPXF9qTV zOichE=pWC!V^)9(anGiL4RnZzLaRwOObh@G5LLO0LAf{-!iAki(hvdZPi`>qj~s-& zmNrcM9Ic~hfqpvfUtjsjr!z`#SP+g!&{jRur~U&PPD=wqxQnHs62gUwW?I;Xg$7z^ zN7(}HFk`5QbWt{h5hxdEn(3g&MB`Cd2OeG1!0&qC4Mb2wNjrl&Lq_=r6r(^P9c2~$ zjOY?mXHX|B$PXzh7#Ii$2pH&t_>ku0#EQ?C>Kn1r3X{Iu^(FlIFL?5smDW&u)Al8V z$OQvlo*OUsy7D@F(AcrlzW)eJ833ma2?*fGXcHP54a|_n2#2fIreWFG>y-_kE zA{$(d!n(Lt1USh3VNg3WST<@TfQ1$1R|`UM94z0haoh*BoKWPVk84$ zD2NlVq#;ZlZ1QYT^3WNL`XD#uB!9%XL0E#&Sz#a#S^9_x$oDk*G~^HS-l6}bc|%ZU z55h-2#?dbzu}}gH+VqKI(0L-nb-!=`H|h6tTrZSgdz`>JSSaIuZ6DV#Y9PZ#hJudL z)6lRpavP`faIY47=XNW-67~)qXs!33S8hR4A*gpT+$7C%=PMe1NxqghCV@C|g9sK% z;F_k|dC6O-+{Ur{)q8dG)9hY8m^niKBU3Fg+Zu1apJ4(wviDByp-X!;_^{5$SnRTz zL*e-CnIDIn?+t=srMcO4`CGbNpQe=}n(CF$58doE9ojiU>h`3XwgR1PQ2H`aVC&XK z^flP+Gb#IMi`N8uD}^=>#1yj1HN`vQ&!_`(FSz-#NYlnfukNJy1^5}#%DXy~XH^co z+RN!1*yv{_2s|E7{w%xzF@AoR=sMKDm)(C}WiE9>4i4T1d*E)H1E8g^nx&T`YK}yE zpeAvcI5D=ItNd+^T5fx5jlF8ATDH=2KFR;)RVMZILE>XzIWNs^KNzqb8W&eD#hc++ zRXyHMZ`kHaYce~flF!s`4{f4o-38~QR~_1rH!G7q>+4**T*hI@m`SESo(TNfsL}en zC#&IC*V?@XyT3Y%<7e&Ol$~?Nu$7F1qiN<>+Ay(ut}(LSHSBTAf5z4Z&Yj;obhfiu z5T{xSmp&#{G~BtuI{qMWipN#>o0C&|`P5cxvbSTt;xxZz^eq2Oq+?FAUZ@==^zdjp8At-M3SVPl$?|;ig<*8Po1CMXO{20Gq4SKqg9dHaITZQI;I^>^Ny3b`h5 zev-LgKIg8Ji`(1srhd#l_%hh#;8@V*X4hpZxW2@eDpjE>ogCa=*4A263eb*Lr3Jmx zBvm=5rBpaAUMAfq_ZH}Gsq1frpU=WxvQ=GoYj1_Wl9bgpJO;68tv@xbzPNSjMYwbq z=&AcQ8L9O9w49z*RAb+&)q48YUREr|K3Tiji7&@*9pQjO?bIcovge48qpIDxc6eD=3jJDzY&JFl}9Cot)JQLa(=hI zE&CwY?YOo|E+$SNEJ5BCH)n6t`D0Ay52s0y-$0}3B(Y=NvD|D@Lqc&AXU%x-vDH$T znJ?b>EFwqar7WNQxP(lLrjy?!eL5?Xc8;>!uI*Z5W?c?!p7s3G@L7lVJ(5DZ*#0%0 zl~rn9`5v2DL#{fPO0%q0E~OR}FHIUfvTMoxaqT91&qeeT|L=sT16VS#m^E_LcD@ry z?b%w6Yn2k4Z=BYgv(=1B96zFXBUVC1mcZAu&&?Vy-})x0s)OjjWS(NJB)S#-q_)UY z=PDjb^>!{3_vmb<67x)^^GuOlutvSC6}mU7lEip+$uRAbs<|nZcrTl~%g5GDH`=~C zCR9wYh zKc_?&vf`9KcA0!bV5HvcrfQvBL_oD__2}iaNXdL+hv#_#``OKIvR9T>J`4wd57L5V z8DDG2yh@Kq{f}(@k}?r0j3_>3RZn?0KP9<0XuQt0trnMwbD3GUeBtK5+6GLj z=8Vu3=BshjeK)%vbWV1@)!hFi^`Pdr!HszOHN->XC$@a|fp4^nciP8`q+HugCARFG z%JH6OZ)URCE#Ri^Axj1;W%eW=a%dN;NjNY zZZ7Q`n3*xz*-lY#J5o6YqfeE@I2*)WSzhs5@oX?wHT<^loKD|tPYR)K27Fd}FWdiR zGncNvj$J};BbSpn(1_?LN>Zh0k`LUFe$o1;(G427}xUd8JgHM;ETmghHC?iG8o zKtij;yb0$%I()Ut?p>+n_*E0Mj$pxv&t*HKgi}tT)U1oD@ZOz) zh`MF44U&dZ6v(-FqoU8Qv|&Q@tQTXNmkpXKFFCF|Ix-%mBBsEHYt8ok5}C6zUOWysoO8P%ihY^Wpyhh zD8+A=dg#ZTyPI}b!2+yr3%`0}5B=B{Ba27peOU5!*V`S;+)nlMt$Z6^?rpa9HA63k zN$Uo?Pcb<~a9^~T4c%8XXZ&e9mLuG{?x^v!p0$p|B&O0zCm++ zZhCR`<6*X<3*__aK6TZ5vFg^oOV{1+$JSmTsjpPF&X=BuU#GtNWg$JF+d9rz?hPhj z4#`|iicc#Nt5{{s5*{_N0#|Rc3-l}=1yQ@&;V>i7FZtl&+b0o^wPlL$coB3x}b6W24r>=PX52MOY-(cQa6#wzMqW8zh zAHsK5_}w=ZkkrFo>3dmK$=Fg7RLBhmX;kUYX_nL<-yC;$T`ZehGm&W>9u7dfc6J7= zW)`t#QfX+)wW#;KuWk|UY**e}cuh;6L-qb@9sbtxqStd+x?`zdC1ID0<%?3x$!^)c zWc-(WbF`7;Nq>;*jd+=1%=I}V0 zOdU-tEDvRt<$mcwf@|O9^2WhY=hH)9>9BbMa8#|?c0pj#%f>oRMmkzD!&)+1&)pbc zx^98|zS-&5xwq0uYCba5b1i8DFngmg(|Zy!A7K|yEIv`SEc!C&Exbru84ijdQn$8uZFo6hXY@1 zuW5z9IS)~(+iI=lFc6lf%P|)p;1<=krz2v!P8~YSeU@w1gXP&t_xf0m#J&>$zM4n_ zzWgnGGr~QtNf$q~0dxMIi>QyX$W({1NyYI|SMlxx^j|p&u}F&5Je@bQ?ZxOWkJ5XV ztlfAfBcIbLL`|7&1xD!^{=w~W12SkL|Y?Ap59*Nvy{ z^(jY{xOsbtk^A~GdRcXvz7vctTiY!Srf;;NO>qrhCQ=3DCueKhX_@13U^b;$57#+i zvsC<1z570CE=;}&b?}VaIZ>N?Z1082cDloNnfs#ZN!Vp^g9v-}7Ru>mPtDY*Ct-nLUsbQNdexvUNA-QL;+vgwJ zm8}WE>dc{_MPEtnZq@AcHi3Hwy=x-ia-m z-G6x;>bHvJ+gw;sY?HbAb)PZMN^5Ud+nVvR?_1aTZ6<8@^CcI9wJUUCf)PK3f6Fu6D zpBexBpa$5#n@Pjvt@#1wP(Qr$ZVNjylp+Ds1W;3O6#=#>6o-I(0&^3fQ&2B~{RrAN z5U4gaR)rSgF8-0!=D(sbFUTj{2si)$-2dAS6|*$8G5KFV z)RRZ$7K{Hcj2XgkghUpTDRtPDqVY(@2+CBFei|lBGi&tOsrr=GhTjwurRBkz5v?eN zHW9IOXbO`>Dx=mLYN@x_c2~alE&gj?{$tMTC*S<5@9wGRuJha{r<@(P41fS**uF*o zY~H0MD1ZP9Nt6=}Tk^C^k&=bUy8vG5*p48i(`i$wr3zd+F}7SJR2kC*6ABw`03wm8 z1;uEYgtG<0orF*sQ!5P;H-0u05zICYQ+Dv~8eRD6<>W@M0I4SFzJv|tPnoN7s25V8P(G=O52 zhbc=Q#Myo$0X}gw@EyVSCQb_@xFZM$09ID81`rPLVI&0$3*_|pq>(}eMhY|1$o{`QzwGvd0|KDnp#cZAJPmJ}2(~AXL>6lK7Tyo=vY#N%euEqO zb#(cWv;9Q{8V(9H7@X1Fchv$Cn&eOuw58Wh)C<2HB zg58%5K0J+hA*qr>i6cZh6yoV5hyZHwM(F& z0{4KFso(%Gg)!=Yx{4kcLZ))TL4*rP`UyzFK!xBKUc@{k@K0u3(o5X}M8J_FAo;hY zr>;r~6GA~5YtkZidh`brLO`FO(wt&*?<4bbA@;VwAt-tIlOv5$R!K8mvwzwiQOwk?*_r0XK?0vUY-o^8 z3tIoRjk8qRT7*lr#$#LdBHM(wLaf0mXjF>o@X|=hSGm~gG)+>qzU15>_udKhUGBba zV2wY`!CvUM6+*X!ePqiw~ zFL8+tb$7XC`QkqNXeL-fdgtksBUK}{23BCPGbbXiMKPeh%DGXbtntR$H;!}}$A4bP zRgIS(7uftd^@y`Z@m@1C=;hen_&r=_h&PDI=KTDlgUB29nSp+bcTSi0{l14DIXJkq z9%G38G%u^jG_69$+V3wFJ2o zl>fTve5U!$>~U{@zlMf#+L(a|vu)$xr`(wmQ`o?zPC|eSP!n(GgiRg_LB)jtkpnxK zNDo2F9dj*Yz(hGhgbF74ti`@c@GYAdGm&xxi2ub}t_b9} z#c^90`g;DI_n{(=7$a6j^Qrmd_X&|Cn|8?HaYG=*VR*C0E0Bow&r=p#utaI2WC(%k z<$`M@0a!2;%cHu>Jm7H=GW9jFG_AhqWf>>6UvcKxika_TMm&NMCO|=bIFG z)#p|0n<6(nE8w^t`s=&m)+Y|{N3%-7yWEp|_9v=;3-u~F6)Brb6%C7c3x~wRYp32c z)~)XHdF>PPIQYQI?z^v|%B_Xbk4=mNydPH6SvK$U(5hifK3_Hr5oA9IM& z{54i?Ws|2(0a?wL+(l2RC_2uY8=_A9_j$FO#7#KuwL11>F{l!j{5IHnCfkNmIwntz zCBj)9Lj|V3v)}(^iAnZ(`2AXK5ABx!iLK;&c38^21=s09*J4j|FoVK~m))>w#|E@W z#!A};a2ixnnhK&#OMv)7?wlV~62TVd+iTdMx!SY4ZPHY~4k z1Z>aEw`UF(F~zmQ+0&yQJ8RVutlZN(&AP80=*^hzk9V>8N@Xly8+Sf$huLcLDqVZc z$0&j~+f6U}ZB&5Q#u~l7AffOlGI>lKce1<%qPEFI+qgV|w=^ZIkZI`g~@qggT%93$>@q_WZzJ6pS~%7gv!*klIf9x+Qx`3-|7aw35??x)@3CdQO6|ALO^ny>+*^t$tkJvQz2s6}ptm+SpHHVD>zf@x*2Ec6_=Bw) z#wq6!>jq^aWYu`jrjkUwCcL#lcU(--M?zlh1uioaut#GDuXOLk-&rR(eV2~;RlIl} zh6i?J%a-)a@AV?r_ft{DNOHXR(3sUOES8*Z51vy5ujG~7%{^#g>!llCr()>1$lGe4 zR=0cVE;#nDoXQpFa@~aq20M>Xamu`MY5z#Bg-RMK)0KXyZ$IPdk=W1DKCF6V7;02E z*5>zc4!%L4nu5irb8uk$dIR?rowRDPRZZStvSn6@@x+|3QdCUa4yIQ&9TPsvKq(7o z9qrY_G@aX;y%McD@y?1flLeF2*bb9MrRM#`I9aYtbK90E)NS`F^YGk$r>~Itfpawq8>CEL)g{MY;&? zEuvwe>}LY?Y_H?x>~Ss26k3T`Sl1SEOC-g!cb-^*A_f*w}43-(=pSs|59R6d!$wg^WDh%gii8#Z1jlC(CTT>Icn% zn1vL<2lj&1a6Yd}X!Pt~PqY-fI<@^ryT;MLCwvmo=DWOF+Psg9bxK*dsKkkS8DZVA z)byGb)%tVP^;+nzMXsSbP@4A~1;xMS-T_exZ<5+JR>Rhwy&~M+CYj390woRkqh2ZV z?U3Gcn=gI+3|*C88pThpbx@8qJt+*iU+iSD2pQRLH17t>x1w867hzXbN>c1(nNRP# zPuw1%tLzadvTGR;W%m43i1_HT_Gk2n&?3vIx}>*2)>22JE2J@eyR!X#h>ER?vF>a; zq_<+kUv8>%g%1$?JLEk45Q)}O5k;22NvE86MfELq_%E^U0UB?_Gj{2(L>pBr3$#Vjd|uxIFHW(4uP~L%VK$Um z?Ue@9T~1+yCNT{i4)M{psDuxJp6UN^mZXvOIad7RljLiyBD11-TvRSC{26IY$yT*1 z$watC2LFRY52;TxPsFs^Ju|TCCpCMH^ya7Rt|!!eHM19v`sYIB*j!}L3lH%v4V@)8 zv^OfUiZ>q5TMZu$+Io9iihdPGA(5WdQRkCSQ|h`k>Et4QQmJdFiIOW(j%X>A#nb|t z(i2OV!{nnu>`TorqUsrK>yd^xqV!eoz~uMRD|DzlL<3{b|NMQa9@)q@^vNlkoLqdq z=H%Ik6=xjmg4#Z}IC~tI$NORxFMBStCLGmY=6dqn%F_T>_g;m)M#jWV2eBD3BpH$jYNj$Bvxn}12T~cHi!X{;2|B8 z0YD|W4idSnH^~N#Bm{v1G5}mOl(tFPDEn^@cAZUL2p1cM!ujs0NtGlYYKI8B@yXBMkzCDf{jZ{W{bRtSBu}LSf z2ve^(_2#rm_aF4(RHMajboS_?9+ilLpCV(=>e8TGnqPNTdbO_A zp*fd=>XQ(Ot1`%|RZlwYh7CZ6D(&bsR4+e2xHKwMzus>w;gAt-Xtzj1KTq@e6s$f&R=dsCnLkL8^83cBpk4NQ0M_HjZ#ZF6aB%9&qey+BN|Qi6WBJq4>OJdq zD#aJN)uptbvc9rrQqSeKo|Z%1ZdjvTeK^i+2S9?{TBBLFiBBW8#;Wrn(WF2t{cbnDebeXANibIQPckm@wuU-j+{+GfSmf?)?&3Z+)J zSF7?}>3RDd|Zgcjy-aX@%w?JF>Y#GpO-cCj*+|YH`Zxx`zuCrgb zRf6TXu&F!e9#n7gwn{ZB-0JW2i!DrdfA0TQyVa&?H$cDhHDdCBL3v_8fL<2W8ZK&> z`L|r&_1z4ssZ<+PWaaA}3F=X7yytx!TfKKp@651fP^LU}dS*|~>I$Z~A2$|l*CwHi z$}f@JzXJ5J=V9`e$LB8B@|p2r zu%HH?--pnJ5=S5SoiLB_Cs5PaVm%}ce`TdaSWng6hN7MY8CpuG-+su(BIaTq z4HlRMI54$)voLShTQi#x*@clwM${w-N~=!*EFXu@#n|sFEBmp0aAJPuX!xR`t)i4+ z$Aln@5X+6$YeqIyG6yLREy>u^B+ey_WecUTBHv;ylL3V7x}W5zlyyfFoe>>kvl8;x<5yky*?d-nqi;z++|tI500NIy>5O)@d?p+%D8+ zZANCmW(~$JTi1BblDBK0EXn6l!m@Pb67W{OKFF}?f|3Z3 zH*k%90ay>(?!*^vNH|L}mP-m)UG77C5ccMSxpsUD2>!#&R|~oeJLmXj4qQ@psHb7t)0VV{b1a+ZoDlaTHlx6HD>g zlbnp7ZhfF%K$Q`{^U?RZ06 zdBg7!UC41LfKN@`Xh>tFFF~6Q^r72@Ts~H;>P%co;xYBlV~;*Ow@99uH!&66&4MI@ zeOtUs#Km`}Y4+=Qeabx=jWny9@vzvc#ST6x88})Zu@{S|rI7ICiYxRmi z{#DokU)FJgRWhy=o*43pJ5|6D2NMtYjt1us9lu0df{w!!%k2`xY;X)b%c(nq>tYc! zPpBXMX-1Rc4Vni#nwfWKchq_WU_jzYdpLrJ5V4$@#ydIEKrR?-y;H@k|F3>t(m(8l z`-wsT{!V~5VYKmTp@pbYTkFVNg82x?YsOwFSKi7;sat;$oE3=Cj*)-hoK0lc(FC_@ zrGhJp0iU!+bOT8}Z3Q$yo!2x;!A*R;MBykn3t2}tD=SvT;Y^ZXYjwyU{p*XNv^-Df zS>g2kK+vl(@VfhJDHt)fm$=tISX)$J#iZp$oY9^qm4aE*TIKk^zVw2YT8C zCEH~t;XFf_o}ed=pa%}N+E`>orbS|kL~=Quzz4CgaW&SQy@H@AY8llo2wS% z@AxQVu!PohI}rzpQ+E1YQ=~9^xbJ$QYQsGT6AUd&<(XG;IjgH<0^UjnXXPhDjW8GN znLY3rSY{bwSb!rAroWAfEb++F$Pn~hiEA|aTS(n`59xyE23Oo0*k`qYf9u*;sf;`U zK7#`gFuC{&asvP0vAn>K2>QD+TrTLRq=v7T3NP>rbIv!+`urJ8x#vuwbGsKtH0e%Q z`u)s=2cKk^C&ESLXS_(UC22Ar8Z;*h{iaNg6ecch*W{zQI{yXC-YUN^-0zqSkHI*xPLg`gkJ7VWJ+mVh8W6DBd#sl{ zcXei`Sjau>+V6aVA89=OEOrO^4jZ{H@x+sa`zJGLV$~}O$Z|#$=St7{;06044Jr$L z`CER?uz^gZ_3pmZpy%!Rfdj7z-_*#1JOc?%2sJE--Uz&K?fhN(ejSX z2|BI_-{i=Hf&?4}gzw~#2X9$g@Izj1|A~l}-9hGW+wQ)0nGtmE5x)G$gNg(gw$%k! zas}7WPvS?I90h%8PKJh-ZXuy$XYh+9?4v47fn4~u7ZwE4M@`@5v34;AW2+B~tXbIM zzL(_^iq2TZ#ntN-@`$Ck!`Xh_lYX(CKP$@yG_nIQxJmT>?gP7G>^f#S|Hadejw7zF zuOA5DzdSO~Eg@6WM^5fg!pRsynd({ zKlXeVug0|)vpE-QO>?g#1qv4d>7yoM*g*_jF$4MOpar^Z6W=HA7Xw)}(Q+kjAnP0U z*+dKEw~QV@bRn;Z$ zI^*9U<&dj2az5)duj1Je{hC?!{z%_Zp|NJ3J!pe3$UM2T{*}+mwKZ&CnA-LK;i%;Q zdsOYp|E_bPv^P8zJQxL0!y~<#`9q8LnGvcMU>+4b6}FDE{XAf==q%DJ&PN*2H|nJT z{M5Bx-;Y$dSn#t68{37B#eeCdl$)*V&job(_kuN(j!9p)Y)u5#hXSY&anpbKW$@H~ zR7VG7VULxX=-1-y)%M`2GeH^T8U7kS>ZeirsLi*GqdkiQchp8icTWB&(l4T7Iyio@ zzy}+4D%?VWPaya~mW6yzz}X3UcG5Ld54@Q#@Q1#L4!KX1R;4nw$~&bxjh+0qn9~z} zcJiN+-NcI+4oq?M-JP}Uh+og~jNkW|z5WrGb)Pfp9rV772;gaEC zuYW0oy`K;Hrd+i2*01@Q|Hye{ z!wBa_LNP9xOr6VeVs@c2b-E~|lqHc!$7&%$l4UAYghfl7REamZ|D0S&3G^f>baKTm zpWD1%^UYk&UuUnrU(Y_zJa@C+OWj+o{ynd~-nFb)gpt`047CrU3N3V*Ge4KQ9B>G# zcEo5Hw(Ot+b_QX@IN7iklQA0)HVv&PLx<8TFcU~nhgtrEyWe`p2qJqn&_r`40x$u9 z$CC00leER7Ne3D*UI8pmoBlz4SHIxAasSFG z*kNdBgiu9mlRMPEtzR3$QE$$ z)1`yO92U+Jp%rNb)a5yzJZPMiODR~sh(YuHfbn_+#yhq7@?N`$-jw1MSt-^yOW*^@{1kf1q`9Z3`T3$Re=?3`x?H1fEy}e9LK&)kKfb0UDvphW|>KaIB<|J>{R@-q=eZcNHHe{bw>a zEQJ+1Cjm~K*eTPw1v+KHPMKn1%K?@A6zNem>IwW+R6`4_CARsb^5RFT0y*YIav(s8 zD}y!I*@}R94q*U(bd$4Mjz}ttBo##_4gLIHVeB0h6cR%Cs5KR+z zbTcQsgJr+=2quw;J_%wC*un-RVhOZ@3<2Ky@ICN90S54xb7MAqNH%=mutB^=Ai_%! zP7EN+qYxlSAo-5B*a5Hf`~>ULVW1ha>Or&Z{elhX;sZpI#OvXN8kAxQ)M5ife|L*9 zfY6S?K|UuP=*)l-Z7TeO4f-(#87x7-89=H>AmF4BCiZvPfo_}l2_}e#!5OhL42WOZ zAs$8`j!F@6h7dw1i1u{{%c?GjVB!d`8z9CZ5QG6o6vPR1ZOS6VXqG}np2Y`>B-L>z zv5}Xn4ZU=!HxZe9FbdC-4u~UqupC%*9+(7hsSOP))??_Pgi*s4)8HP3*%Io4&AQNoDfn5DR2z?0-EuigJ~i?TGN#D5)vj76CFfG3v(3ur(B#5-O-y?z2(keQNH)aqTGKx0m#6{d`8 zR4{8uSc$-B$c2=)D)%NwemzV6_>$%R6S<5Mfzzwp!jsRwhesSGTU z-H7*0kLc+Z6J6)zwtush;vB7jv5fB)h2On-cb#;d?E>u*BsVU?8~7OfYN+ak&KlT!P-7u-6s0L1i~wKMzec!JbF( zGoPUMB4Hn~y_ow#+#cny7?ru}(eo17qwBW#`Yc=~;n+F24-;HQZKmTg3D40qT#x2% z3NBBvTNi@f2TS~1{cwyYNa9a#lLq)+gzJm(ePX>Y7*xVK1=suF^949AvAs90_rdpx z^)9&H1LrQ*&&Bm<4rB;=XWZ{xJTGKi?}Xc<>oCFI5!a)?as<5tu1C*Ro}jnG{iA2E zK=40@^!=O_#rDoYe1K2x42d+}V14ds@AkE=#wwl~OA7_15oZ4LsU2Wbyj(*9PB-Bns0Y^+l4F3aN7F z>e7p)d5-zNZ+6Td<#O^s`(WTCQ>`zm?oU3tot-znYHZQ;-jJ$?WfuLDw%_LuyL-xF za%0P8y(E8y;gu~f$|`oWQqBad>Z_P^xzfLN$DLE7cC@ZOYra3?EZL@oJICB(uQBOj zyRpMOm%MYmXP)lm73sM8ewZ6v-Fx4{fK;Se%Beh_-5PXSbIj2@_k+&v3vu^9Kz;Wv zH~d+Tr3QER%9!9{Ud7PG;=ssnz7`64Q!{Q|Wy)Xhy{WOf*m!tDgO!(6UqY(eb0z;7 ziyCX*cDt2puy<(2Y#N*B)|LF}sh^FO%pbi4+`-NZ-M`AY>9%U84i1tVMmo%iopvbP zTTyVnK2p$F)P1K`&>cDHy-A5)>XGhJ_;qu$<;5PKD+78{e5<|KEn^xH1*-d2<@tU& z@ga4!+vOQ?Yr1S5UWCaOZgCH_8hqeDW*Q_>Yzk-o`mm+Pve2w&duHvn#cP+^TramQ z@ey{+c(ra|VEW}jP0e&~hv16V>W33`qOD|=R@FSZe~#X~_U)xTiXn#TPojqVe3H8h&y$b7bLJw1iS=X%fU2-}z>0@3|GH)q+)p=%U2{XGN zYHJ?elr=cK1pZd1S~gH}QP5T;==V#8ZkgL6&J(ZPsfqZGLq9I{E3+ zWXt=h$C5X=A=QU7*35K1;KDt9t;sNNncIzWrk+d7VV|WD>W#m!0v6DB9p#U+7kmk( zb3drZJ5RVC<-2sIA>~*~ho-9=l_B_;BkE>y0C*i-&9H9b}G4Dm7S-cW1ZP@6=-Q7z+hBSTE1t z3E99sDZ}^mM!by3?b*~U^#~c)1(A*u%;geN`(3zRj|?o+B9x+#e~Z?J)3c z472VFvHi*J7K}b1|inhYD^xc@FD+Cap&n}mW=7298^7O zuFLhyvBP@@HD@oK{&A3No1{=!VBc6g?WSy{jLM$)LvudldG~u=f4%+C==9%|Y3f&5 zjmD?!N6)F8Zy2d#QMJp8bo^t&F17G;o)?uuA0;s^2P@~C8Ytv&3d!zm+8atdTy1{w zQ2sD3-6`S-PjhELW;N$ZrTwainiI#lQ-m|FE?L2yH~w3=$(HwD9EF>-248O^$;45v z9>`f*Hu3z(vcVA>Y>&FVU{iJ+tiGSpWN)M#H;R$mnco(1$>pP!-R00Qd)o5~Bg#HY zo#CEihH06`k33+ey>*QKx}MRc&rSM_o9&_vogDUlDxhsCtSAbwJJ;Lxr9bQI!U3&< zGl5IA)5<108}r7g86IyANa>86=)S7g||?bP`&lwNpHXmW!Rsg!+f zO|a`S?Gb*>`U-X$_R6fbB0aZZ3knkVRuq(Ev!bu<_IYE&vq{ce%?n(7Y!^S@ale}5 zyBQbscf}|484di#E)KJ~>!`4bKjK=wnajhXP5DJ>b#AKZYP=-ar!TH*@nD7yR6Vw&oNa&W+{|+h6@^?Fm=pczqZV}Zm^iu81#%-70GBh^n9vhY= zvq;-pmRz9IAfYy|ZrzYB-N#O=bPU~LfpPqk#suerD;=&tB@9}Ai zlW2^ZzOH=U@e7j%zMa|>VJ-NoR`BhD`MC||NtbDj>+N*Xp4Dauws0=h?Tm0S3xtDe z$3$`(O?_&;Ql3uxm?alj)|52I^g(z{Vt$B*%Qw=-+AmozJzovvhi^I4(Y143=g^Q! zE@?1uP^b26oYH(9ZT-i&&gV1U-zXlop{u*EQSnwsZ1)ry7gc6cQ$m3339jYXX3t-L zUvRI|^9eh$^Nr=YOP2LVUFUvOc{Jl9T$QX@&QVM#9e9yjT<0(MJMT9$jnRzl-G>Hs z6PDMQJzauU~XZO)ELOLkt#n;JKRQZryn zdFlPZtfZqZ|)@t z)ngvDG|ZgawQ=f-4~&;l&w2YwUlq%y9A<>hw6lK9 z>y2Doe&gNp>l2n{RS6$%b8(nf*u;Bw!RK=P3M%!9A8DU;^F7+xl`pq;hwZ<*Z~QcG zp+UO4kr;Z092gpgP(o=Cq`Rd%q(QnxVrT?KLQ-Jp5T3u^|Go7-y)W;s zd+yz5?|sg?>wdZy003YB{xhEZ4fOxU=yKlPo_}}tQ25^!%@N%efPwIG{WozX1Vl3E zf1Hl&{yx)iOo|cOLF?qCpyq1-SL6NHkMWQH8N$xf3+CqP48RcM<@=X$bNBvBc>QB} zVhg~rwS)RNSixNF-TqP0V9o$hkS)X;0&;+PE5O}c?LZE8uDYIX-fkc(s1FQo3$nGd zhxov~L2wxKe>E>poByeo`2W*d;qOU7 z?*AYaJ6B#iPq-5Rpa^w<0RZv^p}GJx2?4*H=D^q1hC|I)W4K~(L(oDo@#uQ3(XrpM zJi&TfDTzZyY+3^V9WjT~xm0w(w>7*OzK=(^cvBtJBDxFJJO5GA_)VCvB!IGhg77Ddnc+kxe%E znHAk6ozCbsBp<@%o?KH2s}$#-y^=M;``&Q%snRG*6WzK z__;BpX?lUgO>2nQL;Dlf;33E_EB7$xsJ?ta0v+{o`jfFU@L&&NJ8+2rf4x|Vb><_t z>YKQ0%8AdpnUChZ%%uYo$Cj}fzEY;5W}e@42FB4!d`A3Sk}vUmqtMY(i-2O(MLzEF z>^mWOoJJOPs`Fnh>P}_bJuIw>%$2Qb*VfcjWt&LU)S&ZPQ@8rCnN${e!Xc1Oe%&(rXHKQRWOJP;%k`yoLyxP{5GIV`;&rc| z5^`0$YE|$5#58IU$}^cvI^D?=JLXz>gROx8g_6(Da&o1Kd-Q(EQFNHRu8g|((B^(F z!?awvQmN{zGog7(UD+t(r#0shiwy2RYfe(1gT)Tz#uzqS7jr^nyMzoz7f$3|b)3N5 z(w_@CT{HvC*k25nh}Lb=u&0&CV5EXIko55KI;Kg@V>DAD`^d0t*0yqLGZ`;U+I`tq zM8fxseSOyrBtV@Uutg+xtSR`VvXQ-0cp<2wIz~vC2bLq`l7+JVppyIKt(oZO!cx|j ze!r#8aK)I_g4(ph{=X<`wV*KXFM8_squM>GC>r%qA4Yr(p8wf0dS4@wz>tJ55L|`N z;^`w-sZ={s1 zO{FyW;bWztLEL^Qpj}cSj;@u)Gw=sn0&mW01sZsJfV~dUsi!MxcxI>fg9-3KuJaIk zscg_dm-p#8x;y2kiM)_N^-;`i{Q?O<`hUbQ?*d+n^Skp5<=_Hd!MuK}^!~!9dqM~I zZ^X6kdKm)kzm@2u!|EuDC*Fr%>WGWsg7dbrm{w8hi+i>ZNj zW9Q3M-KbYe0s1bpw%^CVf0$-bR+}|<#!i0rSU!LSRcDNXZJ-)jsuX6l~`N*Ma z%T`796T1~wvWtlSq!GnVw)w5HauglN3f0S662~%Ii&OhW%=_M8W1-_{QAbW{vgvYe zZg4f1WHZ-8VIx?iG#JNuFTUmnN06ayEiz5Mzqm6QnPaTZI)8enL+ z%~T0NSF;K~e>A?GjFQYyGgS++_k73AU^W&IUEZWyK%K35hF+${X7c#%l-n5 zDB_2yWz){5N7haQ@f5_b`R_$}wc0@D{(xFrN*O;Odr)z1!%8Qq%o;bY;0(}nJX6W| zs}~pduTsj-jVL=&f!Pw z_?w;?_=UbaEpJlhq8)zRF+q+iD=TzQxw?cy9MfZu{OfZK>SIbwjZx%1(7@Eo9%xtX zB9jA|sFh`~xotKcY{hBeD`tp7yF}H_sm6R?CvEkYoIuVTI!|M&v*cFl9S(B>yz+!8!=kK$q-?;Z4;VK z2UyB8chrY#t`W4qSv{oMYd#Aj62O%K_Dbx>C--XTDYJX|@xU(?_H`~ih zB+>cfdao!)=47WU2*B%V!sd&nkmh|40+qca_ z$c;>)mUMQT*U=Xv!^Gu`^7aI15PtEID zHQirgQZ7NEH5Z8%?FA_VcLLM}&yOd1A)t2M7?le<+3N8R>c>~r`LpL&vUOM0d17$I zSkKy5mY-82g*=qy9BZ?6w~Z*n=487K#ft2;+RaKlFYGa}t~w3dD5ZDbyk8{?&e+={ zOSc|Aw1fv~V_7>~$| zHa!<=$#jfL7L@l55lN*X#wEXu4R1IZl$<0DW`QJmtA?dkb{H3qcu!+U?}25kD2Hwe z?$10klv>b)E*y?jCkdP~hpZf<@`##>KZZsV-Qxj?4iT%(kzX6BQHaTeR$K*4ZC%gH zXFMcJXEOZb{7M%JxAUf+L>GrlHfs3f|D!`>Obqr{mMaj1z;03%MZ!Ok#f@ zuc^wjfAa`xm@{*eHGwRncT>&JcYTcDQ>djLlIoUYV{)s9(m~S8Pl7{pE3?k20nRe{ z7ns%y7hq1S&XNOF(N+967kN`3JJOhs>`Cya+Ou=3B^cRtmsar4@F!BNMcbBxpy~;w z;WumeIFs=vo#PXW^)k@@|2u`Bvwx!iJk~2CdFRN)>Z^dO3Le zC%VRB@IYs5n$;(7m~0GRFR8KL9-(o~6@90Rie#aG{bMfUc9+tG_B8{8J*FOyjDfJe z#rqykXz}VJS@ATR5GBzi71N=x;*v8Nq>i`WQY44(zWY!ph2!{X_O#L(*Ur<@^4EP@ z9Da%q4)k0LgUb#Pn}Nz=>(4gYM6cOtK3p}(iIWz{@;`e>jv2YL?ob%n41_9|wkd|s z<0Q|kJ4>#Q?60ggwg zO4H&{bltE(@^n>ohU4{JX|8=%Ik=S4Z#~ZJ2>dX8^t!|KJ8seH)vGn8BJ*U{QZ_k~ zC8f`G6mL2j zY;hZA$B9VLKm;oYOoU9x=8vRrm^27kH!zkAE5I9Va9Bhvj+7AY}H##+2GGqt*Ig&IA zO6M}$FVnOi1vMW9a~~YYZ}Y)>!I=|tPtQBbhLiTb{udeHAaC-|_4Oy=so@|2j6SKB zmxNXn+;5`6*ZK|{8o0Ptrr>J! ztciE`nj-mzQPq28dxJa^IGMbKLd;cu0XZWjvgYF*2Ik5{%QQlyu9@q;&!rd|E9=~L z7*_EoHFM(_LoofJq;0j`%8Y9XyD|iEN_2FwZzRcY#!cE9^wZK$`NT0fIP)p;-`KoC z9c?Bb^Gn~1UptC$ap^d`jLJrbF5$d~aMcr-y+teG7JbT8yRRYH*rjOpNB4S9=>$3P zqbxl)-x6)IJUyTCf~XUoMO~1T;%$(_CFenba>}#cCyv0z9*78obcR6+J$&w))yIR0 zh6(MN`yz?nT|Mo?wK+9$g6QDFuS|-6XQ!H`*V8jXWEA>?5ZHIi-+B4hvZ<$Dg(; zpvqtM%9z(y&+5}GqsE<{gm+^MMys*lN=dS?U1qr1Cj(&Bi2K_$K{lrwKOYjE-3Wj) z|DjPqx3og<+kMU!?vU`qGgbvh$!CoZ!+!Fa(!5=RB6%2cWG$yO?1-;Tn-yOa3j-2_ z*urz=xZ(8}b^)!S*7&0)ZArojL%w3^Eki%`pqkI*%ymaz`C^8egl+!-D%+|1>IJ7E+R)mpJ&8Cf(S9%+u$A15W(y-=1?l7oZ+mb#@T*FImCbF0&KA8=J zrS%dADx)1moP@@0M|yLZ78{C5D5;W~5$UkdcIBX5lni6@fN>=1CfOoO>gy<67a(t8 z&xv@)O4Qm?k>CFOq5OU7lBOatf@FE^zZ92ae~6mU_xxyOMD+SkV}HvU$hn>5B@Dup z=~;w3w1$qpR6hCY*Z^(1TvLjI0hikW!*&}`j1;)TMgzOh5$jINXj&|$K3&)7oZj)K zaw;>x?W!y%@{v&^CneUD1<*9)+(65-Z0{-hRp zDD?^J&-5zTWsI~xmJIDaJ8!2h`Hj_SVpi=4^aC#waT4Agv3-tA=Cx^SaIAR#14}Z5 zxf(;PUnGP%1ubl|d6&ZzphAHm#`FUaUyuI-YZVZGLeWcf4v6Q&bXQD3quG%7#|a+^ z)r&WH?-@`>Q>lF8l0Kol6W`7~lD*S7*XYK}CDroP4x{Teuf|098JNQCDUY5-oWHxO zuf4<1v6D=u)X5X9sT|uVi^A%c&MS2xfful_y+! z;Hxu)z5Xg1n3UfSnXHj|t-R8<8hgV+`WvI>NdrJ&{h+ zl6{TW=$*n5@~|XHU7|)?D7UY{C1lto0n`BTMNYF!<4|vgb=K)=a;(DeO^5?|DJw@B zW)aBKxyHf(P_y-AxH;o5_i9_M@3fPqMiH2mARi$MW=e|-Si-mEwln|5XoR^hJ-+6 zu9mJg0yZH17JnlIOH{beU^h{`UkKQHs7M?9ClMF^ib`C*OhkJYVZ7HS@wPe1_C==Y z0)6Kf)e@o5ExtQqYD$r+S1KA` zaX^f%68K<;2F&ky@?lxA7g*93eMrh{?1$}SA-4--%88g#Ep5%WJ_y8XmGFyxvAU)x zlFP!c)+*670H!UJPOOMCVBW04@pvvUCRJX1;Fcto&0>TnM90QKy#c0UlcUfnV=eb* zU4ElD=U1a_G?zSCMS4pdDU-rmVMaBgM5cFRKrCnF+Z3F2Gaa&a7Dn#dp4 zmjgV(vMVn-@}_AP>JsJdot+3p&k^Jct6;hSiHYe|u-rK!P07t+mF=xV=sLacjs((ef~E z)NO_EMoZSVjt->CJCtDV6uH&P$I?RvNSbg|fHnlLgOMJKVu3@7C~o7|0yj;=tp_)ej?eR=#-J=&)7+9Awwa;g*_7Irg9 zxn=Z%;!h5}0_p?*&VB)>aJxC`w0Qiqcxv_oCm!ad2)$){m2I5&<78;M?Mcep>N2l} z>tREZnq2l7M%+=bA@0(7R|PwXx8n%n)T6v|c=}s`K(92~WLg$B2}%CtXtKq z)c6U14HtK*PYHgiF>!fUlHzu1UU`>3=J+|;2ZW}j5){R$qZ#yq>vtzz%w26^+cBoz zH(#EZ&XtIAqiM;5!Mc$9cGTHX(NcjKMMa#rXhP&4C(2aU%!pdiEchgk zdQFk^y-5KjjyHCIE{po^sQQpi&(iaO=irVm?ILiX@iYBk<7c;q>I0XAuDp<~3l^5T ztFWyL0o~HcaW375kSE&&l5+kSMr-(Vm7RUMYxr`nd_$FdL|0_}neoS|)pXZ)vB#%F7;jDC+Z%HwRTT}qx5bRBshb^^lm-^%J2E( z#_8`0QRHybR=L1t=rp)YgC^lu^4>#rGk2{DF?D>cb#O zQY)l;ZKtqx6|Z}ZT+yu+e2(bEPijRbbmfL^9pxo-S-9#j%~Seyg${4h3eg=ioccwQ zeem_$Jk_SAJ0^wb2dxeY1j!79+-K4z_(EjY$p8ty$dIm8f`lvUfsT=Z`rrI`2YCz; zJ|Bkae>bC{EYTCLl0v!`NfNHqW%tvQvoT)NV~^fRqO}tpxO|LU7oiGRrBHOE<_TD} z#n@t_O2}4~bwxedV#8J~7RN}q`rA7nbL$Ta!*MG*D#%S%+8SdE13jTpu{}SIQ_${zw&8K)DJ zV}ioihX6YDpf3pa8~%gBt&!2c#0~9#hz8lnBzoq*PVy~Xl+A*|*rVKS+2e_H%6-p2 zwuynHWlOqeO$4~%gIXgOViNdq$W3>_tnb#+&p(R?%Ea{blU!4rkUXd)<@3d($q;R+ zqDX>9Lh=W@B=>?@Zq!24fuS^NL9-vy%T5Xx%Osz7OWV-|1agl4O%5Y1A4%wqA9Xy; zrT&O??2+cDiMDV^O4V3YX7KhMZ<<+Z{CRrB6O1NO`#CKu*6|@JwMZohn|EA?peIal z?VRh1Dk|vd?-G&2pgg8Cz35`(4oj|I6^YB&paP(az$PaLo{R$Yn$ivLF>CO|o~A=2 zc6vz3B1(J0wWWP>lEJvH{`x&u0F-8sy<=b>LX~kG!OO&3ALlU^&9{0OW%92j zdFspnSEsb8rLX~0U=NyEsrU^(^&HXuuOKiRjq=D}Y?cT}H>3;70 ztfX&lTSC#Q2alM-)8wB&H3Q&YjJnCu24?egT=ST7xwv1NP4kQ`yKUey3T0v=3?6v8 zzG>)Y?(rYo^JGs&68S|O)Aa>^xze*NF3SO#uB-SbzMr&UrJy&5r>B4%!*U3*a|0T-wyY(_O8{O?KNBwJ?C_DU3U$MmN+`#AeR(^j2ZKoGB z176bz^7@f}`g44OE|v>K{WqS0&Hce(bGfbHsjqWmk94Cicp{z;xrDNj^rVYku>X0a z!yEe${XNuJzm|W_q1()5Z`FwZKua)`u5kUs3JyQPX`PJlq_QJZu|aZ*nTOq}rrBLn zTzF>-f~`5iWk& zk@#+ca6dCb>UI0p4dVvTH1GsP$en$s z6TO~wn{^6Sw8V2%qYo7BG9-?- zcbrMj#8;OFFA6K26m5S6hQ6JcJ$WugNz8z@((mpzJ!=+7&~IAk~w!~qW-NzWvLQ%!0}m2xI+He?6JGT47OrI4P)Ks}FQ?IBH*jUi2VDTH5p z4i|=g1t%S?qs^aMx5K6xg8zn7QikOcO>YRhkr6-eX<{MfO4Tok2jNQs#; ze>nPG8cwPFH8m4fCgt84eXfp>R~!43Q1}ohM0Xpkt)+Y03(P^rQn}8SVss_A1_Fyn+`#&_eH2ks#*4mvJKP(T8mW?-aMLx(?4TCT8O1#%AKuRREfr zN&pR=Q-bI#{R3w5(&Fw8VA}n3;=3*C!%VN=^VFAn+eM<$9(@bmGMz!#ZcBLK*}>vj zk*`u)`fl_7`r9^U2Io!ngi3Ha@8{7E$)x%1@fW=Hii-{*JR#W*9#|fh;XzOlRpg0X zL|HScq(xV&Ajp8mC?~wok`V3+d327;e@UhukxT zrOG|S4HXa`q!xsk7BDwK}ad&{7l|lm!n*tJ6}>`Y(7dtmjhDif3Ax;;xtT(L56;lahF>wL z=hK6Wc*Y6DnO-$@R}T)S=oZPEXvvG$V+7u_Mg$7G5^LLxVp4+11B=ha>_ z`C5Tm#Fv%XV@Acs>ycyS-U4)MD%lR2PdrBQ(6|q)0WK*1MeGc+F{2VDm@0?nv*g0XpXZ1WL^5P z^|s1ov1v5F7;Dmh%vINvzhHv9O-3I^-20B$NqEj|p1z7NUMF9hFBnwx&inW&mFARN zvHB_*gGwk`j_Z_li2f>)wnN$lApHdMcgZf))gzj#HHwLW?3=FndZ9)EFZ_~DoT>y+ zt&{XqenKk|A?t2lUAxp`OOE|LI*uzuu@o<+Xd95lAa6Be&6ui0?by*rjw?*e(YCZM zUOIplD0}WKex=2bnFL2=PO*eOdxWeVHy>N^54-Ju9tKyiwZL>(dZSyf(zLa5C z2)&2u<){%@+!0u9(kA9ekU-K1EMi*@XTT2`nw&|8Ll({h?FDh;u9#EZ1VPe5Ad6@N7L?Fl zerPWvw3mh(x3`g6J+SwVA87zaX-5^lq|Ufo-UguxdlJj|8;iIpJm#RF;*1-sU z^zLb{MuR>snXlrRSF9b_Z#JXDnuo9k72sREwwfdQAn|xHQD9-NZx9pt?dBn*eXrqvy73kEJQ5~(m<{wEzbus1qf5ZP@Ll{3UN`;OT4Z)=rWeABU4sBYR z#t!LH8gmFqg%0lrqE{X#+)%7fWPxH(v;+h%^Dke-$a2BK7sKga z!2J-60Z1fij4J%SFM1#tkuXA9s?{0p-PQ|5A;GJaR!+J;dHy1 z5j{qgLzo5%5l9t?Iw@T%dYD-g3jQKnHt-RVX^yfo*f%awg| z|5}qVcRO%L$5B~w4rl0eJOwpQl_yTM{fmh`lFN6}I8_z8)Q49sv#2}oDTay|<5VU7 z5mua?Fz^32p8hpH($S?RNOR#J?!3o}3pc03%MTRqL*1c&9Ty%aO=F32iEj)ytfA%p zdUrBBdZf#^R|sC{Vo{?1XBTtgZrpiE%+V*S*Ec#`LG z>MUHK!0ITRg)@RxZ5)&lOHW3Niv}IyA;%@(_;{u^f2)v5jM*$X?VSRISbiDRb#x#3H>@JW4gl=f^gQ_KzKb{og4XQ zYW-96OmZkbuBjg-uqh~Bkey7$s9Sj&Q_-l>yl@;-(HrI-&#Q$0DBFE1x?89Aunf6tZ*-@nbkD_55?xy5P zVxnDZyJ^wdU>z2e=1G3VJ}jt^@k=`47=F8ANO;{K=Oa(6@bI9GFp&U#GntU3qWFhT zg5e>ZhM>JCY#VcHWX_=$hs?l|%)q<5c^Vb=4nSs*z+Lqx5K@FQkjxKdSAmnR|Huf@ z==gu>;osbdG;N~7davgXoPh#XvRGyd@nuZdFF~@{#%`crKm2<6 z#RyeG`*LANIAEnr7JCtLL54?Wuw-t+WX_?w3RM$(ont)y?pg@LGm>oNSQSx=@R)6J zwf2~Qn-l5nJV<(GriUU^eYR#M@<&Y=|5u7~?b(`o@Y;egQ3=H>DH-clA#Mj?N%Z`- zno+Y>QsPGooS#XInKjNS;H;7UHNcb(%DS*6 zZHShnz5%rLy3RF#zH!!4YCoA&<#c+y%BWsx&9!Vu65Wk?pFAYg2GJ@}bHcB5Lg|*F z&MILX0$KLUWV>(?X}2xQwfd;=O8ps>pSls;+)wVd;>_()i|+dF>Vqjo0J#hF!2 z*UE^Y#LAkN=Y1#k5E)jGJ47wvO>dm^`#b}E!mRDxy5nq@(p%9i)fLN&(tCZu>gwsc zAR~|XAxECb-Ocb~XMTVhqmG8#)?e#4$zO0ewmu{rS>tar*G5j2U)ndVysj0-=&%d| z>NZ%q$dy5-l4Tr?tkU3r~a_s*!JmZR6(xmjpp1&CgecsK43 zcR{E5sfFI>L?N{|V3`xV-I9KxkGJque>I zJg}e`d$)|>nu z2Sa)>#a~U7XRP<^iIH=`QN)w>NDd1`p=e=^)ZO)9UWbJa*2!zS}jI^`S@jtYKQJ zVaI~QIWyc5sunh*#j6&Eo?3T5LqHZSpx_03ID3C~B;bkk;Ee+!*!0F(|Jn=+PJJ+| z?xr+^&t|KCaH*H5h8J?C)$u-DAa9X{c6kepTg!81!y^y0KPJABh)H*N2Q8;em^@3h z-6JM$5Cp*a&kw;uGNh!^k)8RI*DcL-x8h@?UL6bI|DNOu(d1hf<^4HtEY7@FI$GQ7 zvF;|X3m4Tg!PxAK4v1kHjfBFg#(*k24&PL+5x8J(kwBEV-A;jp=qhPkEBR6($AI-5 z)nHk<2~B!OJS~qvxB902U7%2Fs7a?dt!YRPRt0JPxu_cfX3|~e@cn$0mdn1CRrZ+= z49zJh`m;a2RkkL1IUzZ~oP}PNw1$vD<)<`A{revugjEH_2_k^GoWy=4X~fZV^4%wm z*8p?ax%>sWw=g-n@%4L(Y}^@(_iaS279Ks5S7w*o z#b3RY@3D%Gv}RlIgF^OoA@stoNAS}VVpA5OTZita3MIuZ)-NZit>q6Rt*sj?DoAQF z>g!O<^B@=#m1vuLv+Hjxf0`9D^~&q_f$-sxR2vFJg$ZE#DSe8oj`KTL&t^S2sOT$(qA76z%M@9N)nh?$3Hi{x-nFSjkn=x#WzUX;bG*G+~}di8Ge zeL#AF`L;!$_5y|V&9tIiW(9tSU$?%;0^v76p}Y>#h}WxRQ=(oy%&5y zB`TmYh%|Ssb#7DPvyS#|)jEfe_U3?q<*YyQ$wdJ-G2?>Lw^_78&yOvvHP4G)g71is z#scf8gvJ8=NrCf@cU^%ujf_A*v#Ls35AwaSNjJqeFXTJfpjY@ga>g+B7IvIQcd`-Sa@FL_;v) z1#o7n=0W_>{0i_2W#WTx%$~V?g=GoZsavwiCp~LZrVhXkqZm1@xd}>^E4PlQ5lS&` zmmzB;WiV-~j_KU!!0vkQlD+V6T=6A^^x}eurt}8mGmVg$!2BSh5eo;VIN0i=xB; zuI7acAXwCOy5ZBbILcDJ8!Dyw8Hns~h`u}S&W-!i6RJ~m5agWAr+)S`3TG!HIdD2M zGvmb4hC^QNM$APBB@^b+XCNrPZA`fKa~R7rXfbLZNxYptG$dx8n_!=#Zse&Mhq-OCx z&UJsxVX!FCB&GI^ft5lP$=4kt{@_b{nxWdtssRH9xk!}!avAjaUrZRjRV4LM$LRKl z#^VDP0ks)(M60uu{703m{4SSk6CS)s)y60Gf;f-CbLS_&p!rQlOZ^mS%35-rs2z^+ zl%Q~ zlYE$qsGG?tsc2Of%^9Y{K{K!NL308&wZZ#**t_Z}NHV9Ji9%RR`2oBn5Us)_6Rmn9 zH>h_rRg1vx5-i~crjs2+WpD%6gvH?GOXU4_CsXDqR!&Cwta4#A=!`K zUqHekf0`D$-|mJk&S$2ss$qo!o= zkr=D?nRExf#yh#@CSX{`(^{z3TALa(F(o|fU9)yzOHqCtfnPkdee?2v30cxJh>zTW zxF-N7XZ9b@PG4GdB*jaVh!*TWS>K~t=c@@NP|9rga4mk#noL-W(H=*^_K?BRdb8N9 z-NwhTlvmh>QFxr4GR?fD{wcKMtuGPQQQxPa^Ccy4)w#*{dq8KJ3x(%#wUcf9zndC z%2-Y}X^}1LE2dGLaSa{GQAcRs8Kz+746>C~qYFUfQUNLo_R*exAYbsgNCYs2t z^KVrQU_;CrdIaifuAP~;Kk3|x?Np!^oqD`lc!RomY56Qp`p2Q71xNjhDabGeap+1bX|N(>=vwQ_Gvp1_B>a%4q_& zOfDHp0&U5-MB_ui+whXktka&bODk?B#1 z1BZmRJTj6&BJCF87~|Y9% zeqX2#8uHN&OCN^oAH|Zz zmUSibT}dSN+sLb{Lf3Y@MsM)MwPa1b|7uH>OY6@iOcs(ksu@4$R~)w3Y~@=v2RP%8 z<~l`PbyhC4<&Ff8M)KoJ;%hR5PK=D}cFJwPxGod{kwQUz_QJm$Jqvyae}1uND5nG4 z7jV@Y@l14hHN=Zi=rppT#_Al`Wm|1zub_{X9iCD#cSdTRFv~S$9+$1{6fLV)@m%yF zXjsx)Ez6V5Fps1OdXdjCm-9G|kR@Vn=fVus{kaMg_qF1^{khEAW@oQlf3Feq1aN_# zn>1(waMzbyFYjE1W7Bb4B32$RKwD4S2V-N_E}{l+EpPoTHP8L6;Cjs2e5zrw<12o& z@KaVn!U55CwMo)>7Bv;o(s}xIZC)dYRpWVHJbW1~Z{@7i3W%$DM8o+RF!kvc@9UL| zMnX9L>aCpo1|GSel=ayoJwQ!jro@`UfS0>c1+<4`hWgmXRln7e)WM(!ON+p+x`qgG$0nP5EeVZ_nr&c30XD zSO=(SMUxn{Rh^U9yJ)vM;aR}>LaJIK<>bExT)s~Z2A<2x_0>&W83=20`e`y zGqmZpN&bUJ*sn*!-@a5HBC6@6AMcl7$G&nRnnNv0H}@=kKg7$a3R75swfQ7(XVQIS z+Xz%RbEW8Uzt>c8DbdUhbAi^6P}De0@hDV zLtor$(m2nzcKpXX26uFa)qOI$F)yK}xI$Qt$hjDG+?UXw+(B<87|cxdlK)~KslL4@ z2h!`@X3UilPDx!POz@d|9R?cfiW#~8?$9i7)kZVffhiq&h5wCT8rBfrj$!j!rbzL{ zPhM4ixM)p>40%RAL|H#!vzX>KhOGl_ChMLb3MPBX0%(rikDC2b(2pi5ES?N~fC2i= za~doiZyFMu%O``3uZ1Vtmc+N33^NcYR>o^2Q)Zx8k0nL2{lU#Sdv&KtbZS&Y8){UK zE8zbmanod|#x^zKJg_XpSIe7a__Rv_-0CY*;O>=i{9qe@nWG*h$ZlK_dOUt?0^J&S zCRvcXpBz3<_uCYyAp|N87<){1bHDcqpX}zc&b7Zslt%FmYt`En8EPAT8s6V*fMh7@ zDV652)m3prY0?x3)1aui2hO-zqTi_;+HhM@&H@|}qC=Qy#*t8sp$klnU9!GXlFOF_ z4-)O1+ib@D-|eV%TgtN|7F8?o8~iZRj zIb)*o3X5xu4T~;3iHr3smoUq+pnhVfp9K9aV+2h~U24fOYf!*^)pEqPF@Zh%2jdxi2Yqz9^&!j_`{F!5GyP!h;6o_EylO{su->B3~s_K zzYKqw5ED?7gr#yZwEp!d7^NjNeJ*9trTv^=?$*L}l`{`!F)V7Er7&#rmykJ`bFY|@ zdhcXzb+p1|E3&lTC>I1|%!Ls#Tawgf|KtE;trSt}DEf*ORuyuB!!bG>;qC0x+~7~P z3`2%}?t%$5RVS98tJ1OL)EFD1BIUh5*zIhr^p}CJuuFcFt1Cj9TLdkwj{K+}p5uo0jHl0X?sP%=Q;y&Ahexpsa6pOZO4F|;m9ZNSiu$MQ`K4!#>ZRuiI(VG| zuU#5DXGB*vev7~*wz8ozapPfR`zR&>7t;8RSxL=9>puA9bMDgfkxOGPxl^x(`xeG7 zS4|=}vi?P!WQY@T`e~<3POvA^o>wErE#kCkC5!YR0FHllbSeuq?w4PAE}PC)xdrnfTRL(I28CE##LMTZRNVNrDJw-@7t`L zgbpTUWc8&OvKs5GB9~{{iQGbtq}DBAJT6Oa4ccyVPA+Xc8d2mjA}u0hb7|bhCf3Mh zI68lv_jx|g`+1)C-5RXO&6|83{n%XfkfVo#aK3gz!9-WESS^0?!F|ShzM2=N*i`)T zO{i0+?p5zJHTy^8QBrl_g+f!W-5nv-Cj~#S6v7QEEq_v}-fl0OWOrMeC+_^UTEf+8 zpNg?_vwi&b>2zDryrEC9nod=)8MCguB4l^?pH*|;D+h#Sk1fhiu^V#YD}Ap^+`^hi z^rx@Ne00qR>&w%O0_HM>0W3$UTM47<6nDWVfB$9~)x5uEOI*YyhkN(+Vons*STT%U zm@5jZ2l9+%{D2WFRhs2S7xEMIy{SqAO@UH-84?ARacnz9%vE7a36bLMT*);}B7Z>0H(ZOANGHm_}% zSfZvum6~MR^E^jxR%!@U9x0(#CmdqPhV~ylF z9EC;OAf;lpyO?GhKNzj=&%6Ej_HQ8qjZRAw%k2}pjNFG(lj7oOxttFll| z^T1q&G$!`|FfZl46Pk>8wuO=N=e|)4Ir+!~Ldx>KkE!yy7NXNvF2xPg1P4Ow$7xD)M^5w4 z9*T`2cZ{o+j*RbZsn=_FyEMCA&$?zNB%QKzkJ(v4zB?Ew=Ot90D1Vla7?X8FoSDz|eW*L}ur$BT`M9q@$E`b$ z8&Xg(^MFB1thgXOLaj)tisGk8S2sv|QZ^pr_<768txuQxf7Y3=LH{f&ugDHkNovVc zQb+1ZBWWV7jJ8F`qBX_$e(U>0U$DVE_w ze1tEs4coB;J8=Nt;UEs-Fuq4Ij^Y?jq6DXK8b9I;O0fsuU@!Jz6$-H$pI|*UViV?I zF6Lta-b6kYVi6YOExdzw@g82rXbi$&(1oLbUK(4|oS7FbqTR9!6mj zBrpXtFbjXd97tgvKEVQR#7!uVRQv{MNWrghJ8nY-R78C=zA44XB1Y z@o%V%DyWJCzr-!5gSx1PfP0V*GFX9CJbNV122zY4+CFLuoc(e z&)dM)+m99KAM9@s6nMtq{AaWA_S@?n$o(%+O9KQH000080C$0ZRA+iRc&b7G0Nhys z0384T0B2=xP;zf{Z!cwHX>KoYa&L5RP+@X&WiDc6VQq|A`*##op6}{gNnhHOR=OG* z6t%Qke1w)tx&sM<79k;sA}tRizB-+BB}6*iZKoRqMS`ND^FkbFyt_LKqt5Iyad#Q^ z{gidzZ`O64nSHXZGqbxtdFJdNu%GX(>PjWRoaLNK*Y|!u_xt{S@2$g@9Xq=tk-Z-e z3~k!Jsj;Uo5@~-v5{bMXuhpxKYQ9*XahKHS@0O{ut4`q0lDb*ehU$siX zD-;_Ice>V4E7gj7ZLM(Ftyc@xdSSX+cQr_aw>}lC70Sgix7-e~}%Uh7jplSk>54b1dulbezN=BcX1ZExmTCJ$^*R}gd3r@=9=E1DQyv>nKh?daC)1sY zRjLIFuab#PRT}Q3TfeqepE^*4;YDnyl-j*QSegmh4G|N~O2*Exdb83tU2Kf+>zF~v z8-CSX7Z_iVc=tJl#9f|Qn9l%}$g~O|Sh_AFt7QR=8VYER2uhR4xmKNp z1h$Gfu<){_p3JqG1&9S?PiAQ*)FA=rN~TY`cKHknWK*nsWhvp6<@* z8Lx)}z@mko)`GnlVTW|cg^-Rgoy~N%{0a~>O(-BssHzVX%S~6Gs!~VHE=Q~-(= zWBc7h7z(AfiDG%i?eG{RZ>qFd^t#NlOn7Vs8n3v#7N+^bE&wiG>CR{w48?#Srn=#( z9Gd}`mx_%d6~jVCZzh?UAGN{m%~U3eucfgRM-9x50q16 zrrnvD;v^z-89xWpF&zWtojw)P8shh6HY2K$$ntOC4ALXszw>zh2hSslF7#;PR$VbW zBDyeRdgOF3Gj|R!owezEB8r`e7>Xn8XktuP^6OkiFej$#k~`WvL<`Pv#1MJae5=37 z);F1r-9}f_7}f_^gpq(6{h1Y`(ZnfJIjOI+$r95v=OR`rGN*4&MI0;ZoU+>UT9bJ4`7KpG+B8A6`(k)Qg=q__}G`~=9QA>;)@Ui6Va z@sZ2K#b_d~1DXm!FA?-}9~#$v>~e7l*iK+qgs@yEFz;-kJAL%^;&Y%AK;IBXCnVZv zp%XrOrQoQDxB>W$VR%x)m$u-B55Gz9PQa6Z-yDW7lkijvp7i0S;0eH&0)9&vzFfjr zwBSp9_^pB)fG-2w3d66L@Ecn2Wj;JDcoOgw;J1b0D<%BK7Chy{R|&op@a2Ht9){l} z;WxM7%YFDAf-eJn1>kpv;j%dSEiL#8AAXnMDZsDKE4-^CpLaH^PB!USX~)PpY|t^7 zV;O=kS50m0X>Iig)4jG!6kgr=Wi1H zHt_Fo6h6?WVOE+BYG4y%>RHP;%PhfH`FZNsws=Y1LP;I8wap6OteZ4JjUgkMrI9+o zObbbAbF=|OXwdUosp&t`rk`P*Odq8X0Vo@p4O8t*3}gwi{z#kcL2L=xAR!i&#iZc( zY{lcXP`tb8>tKNAuJoG;#*AO=1;Z5V1?Ilg21&I!5vsLi~?(P z*bcd7$X*@JTMmuZO)>k@X|0J4y`M7Mhu3!)a)7HEt$Ib-G!!aWL<8rIieq#jW`5qU z9RTKl#H7JiDVb{W1d^OY+&AOo8uLpxiBh4`ZR%$tG6@f)X*vENOGqk?glD<_JE7&^R(;JM>6& zBzrP$%9U(*h2|lX4V-0HF!iwDTgaB@1RsVic?9rz^gJD(UIh2$v?JfvjxxtMs2w$& z>}I&JcT5UU~CO(NULlrC#Tzyr*mD}3v_%vd|G?KFylL0@!54* zd zmF>`{@Gl6S2kTL=zKDZmp0`cmUlROb@b-fDX%<7{zm$m3I9;NC>wbcd2?NBw#ICWY{;g71dXC!qALkkUQp zc^4^_3g0G$U$?cdDg0}4=hr=%Z(lC+ZIUSje*`k0M4S8!)_zv-5s*)T{5i}3OX1%T z{86kFu=4W&oECg9$Wf4IJis>ve+(-{th@ujyMjLsat!2qT0WTB@26}vNr#+c49@Wk zqv8F8s%!T;40B|Z;q`HkOgh805Q$S{mdJuWs}Hd#8&Vk?O5#Z~cEUEnaq#TGu}EAZ zgY)1#Pg7i^v)>Z@NtiVbv%U@T7X*I_WC`RiYIbnZChbOgj^C})b$gApvLMAffpW~I zt7I{;uHDAS)n$ufz1EIK!6^sftVk6pT_e z;O>_(s1CaE@ik;c@f~3qL(E`Tjl%B>UWMo?ME^lYUJvC0M|->m4Yiobb;`vc7E)Mv zh8E7|@K%rMyi>l-&>KEZ;xlPUH=u9|samalz@l`=?Zmun#%!MG(mohrPQ0m)MhJgE z^-iDM5KH4D%_imX8Avz~Gx3Ra@JL(ajM^zb-<MVa;sbI>cyq1`CX(W`gmhk_r5XV1d3KLYv3f6;BS$LUc$-pvIS~5Rrs20NeoCTG?HdOhtQM^?A zwE1x56#S{+M-cPFi20v^{Byxy0Qnrqzv!?{S&(ulA_xZJf0U{L&j#r+PqHh{$1AJ) zOTlL$`+3OzE0BLJ_%V=2K>kgr-DjcY#UMfRa;!kk-wOT`Hokz3f9GH5sf&+d<8f+Q zYEnm)VTmut;>)c?-Im`G{+G=~!C!%xS%~?2Z8UTqhN^Ckuao^mvR@7N6J??=7c?A- z1gb7;xFoSCPD>YzZ%U2ocS!oDr{^QVPr%4yF!CSzw2#@l4A-!ajduq@Ym>i^^f?)?icY9^GTofeYOcL+oyfc=+Mn~463eA=yZlDG9cgcHh({- z{ebS@Kk&m9e+eH%91H&>`0J2%9Jc&(M}EP@0WK~>h`!M35-L_Zm@ECVWP28rtY7#} z&^1EjTuN}57yN$9z1wpz0Qcw_SgVxVu?aQ=AQ~4F# z(Y`|8n8{ABT3(^a>tDvwNmYKf{F~q>q2X0%_;<|-m5Hy($hC$p>3d^wkx&iH@%4sR z3Fo~U8C_5ZC(Nt+cS-P5(0&5i|D#X))XV>;GVwY5dKv#r;hzfrCT09T@eBNG$oOY{ z+K>E<|8PFzpM^92LvQnsa@vn6<3C=U@&6M1tC03OwEwrfCds@8*Q6eK8M}wc?1oMS z!QTod*Z*fUut+4bt5M%g|2c90bd7%h7f%uou~a+?o){kPzu$!C=Fs~sc%pbLJZb;^ zPCR#oFj@b7EuM8ghGh2p>x5tL>m>X}A4Bg>NRAU)-|WAW%&oNd{{R30|Noqpc|25K zZ*1_e5yZw98v=kE;kZVi zr!lsa#)c4^Yd~9fppN@<#fBK*M8I`%b$m@f6t*u>A-1lBO$=~u9q0!k`JL5_EusOw z0QCFIqX7N|DF5=u!2h$rSpV_}fPVtU`jf1ud$&7 zaTLJYu%QBRcYwEGLk;3?0LRs7K-?AJjo8qFxC_ARv7rNTXMopYLl5Fk0I$Y|0mK~v z{tq^cAnpM03T&7_+#cX%*f4`Q65u7+uzdQ9e_W>h6}`RL;gJ9PqE>~1`ptt08fPcS<8R91;FF6 z;RSJXfX89O2jXS`$E`~kh?@XB5*vOH$9Vv^u5jx~05@iU8v-1+4g^75AGj~v^D6|p zFD;-w&NafI_VPe`-0vU)YEJ=h+_NSM;&cGV&9NAW(*qngm*OB!4RG8uA_3x*0LS%{ z1aTUG^IAh z|K5YZ`wn=o0q-x5fWDKE|K4B1AphA@!21Yz?*Q)?;5`DoFM#&~u>Zl%2YVjucCgRE z4hMT1>}s%|!A=Hy80=oKZ^4cQdll?bus>}e|8XYRlVCT3eF%0S*n42tf&B({8rWlC zcY%Ecb`;o4ssP8$@m1ir#?2GhQ8EC>-N(P{9T>Y5z^x#Ed_o9}MFQvxhy3vpt_|)T zOAM&rg#7Uyu08HuO&H+XkUze~aWx3wWNcI*fVY7$@&R?+yB0U_T{y3>1M`3z7j7RU z04)!6~X<(0m-E{$|Ur_b+#l6D{ zgyWueJSTi4guvei_3u9@D#)d}OyUeQM2U{>`r4&{x^owo>pCdx^NgqWZ+ikj9%bn5;p-u8jqr1JLy9Bq9c=yF ze8t_I5&t>o<8Al1|CRrxzcb3t%@1k+_ZpY~hikatIurYN_<7seyF!HizbjxzD(;D^ z8QOaL*o)bFySb<%9I@*|=vO#)b+xw!X6J;S2Bc~&NbMo7 za#|JAq!~7v*UQswxjwe;+ccX4F)~!?*w21J@uH4Ry`6;3F&l5_Ssep+xR}=HX1MLp z5oh&k1-0tCkn_jK+mrvCygqaJICm8K>TA!viWJmkDiotuOSA25xEq+c2c^_kF6xx_N<4jn@nWxjyKZ>q;PVhS_zH(7HQ+nO>ADH%5zk@fCxq)+l z;2;6KB#2k9Hs6w7dLXGgnwQy*EY2u*1g6+}V|!BKrKM?*ZGfp9$0c#Wl)bg-t!KKg zFo6#oRez-TGUePjv?oKG*NhUD2!)q<8}%NpOI=zh@h$t6!Vro^N}<1&rc*^9q6Dg< z(~aqq;6g9)w*`LHPV^3^CYFr5$Gm?Ejm{Qg5$$=%5&YU_B1i2g6V~7UrZn}$3i?26 zqoMQ>3$4G!NQKigCgFzzd=Z7k6}1mDU@x;&oPKfl7RUA@ieuCs$lBATJ-e*WXtJL? zrdK6-;w!0ncK2h7!Qx8k(IC}}!JPwf1UKs#Ga}|11MwaMfl5`SNb(!GRqwNUhY9mH zLOQR!8@r!ImtL?MCgwm)-Sa#88eJL~=0!t?zFmYedK}^9?brmd&+c8Zd#tCoG)){BZ%zk^^D@!$G9hU$ zbJB4!sn`SlB!OIj|9tOZf!w7=9|Oy;|X7@4hqQ1ka=)f=Bo}GyFD{)uG-RJq`5*9 zyc}Fj(0qRT<+*#Ou3l%6y-J$;O6qDf9yq*{kSh z+O!f!HvK-`A=)G!(o{u)*W!lf*5;nEqGS7Em+rquCGM_*(llxCL+(K}>V_BGk1F2D1hV~JL?Bqi%3 zWaILBUX_QREkbC*A%U#%tq?LvqzbZ%FzM%3*^CyEE|+*`&Z{ZKBYun2kY`B}=Gtrm zf5mChXdaVskVp43$U!+)2A;8LLCz*$K=ib?A#SRp!Vb;kelDY8iO*w#v^&PwX^!YA zR&BtT!o;X)7p#*gY;10E&$b$;E*d}sTZol%cz37V+$53)FjB9~tzlYEztPl?|FB@d zU-TwiB)fLbW(O@|a3#7f=)32{W5OJxD3PGd z9;*AljW2O3t&5C1rD3*+nWMw_A|i`Q4NR_5HYCsWM4!ekS0>l!a`UIYwS?`wl@QZp zPgl`0J|JiisY4P~@StN%nGN|Y#CHsC7_n5S*RSLlT-q`C6!l`}z`$OV9s5}wVc;HA zoWWQrx{L3wldrYq&uEevKtyptD2J{N>jtvYmdM7uW`fxvXIM;IZf5G0tF7T9|Tjy|% zEU9s=UQJ2!Xsta-$y0pgVTgiqa8;3(aH6gin(nLaUT?n~9-4fxa=c}aMBNTqWKkg2SUvCT#06AMV~nnDz1Ibsz<-HNPEjMYW;>+)dxa5s6Uru54@ci zl5bZm7h%2SMTFdmW=rNS4P@zDlxcGh2ON8!^R;P=Tq((f#>jDO-dO&I&??~1mFBmiI#Q+x<%GK(+BdJ(ErLEXf#AJ&y8GtaRE z*@%*Ud;C0&dhp6M!udz4u|*%K%Xx!bTZV_x85?0!AN*__%tOjt-fpieN-&Fsv`~E1{3KLtd&ZE}vO^rqac z(3YgB@h1jZGjZ-Nmm5omxMUlcKaD%M!LwAu%8@twJlEM(vn%YrIY`zur;gSNq-pb= z(5ycydj^GSZN#_aHz6@gG#B>O(-X<5e(Ay_ReYd>LFWY(?sdBZC*{o-s}}!Rn=i3& z>j;&NnBVFl#hlwdG#{Nv(e8F9Z7R5G6-CV~6N_S%3uRiqO73kfP(%C~GhS<|{R_`VhZGc;-IX-j4mQ7b}YLi}Vsj2<8S~-DvJ0Te8F; zgyUSP0|<|ehcQYvnM`@@Xulv8`(1_20++Xy0|bf8{ub#Z9ZZVYdV%CjixTN1QF#2+ zwyKLcM}#tK!P%vVy;)~-S=+8!w46wm`JWk(OFEG)$hYT2eltQ9fMoxxV!?*0^HmJ<7x<;^5Vtx+ZoK^1vc8W$s9 z5nZ34A^X-P-RMT2K*59koGrQe!?WT}`S?fD$vaHX?r=Hen{4@HJ~Z`$WZ_wG4t4Zv zUw$uiUw2TY{HI*(2g~k@UFuef);go^IH2>9U>+Q5)~AJnQPWTwlFPykM>zwO4*AHenQvY*Vn4J z%<#3nhU__PJWCDW@NY_KJ1P zm$-?f5N$-$UEX*5e7}+ItsD7pdT+zZx5jFJG?AF?_L!y^m8r#ht6Pngt9fjTG3hmI z;SJbBiLBxXRV_PX<4#zusn8+yt3j*=y_PCgGhN`4KBeZT8^GJ+3y)u4_0wKHx8*)jPuDUapf9E|ud1RlulwKtED9MO}cOz?J`VjOf zP$Nl;3Pi1WH?n=)(J=rPPSJ9lQIZwA+otlT+K`{#gQZi6 z%KcQ6&gki8>T9kVXmeC~M7Kvyq;$P=UCW`H6Q#(cn?-<{VXJrcsctH4kxUxsJnnbz zk}$N`zeqkUE`fYw=xY?Qrn8ZR7sOlX)`oYa+LSrH4kC9`&4TSPQEd_kH~{| z5j3%fe~QO*p_IHCzLt^FvqHiz zc6#Q5&(0KFgX_3D&smwG<@TgKBAkDzdXWX(XAQW2Md^a1z;KI>*D$PGK_^C|i>o^* zBKDiXEkaE@!+THFABa;ENRjT))6A*vTaWuHQI|61=Ep2t81_}N&5ReSXRIUH?%u+K zO9k7Bk+f2GX5#5TRYoYz-Ja&z(3jda`odR}B^)yTIyS_|p3?0#=je}xg^{yu4Z~fc zk{;cXj{}kJkF%ja@3LPY3EQQAvbq(rP$)zB^R6~B3i8@aT5@qIydje4Oo#AS3gli< zlsD}Le>c+SC4c85dH;^V(NzTgVriZl{8|xP6cl~0SYa0)cyXaLF-Oj)gjfw<>FBET z(bWeNvX$TaOn5A}X`3?Uw+N&qzViRTgH97K%=SzxM;c_m6Oho?8@K}?(y+{1bp@-oo zZIyDns-9Nm%C9k6;gm5JOoAjeb>37`Nb+L#h!+MT#q8r>kOBq-p*HN$tGry-X*u4C z_>tP!!;}cuZ+&;#!ts+;(U#N9*No&w4%jG;^nPpa7@&TZudBZseFGIdoKmYh12xOa|t@ZvPC(`Qa# z1Tyd>nz<&Oa_A=B*}*-Jn+%~b$KuqI(>~wPGAnu#)YCr0w5}r>dFCNvTbLQ2=lqko zti$MruM=n)LdCbs-=sN0a+Pbo-&;dBFnTI|$G?=&-to>(d~bj1;s)l~qtBi#_ZilG zf5$1_xyCa(HIh9#Ma}kvy%SsbsbSW6FO9yGTvH+n$feogy+nN^#(x~$On;@XHovLx zp4FWO;iSk8OPBojr;M4!3I*5XguYw49@RExk-G+{yKxyDQSX;%g!3d`ZOYkTz8s_cf-M%+z7`S5nb(HF|Am`$c`GQW)!iw%t4xTCO{8AqJDR zVHeI|TpJyO@!L>dW|%txI`rzaR&o`F1Gl|oO5oKXwlvDPqD%+)C-*p zeIOCBVoN&EW!M}mA8`l6wZ%=L@hbW{iqWgrpE{~TqhboiKuOW1#YUsg^bd^O3{H1j zc-FJBalsPmS$U_;&)l=YrrA>BwkX%}Iakdz)VLLD98wi`DT?5|KRNFBZWu;`3iF?W zY$rmXOBEf7y*6P|O!;~ODy^R(&>0An!u892Z6%HIlf=Lonkp`@jIyIIS}{AjrE6!o z@Xa@rMw{o<&nIuf8*+Dc?Z!`>i!HCQS5DrHDn0t}+~xP7=lDr$uBDucR>r;bvZDZt zhBH)&<+bpM6Xv^>dA5Iw{qdHF&+|`ya0e|Z_p|O&H(;+^nb+;|Tf}tJv1{VQqMd%e zGuYJC@593WmhjGpXnr>gt!!lZ=Q_my0RRC1|8;hCP+ZNoEf(MaK|_FG0fJi~c#t5$ z-Q5QdPGGR$PWW(lx8Om71c%@{1j(R-XK;sk^Syg-y{h}G*VSvUU8~nVy-)3bx>D)$ zR1B^8@6=}n?&)0J%!YweF*-8HKx^P5%D$*|D@LYJ?2#h7D}>DGd*E^-@W`}>H2C;- zo0^J*wqCQ_X0=1#;I;H+W~{Wog!Ztl$>u#>NqOz`Vd0YYm#g^4Ca$1s&$0gRz-G-CA;XXg{ZNfpYXVj*s zuuQMQU$91kZS`=|f}9O7nfxZFu1ZBilzWlz-(a9G%q^g)@xVvCm9H81+*K@Rj`dc{sPD)ffr6N7+n0z$gKlAV zLy(&~P5&p^TbXBg8g#4B4wgK3^cEA)rJ!h@@k`eUBiSIWzY=)AXW%Iwgy4NU1vXaMsnot}Yc0lKOgb z!>@B{*3=Dw6m~;EHJjY$Y)`z^|Cbuix@!6}_2?(G*Q=(f*;4R!*8Gj8~Duk?VWw402L z1|rw?;zv1eZr@e`f}J|c=Ok(L#tH3@^uF@tFv%_B+L0gQ0cnyu;*4nGXPI#dTbbT& zLDYB(8`HZ3yg(M6JJo=HzWT1BrHLjdfQO?_9C1q5kKSV$ldq~I+^t#=jIu=Y`epu{ zA7TN)#t54Igbz%MpS3G>NIeQSce`H}V)g{NdkIT;_K6*AsL?})gH3uTvf=O}o~IR}2xA7{(0(9~Qz^f)v#zny{4_rbYe>-BUlj?M#Wd^a2482Ev$6%en}eXUu%bpbFP)kZ(iodo z{bz=YB40!d*BZ)bTR63?h=NVd+&SSyRPr=x6dDEt-a3qtmpgeef~IWul;P&3_`x=SwU+a zL&?G7x}5Z^>3MMxt%Piq5=N4DJ%@T%zoLyIgQ;1oK#o7Yc7y68sb9*!fmqVyxt=6s z<++x2FPa`QGS&x{MSsQXmSP7D^>|xT$~fEWj8igx*A2WPPAdHrQyCLIg*RjT;3!0) zzAu+|oO)StQoQs1uCR~M3s3pOJ`t9XZ#8LiFe=R0tDS+08>jy1w6Tf+mNKiCZQ$~j zy%#uE#A`E_K2NPssFPl(3>fuOP)`kR-kK{ z%QNbyrMkE!v;&@Hyj(v%OlJ1dz*G&lghfNUCM@vevC8OSZz|Tk?{{tPbvzK%P@!6T z&{=>e^b9XNxn9|BMc}j!`tP-)^0}QnO0gP7d#Sn{l+)3aslR4@%!Kj$_>8>la~QgH z7&@nte@D@?VtSd+4c80jG7O)GL=9@0w!POnXgS!1DlMNiG!O_5t|!BIbLEbM>HB*; ziZ^zq%@yV-q0CB}cy_PA@fL=Wr|%dnZID`;{E6n%;Y602gW?ouERMw%TJKM_f4F*< zY*@f$uA@@|O2{>|@%6u+$~13Z`F?Ya8jQO1`8HwGAGH`|0lxBqO4|fsBckIV7^BL7s~_K?&inC>$hRDe9pFDIF(E5qm)WxC1g{ywZjvB}NTM_FnLtye1gQH3RH! z&XRn4%J~@&jX7B<;mTfs$iVsV^;P|Q6Wp6zN%ijt;~mnk@AtUXN5?N%ai zU(Pd>wK!RzOUq8L6^cDtJefWwTpsq%y48{^waqOpwGGz9+|x?@jDF@#sRhv#0LA`@$U$zCoW$oIJ=IBK*5Whjw(Osra7ZU z&SSjroU2njn4Ur{UPIlj6m6$CU=hNzR!522rcEP~+RVbgNfa?@CUdYJ9y^-$aEVG! zqomB#vr8!{Z@!i^FnA4Hni^&4*4xZDRdPu#t;;x7bZ|ocDrNea>7Gm~#V&{6J0OIC<^ZT@ae^wAGg@1;baA8Yz(O z#p}r^8MJo&C-U?vLdbr>|UHE>ke5PF_i{?!cKEP0bGY2y%7cJwvb>T6Fvcj`4RLIjzjga3imhj1otdE z`c-MSfgM=Oye}_16U@QeopExX2q zL}^(K^Wo{|$DFIeb# zHq5m>_|fF$ZKOF0)#5Lnb}ft8zeUlo^59waX|~qV49VXrY?`Wv>>2c|Jp zRgZ#>bK0bwkD$@~L^`oXWpWfcn%_HY=a;M$HT78pH&!(C?ce7;*JNZxItQYVSqE+T zK#XMbk0;=zPITD(?014#Hjb|!vLy?W6`dyMRXm#ee6_PD7E4bm7atmw7QZ1x1n=l} zxYh`73-*{dD1Y-0W}JZwo6@F~GN*SXXMAFAS~`7bSsCASf27s$k(NLRMpt?A&FOpd z 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 z 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 diff --git a/test/protoMsg.cs b/test/protoMsg.cs new file mode 100644 index 0000000..5b2d169 --- /dev/null +++ b/test/protoMsg.cs @@ -0,0 +1,1654 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.IO; + +namespace GenProto +{ + public static class ProtocolCore + { + public interface ISerialize + { + void Serialize(BinaryWriter binaryWriter); + byte[] Serialize(); + } + + public interface IDeserialize + { + void Deserialize(BinaryReader binaryReader); + void Deserialize(byte[] data); + } + + public enum BasicTypeEnum + { + Custom = 0x00, + Boolean = 0x01, + Int8 = 0x02, + UInt8 = 0x03, + UInt16 = 0x04, + Int16 = 0x05, + Int32 = 0x06, + UInt32 = 0x07, + Int64 = 0x08, + UInt64 = 0x09, + Float = 0x10, + Double = 0x11, + String = 0x12, + } + + public static BasicTypeEnum JudgeType(T value) + { + return value switch + { + bool => BasicTypeEnum.Boolean, + byte => BasicTypeEnum.Int8, + sbyte => BasicTypeEnum.UInt8, + ushort => BasicTypeEnum.UInt16, + short => BasicTypeEnum.Int16, + int => BasicTypeEnum.Int32, + uint => BasicTypeEnum.UInt32, + long => BasicTypeEnum.Int64, + ulong => BasicTypeEnum.UInt64, + float => BasicTypeEnum.Float, + double => BasicTypeEnum.Double, + string => BasicTypeEnum.String, + _ => BasicTypeEnum.Custom, + }; + } + + public static void WriteValue(this BinaryWriter binaryWriter, T value) + { + switch (value) + { + case bool boolValue: + binaryWriter.Write(boolValue); + break; + case byte byteValue: + binaryWriter.Write(byteValue); + break; + case sbyte sbyteValue: + binaryWriter.Write(sbyteValue); + break; + case ushort ushortValue: + binaryWriter.Write(ushortValue); + break; + case short shortValue: + binaryWriter.Write(shortValue); + break; + case int intValue: + binaryWriter.Write(intValue); + break; + case uint uintValue: + binaryWriter.Write(uintValue); + break; + case long longValue: + binaryWriter.Write(longValue); + break; + case ulong ulongValue: + binaryWriter.Write(ulongValue); + break; + case float floatValue: + binaryWriter.Write(floatValue); + break; + case double doubleValue: + binaryWriter.Write(doubleValue); + break; + case string stringValue: + binaryWriter.Write(stringValue); + break; + default: + { + binaryWriter.Write(value != null); + switch (value) + { + case IList listValue: + binaryWriter.WriteList(listValue); + break; + case ISerialize serialize: + serialize.Serialize(binaryWriter); + break; + default: + if (value != null) + { + throw new InvalidOperationException($"unexpect type: {value.GetType().FullName}"); + } + + break; + } + + break; + } + } + } + + + public static void WriteList(this BinaryWriter binaryWriter, IList list) + { + var length = (ushort) (list?.Count ?? 0); + binaryWriter.Write(length); + + if (list == null) return; + for (var idx = 0; idx < length; idx++) + { + var value = list[idx]; + + if (idx == 0) + { + var basicType = JudgeType(value); + binaryWriter.Write((byte) basicType); + } + + binaryWriter.WriteValue(value); + } + } + + public static void ReadValue(this BinaryReader binaryReader, out bool value) + { + value = binaryReader.ReadBoolean(); + } + + public static void ReadValue(this BinaryReader binaryReader, out sbyte value) + { + value = binaryReader.ReadSByte(); + } + + public static void ReadValue(this BinaryReader binaryReader, out byte value) + { + value = binaryReader.ReadByte(); + } + + public static void ReadValue(this BinaryReader binaryReader, out ushort value) + { + value = binaryReader.ReadUInt16(); + } + + public static void ReadValue(this BinaryReader binaryReader, out short value) + { + value = binaryReader.ReadInt16(); + } + + public static void ReadValue(this BinaryReader binaryReader, out int value) + { + value = binaryReader.ReadInt32(); + } + + public static void ReadValue(this BinaryReader binaryReader, out uint value) + { + value = binaryReader.ReadUInt32(); + } + + public static void ReadValue(this BinaryReader binaryReader, out long value) + { + value = binaryReader.ReadInt64(); + } + + public static void ReadValue(this BinaryReader binaryReader, out ulong value) + { + value = binaryReader.ReadUInt64(); + } + + public static void ReadValue(this BinaryReader binaryReader, out float value) + { + value = binaryReader.ReadSingle(); + } + + public static void ReadValue(this BinaryReader binaryReader, out double value) + { + value = binaryReader.ReadDouble(); + } + + public static void ReadValue(this BinaryReader binaryReader, out string value) + { + value = binaryReader.ReadString(); + } + + public static void ReadValue(this BinaryReader binaryReader, out T value) where T : new() + { + value = default; + var haveValue = binaryReader.ReadBoolean(); + if (!haveValue) + { + return; + } + + value = new T(); + if (!(value is IDeserialize deserialize)) + { + throw new InvalidOperationException($"error type: {typeof(T).FullName}"); + } + + deserialize.Deserialize(binaryReader); + } + + public static void ReadValue(this BinaryReader binaryReader, out List outList) where T : new() + { + outList = default; + IList list = default; + var haveValue = binaryReader.ReadBoolean(); + if (!haveValue) + { + return; + } + + var length = binaryReader.ReadUInt16(); + if (length <= 0) + { + return; + } + + var basicTypeEnum = (BasicTypeEnum) binaryReader.ReadByte(); + for (var idx = 0; idx < length; idx++) + { + switch (basicTypeEnum) + { + case BasicTypeEnum.Boolean: + list ??= new List(length); + var boolValue = binaryReader.ReadBoolean(); + list.Add(boolValue); + break; + case BasicTypeEnum.Int8: + list ??= new List(length); + var sbyteValue = binaryReader.ReadSByte(); + list.Add(sbyteValue); + break; + case BasicTypeEnum.UInt8: + list ??= new List(length); + var byteValue = binaryReader.ReadByte(); + list.Add(byteValue); + break; + case BasicTypeEnum.UInt16: + list ??= new List(length); + var ushortValue = binaryReader.ReadUInt16(); + list.Add(ushortValue); + break; + case BasicTypeEnum.Int16: + list ??= new List(length); + var shortValue = binaryReader.ReadInt16(); + list.Add(shortValue); + break; + case BasicTypeEnum.Int32: + list ??= new List(length); + var intValue = binaryReader.ReadInt32(); + list.Add(intValue); + break; + case BasicTypeEnum.UInt32: + list ??= new List(length); + var uintValue = binaryReader.ReadUInt32(); + list.Add(uintValue); + break; + case BasicTypeEnum.Int64: + list ??= new List(length); + var longValue = binaryReader.ReadInt64(); + list.Add(longValue); + break; + case BasicTypeEnum.UInt64: + list ??= new List(length); + var ulongValue = binaryReader.ReadUInt64(); + list.Add(ulongValue); + break; + case BasicTypeEnum.Float: + list ??= new List(length); + var singleValue = binaryReader.ReadSingle(); + list.Add(singleValue); + break; + case BasicTypeEnum.Double: + list ??= new List(length); + var doubleValue = binaryReader.ReadDouble(); + list.Add(doubleValue); + break; + case BasicTypeEnum.String: + list ??= new List(length); + var stringValue = binaryReader.ReadString(); + list.Add(stringValue); + break; + case BasicTypeEnum.Custom: + list ??= new List(length); + var state = binaryReader.ReadBoolean(); + if (state) + { + if (new T() is IDeserialize item) + { + item.Deserialize(binaryReader); + list.Add(item); + } + } + + break; + + + default: + throw new InvalidOperationException(); + } + } + + outList = list as List; + } + } public class test : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 1; + public string aa; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(aa); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out aa); + } + } + public class phoneNumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 2; + public test number; + public int type; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(number); + binaryWriter.WriteValue(type); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out number); + binaryReader.ReadValue(out type); + } + } + public class person : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 3; + public string name; + public int id; + public string email; + public List phone; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(name); + binaryWriter.WriteValue(id); + binaryWriter.WriteValue(email); + binaryWriter.WriteValue(phone); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out name); + binaryReader.ReadValue(out id); + binaryReader.ReadValue(out email); + binaryReader.ReadValue(out phone); + } + } + public class addressBook : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 4; + public List person; + public List other; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(person); + binaryWriter.WriteValue(other); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out person); + binaryReader.ReadValue(out other); + } + } + public class union : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 5; + public string test; + public int type; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(test); + binaryWriter.WriteValue(type); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out test); + binaryReader.ReadValue(out type); + } + } + public class tbool : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 6; + public bool bool; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(bool); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out bool); + } + } + public class tint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 7; + public sbyte int1; + public sbyte int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tuint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 8; + public byte int1; + public byte int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 9; + public short int1; + public short int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tuint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 10; + public ushort int1; + public ushort int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 11; + public int int1; + public int int2; + public int int3; + public int int4; + public int int5; + public int int6; + public int int7; + public int int8; + public int int9; + public int int10; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + binaryWriter.WriteValue(int3); + binaryWriter.WriteValue(int4); + binaryWriter.WriteValue(int5); + binaryWriter.WriteValue(int6); + binaryWriter.WriteValue(int7); + binaryWriter.WriteValue(int8); + binaryWriter.WriteValue(int9); + binaryWriter.WriteValue(int10); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + binaryReader.ReadValue(out int3); + binaryReader.ReadValue(out int4); + binaryReader.ReadValue(out int5); + binaryReader.ReadValue(out int6); + binaryReader.ReadValue(out int7); + binaryReader.ReadValue(out int8); + binaryReader.ReadValue(out int9); + binaryReader.ReadValue(out int10); + } + } + public class tuint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 12; + public uint int1; + public uint int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 13; + public long int1; + public long int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tuint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 14; + public ulong int1; + public ulong int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tinteger : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 15; + public integer int1; + public integer int2; + public integer int3; + public integer int4; + public integer int5; + public integer int6; + public integer int7; + public integer int8; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + binaryWriter.WriteValue(int3); + binaryWriter.WriteValue(int4); + binaryWriter.WriteValue(int5); + binaryWriter.WriteValue(int6); + binaryWriter.WriteValue(int7); + binaryWriter.WriteValue(int8); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + binaryReader.ReadValue(out int3); + binaryReader.ReadValue(out int4); + binaryReader.ReadValue(out int5); + binaryReader.ReadValue(out int6); + binaryReader.ReadValue(out int7); + binaryReader.ReadValue(out int8); + } + } + public class tnumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 16; + public number int1; + public number int2; + public number int3; + public number int4; + public number int5; + public number int6; + public number int7; + public number int8; + public number float1; + public number float2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + binaryWriter.WriteValue(int3); + binaryWriter.WriteValue(int4); + binaryWriter.WriteValue(int5); + binaryWriter.WriteValue(int6); + binaryWriter.WriteValue(int7); + binaryWriter.WriteValue(int8); + binaryWriter.WriteValue(float1); + binaryWriter.WriteValue(float2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + binaryReader.ReadValue(out int3); + binaryReader.ReadValue(out int4); + binaryReader.ReadValue(out int5); + binaryReader.ReadValue(out int6); + binaryReader.ReadValue(out int7); + binaryReader.ReadValue(out int8); + binaryReader.ReadValue(out float1); + binaryReader.ReadValue(out float2); + } + } + public class tfloat : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 17; + public float int1; + public float int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tdouble : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 18; + public double int1; + public double int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tstring : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 19; + public string int1; + public string int2; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + binaryWriter.WriteValue(int2); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + binaryReader.ReadValue(out int2); + } + } + public class tlistbool : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 20; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 21; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistuint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 22; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 23; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistuint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 24; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 25; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistuint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 26; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 27; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistuint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 28; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistinteger : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 29; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistnumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 30; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistfloat : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 31; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistdouble : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 32; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tliststring : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 33; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class tlistunion : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 34; + public List int1; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(int1); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out int1); + } + } + public class allType : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 35; + public bool bool; + public sbyte int8; + public byte uint8; + public short int16; + public ushort uint16; + public int int32; + public uint uint32; + public long int64; + public ulong uint64; + public integer inte8; + public integer uinte8; + public integer inte16; + public integer uinte16; + public integer inte32; + public integer uinte32; + public integer inte64; + public integer uinte64; + public number num8; + public number unum8; + public number num16; + public number unum16; + public number num32; + public number unum32; + public number num64; + public number unum64; + public number numfloat; + public number numdouble; + public float float; + public double double; + public string string1; + public string string2; + public union union; + public List lbool; + public List lint8; + public List luint8; + public List lint16; + public List luint16; + public List lint32; + public List luint32; + public List lint64; + public List luint64; + public List linte8; + public List linte16; + public List linte32; + public List linte64; + public List lnum8; + public List lnum16; + public List lnum32; + public List lnum64; + public List lnfloat32; + public List lnfloat64; + public List lfloat; + public List ldouble; + public List lstring; + public List lunion; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(bool); + binaryWriter.WriteValue(int8); + binaryWriter.WriteValue(uint8); + binaryWriter.WriteValue(int16); + binaryWriter.WriteValue(uint16); + binaryWriter.WriteValue(int32); + binaryWriter.WriteValue(uint32); + binaryWriter.WriteValue(int64); + binaryWriter.WriteValue(uint64); + binaryWriter.WriteValue(inte8); + binaryWriter.WriteValue(uinte8); + binaryWriter.WriteValue(inte16); + binaryWriter.WriteValue(uinte16); + binaryWriter.WriteValue(inte32); + binaryWriter.WriteValue(uinte32); + binaryWriter.WriteValue(inte64); + binaryWriter.WriteValue(uinte64); + binaryWriter.WriteValue(num8); + binaryWriter.WriteValue(unum8); + binaryWriter.WriteValue(num16); + binaryWriter.WriteValue(unum16); + binaryWriter.WriteValue(num32); + binaryWriter.WriteValue(unum32); + binaryWriter.WriteValue(num64); + binaryWriter.WriteValue(unum64); + binaryWriter.WriteValue(numfloat); + binaryWriter.WriteValue(numdouble); + binaryWriter.WriteValue(float); + binaryWriter.WriteValue(double); + binaryWriter.WriteValue(string1); + binaryWriter.WriteValue(string2); + binaryWriter.WriteValue(union); + binaryWriter.WriteValue(lbool); + binaryWriter.WriteValue(lint8); + binaryWriter.WriteValue(luint8); + binaryWriter.WriteValue(lint16); + binaryWriter.WriteValue(luint16); + binaryWriter.WriteValue(lint32); + binaryWriter.WriteValue(luint32); + binaryWriter.WriteValue(lint64); + binaryWriter.WriteValue(luint64); + binaryWriter.WriteValue(linte8); + binaryWriter.WriteValue(linte16); + binaryWriter.WriteValue(linte32); + binaryWriter.WriteValue(linte64); + binaryWriter.WriteValue(lnum8); + binaryWriter.WriteValue(lnum16); + binaryWriter.WriteValue(lnum32); + binaryWriter.WriteValue(lnum64); + binaryWriter.WriteValue(lnfloat32); + binaryWriter.WriteValue(lnfloat64); + binaryWriter.WriteValue(lfloat); + binaryWriter.WriteValue(ldouble); + binaryWriter.WriteValue(lstring); + binaryWriter.WriteValue(lunion); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out bool); + binaryReader.ReadValue(out int8); + binaryReader.ReadValue(out uint8); + binaryReader.ReadValue(out int16); + binaryReader.ReadValue(out uint16); + binaryReader.ReadValue(out int32); + binaryReader.ReadValue(out uint32); + binaryReader.ReadValue(out int64); + binaryReader.ReadValue(out uint64); + binaryReader.ReadValue(out inte8); + binaryReader.ReadValue(out uinte8); + binaryReader.ReadValue(out inte16); + binaryReader.ReadValue(out uinte16); + binaryReader.ReadValue(out inte32); + binaryReader.ReadValue(out uinte32); + binaryReader.ReadValue(out inte64); + binaryReader.ReadValue(out uinte64); + binaryReader.ReadValue(out num8); + binaryReader.ReadValue(out unum8); + binaryReader.ReadValue(out num16); + binaryReader.ReadValue(out unum16); + binaryReader.ReadValue(out num32); + binaryReader.ReadValue(out unum32); + binaryReader.ReadValue(out num64); + binaryReader.ReadValue(out unum64); + binaryReader.ReadValue(out numfloat); + binaryReader.ReadValue(out numdouble); + binaryReader.ReadValue(out float); + binaryReader.ReadValue(out double); + binaryReader.ReadValue(out string1); + binaryReader.ReadValue(out string2); + binaryReader.ReadValue(out union); + binaryReader.ReadValue(out lbool); + binaryReader.ReadValue(out lint8); + binaryReader.ReadValue(out luint8); + binaryReader.ReadValue(out lint16); + binaryReader.ReadValue(out luint16); + binaryReader.ReadValue(out lint32); + binaryReader.ReadValue(out luint32); + binaryReader.ReadValue(out lint64); + binaryReader.ReadValue(out luint64); + binaryReader.ReadValue(out linte8); + binaryReader.ReadValue(out linte16); + binaryReader.ReadValue(out linte32); + binaryReader.ReadValue(out linte64); + binaryReader.ReadValue(out lnum8); + binaryReader.ReadValue(out lnum16); + binaryReader.ReadValue(out lnum32); + binaryReader.ReadValue(out lnum64); + binaryReader.ReadValue(out lnfloat32); + binaryReader.ReadValue(out lnfloat64); + binaryReader.ReadValue(out lfloat); + binaryReader.ReadValue(out ldouble); + binaryReader.ReadValue(out lstring); + binaryReader.ReadValue(out lunion); + } + } + public class testnull : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 36; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + } + public void Deserialize(BinaryReader binaryReader) + { + } + } + public class person1 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize + { + public const int ProtoId = 1001; + public string name; + public int id; + public string email; + public List phone; + + public byte[] Serialize() + { + using var memoryStream = new MemoryStream(); + using var binaryWriter = new BinaryWriter(memoryStream); + Serialize(binaryWriter); + return memoryStream.ToArray(); + } + + public void Deserialize(byte[] data) + { + using var memoryStream = new MemoryStream(data); + using var binaryReader = new BinaryReader(memoryStream); + Deserialize(binaryReader); + } + public void Serialize(BinaryWriter binaryWriter) + { + binaryWriter.WriteValue(name); + binaryWriter.WriteValue(id); + binaryWriter.WriteValue(email); + binaryWriter.WriteValue(phone); + } + public void Deserialize(BinaryReader binaryReader) + { + binaryReader.ReadValue(out name); + binaryReader.ReadValue(out id); + binaryReader.ReadValue(out email); + binaryReader.ReadValue(out phone); + } + } +} \ No newline at end of file diff --git a/test/protoMsg.hrl b/test/protoMsg.hrl index a092bf3..442cf12 100644 --- a/test/protoMsg.hrl +++ b/test/protoMsg.hrl @@ -8,14 +8,14 @@ -opaque uint64() :: 0..18446744073709551615. -opaque double() :: float(). --define(ERR1, 1). %% 辅导费 --define(ERR2, 2). %% 444 --define(ERR3, 3). %% 辅导费 --define(ERR4, 4). %% dfsf --define(ERR5, 5). %% 其他注释辅导费 err6:dfff --define(ERR7, 6). %% def --define(ERR8, 7). %% 其他注释辅导费 --define(ERR6, 1001). %% dfff +-define(ERR1, 1001). %% 辅导费 +-define(ERR2, 1002). %% 444 +-define(ERR3, 1003). %% 辅导费 +-define(ERR4, 1004). %% dfsf +-define(ERR5, 1005). %% 其他注释辅导费 +-define(ERR6, 1006). %% dfff +-define(ERR7, 1007). %% def +-define(ERR8, 1008). %% 其他注释辅导费 -record(test, {