[radvd-devel-l] radvd on dynamically created interfaces

Vincent Jardin radvd-devel-l@litech.org
Tue, 9 Apr 2002 01:41:54 +0200


--------------Boundary-00=_UHW9O5H5QK09WF4OCIV6
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

> >
> > radvd could listen on one of the following Kernel's messages:
> >
> >  Linux:: - RTM_NEWLINK when an interface is added
> >            - RTM_DELLINK., otherwise
> >              (Netlink's API)
>
> Yeah, I've been meaning to add Netlink support for quite some time now,
> but unfortunately the API is too cryptic for me to figure out.  If
> somebody would like to contribute it, we would certainly accept it, but
> it's not something I'm actively working on.  -Nathan

Humm. I have written this patch today. I did not test it deeply, however it 
looks to work between my 2 Linux. I still need to write the frame work of the 
BSD case, but I do not know if I could find time to test it with a BSD OS 
because I do not have any at home yet.

Tell me if you have any issue with this patch that is based on the CURRENT 
CVS repository.

I could not build a unified patch because I have some write permission issues 
with your CVS repository:
$ cvs diff
cvs server: Diffing .
cvs server: failed to create lock directory for `/work/cvsroot/radvd' 
(/work/cvsroot/radvd/#cvs.lock): Permission denied
cvs server: failed to obtain dir lock in repository `/work/cvsroot/radvd'
cvs [server aborted]: read lock failed - giving up

Vincent
--------------Boundary-00=_UHW9O5H5QK09WF4OCIV6
Content-Type: application/x-bzip2;
  name="radvd_vincent_patch.tar.bz2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="radvd_vincent_patch.tar.bz2"

QlpoOTFBWSZTWaA1NicATaf/lf83ZQR////////f//////8BCSAEICAACGA//aegAAtrt9mAnaXd
lshVbVrHTKw53e1HpFtqkgPY99Bie+3B0Cpb6MdG97nl997fbvuuXfcjQce6727bHd1LJpltm7tz
tnNtdu5vm3o85m+5e45tWGNdx1u0uNdyOKy5lI+7i5stYi1a2qLZb25datszQ21l1h3zcq7CU211
ve3YZjYZe3nA9a+bXQ2ewkV9mo7pdi8JTSEAQyaACTGgTEaamCKbamymABPSYKNPU0NDEaAAMQQE
TTQphMkxolPZGFTZNJj0pkNAAHqA0BoAAGQDGpU0p6Q9qTQ8kaNDQAAaNAAANAANGgAAAACTSRIJ
NGpppPEE9SbT0amlPxJ6Gp4kn4plPJPaUZMymjyh+poPVB6n6hAAiSIRNomQ0aTAqeVP9EJ6nqbI
p+lNpNP0o/U2qNqPU0GnqD1NAG1AAPSCJIgIAmhTyJtNACTTI9E0nkyofqQ3qhmo00NqMgHqAAA3
P6YH6xfpf2/9r7UDj/8i/VAvTCwAaAEPtsA9/y19nv9490dZPmIC95AkEC1wz0V2hou94mqBB06Q
XqUChZQYRJViKAkYCCRgWypIiRltEjZAjWMYjESNkgDGBICUiqZiAf8QT65+ifYqyfSZkwJ7+rJi
BNWFhIiQFikIoIkk5HxWFRYoDIqzTZF/JxrJD90mBQ2Q5INBvYyYzh9chHicWQ3JFYjESCsE/vai
KRRZEYsVFUSJwyVFiwFIsjzpvJSIiisRGQURkBlLQWJFQQWKQQkBASQEQjBgxSMPiYetlXvNpbZ8
smTIIDEeOX1X9fevBOBgJ/rpYLPtNT/u03xoutRD0ksFhFJ3mNPo/V4s9nx+o5/d2ba5IeOMj36F
Le8IQfFZWW1MsDHCJYkIVCMiCvvjfL7uYLEj/VZVjGKMSRFFkRBBGRRGRRIqCiKCixFVVBBEghFF
VVFBVURBEUBVQkWQViMIsgiojGBw2pVRSKqqqIiALBBGKs21WQWCMVRYoKRYPRKSKgwRiQkZIDJA
kRCCwEiDCV5dXV2O8fk/36Ay9nzBa7KMUK0lOwDIBrZ5SLHFZuwgS8pzswe1Jq0/8NGIWk7E6/nO
ezYb2m6Wmu68dXTtd2ZCHPVcMxCRNdRaREPLpEQyZiREVcQXLRRADJACpAhJCTlNXwQuhfyfuZsZ
jrMFsTGvG3uY8hTl83W6gdjV31w6Qd0KXcB8FI8UR0+o8PiimWeWS2jeExrQ1t+M0oDqgNhPPSUQ
2ANPc91QAzoStQ4kCSYyZ8g4zoxxzHMqfiWmdj5tmzXj43ZzUgxMmGdNEjihSBmhPrcHofTRCiGg
8QJUuctGicjsw25uVGby60VZdLhlEq5TAFBOVhpNM0wNoL6r40NB03mA0QrxajUimnJ2XXXpvuZT
Y2tSiPNQRt/Hle+2LJpKc2y+t276a7JtFWB/mZO+9TqgdZ307ShQ7KWRVUjLSpj1cQY8JVFGCsRY
oqk01Y2haysVSCKypFru4mKo83B0wgSQ6zPxQ8VLhP7UEoGnH+a2eG38/yhRskXQetzbmfQmZ+vr
zwOrg58fd+zG9R+uYP5Jo/c8t6u+l2MrCRerg8r7/ftYU8iLX+rqZyBBfr8B6BAZF/7VdQhXiMD0
b+Q9MnSDq80ObC8mm7mHI1kx5WYh83xOK1k+j4S9/tu/lq47BqOAsIGBY+vlZUAgfPAv9PraYoMd
XZ5g4+X4taPLzHiAq8jiw/oryzqcDCRd+aISNtU0iiU1ile3Mx8CbzExhn2TrTIadtZ/tT2pzTUo
sQ8JIEN8IH1pikV7k/6JcgGBOOzD4xXn8bbye1WVdTprbfXw1bbMMEE3r4Q75n8hU9pi8/Wd4W41
Cp6sgsifv8/xr8p9/d9n8jg+elTjj4Nd35PU+R5u7ze59MQgg/ZbH4HDCszOJw5hHkr4ejrnmoQJ
C/hW8U3xGXfD93nxh93L0k3GuxmvX8Jj8Jd9/vrITt11sVCM6y9U/n77JjE8hE5EKiqqnZTRt3+C
zHJUxPv9lNjucryGc1QVb5r5f4+Xn8FNwPJ06Io5atsFOu+5Qs8IhwglSomNqtiKH4IQQQ/Tl3gx
/FyDnnlj+ow1SySXKq34/hgAJ+ZCKqZxRRyTeF4fIn1d1BZUwgJJIMHThZ1gps+TGyN4WIA/TAeM
A2apk2JjTZL7KS3IZDMsqVhbmQzM2I+A7+mHuobX6g4UFuhMdmi1bAkkILCEjP0UvjF3EW4fxA98
cQh2Mh0ySkRJUhUBGKQ852+PYH6DhU8TjbkXeiddemyO4iphEDsYhxgNAnPSzRPLw3RkpBOCBm1a
Stm5zXe1NvIhH8nCxifH6ZOaeAORvg3qRWDtlAyPOy+FGTYehBN1/v82AYJg3IJye2aoR52SEITe
dJO3Ov5zZ07Dw/XrSqq+K1kVXR5NHsG2B/ow7vS2YBjCRNdKy0vXavLO1RMTzKwLz5e/NuXHKGMK
CR+k+1/dqftebA9rus98Ts6U9ZgYeYM8GiImA1juIMvNBmuSEst+Y0UXTzTPOid+3ER/jun4YHhr
4+GT4rG34dhSMzYIYZk7ZcuMIzWwcTigfE7pBGJqEKMHHGS6DS8ymet8OJE1uMk1buUHX4Yxksr1
sKq1MkK4C8GwrL6UJ/FV1BGukBnIwduDNUJvWmskxuQ3HEB8PYaM8ohUPaVOhNWtZ7H3mzkMFANo
ciYaSEJA3lI0+xidKan7bQhJuIymdDx/FX8Bfud3dwKfJAZz/dWie/bAVSUodhaZFBwCf1lJyRRB
Tt0exr+jIH4TEn8uvBm62JM2tqD4f2fHzk9W8IU34hj603v9Pg/z3VXpm6kaUmTjWn3teT5h9E28
8AOgz2/akpjJ+J7PnvoOv8s6W7zx907yynim4xWBCgrj59g9EarD/NpemgI3sx349a9ojbh3RhDF
YooAnnyEquiAZm4rLluFu++CHx+ny5+/P+6XCxhoI7ttKZ5Fh8j/YGRFY8mBoFvTs/X2pSU3q6Vg
we7iftW14LuQt2YOr6injXkrPIJDGB2CBp0peN+pnqIenHWHLXA3B68fPfIn1+BPiSh9u49m3UiN
YL8aKXDutrj/Y0SwGQYcAIHatGCh33tZvLejcITOJdUmZ6SzyMPbzb6GPV4Le6muytLwO4xZH0AV
0makIsib7/pw440Iqno4nD6W/5PwnR6Io+vTvtEkZqznzauuJqjz5a9Wh/t1V3YnTLLCQILl+qzF
bxrKjc2Pe811hyitSSo2O0oOJ9bNQzbAjPisjqomXimez8HB19wGqAyMJ1LYIBv2BRbo8y7iR8Du
ePUNu1Jdkduw8nd7/UbJrWZ2mWqGrr4iuN2iuIgXbHp80538mItc2szyiqB+CsZuKMCHB2EJsiCi
hhPR2EsnLtnqrKm9DfoErCYOjyccLyXTU4mVYnd9TyHDvFPwe6nT2j1irQDzufXKjz9OulAZhw64
d8Ou4SKHdRNLVNlY5ESp5i5TXtB4uh87NnZsW+UiaOdVi73+UdEir5Hor4U55y5EMeMHoKNDHMmM
fAJTcuBVGa+fBBErUBMUxK0bXIFhcbdgv1ErfEx15xXRz0NJfb1M+OYDbInXP0f4tWzbem3CGHLC
yjtIrXxd4jT36dS59NdW2f9BCFZOusDHcdOfVE/VmxhD7ejCLcMFAHk/c/TtVJSxtQXwHGbo87wM
65xtk9+vqhlUOXJE8mbizIqriuPmsUgaMNqY4bZ0EubbWyLyTCOLRTYvC/aOthA7uz5tXEUnPPuv
vAuOIgmCdNiZ5JCQfjmCdeTkJpYnNc5PBYQwBWIVG0vxcZVZXTd4lICxpSe222K34P1W7XOctGMQ
d8/eHuQ0IvwJqhknVDkO30xrp0Ld73ByvaYWE4qRUw85Nbz+ycyWvNwi9q3jnbr2y2UiNjh+wMAH
9aFOxEieXi1PTnQTxRtkxoIYS18tE+VjoF1K7nLr5PiOg7844Da2wkUwOIvseA9MvTweaokW7fR4
fHJYBNjpmd6to6hLrzPLE9/TbswLjmqYtvnEq2uy3Dty3+sxejJG+RKaqjq6cua2rNbbKknWRpyr
JTs3M1kM2d15izIMAGwM69+eFDPe2vMWfycM2WBeLirXXOuN6YCiqHbni1qGqBowZmDRU19ppQUt
Zg42CKRKHMjkH85iHyqU3Y0QCRJVp0avsYNvu/nRBF7XDuHymgMPQUQdghIXO7AugzuL+meWtKNs
tOoP2/fxjpLMTjdHXx6Jx2k67yiZev5QZ0Eew8qe4cx7xxJ27PETgnWY6s8+AA4qrI9rOgbavk0J
5HvqHv0q/q9o82RUbItrgbRneEI3n2ajqjPbyrveQ4QZx+DsN2YReH5uVt+Z8NVuW6vEreu3bF5G
eBhm+xAkFJziUs2+uJOhgrQ0IIlT7+TXPJMYYd0EZJxjwfRl6OiReJgHYEGbx+DwnYlnCYPvOJsf
1eH7CRuC2mAbWCpmZ2gc+ldNFEdi9X1zyj0ezojXNe0Giz7HBQgDlWvt/w51OvTh6Pf4hroLKIe0
48az6nUyejw4KszK12i5uo4GaIjaInEgSmQ4NXeWhBnUiXc+sgiG0OMsgLFD4f/jAP4z62whP1Mj
uHqCfpJ0PqVw8/wniVdW6l/600wFkJ4GuwQxhxkMD1TlsmtqH6DL+w75kPiH5DlQnCiqqiPZmCRF
BECCoM4CBoLeqflAwGMnDPwxnaCKsUXyoFH4/V9IM36DxeEbo3nNuqPy6fe8vv0/1DWUb+r6fN5e
L4fV5urv9n67fWJhm6RkJhNqX1JhvurcaXoBnGKa7a7aLsl+T8YH19Nvsj76+yKQxtaDkAgFBCSZ
g6P3v82V/gzl7dMpPG/DY6o3y31Oc8KdGCq9HpQxCPgYfEJ5/5h7wEwijEGCMiw9PZSYGd90KKb1
b4COnFQwHQe767aZ0zFqhv8kOs1ZVDE2Q/CTUN3UHKlvw8vdqqtP0nK1piYjEyz3mG85uWZYQOKK
UQkJcVe9QvfNdPWtf1pYh5GxEdHe9j1tD3S+OM3BNEbFi+24qyaKFZ9CqppLA2UO2fMOCRqQkSb8
Sob556DIZqAsvWmDelYXPyHHkgx7XcUmbfBm75uYTvAbVO7YsWGquGpuFoURMr/KgzMwqxx5QFAh
S8xBxMyTKDbCAc0nxPRDgY1CFK0CqNVlF9C0at6mX6Xip56CirmGRkMlEMT+N/byPAtTQUMfdRRb
IFwJ2I3dw/ZfxWuiXvrbw8OFljzbjgrCZj83SH2VY4Y8Ot2+79zu8f3Yp46rGLU5d9OzJH6pUrhO
X53J4L9VZCUQtDow8PNo3TcXFpn16uqjsL5FYRMaFmXXAczb58+vp4flSdC3TiSkZzbDxQ84Rx4l
VS7rx0uNHLCmZnvRFTWfbzOUqu0n5ijFOdPHRjmlR9zz0xhLoeHUn0IdHixR3yoOE0tUFw7JiG6b
8MudsLLKf5/OEdkaiBVHrLPVIh4rKudcWLjoy4RgZD1WYWZpXEjEneaBMWQmitrhOQM/RRazL0R5
e2PV2duUySG21+SPM3LGdLfp6voUG0nyHxHC7GbXDASh2rNKUzOWCabMS6SeBBM7wd3McL78uXDl
movqXHC7dkxGnIVJp07p/Nful1cGq1eEMG3nJs3bUW2vdPXaljfx1jHfz7o5dzUfYdAhCcVfY+0p
i+zYtgaV5qvd5vsv4Q1dtOg6td2R/fpDs0HgyU2vxQhEuZE+FebLG2GGSvHAWmvVIDXv4vBsBdmO
dPNPywGSQGIiDCRBkP70KxYoSCfbwLG/p++w2l4oGk5QU0iq/hAkygnAwf7dYSKAxg28mGJFrIet
+M9v1Z59Uy3EFf8XMBRnt+uqr4v0kP5Pc9Pne1fN/p6nZ8iesTnPu0vgkp5e8GZAoyJ9qiqNov5k
/OeV0kjq9hhCFo5JKeEINF09EnVk0PAu/y6uwXRsrskHZX2DGeJM8eMl2SooaKYWQk6ns7roT+5O
UAaNIw+UyVfBVEjKFgm/1792SLY344PQ3mRWcYaZ/0nlevVJpO+rTB7V6KRawvxgQhSolc/xdB64
rT4h5fL9AwQNcW+58HyeknaOTta/Liz74NVCnq0YN6KsV89MC+ADheZNUXQRdVN+2nNQ2o6yRzfD
qdLG+KBxW+NbVuFkvZxUVMXCjqaw6n009j6IRopeimshrgzT3fSNq5cvgCYagbfvyb20HLp7g7hg
fi+YQKAFO2eqbJIiggMYIMVOuFJDxDR1wbO0s9KONwwqqNSPtXkMXypiH8+9+x/mpP1kDB1oxxHn
ZLXzxG1wo8+F7p8xJofepJw+D8NvEx3CPuY3ieLO9c7162QvI+yZ5Jm3zjaue4/A9xkwvd6x0mmF
zlYldyHLiNnJXCf0u1MeJ1WXHhm2Ywh0maWreLqw+AZn+cODv+kA2eICb6XGkauG70uTacJBvC8G
ZFCAbxEIjcfVYxxHIMNPz/mfTItTJLuvZrBNBugCogGo9OW+R3BnDyszDijbWVmrdJZ7Uwc6CzsC
CrlFiGWCclllK5cVEo1FH/m4YUW6piv+0+H24RPnnd7aHuvt9SdgnmW9gaWweiiB34lY5/x1n5jw
KLbE01A2Ty1geWhDFwsyTrK40vPh9m+5STdj1cY7B+ZRMT8MIwSRS6r6Io9j3qMRyQzuvs9PV/D+
Fqq27VD07NdR5ejnZDjmhC0A/8xTrT7iuk/pe9PseTj7EN/OC8xGCqxUitgKQ7QNEW3cgIjcjjS8
wNvltAPKSId4TuK+YVhFt/AHXnkv0hEtp/v/lLzcDUCRWBUaJ24bN9aPfL8rvF7MGCCdJoFzJPpR
G8jLCiLNAbl5+MjxDQo7d6b2Gwz6+Oush1nRNDf8+eWR2mxCtlfssmnD7rmGzC1jqEolGs7omhLQ
opD37ZUNEN25Cj/vLhoDwFLkgc22OyxmGbhwRAfjAgjWXn+kJaeydZZrLJFfTlh/inTVNT/CR+fF
iKq6pgkkkklOZFctsLXGMVwwSlRTDqxGUyEcfUdZ9U41on0Qk+9okk6P4nW4KcE2jR9fBh6CB2dv
XkdXUFuvsy7UL28nziGGMxhmPelr8k1W0DYpdMe6DXTepfJu9x9THOI+s0cvX6CUV0p64HpemGKa
J7Y+LtY8EChQZO0340SSaTPX+Xtz85p+Vhcrm0aoql/SfIfGUmQ6zS/rduv5nZuNcETIsfdBkIY6
+J2Zoi1/avvgVAz109qAh+VCc/Ml6v3vY8DceV1gEQqLMiIwbh8rlijWtphkxa9ftpOX4nZj5MnV
SYuOiubbuU09ChMqaDTV9FxVnLtEaHo4q827Lnwthg/4UWKFkNM4zvPLMs1EtMic+oUsbmXPYxjS
WZ3aSpg4KEIDodcW7zQo0eCFF+EG9sXD7MHC1IQkY1LmchB2yqtDbVHDFBs1XlhdmovhGuT2qpHK
t/83dDEr8y4SR45nGri01eSYY24bqig5BUDK6L8v5g+BSjkZe8WkBBCXHNTM/ZcQ76b/D+PS+Ub3
HUhxQddAuO3HEAAMpToA4Dtq7Q2XTBnVU6gJr2HqrvQMq9+r3Q+peRVOD7fKPR7AF5T8b9Bjp7QX
54p3EGRSLEZCRIsD9CEJ+n6UsgWUQ/qbMkKyFEJ+RAwwlKUSLVKFMVf0REsRbEA/cQ9PbVef3Mz+
JvDzcGhzmwvppz4hhpBZZNN8Z45mVbo3s3n7fKLplbs1xGCFCHv9XvYtv5ARcCACfG232en0/tGw
7g99eoT31NP5/BOo6j90gmJ+YcosZCIiT7vJKGBRpf5ywD7P1fwD/xE+Uh84Afu4+nZ9iB/EvD+z
7jSLvdh+WGWW/eENhfcJ0RDTHXVc8gHirWFEri8y2Hu0nxk31UJ7I2lllolrVcpctRRvBCcmQNaV
dYTMSOxhpxqUtK1obKZYTJ+x0jtm3BK0V+tqrlol1cLaOcycvNIQYB+Yn7A48BGw0f3ASGnKPlYz
g2eolqqWZdXMbQiYvwMVRjrQTBXeDLglxN7/KQEmHDX/Br8y6h6pjvNoH2wb9NqWvOFBd1OHGoWi
I9YYIQ7gpSnqE/fl3TpydhVBRUKhHx2qTpuQsDw3FHKN3Ai9WS4qHi4ZaLZlqdj4yJxCtofUJ75A
SFTdygGbybO/uolij8li3LhWH9fGJRy7VbAmbiWLk2MdORw3ahj7xcnINtZipIkTkpDGcSKT3kRt
AMYY0mkEHa2aqBnLy1Wh1IuVLMclDNxiCwrGOM2ttlkhS8CY2jjubJaM2e4HO1UEfMkUIhqOpkFa
2fIaofYfX7/yqv695erXoLVa1rmXbqsGAROlSQShqwUbhdX/KW+Hr2IGJoOGPeBGIQGQVIkEl6Sg
kVJId4TYdoPRD/TW9NC5gJcEgd4mHxwUD2C2kjh9Iz4RPCWYVPmE+A+0Tq0844wLGgQEzheBlA5M
4mnExeMa015YFZR0awoOS/HTQCxEucC4lQKwGWgRytVuGDGDWN0TSW+gMQincyhNnae3I4mDw5Fc
wCxyEmLoHGh5xM0NnqlNHtDyqW3M/LFGR71FgeRtWxxIbfBQA3kR2GUm4SvQsyYIJmvoNIQZbCkH
p4dHUMx2mAUES782BqHaaeWFZWhMxN+wAPiPmeQHr/OeXUZJEsd8EX4znDkd3aWC0Mg1gHOobefZ
yaDTB5Odfan3jukGEUYosYogjIg/0EPjJ5oBzh7vL1QUQhoGLXxB2ucZlbPJE4hXpJILkzZxmm78
B82AZEykjIHuljT0hEyDN1+Zo254geMssoJTGSgDX57lYL+hAnBkZbb2V2hp9Kw95AohygUhCxFq
1BgJx4BCDwnVzaPBCfYxgglonul6HRhoJ3GgNZUVkM6meQuAYAWxcbHUS9pgwg6G4HJA+uAnj20N
R1yEM05CmPPEOO+BORXM9nOjBIjCKIQjNuROx+RN4d8A9JylwdArTC7i0V9YaUhACZi3pAVIdUVA
MYQoxfwqd9o3Ox8LM4T494qigqY8Ph3EUtZolKRJKRKUpEkpEtvYBQMaSHcXDgBruDjdOa6FAbfr
/zO0O7oA5xTvd1Ubi1g2AnGCbPOc4TtlCcKI08WrYCp6JWMzZjM85S2oJ8+cmYCwiHugUExxa9c5
koHnqE8OKVt4GKIHPQC/3c9sXZhDqDM6xMAIMkGTy+77SxFFERVESKkRiKpaBytOOsE2pOuW47IG
nMxRNHQcRnJDWMtcFBtegudZNoI2Ds56L7uNTFLEOJxsPZHE5ZmlVZxzy1un2cgC11PmmAR7lkH9
+fHZ7l6/z2vetp8AvzgUhfHAs2OR2l7arqSAYGfXdwBsGswNBR4AcmCkhNZBmAuPScu0qZWs0rSI
VPa1RWF15DSV9p4+HTAAAAAABIBIAAAIJAARfQUCAtSBUCAASa3ra4o8/UrtYbkznyo8sAAsAQXq
8G4dxA9nCqxZegV3NMwc4zNl8fZvIC5pcLWbfA5RiugJXGXGbfmDxhMDsmm0vIvmormCeRPxmuzi
QPXA9dDoqv0AWjUYzENMuCJwzkx2JjBHpO7QZfXIf9o/NOl6oSqppshTMWAhm8ge8HI3S3I33YvX
cfn77Zm8ztSUqP2+b5h6YHNo+aqXzI1rAKKabr2kfaeMm/o+OhdfbJX28lt2fwDIPWH3R1EfQSiK
UERoihb3kID5z4RPkt8eBUE9MBou2tkRQcIJ+Am/O2tsHuMLrqYhm7t8lBnsIZhltrA+O7efpeeK
bw+OpiJmaB7N3xk9Y5AuDx5MlURoJQ/rOTv05bSxC+obEMZSs8zGSRWsREZmvrAIvXcVVmO2gy/C
scC9qbi1hA8alEmHGvUe9UHkPIHiMgGgnc8olnfRA3e2VfkLB9Lg+ON+sIWLulHyTGTI06tIYAC1
0Mn+w3VR7rx+2zMGZw7h2T3GBoIA0KsamS5fY2bBkYpMjJr5mG4u8aJAvlVnaGDuNDaGSwPqcwLh
yf0hYMR92C2SwaJud9xsQKDMBjnmkF54PCdmZmTNco8TkZEDHEvVDticHiC/8Ip+0qx16RXkC9f1
Mg+Hl6YPU4U+98vtQ6772jrlprGuySC9P6wna0SGKz2NMcaNqKAZcwnUcLg6rifwuRzPSRPZJA+m
CSfL+ajhisg5mg4h+bMUbGQS/ccvQgwHeEKDkc8VfiHiBlBD9xhRYIVKGAnYsQOBYKPsEmODgGI7
2t+bMh8licRpB98kgwRUkVjFFhESF76ehOvsE6VT0aghCUbQxwUtBpxUTF+aw24uQMRLBl3QLACs
r4A2X0B9Zy/mP8oH+QIewBpJPArqB8heiNfP492bl0+tbKacDt2pqhmj6YHJ9BpbD58SprGEfEbN
8gsYn3vhRmpi9/fwh18DyZI+CrZeBzc8Mz5QGKdm31V/Jrln6S2+4WIx7rqGodaxpbHvE32IY/0P
0sZAgh7MD3e+62xbqev5yej8/L+YzTkvko1FgnIN4G6F4pmcqHpDoHBhRVDiaDJv4JS87PXDmdAm
tnIsKp1PTMPo8IRKdpPrfMeWHZWSRFQEZJgoMkBQkIgKxisVQKQJAbDBSxmLFuNjNL0B0vCsVxhc
2ByNkPCdV2Sd6U8CsC9tMxKiZlnjWdgy6m/LcMiBFGQTMzVucZK5Vxd3F5FKgHiUpkWIhAYCEhvC
gzxZNzXVwnFFNUmabM4SLkQ3W/IZnOsnbChwyJkXZ/PRUt27mWXHndcfIOBrLT9saZCf6z+nSxmT
UhbwOZyb+pWQVkEAhwuOgbXkI/lgdDqaA0aDPje6ljxg3wL2g4EfQUh5E7rljCEzCl9LsRBa30Jo
VCWClhDQ5HzM75ermE7uGSQa2JbWCIuALWcoodbRf9h8hvjqicFIG2K85hczkw0w1wSECBiQR2xc
wzwOXYB6xeup1DrKyIVRFBUFeUHedJs7JlnLn5fH64+R+8fL1gsGMigCIQQUm17lGQTTtHPzceBO
k/XITiHKSFuCaDM39wlBq0dnf36t0PAHcu/WPPmTSUEjyy5oDlR7DYn2BdHHvQNgWxsBb73G4ff9
Vi0aZOGkN/wcjYXbrNKDuEvYxT7IoWvIlZWJ1BrhCSSMRiICiMSICiwkYHhDRvfSBmt/8Scyd48x
t7hRHeqMGLgzc9XiCmt/mHD0EQgEJYsZCcuhlGkCv2hWth/0vsWk9ZpdAPcMdiWJCGVm1YqVclK6
0Z5qOtkwIZwqJCZVGJG9nEvGk1cF+QrIsJlZLSau4aTQlroXlyJOr0FOVAzgCTcLSB65VHsa1Ja5
8nju0kwC5vdiXWQBS4GDMpxuxchcBpeDr8TZhr5vXXREMGGuQBXXADyhsBa/BG04a9jzNujwCUoi
JxtTe9MexPS7DfCcbG20sEs3lBkWMimFsOLcSiLiVNDLosxCxU1dGQT0swd+W4RiCKymJYAEnQ6t
GWcmQxBhzOQFAORWtWhi6OzC9ShUTAuslmhkugZCHewgbh2KXLGNrTSbrmri3aNTd/cE5BwGRExW
BqvBdeZRlgjhtA8veZ6qOuULVjuaB1w2SBJKJ1Cb1puTg52bwDjiWU4wsmFKPbDmJfccbqunyBAN
XyVqedDWie4Agl1Dg0rQiM2BqLQzp3WF25oRYOWp8i8653LuZo9VeLPbT9hagh1uqZnFdPMTDE5O
ScwA2rMy69jSfbEZ1Wx0pxkjjMSlJFKNPqN+aGxPyrA3KYyvGhpHT+8vBdg8lBN2fWoll2xcC/gC
waJtSAdWBba621J23S5VsbGymguVcMBjC5AKO8hZbhSnoDhYdh9wTFBcFwqMUjAM1DgfSQJB2uw8
/HUU8PXzTWJ8AvGk9GAcZ+QwHsuvmgcOfh0VzvQ4J+OA2UXghmGfMQWfF4uxci7Yxccqtjr6NfIQ
I1euzG27Y3ky8JCvJI3FWtjeJLblpkkcmLoDNM1BS1aNtiHaQB0Fgb3NjkaaPb3m53Ww7GwmCg5K
HwiJmvEdNttBNqKdqE15OQFuIDZNl7B/B3esPtiNMicB64hIlD2JL17jukjBPGIvkgKEIklBDIGf
0/oLvyccalZGT40QPY5c/kNnD35YIME2ZQORwW1LLW1BCgCI7wAiEVihCAAEZCEipqBooQ27NpT8
U8IH6uar1hiXwZWa7NV+i2aG6CallB38QrnOvqC5MhAz2PJaVGnMzK3JG1QKt6UuiNG2timpNDrA
6zD7ohzOIRE5hBEa6Z541lXGYmYgUofs76AwIPNhg2aHS8hUdNzFMomEHm/6Qsps9fKiWHiXPfeN
cLK+Ja6UQlNMbBdaAvLF6t2UGEV1ujmv6yax1IEaFOMwcsycM5IgzJQsNpENzUmEo6m5KpQNBdmy
mWkEBBgjEk1N7EWRRQ6SELqYdQ7NhlJxaJGQNNZIMkgbZoBZF5+SBjpcCshysg25BPtj3R6iBaaa
0VDgb5xmoFDeg2GCW7xz8WJyvRe8oqqjSwnKgosJ7h5jNE8pzOZgaTByvvUrGcw2AnFOJB0UJccH
jBxi0XUNUQSl6zEI0WOcUT7kCufQzA4An88iE9X5V3s+hGJIwfLiv4YJBkRLNb3SFLIhFi2hGCeG
5+/UugZBKx1gHBHpelhEMA6jA9g9xOgekrF8ynQLXRFOxL9IDF++h6A4+s4zRsUO1O77lk6jDmkN
73eWiaNUtdZBQNOjDWIlGwghi70LrOIPq190aT7iIFEf6IHwxDbTVMGEtoIwLLbGLLErOPkCx73W
pHB+wYfAjhdu2L+FTQ32OumBcyCpbCtSURL9rZqMREV1aCCsolQWKIgiJS0YhTgYslzC3G0v5pf4
A4hrjg3yOdLGb1LK9giqops7YVPvUHfwvnpkWPDM8ED0DADsR/UtkD3QALh2nZS9Ue8CAHrEjgxG
0ES/oO4KztCegs8Xn9HWLIpBQWCrAUioyIJBEk8ZpQQQVHv+OB7fqUGHxITwWrneYHBcjBAhDG57
lHmoNh8ocx4lHUJ2/iOZ0f4o8N9y3Nm2CdxaoHWLHwcdq6DoEDQlDvDBgO4XEuMY4+Ic+8Jstn2c
ZgwmsiU/sCLuJL8V/uz2dWxD4PDn6eWocw92uRWIkEOVxAnIhwJ8XPBB023UiUpUaNBjUaLZhLLZ
YXPPTRpGKwNH2CTfcBs++yRTxRLqzkXPWMXE57nREeiUEJEYshOrP4byV1kL9r+HBbPzmljEgneg
fLCyuYsUIiSkwNfZ2CcgHKED1VlYpSmt9C4HLigdAFzIAmQxCyG56ATkB2a0AdcSnQQyhjCKbcUe
GkK7FEehxgr50Nx7J19wFgIodLYgfw2gpBSRC+4QxjAhLIkjAIRikVtvuFIBzXxmtViidha2FzQS
1NAcBbhr0hhDjpOuAWN3dma1hgHJrBARRPSko8XwJM4nvJk4mpcPxKykeVhR3GYlGDERErIHwnfd
bPpD8iztulVFyM6Auwpqim77kHgHX0u4a7Dbcse9sB0gCUxCVKYRGRhBkUIJB3j7dDd5MI0USBZD
p6/eJXjlZbPLxzMDPLFuT7ZgSEL3pDE5LsiBLXZj4DX03fOvl9YZOIdIvcDS5G3ZwxwOMJDSwaBq
9XOcfJjF8kHJiMPq2/Vqc3t9XCqKKqUS/8IHPrgk+5aKXzEE4IPHteg/Oez6e+Yyod4VC6Xkph5C
CEqHxDPxjn7y1k449yz7JabDfq5GR32K9RL9VNo9hIE8F5d/MEaEJvcV8qJwYDMgUwH5PHVPADTx
jnDwtWfq0XdK6qfgWMCZEgViQcD4DjMI4pAjzHno5jaHBL+dwbnqAycw7YXt8KwUSaaLBjBGQLSk
USIrILAFgLIsgqAxe/IJBMXs6ciOhClyRcSgJinvS0L+pyG+nLJzBLGpBFN61Czgoa3gF8dpKIc1
xJkjv0lEuB5csTTZ7LDeqL8cLWHeW9Lle0m9O0slBSFSCzD0B4aAdxDtABTv+pTwJotKJxGTcdal
L3SUZJggWBWBo9eGqLum7N++a2zUiZpszRQ3lGgbS/vxKixZPUQ49lBYbN8gaHJCq83vppgM0kDQ
grla62iagUf4RijsxpMTEbBbcMRBNUbcexZA6nyckYQY7kGvRCGpJayUGoEEpTohFJxyMIknSlCh
I2P3m+/SZmBxsyBmKQ1JkmDoa1JREyuDGSjO8OGgpJC6DSFAG8I8F4rLzqVpVuYJbdKVeRCL4HmL
mDRGl2nk8eF+nGqwlVVM6DpjaPCFsV7pJJ3g+eMBRBFIjJWAiDEGSReVKrlH+lJycu/BQ0RVaxne
L4nz0wsp2sg/T3wPbRTxbA8szp4TFcYFsh9s5yQ6kepYZTDmENf0QsJmNztgnXly8bx4ZA4DmvO6
1aG1150BtIEJCRRkFLRAaUSIRfVhWJcIoxZEjAIosVxWyHmmpbNwNPT21NYW6qNYYgEe/KbXxvda
QGzzBVhOyXu42GEVwwiYBCCRzuDSex/YJAM0zEQ/KA6iet6begcJGKnyBkiagA6sEPoN58yAGfZL
IBSYwuP7WFy0UzPqUTKjmGe2cxvDTAZOSMhiQqLXmaXEQcgiHB2RzNRxQkMEDp92IciZiGTyqg4C
U5mr0eJ5S1oSbRzvIfC/8ej7eMiT2F8Mh2flDtDtAFEERnBVrSgJJKCQCOa1CLmFvKBOcjdNOnJf
QGAPk6N4HTQZPy+i1jBpWvr4YBb3IeImW82j27QcRPGNhxunMsZ2odiww1uBbPKfCR25Q9xm8664
afBC4RNLRnIlJaOODpx1PMzqIYpDHaeswEwxUKePdrONo3nYlAfd0F0TQdZlawB683N+YweBfh56
MSo9eRRnPQ/pjRzbcd9HrwrYgprv6CdwbkTr/tgDGtBbp7Sc3FUBqha4CCUIDCIin8WvA60/guYN
EOXIzPRpsVYotZLx+3Q8fMpfFhrAwhtN0Gn4h0kIdwUob4MLpzi0mw2l90JCT416jyBpB50gEA78
+6pRsC97QBUDg3PtpxDErDYMrHVsYGhC3ZvLunC6O7d00OVCupElNOmsMplyGjMwRSN49jHld0pQ
fOnNgYSlkSweVNxzk9OHcjsmuHiQcZcsFFgg+IuAUmSwuQMYWJRZYoMDUSxaTO4WXAJSwYEMTsGb
04RPRKlQIQ70pevf9v2/+/b9X6f06DZmlenjgSEPR0YHONnmt0YJBxeEMk8pjZBsTBILkNUBGi+p
mrnK9GausMV6yOGs6KdMcIS4l08F909y/BAgwikRigAiKJBJD7POeyh3ENK2uzdZTqU55o2rz1Y2
ecDPo4GEH8aSV7j5m9AflL2hKgVUohA0OKC9432JZe8HqAilcRetC30qZTRAx/FKDPR0mzPJkAwS
Do9QrUhIxCECKGQRW3YLmFnQDBzU1ebUTmJ6Tg0PEHvBmoHSDtTudht2gm3AoTdBT88RcFhdY62y
FIwht5/P1P8F/nMynQ0mh41Qd2mJJvUF55FFsQQMgcxLiMzB2BSc2fPmlQ33yrDvKmToQiE9MRmW
kgZrozWx69q5WzyAyCKQ9gY2tjxVYlqWnG9gZRERDO9nAcghUwtOBsTNmF5gkH6w4eA1UkA1mGjb
BuhO1BMBjKspWDua+d44gqvztGop3EhJF9L8TtkNy5HZ101oZ8eBysYUG8ch0HRMddUyZGOj83Hq
xOB5CD+ZOsHXtR72NQ4F29r8lu4YEhfAsmDv1X1x5EPlj41RvI6gnUhnbyltQxuXcqzql5SSXBE1
2vrcF3dKc5M73uF4kGOxS97BfCthO7gnBdgw1GYYz26a6l1PPRUkhCSZ9i+NkzMI+ksBoeujyKcF
82+3prWcXgN3bhDYhkxJ6TJNCsCEN0JekTphXMXXMPo+Re6IGYn5WN5ZkBBXncuA+6N74APQmKEu
GKVbaVopiHKcnCvBpOQSaOiGJlOt2ewlBfywwDvpTY7vkaC1YYsbHRXva0LT0CbhiX10LR1AECiI
ixqKEVFKlSUlUigcHEp/ZVLFFAip0iwQGgIJkUwEOHdFGGcHv4QwiPrW9Rt2+OY4gUmMewW0CQIS
SIcvV4bh74S973xFkjeeIT/I5mW9gCE3kFl8CIDWgGhMGtIxiDKlTMBMc6kmkAOkMvLlsNi+c5SK
LPbwaSwPx288+YSWs1k5cs+SYcPDXsNUQBCFaSTQGzsBd2oKVegUEiobInBcSb3qbSRWhZ+DWRB2
QAkk1Qa96oXklJCTGXxaQncHAaQQOEVgwFpOwgW1dsC0lw6RgSyVLsaBUCJg79TGCGjgpSBE3b7b
8zX7yt0Iba37bEtdRXqdMpblLQsDQdkIdiiqKqqsRVF1BA+jRvEnOBvIanI96FNBxJczcXVc0Exh
bYxISQu2wXAHl0g8vuuroSAY+jLtKh8dhsk5i1mDvSM34FyRDYbMlwtMq6U+6chw+jXr1uFGq2QX
T6AORloBi4qLmYL7SyuO/PEpKYtMCjFLQVPRfDjCfeE0xVMjATUAtkBdTdwwLOIAfugPzxdHasO/
ZQNxetDfxdezOX5VtvwmBitrXhCgwXjvt6C7YdSjK8/UR8v3Mto9AQB/ODsPUgE4jlsXcHMjEz4g
fioMLjEQwYoL/fwMlw3SHMYTpGhtthgUmnxDXADoERTADzolIaaj2EE6ub3o9ZxKk6vJitXo9XtL
mhMkx8xe2Qm7eILsBT/UIb7UFBYPJAPrDSGUHS0dlsjivtInwDc9qJ3EExR37TvGyMahqBrTKrbZ
uWIkEEopyYFWUiIXNygjsSEDEx14iHuE46Hn7XSUxVKtTYqkgZ7OLwi28JVvivuqXgWn47YSQ7he
Cv1odRn40ickf7t1sJ5V/WhqWuth7xfT7AMD1HaV8gQ9nkIi8YsiebtwIiI5OTa0obh9xUO8Ivti
O85d8J9tdwbBR69q6VTQOiGwCpZ7zzeGugPuO3MBzNA/lJja6c011NYsK4tRtUUJQpvbNuiZ54VY
CfgUHEI9CgPSic/vntFDID3ogiA9sogmgfEMD0wfwhaxYUEShWmcwbxIAVyZxJIsPyywCUoQzoK4
mmSSiM397IbeLYHU5ATWBpIwghgfMBZgwpYEPe8XtKgsb4/dw0MzXKHPSzVOwTtPF8GdOOqHnlGY
NR6gznqMk0g2QA7IJYug6wcBfog3PI5ZaT0VUK5BAp8OwLEnyxJRkkRWQURkVFSIxVg8osFUFERi
gFT+kP8CyHz+vxnwIciHulvnOqfvgddATeFLaboZ+z4LJsZHrMaSRUc4o/PCQW9w+bEdl1S9+MzM
S+FV+Ogl4UtsAaeweUTKFEZdl96xIB//F3JFOFCQoDU2Jw==

--------------Boundary-00=_UHW9O5H5QK09WF4OCIV6--