From 425bce25a1d564e150aab7ef99fc9c1880730bde Mon Sep 17 00:00:00 2001 From: Artem3213212 Date: Fri, 9 Mar 2018 16:41:34 +0300 Subject: [PATCH] Correct UTF-8 --- DOC_EN.MD | 45 +++++++++++++++++++++++++++++++ DOC_EN.TXT | 45 ------------------------------- DOC_JP.MD | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ DOC_JP.TXT | Bin 19404 -> 0 bytes DOC_RU.MD | 54 +++++++++++++++++++++++++++++++++++++ DOC_RU.TXT | 45 ------------------------------- 6 files changed, 177 insertions(+), 90 deletions(-) create mode 100644 DOC_EN.MD delete mode 100644 DOC_EN.TXT create mode 100644 DOC_JP.MD delete mode 100644 DOC_JP.TXT create mode 100644 DOC_RU.MD delete mode 100644 DOC_RU.TXT diff --git a/DOC_EN.MD b/DOC_EN.MD new file mode 100644 index 0000000..d30bf91 --- /dev/null +++ b/DOC_EN.MD @@ -0,0 +1,45 @@ +##Description of functions inside FASM.DLL + +#fasm_GetVersion() + Returns double word containg major version in lower 16 bits, and minor version in the higher 16 bits. + +#fasm_Assemble(lpSource,lpMemory,cbMemorySize,nPassesLimit,hDisplayPipe) + Assembles the given source, using the provided memory block as a free storage space(which is also to contain generated output). + The lpSource should contain a pointer to zero-ended source text(pansichar). + The lpMemory should be a pointer to the memory block and cbMemorySize should contain its size. In the beginning of this memory block the FASM_STATE(TFASM_STATE in Delphi) structure will reside. The assembler doesn't allocate any memory beside this block, if it is not enough for its purposes, the function return FASM_OUT_OF_MEMORY. + The nPassesLimit should be a value in range from 1 to 65536, defining the maximum number of passes the assembler can perform in order to generate the code(the recommended value is 100). If the limit is reached, the function return FASM_CANNOT_GENERATE_CODE. + The hDisplayPipe should contain handle of the pipe, to which the output of DISPLAY directives will be written. If this parameter is 0, all the display will get discarded. + If the assembly is successful, function returns FASM_OK value and fills the output_data and output_length fields of the FASM_STATE structure(which resides at the beginning of provided memory block). + If the assembly failed, function returns one of the other general conditions/errors codes(see "General errors and conditions" in Fasm4Delphi.pas). If if error code is FASM_ERROR, it means that an error caused by a specific place in source occured, then the error_code and error_line fields of FASM_STATE are filled, first one with detailed error code(see "Error codes for FASM_ERROR condition" in Fasm4Delphi.pas), and the second one with pointer to a structure containing data about line that caused the error(see "TLINE_HEADER" in Fasm4Delphi.pas). + +#fasm_AssembleFile(lpSourceFile,lpMemory,cbMemorySize,nPassesLimit,hDisplayPipe) + This function performs identically to fasm_Assemble, except that it takes the lpSourceFile parameter in place of lpSource, and it shall contain the pointer to zero-ended path to file containing the source to assemble(pansichar). + +******************************************** +##Description of structures used in FASM.DLL + + The following structure resides at the beginning of memory block provided to the fasm_Assemble function. The condition field contains the same value as the one returned by function. + When function returns FASM_OK condition, the output_length and output_data fields are filled - with pointer to generated output(somewhere within the provided memory block) and the count of bytes stored there. + When function returns FASM_ERROR, the error_code is filled with the code of specific error(see "Error codes for FASM_ERROR condition" in Fasm4Delphi.pas) that happened and error_line is a pointer to the LINE_HEADER structure, providing information about the line that caused the error. + + TFASM_STATE=record + condition:Int32; + case byte of + 0:(error_code:Int32; + error_line:PLINE_HEADER;); + 1:(output_length:cardinal; + output_data:pointer;); + end; + + The following structure has two variants - it either defines the line that was loaded directly from source, or the line that was generated by macroinstruction. First case has the highest bit of line_number set to 0, while the second case has this bit set. + In the first case, the file_path field contains pointer to the path of source file(empty string if it's the source that was provided directly to fasm_Assemble function), the line_number is the number of line within that file(starting from 1) and the file_offset field contains the offset within the file where the line starts. + In the second case the macro_calling_line field contains the pointer to LINE_HEADER structure for the line which called the macroinstruction, and the macro_line field contains the pointer to LINE_HEADER structure for the line within the definition of macroinstruction, which generated this one. + + TLINE_HEADER=record + file_path:PAnsiChar; + line_number:cardinal; + case byte of + 0:(file_offset:cardinal); + 1:(macro_calling_line:^TLINE_HEADER; + macro_line:^TLINE_HEADER;); + end; \ No newline at end of file diff --git a/DOC_EN.TXT b/DOC_EN.TXT deleted file mode 100644 index ddcd17e..0000000 --- a/DOC_EN.TXT +++ /dev/null @@ -1,45 +0,0 @@ -Description of functions inside FASM.DLL - -fasm_GetVersion() - Returns double word containg major version in lower 16 bits, and minor version in the higher 16 bits. - -fasm_Assemble(lpSource,lpMemory,cbMemorySize,nPassesLimit,hDisplayPipe) - Assembles the given source, using the provided memory block as a free storage space(which is also to contain generated output). - The lpSource should contain a pointer to zero-ended source text(pansichar). - The lpMemory should be a pointer to the memory block and cbMemorySize should contain its size. In the beginning of this memory block the FASM_STATE(TFASM_STATE in Delphi) structure will reside. The assembler doesn't allocate any memory beside this block, if it is not enough for its purposes, the function return FASM_OUT_OF_MEMORY. - The nPassesLimit should be a value in range from 1 to 65536, defining the maximum number of passes the assembler can perform in order to generate the code(the recommended value is 100). If the limit is reached, the function return FASM_CANNOT_GENERATE_CODE. - The hDisplayPipe should contain handle of the pipe, to which the output of DISPLAY directives will be written. If this parameter is 0, all the display will get discarded. - If the assembly is successful, function returns FASM_OK value and fills the output_data and output_length fields of the FASM_STATE structure(which resides at the beginning of provided memory block). - If the assembly failed, function returns one of the other general conditions/errors codes(see "General errors and conditions" in Fasm4Delphi.pas). If if error code is FASM_ERROR, it means that an error caused by a specific place in source occured, then the error_code and error_line fields of FASM_STATE are filled, first one with detailed error code(see "Error codes for FASM_ERROR condition" in Fasm4Delphi.pas), and the second one with pointer to a structure containing data about line that caused the error(see "TLINE_HEADER" in Fasm4Delphi.pas). - -fasm_AssembleFile(lpSourceFile,lpMemory,cbMemorySize,nPassesLimit,hDisplayPipe) - This function performs identically to fasm_Assemble, except that it takes the lpSourceFile parameter in place of lpSource, and it shall contain the pointer to zero-ended path to file containing the source to assemble(pansichar). - -******************************************** -Description of structures used in FASM.DLL - - The following structure resides at the beginning of memory block provided to the fasm_Assemble function. The condition field contains the same value as the one returned by function. - When function returns FASM_OK condition, the output_length and output_data fields are filled - with pointer to generated output(somewhere within the provided memory block) and the count of bytes stored there. - When function returns FASM_ERROR, the error_code is filled with the code of specific error(see "Error codes for FASM_ERROR condition" in Fasm4Delphi.pas) that happened and error_line is a pointer to the LINE_HEADER structure, providing information about the line that caused the error. - -TFASM_STATE=record - condition:Int32; - case byte of - 0:(error_code:Int32; - error_line:PLINE_HEADER;); - 1:(output_length:cardinal; - output_data:pointer;); -end; - - The following structure has two variants - it either defines the line that was loaded directly from source, or the line that was generated by macroinstruction. First case has the highest bit of line_number set to 0, while the second case has this bit set. - In the first case, the file_path field contains pointer to the path of source file(empty string if it's the source that was provided directly to fasm_Assemble function), the line_number is the number of line within that file(starting from 1) and the file_offset field contains the offset within the file where the line starts. - In the second case the macro_calling_line field contains the pointer to LINE_HEADER structure for the line which called the macroinstruction, and the macro_line field contains the pointer to LINE_HEADER structure for the line within the definition of macroinstruction, which generated this one. - -TLINE_HEADER=record - file_path:PAnsiChar; - line_number:cardinal; - case byte of - 0:(file_offset:cardinal); - 1:(macro_calling_line:^TLINE_HEADER; - macro_line:^TLINE_HEADER;); -end; \ No newline at end of file diff --git a/DOC_JP.MD b/DOC_JP.MD new file mode 100644 index 0000000..7e419aa --- /dev/null +++ b/DOC_JP.MD @@ -0,0 +1,78 @@ +Description of functions inside FASM.DLL +Описание функций FASM.DLL +FASM.DLLから関数の説明です。 + +fasm_GetVersion() + Returns double word containg major version in lower 16 bits, and minor version in the higher 16 bits. + Возвращает двойное слово(dword) содержащее основную чать версии в младших 16 битах, и подверсию в сташих 16 битах. + Dwordを返します。16ビット下位は重要なバージョン番号含みます。16ビット上位はサブバージョン番号含みます。 + +fasm_Assemble(lpSource,lpMemory,cbMemorySize,nPassesLimit,hDisplayPipe) + Assembles the given source, using the provided memory block as a free storage space(which is also to contain generated output). + Ассемблирует переданный исходный код, используя переданный блок памяти как рабочее пространство(вывод также будет находиться в нём). + ソースをアセンブルします。ワークスペースいるにメモリブロックが渡できるをつかいます(そのメモリブロックのまん中に出力があります)。 + The lpSource should contain a pointer to zero-ended source text(pansichar). + lpSource должен содержать указатель на оканчивающийся нулём(zero-ended) исходный код(pansichar). + lpSourceはソースへポインタです(pansichar)。終わりの文字の値はゼロです。 + The lpMemory should be a pointer to the memory block and cbMemorySize should contain its size. In the beginning of this memory block the FASM_STATE(TFASM_STATE in Delphi) structure will reside. The assembler doesn't allocate any memory beside this block, if it is not enough for its purposes, the function return FASM_OUT_OF_MEMORY. + lpMemory должен содержать указатель на блок памяти,а cbMemorySize должен содержать его размер. Вначале этого блока будет создана структура FASM_STATE(TFASM_STATE в Delphi). Ассемблер не выделяет память вне этого блока, если её недостаточно функция вернёт FASM_OUT_OF_MEMORY. + lpMemoryはソースへメモリブロックです。cbMemorySizeはそのメモリブロックのサイズです。メモリブロックのはじめにFASM_STATEのレコードがあいます(DelphiのためにTFASM_STATEです)。アセンブラーはメモリ緒の割り当てを行いません。メモリを不足すが関数がFASM_OUT_OF_MEMORYを返します。 + The nPassesLimit should be a value in range from 1 to 65536, defining the maximum number of passes the assembler can perform in order to generate the code(the recommended value is 100). If the limit is reached, the function return FASM_CANNOT_GENERATE_CODE. + nPassesLimit должен быть в диапозоне от 1 до 65536. Он задёт максимальное количество проходов, которые ассемблер может выполнить во время генерации кода (рекомендованая величина 100). Если лимит достигнут, функция вернёт FASM_CANNOT_GENERATE_CODE. + nPassesLimitは1から65536まで値があります。nPassesLimitは最大のアセンブルの段階です(デフォルトの値100).最大の段階を到達するが関数がFASM_CANNOT_GENERATE_CODEを返します。 + The hDisplayPipe should contain handle of the pipe, to which the output of DISPLAY directives will be written. If this parameter is 0, all the display will get discarded. + hDisplayPipe должен содержать handle pipe'а, в котрорый будет записан вывод на экран. Если это праметр равен 0, весь вывод будет отброшен. + hDisplayPipeにpipeのhandleがあります。pipeは表示の出力。hDisplayPipeがゼロが出力がありません。 + If the assembly is successful, function returns FASM_OK value and fills the output_data and output_length fields of the FASM_STATE structure(which resides at the beginning of provided memory block). + Если ассемблирование пройдёт удачно, функция вернёт FASM_OK и заполнит output_data и output_length в структуре FASM_STATE(которая находится в начале выделнного блока памяти). + アセンブルは成功するが返がFASM_OKです。FASM_STATEレコードのoutput_dataとoutput_lengthがあります(これはメモリブロックの初めてにです)。 + If the assembly failed, function returns one of the other general conditions/errors codes(see "General errors and conditions" in Fasm4Delphi.pas). If if error code is FASM_ERROR, it means that an error caused by a specific place in source occured, then the error_code and error_line fields of FASM_STATE are filled, first one with detailed error code(see "Error codes for FASM_ERROR condition" in Fasm4Delphi.pas), and the second one with pointer to a structure containing data about line that caused the error(see "TLINE_HEADER" in Fasm4Delphi.pas). + Если ассемблирование неудалось, функция вернёт один из других основных кодов ошибок(см. "General errors and conditions" в Fasm4Delphi.pas). Если код ошибки - FASM_ERROR, это значит что ошибка произошла в определённом месте кода, тогда поля error_code and error_line FASM_STATE'а будут заполнены, первое из них будет содержать детальный код ошибки(см. "Error codes for FASM_ERROR condition" в Fasm4Delphi.pas),а вторая - указатель(pointer) на структуру содержащую информацию о строке в котрой произошла ошибка(см. "TLINE_HEADER" в Fasm4Delphi.pas). + アセンブルは成功しないが関数がエラーコードを返します(Fasm4Delphi.pasへ「General errors and conditions」を見る)。FASM_ERRORはコードへエラーを意味する。それからFASM_STATEのerror_codeとerror_lineがあります。error_codeは二番エラーコード(Fasm4Delphi.pasへ「Error codes for FASM_ERROR condition」を見る)。error_lineはエラーの文字列のレコードへポインタ(Fasm4Delphi.pasへ「TLINE_HEADER」を見る)。 +fasm_AssembleFile(lpSourceFile,lpMemory,cbMemorySize,nPassesLimit,hDisplayPipe) + This function performs identically to fasm_Assemble, except that it takes the lpSourceFile parameter in place of lpSource, and it shall contain the pointer to zero-ended path to file containing the source to assemble(pansichar). + Эта функция работает идентично fasm_Assemble, но в отличии от неё принимает параметр lpSourceFile вместо lpSource. Этот параметр должен содержать указатель(pointer) на оканчивающийся нулём(zero-ended) путь до файла содержащего исходный код для ассемблирования(pansichar). + この関数は同じにfasm_Assembleです。でも、一番パラメータはlpSourceFileあります。lpSourceFileはソースファイルの名前へポインタです(pansichar)。終わりの文字の値はゼロです。 + +******************************************** +Description of structures used in FASM.DLL +Описание структур используемых FASM.DLL +FASM.DLLからエラーコードの説明です。 + + The following structure resides at the beginning of memory block provided to the fasm_Assemble function. The condition field contains the same value as the one returned by function. + Следующая структура находится в начале блока памяти передаваемого в fasm_Assemble. Поле condition содержит тоже значение которое возвращается функцией. + fasm_Assembleのためにメモリブロックの初めてにこのエラーコードがあります。conditionは同じ関数の返です。 +  When function returns FASM_OK condition, the output_length and output_data fields are filled - with pointer to generated output(somewhere within the provided memory block) and the count of bytes stored there. +  Когда функция возвращает FASM_OK, поля output_length и output_data заполнены указателем(pointer) на результат ассемблирования(он находится внутри блока памяти внутри блока памяти) и длинной этого блока памяти соответственно. +  返がFASM_OKありますがoutput_lengthとoutput_dataはアセンブルの返へポインタ(これがメモリブロックのまん中に)と出力のサイズです。 +  When function returns FASM_ERROR, the error_code is filled with the code of specific error(see "Error codes for FASM_ERROR condition" in Fasm4Delphi.pas) that happened and error_line is a pointer to the LINE_HEADER structure, providing information about the line that caused the error. +  Когда функция возвращает FASM_ERROR - error_code содержит детальный код ошибки(см. "Error codes for FASM_ERROR condition" в Fasm4Delphi.pas), а error_line - указатель(pointer) на структуру LINE_HEADER, передающую информацию о строке в которой произошла ошибка. +  返がFASM_ERRORありますがerror_codeは二番です(Fasm4Delphi.pasへ「Error codes for FASM_ERROR condition」を見る)。error_lineはLINE_HEADERのレコードへポインタ。LINE_HEADERは文字列のインフォメーションあります。 + +TFASM_STATE=record + condition:Int32; + case byte of + 0:(error_code:Int32; + error_line:PLINE_HEADER;); + 1:(output_length:cardinal; + output_data:pointer;); +end; + + The following structure has two variants - it either defines the line that was loaded directly from source, or the line that was generated by macroinstruction. First case has the highest bit of line_number set to 0, while the second case has this bit set. + Следующая структура имеет два варианта - она либо определяет строку, котрая была загружена непосредственно из исходного кода, либо линию,которая была сгенерирована макроинструкцией. В первом случае старший бит line_number'а установлен в 0, в то время как во втором этот бит установлен в 1. + このレコードは二つのバリエーション。一番バリアントはTLINE_HEADERがソースに文字列をあります。二番バリアントはTLINE_HEADERがマクロ命令の文字列をあります。一番バリアントはline_numberのビット上位に0です。二番バリアントはline_numberのビット上位に1です。 +  In the first case, the file_path field contains pointer to the path of source file(empty string if it's the source that was provided directly to fasm_Assemble function), the line_number is the number of line within that file(starting from 1) and the file_offset field contains the offset within the file where the line starts. +  В первом случае, поле file_path содержит указатель(pointer) на путь до файла с исходным кодом(пустая строка означает, что это исходный код переданный в fasm_Assemble), line_number - номер строки в этом файле(считая с 1), а поле file_offset содержит смешение в файле, на котором начинается строка. +  一番バリアントはfile_pathがソースのファイル名へポインタ(空文字列がlpSourceです)。line_numberは文字列の番号(一番は1)。file_offsetは文字列の初めてに文字の番号です。 +  In the second case the macro_calling_line field contains the pointer to LINE_HEADER structure for the line which called the macroinstruction, and the macro_line field contains the pointer to LINE_HEADER structure for the line within the definition of macroinstruction, which generated this one. +  Во втором случае поле macro_calling_line содержит указатель(pointer) на структуру TLINE_HEADER для строки, которую вызывает макроинструкция, а поле macro_line содержит указатель(pointer) на структуру TLINE_HEADER для строки, в которой находится макроинструкция, указывающая на текущую. +  一番バリアントはmacro_calling_lineがTLINE_HEADERのレコードへポインタのためにつぎのマクロ命令の呼びです。macro_lineがTLINE_HEADERのレコードへポインタのために前のマクロ命令の呼びです. + +TLINE_HEADER=record + file_path:PAnsiChar; + line_number:cardinal; + case byte of + 0:(file_offset:cardinal); + 1:(macro_calling_line:^TLINE_HEADER; + macro_line:^TLINE_HEADER;); +end; \ No newline at end of file diff --git a/DOC_JP.TXT b/DOC_JP.TXT deleted file mode 100644 index caee2f12c9305ecf001548e5e84a365248ecb0d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19404 zcmd6vO^jUGRmUH#T6jVXGZQ6|kO-A%q-jIO+-|$aPTSp{{;(a(?QT!IVPZu|%XYi{ zUDfJt$Igfe8a8A;z+eQMED$3WK|;zR8ih|~!Gd9d6kw7CQX&N*MPZ0oWDyA=n*Z;f zI(_eZ^Z(`w-Fxo6=lswAoO7Rd{&&8(Tx=DWip}C$u~BU6y<2pOw%*tE zzFyqcw@bU%w{-2Au59UjO?S476U9t%t~gWdFXoE{z4jLGD?ZXX);ippX@%C5{!X;o z#e8c{pC?-<^!*e1UUygZ+Uf90c;gQ@E_cG8zxs3QSHk%)66l?O>%|4haI07?PD+aH z;@9=Q8Kpw{(PCe0RfOgE>uvpp%x%fs)r>9{H>2!#^leku+L|HvZL3#icSToj>GSpY zd%O5tsdrm}w)*H6cj7PYVyt*p_gvK7+ZyNN`g}qC(DSX>BjYsnvt3+`(p*)`EAcaJ z%RTPz&F9J1bn8%Sy!D*c_LTljv}U!M2X$py>pG=(R(qy(M4z}eDj9s1`_$`et!UftDj(g}1`bE}mKHhJXD1 zmtVOaz7hT>{6+X)_+hwy`$y+~W#u>fTE8#0elvWlv2DL*&1fgLv@^GQ`ZB5=-;l1O zL7UQ;%i3qIoQZAN;m_;JCAH44oYStp7~6J=vr%j5b4!+TE$YU$?zt-4xu$Cy>hFSj zIje6QYUNs7l>|+8t+}GM=qEP2Rg$eOIk8jIXK%kDIlH>U?AJ7uIhy?FFnWEdxS{^A zG2X#}O^t!QZ)s%OUXZTZ_YHk!HAb~#=tR4I4=wABU)?egd zeYZ7#-uDSt*qI_cE*+hbE*@=-N&gN@gXi=O?LQVZbV3>l-b}SlM}z@?jzA$+uRC7jVO_rqE^9pG z?eM4C`>zK)xAFF{KBU@;iXvFwvU6nrbK3{m&%^C|6q!a`&O4?B7}?ir6kIzyyp`FsY>Lso_L zD`Gb*#c^rc$}VTguR9ljMWJtu!d`=tn?f*{6W)TgyQAN3>eY_lnFZR-EZmB~+uY+| z6)+b3MW=XLeX#@d0YV#Ma-}1m0n;e2Ja;)uOY=|o4ia9AERU6S#O|nXzF~bJF^mNK zHwNQ-06K4KzTGIVF&T9U(?)IizQuKmDfD3e@n%3aef!|tNs

?se0sjuFRN(Gk2N@{m0`v5xWIfJlHl#|hmWEu2`9_m&#V(bZSHrp0b@}myFXF{NEpI*2`~7~{yZF`LIj@n4p%yavnyoHp+QzyZnVPt36|<9< z_*_J)+rkmYNH`u`lq>Mbt`Ljp!9D-8#e`l5#PHD}uyI}Zl#txZpNAB2u-grZpK)PYvpZ+N8UO4wMD&_BL1Ef@-FJ% za?jhX7IXS#URRubH}8KL9mj+n9yfy3hlN)#?L+!!s4*Qan_cJ5wszZhowtGK9j_UKIkmIm$6&ziN$N^5l=Rp~`H^>6Jb_Q-Nnur!%q9v&FoTTHgB*!f8us2%8_}9`% zD5WvXgg}g&aufN8U?E)5T7aa6mTSAX(Y&H%+^CDi%B$+@__VB-wS?7}T@!I*+2j>- zCIyP5JfvB*N8nf?d~7mW?^I-K$>xmN7?!|%Kn3^_mQFqkjIy=j+e|M{mg4(d3Xo?^ zcTX!{#+{C+O)GOF_)I$?UxD1ZyhS%${o>^3J25&RQS16F(n5^+7D_R^F$MGSWq(ul zk;E0I8(Z?Sm-IsGw&bC1OWWCp!9E8KP0VPiIIZuw_cObp7mJN@Z=Ku3s&tHahg_83 zQ~n*>gI!=z)*lhsTC|a}MJ9O?Q>%;E%K0oT&*LeiM4DtH&5`Hu`L>j~NSavoRAjx} zi&$RW@=c%E^_Jw4h&W)^?9Q;h!FC1@W>$k|HQ!gx$L0G#>p^?qxn44L9=+gw>(+lX z^U>xX%ek;T6P8C*DOMr#R~K95dAqd2&ZyrJpMLz}A1|9ndHY_OC!a1XTBwuQnY|(a z*@EXQ)B0SkT+j70+47#9bK&(}PVX7IPWZ*;m&3ZE3XcGWvs9`g*pc(X2iqo954=>_ zLdXEXF5$;H-@U2t=KDZ=uN7?-zZ%=Z=&8Y28<_BxSP=OPM)+8))HrjdC;CtKxK-En z|1q^TK7K+or0#RD6w&UNhvj{+HHUD_FI3Cl{FH@sf3udZRfmdNAURyVKu{IuuMB2IWJMr^CaCl#g5#8_=vHs+f3U^_8H8Q#+n>6mw+A_C`O zO$YlIVj-d%a^Hvaeo+2vPO*#C4fCqw=~zjG&sm&AzMTpowUtR#F=xcWhz}nXMes=v zUYmB2*2QE>@=QvqwyG1kA4^)wnmBtrq?zNZEOt979!Lb~^P-yI(JHIMb?U0dY^TLs zi61Qw_q=+-yB*c9uu-C2kAU&_jB1%hi#;uNB}Ps9Gdx}->r2=G>vncc+*#%c@Y>T+ z3aiDzvXRer9Uc+u#8H1N!mi`{Rt57I-}rpp>gU?YRtPmj~T9LQc;HZ(=xdv*p}Fcta7APH(9$Y^YuY zNAlzywu-&VjK22DYcYqKv^rU9w zRzdvma>{6@`r|P2HtASCJ|1aZUeM0<%;+y3+H^0Uof32H++$ES;hg4D;PtCYuwPU&QM`))ta}j4eYZn z>jSsUd8x$#)n1Ur*^`Y;b>H(uW#*H(Y8n50#`X1mq=WN#D;Ouc?X0iLtDGN|8MLh_ z8kB3!;QIPA!g73DmC1naun&GUpLIBT<0)MsYisqZ!TV=zz)HJhs9o;2Wy#;7!cZ#_aF+!I`*+@otZPPU4unpXJ<+XNrZe+qS^fM$^;CoBA3?s{268srKQqHeJG1@vJ;OrVwIaL_wF`EIS$vnWUG=Oc&yrG8 ztDa*ed&4<^%khjXOdIR)UJd1ZKK=IGWc$RFK108owZf(?SI0>La+1iz%7RE_X-z`A zhi|SaMfe42*8$mA9Ve>Oyy|YTGb#U2Uib3e^w$s4zT{O1%P#cC*jQw9l#T6jwwDtF za5(tZplS*nfHMkB$YJ$%cp7;SI~B|tl~Kb^(9cFb*WAudgBmx1_rVj1+AVWrXUUq! zfCIths6EccT#(fy=_T!Be=Wm##=?NgM73(+JJKyx?BBkZxQA6R78*|uKelrUv>!0J5Gavq1E`rlqUMWJplm++EJX4a- z>_OS^r00)OFNv#}eop}uW5p8Y3t$I}9w zuOc4(T6|i{*CahxSAPz5Dl!Hvg7ZCKcUv#Mm+Ntp@jU*v&Tx(wN3wRTCs^!E#Olr7 zPbemp)vMc;`u-TZUau$PX{ox(*b&u+lSE^2#Aa?X88dav6&xeamF~6C%lEpMoUGt# z8Wn_I>-A#3Z>1My4I4Lt^%g(zJfB5Yob&?m?YRhS+Ol((<6p1f;|KA7y1XEX&0n$(utc6_xEU+l>HKbpngjZw#$t$vQrAY)+llRS#H zr&Ecr$ewsj8gF45mR8B;NT$}FsiYTwLeumw)nQk)Hk>8)GsN^|8CO=?PI}p?J8M<$B^*k^m5mZ*pM)QvH=t4BoXejW)=wx;jj&=Y@O-bMP6n2qGx8}b5gDI3{T zky+?HUv{JCH}3B~^*0hLRm1i19X)6GgYeSIzb|^_DDQ{NXx>l#8h3&{>C3abH^SpP zmQSEs_OSOp(Yx29j#IMtgi&B)6-n~A!eWQZdO|5xDY#~N1NVbop#WhAv+LB0#~OGO zd!pDQ73y5nzNq|AEiw!Q!#P!AXPdzKr%Q;QV{y)=9o2KD-h}KAs!R3fZ}yd*L8#wL zk3AeY%XsTmC-YG$KI3~n58nwQFxGoh@4hC z$K%H&AMD0QKz{SRT=gD&U2HE+_N`qDF2Z1ZGFI(5MIR~G$o?qhVX8KRYc7^aPft^W zREFiC)~IqIj#4QbYjq&}k7qQkj>b&Wmo%Xr~O(%zJHrhk7p(=^dL z6>gbcMo(kXw|VpA70pX<)t?)&98h)LongokRq!&&=Q!ku-%)g6^`*Tld4A``7kPU4 z!+QR^TEPO5_Z8Hw%yP?XogxqZSB5=1NW!xtRHc#>`6{J5JpXLZEpvZ4n|x{)8L+V? z9_F@}_#~$_tZr?%k!MGcsTtF~uX=2+kG&kX%g+H@UZf5g@+U)F&OB3V|0~HLW{l2M zkuRUU@0983|MzV1U@&w?dG<0zEBspi-)PcIxTilZVD|YM)fT28&L4*1|1`##w^rAnjWF{dvlvd~kQ5-*K*}t)})q6rYAJzBg-HmcaS);l!Y{szZCVi~W7$wwq-$TY`Cff2f zJ#$L*zM17(T>7$K8I+w#F?fBhiR_K#o02TK2kP%T&l_>K<&N?-Zra(&;