- Hiding abstract methods
----boundary-LibPST-iamunique-1480712487_-_-
Content-type: text/plain
Bernhard,
Thanks, I need to think more about that in the context of what I am doing.
-Doug
Treutwein Bernhard wrote:
Hi Bob & Doug,
what about a hierarchy of modules like the abstraction
layers given in BlackBox:
Abstractions in almost purely abstract modules (like e.g.
the Files module of BlackBox), which reveal only the
very necessary details and provide mechanisms for
factories (directories in BB terminology). Concrete
implementations (like HostFiles) import these, initialize
the factories and have (more or less) private interfaces.
Although now the details are still visible (in principle
via the low level interfaces) you have a least a separation
of the published stuff.
regards
--
Bernhard Treutwein, IuK, Ref. III A 3
Bernhard.Treutwein(at)verwaltung uni-muenchen de
-----Original Message-----
From: blackbox{([at]})nowhere.xy
Behalf Of Bob Walkden
Sent: Friday, June 15, 2007 8:28 AM
To: BlackBox Mailing List
Subject: [BlackBox] - Hiding abstract methods
You can't simultaneously hide the methods of A and have A as
an abstract type extensible from other modules - it's a
contradiction. An abstract type can't be instantiated, it
must be inherited and its inheritors must instantiate its
parts. If the parts are hidden then it's impossible for its
inheritors (in other modules) to instantiate them.
--
Regards,
Bob
_____
From: blackbox{([at]})nowhere.xy
Behalf Of Douglas G. Danforth
Sent: 15 June 2007 03:35
To: BlackBox Mailing List
Subject: [BlackBox] - Hiding abstract methods
Bob,
I am trying to keep the amount of stuff shown to a minimum.
There is also a procedure Run that is exported from M
that when called starts up and eventually calls the installed
reader and writer (repeatedly).
The reader and writer do not invoke the hidden
procedures they are passive and are called by M when needed.
How do I hide the methods of A, Bits, and Ints?
-Doug Danforth
Bob Walkden wrote:
How and when are M's internal procedures
invoked? If the client's reader is to invoke them directly
then they must be made public. If you want M's hidden
procedures to be invoked indirectly by the reader or writer
you may need to provide a couple of Notifier procedures in M
and have the reader or writer call them explicitly.
--
Regards,
Bob
_____
From: blackbox{([at]})nowhere.xy
[mailto:blackbox{([at]})nowhere.xy
Sent: 14 June 2007 22:25
To: BlackBox Mailing List
Subject: [BlackBox] - Hiding abstract methods
Chris,
Here is what I would like the interface
to module M to appear
DEFINITION M;
TYPE
A = POINTER TO ABSTRACT RECORD END;
Bits = POINTER TO RECORD (A)
x: POINTER TO ARRAY OF SET
END;
Ints = POINTER TO RECORD (A)
x: POINTER TO ARRAY OF INTEGER
END;
Reader = PROCEDURE (VAR a: A): BOOLEAN;
Writer = PROCEDURE (a: A);
PROCEDURE InstallReader (rd: Reader);
PROCEDURE InstallWriter (wr: Writer);
END M.
One just installs a specific reader
that generates a Bits or an Ints.
Internally to M there are many
procedures that take the abstract
quantity 'a' when a read operation is
done and operate on it with procedures
that are methods of type either Bits or
Ints whose definitions are given internally
and are abstractions of the of type A.
But the user of M need not know anything
about this and BlackBox should not
force the user to see these methods.
How can this be accomplished?
-Doug Danforth
CFB Software wrote:
Hi Doug,
I don't know if I can help but
as nobody else has responded yet I'm
willing to give it a try. I'm
interested in learning more about the
finer details of issues like
this. However, I'm not sure from your
desription that I understand
exactly what you are trying to do. Would it
be possible for you to show
complete minimal examples of:
a) What you would like the code
to look like
b) How you think it needs to be
written to make it acceptable to
Blackbox
Regards,
Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp
-----Original Message-----
From:
blackbox{([at]})nowhere.xy
Behalf Of Douglas G. Danforth
Sent: Wednesday, 13
June 2007 10:22 AM
To: BlackBox Mailing List
Subject: [BlackBox] -
Hiding abstract methods
Folks,
I have a conceptual
problem on which I would like your advice.
I have an ABSTRACT type
A and two concrete types C1 and
C2 which are extensions of A.
TYPE
A* = POINTER TO
ABSTRACT RECORD END;
C1* = POINTER TO
RECORD(A) END;
C2* = POINTER TO
RECORD(A) END;
I would like to export
A (as shown with the '*'') but within the
module M where A is
defined I *do not want* to export its
methods. I want them
to be completely hidden so that the user
of M only needs to
create the instance Ci (and fill its
fields (not shown))
and pass Ci to the
module M in which the specific methods
appropriate to Ci
are specified (but also
not exported). Within M, procedures take 'a'
(an instance of A which
is either C1 or C2) and operates on it without
knowledge of its
concrete form. The methods of A are simply called
and the concrete forms
of those methods as C1 or C2 are actually
run.
Unfortunately, it seems
that this scheme of things is not possible in
BlackBox.
I am forced to export
the methods of A and also the methods of C1 and
the methods of C2,
greatly cluttering the interface to M when
none of that
information will be
used by the person operating with M.
Only the existence
of A and the extensions
C1 and C2 are needed.
Is there a clean way to
hide all of these methods?
-Doug Danforth
--- BlackBox
--- send subject HELP
or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
--- BlackBox
--- send subject HELP or
UNSUBSCRIBE to blackbox{([at]})nowhere.xy
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
----boundary-LibPST-iamunique-1480712487_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3MgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJcZm5pbFxmY2hh
cnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBOZXc7fX0NCntc
Y29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7fQ0KXHVjMVxw
YXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyNCANCntcKlxodG1sdGFnMjQzIDwhRE9DVFlQRSBo
dG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPn0NCntc
KlxodG1sdGFnMyBccGFyIH0NCntcKlxodG1sdGFnMTkgPGh0bWw+fQ0Ke1wqXGh0bWx0YWcyIFxw
YXIgfQ0Ke1wqXGh0bWx0YWczNCA8aGVhZD59DQp7XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRt
bHRhZzI0MSAgIH0NCntcKlxodG1sdGFnMSBccGFyIH0NCntcKlxodG1sdGFnNDEgPC9oZWFkPn0N
CntcKlxodG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnNTAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZm
ZiIgdGV4dD0iIzAwMDAwMCI+fVxodG1scnRmIFx2aWV3a2luZDUNCntcKlxiYWNrZ3JvdW5kIHtc
c2hwe1wqXHNocGluc3R7XHNwe1xzbiBmaWxsQ29sb3J9e1xzdiAxNjc3NzIxNX19e1xzcHtcc24g
ZkZpbGxlZH17XHN2IDF9fX19fVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH17XCpcaHRt
bHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgQmVybmhhcmQsDQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9VGhhbmtzLCBJ
IG5lZWQgdG8gdGhpbmsgbW9yZSBhYm91dCB0aGF0IGluIHRoZSBjb250ZXh0IG9mIHdoYXQgSSBh
bQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgZG9pbmcuDQp7XCpcaHRt
bHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBh
ciB9LURvdWcNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUN
ClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1UcmV1dHdlaW4gQmVybmhhcmQgd3JvdGU6
DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCB7XCpcaHRtbHRhZzcyfVxo
dG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc5NiA8YmxvY2txdW90ZSBjaXRlPSJt
aWQ6QU1FVEhZU1QyVHJwd0FDa1dIWjAwMDAwMjkwQGFtZXRoeXN0Mi5vYmVyb24uY2giXHBhciAg
dHlwZT0iY2l0ZSI+fVxodG1scnRmIFxwYXINCntcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBh
ciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0NCntcKlxodG1sdGFnMTI4IDxwcmUgd3JhcD0iIj59XGh0
bWxydGYge1xwYXJkXHBsYWluXGYxXGZzMjAgXGh0bWxydGYwIFxodG1scnRmIHtcaHRtbHJ0ZjAg
XGxpMzYwIEhpIEJvYiANCntcKlxodG1sdGFnODQgJmFtcDt9XGh0bWxydGYgJlxodG1scnRmMCAg
RG91ZyxcbGluZQ0KXGxpbmUNCndoYXQgYWJvdXQgYSBoaWVyYXJjaHkgb2YgbW9kdWxlcyBsaWtl
IHRoZSBhYnN0cmFjdGlvblxsaW5lDQpsYXllcnMgZ2l2ZW4gaW4gQmxhY2tCb3g6XGxpbmUNClxs
aW5lDQpBYnN0cmFjdGlvbnMgaW4gYWxtb3N0IHB1cmVseSBhYnN0cmFjdCBtb2R1bGVzIChsaWtl
IGUuZy5cbGluZQ0KdGhlIEZpbGVzIG1vZHVsZSBvZiBCbGFja0JveCksIHdoaWNoIHJldmVhbCBv
bmx5IHRoZVxsaW5lDQp2ZXJ5IG5lY2Vzc2FyeSBkZXRhaWxzIGFuZCBwcm92aWRlIG1lY2hhbmlz
bXMgZm9yXGxpbmUNCmZhY3RvcmllcyAoZGlyZWN0b3JpZXMgaW4gQkIgdGVybWlub2xvZ3kpLiBD
b25jcmV0ZSBcbGluZQ0KaW1wbGVtZW50YXRpb25zIChsaWtlIEhvc3RGaWxlcykgaW1wb3J0IHRo
ZXNlLCBpbml0aWFsaXplXGxpbmUNCnRoZSBmYWN0b3JpZXMgYW5kIGhhdmUgKG1vcmUgb3IgbGVz
cykgcHJpdmF0ZSBpbnRlcmZhY2VzLlxsaW5lDQpcbGluZQ0KQWx0aG91Z2ggbm93IHRoZSBkZXRh
aWxzIGFyZSBzdGlsbCB2aXNpYmxlIChpbiBwcmluY2lwbGVcbGluZQ0KdmlhIHRoZSBsb3cgbGV2
ZWwgaW50ZXJmYWNlcykgeW91IGhhdmUgYSBsZWFzdCBhIHNlcGFyYXRpb25cbGluZQ0Kb2YgdGhl
IHB1Ymxpc2hlZCBzdHVmZi5cbGluZQ0KXGxpbmUNCnJlZ2FyZHNcbGluZQ0KLS1cbGluZQ0KXHRh
YiBCZXJuaGFyZCBUcmV1dHdlaW4sIEl1SywgUmVmLiBJSUkgQSAzXGxpbmUNClx0YWIgQmVybmhh
cmQuVHJldXR3ZWluKGF0KXZlcndhbHR1bmcgdW5pLW11ZW5jaGVuIGRlXGxpbmUNClxsaW5lDQog
IFxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWcxMzYgPC9wcmU+fVxodG1scnRm
IH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0NCntc
KlxodG1sdGFnOTYgPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+fVxodG1scnRmIFxwYXINCntcaHRt
bHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgICAgfQ0Ke1wqXGh0
bWx0YWcxMjggPHByZSB3cmFwPSIiPn1caHRtbHJ0ZiB7XHBhcmRccGxhaW5cZjFcZnMyMCBcaHRt
bHJ0ZjAgXGh0bWxydGYge1xodG1scnRmMCBcbGk3MjAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t
LS1cbGluZQ0KRnJvbToge30NCntcKlxodG1sdGFnODQgPGEgY2xhc3M9Im1vei10eHQtbGluay1h
YmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCI+fVxodG1scnRmIHtc
ZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgIm1haWx0bzpibGFja2JveEBvYmVyb24uY2gifX17
XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBibGFja2JveEBvYmVyb24uY2hcaHRtbHJ0ZiB9XGh0
bWxydGYwIFxodG1scnRmIH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzkyIDwvYT59IFt7fQ0Ke1wq
XGh0bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJtYWlsdG86
YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElO
SyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxkcnNsdFxjZjFcdWwgXGh0bWxydGYw
IG1haWx0bzpibGFja2JveEBvYmVyb24uY2hcaHRtbHJ0ZiB9XGh0bWxydGYwIFxodG1scnRmIH1c
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzkyIDwvYT59XSBPbiBcbGluZQ0KQmVoYWxmIE9mIEJvYiBX
YWxrZGVuXGxpbmUNClNlbnQ6IEZyaWRheSwgSnVuZSAxNSwgMjAwNyA4OjI4IEFNXGxpbmUNClRv
OiBCbGFja0JveCBNYWlsaW5nIExpc3RcbGluZQ0KU3ViamVjdDogW0JsYWNrQm94XSAtIEhpZGlu
ZyBhYnN0cmFjdCBtZXRob2RzXGxpbmUNClxsaW5lDQpcbGluZQ0KWW91IGNhbid0IHNpbXVsdGFu
ZW91c2x5IGhpZGUgdGhlIG1ldGhvZHMgb2YgQSBhbmQgaGF2ZSBBIGFzIFxsaW5lDQphbiBhYnN0
cmFjdCB0eXBlIGV4dGVuc2libGUgZnJvbSBvdGhlciBtb2R1bGVzIC0gaXQncyBhIFxsaW5lDQpj
b250cmFkaWN0aW9uLiBBbiBhYnN0cmFjdCB0eXBlIGNhbid0IGJlIGluc3RhbnRpYXRlZCwgaXQg
XGxpbmUNCm11c3QgYmUgaW5oZXJpdGVkIGFuZCBpdHMgaW5oZXJpdG9ycyBtdXN0IGluc3RhbnRp
YXRlIGl0cyBcbGluZQ0KcGFydHMuIElmIHRoZSBwYXJ0cyBhcmUgaGlkZGVuIHRoZW4gaXQncyBp
bXBvc3NpYmxlIGZvciBpdHMgXGxpbmUNCmluaGVyaXRvcnMgKGluIG90aGVyIG1vZHVsZXMpIHRv
IGluc3RhbnRpYXRlIHRoZW0uXGxpbmUNCiBcbGluZQ0KLS1cbGluZQ0KUmVnYXJkcyxcbGluZQ0K
IEJvYiBcbGluZQ0KIFxsaW5lDQpcbGluZQ0KXGxpbmUNCiAgX19fX18gIFxsaW5lDQpcbGluZQ0K
XHRhYiBGcm9tOiB7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJl
dmlhdGVkIiBocmVmPSJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xmaWVs
ZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxk
cnNsdFxjZjFcdWwgXGh0bWxydGYwIGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0
ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn0gW3t9DQp7XCpcaHRt
bHRhZzg0IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Im1haWx0bzpibGFj
a2JveEBvYmVyb24uY2giPn1caHRtbHJ0ZiB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJt
YWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIn19e1xmbGRyc2x0XGNmMVx1bCBcaHRtbHJ0ZjAgbWFp
bHRvOmJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1s
cnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn1dIE9uIFxsaW5lDQpCZWhhbGYgT2YgRG91Z2xhcyBH
LiBEYW5mb3J0aFxsaW5lDQpcdGFiIFNlbnQ6IDE1IEp1bmUgMjAwNyAwMzozNVxsaW5lDQpcdGFi
IFRvOiBCbGFja0JveCBNYWlsaW5nIExpc3RcbGluZQ0KXHRhYiBTdWJqZWN0OiBbQmxhY2tCb3hd
IC0gSGlkaW5nIGFic3RyYWN0IG1ldGhvZHNcbGluZQ0KXHRhYiBcbGluZQ0KXHRhYiBcbGluZQ0K
XHRhYiBCb2IsXGxpbmUNClx0YWIgSSBhbSB0cnlpbmcgdG8ga2VlcCB0aGUgYW1vdW50IG9mIHN0
dWZmIHNob3duIHRvIGEgbWluaW11bS5cbGluZQ0KXHRhYiBcbGluZQ0KXHRhYiBUaGVyZSBpcyBh
bHNvIGEgcHJvY2VkdXJlIFJ1biB0aGF0IGlzIGV4cG9ydGVkIGZyb20gTSBcbGluZQ0KdGhhdCB3
aGVuIGNhbGxlZCBzdGFydHMgdXAgYW5kIGV2ZW50dWFsbHkgY2FsbHMgdGhlIGluc3RhbGxlZCBc
bGluZQ0KcmVhZGVyIGFuZCB3cml0ZXIgKHJlcGVhdGVkbHkpLlxsaW5lDQpcdGFiIFRoZSByZWFk
ZXIgYW5kIHdyaXRlciBkbyBub3QgaW52b2tlIHRoZSBoaWRkZW4gXGxpbmUNCnByb2NlZHVyZXMg
dGhleSBhcmUgcGFzc2l2ZSBhbmQgYXJlIGNhbGxlZCBieSBNIHdoZW4gbmVlZGVkLlxsaW5lDQpc
dGFiIFxsaW5lDQpcdGFiIEhvdyBkbyBJIGhpZGUgdGhlIG1ldGhvZHMgb2YgQSwgQml0cywgYW5k
IEludHM/XGxpbmUNClx0YWIgXGxpbmUNClx0YWIgLURvdWcgRGFuZm9ydGhcbGluZQ0KXHRhYiBc
bGluZQ0KXHRhYiBcbGluZQ0KXHRhYiBcbGluZQ0KXHRhYiBcbGluZQ0KXHRhYiBCb2IgV2Fsa2Rl
biB3cm90ZTogXGxpbmUNClxsaW5lDQpcdGFiIFx0YWIgSG93IGFuZCB3aGVuIGFyZSBNJ3MgaW50
ZXJuYWwgcHJvY2VkdXJlcyBcbGluZQ0KaW52b2tlZD8gSWYgdGhlIGNsaWVudCdzIHJlYWRlciBp
cyB0byBpbnZva2UgdGhlbSBkaXJlY3RseSBcbGluZQ0KdGhlbiB0aGV5IG11c3QgYmUgbWFkZSBw
dWJsaWMuIElmIHlvdSB3YW50IE0ncyBoaWRkZW4gXGxpbmUNCnByb2NlZHVyZXMgdG8gYmUgaW52
b2tlZCBpbmRpcmVjdGx5IGJ5IHRoZSByZWFkZXIgb3Igd3JpdGVyIFxsaW5lDQp5b3UgbWF5IG5l
ZWQgdG8gcHJvdmlkZSBhIGNvdXBsZSBvZiBOb3RpZmllciBwcm9jZWR1cmVzIGluIE0gXGxpbmUN
CmFuZCBoYXZlIHRoZSByZWFkZXIgb3Igd3JpdGVyIGNhbGwgdGhlbSBleHBsaWNpdGx5LlxsaW5l
DQpcdGFiIFx0YWIgIFxsaW5lDQpcdGFiIFx0YWIgLS1cbGluZQ0KXHRhYiBcdGFiIFJlZ2FyZHMs
XGxpbmUNClx0YWIgXHRhYiAgQm9iIFxsaW5lDQpcdGFiIFx0YWIgIFxsaW5lDQpcbGluZQ0KXGxp
bmUNCiAgX19fX18gIFxsaW5lDQpcbGluZQ0KXHRhYiBcdGFiIFx0YWIgRnJvbToge30NCntcKlxo
dG1sdGFnODQgPGEgY2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRv
OmJsYWNrYm94QG9iZXJvbi5jaCI+fVxodG1scnRmIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJ
TksgIm1haWx0bzpibGFja2JveEBvYmVyb24uY2gifX17XGZsZHJzbHRcY2YxXHVsIFxodG1scnRm
MCBibGFja2JveEBvYmVyb24uY2hcaHRtbHJ0ZiB9XGh0bWxydGYwIFxodG1scnRmIH1caHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzkyIDwvYT59IFxsaW5lDQpbe30NCntcKlxodG1sdGFnODQgPGEgY2xh
c3M9Im1vei10eHQtbGluay1mcmVldGV4dCIgaHJlZj0ibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5j
aCI+fVxodG1scnRmIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgIm1haWx0bzpibGFja2Jv
eEBvYmVyb24uY2gifX17XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBtYWlsdG86YmxhY2tib3hA
b2Jlcm9uLmNoXGh0bWxydGYgfVxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc5MiA8L2E+fV0gT24gQmVoYWxmIE9mIERvdWdsYXMgRy4gRGFuZm9ydGhcbGluZQ0KXHRh
YiBcdGFiIFx0YWIgU2VudDogMTQgSnVuZSAyMDA3IDIyOjI1XGxpbmUNClx0YWIgXHRhYiBcdGFi
IFRvOiBCbGFja0JveCBNYWlsaW5nIExpc3RcbGluZQ0KXHRhYiBcdGFiIFx0YWIgU3ViamVjdDog
W0JsYWNrQm94XSAtIEhpZGluZyBhYnN0cmFjdCBtZXRob2RzXGxpbmUNClx0YWIgXHRhYiBcdGFi
IFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgQ2hyaXMsXGxpbmUN
Clx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBIZXJlIGlzIHdoYXQgSSB3b3Vs
ZCBsaWtlIHRoZSBpbnRlcmZhY2UgXGxpbmUNCnRvIG1vZHVsZSBNIHRvIGFwcGVhclxsaW5lDQpc
dGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgREVGSU5JVElPTiBNO1xsaW5lDQpc
dGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgICAgIFRZUEVcbGluZQ0KXHRhYiBc
dGFiIFx0YWIgICAgICAgICBBID0gUE9JTlRFUiBUTyBBQlNUUkFDVCBSRUNPUkQgIEVORDtcbGlu
ZQ0KXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0YWIgXHRhYiBcdGFiICAgICAgICAgQml0cyA9IFBP
SU5URVIgVE8gUkVDT1JEIChBKVxsaW5lDQpcdGFiIFx0YWIgXHRhYiAgICAgICAgICAgICB4OiBQ
T0lOVEVSIFRPIEFSUkFZIE9GIFNFVFxsaW5lDQpcdGFiIFx0YWIgXHRhYiAgICAgICAgIEVORDtc
bGluZQ0KXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0YWIgXHRhYiBcdGFiICAgICAgICAgSW50cyA9
IFBPSU5URVIgVE8gUkVDT1JEIChBKVxsaW5lDQpcdGFiIFx0YWIgXHRhYiAgICAgICAgICAgICB4
OiBQT0lOVEVSIFRPIEFSUkFZIE9GIElOVEVHRVJcbGluZQ0KXHRhYiBcdGFiIFx0YWIgICAgICAg
ICBFTkQ7XGxpbmUNClx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiAgICAgICAg
IFJlYWRlciA9IFBST0NFRFVSRSAoVkFSIGE6IEEpOiBCT09MRUFOO1xsaW5lDQpcdGFiIFx0YWIg
XHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgICAgICAgICBXcml0ZXIgPSBQUk9DRURVUkUgKGE6
IEEpO1xsaW5lDQpcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgICAgIFBST0NF
RFVSRSBJbnN0YWxsUmVhZGVyIChyZDogUmVhZGVyKTtcbGluZQ0KXHRhYiBcdGFiIFx0YWIgICAg
IFBST0NFRFVSRSBJbnN0YWxsV3JpdGVyICh3cjogV3JpdGVyKTtcbGluZQ0KXHRhYiBcdGFiIFx0
YWIgXGxpbmUNClx0YWIgXHRhYiBcdGFiIEVORCBNLlxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcbGlu
ZQ0KXHRhYiBcdGFiIFx0YWIgT25lIGp1c3QgaW5zdGFsbHMgYSBzcGVjaWZpYyByZWFkZXIgXGxp
bmUNCnRoYXQgZ2VuZXJhdGVzIGEgQml0cyBvciBhbiBJbnRzLlxsaW5lDQpcdGFiIFx0YWIgXHRh
YiBJbnRlcm5hbGx5IHRvIE0gdGhlcmUgYXJlIG1hbnkgXGxpbmUNCnByb2NlZHVyZXMgdGhhdCB0
YWtlIHRoZSBhYnN0cmFjdFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBxdWFudGl0eSAnYScgd2hlbiBh
IHJlYWQgb3BlcmF0aW9uIGlzIFxsaW5lDQpkb25lIGFuZCBvcGVyYXRlIG9uIGl0IHdpdGggcHJv
Y2VkdXJlc1xsaW5lDQpcdGFiIFx0YWIgXHRhYiB0aGF0IGFyZSBtZXRob2RzIG9mIHR5cGUgZWl0
aGVyIEJpdHMgb3IgXGxpbmUNCkludHMgd2hvc2UgZGVmaW5pdGlvbnMgYXJlIGdpdmVuIGludGVy
bmFsbHlcbGluZQ0KXHRhYiBcdGFiIFx0YWIgYW5kIGFyZSBhYnN0cmFjdGlvbnMgb2YgdGhlIG9m
IHR5cGUgQS4gIFxsaW5lDQpCdXQgdGhlIHVzZXIgb2YgTSBuZWVkIG5vdCBrbm93IGFueXRoaW5n
XGxpbmUNClx0YWIgXHRhYiBcdGFiIGFib3V0IHRoaXMgYW5kIEJsYWNrQm94IHNob3VsZCBub3Qg
XGxpbmUNCmZvcmNlIHRoZSB1c2VyIHRvIHNlZSB0aGVzZSBtZXRob2RzLlxsaW5lDQpcdGFiIFx0
YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgSG93IGNhbiB0aGlzIGJlIGFjY29tcGxpc2hl
ZD9cbGluZQ0KXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0YWIgXHRhYiBcdGFiIC1Eb3VnIERhbmZv
cnRoXGxpbmUNClx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRh
YiBcdGFiIFx0YWIgQ0ZCIFNvZnR3YXJlIHdyb3RlOiBcbGluZQ0KXGxpbmUNClx0YWIgXHRhYiBc
dGFiIFx0YWIgSGkgRG91ZyxcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBc
dGFiIFx0YWIgXHRhYiBJIGRvbid0IGtub3cgaWYgSSBjYW4gaGVscCBidXQgXGxpbmUNCmFzIG5v
Ym9keSBlbHNlIGhhcyByZXNwb25kZWQgeWV0IEknbVxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFi
IHdpbGxpbmcgdG8gZ2l2ZSBpdCBhIHRyeS4gSSdtIFxsaW5lDQppbnRlcmVzdGVkIGluIGxlYXJu
aW5nIG1vcmUgYWJvdXQgdGhlXGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgZmluZXIgZGV0YWls
cyBvZiBpc3N1ZXMgbGlrZSBcbGluZQ0KdGhpcy4gSG93ZXZlciwgSSdtIG5vdCBzdXJlIGZyb20g
eW91clxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIGRlc3JpcHRpb24gdGhhdCBJIHVuZGVyc3Rh
bmQgXGxpbmUNCmV4YWN0bHkgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkby4gV291bGQgaXRcbGlu
ZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBiZSBwb3NzaWJsZSBmb3IgeW91IHRvIHNob3cgXGxpbmUN
CmNvbXBsZXRlIG1pbmltYWwgZXhhbXBsZXMgb2Y6IFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFi
IFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIGEpIFdoYXQgeW91IHdvdWxkIGxpa2UgdGhlIGNv
ZGUgXGxpbmUNCnRvIGxvb2sgbGlrZSBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0K
XHRhYiBcdGFiIFx0YWIgXHRhYiBiKSBIb3cgeW91IHRoaW5rIGl0IG5lZWRzIHRvIGJlIFxsaW5l
DQp3cml0dGVuIHRvIG1ha2UgaXQgYWNjZXB0YWJsZSB0b1xsaW5lDQpcdGFiIFx0YWIgXHRhYiBc
dGFiIEJsYWNrYm94XGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0YWIgXHRhYiBc
dGFiIFx0YWIgUmVnYXJkcyxcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBDaHJpcyBCdXJyb3dz
XGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgQ0ZCIFNvZnR3YXJlXGxpbmUNClx0YWIgXHRhYiBc
dGFiIFx0YWIge30NCntcKlxodG1sdGFnODQgPGEgY2xhc3M9Im1vei10eHQtbGluay1mcmVldGV4
dCIgaHJlZj0iaHR0cDovL3d3dy5jZmJzb2Z0d2FyZS5jb20vZ3BjcCI+fVxodG1scnRmIHtcZmll
bGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29tL2dwY3Ai
fX17XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBodHRwOi8vd3d3LmNmYnNvZnR3YXJlLmNvbS9n
cGNwXGh0bWxydGYgfVxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc5
MiA8L2E+fVxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBc
dGFiICAgXGxpbmUNClxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgLS0tLS1PcmlnaW5h
bCBNZXNzYWdlLS0tLS1cbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIEZyb206IFxsaW5l
DQp7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBo
cmVmPSJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xmaWVsZHtcKlxmbGRp
bnN0e0hZUEVSTElOSyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxkcnNsdFxjZjFc
dWwgXGh0bWxydGYwIGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxy
dGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn0gW3t9DQp7XCpcaHRtbHRhZzg0IDxh
IGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Im1haWx0bzpibGFja2JveEBvYmVy
b24uY2giPn1caHRtbHJ0ZiB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJtYWlsdG86Ymxh
Y2tib3hAb2Jlcm9uLmNoIn19e1xmbGRyc2x0XGNmMVx1bCBcaHRtbHJ0ZjAgbWFpbHRvOmJsYWNr
Ym94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntc
KlxodG1sdGFnOTIgPC9hPn1dIE9uIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgQmVo
YWxmIE9mIERvdWdsYXMgRy4gRGFuZm9ydGhcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFi
IFNlbnQ6IFdlZG5lc2RheSwgMTMgXGxpbmUNCkp1bmUgMjAwNyAxMDoyMiBBTVxsaW5lDQpcdGFi
IFx0YWIgXHRhYiBcdGFiIFx0YWIgVG86IEJsYWNrQm94IE1haWxpbmcgTGlzdFxsaW5lDQpcdGFi
IFx0YWIgXHRhYiBcdGFiIFx0YWIgU3ViamVjdDogW0JsYWNrQm94XSAtIFxsaW5lDQpIaWRpbmcg
YWJzdHJhY3QgbWV0aG9kc1xsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0
YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIEZv
bGtzLFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0YWIgXHRhYiBcdGFi
IFx0YWIgXHRhYiBJIGhhdmUgYSBjb25jZXB0dWFsIFxsaW5lDQpwcm9ibGVtIG9uIHdoaWNoIEkg
d291bGQgbGlrZSB5b3VyIGFkdmljZS5cbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxs
aW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgSSBoYXZlIGFuIEFCU1RSQUNUIHR5cGUgXGxp
bmUNCkEgYW5kIHR3byBjb25jcmV0ZSB0eXBlcyBDMSBhbmRcbGluZQ0KXHRhYiBcdGFiIFx0YWIg
XHRhYiBcdGFiIEMyIHdoaWNoIGFyZSBleHRlbnNpb25zIG9mIEEuXGxpbmUNClx0YWIgXHRhYiBc
dGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiICAgICBUWVBFXGxp
bmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiAgICAgICAgQSogPSBQT0lOVEVSIFRPIFxsaW5l
DQpBQlNUUkFDVCBSRUNPUkQgRU5EO1xsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgICAg
ICAgIEMxKiA9IFBPSU5URVIgVE8gXGxpbmUNClJFQ09SRChBKSBFTkQ7XGxpbmUNClx0YWIgXHRh
YiBcdGFiIFx0YWIgXHRhYiAgICAgICAgQzIqID0gUE9JTlRFUiBUTyBcbGluZQ0KUkVDT1JEKEEp
IEVORDtcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIgXHRh
YiBcdGFiIFx0YWIgSSB3b3VsZCBsaWtlIHRvIGV4cG9ydCBcbGluZQ0KQSAoYXMgc2hvd24gd2l0
aCB0aGUgJyonJykgYnV0IHdpdGhpbiB0aGVcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFi
IG1vZHVsZSBNIHdoZXJlIEEgaXMgXGxpbmUNCmRlZmluZWQgSSAqZG8gbm90IHdhbnQqIHRvIGV4
cG9ydCBpdHNcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIG1ldGhvZHMuICBJIHdhbnQg
dGhlbSBcbGluZQ0KdG8gYmUgY29tcGxldGVseSBoaWRkZW4gc28gdGhhdCB0aGUgdXNlclxsaW5l
DQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgb2YgTSBvbmx5IG5lZWRzIHRvIFxsaW5lDQpjcmVh
dGUgdGhlIGluc3RhbmNlIENpIChhbmQgZmlsbCBpdHMgXGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0
YWIgXHRhYiBmaWVsZHMgKG5vdCBzaG93bikpXGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRh
YiBhbmQgcGFzcyBDaSB0byB0aGUgXGxpbmUNCm1vZHVsZSBNIGluIHdoaWNoIHRoZSBzcGVjaWZp
YyBtZXRob2RzIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgYXBwcm9wcmlhdGUgdG8g
Q2lcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIGFyZSBzcGVjaWZpZWQgKGJ1dCBhbHNv
IFxsaW5lDQpub3QgZXhwb3J0ZWQpLiAgV2l0aGluIE0sIHByb2NlZHVyZXMgdGFrZSAnYSdcbGlu
ZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIChhbiBpbnN0YW5jZSBvZiBBIHdoaWNoIFxsaW5l
DQppcyBlaXRoZXIgQzEgb3IgQzIpIGFuZCBvcGVyYXRlcyBvbiBpdCB3aXRob3V0XGxpbmUNClx0
YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBrbm93bGVkZ2Ugb2YgaXRzIFxsaW5lDQpjb25jcmV0ZSBm
b3JtLiAgVGhlIG1ldGhvZHMgb2YgQSBhcmUgc2ltcGx5IGNhbGxlZFxsaW5lDQpcdGFiIFx0YWIg
XHRhYiBcdGFiIFx0YWIgYW5kIHRoZSBjb25jcmV0ZSBmb3JtcyBcbGluZQ0Kb2YgdGhvc2UgbWV0
aG9kcyBhcyBDMSBvciBDMiBhcmUgYWN0dWFsbHlcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBc
dGFiIHJ1bi5cbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIg
XHRhYiBcdGFiIFx0YWIgVW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgXGxpbmUNCnRoYXQgdGhpcyBz
Y2hlbWUgb2YgdGhpbmdzIGlzIG5vdCBwb3NzaWJsZSBpbiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIg
XHRhYiBcdGFiIEJsYWNrQm94LlxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgSSBhbSBm
b3JjZWQgdG8gZXhwb3J0IFxsaW5lDQp0aGUgbWV0aG9kcyBvZiBBIGFuZCBhbHNvIHRoZSBtZXRo
b2RzIG9mIEMxIGFuZFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgdGhlIG1ldGhvZHMg
b2YgQzIsIFxsaW5lDQpncmVhdGx5IGNsdXR0ZXJpbmcgdGhlIGludGVyZmFjZSB0byBNIHdoZW4g
XGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBub25lIG9mIHRoYXRcbGluZQ0KXHRhYiBc
dGFiIFx0YWIgXHRhYiBcdGFiIGluZm9ybWF0aW9uIHdpbGwgYmUgXGxpbmUNCnVzZWQgYnkgdGhl
IHBlcnNvbiBvcGVyYXRpbmcgd2l0aCBNLiAgXGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRh
YiBPbmx5IHRoZSBleGlzdGVuY2VcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIG9mIEEg
YW5kIHRoZSBleHRlbnNpb25zIFxsaW5lDQpDMSBhbmQgQzIgYXJlIG5lZWRlZC5cbGluZQ0KXHRh
YiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxsaW5lDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgSXMg
dGhlcmUgYSBjbGVhbiB3YXkgdG8gXGxpbmUNCmhpZGUgYWxsIG9mIHRoZXNlIG1ldGhvZHM/XGxp
bmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBc
dGFiIC1Eb3VnIERhbmZvcnRoXGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0K
XHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIC0tLSBCbGFja0JveFxsaW5lDQpcdGFiIFx0YWIgXHRh
YiBcdGFiIFx0YWIgLS0tIHNlbmQgc3ViamVjdCBIRUxQIFxsaW5lDQpvciBVTlNVQlNDUklCRSB0
byB7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBo
cmVmPSJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xmaWVsZHtcKlxmbGRp
bnN0e0hZUEVSTElOSyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxkcnNsdFxjZjFc
dWwgXGh0bWxydGYwIGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxy
dGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn1cbGluZQ0KXHRhYiBcdGFiIFx0YWIg
XHRhYiBcdGFiICAgICBcbGluZQ0KXGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIgXGxpbmUNClx0
YWIgXHRhYiBcdGFiIFx0YWIgLS0tIEJsYWNrQm94XGxpbmUNClx0YWIgXHRhYiBcdGFiIFx0YWIg
LS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFxsaW5lDQpVTlNVQlNDUklCRSB0byB7fQ0Ke1wqXGh0
bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJtYWlsdG86
YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElO
SyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxkcnNsdFxjZjFcdWwgXGh0bWxydGYw
IGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1scnRm
MCANCntcKlxodG1sdGFnOTIgPC9hPn1cbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0K
XHRhYiBcdGFiIFx0YWIgXHRhYiBcbGluZQ0KXHRhYiBcdGFiIFx0YWIgXHRhYiAgIFxsaW5lDQpc
bGluZQ0KXGxpbmUNCiAgICBcaHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnMTM2
IDwvcHJlPn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0
bWx0YWcyNDAgICB9DQp7XCpcaHRtbHRhZzEwNCA8L2Jsb2NrcXVvdGU+fVxodG1scnRmIH1ccGFy
DQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0NCntc
KlxodG1sdGFnMTI4IDxwcmUgd3JhcD0iIj59XGh0bWxydGYge1xwYXJkXHBsYWluXGYxXGZzMjAg
XGh0bWxydGYwIFxodG1scnRmIHtcaHRtbHJ0ZjAgXGxpMzYwIA0Ke1wqXGh0bWx0YWcyNDQgPCEt
LS0tPn1cbGluZQ0KLS0tIEJsYWNrQm94XGxpbmUNCi0tLSBzZW5kIHN1YmplY3QgSEVMUCBvciBV
TlNVQlNDUklCRSB0byB7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFi
YnJldmlhdGVkIiBocmVmPSJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xm
aWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtc
ZmxkcnNsdFxjZjFcdWwgXGh0bWxydGYwIGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRt
bHJ0ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn1cbGluZQ0KXGxp
bmUNClxsaW5lDQpcbGluZQ0KICBcaHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFn
MTM2IDwvcHJlPn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wq
XGh0bWx0YWcxMDQgPC9ibG9ja3F1b3RlPn1caHRtbHJ0ZiB9XHBhcg0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWc1OCA8L2JvZHk+fQ0Ke1wqXGh0bWx0YWcyIFxw
YXIgfQ0Ke1wqXGh0bWx0YWcyNyA8L2h0bWw+fQ0Ke1wqXGh0bWx0YWczIFxwYXIgfX0=
----boundary-LibPST-iamunique-1480712487_-_---
Received on Fri Jun 15 2007 - 20:13:46 UTC
This archive was generated by hypermail 2.3.0
: Thu Sep 26 2013 - 06:31:32 UTC