From mboxrd@z Thu Jan 1 00:00:00 1970 From: "James (Fei) Liu-SSI" Subject: RE: K/V store optimization Date: Wed, 6 May 2015 17:35:01 +0000 Message-ID: <99767EA2E27DD44DB4E9F9B9ACA458C03B313655@SSIEXCH-MB3.ssi.samsung.com> References: <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD84052@SACMBXIP01.sdcorp.global.sandisk.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD84086@SACMBXIP01.sdcorp.global.sandisk.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD8431B@SACMBXIP01.sdcorp.global.sandisk.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD84485@SACMBXIP01.sdcorp.global.sandisk.com> <6F3FA899187F0043BA1827A69DA2F7CC021EC488@shsmsx102.ccr.corp.intel.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD86BE5@SACMBXIP01.sdcorp.global.sandisk.com> <6F3FA899187F0043BA1827A69DA2F7CC021ECC41@shsmsx102.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.ssi.samsung.com ([207.140.43.206]:43076 "EHLO mx2.ssi.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750965AbbEFRrx (ORCPT ); Wed, 6 May 2015 13:47:53 -0400 In-Reply-To: <6F3FA899187F0043BA1827A69DA2F7CC021ECC41@shsmsx102.ccr.corp.intel.com> Content-Language: en-US Sender: ceph-devel-owner@vger.kernel.org List-ID: To: "Chen, Xiaoxi" , Haomai Wang , Somnath Roy Cc: Varada Kari , ceph-devel SU1ITywgSXQgd291bGQgYmUgZ3JlYXQgdG8gbm90IG9ubHkgZGVmaW5lZCB0aGUgS1YgaW50ZXJm YWNlcyAgYnV0IGFsc28gc3BlYyBvZiB3aGF0IEtWREIgb2ZmZXJpbmdzIHRvIEtWU3RvcmUgb2Yg T1NELiBJdCB3aWxsIHJlbW92ZSBsb3RzIG9mIHVubmVjZXNzYXJ5IGNvbmZ1c2lvbnMuDQoNClJl Z2FyZHMsDQpKYW1lcw0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogY2VwaC1k ZXZlbC1vd25lckB2Z2VyLmtlcm5lbC5vcmcgW21haWx0bzpjZXBoLWRldmVsLW93bmVyQHZnZXIu a2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIENoZW4sIFhpYW94aQ0KU2VudDogVHVlc2RheSwgTWF5 IDA1LCAyMDE1IDEwOjA5IFBNDQpUbzogSGFvbWFpIFdhbmc7IFNvbW5hdGggUm95DQpDYzogVmFy YWRhIEthcmk7IGNlcGgtZGV2ZWwNClN1YmplY3Q6IFJFOiBLL1Ygc3RvcmUgb3B0aW1pemF0aW9u DQoNCkRvIHdlIHJlYWxseSBuZWVkIHRvIGRvIHN0cmlwcGluZyBpbiBLVlN0b3JlPyBNYXliZSBi YWNrZW5kIGNhbiBoYW5kbGUgdGhhdCBwcm9wZXJseS4NClRoZSBxdWVzdGlvbiBpcywgYWdhaW4s IHRoZXJlIGFyZSB0b28gbWFueSBLViBEQiBhcm91bmQoaWYgaW5jbHVkZWQgSFcgdmVuZG9yIHNw ZWNpZmljIERCKSwgd2l0aCBkaWZmZXJlbnQgZmVhdHVyZSBhbmQgZmF2b3IsIGhvdyB0byBkbyB0 aGUgZ2VuZXJpYyBpbnRlcmZhY2UgdHJhbnNsYXRpb24gaXMgYSBjaGFsbGVuZ2UgZm9yIHVzLg0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEhhb21haSBXYW5nIFttYWls dG86aGFvbWFpd2FuZ0BnbWFpbC5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDYsIDIwMTUg MTowMCBQTQ0KPiBUbzogU29tbmF0aCBSb3kNCj4gQ2M6IENoZW4sIFhpYW94aTsgVmFyYWRhIEth cmk7IGNlcGgtZGV2ZWwNCj4gU3ViamVjdDogUmU6IEsvViBzdG9yZSBvcHRpbWl6YXRpb24NCj4g DQo+IEFncmVlZCwgSSB0aGluayBrdnN0b3JlIGlzIGFpbWVkIHRvIHByb3ZpZGVkIHdpdGggYSBs aWdodHdlaWdodCANCj4gb2JqZWN0c3RvcmUgaW50ZXJmYWNlIHRvIGt2IGludGVyZmFjZSB0cmFu c2xhdGlvbi4gVGhlIGV4dHJhICJiaXRzIg0KPiBmaWVsZCBtYWludGFpbiBpcyBhIGxvYWQgZm9y IHBvd2VyZnVsIGtleXZhbHVlZGIgYmFja2VuZC4gV2UgbmVlZCB0byANCj4gY29uc2lkZXIgZnVs bHkgcmVseSB0byBiYWNrZW5kIGltcGxlbWVudGF0aW9uIGFuZCB0cnVzdCBpdC4NCj4gDQo+IE9u IFdlZCwgTWF5IDYsIDIwMTUgYXQgMzozOSBBTSwgU29tbmF0aCBSb3kgPFNvbW5hdGguUm95QHNh bmRpc2suY29tPg0KPiB3cm90ZToNCj4gPiBIaSBYaWFveGksDQo+ID4gVGhhbmtzIGZvciB5b3Vy IGlucHV0Lg0KPiA+IEkgZ3Vlc3MgSWYgdGhlIGRiIHlvdSBhcmUgcGxhbm5pbmcgdG8gaW50ZWdy YXRlIGlzIG5vdCBoYXZpbmcgYW4gDQo+ID4gZWZmaWNpZW50DQo+IGl0ZXJhdG9yIG9yIHJhbmdl IHF1ZXJ5IGltcGxlbWVudGF0aW9uLCBwZXJmb3JtYW5jZSBjb3VsZCBnbyB3cm9uZyBpbiANCj4g bWFueSBwYXJ0cyBvZiBwcmVzZW50IGsvdiBzdG9yZSBpdHNlbGYuDQo+ID4gSWYgeW91IGFyZSBz YXlpbmcgbGV2ZWxkYi9yb2Nrc2RiIHJhbmdlIHF1ZXJ5L2l0ZXJhdG9yIA0KPiA+IGltcGxlbWVu dGF0aW9uIG9mDQo+IHJlYWRpbmcgMTAga2V5cyBhdCBvbmNlIGlzIGxlc3MgZWZmaWNpZW50IHRo YW4gcmVhZGluZyAxMCBrZXlzIA0KPiBzZXBhcmF0ZWx5IGJ5IDEwIEdldHMgKEkgZG91YnQgc28h KSAsIHllcywgdGhpcyBtYXkgZGVncmFkZSANCj4gcGVyZm9ybWFuY2UgaW4gdGhlIHNjaGVtZSBJ IG1lbnRpb25lZC4gQnV0LCB0aGlzIGlzIHJlYWxseSBhbiANCj4gaW5lZmZpY2llbmN5IGluIHRo ZSBEQiBhbmQgbm90aGluZyBpbiB0aGUgaW50ZXJmYWNlLCBpc24ndCBpdCA/IFllcywgDQo+IHdl IGNhbiBpbXBsZW1lbnQgdGhpcyBraW5kIG9mIG9wdGltaXphdGlvbiBpbiB0aGUgc2hpbSBsYXll ciAoZGVyaXZpbmcgDQo+IGZyb20ga3ZkYikgb3Igd3JpdGluZyBhIGJhY2tlbmQgZGVyaXZpbmcg ZnJvbSBvYmplY3RzdG9yZSBhbGwgDQo+IHRvZ2V0aGVyLCBidXQgSSBkb24ndCB0aGluayB0aGF0 J3MgdGhlIGdvYWwuIEsvViBTdG9yZSBsYXllciB3cml0aW5nIA0KPiBhbiBleHRyYSBoZWFkZXIg b2YgfjIwMCBieXRlcyBmb3IgZXZlcnkgdHJhbnNhY3Rpb24gd2lsbCBub3QgaGVscCBpbiANCj4g YW55IGNhc2VzLiBJTUhPLCB3ZSBzaG91bGQgYmUgaW1wbGVtZW50aW5nIEsvVnN0b3JlIGxheWVy IGtlZXBpbmcgaW4gDQo+IG1pbmQgd2hhdCBhbiBlZmZpY2llbnQgay92IGRiIGNhbiBwcm92aWRl IHZhbHVlIHRvIGl0IGFuZCBub3Qgd29ycnlpbmcgYWJvdXQgaG93IGEgYmFkIGRiIGltcGxlbWVu dGF0aW9uIHdvdWxkIHN1ZmZlci4NCj4gPiBSZWdhcmRpbmcgZGIgbWVyZ2UsIEkgZG9uJ3QgdGhp bmsgaXQgaXMgYSBnb29kIGlkZWEgdG8gcmVseSBvbiB0aGF0IA0KPiA+IChhZ2FpbiB0aGlzDQo+ IGlzIGRiIHNwZWNpZmljKSBzcGVjaWFsbHkgd2hlbiB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGlzIGV4 dHJhIHdyaXRlcyANCj4gcHJvYmFibHkgZ2l2aW5nIGF3YXkgc29tZSBSQSBpbiBzb21lIG9mIHRo ZSBkYiBpbXBsZW1lbnRhdGlvbi4NCj4gPg0KPiA+IFJlZ2FyZHMNCj4gPiBTb21uYXRoDQo+ID4N Cj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogQ2hlbiwgWGlh b3hpIFttYWlsdG86eGlhb3hpLmNoZW5AaW50ZWwuY29tXQ0KPiA+IFNlbnQ6IFR1ZXNkYXksIE1h eSAwNSwgMjAxNSAyOjE1IEFNDQo+ID4gVG86IEhhb21haSBXYW5nOyBTb21uYXRoIFJveQ0KPiA+ IENjOiBWYXJhZGEgS2FyaTsgY2VwaC1kZXZlbA0KPiA+IFN1YmplY3Q6IFJFOiBLL1Ygc3RvcmUg b3B0aW1pemF0aW9uDQo+ID4NCj4gPiBIaSBTb21uYXRoDQo+ID4gSSB0aGluayB3ZSBoYXZlIHNl dmVyYWwgcXVlc3Rpb25zIGhlcmUsIGZvciBkaWZmZXJlbnQgREIgYmFja2VuZCANCj4gPiAsdGhl DQo+IGFuc3dlciBtaWdodCBiZSBkaWZmZXJlbnQsIHRoYXQgd2lsbCBiZSBoYXJkIGZvciB1cyB0 byBpbXBsZW1lbnQgYSANCj4gZ2VuZXJhbCBnb29kIEtWU3RvcmUgaW50ZXJmYWNlLi4uDQo+ID4N Cj4gPiAxLiAgV2hldGhlciB0aGUgREIgc3VwcG9ydCByYW5nZSBxdWVyeSAoaS5lIGNvc3Qgb2Yg cmVhZCBrZXkgKDF+IDEwKSANCj4gPiA8PCAxMCoNCj4gcmVhZGtleShzb21lIGtleSkpLg0KPiA+ ICAgICAgICAgICAgIFRoaXMgaXMgcmVhbGx5IGRpZmZlcmVudCBjYXNlIGJ5IGNhc2UsIGluIA0K PiA+TGV2ZWxEQi9Sb2Nrc0RCLCB0aGUgaXRlcmF0b3ItDQo+ID5uZXh0KCkgaXMgbm90IHRoYXQg Y2hlYXAgaWYgdGhlIHR3byBrZXlzIGFyZSBub3QgaW4gYSBzYW1lIGxldmVsLCANCj4gPnRoaXMg bWlnaHQNCj4gaGFwcGVuIGlmIG9uZSBrZXkgaXMgdXBkYXRlZCBhZnRlciBhbm90aGVyLg0KPiA+ IDIuICBXaWxsIERCIG1lcmdlIHRoZSBzbWFsbCAoPCBwYWdlIHNpemUpIHVwZGF0ZWQgaW50byBi aWcgb25lPw0KPiA+ICAgICAgICAgICAgIFRoaXMgaXMgdHJ1ZSBpbiBSb2Nrc0RCL0xldmVsREIg c2luY2UgbXVsdGlwbGUgd3JpdGVzIA0KPiA+IHdpbGwgYmUgd3JpdHRlbiB0bw0KPiBXQUwgbG9n IGF0IHRoZSBzYW1lIHRpbWUoaWYgc3luYz1mYWxzZSksIG5vdCB0byBtZW50aW9uIGlmIHRoZSBk YXRhIGJlIA0KPiBmbHVzaCB0byBMZXZlbDAgKyAsIFNvIGluIFJvY2tzREIgY2FzZSwgdGhlIFdB IGluc2lkZSBTU0QgY2F1c2VkIGJ5IA0KPiBwYXJ0aWFsIHBhZ2UgdXBkYXRlIGlzIG5vdCB0aGF0 IGJpZyBhcyB5b3UgZXN0aW1hdGVkLg0KPiA+DQo+ID4gMy4gV2hhdCdzIHRoZSB0eXBpY2FsICNS QSBhbmQgI1dBIG9mIHRoZSBEQiwgYW5kIGhvdyB0aGV5IHZhcnkgdnMgDQo+ID4gdG90YWwNCj4g ZGF0YSBzaXplDQo+ID4gICAgICAgICAgICAgSW4gTGV2ZWwgZGVzaWduIERCICNSQSBhbmQgI1dB IGlzIHVzdWFsbHkgYSB0dW5pbmcgDQo+ID4gdHJhZGVvZmYuLi5hbHNvIGZvcg0KPiBMTURCIHRo YXQgdHJhZGVvZmYgI1dBIHRvIGFjaGlldmUgdmVyeSBzbWFsbCAjUkEuDQo+ID4gICAgICAgICAg ICAgUm9ja3NEQi9MZXZlbERCICNXQSBzdXJnZSB1cCBxdWlja2x5IHdpdGggdG90YWwgZGF0YSAN Cj4gPiBzaXplLCBidXQgaWYgdXNlDQo+IHRoZSBkZXNpZ24gb2YgTlZNS1YsIHRoYXQgc2hvdWxk IGJlIGRpZmZlcmVudC4NCj4gPg0KPiA+DQo+ID4gQWxzbyB0aGVyZSBhcmUgc29tZSB2YXJpZXR5 IGluIFNTRCwgc29tZSBuZXcgU1NEcyB3aGljaCB3aWxsIA0KPiA+IHByb2JhYmx5DQo+IGFwcGVh ciB0aGlzIHllYXIgdGhhdCBoYXMgdmVyeSBzbWFsbCBwYWdlIHNpemUgKCA8IDEwMCBCKS4uLiBT byBJIA0KPiBzdXNwZWN0IGlmIHlvdSByZWFsbHkgd2FudCBhIHVsdGlsaXplIHRoZSBiYWNrZW5k IEtWIGxpYnJhcnkgcnVuIG9udG9wIA0KPiBvZiBzb21lIHNwZWNpYWwgU1NELCBqdXN0IGluaGVy aXQgZnJvbSBPYmplY3RTdG9yZSBtaWdodCBiZSBhIGJldHRlciBjaG9pY2UuLi4uDQo+ID4NCj4g Pg0KPiA+IFhpYW94aQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ IEZyb206IGNlcGgtZGV2ZWwtb3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86Y2VwaC1kZXZl bC0gDQo+ID4+IG93bmVyQHZnZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIEhhb21haSBXYW5n DQo+ID4+IFNlbnQ6IFR1ZXNkYXksIE1heSA1LCAyMDE1IDEyOjI5IFBNDQo+ID4+IFRvOiBTb21u YXRoIFJveQ0KPiA+PiBDYzogVmFyYWRhIEthcmk7IGNlcGgtZGV2ZWwNCj4gPj4gU3ViamVjdDog UmU6IEsvViBzdG9yZSBvcHRpbWl6YXRpb24NCj4gPj4NCj4gPj4gT24gU2F0LCBNYXkgMiwgMjAx NSBhdCAxOjUwIFBNLCBTb21uYXRoIFJveQ0KPiA8U29tbmF0aC5Sb3lAc2FuZGlzay5jb20+DQo+ ID4+IHdyb3RlOg0KPiA+PiA+IFZhcmFkYSwNCj4gPj4gPiA8PGlubGluZQ0KPiA+PiA+DQo+ID4+ ID4gVGhhbmtzICYgUmVnYXJkcw0KPiA+PiA+IFNvbW5hdGgNCj4gPj4gPg0KPiA+PiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4gRnJvbTogVmFyYWRhIEthcmkNCj4gPj4gPiBT ZW50OiBGcmlkYXksIE1heSAwMSwgMjAxNSA4OjE2IFBNDQo+ID4+ID4gVG86IFNvbW5hdGggUm95 OyBIYW9tYWkgV2FuZw0KPiA+PiA+IENjOiBjZXBoLWRldmVsDQo+ID4+ID4gU3ViamVjdDogUkU6 IEsvViBzdG9yZSBvcHRpbWl6YXRpb24NCj4gPj4gPg0KPiA+PiA+IFNvbW5hdGgsDQo+ID4+ID4N Cj4gPj4gPiBPbmUgdGhpbmcgdG8gbm90ZSBoZXJlLCB3ZSBjYW4ndCBnZXQgYWxsIHRoZSBrZXlz IGluIG9uZSByZWFkIA0KPiA+PiA+IGZyb20gbGV2ZWxkYg0KPiA+PiBvciByb2Nrc2RiLiBOZWVk IHRvIGdldCBhbiBpdGVyYXRvciBhbmQgZ2V0IGFsbCB0aGUga2V5cyBkZXNpcmVkIA0KPiA+PiB3 aGljaCBpcyB0aGUgaW1wbGVtZW50YXRpb24gd2UgaGF2ZSBub3cuIFRob3VnaCwgaWYgdGhlIGJh Y2tlbmQgDQo+ID4+IHN1cHBvcnRzIGJhdGNoIHJlYWQgZnVuY3Rpb25hbGl0eSB3aXRoIGdpdmVu IGhlYWRlci9wcmVmaXggeW91ciANCj4gPj4gaW1wbGVtZW50YXRpb24gbWlnaHQgc29sdmUgdGhl IHByb2JsZW0uDQo+ID4+ID4NCj4gPj4gPiBPbmUgbGltaXRhdGlvbiBpbiB5b3VyIGNhc2UgaXMg YXMgbWVudGlvbmVkIGJ5IEhhb21pLCBvbmNlIHRoZSANCj4gPj4gPiB3aG9sZSA0TUINCj4gPj4g b2JqZWN0IGlzIHBvcHVsYXRlZCBpZiBhbnkgb3ZlcndyaXRlIGNvbWVzIHRvIGFueSBzdHJpcGUs IHdlIHdpbGwgDQo+ID4+IGhhdmUgdG8gcmVhZA0KPiA+PiAxMDI0IHN0cmlwIGtleXMoaW4gd29y c3QgY2FzZSwgYXNzdW1pbmcgNGsgc3RyaXAgc2l6ZSkgb3IgdG8gdGhlIA0KPiA+PiBzdHJpcCBh dCBsZWFzdCB0byBjaGVjayB3aGV0aGVyIHRoZSBzdHJpcCBpcyBwb3B1bGF0ZWQgb3Igbm90LCBh bmQgDQo+ID4+IHJlYWQgdGhlIHZhbHVlIHRvIHNhdGlzZnkgdGhlIG92ZXJ3cml0ZS4gIFRoaXMg d291bGQgaW52b2x2aW5nIG1vcmUgDQo+ID4+IHJlYWRzDQo+IHRoYW4gZGVzaXJlZC4NCj4gPj4g PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4+ID4gW1NvbW5hdGhdIFRoYXQncyB3 aGF0IEkgd2FzIHRyeWluZyB0byBjb252ZXkgaW4gbXkgZWFybGllciBtYWlsLCANCj4gPj4gPiB3 ZSB3aWxsIG5vdA0KPiA+PiBiZSBoYXZpbmcgZXh0cmEgcmVhZHMgISBMZXQgbWUgdHJ5IHRvIGV4 cGxhaW4gaXQgYWdhaW4uDQo+ID4+ID4gSWYgYSBzdHJpcCBpcyBub3QgYmVlbiB3cml0dGVuLCB0 aGVyZSB3aWxsIG5vdCBiZSBhbnkga2V5L3ZhbHVlIA0KPiA+PiA+IG9iamVjdCB3cml0dGVuDQo+ ID4+IHRvIHRoZSBiYWNrLWVuZCwgcmlnaHQgPw0KPiA+PiA+IE5vdywgeW91IHN0YXJ0IHNheSBh biBpdGVyYXRvciB3aXRoIGxvd2VyX2JvdW5kIGZvciB0aGUgcHJlZml4IA0KPiA+PiA+IHNheQ0K PiA+PiBfU0VRXzAwMDAwMDAwMDAwMzk0NjhfU1RSSVBfIGFuZCBjYWxsIG5leHQoKSB0aWxsIGl0 IGlzIG5vdCB2YWxpZC4NCj4gPj4gU28sIGluIGNhc2Ugb2YgMTAyNCBzdHJpcHMgYW5kIDEwIHZh bGlkIHN0cmlwcywgaXQgc2hvdWxkIG9ubHkgYmUgDQo+ID4+IHJlYWRpbmcgYW5kIHJldHVybmlu ZyAxMCBrL3YgcGFpciwgaXNuJ3QgaXQgPyBXaXRoIHRoaXMgMTAgay92IA0KPiA+PiBwYWlycyBv dXQgb2YgMTAyNCwgd2UgY2FuIGVhc2lseSBmb3JtIHRoZSBleHRlbnQgYml0bWFwLg0KPiA+PiA+ IE5vdywgc2F5IHlvdSBoYXZlIHRoZSBiaXRtYXAgYW5kIHlvdSBhbHJlYWR5IGtub3cgdGhlIGtl eSBvZiAxMCANCj4gPj4gPiB2YWxpZA0KPiA+PiBleHRlbnRzLCB5b3Ugd2lsbCBkbyB0aGUgc2lt aWxhciBzdHVmZiAuIEZvciBleGFtcGxlLCBpbiB0aGUgDQo+ID4+IEdlbmVyaWNPYmplY3RNYXA6 OnNjYW4oKSwgeW91IGFyZSBjYWxsaW5nIGxvd2VyX2JvdW5kIHdpdGggZXhhY3QgDQo+ID4+IGtl eSAoY29tYmluZV9zdHJpbmcgdW5kZXIgc2F5IFJvY2tzZGJzdG9yZTo6bG93ZXJfYm91bmQgaXMg Zm9ybWluZyANCj4gPj4gZXhhY3QNCj4gPj4ga2V5KSBhbmQgYWdhaW4gbWF0Y2hpbmcgdGhlIGtl eSB1bmRlciA6OnNjYW4oKSAhIC4uLkJhc2ljYWxseSwgd2UgDQo+ID4+IGFyZSBtaXN1c2luZyBp dGVyYXRvciBiYXNlZCBpbnRlcmZhY2UgaGVyZSwgd2UgY291bGQgaGF2ZSBjYWxsZWQgDQo+ID4+ IHRoZSBkaXJlY3QNCj4gZGI6OmdldCgpLg0KPiA+Pg0KPiA+PiBIbW0sIHdoZXRoZXIgaW1wbGVt ZW50aW5nIGJpdG1hcCBvbiBvYmplY3Qgb3Igb2ZmbG9hZGluZyBpdCB0byANCj4gPj4gYmFja2Vu ZCBpcyBhIHRyYWRlb2ZmLiBXZSBnb3QgZmFzdCBwYXRoIGZyb20gYml0bWFwIGFuZCBpbmNyZWFz ZSANCj4gPj4gd3JpdGUgYW1wbGlmaWNhdGlvbihtYXliZSB3ZSBjYW4gcmVkdWNlIGZvciBpdCku IEZvciBub3csIEkgZG9uJ3QgDQo+ID4+IGhhdmUgY29tcGVsbGVudCByZWFzb24gZm9yIGVhY2gg b25lLiBNYXliZSB3ZSBjYW4gaGF2ZSBhIHRyeS46LSkNCj4gPj4NCj4gPj4gPg0KPiA+PiA+IFNv LCB3aGVyZSBpcyB0aGUgZXh0cmEgcmVhZCA/DQo+ID4+ID4gTGV0IG1lIGtub3cgaWYgSSBhbSBt aXNzaW5nIGFueXRoaW5nIC4NCj4gPj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4+ID4gQW5vdGhlciB3YXkgdG8gYXZvaWQgaGVhZGVyIHdvdWxkIGJlIGhhdmUgb2Zmc2V0 IGFuZCBsZW5ndGggDQo+ID4+ID4gaW5mb3JtYXRpb24NCj4gPj4gaW4ga2V5IGl0c2VsZi4gIFdl IGNhbiBoYXZlIHRoZSBvZmZzZXQgYW5kIGxlbmd0aCBjb3ZlcmVkIGluIHRoZSANCj4gPj4gc3Ry aXAgYXMgYSBwYXJ0IG9mIHRoZSBrZXkgcHJlZml4ZWQgYnkgdGhlIGNpZCtvaWQuIFRoaXMgd2F5 IHdlIGNhbiANCj4gPj4gc3VwcG9ydCB2YXJpYWJsZSBsZW5ndGggZXh0ZW50LiBBZGRpdGlvbmFs IGNoYW5nZXMgd291bGQgYmUgDQo+ID4+IGludm9sdmluZyB0byBtYXRjaCBvZmZzZXQgYW5kIGxl bmd0aCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSBrZXkuIFdpdGggDQo+ID4+IHRoaXMgYXBwcm9hY2gg d2UgY2FuIGF2b2lkIHRoZSBoZWFkZXIgYW5kIHdyaXRlIHRoZSBzdHJpcGVkIG9iamVjdCANCj4g Pj4gdG8gYmFja2VuZC4gIEhhdmVuJ3QgY29tcGxldGVseSBsb29rZWQgdGhlIHByb2JsZW1zIG9m IGNsb25lcyBhbmQgDQo+ID4+IHNuYXBzaG90cyBpbiB0aGlzLCBidXQgd2UgY2FuIHdvcmsgdGhl bSBvdXQgc2VhbWxlc3NseSBvbmNlIHdlIGtub3cNCj4gdGhlIHJhbmdlIHdlIHdhbnQgdG8gY2xv bmUuDQo+ID4+IEhhb21pIGFueSBjb21tZW50cyBvbiB0aGlzIGFwcHJvYWNoPw0KPiA+PiA+DQo+ ID4+ID4gW1NvbW5hdGhdIEhvdyBhcmUgeW91IHNvbHZpbmcgdGhlIHZhbGlkIGV4dGVudCBwcm9i bGVtIGhlcmUgZm9yIA0KPiA+PiA+IHRoZQ0KPiA+PiBwYXJ0aWFsIHJlYWQvd3JpdGUgY2FzZSA/ IFdoYXQgZG8geW91IG1lYW4gYnkgdmFyaWFibGUgbGVuZ3RoIA0KPiA+PiBleHRlbnQNCj4gQlRX ID8NCj4gPj4gPg0KPiA+PiA+IFZhcmFkYQ0KPiA+PiA+DQo+ID4+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gPiBGcm9tOiBTb21uYXRoIFJveQ0KPiA+PiA+IFNlbnQ6IFNhdHVy ZGF5LCBNYXkgMDIsIDIwMTUgMTI6MzUgQU0NCj4gPj4gPiBUbzogSGFvbWFpIFdhbmc7IFZhcmFk YSBLYXJpDQo+ID4+ID4gQ2M6IGNlcGgtZGV2ZWwNCj4gPj4gPiBTdWJqZWN0OiBSRTogSy9WIHN0 b3JlIG9wdGltaXphdGlvbg0KPiA+PiA+DQo+ID4+ID4gVmFyYWRhL0hhb21haSwNCj4gPj4gPiBJ IHRob3VnaHQgYWJvdXQgdGhhdCBlYXJsaWVyICwgYnV0LCB0aGUgV0EgaW5kdWNlZCBieSB0aGF0 IGFsc28gDQo+ID4+ID4gaXMgKm5vdA0KPiA+PiBuZWdsaWdpYmxlKi4gSGVyZSBpcyBhbiBleGFt cGxlLiBTYXkgd2UgaGF2ZSA1MTIgVEIgb2Ygc3RvcmFnZSBhbmQgDQo+ID4+IHdlIGhhdmUgNE1C IHJhZG9zIG9iamVjdCBzaXplLiBTbywgdG90YWwgb2JqZWN0cyA9IDUxMiBUQi80TUIgPSANCj4g Pj4gMTM0MjE3NzI4LiBOb3csIGlmIDRLIGlzIHN0cmlwZSBzaXplICwgZXZlcnkgNE1CIG9iamVj dCB3aWxsIGluZHVjZSANCj4gPj4gbWF4IDRNQi80SyA9IDEwMjQgaGVhZGVyIHdyaXRlcy4gU28s IHRvdGFsIG9mIDEzNzQzODk1MzQ3MiBoZWFkZXIgDQo+ID4+IHdyaXRlcy4gRWFjaCBoZWFkZXIg c2l6ZSBpcyB+MjAwIGJ5dGVzIGJ1dCBpdCB3aWxsIGdlbmVyYXRlIGZsYXNoIA0KPiA+PiBwYWdl IHNpemUgYW1vdW50IG9mIHdyaXRlcyAoZ2VuZXJhbGx5IDRLLzhLLzE2SykuIENvbnNpZGVyaW5n IG1pbiANCj4gPj4gNEsgLCBpdCB3aWxsIG92ZXJhbGwgZ2VuZXJhdGUgfjUxMiBUQiBvZiBleHRy YSB3cml0ZXMgaW4gd29yc3QgY2FzZSANCj4gPj4gOi0pIEkgZGlkbid0IGNvbnNpZGVyIHdoYXQg aWYgaW4gYmV0d2VlbiB0cnVuY2F0ZSBjb21lcyBhbmQgZGlzcnVwdCANCj4gPj4gdGhlDQo+IGhl YWRlciBiaXRtYXAuIFRoaXMgd2lsbCBjYXVzZSBtb3JlIGhlYWRlciB3cml0ZXMuDQo+ID4+ID4g U28sIHdlICpjYW4ndCogZ28gaW4gdGhpcyBwYXRoLg0KPiA+PiA+IE5vdywgSGFvbWFpLCBJIGRv bid0IHVuZGVyc3RhbmQgd2h5IHRoZXJlIHdpbGwgYmUgZXh0cmEgcmVhZHMgaW4gDQo+ID4+ID4g dGhlDQo+ID4+IHByb3Bvc2FsIEkgZ2F2ZS4gTGV0J3MgY29uc2lkZXIgc29tZSB1c2UgY2FzZXMu DQo+ID4+ID4NCj4gPj4gPiAxLiA0TUIgb2JqZWN0IHNpemUgYW5kIDY0SyBzdHJpcGUgc2l6ZSwg c28sIHRvdGFsIG9mIDY0IHN0cmlwZXMgDQo+ID4+ID4gYW5kDQo+ID4+ID4gNjQgZW50cmllcw0K PiA+PiBpbiB0aGUgaGVhZGVyIGJpdG1hcC4gT3V0IG9mIHRoYXQgc2F5IG9ubHkgMTAgc3RyaXBl cyBhcmUgdmFsaWQuIA0KPiA+PiBOb3csIHJlYWQgcmVxdWVzdCBjYW1lIGZvciB0aGUgZW50aXJl IDRNQiBvYmplY3RzLCB3ZSBkZXRlcm1pbmVkIA0KPiA+PiB0aGUgbnVtYmVyIG9mIGV4dGVudHMg dG8gYmUgcmVhZCA9IDY0LCBidXQgZG9uJ3Qga25vdyB2YWxpZCANCj4gPj4gZXh0ZW50cy4gU28s IHNlbmQgb3V0IGEgcmFuZ2UgcXVlcnkgd2l0aCANCj4gPj4gX1NFUV8wMDAwMDAwMDAwMDM4MzYx X1NUUklQXyogYW5kDQo+IGJhY2tlbmQNCj4gPj4gbGlrZSBsZXZlbGRiL3JvY2tzZGIgd2lsbCBv bmx5IHNlbmQgb3V0IHZhbGlkIDEwIGV4dGVudHMgdG8gdXMuDQo+ID4+IFJhdGhlciB3aGF0IHdl IGFyZSBkb2luZyBub3csIHdlIGFyZSBjb25zdWx0aW5nIGJpdCBtYXAgYW5kIHNlbmRpbmcgDQo+ ID4+IHNwZWNpZmljIDEwIGtleXMgZm9yIHJlYWQgd2hpY2ggaXMgKmluZWZmaWNpZW50KiB0aGFu IHNlbmRpbmcgYSANCj4gPj4gcmFuZ2UgcXVlcnkuIElmIHdlIGFyZSB0aGlua2luZyB0aGVyZSB3 aWxsIGJlIGN5Y2xlcyBzcGVudCBmb3IgDQo+ID4+IHJlYWRpbmcgaW52YWxpZCBvYmplY3RzLCBp dCBpcyBub3QgdHJ1ZSBhcyBsZXZlbGRiL3JvY2tzZGIgDQo+ID4+IG1haW50YWlucyBhIGJsb29t IGZpbHRlcg0KPiBmb3IgYSB2YWxpZCBrZXlzIGFuZCBpdCBpcyBpbi1tZW1vcnkuDQo+ID4+IFRo aXMgaXMgbm90IGNvc3RseSBmb3IgYnRyZWUgYmFzZWQga2V5dmFsdWUgZGIgYXMgd2VsbC4NCj4g Pj4gPg0KPiA+PiA+IDIuIE5vdGhpbmcgaXMgZGlmZmVyZW50IGZvciB3cml0ZSBhcyB3ZWxsLCB3 aXRoIHRoZSBhYm92ZSB3YXkgd2UgDQo+ID4+ID4gd2lsbCBlbmQgdXANCj4gPj4gcmVhZGluZyBz YW1lIGFtb3VudCBvZiBkYXRhLg0KPiA+PiA+DQo+ID4+ID4gTGV0IG1lIGtub3cgaWYgSSBhbSBt aXNzaW5nIGFueXRoaW5nLg0KPiA+PiA+DQo+ID4+ID4gVGhhbmtzICYgUmVnYXJkcw0KPiA+PiA+ IFNvbW5hdGgNCj4gPj4gPg0KPiA+PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ ID4gRnJvbTogSGFvbWFpIFdhbmcgW21haWx0bzpoYW9tYWl3YW5nQGdtYWlsLmNvbV0NCj4gPj4g PiBTZW50OiBGcmlkYXksIE1heSAwMSwgMjAxNSA5OjAyIEFNDQo+ID4+ID4gVG86IFZhcmFkYSBL YXJpDQo+ID4+ID4gQ2M6IFNvbW5hdGggUm95OyBjZXBoLWRldmVsDQo+ID4+ID4gU3ViamVjdDog UmU6IEsvViBzdG9yZSBvcHRpbWl6YXRpb24NCj4gPj4gPg0KPiA+PiA+IE9uIEZyaSwgTWF5IDEs IDIwMTUgYXQgMTE6NTUgUE0sIFZhcmFkYSBLYXJpIA0KPiA+PiA+IDxWYXJhZGEuS2FyaUBzYW5k aXNrLmNvbT4NCj4gPj4gd3JvdGU6DQo+ID4+ID4+IEhpIEhhb21pLA0KPiA+PiA+Pg0KPiA+PiA+ PiBBY3R1YWxseSB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgaGVhZGVyIGZvciBhbGwgdGhl IHdyaXRlcywgDQo+ID4+ID4+IHdlIG5lZWQNCj4gPj4gdG8gdXBkYXRlIHdoZW4gYW55IGhlYWRl ciBmaWVsZHMgZ2V0cyB1cGRhdGVkLiBCdXQgd2UgYXJlIG1ha2luZw0KPiA+PiBoZWFkZXItDQo+ ID4+ID51cGRhdGVkIHRvIHRydWUgdW5jb25kaXRpb25hbGx5IGluIF9nZW5lcmljX3dyaXRlKCks IHdoaWNoIGlzIA0KPiA+PiA+bWFraW5nIHRoZQ0KPiA+PiB3cml0ZSBvZiBoZWFkZXIgb2JqZWN0 IGZvciBhbGwgdGhlIHN0cmlwIHdyaXRlIGV2ZW4gZm9yIGEgDQo+ID4+IG92ZXJ3cml0ZSwgd2hp Y2ggd2UgY2FuIGVsaW1pbmF0ZSBieSB1cGRhdGluZyB0aGUgaGVhZGVyLT51cGRhdGVkIGFjY29y ZGluZ2x5Lg0KPiA+PiBJZiB5b3Ugb2JzZXJ2ZSB3ZSBuZXZlciBtYWtlIHRoZSBoZWFkZXItPnVw ZGF0ZWQgZmFsc2UgYW55d2hlcmUuIFdlIA0KPiA+PiBuZWVkIHRvIG1ha2UgaXQgZmFsc2Ugb25j ZSB3ZSB3cml0ZSB0aGUgaGVhZGVyLg0KPiA+PiA+Pg0KPiA+PiA+PiBJbiB3b3JzdCBjYXNlLCB3 ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaGVhZGVyIHRpbGwgYWxsIHRoZSBzdHJpcHMgDQo+ID4+ID4+ IGdldHMNCj4gPj4gcG9wdWxhdGVkIGFuZCB3aGVuIGFueSBjbG9uZS9zbmFwc2hvdCBpcyBjcmVh dGVkLg0KPiA+PiA+Pg0KPiA+PiA+PiBJIGhhdmUgZml4ZWQgdGhlc2UgaXNzdWVzLCB3aWxsIGJl IHNlbmRpbmcgYSBQUiBzb29uIG9uY2UgbXkgDQo+ID4+ID4+IHVuaXQgdGVzdGluZw0KPiA+PiBj b21wbGV0ZXMuDQo+ID4+ID4NCj4gPj4gPiBHcmVhdCEgRnJvbSBTb21uYXRoJ3Mgc3RhdGVtZW50 cywgSSBqdXN0IHRoaW5rIGl0IG1heSBzb21ldGhpbmcgDQo+ID4+ID4gd3JvbmcNCj4gPj4gd2l0 aCAidXBkYXRlZCIgZmllbGQuIEl0IHdvdWxkIGJlIG5pY2UgdG8gY2F0Y2ggdGhpcy4NCj4gPj4g Pg0KPiA+PiA+Pg0KPiA+PiA+PiBWYXJhZGENCj4gPj4gPj4NCj4gPj4gPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4gPj4gRnJvbTogY2VwaC1kZXZlbC1vd25lckB2Z2VyLmtlcm5l bC5vcmcgDQo+ID4+ID4+IFttYWlsdG86Y2VwaC1kZXZlbC1vd25lckB2Z2VyLmtlcm5lbC5vcmdd IE9uIEJlaGFsZiBPZiBIYW9tYWkNCj4gV2FuZw0KPiA+PiA+PiBTZW50OiBGcmlkYXksIE1heSAw MSwgMjAxNSA1OjUzIFBNDQo+ID4+ID4+IFRvOiBTb21uYXRoIFJveQ0KPiA+PiA+PiBDYzogY2Vw aC1kZXZlbA0KPiA+PiA+PiBTdWJqZWN0OiBSZTogSy9WIHN0b3JlIG9wdGltaXphdGlvbg0KPiA+ PiA+Pg0KPiA+PiA+PiBPbiBGcmksIE1heSAxLCAyMDE1IGF0IDI6NTcgUE0sIEhhb21haSBXYW5n DQo+IDxoYW9tYWl3YW5nQGdtYWlsLmNvbT4NCj4gPj4gd3JvdGU6DQo+ID4+ID4+PiBPbiBGcmks IE1heSAxLCAyMDE1IGF0IDI6MzcgUE0sIFNvbW5hdGggUm95DQo+ID4+IDxTb21uYXRoLlJveUBz YW5kaXNrLmNvbT4gd3JvdGU6DQo+ID4+ID4+Pj4gVGhhbmtzIEhhb21haSAhDQo+ID4+ID4+Pj4g UmVzcG9uc2UgaW5saW5lLi4NCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IFJlZ2FyZHMNCj4gPj4gPj4+ PiBTb21uYXRoDQo+ID4+ID4+Pj4NCj4gPj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+PiA+Pj4+IEZyb206IEhhb21haSBXYW5nIFttYWlsdG86aGFvbWFpd2FuZ0BnbWFpbC5j b21dDQo+ID4+ID4+Pj4gU2VudDogVGh1cnNkYXksIEFwcmlsIDMwLCAyMDE1IDEwOjQ5IFBNDQo+ ID4+ID4+Pj4gVG86IFNvbW5hdGggUm95DQo+ID4+ID4+Pj4gQ2M6IGNlcGgtZGV2ZWwNCj4gPj4g Pj4+PiBTdWJqZWN0OiBSZTogSy9WIHN0b3JlIG9wdGltaXphdGlvbg0KPiA+PiA+Pj4+DQo+ID4+ ID4+Pj4gT24gRnJpLCBNYXkgMSwgMjAxNSBhdCAxMjo1NSBQTSwgU29tbmF0aCBSb3kNCj4gPj4g PFNvbW5hdGguUm95QHNhbmRpc2suY29tPiB3cm90ZToNCj4gPj4gPj4+Pj4gSGkgSGFvbWFpLA0K PiA+PiA+Pj4+PiBJIHdhcyBkb2luZyBzb21lIGludmVzdGlnYXRpb24gd2l0aCBLL1Ygc3RvcmUg YW5kIElNTyB3ZSBjYW4gDQo+ID4+ID4+Pj4+IGRvIHRoZQ0KPiA+PiBmb2xsb3dpbmcgb3B0aW1p emF0aW9uIG9uIHRoYXQuDQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+IDEuIE9uIGV2ZXJ5IHdyaXRl IEtleVZhbHVlU3RvcmUgaXMgd3JpdGluZyBvbmUgZXh0cmEgc21hbGwgDQo+ID4+ID4+Pj4+IGF0 dHJpYnV0ZQ0KPiA+PiB3aXRoIHByZWZpeCBfR0hPQkpUT1NFUSogd2hpY2ggaXMgc3RvcmluZyB0 aGUgaGVhZGVyIGluZm9ybWF0aW9uLg0KPiA+PiBUaGlzIGV4dHJhIHdyaXRlIHdpbGwgaHVydCB1 cyBiYWRseSBpbiBjYXNlIGZsYXNoIFdBLiBJIHdhcyANCj4gPj4gdGhpbmtpbmcgaWYgd2UgY2Fu IGdldCByaWQgb2YgdGhpcyBpbiB0aGUgZm9sbG93aW5nIHdheS4NCj4gPj4gPj4+Pj4NCj4gPj4g Pj4+Pj4gICAgICAgU2VlbXMgbGlrZSBwZXJzaXN0aW5nIGhlYWRlcnMgZHVyaW5nIGNyZWF0aW9u IHRpbWUgDQo+ID4+ID4+Pj4+IHNob3VsZCBiZQ0KPiA+PiBzdWZmaWNpZW50LiBUaGUgcmVhc29u IGlzIHRoZSBmb2xsb3dpbmcuLg0KPiA+PiA+Pj4+PiAgICAgICAgYS4gVGhlIGhlYWRlci0+c2Vx IGZvciBnZW5lcmF0aW5nIHByZWZpeCB3aWxsIGJlIA0KPiA+PiA+Pj4+PiB3cml0dGVuIG9ubHkg d2hlbg0KPiA+PiBoZWFkZXIgaXMgZ2VuZXJhdGVkLiBTbywgaWYgd2Ugd2FudCB0byB1c2UgdGhl IF9TRVEgKiBhcyBwcmVmaXgsIHdlIA0KPiA+PiBjYW4gcmVhZCB0aGUgaGVhZGVyIGFuZCB1c2Ug aXQgZHVyaW5nIHdyaXRlLg0KPiA+PiA+Pj4+PiAgICAgICAgYi4gSSB0aGluayB3ZSBkb24ndCBu ZWVkIHRoZSBzdHJpcGUgYml0bWFwL2hlYWRlci0NCj4gPj4gPm1heF9sZW4vc3RyaXBlX3NpemUg YXMgd2VsbC4gVGhlIGJpdG1hcCBpcyByZXF1aXJlZCB0byBkZXRlcm1pbmUgDQo+ID4+ID50aGUN Cj4gPj4gYWxyZWFkeSB3cml0dGVuIGV4dGVudHMgZm9yIGEgd3JpdGUuIE5vdywgYW55IEsvViBk YiBzdXBwb3J0aW5nIA0KPiA+PiByYW5nZSBxdWVyaWVzIChhbnkgcG9wdWxhciBkYiBkb2VzKSwg d2UgY2FuIGFsd2F5cyBzZW5kIGRvd24NCj4gPj4gPj4+Pj4gICAgICAgICAgICByYW5nZSBxdWVy eSB3aXRoIHByZWZpeCBzYXkgDQo+ID4+ID4+Pj4+IF9TRVFfMDAwMDAwMDAwMDAzOTQ2OF9TVFJJ UF8NCj4gPj4gYW5kIGl0IHNob3VsZCByZXR1cm4gdGhlIHZhbGlkIGV4dGVudHMuIE5vIGV4dHJh IHJlYWRzIGhlcmUgc2luY2UgDQo+ID4+IGFueXdheSB3ZSBuZWVkIHRvIHJlYWQgdGhvc2UgZXh0 ZW50cyBpbiByZWFkL3dyaXRlIHBhdGguDQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4NCj4gPj4gPj4+ PiBGcm9tIG15IG1pbmQsIEkgdGhpbmsgbm9ybWFsIElPIHdvbid0IGFsd2F5cyB3cml0ZSBoZWFk ZXIhIElmIA0KPiA+PiA+Pj4+IHlvdQ0KPiA+PiBub3RpY2UgbG90cyBvZiBoZWFkZXIgd3JpdHRl biwgbWF5YmUgc29tZSBjYXNlcyB3cm9uZyBhbmQgbmVlZCB0byBmaXguDQo+ID4+ID4+Pj4NCj4g Pj4gPj4+PiBXZSBoYXZlIGEgInVwZGF0ZWQiIGZpZWxkIHRvIGluZGljYXRvciB3aGV0aGVyIHdl IG5lZWQgdG8gDQo+ID4+ID4+Pj4gd3JpdGUNCj4gPj4gZ2hvYmplY3RfdCBoZWFkZXIgZm9yIGVh Y2ggdHJhbnNhY3Rpb24uIE9ubHkgICJtYXhfc2l6ZSIgYW5kICJiaXRzIg0KPiA+PiA+Pj4+IGNo YW5nZWQgd2lsbCBzZXQgInVwZGF0ZT10cnVlIiwgaWYgd2Ugd3JpdGUgd2FybSBkYXRhIEkgZG9u J3QgDQo+ID4+ID4+Pj4gd2Ugd2lsbA0KPiA+PiB3cml0ZSBoZWFkZXIgYWdhaW4uDQo+ID4+ID4+ Pj4NCj4gPj4gPj4+PiBIbW0sIG1heWJlICJiaXRzIiB3aWxsIGJlIGNoYW5nZWQgb2Z0ZW4gc28g aXQgd2lsbCB3cml0ZSB0aGUgDQo+ID4+ID4+Pj4gd2hvbGUNCj4gPj4gaGVhZGVyIGFnYWluIHdo ZW4gZG9pbmcgZnJlc2ggd3JpdGluZy4gSSB0aGluayBhIGZlYXNpYmxlIHdheSBpcyANCj4gPj4g c2VwYXJhdGUgImJpdHMiIGZyb20gaGVhZGVyLiBUaGUgc2l6ZSBvZiAiYml0cyIgdXN1YWxseSBp cyANCj4gPj4gNTEyLTEwMjQob3IgbW9yZSBmb3IgbGFyZ2VyDQo+ID4+IG9iamVjdCkgYnl0ZXMs IEkgdGhpbmsgaWYgd2UgZmFjZSBiYXJlbWV0YWwgc3NkIG9yIGFueSBiYWNrZW5kIA0KPiA+PiBw YXNzdGhyb3VnaCBsb2NhbGZzL3Njc2ksIHdlIGNhbiBzcGxpdCBiaXRzIHRvIHNldmVyYWwgZml4 ZWQgc2l6ZSANCj4gPj4ga2V5cy4gSWYgc28gd2UgY2FuIGF2b2lkIG1vc3Qgb2YgaGVhZGVyIHdy aXRlLg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gW1NvbW5hdGhdIFllcywgYmVjYXVzZSBvZiBiaXRt YXAgdXBkYXRlLCBpdCBpcyByZXdyaXRpbmcgDQo+ID4+ID4+Pj4gaGVhZGVyIG9uDQo+ID4+IGVh Y2ggdHJhbnNhY3Rpb24uIEkgZG9uJ3QgdGhpbmsgc2VwYXJhdGluZyBiaXRzIGZyb20gaGVhZGVy IHdpbGwgDQo+ID4+IGhlbHAgbXVjaCBhcyBhbnkgc21hbGwgd3JpdGUgd2lsbCBpbmR1Y2UgZmxh c2ggbG9naWNhbCBwYWdlIHNpemUgDQo+ID4+IGFtb3VudCB3cml0ZSBmb3IgbW9zdCBvZiB0aGUg ZGJzIHVubGVzcyB0aGV5IGFyZSBkb2luZyBzb21lIA0KPiA+PiBvcHRpbWl6YXRpb24NCj4gaW50 ZXJuYWxseS4NCj4gPj4gPj4NCj4gPj4gPj4gSSBqdXN0IHRoaW5rIHdlIG1heSBjb3VsZCB0aGlu ayBtZXRhZGF0YSB1cGRhdGUgZXNwZWNpYWxseSAiYml0cyINCj4gPj4gPj4gYXMNCj4gPj4gam91 cm5hbC4gU28gaWYgd2UgaGF2ZSBhIHN1Ym1pdF90cmFuc2FjdGlvbiB3aGljaCB3aWxsIHRvZ2V0 aGVyIGFsbCAiYml0cyINCj4gPj4gdXBkYXRlIHRvIGEgcmVxdWVzdCBhbmQgZmx1c2ggdG8gYSBm b3JtYXRlIGtleSBuYW1lZCBsaWtlDQo+ID4+ICJiaXRzLWpvdXJuYWwtIFtzZXFdIi4gV2UgY291 bGQgYWN0dWFsbHkgd3JpdGViYWNrIGlucGxhY2UgaGVhZGVyIA0KPiA+PiB2ZXJ5IGxhdGUuIEl0 IGNvdWxkIGhlbHAgSSB0aGluay4NCj4gPj4gPj4NCj4gPj4gPj4+DQo+ID4+ID4+PiBZZWFoLCBi dXQgd2UgY2FuJ3QgZ2V0IHJpZCBvZiBpdCBpZiB3ZSB3YW50IHRvIGltcGxlbWVudCBhIA0KPiA+ PiA+Pj4gc2ltcGxlIGxvZ2ljIG1hcHBlciBpbiBrZXl2YWx1ZXN0b3JlIGxheWVyLiBPdGhlcndp c2UsIHdlIG5lZWQgDQo+ID4+ID4+PiB0byByZWFkIGFsbCBrZXlzIGdvIGRvd24gdG8gdGhlIGJh Y2tlbmQuDQo+ID4+ID4+Pg0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+PiAyLiBJIHdhcyB0aGlua2lu ZyBub3QgdG8gcmVhZCB0aGlzIEdIb2JqZWN0IGF0IGFsbCBkdXJpbmcgDQo+ID4+ID4+Pj4+IHJl YWQvd3JpdGUNCj4gcGF0aC4NCj4gPj4gRm9yIHRoYXQsIHdlIG5lZWQgdG8gZ2V0IHJpZCBvZiB0 aGUgU0VRIHN0dWZmIGFuZCBjYWxjdWxhdGUgdGhlIA0KPiA+PiBvYmplY3Qga2V5cyBvbiB0aGUg Zmx5LiBXZSBjYW4gdW5pcXVlbHkgZm9ybSB0aGUgR0hPYmplY3Qga2V5cyBhbmQgDQo+ID4+IGFk ZCB0aGF0IGFzIHByZWZpeCB0byBhdHRyaWJ1dGVzIGxpa2UgdGhpcy4NCj4gPj4gPj4+Pj4NCj4g Pj4gPj4+Pj4NCj4gPj4NCj4gX0dIT0JKVE9TRVFfMSVlNTlfaGVhZCE5REQyOUI2OCEhMSEhcmJk X2RhdGElZTEwMDU3NGIwZGM1MSVlMDANCj4gPj4gMDAwMDAwMDAwMGMxOGEhaGVhZCAgICAgLS0t LS0+IGZvciBoZWFkZXIgKHdpbGwgYmUgY3JlYXRlZCBvbmUgdGltZSkNCj4gPj4gPj4+Pj4NCj4g Pj4gPj4+Pj4NCj4gPj4NCj4gX0dIT0JKVE9TRVFfMSVlNTlfaGVhZCE5REQyOUI2OCEhMSEhcmJk X2RhdGElZTEwMDU3NGIwZGM1MSVlMDANCj4gPj4gMDAwMA0KPiA+PiA+Pj4+PiAwDQo+ID4+ID4+ Pj4+IDANCj4gPj4gPj4+Pj4gMDAgMDBjMThhIWhlYWQgX19PQkpPTUFQICogLT4gZm9yIGFsbCBv bWFwIGF0dHJpYnV0ZXMNCj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4NCj4gPj4NCj4gX0dIT0JKVE9T RVFfMSVlNTlfaGVhZCE5REQyOUI2OCEhMSEhcmJkX2RhdGElZTEwMDU3NGIwZGM1MSVlMDANCj4g Pj4gMDAwMDAwMDAwMGMxOGEhaGVhZF9fT0JKQVRUUl9fKiAgLT4gZm9yIGFsbCBhdHRycw0KPiA+ PiA+Pj4+Pg0KPiA+Pg0KPiBfR0hPQkpUT1NFUV8xJWU1OV9oZWFkITlERDI5QjY4ISExISFyYmRf ZGF0YSVlMTAwNTc0YjBkYzUxJWUwMA0KPiA+PiAwMDAwMDAwMDAwYzE4YSFoZWFkX19TVFJJUF88 c3RyaXBlLW5vPiAtPiBmb3IgYWxsIHN0cmlwcy4NCj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4gIEFs c28sIGtlZXBpbmcgdGhlIHNpbWlsYXIgcHJlZml4IHRvIGFsbCB0aGUga2V5cyBmb3IgYW4gDQo+ ID4+ID4+Pj4+IG9iamVjdCB3aWxsIGJlDQo+ID4+IGhlbHBpbmcgay92IGRicyBpbiBnZW5lcmFs IGFzIGxvdCBvZiBkYnMgZG8gb3B0aW1pemF0aW9uIGJhc2VkIG9uIA0KPiA+PiBzaW1pbGFyIGtl eSBwcmVmaXguDQo+ID4+ID4+Pj4NCj4gPj4gPj4+PiBXZSBjYW4ndCBnZXQgcmlkIG9mIGhlYWRl ciBsb29rIEkgdGhpbmssIGJlY2F1c2Ugd2UgbmVlZCB0byANCj4gPj4gPj4+PiBjaGVjayB0aGlz DQo+ID4+IG9iamVjdCBpcyBleGlzdGVkIGFuZCB0aGlzIGlzIHJlcXVpcmVkIGJ5IE9iamVjdFN0 b3JlIHNlbWFudGljLiBEbyANCj4gPj4geW91IHRoaW5rIHRoaXMgd2lsbCBiZSBib3R0bGVuZWNr IGZvciByZWFkL3dyaXRlIHBhdGg/IEZyb20gbXkgDQo+ID4+IHZpZXcsIGlmIEkgaW5jcmVhc2Ug a2V5dmFsdWVzdG9yZV9oZWFkZXJfY2FjaGVfc2l6ZSB0byB2ZXJ5IGxhcmdlIA0KPiA+PiBudW1i ZXIgbGlrZSAxMDI0MDAsIGFsbW9zdCBvZiBoZWFkZXIgc2hvdWxkIGJlIGNhY2hlZCBpbm1lbW9y eS4NCj4gPj4gS2V5VmFsdWVTdG9yZSB1c2VzIFJhbmRvbUNhY2hlIHRvIHN0b3JlIGhlYWRlciBj YWNoZSwgaXQgc2hvdWxkIGJlIA0KPiA+PiBjaGVhcGVyLiBBbmQgaGVhZGVyIGluIEtleVZhbHVl U3RvcmUgaXMgYWxpa2UgImZpbGUgZGVzY3JpcHRvciIgaW4gDQo+ID4+IGxvY2FsIGZzLCBhIGxh cmdlIGhlYWRlciBjYWNoZSBzaXplIGlzIGVuY291cmFnZWQgc2luY2UgImhlYWRlciIgaXMNCj4g bGlnaHR3ZWlnaHQgY29tcGFyZWQgdG8gaW5vZGUuDQo+ID4+ID4+Pj4NCj4gPj4gPj4+PiBbU29t bmF0aF0gTm9wZSwgc28gZmFyIEkgYW0gbm90IHNlZWluZyB0aGlzIGFzIGEgYm90dGxlbmVjaywg DQo+ID4+ID4+Pj4gYnV0DQo+ID4+IHRoaW5raW5nIGlmIHdlIGNhbiBnZXQgcmlkIG9mIGV4dHJh IHJlYWQgYWx3YXlzLi5JbiBvdXIgY2FzZSBvbmUgDQo+ID4+IE9TRCB3aWxsIHNlcnZlIH44VEIg b2Ygc3RvcmFnZSwgc28sIHRvIGNhY2hlIGFsbCB0aGVzZSBoZWFkZXJzIGluIA0KPiA+PiBtZW1v cnkgd2UgbmVlZCB+NDIwTUIgKGNvbnNpZGVyaW5nIGRlZmF1bHQgNE1CIHJhZG9zIG9iamVjdCBz aXplIA0KPiA+PiBhbmQgaGVhZGVyIHNpemUgaXMgfjIwMGJ5dGVzKSwgd2hpY2ggaXMga2luZCBv ZiBiaWcuIFNvLCBJIHRoaW5rIA0KPiA+PiB0aGVyZSB3aWxsIGJlIHNvbWUgZGlzaw0KPiByZWFk IGFsd2F5cy4NCj4gPj4gPj4+PiBJIHRoaW5rIGp1c3QgcXVlcnlpbmcgdGhlIHBhcnRpY3VsYXIg b2JqZWN0IHNob3VsZCByZXZlYWwgDQo+ID4+ID4+Pj4gd2hldGhlciBvYmplY3QNCj4gPj4gZXhp c3RzIG9yIG5vdC4gTm90IHN1cmUgaWYgd2UgbmVlZCB0byB2ZXJpZnkgaGVhZGVycyBhbHdheXMg aW4gdGhlIA0KPiA+PiBpbyBwYXRoIHRvIGRldGVybWluZSBpZiBvYmplY3QgZXhpc3RzIG9yIG5v dC4gSSBrbm93IGluIGNhc2Ugb2YgDQo+ID4+IG9tYXAgaXQgaXMgaW1wbGVtZW50ZWQgbGlrZSB0 aGF0LCBidXQsIEkgZG9uJ3Qga25vdyB3aGF0IGJlbmVmaXQgd2UgDQo+ID4+IGFyZSBnZXR0aW5n IGJ5DQo+IGRvaW5nIHRoYXQuDQo+ID4+ID4+Pj4NCj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4gMy4g V2UgY2FuIGFnZ3JlZ2F0ZSB0aGUgc21hbGwgd3JpdGVzIGluIHRoZSBidWZmZXIgDQo+ID4+ID4+ Pj4+IHRyYW5zYWN0aW9uIGFuZA0KPiA+PiBpc3N1ZSBvbmUgc2luZ2xlIGtleS92YWx1ZSB3cml0 ZSB0byB0aGUgZGJzLiBJZiBkYnMgYXJlIGFscmVhZHkgDQo+ID4+IGRvaW5nIHNtYWxsIHdyaXRl IGFnZ3JlZ2F0aW9uICwgdGhpcyB3b24ndCBoZWxwIG11Y2ggdGhvdWdoLg0KPiA+PiA+Pj4+DQo+ ID4+ID4+Pj4gWWVzLCBpdCBjb3VsZCBiZSBkb25lIGp1c3QgbGlrZSBOZXdTdG9yZSBkaWQhIFNv IA0KPiA+PiA+Pj4+IGtleXZhbHVlc3RvcmUncyBwcm9jZXNzDQo+ID4+IGZsYXcgd2lsbCBiZSB0 aGlzOg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gc2V2ZXJhbCBwZyB0aHJlYWRzOiBxdWV1ZV90cmFu c2FjdGlvbg0KPiA+PiA+Pj4+ICAgICAgICAgICAgICAgfA0KPiA+PiA+Pj4+ICAgICAgICAgICAg ICAgfA0KPiA+PiA+Pj4+IHNldmVyYWwga2V5dmFsdWVzdG9yZSBvcCB0aHJlYWRzOiBkb190cmFu c2FjdGlvbg0KPiA+PiA+Pj4+ICAgICAgICAgICAgICAgfA0KPiA+PiA+Pj4+IGtleXZhbHVlc3Rv cmUgc3VibWl0IHRocmVhZDogY2FsbCBkYi0+c3VibWl0X3RyYW5zYWN0aW9uX3N5bmMNCj4gPj4g Pj4+Pg0KPiA+PiA+Pj4+IFNvIHRoZSBiYW5kd2lkdGggc2hvdWxkIGJlIGJldHRlci4NCj4gPj4g Pj4+Pg0KPiA+PiA+Pj4+IEFub3RoZXIgb3B0aW1pemF0aW9uIHBvaW50IGlzIHJlZHVjaW5nIGxv Y2sgZ3JhbnVsYXJpdHkgdG8NCj4gPj4gPj4+PiBvYmplY3QtDQo+ID4+IGxldmVsKGN1cnJlbnRs eSBpcyBwZyBsZXZlbCksIEkgdGhpbmsgaWYgd2UgdXNlIGEgc2VwYXJ0b3Igc3VibWl0IA0KPiA+ PiB0aHJlYWQgaXQgd2lsbCBoZWxwZnVsIGJlY2F1c2UgbXVsdGkgdHJhbnNhY3Rpb24gaW4gb25l IHBnIHdpbGwgYmUgDQo+ID4+IHF1ZXVlZCBpbg0KPiBvcmRlcmluZy4NCj4gPj4gPj4+PiBbU29t bmF0aF0gWWVhaC4uVGhhdCBJIHJhaXNlZCBlYXJsaWVyLCBidXQsIGl0IHNlZW1zIHF1aXRlIGEg DQo+ID4+ID4+Pj4gZmV3IGltcGFjdA0KPiA+PiBmb3IgdGhhdC4gQnV0LCBpdCB3b3J0aCB0cnlp bmcuLk1heSBiZSBuZWVkIHRvIGRpc2N1c3Mgd2l0aCBTYWdlL1NhbS4NCj4gPj4gPj4+DQo+ID4+ ID4+PiBDb29sIQ0KPiA+PiA+Pj4NCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4+DQo+ ID4+ID4+Pj4+IFBsZWFzZSBzaGFyZSB5b3VyIHRob3VnaHQgYXJvdW5kIHRoaXMuDQo+ID4+ID4+ Pj4+DQo+ID4+ID4+Pj4NCj4gPj4gPj4+PiBJIGFsd2F5cyByZXRoaW5rIHRvIGltcHJvdmUga2V5 dmFsdWVzdG9yZSBwZXJmb3JtYW5jZSwgYnV0IEkgDQo+ID4+ID4+Pj4gZG9uJ3QNCj4gPj4gaGF2 ZSBhIGdvb2QgYmFja2VuZCBzdGlsbCBub3cuIEEgc3NkIHZlbmRvciB3aG8gY2FuIHByb3ZpZGUg d2l0aCANCj4gPj4gRlRMIGludGVyZmFjZSB3b3VsZCBiZSBncmVhdCBJIHRoaW5rLCBzbyB3ZSBj YW4gb2ZmbG9hZCBsb3RzIG9mIA0KPiA+PiB0aGluZ3MgdG8gRlRMDQo+IGxheWVyLg0KPiA+PiA+ Pj4+DQo+ID4+ID4+Pj4+IFRoYW5rcyAmIFJlZ2FyZHMNCj4gPj4gPj4+Pj4gU29tbmF0aA0KPiA+ PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+PiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+PiBQ TEVBU0UgTk9URTogVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGVsZWN0cm9uaWMg DQo+ID4+ID4+Pj4+IG1haWwNCj4gPj4gbWVzc2FnZSBpcyBpbnRlbmRlZCBvbmx5IGZvciB0aGUg dXNlIG9mIHRoZSBkZXNpZ25hdGVkIHJlY2lwaWVudChzKSANCj4gPj4gbmFtZWQgYWJvdmUuIElm IHRoZSByZWFkZXIgb2YgdGhpcyBtZXNzYWdlIGlzIG5vdCB0aGUgaW50ZW5kZWQgDQo+ID4+IHJl Y2lwaWVudCwgeW91IGFyZSBoZXJlYnkgbm90aWZpZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0 aGlzIA0KPiA+PiBtZXNzYWdlIGluIGVycm9yIGFuZCB0aGF0IGFueSByZXZpZXcsIGRpc3NlbWlu YXRpb24sIGRpc3RyaWJ1dGlvbiwgDQo+ID4+IG9yIGNvcHlpbmcgb2YgdGhpcyBtZXNzYWdlIGlz IHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBoYXZlIA0KPiA+PiByZWNlaXZlZCB0aGlzIGNv bW11bmljYXRpb24gaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBieSANCj4gPj4g dGVsZXBob25lIG9yIGUtbWFpbCAoYXMgc2hvd24gYWJvdmUpIGltbWVkaWF0ZWx5IGFuZCBkZXN0 cm95IGFueSANCj4gPj4gYW5kIGFsbCBjb3BpZXMgb2YgdGhpcyBtZXNzYWdlIGluIHlvdXIgcG9z c2Vzc2lvbiAod2hldGhlciBoYXJkIA0KPiA+PiBjb3BpZXMgb3IgZWxlY3Ryb25pY2FsbHkNCj4g c3RvcmVkIGNvcGllcykuDQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+IC0tDQo+ID4+ID4+Pj4+IFRv IHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSAN Cj4gPj4gPj4+Pj4gY2VwaC0NCj4gZGV2ZWwiDQo+ID4+ID4+Pj4+IGluIHRoZSBib2R5IG9mIGEg bWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgDQo+ID4+ID4+Pj4+IG1h am9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0 bWwNCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4NCj4gPj4gPj4+PiAtLQ0KPiA+PiA+ Pj4+IEJlc3QgUmVnYXJkcywNCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IFdoZWF0DQo+ID4+ID4+Pg0K PiA+PiA+Pj4NCj4gPj4gPj4+DQo+ID4+ID4+PiAtLQ0KPiA+PiA+Pj4gQmVzdCBSZWdhcmRzLA0K PiA+PiA+Pj4NCj4gPj4gPj4+IFdoZWF0DQo+ID4+ID4+DQo+ID4+ID4+DQo+ID4+ID4+DQo+ID4+ ID4+IC0tDQo+ID4+ID4+IEJlc3QgUmVnYXJkcywNCj4gPj4gPj4NCj4gPj4gPj4gV2hlYXQNCj4g Pj4gPj4gLS0NCj4gPj4gPj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhl IGxpbmUgInVuc3Vic2NyaWJlIGNlcGgtZGV2ZWwiDQo+ID4+ID4+IGluIHRoZSBib2R5IG9mIGEg bWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUNCj4gPj4gbWFqb3Jkb21v DQo+ID4+ID4+IGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8u aHRtbA0KPiA+PiA+DQo+ID4+ID4NCj4gPj4gPg0KPiA+PiA+IC0tDQo+ID4+ID4gQmVzdCBSZWdh cmRzLA0KPiA+PiA+DQo+ID4+ID4gV2hlYXQNCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLS0NCj4g Pj4gQmVzdCBSZWdhcmRzLA0KPiA+Pg0KPiA+PiBXaGVhdA0KPiA+PiAtLQ0KPiA+PiBUbyB1bnN1 YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgY2VwaC1k ZXZlbCINCj4gPj4gaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtl cm5lbC5vcmcgTW9yZQ0KPiBtYWpvcmRvbW8NCj4gPj4gaW5mbyBhdCBodHRwOi8vdmdlci5rZXJu ZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwNCj4gPg0KPiA+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQo+ID4NCj4gPiBQTEVBU0UgTk9URTogVGhlIGluZm9ybWF0aW9uIGNvbnRh aW5lZCBpbiB0aGlzIGVsZWN0cm9uaWMgbWFpbCANCj4gPiBtZXNzYWdlIGlzDQo+IGludGVuZGVk IG9ubHkgZm9yIHRoZSB1c2Ugb2YgdGhlIGRlc2lnbmF0ZWQgcmVjaXBpZW50KHMpIG5hbWVkIGFi b3ZlLiANCj4gSWYgdGhlIHJlYWRlciBvZiB0aGlzIG1lc3NhZ2UgaXMgbm90IHRoZSBpbnRlbmRl ZCByZWNpcGllbnQsIHlvdSBhcmUgDQo+IGhlcmVieSBub3RpZmllZCB0aGF0IHlvdSBoYXZlIHJl Y2VpdmVkIHRoaXMgbWVzc2FnZSBpbiBlcnJvciBhbmQgdGhhdCANCj4gYW55IHJldmlldywgZGlz c2VtaW5hdGlvbiwgZGlzdHJpYnV0aW9uLCBvciBjb3B5aW5nIG9mIHRoaXMgbWVzc2FnZSBpcyAN Cj4gc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBjb21tdW5p Y2F0aW9uIGluIGVycm9yLCANCj4gcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGJ5IHRlbGVwaG9u ZSBvciBlLW1haWwgKGFzIHNob3duIGFib3ZlKSANCj4gaW1tZWRpYXRlbHkgYW5kIGRlc3Ryb3kg YW55IGFuZCBhbGwgY29waWVzIG9mIHRoaXMgbWVzc2FnZSBpbiB5b3VyIA0KPiBwb3NzZXNzaW9u ICh3aGV0aGVyIGhhcmQgY29waWVzIG9yIGVsZWN0cm9uaWNhbGx5IHN0b3JlZCBjb3BpZXMpLg0K PiA+DQo+IA0KPiANCj4gDQo+IC0tDQo+IEJlc3QgUmVnYXJkcywNCj4gDQo+IFdoZWF0DQoTICDs ubscICYgfiAmIBggICstICDdthcgIHcgIMubICAgbSAeIBdeICBiICBebiByICAgeiAaICBoICAg ICYgIB4gRyAgIGggAygg6ZqOIN2iaiIgIBogG20gICAgIHog3pYgICBmICAgaCAgIH4gbSANCg==