Re: Boost Review for Capy and Corosio - June 23 to July 7th
Andrzej Krzemienski via Boost <[email protected]> Thu, 9 Jul 2026 08:22:22 +0200
| Newsgroups | gmane.comp.lib.boost.devel |
|---|---|
| Message-ID | <CAOenAXiDdDAQwDkhqptpvOAJWgJfPBJgTMThokWJ97R4MRTsMA@mail.gmail.com> |
d3QuLCA3IGxpcCAyMDI2IG8gMjM6MzggQWxhbiBkZSBGcmVpdGFzIHZpYSBCb29zdCA8Ym9vc3RA bGlzdHMuYm9vc3Qub3JnPg0KbmFwaXNhxYIoYSk6DQoNCj4gQm9vc3QuQ2FweSBSZXZpZXcNCj4N Cj4gSSB3YW50IHRvIHRoYW5rIHRoZSBhdXRob3JzIGZvciB0aGVpciB3b3JrLg0KPg0KPiBUaGlz IGlzIGEgcmV2aWV3IG9mIEJvb3N0LkNhcHkgb25seS4gSXQgd2FzbuKAmXQgYW4gZXhwbGljaXQg ZGVjaXNpb24gdG8NCj4gcmV2aWV3IHRoZW0gc2VwYXJhdGVseS4gSXTigJlzIGp1c3QgaG93IG11 Y2ggSSBtYW5hZ2VkIHRvIHJldmlldyBwcm9wZXJseS4NCj4gSeKAmWxsIHN0YXJ0IHJldmlld2lu ZyBDb3Jvc2lvIGFuZCBzZW5kIGEgc2VwYXJhdGUgcmV2aWV3IGlmIHRoZXJl4oCZcyB0aW1lLCBv cg0KPiBpbmRlcGVuZGVudCBmZWVkYmFjayBpZiBJ4oCZbSB0b28gbGF0ZS4NCj4NCj4gSSBoYXZl buKAmXQgYmVlbiBhYmxlIHRvIGZvbGxvdyBhbGwgdGhlIGRpc2N1c3Npb25zIGluIG90aGVyIHJl dmlld3MsIHNvIEkNCj4gaW1hZ2luZSBtYW55IG9mIHRoZSBwb2ludHMgSeKAmWxsIHJhaXNlIGhl cmUgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGFkZHJlc3NlZC4NCj4gSSBraW5kbHkgYXNrIGZvciB0 aGUgcmV2aWV3IG1hbmFnZXIgdG8gYWNjb3VudCBmb3IgdGhhdCBhY2NvcmRpbmdseS4NCj4NCj4g VGhlcmXigJlzIGEgc21hbGwgYXBwZW5kaXggYXQgdGhlIGVuZCBvZiB0aGlzIHJldmlldyB3aXRo IGEgbW9yZSBkZXRhaWxlZA0KPiBsaXN0IG9mIG1pbm9yIGlzc3VlcyB0byBtYWtlIHRoZSBtYWlu IHBvaW50cyBlYXNpZXIgdG8gZm9sbG93Lg0KPg0KPiA+IERvZXMgdGhpcyBsaWJyYXJ5IGJyaW5n IHJlYWwgYmVuZWZpdCB0byBDKysgZGV2ZWxvcGVycyBmb3IgcmVhbCB3b3JsZA0KPiB1c2UtY2Fz ZT8NCj4NCj4gWWVzLiBJ4oCZbSBleGNpdGVkIGFib3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBleHBs b3JpbmcgdGhlc2UgY29yb3V0aW5lDQo+IGltcGxlbWVudGF0aW9uIGRldGFpbHMgbm90IG9ubHkg dG8gYWNoaWV2ZSBiZXR0ZXIgc3ludGF4IGJ1dCBhbHNvIHRvDQo+IGltcHJvdmUgcGVyZm9ybWFu Y2UuDQo+DQo+ID4gRG8geW91IGhhdmUgYW4gYXBwbGljYXRpb24gZm9yIHRoaXMgbGlicmFyeT8N Cj4NCj4gTm90IHJpZ2h0IG5vdywgYnV0IEkgaW50ZW5kIHRvIHVzZSBpdCBvbmNlIGl04oCZcyBh Y2NlcHRlZC4NCj4NCj4gPiBEb2VzIHRoZSBBUEkgbWF0Y2ggd2l0aCBjdXJyZW50IGJlc3QgcHJh Y3RpY2VzPw0KPg0KPiBZZXMuIFRvIGEgY2VydGFpbiBleHRlbnQsIHRoZSBsaWJyYXJ5IGFsc28g cHJvcG9zZXMgaXRzIG93biBiZXN0IHByYWN0aWNlcy4NCj4gU28sIGZvciBhIHN1YnNldCBvZiB0 aG9zZSBwcmFjdGljZXMsIG9ubHkgdGhlIGZ1dHVyZSB3aWxsIHRlbGwuIEFzIG90aGVycw0KPiBo YXZlIG5vdGVkLCB0aGUg4oCcVHdvLUNhbGwgU3ludGF44oCdIGlzIGEgYml0IGNvbnRyb3ZlcnNp YWwsIGFuZCBJIGhvcGUNCj4gdGhlcmXigJlzIGEgYmV0dGVyIHNvbHV0aW9uLiBBdCB0aGUgdmVy eSBsZWFzdCwgdGhlIHdhcm5pbmcgYWRtb25pdGlvbiBuZWVkcw0KPiB0byBsaXN0IG1vcmUgZGFu Z2Vyb3VzIGNhc2VzLg0KPg0KPiBJIHRoaW5rIHRoZSBzcGxpdCBpbnRvIHR3byBsaWJyYXJpZXMg aGVyZSBpcyBhbHNvIGEgbGl0dGxlIGNvbnRyb3ZlcnNpYWwNCj4gYW5kIG5vdCB3ZWxsIGFydGlj dWxhdGVkIChJIGhhdmVu4oCZdCBmb2xsb3dlZCBhbGwgcHJldmlvdXMgZGlzY3Vzc2lvbnMgeW91 DQo+IGd1eXMgaGFkIGFib3V0IHRoYXQpLiBNeSBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIGRlY2lz aW9uIHdhcyBiYXNlZCBvbg0KPiBjb25kaXRpb25zIHRoYXQgbm8gbG9uZ2VyIGFwcGx5IChwcm9i YWJseSBzb21ldGhpbmcgYWJvdXQgZGVwZW5kZW5jaWVzKSwNCj4gYW5kIHRoYXQgc29tZSBvZiB0 aGUganVzdGlmaWNhdGlvbiBub3cgaXMgYmVpbmcgZm9ybXVsYXRlZCBpbiByZXRyb3NwZWN0LA0K PiB3aGljaCBzZWVtcyB3ZWlyZCB0byBtZS4gSSBzdXNwZWN0IHRoZSBhdXRob3JzIG9yaWdpbmFs bHkgZXhwZWN0ZWQNCj4gZGlmZmVyZW50IGRlcGVuZGVuY2llcyBmb3IgZWFjaCwgYnV0IHRoYXQg aXMgbm8gbG9uZ2VyIGEgcHJvYmxlbSBub3cgdGhhdA0KPiB0aGV54oCZcmUgYm90aCBzdGFuZGFs b25lIGxpYnJhcmllcy4gU3BsaXR0aW5nIGZ1bmN0aW9uYWxpdHkgYWxzbyBkb2VzbuKAmXQNCj4g bWFrZSBtdWNoIHNlbnNlIGhlcmUgaW4gbXkgb3BpbmlvbiwgYmVjYXVzZSAoaSkgQ2FweSBpcyBp bnRlbmRlZCB0byBiZSB1c2VkDQo+IG9ubHkgd2l0aCBDb3Jvc2lvICh3aGljaCB3YXMgYSBwb2lu dCBhZ2FpbnN0IHNwbGl0dGluZyBpdCksIGFuZCAoaWkpDQo+IHRoZXJl4oCZcyBzbyBtdWNoIGZ1 bmN0aW9uYWxpdHkgaW4gdGhlc2UgbGlicmFyaWVzIHRoYXQgYW55IHBhcnRpY3VsYXIgc3BsaXQN Cj4gaW50byBvbmx5IHR3byBsaWJyYXJpZXMgd291bGQgYmUgc29tZXdoYXQgYXJiaXRyYXJ5LiBJ ZiBpdCBjYW4gYmUgdXNlZA0KPiB3aXRob3V0IENvcm9zaW8sIHRoZW4gQ29yb3NpbyBzaG91bGRu 4oCZdCBiZSB1c2VkIHRvIGp1c3RpZnkgbWlzc2luZyBmZWF0dXJlcw0KPiB0byBwZW9wbGUgd2hv IHJlcXVlc3QgdGhlbSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNob3VsZCBleHBsYWluIHRoZQ0K PiBleHBsaWNpdCBkZWNpc2lvbiBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZy4gT3RoZXJ3aXNlLCBp dCBzZWVtcyBsaWtlIHRoZQ0KPiBhcmd1bWVudCBmb3IgdGhlIHNwbGl0IGtlZXBzIG1vdmluZyB0 aGUgZ29hbHBvc3RzICh0aGluZ3MgYXJlIG1pc3NpbmcsIGFuZA0KPiBpdOKAmXMgbm90IGluZGVw ZW5kZW50LCBidXQgdGhhdOKAmXMgT0sgYmVjYXVzZSBpdOKAmXMgaW50ZW5kZWQgZm9yIENvcm9z aW8gLyBpdA0KPiBkZXNlcnZlcyB0byBiZSBhIHNlcGFyYXRlIGxpYnJhcnkgYmVjYXVzZSBpdOKA mXMgaW5kZXBlbmRlbnQgZnJvbSBDb3Jvc2lvKS4NCj4NCj4gPiBJcyB0aGUgZG9jdW1lbnRhdGlv biBoZWxwZnVsIGFuZCBjbGVhcj8NCj4NCj4gVGhlIGRvY3VtZW50YXRpb24gaXMgaW5jb21wbGV0 ZSAoaW4gYSBzZW5zZSwgdG9vIOKAnGNvbXBsZXRlLOKAnSBiZWNhdXNlIG11Y2gNCj4gb2YgdGhl IHdvcmsgbmVlZGVkIGlzIHJlbW92aW5nIEFJIGZsdWZmKS4gRXhhbXBsZXMgdGhhdCBkb27igJl0 IGNvbXBpbGUsIGV0Yy4NCj4gVGhlIHBhZ2VzIGludGVuZGVkIGFzIGV4cG9zaXRpb24gb2Z0ZW4g cmVwbGljYXRlIGEgcGFydGlhbCwgZXhoYXVzdGl2ZQ0KPiByZWZlcmVuY2UgaW5zdGVhZC4gSWYg SSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgdGhlIGF1dGhvcnMgd2VyZSB3b3JraW5nIG9uDQo+IGl0 IGFuZCBoYWQgdG8gZnJlZXplIGl0IGZvciB0aGUgcmV2aWV3LCBidXQgSeKAmW0gc3VyZSB0aGV5 IHdpbGwgZml4IHRoaXMuDQo+DQo+IE9uIHRoZSB1c2Ugb2YgQUk6DQo+DQo+IFRoZSB3YXkgQUkg d2FzIHVzZWQgaGVyZSBtYWtlcyB0aGUgZG9jdW1lbnRhdGlvbiB2ZXJ5IGhhcmQgdG8gcmVhZC4g SSBsZWZ0DQo+IGEgbW9yZSBkZXRhaWxlZCBsaXN0IG9mIGlzc3VlcyBhdCB0aGUgZW5kIG9mIHRo ZSByZXZpZXcgYnV0LCB0byBiZSBjbGVhciwgSQ0KPiBoYXZlIG5vdGhpbmcgYWdhaW5zdCBBSS4g SSBqdXN0IHRoaW5rIHRvIHNvbWUgZXh0ZW50IGl0IHdhc27igJl0IHVzZWQNCj4gcHJvcGVybHkg aGVyZS4gV2XigJlyZSBnb2luZyB0byBkaXNhZ3JlZSBvbiB0aGUgc3BlY2lmaWMgbGlzdCBidXQg aW4gZ2VuZXJhbDoNCj4NCj4gLSBBSSBpcyBnb29kIGF0IHN1bW1hcml6aW5nIGNvbnRlbnQsIGJv b3RzdHJhcHBpbmcgcHJvamVjdHMsIHBlcmZvcm1pbmcNCj4gbGFyZ2UgbWVjaGFuaWNhbCByZWZh Y3RvcmluZ3MsIGFuZCBmaXhpbmcgYnVncyB0aGF0IGFyZSBlYXN5IHRvIGZpeCBidXQNCj4gZGlm ZmljdWx0IHRvIHJlcHJvZHVjZS4NCj4gLSBBSSBpcyBiYWQgYXQgZXhwYW5kaW5nIGNvbnRlbnQg d2l0aCBhY3R1YWwgaW5mb3JtYXRpb24gKGl0IGJlZ2lucyB0bw0KPiBnZW5lcmF0ZSBmbHVmZiBi ZXR3ZWVuIHN0YXRlbWVudHMgYW5kIGJyZWFrcyBoaWVyYXJjaGljYWwgY29uc2lzdGVuY3kpLA0K PiB1bmRlcnN0YW5kaW5nIGltcG9ydGFudCBjb250ZXh0dWFsIHN1YnRsZXRpZXMgKGluIHBhcnRp Y3VsYXIsIHBlcnNvbmFsLA0KPiB1bnNwb2tlbiwgYW5kIG9mdGVuIGVtb3Rpb25hbCksIHByb2R1 Y2luZyBnb29kIHRlY2huaWNhbCB3cml0aW5nIGluDQo+IGdlbmVyYWwsIGRvaW5nIHN0cmF0ZWdp YyB3b3JrLCBtYWludGFpbmluZyBoaWVyYXJjaGljYWwgY29uc2lzdGVuY3kgaW4gYQ0KPiBwcm9q ZWN0LCBlbnN1cmluZyBzb2x1dGlvbnMgYXJlIG1haW50YWluYWJsZSwgYW5kIGtlZXBpbmcgdGhl bSB0aGF0IHdheS4NCj4NCj4gVGhlIGxhc3QgcG9pbnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFu dCBiZWNhdXNlLCBmb3IgbGFyZ2UgcHJvamVjdHMsIHRoZQ0KPiBjb3N0IG9mIG1haW50YWluaW5n IGl0IGlzIG9yZGVycyBvZiBtYWduaXR1ZGUgZ3JlYXRlciB0aGFuIHRoZSBjb3N0IG9mDQo+IGJv b3RzdHJhcHBpbmcgaXQuIElmIHdlIHRocm93IEFJIGF0IHRoYXQsIHRvbywgdGhlIGNvZGUgYW5k IGRvY3VtZW50YXRpb24NCj4gd2lsbCBrZWVwIGRyaWZ0aW5nLCBmaW5lciBkZXRhaWxzIHdpbGwg bmV2ZXIgZ2V0IGZpeGVkLCBhbmQgd2XigJlsbCBrZWVwDQo+IHNlZWluZyByZWdyZXNzaW9ucy4g Qnkg4oCcdGhyb3cgQUkgYXQgdGhhdCzigJ0gSSBtZWFuIGxldHRpbmcgaXQgZG8gbW9zdCBvZiB0 aGUNCj4gd29yayBvbiBpc3N1ZXMgb3IgcmVseWluZyBvbiBpdCB0byBtYWludGFpbiBjb25zaXN0 ZW5jeS4gQWNjZXB0aW5nIG9uZSBvZg0KPiB0aGUgc3VnZ2VzdGlvbnMgaXQgcmVjb21tZW5kZWQg Zm9yIGEgc21hbGwgcHJvYmxlbSBhZnRlciBwcm9wZXJseSByZXZpZXdpbmcNCj4gdGhlbSBsaW5l IGJ5IGxpbmUgc2VlbXMgZmluZSBmb3IgbWFueSBsb2NhbCBpc3N1ZXMuDQo+DQo+IEluIG90aGVy IHdvcmRzLCBpdOKAmXMgaW1wb3J0YW50IHRvIG5vdGljZSB0aGF0IEFJIG1pZ2h0IGJlIGhlbHBm dWwgd2hlbg0KPiBib290c3RyYXBwaW5nIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBidXQgbm90IGZv ciBtYWludGFpbmluZyBjb2RlIHRoYXQNCj4gZG9lc27igJl0IGRyaWZ0LiBUaGUgdXNlIG9mIEFJ IGhlcmUgc28gZmFyIHNlZW1zIHRvIGhhdmUgYmVlbiByZWFzb25hYmx5IGdvb2QNCj4gZm9yIHRo ZSBjb2RlICh0aGUgY29kZSBpcyBhbHNvIG1vcmUgdmVyaWZpYWJsZSB0aGFuIHdyaXRpbmcsIGFu ZCBwZW9wbGUNCj4gc2VlbSByZWFzb25hYmx5IGhhcHB5IHdpdGggaXQpLCBidXQgbm90IHNvIGdv b2QgZm9yIHRoZSBkb2N1bWVudGF0aW9uLA0KPiB0aG91Z2ggdGhhdCBjYW4gYmUgZml4ZWQuIEJ1 dCBpZiBBSSBpcyB1c2VkIGFnYWluIHRvIGZpeCB0aGUgaXNzdWVzIHRoYXQNCj4gY29tZSB1cCBk dXJpbmcgdGhpcyByZXZpZXcgYW5kIGFmdGVyIHRoYXQgdGhlcmXigJlzIG5vIGxvY2sgaW50byBz b21lIGtpbmQgb2YNCj4gc3RhYmxlIHZlcnNpb24gdGhhdCB3aWxsIGJlIG1haW50YWluZWQgd2l0 aCBhIG1vcmUgYWN0aXZlIGh1bWFuIGluIHRoZQ0KPiBsb29wLCBhbnkgcmV2aWV3IHdpbGwgYmUg cG9pbnRsZXNzIGJlY2F1c2UgbW9yZSBhbmQgbW9yZSBBSSB3aWxsIGp1c3QgZHJpZnQNCj4gdG8g YW5vdGhlciB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIHdpdGggdGhlIHNh bWUgcHJvYmxlbXMuIEluDQo+IHRoZSBjYXNlIG9mIGRvY3VtZW50YXRpb24sIGl04oCZcyBub3Qg b25seSBhYm91dCBkcmlmdGluZyBiZWNhdXNlIEkgdGhpbmsgQUksDQo+IG9yIGF0IGxlYXN0IHRo ZSBjdXJyZW50IG1vZGVscyB3ZSBoYXZlLCBpcyBzaW1wbHkgaW5jYXBhYmxlIG9mIGZpeGluZyBp dCBieQ0KPiBpdHNlbGYuDQo+DQo+IFdoYXTigJlzIGludGVyZXN0aW5nIGlzIHRoYXQgSSBvZnRl biB3b3VsZG7igJl0IHVuZGVyc3RhbmQgc29tZXRoaW5nIGluIHRoZQ0KPiBkb2N1bWVudGF0aW9u LCBzbyBJIHdvdWxkIGdldCBoZWxwIGZyb20gYW4gQUkgYWdlbnQuIEV2ZW4gdGhvdWdoIGJvdGgN Cj4gZXhwbGFuYXRpb25zIGFyZSBmcm9tIEFJLCBJIHRoaW5rIHRoZSBvdGhlciBhZ2VudCBnYXZl IG1lIGEgYmV0dGVyDQo+IGV4cGxhbmF0aW9uIGJlY2F1c2UgdGhleSB3ZXJlIGZvcmNlZCB0byBw cm92aWRlIGl0IHdpdGhvdXQgdGhlIHNlc3Npb24NCj4gY29udGV4dCBiZWluZyBwb2xsdXRlZCBi eSBvdGhlciBhc3N1bXB0aW9ucy4gVGhpcyBtaWdodCBiZSBhIGhpbnQgaW50byBob3cNCj4gdG8g aW1wcm92ZSB0aGluZ3MgYSBsaXR0bGUgaWYgd2UgcHVycG9zZWZ1bGx5IHVzZSBhZ2VudHMgd2l0 aG91dCBjb250ZXh0LA0KPiBtYWtpbmcgdGhlbSBtb3JlIHJlcHJlc2VudGF0aXZlIG9mIGhvdyB0 aGUgcmVhZGVyIGFycml2ZXMgYXQgdW5kZXJzdGFuZGluZy4NCj4NCj4gT24gdGhlIGZvcm1hdDoN Cj4NCj4gSSBhbHNvIHRoaW5rIHRoZSBkb2N1bWVudGF0aW9uIGlzIG9yZGVycyBvZiBtYWduaXR1 ZGUgbG9uZ2VyIHRoYW4gaXQgbmVlZHMNCj4gdG8gYmUsIGdpdmVuIHRoZSByZXBldGl0aW9uIGFu ZCBjb25jZXB0cyBmcm9tIHRoZSByZWZlcmVuY2UgdGhhdCBhcmUNCj4gZXhoYXVzdGl2ZWx5IHJl cGxpY2F0ZWQgaW4gdGhlIGV4cG9zaXRpb24gc2ltcGx5IGJlY2F1c2UgQUkgY2FuIGRvIGl0DQo+ IGNoZWFwbHkgKG1hbnkgYWxyZWFkeSBkcmlmdGluZyBmcm9tIHRoZSByZWZlcmVuY2UpLiBGb3Ig aW5zdGFuY2UsIEkgY291bGQNCj4gZWFzaWx5IHNlZSBob3cgdGhlIGZldyBjb25jZXB0cyBvZiBh Y3R1YWwgaW5mb3JtYXRpb24gYWNyb3NzIGFsbCA3IHBhZ2VzDQo+IHVuZGVyIOKAnEJ1ZmZlciBT ZXF1ZW5jZXPigJ0gKEJ1ZmZlciwgQnVmZmVyIHNlcXVlbmNlcywgZXRjLikgY291bGQgYmUNCj4g cHJlc2VudGVkIG9uIGEgc2luZ2xlIHBhZ2UsIHdpdGggb25lIHNlY3Rpb24gZm9yIGVhY2gsIGFs b25nIHdpdGggYnJpZWYNCj4gYWRtb25pdGlvbnMgZm9yIHRoZSBkZXNpZ24gcmF0aW9uYWxlLg0K Pg0KPiBBIHNpZGUgbm90ZSBhYm91dCB0aGUgcHJvY2VzczoNCj4NCj4gTXkgZmluYWwgZXZhbHVh dGlvbiBpcyB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIGlzIHZlcnkgaGFyZCB0byByZWFkIGR1ZSB0 bw0KPiBBSSBmbHVmZiwgYW5kIHRoYXQgY2FyZWZ1bGx5IHJlYWRpbmcgdGhlIGRvY3VtZW50YXRp b24gYW5kIHRoZSBjb2RlIGlzDQo+IGltcG9zc2libGUgd2l0aGluIHRoZSAxMC1kYXkgcmV2aWV3 IHBlcmlvZC4gSSBtZWFuIOKAnGltcG9zc2libGXigJ0gbGl0ZXJhbGx5LA0KPiBhcyBhbnkgcmVh c29uYWJsZSB3b3Jkcy1wZXItbWludXRlIG9yIExPQy1wZXItbWludXRlIGNhbGN1bGF0aW9uLiBC dXQgaW4NCj4gdGhlIGdlbmVyYWwgY2FzZSwgdGhpcyBoYXMgbGl0dGxlIHRvIGRvIHdpdGggdGhl IHN1Ym1pc3Npb24sIG9yIGV2ZW4gQUkuDQo+IEFuZCB0aGUgYXV0aG9ycyBhcmUgbm90IHRvIGJs YW1lIGZvciB0aGF0IGJ1dCBzaG91bGQgYmUgcGFydCBvZiBhbg0KPiBpbmRlcGVuZGVudCBkaXNj dXNzaW9uIEnigJlkIGxpa2UgdG8gcHJvcG9zZS4NCj4NCj4gSSBiZWxpZXZlIHRoaXMgaXMgdGhl IGxvbmdlc3QgYm9vc3Qgc3VibWlzc2lvbiBldmVyIHVuZGVyIHJldmlldywgYW5kIGl04oCZcw0K PiBtYW55IHRpbWVzIGxhcmdlciB0aGFuIEFzaW8gYW5kIEJlYXN0IHdlcmUgd2hlbiB0aGV5IHdl cmUgYWNjZXB0ZWQgKEkNCj4gY2hlY2tlZCkuIFdlIGhhdmUgaGFkIHJldmlldyBleHRlbnNpb25z IGZvciBtdWNoIHNtYWxsZXIgbGlicmFyaWVzLg0KPiBJZGVhbGx5LCBpbnN0ZWFkIG9mIGFza2lu ZyBmb3IgZXh0ZW5zaW9ucywgd2UgY291bGQgaGF2ZSBhIHByb2Nlc3MgdGhhdA0KPiBhbHJlYWR5 IGFjY29tbW9kYXRlcyBsYXJnZXIgbGlicmFyaWVzIGJhc2VkIG9uIHRoZWlyIHNpemUsIHRob3Vn aCBJIGhhdmUgbm8NCj4gaWRlYSB3aGF0IHRoYXQgd291bGQgbG9vayBsaWtlLiBPdGhlcndpc2Us IHdl4oCZcmUgZWl0aGVyIGdvaW5nIHRvIGhhdmUgKGkpDQo+IG9ubHkgcmV2aWV3cyBieSBwZW9w bGUgd2hvIHdlcmUgYWxyZWFkeSBjYXN1YWxseSB1c2luZyB0aGUgbGlicmFyeSwgb3INCj4gd2Xi gJlyZSBnb2luZyB0byBoYXZlIChpaSkgYSBiYXR0bGUgb2YgcGVvcGxlIHVzaW5nIEFJIGFnZW50 cyB0byBwcmV0ZW5kDQo+IHRoZXnigJlyZSByZXZpZXdpbmcgY29kZSB3cml0dGVuIGJ5IG90aGVy IEFJIGFnZW50cy4NCj4NCj4gSXQgd291bGQgYWxzbyBiZSBuaWNlIHRvIGNvbmZpcm0gd2l0aCB0 aGUgYXV0aG9ycyAobWF5YmUgdGhpcyBoYXMgYWxyZWFkeQ0KPiBoYXBwZW5lZCkgdGhhdCB0aGUg ZG9jdW1lbnRhdGlvbiBpcyBpbiBhIHN0YXRlIHRoZXkgZmluZCBhY2NlcHRhYmxlIGZvcg0KPiBy ZXZpZXcgYmVmb3JlIHN0YXJ0aW5nIHRoZSByZXZpZXcsIHNvIHRoZXkgZG9u4oCZdCBmcmVlemUg dGhlIGRvY3VtZW50YXRpb24NCj4gaW4gYW4gaW50ZXJtZWRpYXRlIHN0YXRlIGZyb20gYW5vdGhl ciBtaWxlc3RvbmUgaW4gdGhlIHByb2plY3QuDQo+DQo+ID4gRGlkIHlvdSB0cnkgdG8gdXNlIGl0 PyBXaGF0IHByb2JsZW1zIG9yIHN1cnByaXNlcyBkaWQgeW91IGVuY291bnRlcj8NCj4NCj4gWWVz LiBJIGNvbXBpbGVkIHRoZSBjb2RlIGFuZCByYW4gdGhlIGV4YW1wbGVzLg0KPg0KPiA+IFdoYXQg aXMgeW91ciBldmFsdWF0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbj8NCj4NCj4gSSBkaWRu4oCZ dCBoYXZlIHRpbWUgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhlIGltcGxlbWVudGF0aW9uIGxpbmUg YnkgbGluZS4gSQ0KPiBoYXZlIGEgbGlzdCBvZiBub3RlcyBJIGxlZnQgYXQgdGhlIGVuZC4gSSBt b3N0bHkgYXNzdW1lZCB0aGUgQVBJIGFzDQo+IHByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnRhdGlv biB0byB3cml0ZSB0aGF0Lg0KPg0KPiA+IFBsZWFzZSBleHBsaWNpdGx5IHN0YXRlIHRoYXQgeW91 IGVpdGhlciAqYWNjZXB0KiBvciAqcmVqZWN0KiB0aGUNCj4gaW5jbHVzaW9uIG9mIHRoaXMgbGli cmFyeSBpbnRvIGJvb3N0Lg0KPg0KPiBJIHJlY29tbWVuZCBhY2NlcHRpbmcgdGhlIGxpYnJhcnku IEkgZG9u4oCZdCB3YW50IHRvIG1ha2UgaXQgY29uZGl0aW9uYWwsDQo+IHNpbmNlIEkga25vdyB0 aGUgYXV0aG9ycyB3aWxsIHRha2UgYWxsIGNvbW1lbnRzIGludG8gYWNjb3VudCwgd2hpY2ggbWFr ZXMNCj4gaXQgcmVkdW5kYW50Lg0KPg0KPiA+IEFsc28sIHBsZWFzZSBpbmRpY2F0ZSB0aGUgdGlt ZSAmIGVmZm9ydCBzcGVudCBvbiB0aGUgZXZhbHVhdGlvbiBhbmQgZ2l2ZQ0KPiB0aGUgcmVhc29u cyBmb3IgeW91ciBkZWNpc2lvbi4NCj4NCj4gSSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGJ1dCBu b3QgdGhlIHdob2xlIHJlZmVyZW5jZS4gSSBza2ltbWVkIHRocm91Z2ggdGhlDQo+IHNvdXJjZSBj b2RlLiBJIGNvbXBpbGVkIHRoZSBsaWJyYXJ5IGFuZCByYW4gdGhlIGV4YW1wbGVzLiBJIHNwZW50 IG1vc3Qgb2YNCj4gdGhlIGxhc3QgdGhyZWUgd2Vla3MgcmV2aWV3aW5nIHRoZSBsaWJyYXJ5Lg0K Pg0KPiA+IERpc2NsYWltZXINCj4NCj4gSSdtIGFmZmlsaWF0ZWQgd2l0aCB0aGUgQysrIEFsbGlh bmNlLg0KPg0KPiA+IE15IGNvbXBsZXRlIGxpc3Qgb2YgbWlub3IgaXNzdWVzLCBub3RlcywgYW5k IHN1Z2dlc3Rpb25zIHNvIGl0IGRvZXNu4oCZdA0KPiBwb2xsdXRlIHRoZSByZXN0IG9mIHRoZSBy ZXZpZXcNCj4NCj4gQXMgSSBtZW50aW9uZWQsIOKAnEkgaGF2ZW7igJl0IGZvbGxvd2VkIGFsbCB0 aGUgZGlzY3Vzc2lvbnMgaW4gb3RoZXIgcmV2aWV3cywNCj4gc28gSSBpbWFnaW5lIG1hbnkgb2Yg dGhlIHBvaW50cyBJ4oCZbGwgYnJpbmcgdXAgaGVyZSBoYXZlIGFscmVhZHkgYmVlbg0KPiBkaXNj dXNzZWQu4oCdDQo+DQo+IC0gVGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXJseSBpbmNvbXBsZXRl LiBFeGFtcGxlcyB0aGF0IGRvbuKAmXQgY29tcGlsZSwNCj4gZXRjLiBJZiBJIHVuZGVyc3RhbmQg Y29ycmVjdGx5LCB0aGV5IHdlcmUgd29ya2luZyBvbiBpdCBhbmQgaGFkIHRvIGZyZWV6ZQ0KPiBp dCBmb3IgdGhlIHJldmlldywgYnV0IEnigJltIHN1cmUgdGhleSB3aWxsIGZpeCB0aGlzLg0KPiAt IFRoZSB3YXkgQUkgd2FzIHVzZWQgaGVyZSBtYWtlcyB0aGUgZG9jdW1lbnRhdGlvbiB2ZXJ5IGhh cmQgdG8gcmVhZC4gKGkpDQo+IFRoZSBzYW1lIGNvbmNlcHQgb3IgcGFydCBvZiBpdCBpcyBvZnRl biBwaHJhc2VkIGRpZmZlcmVudGx5IG92ZXIgYW5kIG92ZXINCj4gd2l0aG91dCBhZGRpbmcgYW55 IG5ldyBpbmZvcm1hdGlvbi4gVmVyeSBvZnRlbiwgdGhpcyBpcyBkb25lIHZpYQ0KPiB1bm5lY2Vz c2FyeSBuZWdhdGl2ZXMgKOKAnFRoaXMgaXMgWC4gTm90IFkuIE5vdCBa4oCdLCBpbnN0ZWFkIG9m IOKAnFRoaXMgaXMgWOKAnSkuDQo+IChpaSkgVGhlcmUgYXJlIHRvbyBtYW55IGNsaWNow6lzIGFu ZCBtZXRhcGhvcnMgdGhhdCBjb25zdGl0dXRlIGJhZCB0ZWNobmljYWwNCj4gd3JpdGluZyBiZWNh dXNlIHRoZXkgZm9yY2UgdGhlIHJlYWRlciB0byBrZWVwIHJldmVyc2UtZW5naW5lZXJpbmcgdGhl bQ0KPiAoYWx0aG91Z2ggb25lIHBlciBwYWdlIGNvdWxkIGJlIHVzZWZ1bCB0byBtYWtlIHNvbWV0 aGluZyBtb3JlIG1lbW9yYWJsZSkuDQo+IChpaWkpIEV4cHJlc3Npb25zIGFyZSB1c2VkIGluIHRo ZSB0ZXh0IHdpdGhvdXQgYSBwcm9wZXIgZGVmaW5pdGlvbiwNCj4gcHJvYmFibHkgYmVjYXVzZSB0 aGV5IGNhbWUgZnJvbSB0aGUgY29udmVyc2F0aW9uIGNvbnRleHQgd2l0aCB0aGUgYWdlbnQuDQo+ IChpdikgVGhlIGhpZXJhcmNoeSBvZiB0aGUgcGFnZXMgYW5kIHNlY3Rpb25zIGlzIG9mdGVuIGlu Y29oZXJlbnQuIFRoaXMgaXMNCj4gbm90IGEgcHJvYmxlbSB3aXRoIEFJIHBlciBzZS4gVGhlIHBy b2JsZW0gaXMgYmFkIHdyaXRpbmcgc3R5bGUuIFdlIGp1c3QNCj4gaGFwcGVuIHRvIGtub3cgQUkg aXMgdGhlIGNhdXNlLg0KPiAtIEkgZG9u4oCZdCBsaWtlIHRoZSBpbnRyb2R1Y3Rpb24gdG8gY29y b3V0aW5lcyBiZWNhdXNlIGl04oCZcyBzeW50YXgtYmFzZWQNCj4gKGxpc3Rpbmcgd2hhdCBlYWNo IGNvbW1hbmQgZG9lcyBiZWZvcmUgcHJlc2VudGluZyB0aGUgbW90aXZhdGlvbikgcmF0aGVyDQo+ IHRoYW4gZ29hbC1vcmllbnRlZCAobGlzdGluZyB0eXBpY2FsIHVzZSBjYXNlcyByZWdhcmRsZXNz IG9mIGNvcm91dGluZXMgYW5kDQo+IGV4cGxhaW5pbmcgaG93IGNvcm91dGluZXMgaGVscCB3aXRo IGVhY2ggb25lIHVudGlsIGFsbCB0aGUgc3ludGF4IGlzDQo+IGNvdmVyZWQpLg0KPiAtIFRoZSBl eGFtcGxlcyBjb3VsZCBpbmNsdWRlIHNvbWV0aGluZyBzbGlnaHRseSBwcmFjdGljYWwgcmF0aGVy IHRoYW4gYQ0KPiBjb3JvdXRpbmUgdGhhdCBsaXRlcmFsbHkgZG9lcyB0aGUgdGhpbmcgaXTigJlz IGV4cGxhaW5pbmcuIEZvciBpbnN0YW5jZSwgdGhlDQo+IGBmaW5hbF9zdXNwZW5kYCBjb3VsZCBi ZSBhbiBleGFtcGxlIHRoYXQgc2hvd3MgdGhlIHJlYWRlciBzb21ldGhpbmcgdGhleQ0KPiBjYW4g cmVsYXRlIHRvIGFzIGFjaGlldmluZyBhIGdvYWwsIG5vIG1hdHRlciBob3cgc2ltcGxlIGl0IGlz Lg0KPiAtIFRoZSBleGFtcGxlcyB0aGF0IHVzZWQgcHNldWRvY29kZSB3aXRoIHRoZSBzYW1lIGtl eXdvcmRzIGFzIHRoZSByZWFsDQo+IHN5bnRheCwgbWl4ZWQgd2l0aCB0aGUgcmVhbCBzeW50YXgs IHdlcmUgY29uZnVzaW5nLiBJdOKAmXMgZWFzeSB0byBsb3NlIHRyYWNrDQo+IG9mIHdoYXQgYSBr ZXl3b3JkIG1lYW5zIGluIGEgc3BlY2lmaWMgZXhhbXBsZS4NCj4gLSBUaGUgaGllcmFyY2h5IG9m IHRoZSBpbnRyb2R1Y3Rpb24gdG8gY29yb3V0aW5lcyBpcyBpbmNvaGVyZW50LiDigJxBZHZhbmNl ZA0KPiBUb3BpY3PigJ0gKHdoaWNoIG9ubHkgZGlzY3Vzc2VzIFN5bW1ldHJpYyBUcmFuc2Zlcikg aXMgcHJlc2VudGVkIGJlZm9yZQ0KPiBhd2FpdF9zdXNwZW5kIGlzIHByb3Blcmx5IGV4cGxhaW5l ZCBpbiB0aGUgcHJldmlvdXMgcGFnZXMuIEV2ZW4gd2l0aGluIHRoZQ0KPiBzYW1lIHBhZ2UsIHRo ZSDigJxUaGUgU29sdXRpb246IFJldHVybiB0aGUgSGFuZGxl4oCdIGlzIHByZXNlbnRlZCBiZWZv cmUgdGhlDQo+IHNlY3Rpb24g4oCcUmV0dXJuIFR5cGVzIGZvciBhd2FpdF9zdXNwZW5k4oCdIHRo YXQgcHJlc2VudHMgd2hpY2ggcmV0dXJuIHR5cGVzDQo+IGFyZSB2YWxpZCBhbmQgd2hhdCB0aGV5 IGRvLg0KPiAtIEluIHRoZSBIQUxPIHNlY3Rpb24sIHRoZSBzZW50ZW5jZSAiVGhlIGNvcm91dGlu ZSB0eXBlIGlzIG1hcmtlZCB3aXRoDQo+IChDbGFuZyBleHRlbnNpb24pIiByZW5kZXJzIHdpdGgg YSBibGFuayB3aGVyZSB0aGUgYXR0cmlidXRlIG5hbWUgc2hvdWxkIGJlLg0KPiBUaGUgSFRNTCBj b250YWlucw0KPiAtIFRoZSAzIHRvcGljcyBpbiBBZHZhbmNlZCBUb3BpY3MgY291bGQgaGF2ZSB0 aGVpciBvd24gcGFnZSwgYW5kIHNvIHRoZXkNCj4gY2FuIGJlIGV4cGxhaW5lZCBwcm9wZXJseS4g VGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gQWR2YW5jZWQgVG9waWNzIGFuZA0KPiBvdGhlciB0b3Bp Y3MgY291bGQgYmUgcmVtb3ZlZC4NCj4gLSBNeSBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIHdyaXRp bmcgc3R5bGVzIG9mIHRoZSBpbnRyb2R1Y3Rpb25zIHRvDQo+IGNvcm91dGluZXMgYW5kIHRvIGNv bmN1cnJlbmN5IGFyZSB0b28gZGlmZmVyZW50IChhbmQgdGhlIGludHJvZHVjdGlvbiB0bw0KPiBj b25jdXJyZW5jeSBpcyBiZXR0ZXIpLiBUaGUgaW50cm9kdWN0aW9uIHRvIGNvbmN1cnJlbmN5IGV4 cGxhaW5zIHZlcnkgYmFzaWMNCj4gY29uY2VwdHMgdmVyeSB3ZWxsLiBDb25jZXB0cyBtb3N0IEMr KyBkZXZlbG9wZXJzIGFyZSBsaWtlbHkgYWxyZWFkeQ0KPiBmYW1pbGlhciB3aXRoLiBPbiB0aGUg b3RoZXIgaGFuZCwgdGhlIGludHJvZHVjdGlvbiB0byBjb3JvdXRpbmVzIHVzZXMgdmVyeQ0KPiBi aWcgd29yZHMgd2l0aG91dCBib3RoZXJpbmcgdG8gZXhwbGFpbiB0aGVtLiBGb3IgaW5zdGFuY2Us IHRoZXJl4oCZcyBhIHdob2xlDQo+IHBhZ2UgYWJvdXQgc3RkOjp0aHJlYWRzLCBldmVyeXRoaW5n IHJlbGF0ZWQgdG8gaXQsIGFuZCB3b3JraW5nIGV4YW1wbGVzIG9uDQo+IGhvdyB0byB1c2UgaXQg aW4gZGlmZmVyZW50IHVzZSBjYXNlcy4gTWVhbndoaWxlLCBTeW1tZXRyaWMgVHJhbnNmZXIsIGEN Cj4gY29uY2VwdCB0aGF04oCZcyB3YXkgbW9yZSBjb21wbGV4IGFuZCBtdWNoIG1vcmUgY29uc2Vx dWVudGlhbCB0byB0aGUgbGlicmFyeQ0KPiBhbmQgbXVjaCBoYXJkZXIgdG8gdmlzdWFsaXplLCBp cyBleHBsYWluZWQgd2l0aCB0d28gdmVyeSBzaG9ydCBwYXJhZ3JhcGhzLg0KPiAtIFRoZSBzZWN0 aW9uIHRpdGxlcyBpbiB0aGUgQ29uY3VycmVuY3kgaW50cm9kdWN0aW9uIGFyZSBub3QgcmVhbGx5 DQo+IGFwcHJvcHJpYXRlLCB0aG91Z2guIFRoZXkgY291bGQganVzdCByZWZsZWN0IHdoYXQgdGhl eSBkZXNjcmliZTogSToNCj4gVGhyZWFkcywgSUk6IE11dGV4ZXMsIGV0Yy4gT3RoZXJ3aXNlLCBp dCBzZWVtcyB0byBwcm9taXNlIG11Y2ggbW9yZSB0aGFuIGl0DQo+IGFjdHVhbGx5IG9mZmVycy4N Cj4gLSBUaGUgcGFyYWdyYXBoIG9uIHNwdXJpb3VzIHdha2V1cHMgY291bGQgYnJpZWZseSBleHBs YWluIHdoeSB0aGV5IGV4aXN0Lg0KPiAtIFRoZSBkb2N1bWVudGF0aW9uIGhpZXJhcmNoeSBpcyBp bmNvbnNpc3RlbnQgaW4gaG93IGl0IHByZXNlbnRzIHRoZSBkZXNpZ24NCj4gcmF0aW9uYWxlLiBT b21lIHBhZ2VzIGFyZSBkZWRpY2F0ZWQgdG8gaXQ7IHRoZXJl4oCZcyBhbHNvIGEgc2V0IG9mIHBh Z2VzIGF0DQo+IHRoZSBlbmQgZGVkaWNhdGVkIHRvIGl0OyBhbmQgc29tZXRpbWVzIGl04oCZcyBw cmVzZW50ZWQgaW50ZXJsZWF2ZWQgd2l0aCB0aGUNCj4gdGV4dC4gVGhlIGRvY3VtZW50YXRpb24g c2hvdWxkIGNob29zZSBvbmUgb2YgdGhlbS4gTXkgcGVyc29uYWwgcHJlZmVyZW5jZQ0KPiBpcyBm b3IgYWRtb25pdGlvbnMgaW50ZXJsZWF2ZWQgd2l0aCB0aGUgdGV4dCwgYmVjYXVzZSB0aGUgdXNl ciBoYXMgdGhlDQo+IG5lY2Vzc2FyeSBjb250ZXh0IGFuZCBjYW4gY2hvb3NlIHRvIGlnbm9yZSB0 aGVtLiBUaGUgb3RoZXIgb3B0aW9ucyBhcmUNCj4gZWFzaWx5IGlnbm9yZWQgYW5kIG9mdGVuIGFu bm95aW5nIGJlY2F1c2UgdGhlIHRleHQgZG9lc27igJl0IGdldCB0byB0aGUNCj4gY29udGVudCB0 aGUgdXNlciBpcyBsb29raW5nIGZvci4NCj4gLSBUaGUgZG9jdW1lbnRhdGlvbiBleHBvc2l0aW9u IHNob3VsZCB1c2UgdGhlIGNwcDogbWFjcm8gc28gdGhhdCB3ZSBnZXQNCj4gbGlua3MgdG8gdGhl IHJlZmVyZW5jZS4gVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBzbyBJIGNhbiBzZWUgd2hhdCBhIGNsYXNz IGxvb2tzDQo+IGxpa2Ugd2hlbiByZWFkaW5nIGFib3V0IGl0IGZvciB0aGUgZmlyc3QgdGltZS4N Cj4gLSBUaGUgZG9jdW1lbnRhdGlvbiBpcyBhbHNvIG5vdCBnb2FsLW9yaWVudGVkIHdoZW4gaXTi gJlzIGV4cGxhaW5pbmcgY29uY2VwdHMNCj4gYWJvdXQgQ2FweS4gRm9yIGluc3RhbmNlLCB0aGUg cGFnZSDigJxUaGUgdGFzayBUeXBl4oCdIGhhcyBjb3JvdXRpbmVzIHRoYXQNCj4gcmV0dXJuIGNh cHk6OnRhc2sgYnV0IG5vIGV4YW1wbGUgd2hlcmUgdGhlIHRhc2sgaXMgZXhlY3V0ZWQuIEEgdXNl cg0KPiBmb2xsb3dpbmcgdGhlIGRvY3VtZW50YXRpb24gYW5kIGNvbXBpbGluZyBzbWFsbCBleGFt cGxlcyBhcyB0aGV5IGxlYXJuIGhhcw0KPiBub3RoaW5nIHRoZXkgY2FuIHJ1bi4gVGhlIGV4YW1w bGVzIGNvdWxkIGp1c3QgY29udGFpbiB3aGF0ZXZlciB0aGUgc2ltcGxlc3QNCj4gd2F5IHRvIHJ1 biB0aGVzZSB0YXNrcyBpcyAobWF5YmUganVzdCBydW5uaW5nIHRoZW0gaW5saW5lKS4NCj4gLSBU aGUgcmVmZXJlbmNlIG9mIGNhcHk6OnJ1bl9hc3luYywgaWYgaXQgcmVtYWlucyBsaWtlIHRoaXMg YWZ0ZXIgcmV2aWV3LA0KPiBpcyBpbmNvcnJlY3QuIEl0IHNheXMg4oCcQXN5bmNocm9ub3VzbHkg bGF1bmNoIGEgbGF6eSB0YXNrIG9uIHRoZSBnaXZlbg0KPiBleGVjdXRvcuKAnS4gQnV0IGl0IGRv ZXNu4oCZdCBkbyB0aGF0IGJlY2F1c2UgaXQgZG9lc27igJl0IHJlY2VpdmUgYW55IHRhc2suIFdo YXQNCj4gaXQgZG9lcyBpcyBjcmVhdGUgdGhlIGludGVybWVkaWFyeSBvYmplY3QgdGhlIGxpYnJh cnkgcmVxdWlyZXMgZm9yIHRoYXQuDQo+IC0gVGhlIOKAnFR3by1DYWxsIFN5bnRheOKAnSBzZWN0 aW9uIGRvZXNu4oCZdCBleHBsYWluIHRoZSBkZXNpZ24gcmF0aW9uYWxlIHdlbGwNCj4gaGVyZS4g VGhlIG5lY2Vzc2l0eSBoZXJlIGlzIGp1c3QgYXNzdW1lZCwgYnV0IHRoZSB1c2VyIGRvZXNu4oCZ dCBrbm93IHRoZQ0KPiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQganVzdGlmeSBpdCBvciB0 aGUgdHJhZGVvZmZzIG9mIHRoZQ0KPiBhbHRlcm5hdGl2ZXMuIFRoZSBsb2dpYyBtaWdodCBiZSBz b3VuZCwgYnV0IHRoZSBkb2N1bWVudGF0aW9uIGRvZXNu4oCZdA0KPiBleHBsYWluIGl0IHdlbGwu IEluIGFueSBjYXNlLCB0aGUgc3ludGF4IGxvb2tzIHF1aXRlIHVnbHkgYW5kIGRhbmdlcm91cy4g SQ0KPiBob3BlIHlvdSBndXlzIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gdG8gdGhpcy4gVGhlcmUg Y291bGQgYWxzbyBiZSBhDQo+IHJlZmVyZW5jZSBmcm9tIHRoaXMgcGFnZSB0byB0aGUg4oCcRnJh bWUgQWxsb2NhdG9yc+KAnSBwYWdlLCB3aGVyZSB0aGVyZeKAmXMgYQ0KPiBsaXR0bGUgbW9yZSBk ZXRhaWwgb24gd2h5IHRoaW5ncyBoYXZlIHRvIGJlIHRoaXMgd2F5Lg0KPiAtIOKAnFdoZW4gbm8g cmVzdWx0IGhhbmRsZXIgaXMgcHJvdmlkZWQsIHRoZSByZXN1bHQgaXMgZGlzY2FyZGVk4oCdIOKG kiBDb3VsZG7igJl0DQo+IGl0IGp1c3QgcmV0dXJuIHRoZSByZXN1bHQgd2hlbiBubyBoYW5kbGVy IGlzIHByb3ZpZGVkIChhbmQgdGhyb3cgdGhlDQo+IGV4Y2VwdGlvbnMpPyBUaGlzIHdvdWxkIG1h a2UgY29yb3V0aW5lIGNvZGUgbG9vayBhIGxpdHRsZSBtb3JlIGxpa2UgcmVndWxhcg0KPiBjb2Rl LiBJIGtub3cgc29tZSBleGFtcGxlcyBzaG93IHRoZSB2YWx1ZSBiZWluZyBoYW5kbGVkIGluIHRo ZSBleGVjdXRvciwNCj4gYnV0IGZvciBtYW55IHVzZSBjYXNlcyB3ZSBtaWdodCBub3QgcmVhbGx5 IG5lZWQgdGhhdC4NCj4gLSBJIGZpbmQgdGhlIG5hbWUg4oCccnVu4oCdIGEgbGl0dGxlIHdlaXJk IGZvciB0aGlzIGZ1bmN0aW9uIGJlY2F1c2Ugd2hhdOKAmXMNCj4gc3BlY2lhbCBoZXJlIGlzIHRo ZSBjb250ZXh0IHRyYW5zZmVyIG1vcmUgdGhhbiB0aGUgZmFjdCB0aGF0IHNvbWV0aGluZyBpcw0K PiBiZWluZyBydW4sIHdoaWNoIGNvdWxkIGJlIGRvbmUgbW9zdCBvZiB0aGUgdGltZSBieSBqdXN0 IGNhbGxpbmcgdGhlDQo+IGZ1bmN0aW9uLg0KPiAtIFRoZSByZWZlcmVuY2Ugc2VjdGlvbnMgaW4g dGhlIGV4cG9zaXRpb24gcGFnZXMgZG9u4oCZdCBsb29rIHZlcnkgZ29vZC4gV2UNCj4gYWxyZWFk eSBoYXZlIGEgcmVhbCByZWZlcmVuY2UuIEFuZCBpZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhl IGhlYWRlcnMgaXMNCj4gaW1wb3J0YW50ICh0aGV5IGFyZSksIHRoZXkgc2hvdWxkIGJlIGV4cGxh aW5lZCByaWdodCBhdCB0aGUgYmVnaW5uaW5nLiBBcw0KPiB3ZeKAmXJlIGluY2VudGl2aXppbmcg dGhlIHVzZXIgdG8gaW5jbHVkZSB3aGF0IHRoZXkgdXNlIGFuZCB0aGlzIGluZm9ybWF0aW9uDQo+ IGlzIGltcG9ydGFudCwgdGhlIGV4YW1wbGVzIHNob3VsZCBhbHNvIG5vdCBpbmNsdWRlIGJvb3N0 L2NhcHkuaHBwIGRpcmVjdGx5Lg0KPiAtIEkgdW5kZXJzdGFuZCB3aGF0IHRoZSBjb2RlIGlzIGRv aW5nLCBidXQgSSBmaW5kIGl0IGEgYml0IHdlaXJkIHRoYXQgd2UNCj4gaGF2ZSB0aGUgc2FtZSBu YW1lIGZvciBkaWZmZXJlbnQga2luZHMgb2Ygc3ltYm9scyBleGVjdXRpb25fY29udGV4dCBhbmQN Cj4gRXhlY3V0aW9uQ29udGV4dCB3aGVyZSB0aGUgZGlzdGluY3Rpb24gaXMgb25seSB0aGUgY2Fz aW5nLiBUaGlzIHNlZW1zIGxpa2UNCj4gYSBzbWVsbCB0byBtZS4NCj4gLSBUaGUgZXhlY3V0b3Ig Y29uY2VwdCBkb2VzbuKAmXQgZW5mb3JjZSB0aGF0IGNlLmNvbnRleHQoKSByZXR1cm5zIGEgcmVh bA0KPiBjb250ZXh0Lg0KPiAtIFRoZSBleHBvc2l0aW9uIGF0dGVtcHRzIHRvIGRvIHRoZSByb2xl IG9mIHRoZSByZWZlcmVuY2UgYW5kIHJlcGxpY2F0ZSB0aGUNCj4gZnVsbCBjb25jZXB0cyBidXQg aXTigJlzIGRyaWZ0aW5nIGFuZCBvdXQgb2YgZGF0ZS4NCj4gLSBUaGVyZSBhcmUgc2ltcGxlciB3 YXlzIHRvIGV4cHJlc3MgdGhlc2UgcmVxdWlyZXMgY2xhdXNlcyBvZiB0aGUgRXhlY3V0b3INCj4g Y29uY2VwdHMgYmVjYXVzZSB0aGV54oCZcmUganVzdCBhIGNvbmp1bmN0aW9uLg0KPiAtIOKAnEV4 ZWN1dG9ycyBhbmQgRXhlY3V0aW9uIENvbnRleHRz4oCdIG5lZWRzIG11Y2ggYmV0dGVyIGV4YW1w bGVzIGZvcg0KPiBldmVyeXRoaW5nLg0KPiAtIEkgZmluZCB0aGUgY29uY2VwdCBvZiBhbiBleGVj dXRvcl9yZWYgYSBsaXR0bGUgd2VpcmQsIGJlY2F1c2UgSSB0aG91Z2h0DQo+IGV4ZWN1dG9ycyB3 ZXJlIGFscmVhZHkgYWxtb3N0IHNvcnQgb2YgcmVmZXJlbmNlIHR5cGVzIHdpdGhpbiB0aGUgZXhl Y3V0b3INCj4gY29udGV4dC4gVGhlbiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyBtb3JlIGFib3V0 IHR5cGUtZXJhc3VyZSB0aGFuIGFib3V0DQo+IGNyZWF0aW5nIHJlZmVyZW5jZSB0eXBlcywgYnV0 IHRoYXTigJlzIGFub3RoZXIgcHJvYmxlbSBiZWNhdXNlIHdlIGhhdmUNCj4gYWxyZWFkeSBiZWVu IHVzaW5nIFwqXF9yZWYgZm9yIHJlZmVyZW5jZSB0eXBlcyBpbiBib29zdCBsaWJyYXJpZXMsIHN1 Y2ggYXMNCj4gaW4gYm9vc3Q6OnVybHM6OnNlZ21lbnRzX3JlZi4gSSB0aGluayB0aGUgdHlwaWNh bCBuYW1lIHdvdWxkIGJlDQo+IGFueV9leGVjdXRvciBvciBzb21ldGhpbmcgbGlrZSB0aGF0IGJ1 dCBJ4oCZbSBzdXJlIHRoZXkgY29uc2lkZXJlZCB0aGF0IGFuZA0KPiBkaXNjYXJkZWQgdGhlIGlk ZWEgZm9yIHNvbWUgcmVhc29uLg0KPiAtIFRoZSBzZWN0aW9uIOKAnGV4ZWN1dGlvbl9jb250ZXh0 OiBCYXNlIENsYXNz4oCdIGlzIGEgbGl0dGxlIG91dCBvZiBwbGFjZS4gVGhlDQo+IGRvY3VtZW50 YXRpb24gaXMgbGlzdGluZyBleGVjdXRvciBjb250ZXh0cyB0aGUgbGlicmFyeSBwcm92aWRlcywg YW5kIHRoaXMNCj4gc2VjdGlvbiBpcyBpbnRlcmxlYXZlZCB0aGVyZS4gQnV0IHRoaXMgc2VjdGlv biBpcyBhYm91dCB3cml0aW5nIHlvdXIgb3duDQo+IGNvbnRleHRzLiBUaGlzIHNob3VsZCBjb21l IGJlZm9yZSBvciBhZnRlciB0aGUgbGlzdCBvZiBjb250ZXh0cyB0aGF0IGNvbWUNCj4gd2l0aCB0 aGUgbGlicmFyeS4NCj4gLSBTb21lIHBhZ2VzIGFyZSBxdWl0ZSBsb25nLCBhbmQgSSBtaXNzIHRo ZSBUb0Mgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvbg0KPiB0aGUgQW50b3JhIHRlbXBsYXRlLiBF dmVuIGlmIGl0IHdlcmUgb3B0aW9uYWwuDQo+IC0gSSBmb3VuZCB0aGUgcGFnZSBvbiDigJxUaGUg SW9Bd2FpdGFibGUgUHJvdG9jb2zigJ0gYSBsaXR0bGUgY29uZnVzaW5nIGJlY2F1c2UNCj4gdGhl IHByb3BlcnRpZXMgZGVzY3JpYmVkIGhlcmUgZG9u4oCZdCBzZWVtIHNwZWNpZmljIHRvIEkvTy4g VGhlIGNvbmZ1c2lvbg0KPiBzZWVtcyB0byBzdGVtIGZyb20gdGhpcyBhbWJpZ3VvdXMgYW5kIHBh cnRseSByZXRyb2FjdGl2ZWx5IGp1c3RpZmllZA0KPiByZWxhdGlvbnNoaXAgYmV0d2VlbiBDYXB5 IGFuZCBDb3Jvc2lvLiBCdXQgdGhlIGZhY3QgaXMgdGhhdCBhZnRlciByZWFkaW5nDQo+IGFib3V0 IDM1JSBvZiB0aGUgZG9jdW1lbnRhdGlvbiwgdGhlIHJlYWRlciBkb2VzbuKAmXQgb25jZSBzZWUg YW55IG1lbnRpb24gb2YNCj4gSS9PLiBBbmQgbW9zdCBvZiB0aGUgY29udGVudCBpbiB0aGUgZG9j dW1lbnRhdGlvbiBhZnRlciB0aGlzIHBhZ2UgYWxzbw0KPiBkb2VzbuKAmXQgbWVudGlvbiBJL08g YXQgYWxsIHVudGlsIHdlIGdldCB0byB0aGUgbmV4dCBwYXJlbnQgc2VjdGlvbi4gU28sIHRvDQo+ IHRoZSByZWFkZXIsIGl0IHNlZW1zIGxpa2UgdGhlIGxpYnJhcnkgZG9lc27igJl0IGhhdmUgYW55 IHNwZWNpYWwgZW50YW5nbGVtZW50DQo+IHdpdGggSS9PLCBhbHRob3VnaCBpdCBtaWdodCBzdXBw b3J0IGl0LCBhbmQgdGhlbiB0aGUgcmVhZGVyIGhhcyB0bw0KPiBjb21wbGV0ZWx5IGNoYW5nZSB3 aGF0IHRoZXkgYXJlIHN1cHBvc2VkIHRvIGV4cGVjdCBhZnRlciBoYXZpbmcgYmVlbg0KPiByZWFk aW5nIHRoZSBkb2N1bWVudGF0aW9uIGZvciBob3VycyBvciBkYXlzLCBkZXBlbmRpbmcgb24gaG93 IGRlZXBseQ0KPiB0aGV54oCZcmUgcmVhZGluZyBpdC4gV2hhdOKAmXMgZXZlbiBtb3JlIGNvbmZ1 c2luZyBpcyB0aGF0IHRoaXMgcGFnZSBkb2VzbuKAmXQNCj4gbWVudGlvbiBJL08gbXVjaCBhdCBh bGwuIFRoZSBvbmx5IG1lbnRpb24gb2YgSS9PIG9uIHRoaXMgcGFnZSBpcyBpbiBhDQo+IGNvbnRl eHQgdGhhdCByZWV4cGxhaW5zIHRoZSBjb25jZXB0cyBzdXBwb3J0ZWQgYnkgdGhlIHJ1bl9hc3lu YyBmdW5jdGlvbi4NCj4gU28sIGlmIHRoaXMgcGFnZSBjb250ZW50IGlzIGNvbXBsZXRlLCBpdCBz ZWVtcyBsaWtlIHRoZSBjb25jZXB0IGNvdWxkDQo+IHNpbXBseSBub3QgYmUgYXR0YWNoZWQgdG8g SS9PIGJlY2F1c2Ugd2UgYWxzbyBuZWVkIGV4ZWN1dG9ycywgc3RvcCB0b2tlbnMsDQo+IGFuZCBh bGxvY2F0b3JzIGluIG90aGVyIGFwcGxpY2F0aW9ucy4g4oCcQnV0IHJlYWwgSS9PIGNvZGUgbmVl ZHMgbW9yZTrigJ0gY291bGQNCj4ganVzdCBzYXkg4oCcQnV0IHJlYWwgYXBwbGljYXRpb25zIG5l ZWRzIG1vcmU64oCdIGFuZCB0aGUgY29uY2VwdCB3b3VsZCBzdGlsbCBiZQ0KPiBjb3JyZWN0IHdp dGggbm8gbWVudGlvbiB0byBJL08uDQo+IC0gVGhlIHNlY3Rpb24g4oCcVGhlIElvQXdhaXRhYmxl IFByb3RvY29s4oCdIGNvdWxkIGp1c3QgaGF2ZSBleGFtcGxlcyBvZiB0aGUNCj4gZW52aXJvbm1l bnQgYmVpbmcgcHJvcGFnYXRlZCAoaW4gb3RoZXIgd29yZHMsIGl0IGNvdWxkIGp1c3QgZXhwbGFp biBob3cgdG8NCj4gdXNlIGl0KSBiZWZvcmUgZGVzY3JpYmluZyBob3cgaXQgd29ya3MgYW5kIGhv dyB0cnlpbmcgdG8gZHVwbGljYXRlIHRoZQ0KPiByZWZlcmVuY2UuIEluIGZhY3QsIHRoZXNlIGR1 cGxpY2F0ZXMgb2YgdGhlIHJlZmVyZW5jZSBpbiB0aGUgZXhwb3NpdGlvbiBhcmUNCj4gbm90IG9u bHkgdW5oZWxwZnVsIGJ1dCBhbHNvIHByb25lIHRvIGRyaWZ0aW5nIHZlcnkgZWFzaWx5LiBBSSBn aXZlcyB0aGUNCj4gaW1wcmVzc2lvbiB0aGF0IGl04oCZcyBub3cgY2hlYXAgdG8gd3JpdGUsIGJ1 dCB0aGlzIGRvZXNu4oCZdCBpbmNsdWRlIHRoZSBjb3N0DQo+IG9mIG1haW50YWluaW5nIGl0Lg0K PiAtIOKAnEEgY29tcGxldGUgYXdhaXRhYmxlIHN0aWxsIHByb3ZpZGVzIGBhd2FpdF9yZWFkeWAg YW5kIGBhd2FpdF9yZXN1bWVgIHNvDQo+IGl0IGNhbiBiZSBgY29fYXdhaXRgLWVkOyB0aGUgY29u Y2VwdCBzaW1wbHkgZG9lcyBub3QgdGVzdCBmb3IgdGhlbeKAnS4gV2h5DQo+IG5vdCBqdXN0IHRl c3QgZm9yIHRoZW0gc28gdGhlIG5hbWUgbWF0Y2hlcyB0aGUgY2hlY2s/IE9yIHJlbmFtZSBpdCBz byBpdA0KPiBhbHNvIG1hdGNoZXM/DQo+IC0gVGhpcyB3aG9sZSBwYWdlIG9uIFRoZSBJb0F3YWl0 YWJsZSBQcm90b2NvbCBpcyB2ZXJ5IHRpcmluZy4gSXTigJlzIGZ1bGwgb2YNCj4gaW1wbGVtZW50 YXRpb24gZGV0YWlscywgdGhlbiBhIGN1c3RvbSBjbGFzcywgYnV0IG5vdCBhIHNpbmdsZSBleGFt cGxlIG9mIGENCj4gdGFzayBydW5uaW5nIGFuZCBiZW5lZml0aW5nIGZyb20gYW55IG9mIHRoaXMu IFdpdGhvdXQgYW4gZXhhbXBsZSwgaXTigJlzIGhhcmQNCj4gdG8gZXhwbGFpbiBpbiB3aGF0IGNv bnRleHQgZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgd291bGQgYmUgY2FsbGVkLiBJIHRoaW5rDQo+ IHRoaXMgY3JpdGljaXNtIGFwcGxpZXMgdG8gYWxtb3N0IGV2ZXJ5dGhpbmcgaW4gdGhlIGRvY3Vt ZW50YXRpb24sIHNvIEnigJlsbA0KPiB0cnkgdG8gc3RvcCByZXBlYXRpbmcgbXlzZWxmLg0KPiAt IFRoZSBkb2N1bWVudGF0aW9uIGhhcyBnb29kIGV4YW1wbGUgc25pcHBldHMgdGhhdCBleHBsYWlu IGhvdyB0byB1c2UNCj4gd2VsbC1rbm93biBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIFNUTCAobGlr ZSBzdGQ6OnN0b3BfdG9rZW4pLCBidXQgaXQNCj4gZG9lc27igJl0IGhhdmUgZXhhbXBsZXMgb2Yg dGhlIHNhbWUgbGV2ZWwgb2YgcXVhbGl0eSBmb3IgdGhlIGxpYnJhcnnigJlzIG93bg0KPiB1dGls aXRpZXMuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgYmVjYXVzZSBBSSBpcyBhbHJlYWR5 IHRyYWluZWQgb24NCj4gZXhpc3RpbmcgdGhpbmdzLCBzbyBpdCBjb3VsZCBjcmVhdGUgZ29vZCBj b250ZW50IGZvciBleGlzdGluZyBjb25jZXB0cyBhbmQNCj4gZGlkbuKAmXQgZ2VuZXJhdGUgY29u dGVudCBhcyBuaWNlIGZvciB0aGUgbmV3IGNvbmNlcHRzLiBGb3IgaW5zdGFuY2UsIHRoZQ0KPiBl eGFtcGxlcyBmb3Igc3RkOjpzdG9wX3Rva2VuIGV4ZW1wbGlmeSBzdGQ6OnN0b3BfdG9rZW4gd2l0 aG91dCBjb3JvdXRpbmVzDQo+IHVudGlsIG11Y2ggbGF0ZXIuIE11Y2ggb2YgdGhpcyDigJxQYXJ0 4oCdIG9mIHRoZSBwYWdlIGNvdWxkIGJlIGluIHRoZSBpbml0aWFsDQo+IHR1dG9yaWFscy4NCj4g LSDigJxTdG9wIFRva2VucyBhbmQgQ2FuY2VsbGF0aW9u4oCdIGNvbnRhaW5zIGEgbGFyZ2UgaGVh ZGluZyBjYWxsZWQg4oCcUGFydCA04oCdDQo+IGFuZCBpdOKAmXMgYSBzaW5nbGUgcGFyYWdyYXBo LiBUaGlzIGRvZXNu4oCZdCBtYWtlIG11Y2ggc2Vuc2UuIElmIGl04oCZcyBqdXN0IGENCj4gc21h bGwgZGV0YWlsLCB0aGVyZeKAmXMgbm8gcmVhc29uIHRvIGNhbGwgaXQgYSDigJxQYXJ04oCdIGFu ZCBtYWtlIGEgYmlnIGRlYWwNCj4gYWJvdXQgaXQuIFRvIGJlIGhvbmVzdCwgSSBkb27igJl0IHNl ZSB3aGF04oCZcyBzcGVjaWFsIGFib3V0IHRoaXMgcGFnZSB0byBtYWtlDQo+IGl0IGRlc2VydmUg ZXhwbGljaXQg4oCcUGFydOKAnXMgaW5zdGVhZCBvZiByZWd1bGFyIGhlYWRpbmdzLg0KPiAtIEZv ciB3aGVuX2FsbCBhbmQgd2hlbl9hbnksIGl04oCZcyBub3QgY2xlYXIgdG8gbWUgZnJvbSB0aGUg ZXhhbXBsZXMgaG93IHRvDQo+IGNvbW11bmljYXRlIG5vbi1leGNlcHRpb25hbCBzdWNjZXNzL2Zh aWx1cmUgYW5kIHdoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoDQo+IHN0b3AgdG9rZW5zIGlzIChp ZiBhbnkpIGZvciB0aGUgYXNzdW1wdGlvbnMgYWJvdXQgc3VjY2VzcyBhbmQgZmFpbHVyZSBzbw0K PiB0aGF0IG90aGVyIHRhc2tzIGNhbiBiZSBjYW5jZWxlZCBhY2NvcmRpbmdseS4NCj4gLSBGb3Ig d2hlbl9hbGwgYW5kIHdoZW5fYW55LCBJIHRob3VnaHQgdGhlIHR5cGljYWwgdHlwZSB0byByZXBy ZXNlbnQgYQ0KPiByZWd1bGFyIHZvaWQgd291bGQgYmUgc3RkOjptb25vc3RhdGUgcmF0aGVyIHRo YW4gdHVwbGUmbHQ7Jmd0Oy4NCj4gLSBUaGUgc2VjdGlvbiBleHBsYWluaW5nIHdoZW5fYW55IGNh c3VhbGx5IG1lbnRpb25zIGlvX3Rhc2sgd2l0aG91dCBhbnkNCj4gcHJldmlvdXMgZXhwbGFuYXRp b24gYW5kIEkgc3VzcGVjdCB0aGUgc2VudGVuY2UgaXMgbm90IGV2ZW4gY29ycmVjdCB0aGF0DQo+ IHRoaXMgaXMgcmVxdWlyZWQgYWJvdXQgdGhlIGNoaWxkcmVuLg0KPiAtIEFzIHVzdWFsLCB0aGUg RnJhbWUgQWxsb2NhdG9ycyBwYWdlIGNvdWxkIHN0YXJ0IHdpdGggdGhlIOKAnFVzaW5nIEN1c3Rv bQ0KPiBFeGFtcGxlc+KAnSBhbmQgdXNlIHRoYXQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBs YXRlciBkaXNjdXNzaW5nIHRoZQ0KPiBpbnRlcm5hbCBkZXRhaWxzLg0KPiAtIEluIHRoZSBleGFt cGxlIGZvciDigJxTY29wZSBWYXJpYWJsZXMgdG8gUmVkdWNlIEZyYW1lIFNpemXigJ0sIEkgY291 bGRu4oCZdA0KPiBmaW5kIHdoZXJlIHJlcGx5IGNvbWVzIGZyb20uIFRoaXMgc2VlbXMgaW1wb3J0 YW50IHRvIG1ha2UgdGhlIGNvZGUNCj4gcmVwcmVzZW50YXRpdmUgb2Ygc29tZXRoaW5nIHRoYXQg bmVlZHMgdGhlIGJ1ZmZlci4NCj4gLSDigJx0aGUgY29tcGlsZXIgY2FuIHJldXNlIHRoZSBzYW1l IGZyYW1lIG1lbW9yeSBmb3IgYm90aCDigJQgZXZlbiBvbiBDbGFuZ+KAnToNCj4gd2hhdCBkb2Vz IOKAnGV2ZW4gb24gQ2xhbmfigJ0gbWVhbiBoZXJlPw0KPiAtIEkgZmluZCB0aGUgZGlzY3Vzc2lv biBhYm91dCB2YXJpYWJsZSBzY29wZXMgYSBsaXR0bGUgb3V0IG9mIHBsYWNlIGhlcmUuDQo+IEl0 4oCZcyBhIGRpZGFjdGljIGN1cmlvc2l0eSBhbmQgaXTigJlzIGludGVyZXN0aW5nLiBCdXQgaXTi gJlzIG5vdCBhYm91dCB3aGF0IHRoZQ0KPiBsaWJyYXJ5IHByb3ZpZGVzIGFuZCBpcyBub3QgbmVj ZXNzYXJ5IHRvIGFueSBsaWJyYXJ5IGNvbmNlcHQgYWJvdXQgdG8gYmUNCj4gZXhwbGFpbmVkIGFm dGVyIGl0LiBUaGUgc3RhdGVtZW50cyBhbHNvIHNlZW0gdG9vIGNpcmN1bXN0YW50aWFsLg0KPiAt IEluZm9ybWF0aW9uIHN1Y2ggYXMg4oCcR0NDIHZzIENsYW5nIEZyYW1lIFNpemVz4oCdIGlzIGlu dGVyZXN0aW5nIGJ1dCBjb3VsZA0KPiBiZSBpbiBhZG1vbml0aW9ucy4gSXQgd291bGQgZ2l2ZSB0 aGUgdGV4dCBiZXR0ZXIgdmlzdWFsIHN0cnVjdHVyZSwgd2hpY2ggaXMNCj4gbWlzc2luZywgYW5k IG9yaWVudCB0aGUgcmVhZGVyIGEgbGl0dGxlIGJldHRlci4NCj4gLSBUaGUgZXhwbGFuYXRpb24g aW4g4oCcTGFtYmRhIENvcm91dGluZSBDYXB0dXJlc+KAnSDihpIg4oCcV2h5IEl0IEZhaWxz4oCd IGhhcyBsb3RzDQo+IG9mIHN0ZXBzIHVucmVsYXRlZCB0byB0aGUgcHJvYmxlbS4gSXQgc2VlbXMg bGlrZSBzdGVwIDYgaXMgcmVsYXRlZCB0byB0aGUNCj4gdHdvLXN0ZXAgcGF0dGVybiBJIGhvcGUg dGhlcmXigJlzIGEgZml4IGZvciBhbmQgYXQgbGVhc3QgYW4gYWx0ZXJuYXRpdmUNCj4gc29sdXRp b24gdGhhdCBibG9ja3MgdGhpbmdzIGFzIGV4cGVjdGVkIGV2ZW4gaWYgdGhlIGRlc2lyZWQgb3B0 aW1pemF0aW9ucw0KPiBoYXZlIHRvIGJlIGRpc2FibGVkLiBUaGUgZXhwbGFuYXRpb24gYWxzbyBi ZWdzIHRoZSBxdWVzdGlvbiBiZWNhdXNlIGl0DQo+IGRvZXNu4oCZdCByZWFsbHkgZXhwbGFpbiB3 aHkgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBvdXRlciBtb3ZlZC1mcm9tIGltcGxpZXMNCj4gdGhl IGludmFsaWRhdGlvbiBvZiB0aGUgaW5uZXIgbW92ZWQtdG8gdGFzay4gSSB0aGluayBhbm90aGVy IHByb2JsZW0gaGVyZQ0KPiBpcyB0aGUgc2VjdGlvbiDigJxUaGUgUHJvYmxlbeKAnSBpcyBhbHNv IHVzaW5nIGFuIGV4YW1wbGUgdGhhdOKAmXMgSUlGRSwgYnV0DQo+IGJlY2F1c2UgdGhpcyBjb25j ZXB0IGlzIG9ubHkgcHJlc2VudGVkIGxhdGVyLCB0aGUgY2FsbCBpcyBvbmx5IGAoKWAsIGFuZA0K PiB0aGUgdGFzayB2YXJpYWJsZSB1c2VzIGBhdXRvYCwgaXTigJlzIHZlcnkgZWFzeSB0byBtaXNz IGFuZCBhdCBmaXJzdCBnbGFuY2UNCj4gdGhpbmsgdGhhdCBgdGFza2AgcmVwcmVzZW50cyB0aGUg bGFtYmRhIHJhdGhlciB0aGFuIHRoZSByZXN1bHQgb2YgdGhlDQo+IGludm9jYXRpb24uDQo+IC0g SSB0aG91Z2h0IGNhcHk6OnRlc3Q6OnJ1bl9ibG9ja2luZyB3b3VsZCBiZSBhdmFpbGFibGUgZnJv bSBjYXB5OjogZXZlbiBpZg0KPiB3aXRoIGFub3RoZXIgbmFtZS4gSXQgc2VlbXMgbGlrZSBzb21l dGhpbmcgcGVvcGxlIGRvIG9mdGVuLg0KPiAtIFRoZSDigJxRdWljayBSZWZlcmVuY2XigJ0gZm9y ICJMYW1iZGEgQ29yb3V0aW5lIENhcHR1cmVz4oCdIHNob3VsZCBoYXZlIHRoZQ0KPiBzYWZlIHBh dHRlcm5zIGZpcnN0IGFuZCB0aGUgdW5zYWZlIG9uZXMgbGF0ZXIuDQo+IC0gVGhlIHNlY3Rpb24g IlNjYXR0ZXIvR2F0aGVyIEkvT+KAnSBzYXlzIHRoZSBvbmx5IGFsdGVybmF0aXZlIGlzIHRvIGNy ZWF0ZQ0KPiBjb3BpZXMsIGJ1dCB0aGUgbW9zdCBvYnZpb3VzIGFsdGVybmF0aXZlIHRvIG1lIGlz IHRvIGNhbGwgdGhlIGZ1bmN0aW9uDQo+IHR3aWNlLiBJdOKAmXMgc3RpbGwgbm90IGdyZWF0LCBi dXQgaXTigJlzIG5vdCB0aGUgc2FtZS4NCj4gLSBJIGRvbuKAmXQga25vdyBob3cgb3RoZXIgcGVv cGxlIGZlZWwgYWJvdXQgdGhpcywgYnV0IOKAnFRoZSBTcGFuIFJlZmxleCBmb3INCj4gTXVsdGlw bGUgQnVmZmVyc+KAnSBkaWRu4oCZdCBvY2N1ciB0byBtZSBhdCBhbGwuDQo+IC0gVGhlIHNlY3Rp b24g4oCcU1RMIFBhcmFsbGVs4oCdIHNlZW1zIHRvIGJlIGNsYWltaW5nIHRvbyBtdWNoLiBFc3Bl Y2lhbGx5IHdoZW4NCj4gdGhlIGFsZ29yaXRobSBleHBlY3RzIGEgcmFuZ2UgcmF0aGVyIHRoYW4g aXRlcmF0b3JzLg0KPiAtIFRoZSBzZWN0aW9uIOKAnFdoeSBOb3Qgc3RkOjpieXRlP+KAnSBpcyBl bGltaW5hdGluZyBhIHBvc3NpYmlsaXR5IHRoYXQgc2hvdWxkDQo+IGJlIGVsaW1pbmF0ZWQgcmln aHQgYXQgdGhlIGJlZ2lubmluZy4gQW5kIHRoZSBwYWdlIGlzIGxhY2tpbmcgZXhhbXBsZXMsDQo+ IGVzcGVjaWFsbHkgZm9yIHRoaW5ncyBsaWtlIOKAnENhcHkgcHJvdmlkZXMgYGNvbnN0X2J1ZmZl cmAgYW5kDQo+IGBtdXRhYmxlX2J1ZmZlcmAgYXMgc2VtYW50aWNhbGx5IG5ldXRyYWwgYnVmZmVy IHR5cGVzLiBUaGV5IGhhdmUga25vd24NCj4gbGF5b3V0IGNvbXBhdGlibGUgd2l0aCBPUyBzdHJ1 Y3R1cmVzIChgaW92ZWNgLCBgV1NBQlVGYCkgd2l0aG91dCBpbXBvc2luZw0KPiBgc3RkOjpieXRl YCBzZW1hbnRpY3PigJ0uIFRoZXJlIGFyZSBubyBleGFtcGxlcyB1c2luZyB0aGVzZSB0eXBlcy4g SW4gYW55DQo+IGNhc2UsIHRoaXMgaXMgYW5vdGhlciBpbnRlcmxlYXZlZCBkZXNpZ24gcmF0aW9u YWxlIHBhZ2Ugd2hvc2UgY29udGVudCBjb3VsZA0KPiBiZSBpbnRlcmxlYXZlZCB3aXRoIGxpYnJh cnkgY29udGVudCBhcyBhZG1vbml0aW9ucy4NCj4gLSBUaGUgZXhwbGFuYXRpb24gaW4g4oCcV2h5 IE5vdCBzdGQ6OmJ5dGU/4oCdIGlzIGNvbnRyYWRpY3RvcnkuIFRoZSBjbGFpbSBpcw0KPiB0aGF0 IHN0ZDo6Ynl0ZSBzYXlzICJ0aGlzIGlzIHJhdyBieXRlc+KAnS4gQnV0IHRoZSBkZXNjcmlwdGlv biBmb3Igdm9pZFwqDQo+IHRoYXQg4oCcVGhlIE9TIGRvZXNu4oCZdCBjYXJlIGlmIHRoZSBieXRl cyByZXByZXNlbnQgdGV4dCwgaW50ZWdlcnMsIG9yDQo+IGNvbXByZXNzZWQgZGF0YeKAnSB1c2lu ZyB0aGUgd29yZCBieXRlcyBhZ2FpbiBpcywgaW4gcHJhY3RpY2UsIGNsYWltaW5nDQo+IHZvaWRc KiBhbHNvIHNheXMgInRoaXMgaXMgcmF3IGJ5dGVz4oCdLiBUaGUgd29yZCDigJxieXRlc+KAnSBp cyBsaXRlcmFsbHkgdGhhdCwNCj4gYW5kIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgb3BhcXVlIHJl cHJlc2VudGF0aW9ucyBmb3Igb3RoZXIgdGhpbmdzIGlzDQo+IGxpdGVyYWxseSB0aGUgZGVmaW5p dGlvbiBvZiDigJxyYXfigJ0gaW4gdGhpcyBjb250ZXh0LiBJdOKAmXMgYmFzaWNhbGx5IHNheWlu Zw0KPiB0aGUgc2FtZSB0aGluZyBhYm91dCBzdGQ6OmJ5dGUgYW5kIHZvaWRcKiwgYW5kIHVzaW5n IHRoYXQgdG8ganVzdGlmeQ0KPiB2b2lkXCouIEnigJltIG5vdCBzYXlpbmcgc3RkOjpieXRlIGlz IHRoZSByaWdodCBjaG9pY2UuIE9ubHkgdGhhdCB0aGlzDQo+IGp1c3RpZmljYXRpb24gaXMgbm90 IHRoZSBiZXN0IG9uZS4gQWxzbywgc2VjdGlvbiBTeXN0ZW0gSS9PIEludGVncmF0aW9uDQo+IGRl c2NyaWJlcyB0aGF0IENIQVIgaXMgdXNlZCBpbnRlcm5hbGx5IG9uIHdpbmRvd3MuDQo+IC0gVGhl IOKAnEJ1ZmZlciBTZXF1ZW5jZXPigJ0gcGFnZSBhbmQgaXRzIGNvbnRlbnRzIGFyZSBhcnJpdmlu ZyBhIGxpdHRsZSB0b28NCj4gbGF0ZS4gVGhlIHByZXZpb3VzIHBhZ2VzIGFsbCBkaXNjdXNzIGJ1 ZmZlciBzZW50ZW5jZXMgZXZlbiBtb3JlIHRoYXQgYnVmZmVyDQo+IHR5cGVzLg0KPiAtIFRoZSBl eGFtcGxlIGZvciDigJxidWZmZXJfc2xpY2XigJ0gZG9lc27igJl0IHNlZW0gZ3JlYXQgYmVjYXVz ZSBJIGhhdmUgdGhlDQo+IGltcHJlc3Npb24geW91IGNvdWxkIHByb2JhYmx5IGRvIHRoZSBzYW1l IHRoaW5nIHdpdGhvdXQgdGhlIGJ1ZmZlcl9zbGljZS4NCj4gVGhlIGV4YW1wbGUgdXNlcyB0aGUg Zmlyc3QgcGFyYW1ldGVyLCBidXQgdGhlIGV4cGxhbmF0aW9uIHVzZXMgMw0KPiBwYXJhbWV0ZXJz Lg0KPiAtIEkgZmluZCB0aGUgbmFtZSBvZiB0aGUgYnVmZmVyX2xlbmd0aCBmdW5jdGlvbiBhIGxp dHRsZSBjb25mdXNpbmcuIFRoZQ0KPiBpbnB1dCBpcyBhIHNlcXVlbmNlIHJhdGhlciB0aGFuIGEg YnVmZmVyIChidWZmZXIgaXMgYSBjYXNlIG9mIGJ1ZmZlcg0KPiBzZXF1ZW5jZSBieSB0aGUgb3Ro ZXIgY29uY2VwdCBidXQgdGhpcyBpcyB0aGUgaW52ZXJzZSByZWxhdGlvbnNoaXApIGFuZCB0aGUN Cj4gbmFtZSBwbHVzIGl0cyB2ZXJ5IGV4aXN0YW5jZSBtYWtlcyBpdCBzZWVtIGxpa2UgaXQgZG9l cyBzb21ldGhpbmcgbW9yZQ0KPiBzcGVjaWFsICh0aGUgYnl0ZXMpIHRoYW4ganVzdCByZXR1cm5p bmcgc29tZXRoaW5nIGxpa2UgdGhlDQo+IOKAnHN0ZDo6cmFuZ2VzOjpzaXpl4oCdLiDigJxidWZm ZXJfc2l6ZeKAnSBtZWFzdXJpbmcgYnl0ZXMgbWFrZXMgYWxsIG9mIHRoYXQgMTB4DQo+IG1vcmUg Y29uZnVzaW5nLiBVbmxlc3MgeW914oCZcmUgdXNpbmcgdGhlIGxpYnJhcnkgKG9yIHRoZSBvbmUg dGhpcyBwYXR0ZXJuDQo+IGNhbWUgZnJvbSkgdG9vIG9mdGVuLCBldmVyeW9uZSB3aWxsIGJlIGxv b2tpbmcgYXQgdGhlIGRvY3VtZW50YXRpb24gZXZlcnkNCj4gdGltZSB0aGV5IG5lZWQgdGhpcyBv cGVyYXRpb24uDQo+IC0g4oCcQ2FweeKAmXMgQ29yb3NpbyBsaWJyYXJ5IGV4cG9zZXMgdGhlc2Ug b3B0aW1pemF0aW9ucyB3aGVyZSBhdmFpbGFibGXigJ06DQo+IGhvdz8NCj4gLSDigJxEeW5hbWlj IEJ1ZmZlcnPigJ0gaXMgb25jZSBhZ2FpbiByZXBsaWNhdGluZyB0aGUgQVBJIGV4YXVzdGl2ZWx5 IGluc3RlYWQNCj4gb2YgcHJvdmlkaW5nIGV4YW1wbGVzIGFuZCBhbiBleHBsYW5hdGlvbi4NCg0K DQpJIHdhbnRlZCB0byBzaGFyZSB0aGF0IEkgYWdyZWUgd2l0aCBhIG51bWJlciBvZiBBbGFuJ3Mg b2JzZXJ2YXRpb25zIGFuZCBoZQ0KZXhwcmVzc2VkIGl0IGJldHRlciB0aGFuIEkgZXZlciBjb3Vs ZC4NCg0KMS4gVGhlIHN1Ym1pc3Npb24gaXMgdG9vIGJpZyB0byBiZSBwcm9wZXJseSByZXZpZXdl ZCBpbiB0aHJlZSB3ZWVrcyBieQ0KcGVvcGxlIGhhdmluZyB0aGVpciBkYWlseSBqb2JzIGFuZCBw cml2YXRlIGxpZmUuDQoyLiBUaGUgZG9jdW1lbnRhdGlvbiBvZiBDYXB5IChkaWRuJ3QgZXZlbiBo YXZlIHRpbWUgdG8gc3RhcnQgQ29yb3NpbykgZ2l2ZXMNCmFuIGFwcGVhcmFuY2Ugb2YgYmVpbmcg Y29tcGxldGUgYW5kIGJyb2FkLCBidXQgYWZ0ZXIgcmVhZGluZyBpdCBhbGwgSSBkbw0Kbm90IGhh dmUgYW4gaW1wcmVzc2lvbiB0aGF0IEkgYWN0dWFsbHkgbGVhcm5lZCBpdC4NCjMuIEEgbG90IG9m IGR1cGxpY2F0aW9uIG9mIG1hdGVyaWFsIGJldHdlZW4gdGhlIHByb3NlIHNlY3Rpb24gYW5kIHRo ZQ0KcmVmZXJlbmNlIHNlY3Rpb24sIGFuZCB0aGV5IGRpdmVyZ2UuIEZvciBpbnN0YW5jZSB0aGUg Y29uY2VwdCBkZWZpbml0aW9ucy4NCg0KSSBhbHNvIHdhbnRlZCB0byBjb21tdW5pY2F0ZSB0aGF0 IEkgaGF2ZSByZWNlbnRseSBzdGFydGVkIHRoZSB3b3JrIG9uDQppbXByb3ZpbmcgdGhlIGRvY3Vt ZW50YXRpb24gZm9yIENhcHksIG1vc3RseSB0aGUgUmVmZXJlbmNlIHNlY3Rpb24gYnV0IGl0DQp3 aWxsIG5hdHVyYWxseSBpbXBseSBjaGFuZ2luZyBhbHNvIHRoZSBwcm9zZSBwYXJ0LiBUaGlzIGlz IG15IGV4Y2x1c2l2ZQ0KYXNzaWdubWVudCwgc28gdGhlcmUgaXMgbm8gcmlzayB0aGF0IHdvcmtp bmcgb24gaW1wbGVtZW50YXRpb24gZGV0YWlscyBjYW4NCnN0YXJ2ZSB0aGUgd29yayBvbiBkb2N1 bWVudGF0aW9uLg0KDQpJIHVzdWFsbHkgdGVuZCB0byByZWNvbW1lbmQgdGhlIHJlamVjdGlvbiBv ZiBsaWJyYXJpZXMgaW4gQm9vc3QgUmV2aWV3cywNCmZvbGxvd2luZyB0aGUgcmVhc29uaW5nICJm aXJzdCBwb2xpc2ggdGhlIGxpYnJhcnksIHRoZW4gd2Ugd2lsbCBkZWNpZGUiLCBvcg0KIkkgd2Fu dCB0byBhc3Nlc3MgdGhlIGZpbmFsIHByb2R1Y3QgcmF0aGVyIHRoYW4gYSAoc291bmQpIHByb21p c2UiLiBCdXQgSQ0KYW0gYWx3YXlzIG91dHZvdGVkLiBCb29zdCBSZXZpZXdzIGdyYXZpdGF0ZSB0 b3dhcmRzIGp1c3QgYWNjZXB0aW5nIGFueXRoaW5nDQp0aGF0ICJsb29rcyBwcm9taXNpbmciLiBJ biB0aGF0IHZlaW4sIEkgd291bGQgYmUgbW9yZSBjb21mb3J0YWJsZSBub3QNCmdpdmluZyBhbiAi YWNjZXB0IiB2ZXJkaWN0IGp1c3QgeWV0LiBJbnN0ZWFkLCBnaXZlIGVuY291cmFnZW1lbnQgYW5k DQpzdXBwb3J0LCBhbmQgcmVjb252ZW5lIHdoZW4gdGhlIHJlcG9ydGVkIGNvbmNlcm5zIChzb21l IHJlc3VsdGluZyBmcm9tIGJhZA0KY29tbXVuaWNhdGlvbiAoYWxzbyBpbiB0aGUgZG9jdW1lbnRh dGlvbikpIGhhdmUgYmVlbiBhZGRyZXNzZWQuDQoNClRoZSBvbmx5IHRoaW5nIHRoYXQgbWFrZXMg bWUgaGVzaXRhdGUgaXMgdGhhdCB3ZSBkaWRuJ3QgZG8gdGhhdCBmb3Igb3RoZXINCmxpYnJhcmll cyBpbiByZWNlbnQgaGlzdG9yeS4gSSB0aGluayB3ZSBoYXZlIHJlY2VudGx5IGxvd2VyZWQgdGhl IGJhciBmb3INCkJvb3N0IHN1Ym1pc3Npb25zIGFjY2VwdGFuY2UuDQoNClJlZ2FyZHMsDQomcnpl ajsNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkJvb3N0 IG1haWxpbmcgbGlzdCAtLSBib29zdEBsaXN0cy5ib29zdC5vcmcKVG8gdW5zdWJzY3JpYmUgc2Vu ZCBhbiBlbWFpbCB0byBib29zdC1sZWF2ZUBsaXN0cy5ib29zdC5vcmcKaHR0cHM6Ly9saXN0cy5i b29zdC5vcmcvbWFpbG1hbjMvbGlzdHMvYm9vc3QubGlzdHMuYm9vc3Qub3JnLwpBcmNoaXZlZCBh dDogaHR0cHM6Ly9saXN0cy5ib29zdC5vcmcvYXJjaGl2ZXMvbGlzdC9ib29zdEBsaXN0cy5ib29z dC5vcmcvbWVzc2FnZS9ONE1ORFhMVk40WDVBSUQ0R1BXMjNBQUNFNE1XNVFDVy8gCg==