----boundary-LibPST-iamunique-666486847_-_-
Content-type: text/plain
Robert
"It is not 'completely safe'; to do that Vectors would have to be immutable with their components set to be Read-only (somehow)."
Here is a knee jerk reaction to your comment.
It is possible to make the components of a vector read-only by using "IN".
If , say,
TYPE vector = POINTER TO ARRAY OF REAL;
then operations on a vector need to pass through procedures that take IN arguments
PROCEDURE DoSomething (IN x: ARRAY OF REAL): REAL;
BEGIN
....
END DoSomething;
and call
VAR v: Vector; r: REAL;
r := DoSomething(v)
so that even though v is a pointer its elements can not be changed.
If the components of the vectors are themselves pointers to other structures
then again the operations on those components would have to pass through procedures
that take IN args.
-Doug Danforth
Robert wrote:
Wojtek Skulski wrote:
Meanwhile I have a question. Your function LibVectors.Neg is allocating
a new vector. Why? Flipping the sign of every vector element can be done
in situ. Why are you calling NEW?
And the same comment applies to other functions, such as Abs, Mag, Map etc.
One has to make design choices, which usually have pros & cons. It is rare that one choice is superior from every aspect.
I assume you have read the section in the Docu called "Assignments".
The issue is:
VAR
a, b : LibVectors.Vector;
BEGIN
a := .....;
b := a;
LibVectors.Neg (b);
If this was in-place it would also negate the 'a', whereas with
my design:
b := LibVectors.Neg (b); (* Neg inclueds a NEW *)
I have negated b without the non-obvious side effect of negating a.
I think this is safer, less prone to accidental error.
It is not 'completely safe'; to do that Vectors would have to be immutable with their components set to be Read-only (somehow). This I considered too inconvenient and inefficient, hence the design compromise you see.
By contrast the design philosophy for the type LibComplex.Complex is 'safe'; the type is immutable, the fields are read-only, and 'Big' sums with Complexes generate a lot of garbage.
I am sure there are applications where these design choices are sub-optimal, if not unacceptable. But that would be true of any choice. C'est la vie.
Cheers
Robert
----
To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy
---- To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy
----boundary-LibPST-iamunique-666486847_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3NcZmNoYXJzZXQwIEFyaWFsO30NCntcZjFcZm1vZGVybiBDb3VyaWVyIE5ldzt9DQp7XGYy
XGZuaWxcZmNoYXJzZXQyIFN5bWJvbDt9DQp7XGYzXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXIg
TmV3O319DQp7XGNvbG9ydGJsXHJlZDBcZ3JlZW4wXGJsdWUwO1xyZWQwXGdyZWVuMFxibHVlMjU1
O30NClx1YzFccGFyZFxwbGFpblxkZWZ0YWIzNjAgXGYwXGZzMjQgDQp7XCpcaHRtbHRhZzI0MyA8
IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwv
L0VOIj59DQp7XCpcaHRtbHRhZzMgXHBhciB9DQp7XCpcaHRtbHRhZzE5IDxodG1sPn0NCntcKlxo
dG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnMzQgPGhlYWQ+fQ0Ke1wqXGh0bWx0YWcxIFxwYXIg
fQ0Ke1wqXGh0bWx0YWcyNDEgICB9DQp7XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRtbHRhZzI0
MSAgIH0NCntcKlxodG1sdGFnMTc3IDx0aXRsZT59DQp7XCpcaHRtbHRhZzI0MSB9DQp7XCpcaHRt
bHRhZzE4NSA8L3RpdGxlPn0NCntcKlxodG1sdGFnMSBccGFyIH0NCntcKlxodG1sdGFnNDEgPC9o
ZWFkPn0NCntcKlxodG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnNTAgPGJvZHkgYmdjb2xvcj0i
I2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCI+fVxodG1scnRmIFx2aWV3a2luZDUNCntcKlxiYWNrZ3Jv
dW5kIHtcc2hwe1wqXHNocGluc3R7XHNwe1xzbiBmaWxsQ29sb3J9e1xzdiAxNjc3NzIxNX19e1xz
cHtcc24gZkZpbGxlZH17XHN2IDF9fX19fVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH17
XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgUm9iZXJ0DQp7XCpcaHRtbHRhZzExNiA8
YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpc
aHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQg
XHBhciB9Ikl0IGlzIG5vdCAnY29tcGxldGVseSBzYWZlJzsgdG8gZG8gdGhhdCBWZWN0b3JzIHdv
dWxkIGhhdmUgdG8gYmUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIGlt
bXV0YWJsZSB3aXRoIHRoZWlyIGNvbXBvbmVudHMgc2V0IHRvIGJlIFJlYWQtb25seSAoc29tZWhv
dykuIg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUhlcmUgaXMgYSBrbmVlIGplcmsgcmVhY3Rpb24g
dG8geW91ciBjb21tZW50Lg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgdGhlIGNv
bXBvbmVudHMgb2YgYSB2ZWN0b3IgcmVhZC1vbmx5IGJ5IHVzaW5nDQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCAiSU4iLg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0
ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWcxMTYg
PGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUlmICwg
c2F5LA0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1s
cnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpc
aHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBUWVBFIHZlY3RvciA9IFBP
SU5URVIgVE8gQVJSQVkgT0YgUkVBTDsNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH10aGVuIG9wZXJhdGlvbnMgb24gYSB2
ZWN0b3IgbmVlZCB0byBwYXNzIHRocm91Z2ggcHJvY2VkdXJlcyB0aGF0IHRha2UNCntcKlxodG1s
dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIElOIGFyZ3VtZW50cw0Ke1wqXGh0bWx0YWcx
MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0K
e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFn
ODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31c
aHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICANCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7
fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBc
J2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRm
MCAgUFJPQ0VEVVJFIERvU29tZXRoaW5nIChJTiB4OiBBUlJBWSBPRiBSRUFMKTogUkVBTDsNCntc
KlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFn
NCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4
NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgQkVHSU4NCntcKlxodG1sdGFnMTE2IDxi
cj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxo
dG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZu
YnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxy
dGYgXCdhMFxodG1scnRmMCAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgLi4u
Lg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRm
MCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBFTkQgRG9Tb21ldGhpbmc7DQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAg
DQp7XCpcaHRtbHRhZzQgXHBhciB9YW5kIGNhbGwNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxy
dGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQg
Jm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRt
bHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxo
dG1scnRmMCAgVkFSIHY6IFZlY3RvcjsgcjogUkVBTDsNCntcKlxodG1sdGFnMTE2IDxicj59XGh0
bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFn
ODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31c
aHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdh
MFxodG1scnRmMCAgciA6PSBEb1NvbWV0aGluZyh2KQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRt
bHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfXNvIHRoYXQgZXZlbiB0
aG91Z2ggdiBpcyBhIHBvaW50ZXIgaXRzIGVsZW1lbnRzIGNhbiBub3QgYmUgY2hhbmdlZC4NCntc
KlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFn
NCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH1JZiB0aGUgY29tcG9uZW50cyBvZiB0aGUgdmVjdG9ycyBhcmUg
dGhlbXNlbHZlcyBwb2ludGVycyB0byBvdGhlcg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgc3RydWN0dXJlcw0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGlu
ZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfXRoZW4gYWdhaW4gdGhlIG9wZXJhdGlv
bnMgb24gdGhvc2UgY29tcG9uZW50cyB3b3VsZCBoYXZlIHRvIHBhc3MNCntcKlxodG1sdGFnNCBc
cGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHRocm91Z2ggcHJvY2VkdXJlcw0Ke1wqXGh0bWx0YWcx
MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfXRo
YXQgdGFrZSBJTiBhcmdzLg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0
ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfS1Eb3VnIERhbmZvcnRoDQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAg
DQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5l
DQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxo
dG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9Um9iZXJ0IHdyb3Rl
Og0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAge1wqXGh0bWx0YWc3Mn1c
aHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnOTYgPGJsb2NrcXVvdGUgY2l0ZT0i
bWlkOjQ5Q0Q0MTkyLjIwNDAyMDlAdGlzY2FsaS5jby51ayIgdHlwZT0iY2l0ZSI+fVxodG1scnRm
IFxwYXINCntcaHRtbHJ0ZjAge1wqXGh0bWx0YWc2NH1caHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTM2
MCBXb2p0ZWsNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIFNrdWxza2kg
d3JvdGU6DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1s
dGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAg
DQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYg
PGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wq
XGh0bWx0YWc4NCAgIH17XCpcaHRtbHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wq
XGh0bWx0YWc5NiA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj59XGh0bWxydGYgXHBhcg0Ke1xodG1s
cnRmMCB7XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgXGxpNzIwIE1lYW53aGlsZSBJ
IGhhdmUgYSBxdWVzdGlvbi4gWW91ciBmdW5jdGlvbg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1s
cnRmICBcaHRtbHJ0ZjAgTGliVmVjdG9ycy5OZWcgaXMgYWxsb2NhdGluZw0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRt
bHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBh
ciB9YSBuZXcgdmVjdG9yLiBXaHk/IEZsaXBwaW5nIHRoZSBzaWduIG9mIGV2ZXJ5IHZlY3RvciBl
bGVtZW50IGNhbiBiZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgZG9u
ZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0
ICAgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzQgXHBhciB9aW4gc2l0dS4gV2h5IGFyZSB5b3UgY2FsbGluZyBORVc/DQp7XCpc
aHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH0N
CntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1s
dGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9e1wqXGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9
XGh0bWxydGYwDQoNCntcKlxodG1sdGFnMTA0IDwvYmxvY2txdW90ZT59XGh0bWxydGYgfVxwYXIN
ClxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQwICAgfQ0Ke1wq
XGh0bWx0YWcxMTIgPGJyPn1caHRtbHJ0ZiBccGFyDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAg
XHBhciB9e1wqXGh0bWx0YWc2NH1caHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTM2MCBBbmQgdGhlIHNh
bWUgY29tbWVudCBhcHBsaWVzIHRvIG90aGVyIGZ1bmN0aW9ucywgc3VjaCBhcyBBYnMsIE1hZywg
TWFwDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBldGMuDQp7XCpcaHRt
bHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpc
aHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQg
XHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBc
bGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfU9uZSBoYXMgdG8gbWFrZSBkZXNp
Z24gY2hvaWNlcywgd2hpY2ggdXN1YWxseSBoYXZlIHByb3MgDQp7XCpcaHRtbHRhZzg0ICZhbXA7
fVxodG1scnRmICZcaHRtbHJ0ZjAgIGNvbnMuIEl0DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxy
dGYgIFxodG1scnRmMCBpcyByYXJlIHRoYXQgb25lIGNob2ljZSBpcyBzdXBlcmlvciBmcm9tIGV2
ZXJ5IGFzcGVjdC4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1s
cnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRh
ZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9
SSBhc3N1bWUgeW91IGhhdmUgcmVhZCB0aGUgc2VjdGlvbiBpbiB0aGUgRG9jdSBjYWxsZWQgIkFz
c2lnbm1lbnRzIi4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1s
cnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRh
ZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9
VGhlIGlzc3VlIGlzOg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1s
dGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFy
IH1WQVINCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0
YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBc
aHRtbHJ0ZjAgIGEsIGINCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0
ZjAgIDoNCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIExpYlZl
Y3RvcnMuVmVjdG9yOw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUJFR0lODQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0
bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRt
bHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBhDQp7XCpcaHRtbHRhZzg0ICZu
YnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICA6PQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0
bWxydGYgXCdhMFxodG1scnRmMCAgLi4uLi47DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYg
IFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1s
cnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0
ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBiDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31c
aHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICA6PQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYg
XCdhMFxodG1scnRmMCAgYTsNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUN
ClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpc
aHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQg
XHBhciB9DQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBMaWJW
ZWN0b3JzLk5lZyAoYik7DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCAN
CntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpc
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0
bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxw
YXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1JZiB0aGlzIHdhcyBpbi1wbGFjZSBp
dCB3b3VsZCBhbHNvIG5lZ2F0ZSB0aGUgJ2EnLCB3aGVyZWFzIHdpdGgNCntcKlxodG1sdGFnNCBc
cGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFn
MTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1t
eSBkZXNpZ246DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxo
dG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcx
MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0K
e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgYg0Ke1wqXGh0bWx0
YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgOj0NCntcKlxodG1sdGFnODQgJm5i
c3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIExpYlZlY3RvcnMuTmVnIChiKTsNCntcKlxodG1s
dGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNw
O31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYg
XCdhMFxodG1scnRmMCAgKCoNCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRt
bHJ0ZjAgIE5lZyBpbmNsdWVkcyBhIE5FVw0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYg
XCdhMFxodG1scnRmMCAgKikNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUN
ClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpc
aHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQg
XHBhciB9SSBoYXZlIG5lZ2F0ZWQgYiB3aXRob3V0IHRoZSBub24tb2J2aW91cyBzaWRlIGVmZmVj
dCBvZiBuZWdhdGluZyBhLg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAg
DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0K
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxo
dG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBc
cGFyIH1JIHRoaW5rIHRoaXMgaXMgc2FmZXIsIGxlc3MgcHJvbmUgdG8gYWNjaWRlbnRhbCBlcnJv
ci4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4
NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntc
KlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9SXQgaXMgbm90
ICdjb21wbGV0ZWx5IHNhZmUnOyB0byBkbyB0aGF0IFZlY3RvcnMgd291bGQgaGF2ZSB0byBiZQ0K
e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgaW1tdXRhYmxlIHdpdGggdGhl
aXIgY29tcG9uZW50cyBzZXQgdG8gYmUgUmVhZC1vbmx5IChzb21laG93KS4gVGhpcyBJDQp7XCpc
aHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBjb25zaWRlcmVkIHRvbyBpbmNvbnZl
bmllbnQgYW5kIGluZWZmaWNpZW50LCBoZW5jZSB0aGUgZGVzaWduDQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCBjb21wcm9taXNlIHlvdSBzZWUuDQp7XCpcaHRtbHRhZzQg
XHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRh
ZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9
DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0K
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxo
dG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBc
cGFyIH1CeSBjb250cmFzdCB0aGUgZGVzaWduIHBoaWxvc29waHkgZm9yIHRoZSB0eXBlIExpYkNv
bXBsZXguQ29tcGxleCBpcw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAg
J3NhZmUnOyB0aGUgdHlwZSBpcyBpbW11dGFibGUsIHRoZSBmaWVsZHMgYXJlIHJlYWQtb25seSwg
YW5kICdCaWcnIHN1bXMNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHdp
dGggQ29tcGxleGVzIGdlbmVyYXRlIGEgbG90IG9mIGdhcmJhZ2UuDQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzEx
NiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7
XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1s
dGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFy
IH1JIGFtIHN1cmUgdGhlcmUgYXJlIGFwcGxpY2F0aW9ucyB3aGVyZSB0aGVzZSBkZXNpZ24gY2hv
aWNlcyBhcmUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHN1Yi1vcHRp
bWFsLCBpZiBub3QgdW5hY2NlcHRhYmxlLiBCdXQgdGhhdCB3b3VsZCBiZSB0cnVlIG9mIGFueSBj
aG9pY2UuDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBDJ2VzdCBsYSB2
aWUuDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFn
ODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJy
Pn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0
bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRm
MCANCntcKlxodG1sdGFnNCBccGFyIH1DaGVlcnMNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0
ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0
bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFn
ODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzQgXHBhciB9Um9iZXJ0DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxo
dG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRm
IFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAg
fQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0
bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0tLS0tDQp7XCpcaHRt
bHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpc
aHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQg
XHBhciB9VG8gdW5zdWJzY3JpYmUsIHNlbmQgYSBtZXNzYWdlIHdpdGggYm9keSAiU0lHTk9GRiBC
TEFDS0JPWCIgdG8NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHt9DQp7
XCpcaHRtbHRhZzg0IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9Im1h
aWx0bzpMSVNUU0VSVkBMSVNUUy5PQkVST04uQ0giPn1caHRtbHJ0ZiB7XGZpZWxke1wqXGZsZGlu
c3R7SFlQRVJMSU5LICJtYWlsdG86TElTVFNFUlZATElTVFMuT0JFUk9OLkNIIn19e1xmbGRyc2x0
XGNmMVx1bCBcaHRtbHJ0ZjAgTElTVFNFUlZATElTVFMuT0JFUk9OLkNIXGh0bWxydGYgfVxodG1s
cnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc5MiA8L2E+fQ0Ke1wqXGh0bWx0
YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0
bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxw
YXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9e1wqXGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1s
dGFnMTA0IDwvYmxvY2txdW90ZT59XGh0bWxydGYgfVxwYXINClxodG1scnRmMCANCntcKlxodG1s
dGFnMCBccGFyIH0NCntcKlxodG1sdGFnNTggPC9ib2R5Pn0NCntcKlxodG1sdGFnMiBccGFyIH0N
CntcKlxodG1sdGFnMjcgPC9odG1sPn0NCntcKlxodG1sdGFnMyBccGFyIH0NCntcKlxodG1sdGFn
NjQgPHA+fVxodG1scnRmIHtcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9LS0tLQ0Ke1wq
XGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgVG8gdW5zdWJzY3JpYmUsIHNlbmQg
YSBtZXNzYWdlIHdpdGggYm9keSAiU0lHTk9GRiBCTEFDS0JPWCIgdG8gTElTVFNFUlZATElTVFMu
T0JFUk9OLkNIDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBcaHRtbHJ0
ZlxwYXJ9XGh0bWxydGYwDQp9
----boundary-LibPST-iamunique-666486847_-_---
Received on Fri Mar 27 2009 - 23:16:17 UTC