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!? M7V=C;VYV7VEN9F\Z5"@Q-RPS-BD]<SA?7VYS=&5P<SHH."PQ*2PP+#,R.U]? M<W1E<',Z*#$W+#,W*3TJ*#$W+#(Y*2PS,BPS,CM?7V1A=&$Z*#$W+#,X*3UA M<B@T+#,S*3LP.RTQ.R@Q-RPS,RDL-C0L,#L[`%]?9V-O;G9?=#IT*#$W+#,Y M*3TH,3<L-#`I/2HH,3<L,S8I`%]'7VEC;VYV7W0Z="@S+#4I/2@S+#8I/74T M-%]?8V0Z*#$W+#,V*2PP+#8T.U]?8V]M8FEN960Z*#,L-RD]<S0T7U]C9#HH M,3<L,S8I+#`L-C0[7U]D871A.B@Q-RPS,RDL-C0L,C@X.SLL,"PS-3([.P!? M1U]I;G0Q-E]T.G0H,RPX*3TH,"PX*0!?1U]I;G0S,E]T.G0H,RPY*3TH,"PQ M*0!?1U]U:6YT,39?=#IT*#,L,3`I/2@P+#DI`%]'7W5I;G0S,E]T.G0H,RPQ M,2D]*#`L-"D`7TE/7W-T9&EN7W5S960Z1R@P+#$I`"]T;7`O`'-E;71E<W0N M8P`O=7-R+VEN8VQU9&4O<WES+W1Y<&5S+F@`+W5S<B]I;F-L=61E+V9E871U M<F5S+F@`+W5S<B]I;F-L=61E+W-Y<R]C9&5F<RYH`"]U<W(O:6YC;'5D92]G M;G4O<W1U8G,N:``O=7-R+VEN8VQU9&4O8FET<R]T>7!E<RYH`%]?=5]C:&%R M.G0H-2PQ*3TH,"PQ,2D`7U]U7W-H;W)T.G0H-2PR*3TH,"PY*0!?7W5?:6YT M.G0H-2PS*3TH,"PT*0!?7W5?;&]N9SIT*#4L-"D]*#`L-2D`7U]U7W%U861? M=#IT*#4L-2D]*#`L-RD`7U]Q=6%D7W0Z="@U+#8I/2@P+#8I`%]?:6YT.%]T M.G0H-2PW*3TH,"PQ,"D`7U]U:6YT.%]T.G0H-2PX*3TH,"PQ,2D`7U]I;G0Q M-E]T.G0H-2PY*3TH,"PX*0!?7W5I;G0Q-E]T.G0H-2PQ,"D]*#`L.2D`7U]I M;G0S,E]T.G0H-2PQ,2D]*#`L,2D`7U]U:6YT,S)?=#IT*#4L,3(I/2@P+#0I M`%]?:6YT-C1?=#IT*#4L,3,I/2@P+#8I`%]?=6EN=#8T7W0Z="@U+#$T*3TH M,"PW*0!?7W%A9&1R7W0Z="@U+#$U*3TH-2PQ-BD]*B@U+#8I`%]?9&5V7W0Z M="@U+#$W*3TH-2PU*0!?7W5I9%]T.G0H-2PQ."D]*#4L,RD`7U]G:61?=#IT M*#4L,3DI/2@U+#,I`%]?:6YO7W0Z="@U+#(P*3TH-2PT*0!?7VUO9&5?=#IT M*#4L,C$I/2@U+#,I`%]?;FQI;FM?=#IT*#4L,C(I/2@U+#,I`%]?;V9F7W0Z M="@U+#(S*3TH,"PS*0!?7VQO9F9?=#IT*#4L,C0I/2@U+#8I`%]?<&ED7W0Z M="@U+#(U*3TH,"PQ*0!?7W-S:7IE7W0Z="@U+#(V*3TH,"PQ*0!?7W)L:6U? M=#IT*#4L,C<I/2@U+#0I`%]?<FQI;38T7W0Z="@U+#(X*3TH-2PU*0!?7VED M7W0Z="@U+#(Y*3TH-2PS*0!?7V9S:61?=#IT*#4L,S`I/2@U+#,Q*3US.%]? M=F%L.B@U+#,R*3UA<B@U+#,S*3UR*#4L,S,I.S`P,#`P,#`P,#`P,#`[,#`S M-S<W-S<W-S<W-SL[,#LQ.R@P+#$I+#`L-C0[.P!?7V1A9&1R7W0Z="@U+#,T M*3TH,"PQ*0!?7V-A9&1R7W0Z="@U+#,U*3TH-2PS-BD]*B@P+#(I`%]?=&EM M95]T.G0H-2PS-RD]*#`L,RD`7U]U<V5C;VYD<U]T.G0H-2PS."D]*#`L-"D` M7U]S=7-E8V]N9'-?=#IT*#4L,SDI/2@P+#,I`%]?<W=B;&M?=#IT*#4L-#`I M/2@P+#,I`%]?8VQO8VM?=#IT*#4L-#$I/2@P+#,I`%]?8VQO8VMI9%]T.G0H M-2PT,BD]*#`L,2D`7U]T:6UE<E]T.G0H-2PT,RD]*#`L,2D`7U]K97E?=#IT M*#4L-#0I/2@P+#$I`%]?:7!C7W!I9%]T.G0H-2PT-2D]*#`L.2D`7U]B;&MS M:7IE7W0Z="@U+#0V*3TH,"PS*0!?7V)L:V-N=%]T.G0H-2PT-RD]*#`L,RD` M7U]B;&MC;G0V-%]T.G0H-2PT."D]*#4L-BD`7U]F<V)L:V-N=%]T.G0H-2PT M.2D]*#4L-"D`7U]F<V)L:V-N=#8T7W0Z="@U+#4P*3TH-2PU*0!?7V9S9FEL M8VYT7W0Z="@U+#4Q*3TH-2PT*0!?7V9S9FEL8VYT-C1?=#IT*#4L-3(I/2@U M+#4I`%]?:6YO-C1?=#IT*#4L-3,I/2@U+#4I`%]?;V9F-C1?=#IT*#4L-30I 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 M+#8T+#,R.U]?;5]K:6YD.B@P+#$I+#DV+#,R.U]?;5]L;V-K.B@X+#$I+#$R M."PV-#L[`'!T:')E861?;75T97AA='1R7W0Z="@X+#$T*3TH."PQ-2D]<S1? M7VUU=&5X:VEN9#HH,"PQ*2PP+#,R.SL`<'1H<F5A9%]O;F-E7W0Z="@X+#$V M*3TH,"PQ*0!P=&AR96%D7W0Z="@X+#$W*3TH,"PU*0!U7V-H87(Z="@Q+#$I M/2@U+#$I`'5?<VAO<G0Z="@Q+#(I/2@U+#(I`'5?:6YT.G0H,2PS*3TH-2PS M*0!U7VQO;F<Z="@Q+#0I/2@U+#0I`'%U861?=#IT*#$L-2D]*#4L-BD`=5]Q M=6%D7W0Z="@Q+#8I/2@U+#4I`&9S:61?=#IT*#$L-RD]*#4L,S`I`&QO9F9? M=#IT*#$L."D]*#4L,C0I`&EN;U]T.G0H,2PY*3TH-2PR,"D`9&5V7W0Z="@Q M+#$P*3TH-2PQ-RD`9VED7W0Z="@Q+#$Q*3TH-2PQ.2D`;6]D95]T.G0H,2PQ M,BD]*#4L,C$I`&YL:6YK7W0Z="@Q+#$S*3TH-2PR,BD`=6ED7W0Z="@Q+#$T M*3TH-2PQ."D`;V9F7W0Z="@Q+#$U*3TH-2PR,RD`<&ED7W0Z="@Q+#$V*3TH M-2PR-2D`:61?=#IT*#$L,3<I/2@U+#(Y*0!S<VEZ95]T.G0H,2PQ."D]*#4L M,C8I`&1A9&1R7W0Z="@Q+#$Y*3TH-2PS-"D`8V%D9')?=#IT*#$L,C`I/2@U M+#,U*0!K97E?=#IT*#$L,C$I/2@U+#0T*0`O=7-R+VEN8VQU9&4O=&EM92YH M`'1I;65?=#IT*#$P+#$I/2@U+#,W*0!C;&]C:VED7W0Z="@Q,"PR*3TH-2PT M,BD`=&EM97)?=#IT*#$P+#,I/2@U+#0S*0!U;&]N9SIT*#$L,C(I/2@P+#4I M`'5S:&]R=#IT*#$L,C,I/2@P+#DI`'5I;G0Z="@Q+#(T*3TH,"PT*0!I;G0X M7W0Z="@Q+#(U*3TH,"PQ,"D`:6YT,39?=#IT*#$L,C8I/2@P+#@I`&EN=#,R M7W0Z="@Q+#(W*3TH,"PQ*0!I;G0V-%]T.G0H,2PR."D]*#`L-BD`=5]I;G0X M7W0Z="@Q+#(Y*3TH,"PQ,2D`=5]I;G0Q-E]T.G0H,2PS,"D]*#`L.2D`=5]I M;G0S,E]T.G0H,2PS,2D]*#`L-"D`=5]I;G0V-%]T.G0H,2PS,BD]*#`L-RD` M<F5G:7-T97)?=#IT*#$L,S,I/2@P+#$I`"]U<W(O:6YC;'5D92]E;F1I86XN M:``O=7-R+VEN8VQU9&4O8FET<R]E;F1I86XN:``O=7-R+VEN8VQU9&4O<WES M+W-E;&5C="YH`"]U<W(O:6YC;'5D92]B:71S+W-E;&5C="YH`"]U<W(O:6YC M;'5D92]B:71S+W-I9W-E="YH`%]?<VEG7V%T;VUI8U]T.G0H,C(L,2D]*#`L M,2D`7U]S:6=S971?=#IT*#(R+#(I/2@R,BPS*3US,3(X7U]V86PZ*#(R+#0I M/6%R*#4L,S,I.S`[,S$[*#`L-2DL,"PQ,#(T.SL`<VEG<V5T7W0Z="@Q."PQ M*3TH,C(L,BD`=&EM97-P96,Z5"@R,RPQ*3US.'1V7W-E8SHH-2PS-RDL,"PS M,CMT=E]N<V5C.B@P+#,I+#,R+#,R.SL`+W5S<B]I;F-L=61E+V)I=',O=&EM M92YH`'1I;65V86PZ5"@R-"PQ*3US.'1V7W-E8SHH-2PS-RDL,"PS,CMT=E]U M<V5C.B@U+#,Y*2PS,BPS,CL[`'-U<V5C;VYD<U]T.G0H,3@L,BD]*#4L,SDI M`%]?9F1?;6%S:SIT*#$X+#,I/2@P+#,I`&9D7W-E=#IT*#$X+#0I/2@Q."PU M*3US,3(X7U]F9'-?8FET<SHH,3@L-BD]87(H-2PS,RD[,#LS,3LH,3@L,RDL M,"PQ,#(T.SL`9F1?;6%S:SIT*#$X+#<I/2@Q."PS*0`O=7-R+VEN8VQU9&4O M<WES+W-Y<VUA8W)O<RYH`&)L:V-N=%]T.G0H,2PS-"D]*#4L-#<I`&9S8FQK M8VYT7W0Z="@Q+#,U*3TH-2PT.2D`9G-F:6QC;G1?=#IT*#$L,S8I/2@U+#4Q M*0`O=7-R+VEN8VQU9&4O<WES+VEP8RYH`"]U<W(O:6YC;'5D92]B:71S+VEP M8RYH`&EP8U]P97)M.E0H,CDL,2D]<S,V7U]K97DZ*#4L-#0I+#`L,S([=6ED M.B@U+#$X*2PS,BPS,CMG:60Z*#4L,3DI+#8T+#,R.V-U:60Z*#4L,3@I+#DV M+#,R.V-G:60Z*#4L,3DI+#$R."PS,CMM;V1E.B@P+#DI+#$V,"PQ-CM?7W!A 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>