Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Oct 2002 23:11:41 +0200 (CEST)
From:      jd@europeonline.net
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        jd@europeonline.net
Subject:   kern/44064: Linux IPC emulation fails for recent progs (patch included)
Message-ID:  <200210142111.g9ELBflP017240@io.europeonline.net>

next in thread | raw e-mail | index | archive | help

>Number:         44064
>Category:       kern
>Synopsis:       Linux IPC emulation fails for recent progs (patch included)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 14 14:20:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Joerg Dorchain
>Release:        FreeBSD 4.7-STABLE i386
>Organization:
Europe Online
>Environment:
System: FreeBSD io.europeonline.net 4.7-STABLE FreeBSD 4.7-STABLE #1: Fri Oct 11 15:35:52 CEST 2002 root@io.europeonline.net:/usr/obj/mnt/src/sys/VALINUX-ZENDSHM i386


>Description:

The attached semtest.c, compile on Linux to the attached semtest binary, is the
most simplest program I can easily get to reproduce the problem: Linux kernel
api changed and some fields are bigger now for IPC structures.

>How-To-Repeat:
Execute the attached semtest binary under the linux-emulation. The error
is shown.

>Fix:

The attached patch is in a works-for-me-state and shows what has changed.
It may need some beautyfication as I am completely new the FreeBSD kernel
hacking (only done Linux before ;)

--- semtest.c begins here ---
# include <sys/types.h>
# include <sys/ipc.h>
# include <sys/sem.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

       union semun {
               int val;                    /* value for SETVAL */
               struct semid_ds *buf;       /* buffer for IPC_STAT,
IPC_SET */
               unsigned short int *array;  /* array for GETALL, SETALL */
               struct seminfo *__buf;      /* buffer for IPC_INFO */
       };



int main(int arc, char ** argv)
{
    union semun ick;
    struct semid_ds buf;
    int sem_id;
    int i;

    /* acquire the semaphore */
    sem_id = semget(IPC_PRIVATE, 1, IPC_CREAT | 0600);
    printf("semid %d\n",sem_id);
    if (sem_id < 0) {
        perror("semget");
        exit(1);
    }
    ick.val = 1;
    if ((i=semctl(sem_id, 0, SETVAL, ick)) < 0) {
        perror("semctl(SETVAL)");
        exit(1);
    }
    printf("setval return %d\n",i);
    if (1) {
        /* restrict it to use only by the appropriate user_id ... not
that this
         * stops CGIs from acquiring it and dinking around with it.
         */
        buf.sem_perm.uid = 99;
        buf.sem_perm.gid = 98;
        buf.sem_perm.mode = 0600;
        ick.buf = &buf;
        if ((i=semctl(sem_id, 0, IPC_SET, ick)) < 0) {
            perror("semctl(IPC_SET)");
            exit(1);
        }
	printf("ipcset return %d\n",i);
    }
return 0;
}
--- semtest.c ends here ---

begin 644 semtest
M?T5,1@$!`0,```````````(``P`!````4(0$"#0```"D;P```````#0`(``&
M`"@`'@`;``8````T````-(`$"#2`!`C`````P`````4````$`````P```/0`
M``#T@`0(](`$"!,````3````!`````$````!``````````"`!`@`@`0([`8`
M`.P&```%`````!````$```#L!@``[)8$".R6!`CX````$`$```8`````$```
M`@```$0'``!$EP0(1)<$"*````"@````!@````0````$````"`$```B!!`@(
M@00((````"`````$````!````"]L:6(O;&0M;&EN=7@N<V\N,@``!````!``
M```!````1TY5```````"`````@````4````#````#`````L````'````"@``
M``````````````````$````#``````````4````$`````@````@````&````
M"0````````````````````````"#````N(,$"($````B````*````,B#!`CI
M`0``$@```#X```#8@P0(K````"(```!Q````Z(,$",8````2````&@```/B#
M!`@N````$@```"\````(A`0(@0```"(```!=````&(0$"/4````2````(0``
M`"B$!`A2````$@```%8````XA`0(;0(``!(```!B````E(8$"`0````1``X`
M`0``````````````(`````!?7V=M;VY?<W1A<G1?7P!L:6)C+G-O+C8`<')I
M;G1F`'-E;6=E=`!P97)R;W(`7U]C>&%?9FEN86QI>F4`7U]D97)E9VES=&5R
M7V9R86UE7VEN9F\`<V5M8W1L`&5X:70`7TE/7W-T9&EN7W5S960`7U]L:6)C
M7W-T87)T7VUA:6X`7U]R96=I<W1E<E]F<F%M95]I;F9O`$=,24)#7S(N,@!'
M3$E"0U\R+C$N,P!'3$E"0U\R+C```````@`"``(``@`"``,``@`"``0``0``
M`````0`#`!`````0`````````!)I:0T```0`F0```!````!S'VD)```#`*,`
M```0````$&EI#0```@"O`````````$"7!`@&"P``')<$"`<!```@EP0(!P(`
M`"27!`@'`P``*)<$"`<$```LEP0(!P4``#"7!`@'!@``-)<$"`<'```XEP0(
M!P@``#R7!`@'"0``58GE@^P(Z-D```"0Z&\!``#HB@(``,G#_S44EP0(_R48
MEP0(`````/\E')<$"&@`````Z>#_____)2"7!`AH"````.G0_____R4DEP0(
M:!````#IP/____\E*)<$"&@8````Z;#_____)2R7!`AH(````.F@_____R4P
MEP0(:"@```#ID/____\E-)<$"&@P````Z8#_____)3B7!`AH.````.EP____
M_R4\EP0(:$````#I8/___P``````````,>U>B>&#Y/!05%)H<(8$"&B0@P0(
M459H4(4$".AW____](GV58GE4U#H`````%N!PY(2``"+@S````"%P'0"_]"+
M7?S)PXGVD)"0D)"0D)!5BQ7XE@0(B>6#[`B%TG5)BQ7TE@0(BP*%P'0:C70F
M`(U"!*/TE@0(_Q*+%?26!`B+"H7)=>JXV(,$"(7`=!"#[`QH_)8$".CL_O__
M@\00N`$```"C^)8$"(GL7<.-=@!5B>6#[`B)[%W#C;8`````58GEN+B#!`B#
M[`B%P'05@^P(:.27!`AH_)8$".B'_O__@\00B>Q=PY"-M"8`````58GE@^P(
MB>Q=PXVV`````%6)Y5.#[$AH@`,``&H!:@#HP_[__XG#6%I3:)B&!`CHA/[_
M_X/$$(7;>1F#[`QHHH8$".A`_O__QP0D`0```.B$_O__:@%J$&H`4^B8_O__
M@\00A<!Y&8/L#&BIA@0(Z!3^___'!"0!````Z%C^__^#[`A0:+B&!`CH*O[_
M_XU%N%!J`6H`4\=%O&,```#'1<!B````9L=%S(`!Z$C^__^#Q""%P'D9@^P,
M:,J&!`CHQ/W__\<$)`$```#H"/[__X/L"%!HVH8$".C:_?__@\00,<"+7?S)
MPY"0D)"0D)"05:$`EP0(B>53@^P$@_C_NP"7!`AT%HUV`(V\)P````"#ZP3_
MT(L#@_C_=?186UW#58GE@^P(B>Q=PXVV`````%6)Y5-2Z`````!;@<.6$```
MC78`Z!?^__^+7?S)PP```P````$``@!S96UI9"`E9`H`<V5M9V5T`'-E;6-T
M;"A3151604PI`'-E='9A;"!R971U<FX@)60*`'-E;6-T;"A)4$-?4T54*0!I
M<&-S970@<F5T=7)N("5D"@````````````R7!`@``````````/____\`````
M_____P````!$EP0(``````````"^@P0(SH,$"-Z#!`CN@P0(_H,$"`Z$!`@>
MA`0(+H0$"#Z$!`@``````0```!`````,````D(,$"`T```!PA@0(!````"B!
M!`@%````+(($"`8```!L@00("@```)D````+````$````!4``````````P``
M`!"7!`@"````2````!0````1````%P```$B#!`@1````0(,$"!(````(````
M$P````@```#^__]O`(,$"/___V\!````\/__;^:"!`@```````````$`````
M`.D!&4X```@```!D````=(0$"`$```!D````=(0$"#D````\`````````$@`
M``"``````````'(```"``````````(P```"``````````+L```"`````````
M`/,```"``````````#`!``"``````````($!``"``````````-(!``"`````
M`````/T!``"``````````"P"``"``````````%8"``"``````````'\"``"`
M`````````)D"``"``````````+0"``"``````````-4"``"```````````X#
M``"``````````#$#``"``````````%8#``"``````````(`#``"`````````
M`*D#``""`````````,,#``""``````````````"B``````````````"B````
M``````D$``""````8U8``"0$``""````[UL!`$P$``""`````````&($``""
M`````````'D$``""``````````````"B``````````````"B````````````
M``"B`````````(T$``""````V`0``,8$``"``,<```````````"B````````
M`-H$``"``"```````/$$``"``"$```````@%``"``"(``````!T%``"``",`
M`````#,%``"``"4``````$L%``"``"8``````&$%``"``#$``````'@%``"`
M`#(``````)`%``"``#,``````*<%``"``#0``````,`%``"``#4``````-@%
M``"``#8``````/$%``"``#@```````D&``"``#D``````"(&``"``#L`````
M`$(&``"``#T``````%@&``"``#X``````&X&``"``#\``````(0&``"``$``
M`````)H&``"``$$``````+$&``"``$(``````,D&``"``$,``````-\&``"`
M`$0``````/8&``"``$4```````P'``"``$8``````"0'``"``$<``````#L'
M``"``$@``````%0'``"``$D``````&D'``"``$X``````,\'``"``%$`````
M`.<'``"``%(```````<(``"``%,``````!X(``"``%0``````#D(``"``%4`
M`````%4(``"``%8``````&T(``"``%@``````(4(``"``%L``````)\(``"`
M`%X``````+<(``"``&4``````,T(``"``&@``````.<(``"``&P```````$)
M``"``'$``````!H)``"``'(``````#4)``"``'4``````%`)``"``'8`````
M`&T)``"``'D``````(@)``"``'H``````*4)``"``'T``````+T)``"``(``
M`````-8)``"``(,``````/$)``"``(0```````T*``"``(<``````"8*``"`
M`(H``````$`*``""````RY0!`'0*``""````1A```)P*``"`````````````
M``"B`````````-(*``"``````````!H+``"``",``````%8+``"`````````
M`%D,``"``#0``````'4,``"``#P``````,(,``"``$,``````/H,``"``$8`
M`````!8-``"``%,``````*D-``"``%H``````.<-``"``%X```````0.``"`
M`````````-D.``"``&P``````/D.``"``'0``````$T/``"``'D``````&X/
M``"``($``````/8/``"``(8``````#00``"``(P```````````"B````````
M``````"B`````````(T$``""````$0H``$P0``"``!\!`````&(0``"``#@!
M``````````"B`````````'<0``""`````````(H0``""````8A\``(T$``""
M``````````````"B`````````)P0``""``````````````"B`````````,D0
M``"``$L```````````"B``````````````"B`````````$P1``"``!X`````
M`(\1``"``",``````-01``""`````````.<1``""````-<$!`$P$``#"````
M`````'<0``#"`````````(H0``""`````````(T$``#"`````````)P0``#"
M``````````````"B`````````(T$``#"`````````/@1``"``````````-<2
M``"```````````X3``"``$@``````#@3``"``$L``````&<3``"``$P`````
M`)@3``"``%4``````,L3``"``%H```````84``"``%X``````#\4``"``&$`
M`````'<4``"``&(``````*\4``"``````````%P5``"```````````47``"`
M`````````/L7``"``````````'(8``"``*T```````````"B````````````
M``"B`````````)88``"``#4```````D9``"``#<``````"$9``"``#@`````
M`#D9``"``#D``````%,9``"``#H```````````"B`````````&T9```@`!D`
M``````````!D````=(0$"(,9``!D````4(4$"(D9``!D````4(4$"#D````\
M`````````$@```"``````````'(```"``````````(P```"``````````+L`
M``"``````````/,```"``````````#`!``"``````````($!``"`````````
M`-(!``"``````````/T!``"``````````"P"``"``````````%8"``"`````
M`````'\"``"``````````)D"``"``````````+0"``"``````````-4"``"`
M``````````X#``"``````````#$#``"``````````%8#``"``````````(`#
M``"``````````),9``""````K[P``*P9``""`````````,09``""````````
M``````"B`````````-T9``""``````````````"B``````````````"B````
M`````/89``""````[UL!`*P9``#"`````````(T$``#"````V`0``!`:``"`
M`"```````"<:``"``"$``````#X:``"``"(``````%,:``"``",``````&D:
M``"``"4``````($:``"``"8``````)<:``"``#$``````*X:``"``#(`````
M`,8:``"``#,``````-T:``"``#0``````/8:``"``#4```````X;``"``#8`
M`````"<;``"``#@``````#\;``"``#D``````%@;``"``#L``````'@;``"`
M`#T``````(X;``"``#X``````*0;``"``#\``````+H;``"``$```````-`;
M``"``$$``````.<;``"``$(``````/\;``"``$,``````!4<``"``$0`````
M`"P<``"``$4``````$(<``"``$8``````%H<``"``$<``````'$<``"``$@`
M`````(H<``"``$D``````)\<``"``$X```````4=``"``%$``````!T=``"`
M`%(``````#T=``"``%,``````%0=``"``%0``````&\=``"``%4``````(L=
M``"``%8``````*,=``"``%@``````+L=``"``%L``````-4=``"``%X`````
M`.T=``"``&4```````,>``"``&@``````!T>``"``&P``````#<>``"``'$`
M`````%`>``"``'(``````&L>``"``'4``````(8>``"``'8``````*,>``"`
M`'D``````+X>``"``'H``````-L>``"``'T``````/,>``"``(````````P?
M``"``(,``````"<?``"``(0``````$,?``"``(<``````%P?``"``(H`````
M`'8?``""````F/$``)<?``""````1A```+$?``"```````````````"B````
M`````.8?``"``````````"X@``"``",``````&H@``"``````````&PA``"`
M`#0``````(@A``"``#P``````-4A``"``$,```````TB``"``$8``````"DB
M``"``%,``````+PB``"``%H``````/HB``"``%X``````!<C``"``(P`````
M``````"B``````````````"B`````````"\C``"``"(``````$,C``"``",`
M`````%@C``"``"0``````&LC``"``"4``````'\C``"``"8``````),C``"`
M`"<``````*DC``"``"@``````+XC``"``"T``````-,C``"``#$``````.<C
M``"``#T``````/PC``"``$(``````!$D``"``$<``````"<D``"``$P`````
M`#XD``"``%$``````%,D``"``%<``````&@D``"``&,``````'TD``"``&@`
M`````)$D``"``&T``````*@D``"``',``````+\D``"``'0``````-8D``"`
M`'H``````.LD``""````GA```/89``""``````````````"B`````````/\D
M``"``$8``````/89``#"`````````!4E``"``%(``````/89``#"````````
M`"XE``"``%X```````````"B`````````(T$``#"`````````$4E``"``)8`
M`````%DE``"``)<``````&XE``"``)@``````($E``"``+X``````)<E``"`
M`+\``````*TE``"``,```````,,E``"``,$``````-DE``"``,0``````/$E
M``"``,4```````DF``"``,8``````"$F``"``,<``````#DF``"``,D`````
M`%(F``""`````````*P9``#"`````````&@F``""``````````````"B````
M``````````"B`````````(,F``""````C2@``*P9``#"`````````/89``#"
M`````````)TF``""``````````````"B`````````+@F``""````1Q@``-,F
M``"``!<``````/`F``"``!\```````````"B`````````#@G``"``"8`````
M`.LD``""````OP\``%`G``"```````````````"B`````````(PG``""````
MEP\``/89``#"`````````*4G``"```````````````"B`````````.$G``"`
M`#$``````/PG``"``#<``````!0H``"``$H``````%XH``"``%$`````````
M``"B`````````'4H``""``````````````"B`````````)(H``"``.8`````
M`*HH``"``.H``````,0H``"``.X```````````"B`````````-XH``""````
M`````*P9``#"`````````/4H``""````)C@``/89``#"``````````TI``"`
M``````````````"B``````````````"B`````````/<I``""````ZQ,``*P9
M``#"`````````(T$``#"`````````-XH``#"``````````XJ``""````L&T`
M`),9``""``````````````"B`````````"8J``"``````````/4J``"`````
M``````````"B`````````,TK``"```````````````"B`````````!HL``""
M````/1```*P9``#"`````````(T$``#"`````````/89``#"`````````"\L
M``"``"T``````$\L``"``#<``````&4L``""````R!X!`'HL``""````8U8`
M`/89``#"`````````(T$``#"````$0H``),L``""````8A\``(T$``#"````
M`````*@L``""``````````````"B`````````,(L``"``$L```````````"B
M`````````$4M``"``!X``````(HM``"``",``````-$M``""````-<$!`*P9
M``#"`````````),L``""`````````(T$``#"`````````*@L``#"````````
M``````"B`````````(T$``#"`````````.8M``"``````````,4N``"`````
M`````/PN``"``$@``````"8O``"``$L``````%4O``"``$P``````(8O``"`
M`%4``````+DO``"``%H``````/0O``"``%X``````"TP``"``&$``````&4P
M``"``&(``````)TP``"``````````$HQ``"``````````/,R``"`````````
M`.DS``"``````````&`T``"``*T```````````"B`````````(0T``"``#4`
M`````/HT``"``#<``````!,U``"``#@``````"PU``"``#D``````$<U``"`
M`#H```````````"B`````````&(U``""````/`@``)LU``"``"L`````````
M``"B`````````+DU``"``*H``````-,U``"``````````#$V``"`````````
M`)4V``"``````````%<Y``"``$$!`````&\Y``"``%@!`````)4Y``"``&$!
M`````+PY``"``&D!`````.$Y``"``&P!``````````"B``````````<Z``"`
M`%```````!TZ``""``````````````"B`````````#LZ``""````````````
M``"B``````````````"B`````````%4Z``""````AV\``*P9``#"````````
M`(T$``#"`````````&LZ``"``&(``````*0Z``"``&H``````),9``#"````
M`````-XZ``"``````````(T[``"``````````!0\``""`````````*P9``#"
M`````````(T$``#"``````````````"B`````````"H\``"``*@"````````
M``"B`````````%@\``""````/`P``*P9``#"`````````&X\``""````````
M``````"B`````````/89``#"`````````(T$``#"`````````(P\``"``/``
M`````*0\``"``/<``````+T\``""````EZ\$`-H\``"``````````%<^``"`
M``````````9-``"```````````````"B`````````#U-``""````````````
M``"B``````````````"B`````````%--``"``````````+]-```D`!,`4(4$
M",M-``"@`!(`"````-9-``"@`!(`#`````````!$`!,```````````!$`!H`
M!P````````!$`!L`%P````````!$`!P`)`````````!$`!T`*P````````!$
M`!X`.`````````!$`"$`1`````````!$`"(`5P````````!$`",`9```````
M``!$`"4`<`````````!$`"X`?@````````!$`"\`@0````````!$`"L`AP``
M``````!$`"P`C@````````!$`"T`E0````````!$`"\`FP````````!$`#``
MIP````````!$`#$`M`````````!$`#,`P`````````!$`#0`S@````````!$
M`#4`T0````````!$`#8`TP```.M-``!``!0``````/=-``"``!4`N/___P).
M``!``!8``P```!!.``!``!<```````````#```````````````#@````P```
M```````D````V`````````!D````*(8$"`!I;FET+F,`+W5S<B]S<F,O8G5I
M;&0O.#4Q,S$M:3,X-B]"54E,1"]G;&EB8RTR+C(N-"]C<W4O`&=C8S)?8V]M
M<&EL960N`&EN=#IT*#`L,2D]<B@P+#$I.RTR,30W-#@S-C0X.S(Q-#<T.#,V
M-#<[`&-H87(Z="@P+#(I/7(H,"PR*3LP.S$R-SL`;&]N9R!I;G0Z="@P+#,I
M/7(H,"PS*3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W.P!U;G-I9VYE9"!I;G0Z
M="@P+#0I/7(H,"PT*3LP,#`P,#`P,#`P,#`P.S`P,S<W-S<W-S<W-S<[`&QO
M;F<@=6YS:6=N960@:6YT.G0H,"PU*3UR*#`L-2D[,#`P,#`P,#`P,#`P,#LP
M,#,W-S<W-S<W-S<W.P!L;VYG(&QO;F<@:6YT.G0H,"PV*3U`<S8T.W(H,"PV
M*3LP,3`P,#`P,#`P,#`P,#`P,#`P,#`P,#LP-S<W-S<W-S<W-S<W-S<W-S<W
M-S<W.P!L;VYG(&QO;F<@=6YS:6=N960@:6YT.G0H,"PW*3U`<S8T.W(H,"PW
M*3LP,#`P,#`P,#`P,#`P.S`Q-S<W-S<W-S<W-S<W-S<W-S<W-S<W.P!S:&]R
M="!I;G0Z="@P+#@I/4!S,38[<B@P+#@I.RTS,C<V.#LS,C<V-SL`<VAO<G0@
M=6YS:6=N960@:6YT.G0H,"PY*3U`<S$V.W(H,"PY*3LP.S8U-3,U.P!S:6=N
M960@8VAA<CIT*#`L,3`I/4!S.#MR*#`L,3`I.RTQ,C@[,3(W.P!U;G-I9VYE
M9"!C:&%R.G0H,"PQ,2D]0',X.W(H,"PQ,2D[,#LR-34[`&9L;V%T.G0H,"PQ
M,BD]<B@P+#$I.S0[,#L`9&]U8FQE.G0H,"PQ,RD]<B@P+#$I.S@[,#L`;&]N
M9R!D;W5B;&4Z="@P+#$T*3UR*#`L,2D[,3([,#L`8V]M<&QE>"!I;G0Z="@P
M+#$U*3US.')E86PZ*#`L,2DL,"PS,CMI;6%G.B@P+#$I+#,R+#,R.SL`8V]M
M<&QE>"!F;&]A=#IT*#`L,38I/7(H,"PQ-BD[.#LP.P!C;VUP;&5X(&1O=6)L
M93IT*#`L,3<I/7(H,"PQ-RD[,38[,#L`8V]M<&QE>"!L;VYG(&1O=6)L93IT
M*#`L,3@I/7(H,"PQ."D[,C0[,#L`7U]B=6EL=&EN7W9A7VQI<W0Z="@P+#$Y
M*3TJ*#`L,C`I/2@P+#(P*0`N+B]I;F-L=61E+VQI8F,M<WEM8F]L<RYH`"]U
M<W(O<W)C+V)U:6QD+S@U,3,Q+6DS.#8O0E5)3$0O9VQI8F,M,BXR+C0O8G5I
M;&0M:3,X-BUL:6YU>"]C;VYF:6<N:``N+B]S>7-D97!S+V=N=2]?1U]C;VYF
M:6<N:``N+B]S>7-D97!S+W5N:7@O<WES=B]L:6YU>"]B:71S+W1Y<&5S+F@`
M+BXO:6YC;'5D92]F96%T=7)E<RYH`"XN+VEN8VQU9&4O<WES+V-D969S+F@`
M+BXO;6ES8R]S>7,O8V1E9G,N:``O=7-R+VQI8B]G8V,M;&EB+VDS.#8M<F5D
M:&%T+6QI;G5X+S(N.38O:6YC;'5D92]S=&1D968N:`!S:7IE7W0Z="@X+#$I
M/2@P+#0I`%]?=5]C:&%R.G0H-"PQ*3TH,"PQ,2D`7U]U7W-H;W)T.G0H-"PR
M*3TH,"PY*0!?7W5?:6YT.G0H-"PS*3TH,"PT*0!?7W5?;&]N9SIT*#0L-"D]
M*#`L-2D`7U]U7W%U861?=#IT*#0L-2D]*#`L-RD`7U]Q=6%D7W0Z="@T+#8I
M/2@P+#8I`%]?:6YT.%]T.G0H-"PW*3TH,"PQ,"D`7U]U:6YT.%]T.G0H-"PX
M*3TH,"PQ,2D`7U]I;G0Q-E]T.G0H-"PY*3TH,"PX*0!?7W5I;G0Q-E]T.G0H
M-"PQ,"D]*#`L.2D`7U]I;G0S,E]T.G0H-"PQ,2D]*#`L,2D`7U]U:6YT,S)?
M=#IT*#0L,3(I/2@P+#0I`%]?:6YT-C1?=#IT*#0L,3,I/2@P+#8I`%]?=6EN
M=#8T7W0Z="@T+#$T*3TH,"PW*0!?7W%A9&1R7W0Z="@T+#$U*3TH-"PQ-BD]
M*B@T+#8I`%]?9&5V7W0Z="@T+#$W*3TH-"PU*0!?7W5I9%]T.G0H-"PQ."D]
M*#0L,RD`7U]G:61?=#IT*#0L,3DI/2@T+#,I`%]?:6YO7W0Z="@T+#(P*3TH
M-"PT*0!?7VUO9&5?=#IT*#0L,C$I/2@T+#,I`%]?;FQI;FM?=#IT*#0L,C(I
M/2@T+#,I`%]?;V9F7W0Z="@T+#(S*3TH,"PS*0!?7VQO9F9?=#IT*#0L,C0I
M/2@T+#8I`%]?<&ED7W0Z="@T+#(U*3TH,"PQ*0!?7W-S:7IE7W0Z="@T+#(V
M*3TH,"PQ*0!?7W)L:6U?=#IT*#0L,C<I/2@T+#0I`%]?<FQI;38T7W0Z="@T
M+#(X*3TH-"PU*0!?7VED7W0Z="@T+#(Y*3TH-"PS*0!?7V9S:61?=#IT*#0L
M,S`I/2@T+#,Q*3US.%]?=F%L.B@T+#,R*3UA<B@T+#,S*3UR*#0L,S,I.S`P
M,#`P,#`P,#`P,#`[,#`S-S<W-S<W-S<W-SL[,#LQ.R@P+#$I+#`L-C0[.P!?
M7V1A9&1R7W0Z="@T+#,T*3TH,"PQ*0!?7V-A9&1R7W0Z="@T+#,U*3TH-"PS
M-BD]*B@P+#(I`%]?=&EM95]T.G0H-"PS-RD]*#`L,RD`7U]U<V5C;VYD<U]T
M.G0H-"PS."D]*#`L-"D`7U]S=7-E8V]N9'-?=#IT*#0L,SDI/2@P+#,I`%]?
M<W=B;&M?=#IT*#0L-#`I/2@P+#,I`%]?8VQO8VM?=#IT*#0L-#$I/2@P+#,I
M`%]?8VQO8VMI9%]T.G0H-"PT,BD]*#`L,2D`7U]T:6UE<E]T.G0H-"PT,RD]
M*#`L,2D`7U]K97E?=#IT*#0L-#0I/2@P+#$I`%]?:7!C7W!I9%]T.G0H-"PT
M-2D]*#`L.2D`7U]B;&MS:7IE7W0Z="@T+#0V*3TH,"PS*0!?7V)L:V-N=%]T
M.G0H-"PT-RD]*#`L,RD`7U]B;&MC;G0V-%]T.G0H-"PT."D]*#0L-BD`7U]F
M<V)L:V-N=%]T.G0H-"PT.2D]*#0L-"D`7U]F<V)L:V-N=#8T7W0Z="@T+#4P
M*3TH-"PU*0!?7V9S9FEL8VYT7W0Z="@T+#4Q*3TH-"PT*0!?7V9S9FEL8VYT
M-C1?=#IT*#0L-3(I/2@T+#4I`%]?:6YO-C1?=#IT*#0L-3,I/2@T+#4I`%]?
M;V9F-C1?=#IT*#0L-30I/2@T+#(T*0!?7W1?<V-A;&%R7W0Z="@T+#4U*3TH
M,"PS*0!?7W1?=7-C86QA<E]T.G0H-"PU-BD]*#`L-2D`7U]I;G1P=')?=#IT
M*#0L-3<I/2@P+#$I`%]?<V]C:VQE;E]T.G0H-"PU."D]*#`L-"D`+BXO;&EN
M=7AT:')E861S+W-Y<V1E<',O<'1H<F5A9"]B:71S+W!T:')E861T>7!E<RYH
M`"XN+W-Y<V1E<',O=6YI>"]S>7-V+VQI;G5X+V)I=',O<V-H960N:`!?7W-C
M:&5D7W!A<F%M.E0H,3`L,2D]<S1?7W-C:&5D7W!R:6]R:71Y.B@P+#$I+#`L
M,S([.P!?<'1H<F5A9%]F87-T;&]C:SI4*#DL,2D]<SA?7W-T871U<SHH,"PS
M*2PP+#,R.U]?<W!I;FQO8VLZ*#`L,2DL,S(L,S([.P!?<'1H<F5A9%]D97-C
M<CIT*#DL,BD]*#DL,RD]*B@Y+#0I/7AS7W!T:')E861?9&5S8W)?<W1R=6-T
M.@!?7W!T:')E861?871T<E]S.E0H.2PU*3US,S9?7V1E=&%C:'-T871E.B@P
M+#$I+#`L,S([7U]S8VAE9'!O;&EC>3HH,"PQ*2PS,BPS,CM?7W-C:&5D<&%R
M86TZ*#$P+#$I+#8T+#,R.U]?:6YH97)I='-C:&5D.B@P+#$I+#DV+#,R.U]?
M<V-O<&4Z*#`L,2DL,3(X+#,R.U]?9W5A<F1S:7IE.B@X+#$I+#$V,"PS,CM?
M7W-T86-K861D<E]S970Z*#`L,2DL,3DR+#,R.U]?<W1A8VMA9&1R.B@P+#$Y
M*2PR,C0L,S([7U]S=&%C:W-I>F4Z*#@L,2DL,C4V+#,R.SL`<'1H<F5A9%]A
M='1R7W0Z="@Y+#8I/2@Y+#4I`'!T:')E861?8V]N9%]T.G0H.2PW*3TH.2PX
M*3US,3)?7V-?;&]C:SHH.2PQ*2PP+#8T.U]?8U]W86ET:6YG.B@Y+#(I+#8T
M+#,R.SL`<'1H<F5A9%]C;VYD871T<E]T.G0H.2PY*3TH.2PQ,"D]<S1?7V1U
M;6UY.B@P+#$I+#`L,S([.P!P=&AR96%D7VME>5]T.G0H.2PQ,2D]*#`L-"D`
M<'1H<F5A9%]M=71E>%]T.G0H.2PQ,BD]*#DL,3,I/7,R-%]?;5]R97-E<G9E
M9#HH,"PQ*2PP+#,R.U]?;5]C;W5N=#HH,"PQ*2PS,BPS,CM?7VU?;W=N97(Z
M*#DL,BDL-C0L,S([7U]M7VMI;F0Z*#`L,2DL.38L,S([7U]M7VQO8VLZ*#DL
M,2DL,3(X+#8T.SL`<'1H<F5A9%]M=71E>&%T=')?=#IT*#DL,30I/2@Y+#$U
M*3US-%]?;75T97AK:6YD.B@P+#$I+#`L,S([.P!P=&AR96%D7V]N8V5?=#IT
M*#DL,38I/2@P+#$I`%]P=&AR96%D7W)W;&]C:U]T.E0H.2PQ-RD]<S,R7U]R
M=U]L;V-K.B@Y+#$I+#`L-C0[7U]R=U]R96%D97)S.B@P+#$I+#8T+#,R.U]?
M<G=?=W)I=&5R.B@Y+#(I+#DV+#,R.U]?<G=?<F5A9%]W86ET:6YG.B@Y+#(I
M+#$R."PS,CM?7W)W7W=R:71E7W=A:71I;F<Z*#DL,BDL,38P+#,R.U]?<G=?
M:VEN9#HH,"PQ*2PQ.3(L,S([7U]R=U]P<VAA<F5D.B@P+#$I+#(R-"PS,CL[
M`'!T:')E861?<G=L;V-K7W0Z="@Y+#$X*3TH.2PQ-RD`<'1H<F5A9%]R=VQO
M8VMA='1R7W0Z="@Y+#$Y*3TH.2PR,"D]<SA?7VQO8VMK:6YD.B@P+#$I+#`L
M,S([7U]P<VAA<F5D.B@P+#$I+#,R+#,R.SL`<'1H<F5A9%]S<&EN;&]C:U]T
M.G0H.2PR,2D]*#`L,2D`<'1H<F5A9%]B87)R:65R7W0Z="@Y+#(R*3TH.2PR
M,RD]<S(P7U]B85]L;V-K.B@Y+#$I+#`L-C0[7U]B85]R97%U:7)E9#HH,"PQ
M*2PV-"PS,CM?7V)A7W!R97-E;G0Z*#`L,2DL.38L,S([7U]B85]W86ET:6YG
M.B@Y+#(I+#$R."PS,CL[`'!T:')E861?8F%R<FEE<F%T=')?=#IT*#DL,C0I
M/2@Y+#(U*3US-%]?<'-H87)E9#HH,"PQ*2PP+#,R.SL`<'1H<F5A9%]T.G0H
M.2PR-BD]*#`L-2D`=V-H87)?=#IT*#$Q+#$I/2@P+#,I`'=I;G1?=#IT*#$Q
M+#(I/2@P+#0I`"XN+VEN8VQU9&4O=V-H87(N:``N+B]W8W-M8G,O=V-H87(N
M:``N+B]S>7-D97!S+W5N:7@O<WES=B]L:6YU>"]I,S@V+V)I=',O=V-H87(N
M:`!?7VUB<W1A=&5?=#IT*#$S+#$I/2@Q,RPR*3US.%]?8V]U;G0Z*#`L,2DL
M,"PS,CM?7W9A;'5E.B@Q,RPS*3UU-%]?=V-H.B@Q,2PR*2PP+#,R.U]?=V-H
M8CHH,3,L-"D]87(H-"PS,RD[,#LS.R@P+#(I+#`L,S([.RPS,BPS,CL[`%]'
M7V9P;W-?=#IT*#,L,2D]*#,L,BD]<S$R7U]P;W,Z*#0L,C,I+#`L,S([7U]S
M=&%T93HH,3,L,2DL,S(L-C0[.P!?1U]F<&]S-C1?=#IT*#,L,RD]*#,L-"D]
M<S$V7U]P;W,Z*#0L-30I+#`L-C0[7U]S=&%T93HH,3,L,2DL-C0L-C0[.P`N
M+B]I;F-L=61E+V=C;VYV+F@`+BXO:6-O;G8O9V-O;G8N:``@.E0H,3<L,2D]
M95]?1T-/3E9?3TLZ,"Q?7T=#3TY67TY/0T].5CHQ+%]?1T-/3E9?3D]$0CHR
M+%]?1T-/3E9?3D]-14TZ,RQ?7T=#3TY67T5-4%197TE.4%54.C0L7U]'0T].
M5E]&54Q,7T]55%!55#HU+%]?1T-/3E9?24Q,14=!3%])3E!55#HV+%]?1T-/
M3E9?24Y#3TU03$5415])3E!55#HW+%]?1T-/3E9?24Q,14=!3%]$15-#4DE0
M5$]2.C@L7U]'0T].5E])3E1%4DY!3%]%4E)/4CHY+#L`(#I4*#$W+#(I/65?
M7T=#3TY67TE37TQ!4U0Z,2Q?7T=#3TY67TE'3D]215]%4E)/4E,Z,BP[`%]?
M9V-O;G9?9F-T.G0H,3<L,RD]*#$W+#0I/2HH,3<L-2D]9B@P+#$I`%]?9V-O
M;G9?:6YI=%]F8W0Z="@Q-RPV*3TH,3<L-RD]*B@Q-RPX*3UF*#`L,2D`7U]G
M8V]N=E]E;F1?9F-T.G0H,3<L.2D]*#$W+#$P*3TJ*#$W+#$Q*3UF*#`L,C`I
M`%]?9V-O;G9?=')A;G-?9F-T.G0H,3<L,3(I/2@Q-RPQ,RD]*B@Q-RPQ-"D]
M9B@P+#$I`%]?9V-O;G9?=')A;G-?8V]N=&5X=%]F8W0Z="@Q-RPQ-2D]*#$W
M+#$V*3TJ*#$W+#$W*3UF*#`L,2D`7U]G8V]N=E]T<F%N<U]Q=65R>5]F8W0Z
M="@Q-RPQ."D]*#$W+#$Y*3TJ*#$W+#(P*3UF*#`L,2D`7U]G8V]N=E]T<F%N
M<U]I;FET7V9C=#IT*#$W+#(Q*3TH,3<L,C(I/2HH,3<L,C,I/68H,"PQ*0!?
M7V=C;VYV7W1R86YS7V5N9%]F8W0Z="@Q-RPR-"D]*#$W+#(U*3TJ*#$W+#(V
M*3UF*#`L,C`I`%]?9V-O;G9?=')A;G-?9&%T83I4*#$W+#(W*3US,C!?7W1R
M86YS7V9C=#HH,3<L,3(I+#`L,S([7U]T<F%N<U]C;VYT97AT7V9C=#HH,3<L
M,34I+#,R+#,R.U]?=')A;G-?96YD7V9C=#HH,3<L,C0I+#8T+#,R.U]?9&%T
M83HH,"PQ.2DL.38L,S([7U]N97AT.B@Q-RPR."D]*B@Q-RPR-RDL,3(X+#,R
M.SL`7U]G8V]N=E]S=&5P.E0H,3<L,CDI/7,U-E]?<VAL:6)?:&%N9&QE.B@Q
M-RPS,"D]*B@Q-RPS,2D]>'-?7V=C;VYV7VQO861E9%]O8FIE8W0Z+#`L,S([
M7U]M;V1N86UE.B@Q-RPS,BD]*B@P+#(I+#,R+#,R.U]?8V]U;G1E<CHH,"PQ
M*2PV-"PS,CM?7V9R;VU?;F%M93HH-"PS-BDL.38L,S([7U]T;U]N86UE.B@T
M+#,V*2PQ,C@L,S([7U]F8W0Z*#$W+#,I+#$V,"PS,CM?7VEN:71?9F-T.B@Q
M-RPV*2PQ.3(L,S([7U]E;F1?9F-T.B@Q-RPY*2PR,C0L,S([7U]M:6Y?;F5E
M9&5D7V9R;VTZ*#`L,2DL,C4V+#,R.U]?;6%X7VYE961E9%]F<F]M.B@P+#$I
M+#(X."PS,CM?7VUI;E]N965D961?=&\Z*#`L,2DL,S(P+#,R.U]?;6%X7VYE
M961E9%]T;SHH,"PQ*2PS-3(L,S([7U]S=&%T969U;#HH,"PQ*2PS.#0L,S([
M7U]D871A.B@P+#$Y*2PT,38L,S([.P!?7V=C;VYV7W-T97!?9&%T83I4*#$W
M+#,S*3US,S9?7V]U=&)U9CHH,3<L,S0I/2HH,"PQ,2DL,"PS,CM?7V]U=&)U
M9F5N9#HH,3<L,S0I+#,R+#,R.U]?9FQA9W,Z*#`L,2DL-C0L,S([7U]I;G9O
M8V%T:6]N7V-O=6YT97(Z*#`L,2DL.38L,S([7U]I;G1E<FYA;%]U<V4Z*#`L
M,2DL,3(X+#,R.U]?<W1A=&5P.B@Q-RPS-2D]*B@Q,RPQ*2PQ-C`L,S([7U]S
M=&%T93HH,3,L,2DL,3DR+#8T.U]?=')A;G,Z*#$W+#(X*2PR-38L,S([.P!?
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
M/2@U+#(T*0!?7W1?<V-A;&%R7W0Z="@U+#4U*3TH,"PS*0!?7W1?=7-C86QA
M<E]T.G0H-2PU-BD]*#`L-2D`7U]I;G1P=')?=#IT*#4L-3<I/2@P+#$I`%]?
M<V]C:VQE;E]T.G0H-2PU."D]*#`L-"D`+W5S<B]I;F-L=61E+V)I=',O<'1H
M<F5A9'1Y<&5S+F@`+W5S<B]I;F-L=61E+V)I=',O<V-H960N:`!?7W-C:&5D
M7W!A<F%M.E0H.2PQ*3US-%]?<V-H961?<')I;W)I='DZ*#`L,2DL,"PS,CL[
M`%]P=&AR96%D7V9A<W1L;V-K.E0H."PQ*3US.%]?<W1A='5S.B@P+#,I+#`L
M,S([7U]S<&EN;&]C:SHH,"PQ*2PS,BPS,CL[`%]P=&AR96%D7V1E<V-R.G0H
M."PR*3TH."PS*3TJ*#@L-"D]>'-?<'1H<F5A9%]D97-C<E]S=')U8W0Z`%]?
M<'1H<F5A9%]A='1R7W,Z5"@X+#4I/7,S-E]?9&5T86-H<W1A=&4Z*#`L,2DL
M,"PS,CM?7W-C:&5D<&]L:6-Y.B@P+#$I+#,R+#,R.U]?<V-H961P87)A;3HH
M.2PQ*2PV-"PS,CM?7VEN:&5R:71S8VAE9#HH,"PQ*2PY-BPS,CM?7W-C;W!E
M.B@P+#$I+#$R."PS,CM?7V=U87)D<VEZ93HH-RPQ*2PQ-C`L,S([7U]S=&%C
M:V%D9')?<V5T.B@P+#$I+#$Y,BPS,CM?7W-T86-K861D<CHH,"PQ.2DL,C(T
M+#,R.U]?<W1A8VMS:7IE.B@W+#$I+#(U-BPS,CL[`'!T:')E861?871T<E]T
M.G0H."PV*3TH."PU*0!P=&AR96%D7V-O;F1?=#IT*#@L-RD]*#@L."D]<S$R
M7U]C7VQO8VLZ*#@L,2DL,"PV-#M?7V-?=V%I=&EN9SHH."PR*2PV-"PS,CL[
M`'!T:')E861?8V]N9&%T=')?=#IT*#@L.2D]*#@L,3`I/7,T7U]D=6UM>3HH
M,"PQ*2PP+#,R.SL`<'1H<F5A9%]K97E?=#IT*#@L,3$I/2@P+#0I`'!T:')E
M861?;75T97A?=#IT*#@L,3(I/2@X+#$S*3US,C1?7VU?<F5S97)V960Z*#`L
M,2DL,"PS,CM?7VU?8V]U;G0Z*#`L,2DL,S(L,S([7U]M7V]W;F5R.B@X+#(I
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
M9#$Z*#`L.2DL,3<V+#$V.U]?<V5Q.B@P+#DI+#$Y,BPQ-CM?7W!A9#(Z*#`L
M.2DL,C`X+#$V.U]?=6YU<V5D,3HH,"PU*2PR,C0L,S([7U]U;G5S960R.B@P
M+#4I+#(U-BPS,CL[`"]U<W(O:6YC;'5D92]S>7,O<V5M+F@`+W5S<B]I;F-L
M=61E+V)I=',O<V5M+F@`<V5M:61?9',Z5"@S-2PQ*3US-C1S96U?<&5R;3HH
M,CDL,2DL,"PR.#@[<V5M7V]T:6UE.B@U+#,W*2PR.#@L,S([7U]U;G5S960Q
M.B@P+#4I+#,R,"PS,CMS96U?8W1I;64Z*#4L,S<I+#,U,BPS,CM?7W5N=7-E
M9#(Z*#`L-2DL,S@T+#,R.W-E;5]N<V5M<SHH,"PU*2PT,38L,S([7U]U;G5S
M960S.B@P+#4I+#0T."PS,CM?7W5N=7-E9#0Z*#`L-2DL-#@P+#,R.SL`<V5M
M:6YF;SI4*#,U+#(I/7,T,'-E;6UA<#HH,"PQ*2PP+#,R.W-E;6UN:3HH,"PQ
M*2PS,BPS,CMS96UM;G,Z*#`L,2DL-C0L,S([<V5M;6YU.B@P+#$I+#DV+#,R
M.W-E;6US;#HH,"PQ*2PQ,C@L,S([<V5M;W!M.B@P+#$I+#$V,"PS,CMS96UU
M;64Z*#`L,2DL,3DR+#,R.W-E;75S>CHH,"PQ*2PR,C0L,S([<V5M=FUX.B@P
M+#$I+#(U-BPS,CMS96UA96TZ*#`L,2DL,C@X+#,R.SL`<V5M8G5F.E0H,S$L
M,2D]<S9S96U?;G5M.B@P+#DI+#`L,38[<V5M7V]P.B@P+#@I+#$V+#$V.W-E
M;5]F;&<Z*#`L."DL,S(L,38[.P`O=7-R+VEN8VQU9&4O<W1D:6\N:`!&24Q%
M.G0H,S<L,2D]*#,W+#(I/7AS7TE/7T9)3$4Z`%]?1DE,13IT*#,W+#,I/2@S
M-RPR*0`O=7-R+VEN8VQU9&4O;&EB:6\N:``O=7-R+VEN8VQU9&4O7T=?8V]N
M9FEG+F@`+W5S<B]I;F-L=61E+W=C:&%R+F@`+W5S<B]I;F-L=61E+V)I=',O
M=V-H87(N:`!?7VUB<W1A=&5?=#IT*#0U+#$I/2@T-2PR*3US.%]?8V]U;G0Z
M*#`L,2DL,"PS,CM?7W9A;'5E.B@T-2PS*3UU-%]?=V-H.B@T-"PR*2PP+#,R
M.U]?=V-H8CHH-#4L-"D]87(H-2PS,RD[,#LS.R@P+#(I+#`L,S([.RPS,BPS
M,CL[`%]'7V9P;W-?=#IT*#0R+#$I/2@T,BPR*3US,3)?7W!O<SHH-2PR,RDL
M,"PS,CM?7W-T871E.B@T-2PQ*2PS,BPV-#L[`%]'7V9P;W,V-%]T.G0H-#(L
M,RD]*#0R+#0I/7,Q-E]?<&]S.B@U+#4T*2PP+#8T.U]?<W1A=&4Z*#0U+#$I
M+#8T+#8T.SL`+W5S<B]I;F-L=61E+V=C;VYV+F@`(#I4*#0X+#$I/65?7T=#
M3TY67T]+.C`L7U]'0T].5E].3T-/3E8Z,2Q?7T=#3TY67TY/1$(Z,BQ?7T=#
M3TY67TY/345-.C,L7U]'0T].5E]%35!465])3E!55#HT+%]?1T-/3E9?1E5,
M3%]/5510550Z-2Q?7T=#3TY67TE,3$5'04Q?24Y0550Z-BQ?7T=#3TY67TE.
M0T]-4$Q%5$5?24Y0550Z-RQ?7T=#3TY67TE,3$5'04Q?1$530U))4%1/4CHX
M+%]?1T-/3E9?24Y415).04Q?15)23U(Z.2P[`"`Z5"@T."PR*3UE7U]'0T].
M5E])4U],05-4.C$L7U]'0T].5E])1TY/4D5?15)23U)3.C(L.P!?7V=C;VYV
M7V9C=#IT*#0X+#,I/2@T."PT*3TJ*#0X+#4I/68H,"PQ*0!?7V=C;VYV7VEN
M:71?9F-T.G0H-#@L-BD]*#0X+#<I/2HH-#@L."D]9B@P+#$I`%]?9V-O;G9?
M96YD7V9C=#IT*#0X+#DI/2@T."PQ,"D]*B@T."PQ,2D]9B@P+#(P*0!?7V=C
M;VYV7W1R86YS7V9C=#IT*#0X+#$R*3TH-#@L,3,I/2HH-#@L,30I/68H,"PQ
M*0!?7V=C;VYV7W1R86YS7V-O;G1E>'1?9F-T.G0H-#@L,34I/2@T."PQ-BD]
M*B@T."PQ-RD]9B@P+#$I`%]?9V-O;G9?=')A;G-?<75E<GE?9F-T.G0H-#@L
M,3@I/2@T."PQ.2D]*B@T."PR,"D]9B@P+#$I`%]?9V-O;G9?=')A;G-?:6YI
M=%]F8W0Z="@T."PR,2D]*#0X+#(R*3TJ*#0X+#(S*3UF*#`L,2D`7U]G8V]N
M=E]T<F%N<U]E;F1?9F-T.G0H-#@L,C0I/2@T."PR-2D]*B@T."PR-BD]9B@P
M+#(P*0!?7V=C;VYV7W1R86YS7V1A=&$Z5"@T."PR-RD]<S(P7U]T<F%N<U]F
M8W0Z*#0X+#$R*2PP+#,R.U]?=')A;G-?8V]N=&5X=%]F8W0Z*#0X+#$U*2PS
M,BPS,CM?7W1R86YS7V5N9%]F8W0Z*#0X+#(T*2PV-"PS,CM?7V1A=&$Z*#`L
M,3DI+#DV+#,R.U]?;F5X=#HH-#@L,C@I/2HH-#@L,C<I+#$R."PS,CL[`%]?
M9V-O;G9?<W1E<#I4*#0X+#(Y*3US-39?7W-H;&EB7VAA;F1L93HH-#@L,S`I
M/2HH-#@L,S$I/7AS7U]G8V]N=E]L;V%D961?;V)J96-T.BPP+#,R.U]?;6]D
M;F%M93HH-#@L,S(I/2HH,"PR*2PS,BPS,CM?7V-O=6YT97(Z*#`L,2DL-C0L
M,S([7U]F<F]M7VYA;64Z*#4L,S8I+#DV+#,R.U]?=&]?;F%M93HH-2PS-BDL
M,3(X+#,R.U]?9F-T.B@T."PS*2PQ-C`L,S([7U]I;FET7V9C=#HH-#@L-BDL
M,3DR+#,R.U]?96YD7V9C=#HH-#@L.2DL,C(T+#,R.U]?;6EN7VYE961E9%]F
M<F]M.B@P+#$I+#(U-BPS,CM?7VUA>%]N965D961?9G)O;3HH,"PQ*2PR.#@L
M,S([7U]M:6Y?;F5E9&5D7W1O.B@P+#$I+#,R,"PS,CM?7VUA>%]N965D961?
M=&\Z*#`L,2DL,S4R+#,R.U]?<W1A=&5F=6PZ*#`L,2DL,S@T+#,R.U]?9&%T
M83HH,"PQ.2DL-#$V+#,R.SL`7U]G8V]N=E]S=&5P7V1A=&$Z5"@T."PS,RD]
M<S,V7U]O=71B=68Z*#0X+#,T*3TJ*#`L,3$I+#`L,S([7U]O=71B=69E;F0Z
M*#0X+#,T*2PS,BPS,CM?7V9L86=S.B@P+#$I+#8T+#,R.U]?:6YV;V-A=&EO
M;E]C;W5N=&5R.B@P+#$I+#DV+#,R.U]?:6YT97)N86Q?=7-E.B@P+#$I+#$R
M."PS,CM?7W-T871E<#HH-#@L,S4I/2HH-#4L,2DL,38P+#,R.U]?<W1A=&4Z
M*#0U+#$I+#$Y,BPV-#M?7W1R86YS.B@T."PR."DL,C4V+#,R.SL`7U]G8V]N
M=E]I;F9O.E0H-#@L,S8I/7,X7U]N<W1E<',Z*#<L,2DL,"PS,CM?7W-T97!S
M.B@T."PS-RD]*B@T."PR.2DL,S(L,S([7U]D871A.B@T."PS."D]87(H-2PS
M,RD[,#LM,3LH-#@L,S,I+#8T+#`[.P!?7V=C;VYV7W0Z="@T."PS.2D]*#0X
M+#0P*3TJ*#0X+#,V*0!?1U]I8V]N=E]T.G0H-#(L-2D]*#0R+#8I/74T-%]?
M8V0Z*#0X+#,V*2PP+#8T.U]?8V]M8FEN960Z*#0R+#<I/7,T-%]?8V0Z*#0X
M+#,V*2PP+#8T.U]?9&%T83HH-#@L,S,I+#8T+#(X.#L[+#`L,S4R.SL`7T=?
M:6YT,39?=#IT*#0R+#@I/2@P+#@I`%]'7VEN=#,R7W0Z="@T,BPY*3TH,"PQ
M*0!?1U]U:6YT,39?=#IT*#0R+#$P*3TH,"PY*0!?1U]U:6YT,S)?=#IT*#0R
M+#$Q*3TH,"PT*0`O=7-R+VQI8B]G8V,M;&EB+VDS.#8M<F5D:&%T+6QI;G5X
M+S(N.38O:6YC;'5D92]S=&1A<F<N:`!?7V=N=6-?=F%?;&ES=#IT*#4T+#$I
M/2@P+#$Y*0!?24]?;&]C:U]T.G0H-#$L,2D]*#`L,C`I`%])3U]M87)K97(Z
M5"@T,2PR*3US,3)?;F5X=#HH-#$L,RD]*B@T,2PR*2PP+#,R.U]S8G5F.B@T
M,2PT*3TJ*#,W+#(I+#,R+#,R.U]P;W,Z*#`L,2DL-C0L,S([.P!?7V-O9&5C
M=G1?<F5S=6QT.E0H-#$L-2D]95]?8V]D96-V=%]O:SHP+%]?8V]D96-V=%]P
M87)T:6%L.C$L7U]C;V1E8W9T7V5R<F]R.C(L7U]C;V1E8W9T7VYO8V]N=CHS
M+#L`7TE/7T9)3$4Z5"@S-RPR*3US,30X7V9L86=S.B@P+#$I+#`L,S([7TE/
M7W)E861?<'1R.B@U+#,V*2PS,BPS,CM?24]?<F5A9%]E;F0Z*#4L,S8I+#8T
M+#,R.U])3U]R96%D7V)A<V4Z*#4L,S8I+#DV+#,R.U])3U]W<FET95]B87-E
M.B@U+#,V*2PQ,C@L,S([7TE/7W=R:71E7W!T<CHH-2PS-BDL,38P+#,R.U])
M3U]W<FET95]E;F0Z*#4L,S8I+#$Y,BPS,CM?24]?8G5F7V)A<V4Z*#4L,S8I
M+#(R-"PS,CM?24]?8G5F7V5N9#HH-2PS-BDL,C4V+#,R.U])3U]S879E7V)A
M<V4Z*#4L,S8I+#(X."PS,CM?24]?8F%C:W5P7V)A<V4Z*#4L,S8I+#,R,"PS
M,CM?24]?<V%V95]E;F0Z*#4L,S8I+#,U,BPS,CM?;6%R:V5R<SHH-#$L,RDL
M,S@T+#,R.U]C:&%I;CHH-#$L-"DL-#$V+#,R.U]F:6QE;F\Z*#`L,2DL-#0X
M+#,R.U]B;&MS:7IE.B@P+#$I+#0X,"PS,CM?;VQD7V]F9G-E=#HH-2PR,RDL
M-3$R+#,R.U]C=7)?8V]L=6UN.B@P+#DI+#4T-"PQ-CM?=G1A8FQE7V]F9G-E
M=#HH,"PQ,"DL-38P+#@[7W-H;W)T8G5F.B@T,2PV*3UA<B@U+#,S*3LP.S`[
M*#`L,BDL-38X+#@[7VQO8VLZ*#0Q+#<I/2HH-#$L,2DL-3<V+#,R.U]O9F9S
M970Z*#4L-30I+#8P."PV-#M?7W!A9#$Z*#`L,3DI+#8W,BPS,CM?7W!A9#(Z
M*#`L,3DI+#<P-"PS,CM?;6]D93HH,"PQ*2PW,S8L,S([7W5N=7-E9#(Z*#0Q
M+#@I/6%R*#4L,S,I.S`[-3$[*#`L,BDL-S8X+#0Q-CL[`%])3U]&24Q%.G0H
M-#$L.2D]*#,W+#(I`%]?:6]?<F5A9%]F;CIT*#0Q+#$P*3TH-#$L,3$I/68H
M-2PR-BD`7U]I;U]W<FET95]F;CIT*#0Q+#$R*3TH-#$L,3,I/68H-2PR-BD`
M7U]I;U]S965K7V9N.G0H-#$L,30I/2@T,2PQ-2D]9B@P+#$I`%]?:6]?8VQO
M<V5?9FXZ="@T,2PQ-BD]*#0Q+#$W*3UF*#`L,2D`9G!O<U]T.G0H,S<L-"D]
M*#0R+#$I`"]U<W(O:6YC;'5D92]B:71S+W-T9&EO7VQI;2YH`"]U<W(O:6YC
M;'5D92]B:71S+W-T9&EO+F@`+W5S<B]I;F-L=61E+W-T9&QI8BYH`&1I=E]T
M.G0H-3<L,2D]*#4W+#(I/7,X<75O=#HH,"PQ*2PP+#,R.W)E;3HH,"PQ*2PS
M,BPS,CL[`&QD:79?=#IT*#4W+#,I/2@U-RPT*3US.'%U;W0Z*#`L,RDL,"PS
M,CMR96TZ*#`L,RDL,S(L,S([.P!R86YD;VU?9&%T83I4*#4W+#4I/7,R.&9P
M='(Z*#4W+#8I/2HH,2PR-RDL,"PS,CMR<'1R.B@U-RPV*2PS,BPS,CMS=&%T
M93HH-3<L-BDL-C0L,S([<F%N9%]T>7!E.B@P+#$I+#DV+#,R.W)A;F1?9&5G
M.B@P+#$I+#$R."PS,CMR86YD7W-E<#HH,"PQ*2PQ-C`L,S([96YD7W!T<CHH
M-3<L-BDL,3DR+#,R.SL`9')A;F0T.%]D871A.E0H-3<L-RD]<S(T7U]X.B@U
M-RPX*3UA<B@U+#,S*3LP.S([*#`L.2DL,"PT.#M?7V]L9%]X.B@U-RPX*2PT
M."PT.#M?7V,Z*#`L.2DL.38L,38[7U]I;FET.B@P+#DI+#$Q,BPQ-CM?7V$Z
M*#`L-RDL,3(X+#8T.SL`+W5S<B]I;F-L=61E+V%L;&]C82YH`%]?8V]M<&%R
M7V9N7W0Z="@U-RPY*3TH-3<L,3`I/2HH-3<L,3$I/68H,"PQ*0`O=7-R+VEN
M8VQU9&4O=6YI<W1D+F@`+W5S<B]I;F-L=61E+V)I=',O<&]S:7A?;W!T+F@`
M:6YT<'1R7W0Z="@V-"PQ*3TH-2PU-RD`<V]C:VQE;E]T.G0H-C0L,BD]*#4L
M-3@I`"]U<W(O:6YC;'5D92]B:71S+V-O;F9N86UE+F@`(#I4*#8Y+#$I/65?
M4$-?3$E.2U]-05@Z,"Q?4$-?34%87T-!3D]..C$L7U!#7TU!6%])3E!55#HR
M+%]00U].04U%7TU!6#HS+%]00U]0051(7TU!6#HT+%]00U]025!%7T)51CHU
M+%]00U]#2$]73E]215-44DE#5$5$.C8L7U!#7TY/7U1254Y#.C<L7U!#7U9$
M25-!0DQ%.C@L7U!#7U-93D-?24\Z.2Q?4$-?05-93D-?24\Z,3`L7U!#7U!2
M24]?24\Z,3$L7U!#7U-/0TM?34%80E5&.C$R+%]00U]&24Q%4TE:14))5%,Z
M,3,L7U!#7U)%0U])3D-27UA&15)?4TE:13HQ-"Q?4$-?4D5#7TU!6%]81D52
M7U-)6D4Z,34L7U!#7U)%0U]-24Y?6$9%4E]325I%.C$V+%]00U]214-?6$9%
M4E]!3$E'3CHQ-RQ?4$-?04Q,3T-?4TE:15]-24XZ,3@L7U!#7U-934Q)3DM?
M34%8.C$Y+#L`(#I4*#8Y+#(I/65?4T-?05)'7TU!6#HP+%]30U]#2$E,1%]-
M05@Z,2Q?4T-?0TQ+7U1#2SHR+%]30U].1U)/55!37TU!6#HS+%]30U]/4$5.
M7TU!6#HT+%]30U]35%)%04U?34%8.C4L7U-#7U1:3D%-15]-05@Z-BQ?4T-?
M2D]"7T-/3E123TPZ-RQ?4T-?4T%6141?2413.C@L7U-#7U)%04Q424U%7U-)
M1TY!3%,Z.2Q?4T-?4%))3U))5%E?4T-(14153$E.1SHQ,"Q?4T-?5$E-15)3
M.C$Q+%]30U]!4UE.0TA23TY/55-?24\Z,3(L7U-#7U!224]2251)6D5$7TE/
M.C$S+%]30U]364Y#2%)/3DE:141?24\Z,30L7U-#7T9364Y#.C$U+%]30U]-
M05!0141?1DE,15,Z,38L7U-#7TU%34Q/0TLZ,3<L7U-#7TU%34Q/0TM?4D%.
M1T4Z,3@L7U-#7TU%34]265]04D]414-424]..C$Y+%]30U]-15-304=%7U!!
M4U-)3D<Z,C`L7U-#7U-%34%02$]215,Z,C$L7U-#7U-(05)%1%]-14U/4EE?
M3T)*14-44SHR,BQ?4T-?04E/7TQ)4U1)3U]-05@Z,C,L7U-#7T%)3U]-05@Z
M,C0L7U-#7T%)3U]04DE/7T1%3%1!7TU!6#HR-2Q?4T-?1$5,05E424U%4E]-
M05@Z,C8L7U-#7TU17T]014Y?34%8.C(W+%]30U]-45]04DE/7TU!6#HR."Q?
M4T-?5D524TE/3CHR.2Q?4T-?4$%'15-)6D4Z,S`L7U-#7U)44TE'7TU!6#HS
M,2Q?4T-?4T5-7TY314U37TU!6#HS,BQ?4T-?4T5-7U9!3%5%7TU!6#HS,RQ?
M4T-?4TE'455%545?34%8.C,T+%]30U]424U%4E]-05@Z,S4L7U-#7T)#7T)!
M4T5?34%8.C,V+%]30U]"0U]$24U?34%8.C,W+%]30U]"0U]30T%,15]-05@Z
M,S@L7U-#7T)#7U-44DE.1U]-05@Z,SDL7U-#7T-/3$Q?5T5)1TA44U]-05@Z
M-#`L7U-#7T5154E67T-,05-37TU!6#HT,2Q?4T-?15A04E].15-47TU!6#HT
M,BQ?4T-?3$E.15]-05@Z-#,L7U-#7U)%7T154%]-05@Z-#0L7U-#7T-(05)#
M3$%34U].04U%7TU!6#HT-2Q?4T-?,E]615)324]..C0V+%]30U\R7T-?0DE.
M1#HT-RQ?4T-?,E]#7T1%5CHT."Q?4T-?,E]&3U)47T1%5CHT.2Q?4T-?,E]&
M3U)47U)53CHU,"Q?4T-?,E]35U]$158Z-3$L7U-#7S)?3$]#04Q%1$5&.C4R
M+%]30U]024DZ-3,L7U-#7U!)25]85$DZ-30L7U-#7U!)25]33T-+150Z-34L
M7U-#7U!)25])3E1%4DY%5#HU-BQ?4T-?4$E)7T]323HU-RQ?4T-?4$],3#HU
M."Q?4T-?4T5,14-4.C4Y+%]30U]524]?34%824]6.C8P+%]30U])3U9?34%8
M.C8P+%]30U]024E?24Y415).151?4U1214%-.C8Q+%]30U]024E?24Y415).
M151?1$=204TZ-C(L7U-#7U!)25]/4TE?0T]44SHV,RQ?4T-?4$E)7T]325]#
M3%13.C8T+%]30U]024E?3U-)7TTZ-C4L7U-#7U1?24]67TU!6#HV-BQ?4T-?
M5$A214%$4SHV-RQ?4T-?5$A214%$7U-!1D5?1E5.0U1)3TY3.C8X+%]30U]'
M151'4E]27U-)6D5?34%8.C8Y+%]30U]'15105U]27U-)6D5?34%8.C<P+%]3
M0U],3T=)3E].04U%7TU!6#HW,2Q?4T-?5%197TY!345?34%8.C<R+%]30U]4
M2%)%041?1$535%)50U1/4E])5$52051)3TY3.C<S+%]30U]42%)%041?2T59
M4U]-05@Z-S0L7U-#7U1(4D5!1%]35$%#2U]-24XZ-S4L7U-#7U1(4D5!1%]4
M2%)%04137TU!6#HW-BQ?4T-?5$A214%$7T%45%)?4U1!0TM!1$12.C<W+%]3
M0U]42%)%041?05144E]35$%#2U-)6D4Z-S@L7U-#7U1(4D5!1%]04DE/4DE4
M65]30TA%1%5,24Y'.C<Y+%]30U]42%)%041?4%))3U])3DA%4DE4.C@P+%]3
M0U]42%)%041?4%))3U]04D]414-4.C@Q+%]30U]42%)%041?4%)/0T534U]3
M2$%2140Z.#(L7U-#7TY04D]#15-33U)37T-/3D8Z.#,L7U-#7TY04D]#15-3
M3U)37T].3$XZ.#0L7U-#7U!(65-?4$%'15,Z.#4L7U-#7T%64$A94U]004=%
M4SHX-BQ?4T-?051%6$E47TU!6#HX-RQ?4T-?4$%34U]-05@Z.#@L7U-#7UA/
M4$5.7U9%4E-)3TXZ.#DL7U-#7UA/4$5.7UA#55]615)324]..CDP+%]30U]8
M3U!%3E]53DE8.CDQ+%]30U]83U!%3E]#4EE05#HY,BQ?4T-?6$]014Y?14Y(
M7TDQ.$XZ.3,L7U-#7UA/4$5.7U-(33HY-"Q?4T-?,E]#2$%27U1%4DTZ.34L
M7U-#7S)?0U]615)324]..CDV+%]30U\R7U5013HY-RQ?4T-?6$]014Y?6%!'
M,CHY."Q?4T-?6$]014Y?6%!',SHY.2Q?4T-?6$]014Y?6%!'-#HQ,#`L7U-#
M7T-(05)?0DE4.C$P,2Q?4T-?0TA!4E]-05@Z,3`R+%]30U]#2$%27TU)3CHQ
M,#,L7U-#7TE.5%]-05@Z,3`T+%]30U])3E1?34E..C$P-2Q?4T-?3$].1U]"
M250Z,3`V+%]30U]73U)$7T))5#HQ,#<L7U-#7TU"7TQ%3E]-05@Z,3`X+%]3
M0U].6D523SHQ,#DL7U-#7U-325I%7TU!6#HQ,3`L7U-#7U-#2$%27TU!6#HQ
M,3$L7U-#7U-#2$%27TU)3CHQ,3(L7U-#7U-(4E1?34%8.C$Q,RQ?4T-?4TA2
M5%]-24XZ,3$T+%]30U]50TA!4E]-05@Z,3$U+%]30U]524Y47TU!6#HQ,38L
M7U-#7U5,3TY'7TU!6#HQ,3<L7U-#7U532%)47TU!6#HQ,3@L7U-#7TY,7T%2
M1TU!6#HQ,3DL7U-#7TY,7TQ!3D=-05@Z,3(P+%]30U].3%]-4T=-05@Z,3(Q
M+%]30U].3%].34%8.C$R,BQ?4T-?3DQ?4T5434%8.C$R,RQ?4T-?3DQ?5$58
M5$U!6#HQ,C0L7U-#7UA"4S5?24Q0,S)?3T9&,S(Z,3(U+%]30U]80E,U7TE,
M4#,R7T]&1D))1SHQ,C8L7U-#7UA"4S5?3%`V-%]/1D8V-#HQ,C<L7U-#7UA"
M4S5?3%!"24=?3T9&0DE'.C$R."Q?4T-?6$]014Y?3$5'04-9.C$R.2Q?4T-?
M6$]014Y?4D5!3%1)344Z,3,P+%]30U]83U!%3E]214%,5$E-15]42%)%0413
M.C$S,2Q?4T-?041625-/4EE?24Y&3SHQ,S(L7U-#7T)!4E))15)3.C$S,RQ?
M4T-?0D%313HQ,S0L7U-#7T-?3$%.1U]355!03U)4.C$S-2Q?4T-?0U],04Y'
M7U-54%!/4E1?4CHQ,S8L7U-#7T-,3T-+7U-%3$5#5$E/3CHQ,S<L7U-#7T-0
M551)344Z,3,X+%]30U]42%)%041?0U!55$E-13HQ,SDL7U-#7T1%5DE#15])
M3SHQ-#`L7U-#7T1%5DE#15]34$5#249)0SHQ-#$L7U-#7T1%5DE#15]34$5#
M249)0U]2.C$T,BQ?4T-?1D1?34=-5#HQ-#,L7U-#7T9)1D\Z,30T+%]30U]0
M25!%.C$T-2Q?4T-?1DE,15]!5%1224)55$53.C$T-BQ?4T-?1DE,15],3T-+
M24Y'.C$T-RQ?4T-?1DE,15]365-414TZ,30X+%]30U]-3TY/5$].24-?0TQ/
M0TLZ,30Y+%]30U]-54Q425]04D]#15-3.C$U,"Q?4T-?4TE.1TQ%7U!23T-%
M4U,Z,34Q+%]30U].15173U)+24Y'.C$U,BQ?4T-?4D5!1$527U=2251%4E],
M3T-+4SHQ-3,L7U-#7U-024Y?3$]#2U,Z,34T+%]30U]214=%6%`Z,34U+%]3
M0U]214=%6%]615)324]..C$U-BQ?4T-?4TA%3$PZ,34W+%]30U]324=.04Q3
M.C$U."Q?4T-?4U!!5TXZ,34Y+%]30U]34$]2041)0U]315)615(Z,38P+%]3
M0U]42%)%041?4U!/4D%$24-?4T525D52.C$V,2Q?4T-?4UE35$5-7T1!5$%"
M05-%.C$V,BQ?4T-?4UE35$5-7T1!5$%"05-%7U(Z,38S+%]30U]424U%3U54
M4SHQ-C0L7U-#7U194$5$7TU%34]265]/0DI%0U13.C$V-2Q?4T-?55-%4E]'
M4D]54%,Z,38V+%]30U]54T527T=23U504U]2.C$V-RQ?4T-?,E]00E,Z,38X
M+%]30U\R7U!"4U]!0T-/54Y424Y'.C$V.2Q?4T-?,E]00E-?3$]#051%.C$W
M,"Q?4T-?,E]00E-?34534T%'13HQ-S$L7U-#7S)?4$)37U1204-+.C$W,BQ?
M4T-?4UE-3$]/4%]-05@Z,3<S+%]30U]35%)%04U3.C$W-"Q?4T-?,E]00E-?
M0TA%0TM03TE.5#HQ-S4L7U-#7U8V7TE,4#,R7T]&1C,R.C$W-BQ?4T-?5C9?
M24Q0,S)?3T9&0DE'.C$W-RQ?4T-?5C9?3%`V-%]/1D8V-#HQ-S@L7U-#7U8V
M7TQ00DE'7T]&1D))1SHQ-SDL7U-#7TA/4U1?3D%-15]-05@Z,3@P+%]30U]4
M4D%#13HQ.#$L7U-#7U1204-%7T5614Y47T9)3%1%4CHQ.#(L7U-#7U1204-%
M7TE.2$52250Z,3@S+%]30U]44D%#15],3T<Z,3@T+#L`(#I4*#8Y+#,I/65?
M0U-?4$%42#HP+%]#4U]6-E]724142%]215-44DE#5$5$7T5.5E,Z,2P[`"]U
M<W(O:6YC;'5D92]G971O<'0N:`!S96UU;CI4*#`L,C$I/74T=F%L.B@P+#$I
M+#`L,S([8G5F.B@P+#(R*3TJ*#,U+#$I+#`L,S([87)R87DZ*#`L,C,I/2HH
M,"PY*2PP+#,R.U]?8G5F.B@P+#(T*3TJ*#,U+#(I+#`L,S([.P!M86EN.D8H
M,"PQ*0!A<F,Z<"@P+#$I`&%R9W8Z<"@P+#(U*3TJ*#4L,S8I`&EC:SIR*#`L
M,C$I`&)U9CHH,S4L,2D`<V5M7VED.G(H,"PQ*0!I.G(H,"PQ*0``1T-#.B`H
M1TY5*2`R+CDV(#(P,#`P-S,Q("A2960@2&%T($QI;G5X(#<N,B`R+CDV+3$P
M."XQ*0``1T-#.B`H1TY5*2`R+CDV(#(P,#`P-S,Q("A2960@2&%T($QI;G5X
M(#<N,B`R+CDV+3$P."XQ*0``1T-#.B`H1TY5*2`R+CDV(#(P,#`P-S,Q("A2
M960@2&%T($QI;G5X(#<N,2`R+CDV+3@U*0``1T-#.B`H1TY5*2`R+CDV(#(P
M,#`P-S,Q("A2960@2&%T($QI;G5X(#<N,2`R+CDV+3@U*0``1T-#.B`H1TY5
M*2`R+CDV(#(P,#`P-S,Q("A2960@2&%T($QI;G5X(#<N,2`R+CDV+3@U*0``
M1T-#.B`H1TY5*2`R+CDV(#(P,#`P-S,Q("A2960@2&%T($QI;G5X(#<N,B`R
M+CDV+3$P."XQ*0`(``````````$````P,2XP,0````@``````````0```#`Q
M+C`Q````"``````````!````,#$N,#$````(``````````$````P,2XP,0``
M``@``````````0```#`Q+C`Q````"``````````!````,#$N,#$`````+G-Y
M;71A8@`N<W1R=&%B`"YS:'-T<G1A8@`N:6YT97)P`"YN;W1E+D%"22UT86<`
M+FAA<V@`+F1Y;G-Y;0`N9'EN<W1R`"YG;G4N=F5R<VEO;@`N9VYU+G9E<G-I
M;VY?<@`N<F5L+F=O=``N<F5L+G!L=``N:6YI=``N<&QT`"YT97AT`"YF:6YI
M`"YR;V1A=&$`+F1A=&$`+F5H7V9R86UE`"YC=&]R<P`N9'1O<G,`+F=O=``N
M9'EN86UI8P`N<V)S<P`N8G-S`"YS=&%B`"YS=&%B<W1R`"YC;VUM96YT`"YN
M;W1E````````````````````````````````````````````````````````
M&P````$````"````](`$"/0````3```````````````!`````````",````'
M`````@````B!!`@(`0``(```````````````!``````````Q````!0````(`
M```H@00(*`$``$0````$``````````0````$````-P````L````"````;($$
M"&P!``#`````!0````$````$````$````#\````#`````@```"R"!`@L`@``
MN0```````````````0````````!'````____;P(```#F@@0(Y@(``!@````$
M``````````(````"````5````/[__V\"`````(,$"``#``!`````!0````$`
M```$`````````&,````)`````@```$"#!`A``P``"`````0````3````!```
M``@```!L````"0````(```!(@P0(2`,``$@````$````"P````0````(````
M=0````$````&````D(,$")`#```8```````````````$`````````'L````!
M````!@```*B#!`BH`P``H```````````````!`````0```"``````0````8`
M``!0A`0(4`0``"`"`````````````!``````````A@````$````&````<(8$
M"'`&```>```````````````$`````````(P````!`````@```)"&!`B0!@``
M7```````````````!`````````"4`````0````,```#LE@0([`8``!``````
M``````````0`````````F@````$````#````_)8$"/P&```$````````````
M```$`````````*0````!`````P````"7!`@`!P``"```````````````!```
M``````"K`````0````,````(EP0("`<```@```````````````0`````````
ML@````$````#````$)<$"!`'```T```````````````$````!````+<````&
M`````P```$27!`A$!P``H`````4`````````!`````@```#``````0````$`
M``#DEP0(Y`<```````````````````$`````````Q@````@````#````Y)<$
M".0'```8```````````````$`````````,L````!``````````````#D!P``
M^!8``!@`````````!`````P```#1`````P``````````````W!X``!E.````
M``````````$`````````V@````$``````````````/5L``!-`0``````````
M```!`````````.,````'``````````````!";@``>````````````````0``
M```````1`````P``````````````NFX``.D```````````````$`````````
M`0````(``````````````%1T```0!0``'0```#H````$````$`````D````#
M``````````````!D>0``=`(``````````````0``````````````````````
M`````````````/2`!`@``````P`!```````(@00(``````,``@``````*($$
M"``````#``,``````&R!!`@``````P`$```````L@@0(``````,`!0``````
MYH($"``````#``8```````"#!`@``````P`'``````!`@P0(``````,`"```
M````2(,$"``````#``D``````)"#!`@``````P`*``````"H@P0(``````,`
M"P``````4(0$"``````#``P``````'"&!`@``````P`-``````"0A@0(````
M``,`#@``````[)8$"``````#``\``````/R6!`@``````P`0````````EP0(
M``````,`$0``````")<$"``````#`!(``````!"7!`@``````P`3``````!$
MEP0(``````,`%```````Y)<$"``````#`!4``````.27!`@``````P`6````
M``````````````,`%P`````````````````#`!@``````````````````P`9
M``````````````````,`&@`````````````````#`!L`````````````````
M`P`<``````````````````,`'0`!```````````````$`/'_#````'2$!`@`
M```````,`!L```!TA`0(``````(`#``K```````````````$`/'_,@``````
M````````!`#Q_PP```"@A`0(````````#``]````])8$"``````!``\`00``
M``B7!`@``````0`2`$\```#XE@0(``````$`#P!;````H(0$"``````"``P`
M<0```/R6!`@``````0`0`(0`````A00(``````(`#`"/````Y)<$"!@````!
M`!8`F````!"%!`@``````@`,`*0```!`A00(``````(`#`"O````_)8$"```
M```!``\`O0````"7!`@``````0`1`#(```````````````0`\?\,````,(8$
M"`````````P`RP```#"&!`@``````@`,`.$````$EP0(``````$`$0"D````
M8(8$"``````"``P`KP```/R6!`@``````0`/`.X````,EP0(``````$`$@#[
M````_)8$"``````!`!```0``````````````!`#Q_PP```!PA@0(````````
M#``)`0`````````````$`/'_$P$``$27!`@`````$0`4`!P!``"X@P0(@0``
M`"(````]`0``D(8$"`0````0``X`1`$``,B#!`CI`0``$@```%8!``"0@P0(
M`````!(`"@!<`0``V(,$"*P````B````?P$``%"$!`@`````$@`,`(8!``#D
MEP0(`````!$`\?^2`0``4(4$"-@````2``P`EP$``.B#!`C&````$@```+0!
M``#LE@0(`````"``#P"_`0``^(,$""X````2````T0$``'"&!`@`````$@`-
M`-<!```(A`0(@0```"(```#S`0``&(0$"/4````2`````P(``"B$!`A2````
M$@```!4"``#DEP0(`````!$`\?\<`@``$)<$"``````1`!,`,@(``/R7!`@`
M````$0#Q_S<"```XA`0(;0(``!(```!)`@``E(8$"`0````1``X`6`(``.R6
M!`@`````$``/`&4"`````````````"``````:6YI=&9I;FDN8P!G8V,R7V-O
M;7!I;&5D+@!C86QL7V=M;VY?<W1A<G0`:6YI="YC`&-R='-T=69F+F,`<"XP
M`%]?1%1/4E],25-47U\`8V]M<&QE=&5D+C$`7U]D;U]G;&]B86Q?9'1O<G-?
M875X`%]?14A?1E)!345?0D5'24Y?7P!F:6YI7V1U;6UY`&]B:F5C="XR`&9R
M86UE7V1U;6UY`&EN:71?9'5M;7D`9F]R8V5?=&]?9&%T80!?7T-43U)?3$E3
M5%]?`%]?9&]?9VQO8F%L7V-T;W)S7V%U>`!?7T-43U)?14Y$7U\`7U]$5$]2
M7T5.1%]?`%]?1E)!345?14Y$7U\`<V5M=&5S="YC`%]$64Y!34E#`%]?<F5G
M:7-T97)?9G)A;65?:6YF;T!`1TQ)0D-?,BXP`%]F<%]H=P!P97)R;W)`0$=,
M24)#7S(N,`!?:6YI=`!?7V1E<F5G:7-T97)?9G)A;65?:6YF;T!`1TQ)0D-?
M,BXP`%]S=&%R=`!?7V)S<U]S=&%R=`!M86EN`%]?;&EB8U]S=&%R=%]M86EN
M0$!'3$E"0U\R+C``9&%T85]S=&%R=`!P<FEN=&9`0$=,24)#7S(N,`!?9FEN
M:0!?7V-X85]F:6YA;&EZ94!`1TQ)0D-?,BXQ+C,`97AI=$!`1TQ)0D-?,BXP
M`'-E;6=E=$!`1TQ)0D-?,BXP`%]E9&%T80!?1TQ/0D%,7T]&1E-%5%]404),
M15\`7V5N9`!S96UC=&Q`0$=,24)#7S(N,@!?24]?<W1D:6Y?=7-E9`!?7V1A
8=&%?<W1A<G0`7U]G;6]N7W-T87)T7U\`
`
end

--- linux_ipc.patch begins here ---
--- i386/linux/linux.h.orig	Mon Oct 14 21:58:38 2002
+++ i386/linux/linux.h	Mon Oct 14 21:59:46 2002
@@ -528,6 +528,9 @@
 #define	LINUX_IPC_STAT		2
 #define	LINUX_IPC_INFO		3
 
+#define LINUX_IPC_OLD		0
+#define LINUX_IPC_64		0x0100
+
 #define	LINUX_SHM_LOCK		11
 #define	LINUX_SHM_UNLOCK	12
 #define	LINUX_SHM_STAT		13
--- compat/linux/linux_ipc.c.orig	Mon Oct 14 22:01:18 2002
+++ compat/linux/linux_ipc.c	Mon Oct 14 22:42:01 2002
@@ -80,6 +80,20 @@
 	l_ushort	seq;
 };
 
+struct l_ipc64_perm {
+	l_key_t		key;
+	l_uid_t		uid;
+	l_gid_t		gid;
+	l_uid_t		cuid;
+	l_gid_t		cgid;
+	l_ushort	mode;
+	l_ushort	__pad1;
+	l_ushort	seq;
+	l_ushort	__pad2;
+	l_ulong		__unused1;
+	l_ulong		__unused2;
+};
+
 static void
 linux_to_bsd_ipc_perm(struct l_ipc_perm *lpp, struct ipc_perm *bpp)
 {
@@ -92,6 +106,18 @@
     bpp->seq = lpp->seq;
 }
 
+static void
+linux_to_bsd_ipc64_perm(struct l_ipc64_perm *lpp, struct ipc_perm *bpp)
+{
+    bpp->key = lpp->key;
+    bpp->uid = lpp->uid;
+    bpp->gid = lpp->gid;
+    bpp->cuid = lpp->cuid;
+    bpp->cgid = lpp->cgid;
+    bpp->mode = lpp->mode;
+    bpp->seq = lpp->seq;
+}
+
 
 static void
 bsd_to_linux_ipc_perm(struct ipc_perm *bpp, struct l_ipc_perm *lpp)
@@ -105,6 +131,18 @@
     lpp->seq = bpp->seq;
 }
 
+static void
+bsd_to_linux_ipc64_perm(struct ipc_perm *bpp, struct l_ipc64_perm *lpp)
+{
+    lpp->key = bpp->key;
+    lpp->uid = bpp->uid;
+    lpp->gid = bpp->gid;
+    lpp->cuid = bpp->cuid;
+    lpp->cgid = bpp->cgid;
+    lpp->mode = bpp->mode;
+    lpp->seq = bpp->seq;
+}
+
 struct l_semid_ds {
 	struct l_ipc_perm	sem_perm;
 	l_time_t		sem_otime;
@@ -116,6 +154,17 @@
 	l_ushort		sem_nsems;
 };
 
+struct l_semid64_ds {
+	struct l_ipc64_perm	sem_perm;
+	l_time_t		sem_otime;
+	l_time_t		sem_ctime;
+	void			*sem_base;
+	void			*sem_pending;
+	void			*sem_pending_last;
+	void			*undo;
+	l_ushort		sem_nsems;
+};
+
 struct l_shmid_ds {
 	struct l_ipc_perm	shm_perm;
 	l_int			shm_segsz;
@@ -130,6 +179,20 @@
 	void			*private3;
 };
 
+struct l_shmid64_ds {
+	struct l_ipc64_perm	shm_perm;
+	l_int			shm_segsz;
+	l_time_t		shm_atime;
+	l_time_t		shm_dtime;
+	l_time_t		shm_ctime;
+	l_ushort		shm_cpid;
+	l_ushort		shm_lpid;
+	l_short			shm_nattch;
+	l_ushort		private1;
+	void			*private2;
+	void			*private3;
+};
+
 static void
 linux_to_bsd_semid_ds(struct l_semid_ds *lsp, struct semid_ds *bsp)
 {
@@ -141,6 +204,16 @@
 }
 
 static void
+linux_to_bsd_semid64_ds(struct l_semid64_ds *lsp, struct semid_ds *bsp)
+{
+    linux_to_bsd_ipc64_perm(&lsp->sem_perm, &bsp->sem_perm);
+    bsp->sem_otime = lsp->sem_otime;
+    bsp->sem_ctime = lsp->sem_ctime;
+    bsp->sem_nsems = lsp->sem_nsems;
+    bsp->sem_base = lsp->sem_base;
+}
+
+static void
 bsd_to_linux_semid_ds(struct semid_ds *bsp, struct l_semid_ds *lsp)
 {
 	bsd_to_linux_ipc_perm(&bsp->sem_perm, &lsp->sem_perm);
@@ -151,6 +224,16 @@
 }
 
 static void
+bsd_to_linux_semid64_ds(struct semid_ds *bsp, struct l_semid64_ds *lsp)
+{
+	bsd_to_linux_ipc64_perm(&bsp->sem_perm, &lsp->sem_perm);
+	lsp->sem_otime = bsp->sem_otime;
+	lsp->sem_ctime = bsp->sem_ctime;
+	lsp->sem_nsems = bsp->sem_nsems;
+	lsp->sem_base = bsp->sem_base;
+}
+
+static void
 linux_to_bsd_shmid_ds(struct l_shmid_ds *lsp, struct shmid_ds *bsp)
 {
     linux_to_bsd_ipc_perm(&lsp->shm_perm, &bsp->shm_perm);
@@ -163,6 +246,19 @@
     bsp->shm_ctime = lsp->shm_ctime;
     bsp->shm_internal = lsp->private3;	/* this goes (yet) SOS */
 }
+static void
+linux_to_bsd_shmid64_ds(struct l_shmid64_ds *lsp, struct shmid_ds *bsp)
+{
+    linux_to_bsd_ipc64_perm(&lsp->shm_perm, &bsp->shm_perm);
+    bsp->shm_segsz = lsp->shm_segsz;
+    bsp->shm_lpid = lsp->shm_lpid;
+    bsp->shm_cpid = lsp->shm_cpid;
+    bsp->shm_nattch = lsp->shm_nattch;
+    bsp->shm_atime = lsp->shm_atime;
+    bsp->shm_dtime = lsp->shm_dtime;
+    bsp->shm_ctime = lsp->shm_ctime;
+    bsp->shm_internal = lsp->private3;	/* this goes (yet) SOS */
+}
 
 static void
 bsd_to_linux_shmid_ds(struct shmid_ds *bsp, struct l_shmid_ds *lsp)
@@ -178,6 +274,20 @@
     lsp->private3 = bsp->shm_internal;	/* this goes (yet) SOS */
 }
 
+static void
+bsd_to_linux_shmid64_ds(struct shmid_ds *bsp, struct l_shmid64_ds *lsp)
+{
+    bsd_to_linux_ipc64_perm(&bsp->shm_perm, &lsp->shm_perm);
+    lsp->shm_segsz = bsp->shm_segsz;
+    lsp->shm_lpid = bsp->shm_lpid;
+    lsp->shm_cpid = bsp->shm_cpid;
+    lsp->shm_nattch = bsp->shm_nattch;
+    lsp->shm_atime = bsp->shm_atime;
+    lsp->shm_dtime = bsp->shm_dtime;
+    lsp->shm_ctime = bsp->shm_ctime;
+    lsp->private3 = bsp->shm_internal;	/* this goes (yet) SOS */
+}
+
 int
 linux_semop(struct proc *p, struct linux_semop_args *args)
 {
@@ -212,6 +322,7 @@
 linux_semctl(struct proc *p, struct linux_semctl_args *args)
 {
 	struct l_semid_ds linux_semid;
+	struct l_semid64_ds linux_semid64;
 	struct __semctl_args /* {
 		int		semid;
 		int		semnum;
@@ -261,6 +372,15 @@
 		unptr->buf = stackgap_alloc(&sg, sizeof(struct semid_ds));
 		linux_to_bsd_semid_ds(&linux_semid, unptr->buf);
 		return __semctl(p, &bsd_args);
+	case LINUX_IPC_SET|LINUX_IPC_64:
+		bsd_args.cmd = IPC_SET;
+		error = copyin((caddr_t)args->arg.buf, &linux_semid64,
+		    sizeof(linux_semid64));
+		if (error)
+			return (error);
+		unptr->buf = stackgap_alloc(&sg, sizeof(struct semid_ds));
+		linux_to_bsd_semid64_ds(&linux_semid64, unptr->buf);
+		return __semctl(p, &bsd_args);
 	case LINUX_IPC_STAT:
 		bsd_args.cmd = IPC_STAT;
 		unptr->buf = stackgap_alloc(&sg, sizeof(struct semid_ds));
@@ -272,6 +392,17 @@
 		bsd_to_linux_semid_ds(unptr->buf, &linux_semid);
 		return copyout(&linux_semid, (caddr_t)args->arg.buf,
 					    sizeof(linux_semid));
+	case LINUX_IPC_STAT|LINUX_IPC_64:
+		bsd_args.cmd = IPC_STAT;
+		unptr->buf = stackgap_alloc(&sg, sizeof(struct semid_ds));
+		error = __semctl(p, &bsd_args);
+		if (error)
+			return error;
+		p->p_retval[0] = IXSEQ_TO_IPCID(bsd_args.semid, 
+							unptr->buf->sem_perm);
+		bsd_to_linux_semid64_ds(unptr->buf, &linux_semid64);
+		return copyout(&linux_semid64, (caddr_t)args->arg.buf,
+					    sizeof(linux_semid64));
 	case LINUX_IPC_INFO:
 	case LINUX_SEM_INFO:
 		error = copyin((caddr_t)args->arg.buf, &linux_seminfo, 
@@ -421,6 +552,7 @@
 linux_shmctl(struct proc *p, struct linux_shmctl_args *args)
 {
     struct l_shmid_ds linux_shmid;
+    struct l_shmid64_ds linux_shmid64;
     struct shmctl_args /* {
 	int shmid;
 	int cmd;
@@ -439,6 +571,15 @@
 	bsd_to_linux_shmid_ds(bsd_args.buf, &linux_shmid);
 	return copyout(&linux_shmid, (caddr_t)args->buf, sizeof(linux_shmid));
 
+    case LINUX_IPC_STAT|LINUX_IPC_64:
+	bsd_args.shmid = args->shmid;
+	bsd_args.cmd = IPC_STAT;
+	bsd_args.buf = (struct shmid_ds*)stackgap_alloc(&sg, sizeof(struct shmid_ds));
+	if ((error = shmctl(p, &bsd_args)))
+	    return error;
+	bsd_to_linux_shmid64_ds(bsd_args.buf, &linux_shmid64);
+	return copyout(&linux_shmid64, (caddr_t)args->buf, sizeof(linux_shmid64));
+
     case LINUX_IPC_SET:
 	if ((error = copyin((caddr_t)args->buf, &linux_shmid,
 		sizeof(linux_shmid))))
@@ -449,6 +590,16 @@
 	bsd_args.cmd = IPC_SET;
 	return shmctl(p, &bsd_args);
 
+    case LINUX_IPC_SET|LINUX_IPC_64:
+	if ((error = copyin((caddr_t)args->buf, &linux_shmid64,
+		sizeof(linux_shmid64))))
+	    return error;
+	bsd_args.buf = (struct shmid_ds*)stackgap_alloc(&sg, sizeof(struct shmid_ds));
+	linux_to_bsd_shmid64_ds(&linux_shmid64, bsd_args.buf);
+	bsd_args.shmid = args->shmid;
+	bsd_args.cmd = IPC_SET;
+	return shmctl(p, &bsd_args);
+
     case LINUX_IPC_RMID:
 	bsd_args.shmid = args->shmid;
 	bsd_args.cmd = IPC_RMID;
@@ -460,6 +611,20 @@
 		return error;
 	    bsd_args.buf = (struct shmid_ds*)stackgap_alloc(&sg, sizeof(struct shmid_ds));
 	    linux_to_bsd_shmid_ds(&linux_shmid, bsd_args.buf);
+	}
+	return shmctl(p, &bsd_args);
+
+    case LINUX_IPC_RMID|LINUX_IPC_64:
+	bsd_args.shmid = args->shmid;
+	bsd_args.cmd = IPC_RMID;
+	if (args->buf == NULL)
+	    bsd_args.buf = NULL;
+	else {
+	    if ((error = copyin((caddr_t)args->buf, &linux_shmid64, 
+		    		sizeof(linux_shmid64))))
+		return error;
+	    bsd_args.buf = (struct shmid_ds*)stackgap_alloc(&sg, sizeof(struct shmid_ds));
+	    linux_to_bsd_shmid64_ds(&linux_shmid64, bsd_args.buf);
 	}
 	return shmctl(p, &bsd_args);
 
--- linux_ipc.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200210142111.g9ELBflP017240>