From mboxrd@z Thu Jan 1 00:00:00 1970 From: "James (Fei) Liu-SSI" Subject: RE: About Fio backend with ObjectStore API Date: Fri, 4 Sep 2015 20:29:57 +0000 Message-ID: <99767EA2E27DD44DB4E9F9B9ACA458C03BD7A59A@SSIEXCH-MB3.ssi.samsung.com> References: <99767EA2E27DD44DB4E9F9B9ACA458C03B31A8D8@SSIEXCH-MB3.ssi.samsung.com> <327699266.948920.1437598600219.JavaMail.zimbra@redhat.com> <99767EA2E27DD44DB4E9F9B9ACA458C03BD79F00@SSIEXCH-MB3.ssi.samsung.com> <596210169.12342351.1441302227895.JavaMail.zimbra@redhat.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]:48587 "EHLO mx2.ssi.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760392AbbIDUaC (ORCPT ); Fri, 4 Sep 2015 16:30:02 -0400 In-Reply-To: <596210169.12342351.1441302227895.JavaMail.zimbra@redhat.com> Content-Language: en-US Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Casey Bodley Cc: "ceph-devel@vger.kernel.org" SGkgQ2FzZXksDQogICBUaGFua3MuIEkgZXZlbiBnb3QgYSBjb21waWxpbmcgZXJyb3Igd2l0aCBm aW8tb2JqZWN0c3RvcmUgYnJhbmNoLg0KDQogICAgSGVyZSBpcyBlcnJvciBtZXNzYWdlOg0KDQog ICAgICBtYWtlWzNdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgcmJkX2Z1c2UvcmJkLWZ1 c2UuYycsIG5lZWRlZCBieSBgcmJkX2Z1c2UvcmJkLWZ1c2UubycuICBTdG9wLg0KbWFrZVszXTog KioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4NCiAgQ1hYICAgICAgY2VwaF9mdXNl Lm8NCm1ha2VbM106IExlYXZpbmcgZGlyZWN0b3J5IGAvaG9tZS9qYW1lc2xpdS9Xb3JrU3BhY2Uv Y2VwaF9maW8vc3JjJw0KbWFrZVsyXTogKioqIFthbGwtcmVjdXJzaXZlXSBFcnJvciAxDQptYWtl WzJdOiBMZWF2aW5nIGRpcmVjdG9yeSBgL2hvbWUvamFtZXNsaXUvV29ya1NwYWNlL2NlcGhfZmlv L3NyYycNCm1ha2VbMV06ICoqKiBbYWxsXSBFcnJvciAyDQptYWtlWzFdOiBMZWF2aW5nIGRpcmVj dG9yeSBgL2hvbWUvamFtZXNsaXUvV29ya1NwYWNlL2NlcGhfZmlvL3NyYycNCm1ha2U6ICoqKiBb YWxsLXJlY3Vyc2l2ZV0gRXJyb3IgMQ0KamFtZXNsaXVAamFtZXNsaXUtT3B0aVBsZXgtNzAxMDp+ L1dvcmtTcGFjZS9jZXBoX2ZpbyQgZ2l0IGJyYW5jaA0KKiBmaW8tb2JqZWN0c3RvcmUNCiAgbWFz dGVyDQoNCg0KUmVnYXJkcywNCkphbWVzDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpG cm9tOiBDYXNleSBCb2RsZXkgW21haWx0bzpjYm9kbGV5QHJlZGhhdC5jb21dIA0KU2VudDogVGh1 cnNkYXksIFNlcHRlbWJlciAwMywgMjAxNSAxMDo0NCBBTQ0KVG86IEphbWVzIChGZWkpIExpdS1T U0kNCkNjOiBjZXBoLWRldmVsQHZnZXIua2VybmVsLm9yZw0KU3ViamVjdDogUmU6IEFib3V0IEZp byBiYWNrZW5kIHdpdGggT2JqZWN0U3RvcmUgQVBJDQoNCkhpIEphbWVzLA0KDQpJJ20gc29ycnkg Zm9yIG5vdCBmb2xsb3dpbmcgdXAgb24gdGhhdCBzZWdmYXVsdCwgYnV0IEkgd2Fzbid0IGV2ZXIg YWJsZSB0byByZXByb2R1Y2UgaXQuIEkgdXNlZCBpdCByZWNlbnRseSBmb3IgbWVtc3RvcmUgdGVz dGluZyB3aXRob3V0IGFueSBwcm9ibGVtcy4gSSB3b25kZXIgaWYgdGhlcmUncyBhIHByb2JsZW0g d2l0aCB0aGUgYXV0b3Rvb2xzIGJ1aWxkPyBJJ3ZlIG9ubHkgdGVzdGVkIGl0IHdpdGggY21ha2Uu IFdoZW4gSSBmaW5kIHNvbWUgdGltZSwgSSdsbCByZWJhc2UgaXQgb24gbWFzdGVyIGFuZCBkbyBh bm90aGVyIHJvdW5kIG9mIHRlc3RpbmcuDQoNCkNhc2V5DQoNCi0tLS0tIE9yaWdpbmFsIE1lc3Nh Z2UgLS0tLS0NCj4gRnJvbTogIkphbWVzIChGZWkpIExpdS1TU0kiIDxqYW1lcy5saXVAc3NpLnNh bXN1bmcuY29tPg0KPiBUbzogIkhhb21haSBXYW5nIiA8aGFvbWFpd2FuZ0BnbWFpbC5jb20+LCAi Q2FzZXkgQm9kbGV5IiANCj4gPGNib2RsZXlAcmVkaGF0LmNvbT4NCj4gQ2M6ICJDYXNleSBCb2Rs ZXkiIDxjYm9kbGV5QGdtYWlsLmNvbT4sICJNYXR0IFcuIEJlbmphbWluIiANCj4gPG1hdHRAY29o b3J0ZnMuY29tPiwgY2VwaC1kZXZlbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU2VudDogV2VkbmVzZGF5 LCBTZXB0ZW1iZXIgMiwgMjAxNSA4OjA2OjE0IFBNDQo+IFN1YmplY3Q6IFJFOiBBYm91dCBGaW8g YmFja2VuZCB3aXRoIE9iamVjdFN0b3JlIEFQSQ0KPiANCj4gSGkgSGFvbWFpIGFuZCBDYXNlLA0K PiAgICAgIERvIHlvdSBoYXZlIGFueSBmaXhlcyBmb3IgdGhhdCBzZWdmYXVsdD8NCj4gDQo+ICAg ICBUaGFua3MsDQo+ICAgICBKYW1lcw0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogSGFvbWFpIFdhbmcgW21haWx0bzpoYW9tYWl3YW5nQGdtYWlsLmNvbV0NCj4gU2Vu dDogV2VkbmVzZGF5LCBKdWx5IDIyLCAyMDE1IDY6MDcgUE0NCj4gVG86IENhc2V5IEJvZGxleQ0K PiBDYzogQ2FzZXkgQm9kbGV5OyBNYXR0IFcuIEJlbmphbWluOyBKYW1lcyAoRmVpKSBMaXUtU1NJ OyANCj4gY2VwaC1kZXZlbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IEFib3V0IEZp byBiYWNrZW5kIHdpdGggT2JqZWN0U3RvcmUgQVBJDQo+IA0KPiBubyBzcGVjaWFsDQo+IA0KPiBb Z2xvYmFsXQ0KPiAjbG9nZ2luZw0KPiAjd3JpdGVfaW9wc19sb2c9d3JpdGVfaW9wc19sb2cNCj4g I3dyaXRlX2J3X2xvZz13cml0ZV9id19sb2cNCj4gI3dyaXRlX2xhdF9sb2c9d3JpdGVfbGF0X2xv Zw0KPiBpb2VuZ2luZT0uL2NlcGgtaW50L3NyYy8ubGlicy9saWJmaW9fY2VwaF9vYmplY3RzdG9y ZS5zbw0KPiBpbnZhbGlkYXRlPTAgIyBtYW5kYXRvcnkNCj4gcnc9d3JpdGUNCj4gI2JzPTRrDQo+ IA0KPiBbZmlsZXN0b3JlXQ0KPiBpb2RlcHRoPTENCj4gIyBjcmVhdGUgYSBqb3VybmFsZWQgZmls ZXN0b3JlDQo+IG9iamVjdHN0b3JlPWZpbGVzdG9yZQ0KPiBkaXJlY3Rvcnk9Li9vc2QvDQo+IGZp bGVzdG9yZV9qb3VybmFsPS4vb3NkL2pvdXJuYWwNCj4gDQo+IE9uIFRodSwgSnVsIDIzLCAyMDE1 IGF0IDQ6NTYgQU0sIENhc2V5IEJvZGxleSA8Y2JvZGxleUByZWRoYXQuY29tPiB3cm90ZToNCj4g PiBIaSBIYW9tYWksDQo+ID4NCj4gPiBTb3JyeSBmb3IgdGhlIGxhdGUgcmVzcG9uc2UsIEkgd2Fz IG91dCBvZiB0aGUgb2ZmaWNlLiBJJ20gYWZyYWlkIEkgDQo+ID4gaGF2ZW4ndCBydW4gaW50byB0 aGF0IHNlZ2ZhdWx0LiBUaGUgaW9fb3BzIHNob3VsZCBiZSBzZXQgYXQgdGhlIHZlcnkgDQo+ID4g YmVnaW5uaW5nIHdoZW4gaXQgY2FsbHMgZ2V0X2lvZW5naW5lKCkuIEFsbCBJIGNhbiBzdWdnZXN0 IGlzIHRoYXQgDQo+ID4geW91IHZlcmlmeSB0aGF0IHlvdXIgam9iIGZpbGUgaXMgcG9pbnRpbmcg dG8gdGhlIGNvcnJlY3QgDQo+ID4gZmlvX2NlcGhfb2JqZWN0c3RvcmUuc28uIElmIHlvdSd2ZSBt YWRlIGFueSBvdGhlciBpbnRlcmVzdGluZyANCj4gPiBjaGFuZ2VzIHRvIHRoZSBqb2IgZmlsZSwg Y291bGQgeW91IHNoYXJlIGl0IGhlcmU/DQo+ID4NCj4gPiBDYXNleQ0KPiA+DQo+ID4gLS0tLS0g T3JpZ2luYWwgTWVzc2FnZSAtLS0tLQ0KPiA+IEZyb206ICJIYW9tYWkgV2FuZyIgPGhhb21haXdh bmdAZ21haWwuY29tPg0KPiA+IFRvOiAiQ2FzZXkgQm9kbGV5IiA8Y2JvZGxleUBnbWFpbC5jb20+ DQo+ID4gQ2M6ICJNYXR0IFcuIEJlbmphbWluIiA8bWF0dEBjb2hvcnRmcy5jb20+LCAiSmFtZXMg KEZlaSkgTGl1LVNTSSINCj4gPiA8amFtZXMubGl1QHNzaS5zYW1zdW5nLmNvbT4sIGNlcGgtZGV2 ZWxAdmdlci5rZXJuZWwub3JnDQo+ID4gU2VudDogVHVlc2RheSwgSnVseSAyMSwgMjAxNSA3OjUw OjMyIEFNDQo+ID4gU3ViamVjdDogUmU6IEFib3V0IEZpbyBiYWNrZW5kIHdpdGggT2JqZWN0U3Rv cmUgQVBJDQo+ID4NCj4gPiBIaSBDYXNleSwNCj4gPg0KPiA+IEkgY2hlY2sgeW91ciBjb21taXRz IGFuZCBrbm93IHdoYXQgeW91IGZpeGVkLiBJIGNoZXJyeS1waWNrZWQgeW91ciANCj4gPiBuZXcg Y29tbWl0cyBidXQgSSBzdGlsbCBtZXQgdGhlIHNhbWUgcHJvYmxlbS4NCj4gPg0KPiA+ICIiIg0K PiA+IEl0J3Mgc3RyYW5nZSB0aGF0IGl0IGFsd2FzeXMgaGl0IHNlZ21lbnQgZmF1bHQgd2hlbiBl bnRlcmluZyANCj4gPiAiX2Zpb19zZXR1cF9jZXBoX2ZpbGVzdG9yZV9kYXRhIiwgZ2RiIHRlbGxz ICJ0ZC0+aW9fb3BzIiBpcyBOVUxMIGJ1dCANCj4gPiB3aGVuIEkgdXAgdGhlIHN0YWNrLCB0aGUg InRkLT5pb19vcHMiIGlzIG5vdCBudWxsLiBNYXliZSBpdCdzIA0KPiA+IHJlbGF0ZWQgdG8gZGxv cGVuPw0KPiA+ICIiIg0KPiA+DQo+ID4gRG8geW91IGhhdmUgYW55IGhpbnQgYWJvdXQgdGhpcz8N Cj4gPg0KPiA+IE9uIFRodSwgSnVsIDE2LCAyMDE1IGF0IDU6MjMgQU0sIENhc2V5IEJvZGxleSA8 Y2JvZGxleUBnbWFpbC5jb20+IHdyb3RlOg0KPiA+PiBIaSBIYW9tYWksDQo+ID4+DQo+ID4+IEkg d2FzIGFibGUgdG8gcnVuIHRoaXMgYWZ0ZXIgYSBjb3VwbGUgY2hhbmdlcyB0byB0aGUgZmlsZXN0 b3JlLmZpbyANCj4gPj4gam9iIGZpbGUuIFR3byBvZiB0aGUgY29uZmlnIG9wdGlvbnMgd2VyZSB1 c2luZyB0aGUgd3JvbmcgbmFtZXMuIEkgDQo+ID4+IHB1c2hlZCBhIGZpeCBmb3IgdGhlIGpvYiBm aWxlLCBhcyB3ZWxsIGFzIGEgcGF0Y2ggdGhhdCByZW5hbWVzIA0KPiA+PiBldmVyeXRoaW5nIGZy b20gZmlsZXN0b3JlIHRvIG9iamVjdHN0b3JlICh0aGFua3MgSmFtZXMpLCB0byANCj4gPj4gaHR0 cHM6Ly9naXRodWIuY29tL2xpbnV4Ym94Mi9saW51eGJveC1jZXBoL2NvbW1pdHMvZmlvLW9iamVj dHN0b3JlLg0KPiA+Pg0KPiA+PiBJIGZvdW5kIHRoYXQgdGhlIHJlYWQgc3VwcG9ydCBkb2Vzbid0 IGFwcGVhciB0byB3b3JrIGFueW1vcmUsIHNvIA0KPiA+PiBnaXZlICJydz13cml0ZSIgYSB0cnku IEFuZCBiZWNhdXNlIGl0IGRvZXMgYSBta2ZzKCksIG1ha2Ugc3VyZSANCj4gPj4geW91J3JlIHBv aW50aW5nIGl0IHRvIGFuIGVtcHR5IHhmcyBkaXJlY3Rvcnkgd2l0aCB0aGUgImRpcmVjdG9yeT0i IG9wdGlvbi4NCj4gPj4NCj4gPj4gQ2FzZXkNCj4gPj4NCj4gPj4gT24gVHVlLCBKdWwgMTQsIDIw MTUgYXQgMjo0NSBBTSwgSGFvbWFpIFdhbmcgPGhhb21haXdhbmdAZ21haWwuY29tPiB3cm90ZToN Cj4gPj4+IEFueW9uZSB3aG8gaGF2ZSBzdWNjZXNzZnVsbHkgcmFuIHRoZSBmaW8gd2l0aCB0aGlz IGV4dGVybmFsIGlvIA0KPiA+Pj4gZW5naW5lIGNlcGhfb2JqZWN0c3RvcmU/DQo+ID4+Pg0KPiA+ Pj4gSXQncyBzdHJhbmdlIHRoYXQgaXQgYWx3YXN5cyBoaXQgc2VnbWVudCBmYXVsdCB3aGVuIGVu dGVyaW5nIA0KPiA+Pj4gIl9maW9fc2V0dXBfY2VwaF9maWxlc3RvcmVfZGF0YSIsIGdkYiB0ZWxs cyAidGQtPmlvX29wcyIgaXMgTlVMTCANCj4gPj4+IGJ1dCB3aGVuIEkgdXAgdGhlIHN0YWNrLCB0 aGUgInRkLT5pb19vcHMiIGlzIG5vdCBudWxsLiBNYXliZSBpdCdzIA0KPiA+Pj4gcmVsYXRlZCB0 byBkbG9wZW4/DQo+ID4+Pg0KPiA+Pj4gT24gRnJpLCBKdWwgMTAsIDIwMTUgYXQgMzo1MSBQTSwg SGFvbWFpIFdhbmcgDQo+ID4+PiA8aGFvbWFpd2FuZ0BnbWFpbC5jb20+DQo+ID4+PiB3cm90ZToN Cj4gPj4+PiBJIGhhdmUgcmViYXNlZCB0aGUgYnJhbmNoIHdpdGggbWFzdGVyLCBhbmQgcHVzaCBp dCB0byBjZXBoIA0KPiA+Pj4+IHVwc3RyZWFtIHJlcG8uIA0KPiA+Pj4+IGh0dHBzOi8vZ2l0aHVi LmNvbS9jZXBoL2NlcGgvY29tcGFyZS9maW8tb2JqZWN0c3RvcmU/ZXhwYW5kPTENCj4gPj4+Pg0K PiA+Pj4+IFBseiBsZXQgbWUga25vdyBpZiB3aG8gaXMgd29ya2luZyBvbiB0aGlzLiBPdGhlcndp c2UsIEkgd291bGQgDQo+ID4+Pj4gbGlrZSB0byBpbXByb3ZlIHRoaXMgdG8gYmUgbWVyZ2UgcmVh ZHkuDQo+ID4+Pj4NCj4gPj4+PiBPbiBGcmksIEp1bCAxMCwgMjAxNSBhdCA0OjI2IEFNLCBNYXR0 IFcuIEJlbmphbWluIA0KPiA+Pj4+IDxtYXR0QGNvaG9ydGZzLmNvbT4NCj4gPj4+PiB3cm90ZToN Cj4gPj4+Pj4gVGhhdCBtYWtlcyBzZW5zZS4NCj4gPj4+Pj4NCj4gPj4+Pj4gTWF0dA0KPiA+Pj4+ Pg0KPiA+Pj4+PiAtLS0tLSAiSmFtZXMgKEZlaSkgTGl1LVNTSSIgPGphbWVzLmxpdUBzc2kuc2Ft c3VuZy5jb20+IHdyb3RlOg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gSGkgQ2FzZXksDQo+ID4+Pj4+PiAg IEdvdCBpdC4gSSB3YXMgZGlyZWN0ZWQgdG8gdGhlIG9sZCBjb2RlIGJhc2UuIEJ5IHRoZSB3YXks IA0KPiA+Pj4+Pj4gU2luY2UgdGhlIHRlc3RpbmcgY2FzZSB3YXMgdXNlZCB0byBleGVyY2lzZSBh bGwgb2Ygb2JqZWN0IHN0b3Jlcy4NCj4gPj4+Pj4+IFN0cm9uZ2x5IHJlY29tbWVuZCB0byBjaGFu Z2UgdGhlIG5hbWUgZnJvbSANCj4gPj4+Pj4+IGZpb19jZXBoX2ZpbGVzdG9yZS5jYyB0byBmaW9f Y2VwaF9vYmplY3RzdG9yZS5jYyAuIEFuZCB0aGUgY29kZSANCj4gPj4+Pj4+IGluIGZpb19jZXBo X2ZpbGVzdG9yZS5jYyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byByZWZsZWN0IHRoYXQgDQo+ID4+ Pj4+PiB0aGUgd2hvbGUgb2JqZWN0c3RvcmUgd2lsbCBiZSBzdXBwb3J0ZWQgYnkgDQo+ID4+Pj4+ PiBmaW9fY2VwaF9vYmplY3RzdG9yZS5jYy4gd2hhdCB5b3UgdGhpbms/DQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4gTGV0IG1lIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgZnJvbSBteSBzaWRlLg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBSZWdhcmRzLA0KPiA+Pj4+Pj4gSmFtZXMNCj4gPj4+ Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+Pj4+PiBGcm9tOiBDYXNleSBCb2RsZXkgW21haWx0bzpjYm9kbGV5QGdtYWlsLmNv bV0NCj4gPj4+Pj4+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDA5LCAyMDE1IDEyOjMyIFBNDQo+ID4+ Pj4+PiBUbzogSmFtZXMgKEZlaSkgTGl1LVNTSQ0KPiA+Pj4+Pj4gQ2M6IEhhb21haSBXYW5nOyBj ZXBoLWRldmVsQHZnZXIua2VybmVsLm9yZw0KPiA+Pj4+Pj4gU3ViamVjdDogUmU6IEFib3V0IEZp byBiYWNrZW5kIHdpdGggT2JqZWN0U3RvcmUgQVBJDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSGkgSmFt ZXMsDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gQXJlIHlvdSBsb29raW5nIGF0IHRoZSBjb2RlIGZyb20g DQo+ID4+Pj4+PiBodHRwczovL2dpdGh1Yi5jb20vbGludXhib3gyL2xpbnV4Ym94LWNlcGgvdHJl ZS9maW8tb2JqZWN0c3RvcmU/DQo+ID4+Pj4+PiBJdCB1c2VzIE9iamVjdFN0b3JlOjpjcmVhdGUo KSBpbnN0ZWFkIG9mIG5ldyBGaWxlU3RvcmUoKS4gVGhpcyANCj4gPj4+Pj4+IGFsbG93cyB1cyB0 byBleGVyY2lzZSBhbGwgb2YgdGhlIG9iamVjdCBzdG9yZXMgd2l0aCB0aGUgc2FtZSBjb2RlLg0K PiA+Pj4+Pj4NCj4gPj4+Pj4+IENhc2V5DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gT24gVGh1LCBKdWwg OSwgMjAxNSBhdCAyOjAxIFBNLCBKYW1lcyAoRmVpKSBMaXUtU1NJIA0KPiA+Pj4+Pj4gPGphbWVz LmxpdUBzc2kuc2Ftc3VuZy5jb20+IHdyb3RlOg0KPiA+Pj4+Pj4gPiBIaSBDYXNleSwNCj4gPj4+ Pj4+ID4gICBIZXJlIGlzIHRoZSBjb2RlIGluIHRoZSBmaW9fY2VwaF9maWxlc3RvcmUuY2MuIEJh c2ljYWxseSwgDQo+ID4+Pj4+PiA+IGl0DQo+ID4+Pj4+PiBjcmVhdGVzIGEgZmlsZXN0b3JlIGFz IGJhY2tlbmQgZW5naW5lIGZvciBJTyBleGVyY2lzZXMuIElmIHdlIA0KPiA+Pj4+Pj4gZ290IHRv IHNlbmQgSU8gY29tbWFuZHMgdG8gS2V5VmFsdWUgU3RvcmUgb3IgTmV3c3RvcmUsIHdlIGdvdCAN Cj4gPj4+Pj4+IHRvIGNoYW5nZSB0aGUgY29kZSBhY2NvcmRpbmdseSwgcmlnaHQ/ICBJIGRpZCBu b3Qgc2VlIGFueSBvdGhlciANCj4gPj4+Pj4+IGZpbGVzIGxpa2UgZmlvX2NlcGhfa2V5dmFsdWVz dG9yZS5jYyBvciBmaW9fY2VwaF9uZXdzdG9yZS5jYy4gDQo+ID4+Pj4+PiBJbiBteSBodW1ibGUg b3Bpbmlvbiwgd2UgbWlnaHQgbmVlZCB0byBjcmVhdGUgb3RoZXIgdHdvIGZpbyANCj4gPj4+Pj4+ IGVuZ2luZXMgZm9yIGtleXZhbHVlc3RvcmUgYW5kIG5ld3N0b3JlIGlmIHdlIHdhbnQgdG8gZXhl cmNpc2UgDQo+ID4+Pj4+PiB0aGVzZSB0d28sIHJpZ2h0Pw0KPiA+Pj4+Pj4gPg0KPiA+Pj4+Pj4g PiBSZWdhcmRzLA0KPiA+Pj4+Pj4gPiBKYW1lcw0KPiA+Pj4+Pj4gPg0KPiA+Pj4+Pj4gPiBzdGF0 aWMgaW50IGZpb19jZXBoX2ZpbGVzdG9yZV9pbml0KHN0cnVjdCB0aHJlYWRfZGF0YSAqdGQpDQo+ ID4+Pj4+PiA+IDIwOSB7DQo+ID4+Pj4+PiA+IDIxMCAgICAgdmVjdG9yPGNvbnN0IGNoYXIqPiBh cmdzOw0KPiA+Pj4+Pj4gPiAyMTEgICAgIHN0cnVjdCBjZXBoX2ZpbGVzdG9yZV9kYXRhICpjZXBo X2ZpbGVzdG9yZV9kYXRhID0gKHN0cnVjdA0KPiA+Pj4+Pj4gY2VwaF9maWxlc3RvcmVfZGF0YSAq KSB0ZC0+aW9fb3BzLT5kYXRhOw0KPiA+Pj4+Pj4gPiAyMTIgICAgIE9iamVjdFN0b3JlOjpUcmFu c2FjdGlvbiBmdDsNCj4gPj4+Pj4+ID4gMjEzDQo+ID4+Pj4+PiA+DQo+ID4+Pj4+PiA+IDIxNCAg ICAgZ2xvYmFsX2luaXQoTlVMTCwgYXJncywgQ0VQSF9FTlRJVFlfVFlQRV9PU0QsDQo+ID4+Pj4+ PiBDT0RFX0VOVklST05NRU5UX1VUSUxJVFksIDApOw0KPiA+Pj4+Pj4gPiAyMTUgICAgIC8vZ19j b25mLT5qb3VybmFsX2RpbyA9IGZhbHNlOw0KPiA+Pj4+Pj4gPiAyMTYgICAgIGNvbW1vbl9pbml0 X2ZpbmlzaChnX2NlcGhfY29udGV4dCk7DQo+ID4+Pj4+PiA+IDIxNyAgICAgLy9nX2NlcGhfY29u dGV4dC0+X2NvbmYtPnNldF92YWwoImRlYnVnX2ZpbGVzdG9yZSIsICIyMCIpOw0KPiA+Pj4+Pj4g PiAyMTggICAgIC8vZ19jZXBoX2NvbnRleHQtPl9jb25mLT5zZXRfdmFsKCJkZWJ1Z190aHJvdHRs ZSIsICIyMCIpOw0KPiA+Pj4+Pj4gPiAyMTkgICAgIGdfY2VwaF9jb250ZXh0LT5fY29uZi0+YXBw bHlfY2hhbmdlcyhOVUxMKTsNCj4gPj4+Pj4+ID4gMjIwDQo+ID4+Pj4+PiA+DQo+ID4+Pj4+PiA+ IDIyMSAgICAgY2VwaF9maWxlc3RvcmVfZGF0YS0+b3NkX3BhdGggPQ0KPiA+Pj4+Pj4gc3RyZHVw KCIvbW50L2Zpb19jZXBoX2ZpbGVzdG9yZS5YWFhYWFhYIik7DQo+ID4+Pj4+PiA+IDIyMiAgICAg Y2VwaF9maWxlc3RvcmVfZGF0YS0+am91cm5hbF9wYXRoID0NCj4gPj4+Pj4+IHN0cmR1cCgiL3Zh ci9saWIvY2VwaC9vc2Qvam91cm5hbC1yYW0vZmlvX2NlcGhfZmlsZXN0b3JlLlhYWFhYWFgiDQo+ ID4+Pj4+PiApOw0KPiA+Pj4+Pj4gPiAyMjMNCj4gPj4+Pj4+ID4NCj4gPj4+Pj4+ID4gMjI0ICAg ICBpZiAoIW1rZHRlbXAoY2VwaF9maWxlc3RvcmVfZGF0YS0+b3NkX3BhdGgpKSB7DQo+ID4+Pj4+ PiA+IDIyNSAgICAgICAgICAgICBjb3V0IDw8ICJta2R0ZW1wIGZhaWxlZDogIiA8PCBzdHJlcnJv cihlcnJubykgPDwNCj4gPj4+Pj4+IHN0ZDo6ZW5kbDsNCj4gPj4+Pj4+ID4gMjI2ICAgICAgICAg ICAgIHJldHVybiAxOw0KPiA+Pj4+Pj4gPiAyMjcgICAgIH0NCj4gPj4+Pj4+ID4gMjI4ICAgICAv L21rdGVtcChjZXBoX2ZpbGVzdG9yZV9kYXRhLT5qb3VybmFsX3BhdGgpOyAvLyBOT1NQQyBpc3N1 ZQ0KPiA+Pj4+Pj4gPiAyMjkNCj4gPj4+Pj4+ID4NCj4gPj4+Pj4+ID4gMjMwICAgICBPYmplY3RT dG9yZSAqZnMgPSBuZXcNCj4gPj4+Pj4+IEZpbGVTdG9yZShjZXBoX2ZpbGVzdG9yZV9kYXRhLT5v c2RfcGF0aCwNCj4gPj4+Pj4+IGNlcGhfZmlsZXN0b3JlX2RhdGEtPmpvdXJuYWxfcGF0aCk7DQo+ ID4+Pj4+PiA+IDIzMSAgICAgY2VwaF9maWxlc3RvcmVfZGF0YS0+ZnMgPSBmczsNCj4gPj4+Pj4+ ID4gMjMyDQo+ID4+Pj4+PiA+DQo+ID4+Pj4+PiA+IDIzMyAgICAgaWYgKGZzLT5ta2ZzKCkgPCAw KSB7DQo+ID4+Pj4+PiA+IDIzNCAgICAgICAgICAgICBjb3V0IDw8ICJta2ZzIGZhaWxlZCIgPDwg c3RkOjplbmRsOw0KPiA+Pj4+Pj4gPiAyMzUgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQo+ID4+ Pj4+PiA+IDIzNiAgICAgfQ0KPiA+Pj4+Pj4gPiAyMzcNCj4gPj4+Pj4+ID4gMjM4ICAgICBpZiAo ZnMtPm1vdW50KCkgPCAwKSB7DQo+ID4+Pj4+PiA+IDIzOSAgICAgICAgICAgICBjb3V0IDw8ICJt b3VudCBmYWlsZWQiIDw8IHN0ZDo6ZW5kbDsNCj4gPj4+Pj4+ID4gMjQwICAgICAgICAgICAgIGdv dG8gZmFpbGVkOw0KPiA+Pj4+Pj4gPiAyNDEgICAgIH0NCj4gPj4+Pj4+ID4gMjQyDQo+ID4+Pj4+ PiA+DQo+ID4+Pj4+PiA+IDI0MyAgICAgZnQuY3JlYXRlX2NvbGxlY3Rpb24oY29sbF90KCkpOw0K PiA+Pj4+Pj4gPiAyNDQgICAgIGZzLT5hcHBseV90cmFuc2FjdGlvbihmdCk7DQo+ID4+Pj4+PiA+ IDI0NQ0KPiA+Pj4+Pj4gPg0KPiA+Pj4+Pj4gPiAyNDYNCj4gPj4+Pj4+ID4NCj4gPj4+Pj4+ID4g MjQ3ICAgICByZXR1cm4gMDsNCj4gPj4+Pj4+ID4gMjQ4DQo+ID4+Pj4+PiA+DQo+ID4+Pj4+PiA+ IDI0OSBmYWlsZWQ6DQo+ID4+Pj4+PiA+IDI1MCAgICAgcmV0dXJuIDE7DQo+ID4+Pj4+PiA+IDI1 MQ0KPiA+Pj4+Pj4gPg0KPiA+Pj4+Pj4gPiAyNTIgfQ0KPiA+Pj4+Pj4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4gPiBGcm9tOiBDYXNleSBCb2RsZXkgW21haWx0bzpjYm9k bGV5QGdtYWlsLmNvbV0NCj4gPj4+Pj4+ID4gU2VudDogVGh1cnNkYXksIEp1bHkgMDksIDIwMTUg OToxOSBBTQ0KPiA+Pj4+Pj4gPiBUbzogSmFtZXMgKEZlaSkgTGl1LVNTSQ0KPiA+Pj4+Pj4gPiBD YzogSGFvbWFpIFdhbmc7IGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnDQo+ID4+Pj4+PiA+IFN1 YmplY3Q6IFJlOiBBYm91dCBGaW8gYmFja2VuZCB3aXRoIE9iamVjdFN0b3JlIEFQSQ0KPiA+Pj4+ Pj4gPg0KPiA+Pj4+Pj4gPiBIaSBKYW1lcywNCj4gPj4+Pj4+ID4NCj4gPj4+Pj4+ID4gSW4gdGhl IGpvYiBmaWxlIHNyYy90ZXN0L2ZpbGVzdG9yZS5maW8sIHlvdSBjYW4gbW9kaWZ5IHRoZSANCj4g Pj4+Pj4+ID4gbGluZSAib2JqZWN0c3RvcmU9ZmlsZXN0b3JlIiB0byB1c2UgYW55IG9iamVjdHN0 b3JlIHR5cGUgDQo+ID4+Pj4+PiA+IHN1cHBvcnRlZCBieQ0KPiA+Pj4+Pj4gdGhlDQo+ID4+Pj4+ PiA+IE9iamVjdFN0b3JlOjpjcmVhdGUoKSBmYWN0b3J5Lg0KPiA+Pj4+Pj4gPg0KPiA+Pj4+Pj4g PiBDYXNleQ0KPiA+Pj4+Pj4gPg0KPiA+Pj4+Pj4gPiBPbiBXZWQsIEp1bCA4LCAyMDE1IGF0IDg6 MDIgUE0sIEphbWVzIChGZWkpIExpdS1TU0kNCj4gPj4+Pj4+IDxqYW1lcy5saXVAc3NpLnNhbXN1 bmcuY29tPiB3cm90ZToNCj4gPj4+Pj4+ID4+IEhpIENhc2V5LA0KPiA+Pj4+Pj4gPj4gICBRdWlj ayBxdWVzdGlvbnMsIFRoZSBjb2RlIGluIHRoZSB0cnVuayBvbmx5IGNvdmVyIHRoZSB0ZXN0IA0K PiA+Pj4+Pj4gPj4gZm9yDQo+ID4+Pj4+PiBmaWxlc3RvcmUuIEkgd2FzIHdvbmRlcmluZyBkbyB5 b3UgaGF2ZSBhbnkgcGxhbiB0byBjb3ZlciB0aGUgDQo+ID4+Pj4+PiB0ZXN0IGZvciBrdnN0b3Jl IGFuZCBuZXdzdG9yZT8NCj4gPj4+Pj4+ID4+DQo+ID4+Pj4+PiA+PiAgIFRoYW5rcywNCj4gPj4+ Pj4+ID4+ICAgSmFtZXMNCj4gPj4+Pj4+ID4+DQo+ID4+Pj4+PiA+PiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4gPj4gRnJvbTogY2VwaC1kZXZlbC1vd25lckB2Z2VyLmtlcm5l bC5vcmcgDQo+ID4+Pj4+PiA+PiBbbWFpbHRvOmNlcGgtZGV2ZWwtb3duZXJAdmdlci5rZXJuZWwu b3JnXSBPbiBCZWhhbGYgT2YgSmFtZXMNCj4gPj4+Pj4+ID4+IChGZWkpDQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4gPj4gTGl1LVNTSQ0KPiA+Pj4+Pj4gPj4gU2VudDogVHVlc2RheSwgSnVuZSAzMCwgMjAx NSAyOjE5IFBNDQo+ID4+Pj4+PiA+PiBUbzogQ2FzZXkgQm9kbGV5DQo+ID4+Pj4+PiA+PiBDYzog SGFvbWFpIFdhbmc7IGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnDQo+ID4+Pj4+PiA+PiBTdWJq ZWN0OiBSRTogQWJvdXQgRmlvIGJhY2tlbmQgd2l0aCBPYmplY3RTdG9yZSBBUEkNCj4gPj4+Pj4+ ID4+DQo+ID4+Pj4+PiA+PiBIaSBDYXNleSwNCj4gPj4+Pj4+ID4+DQo+ID4+Pj4+PiA+PiAgIFRo YW5rcyBhIGxvdC4NCj4gPj4+Pj4+ID4+DQo+ID4+Pj4+PiA+PiAgIFJlZ2FyZHMsDQo+ID4+Pj4+ PiA+PiAgIEphbWVzDQo+ID4+Pj4+PiA+Pg0KPiA+Pj4+Pj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4+Pj4+ID4+IEZyb206IENhc2V5IEJvZGxleSBbbWFpbHRvOmNib2RsZXlA Z21haWwuY29tXQ0KPiA+Pj4+Pj4gPj4gU2VudDogVHVlc2RheSwgSnVuZSAzMCwgMjAxNSAyOjE2 IFBNDQo+ID4+Pj4+PiA+PiBUbzogSmFtZXMgKEZlaSkgTGl1LVNTSQ0KPiA+Pj4+Pj4gPj4gQ2M6 IEhhb21haSBXYW5nOyBjZXBoLWRldmVsQHZnZXIua2VybmVsLm9yZw0KPiA+Pj4+Pj4gPj4gU3Vi amVjdDogUmU6IEFib3V0IEZpbyBiYWNrZW5kIHdpdGggT2JqZWN0U3RvcmUgQVBJDQo+ID4+Pj4+ PiA+Pg0KPiA+Pj4+Pj4gPj4gSGksDQo+ID4+Pj4+PiA+Pg0KPiA+Pj4+Pj4gPj4gV2hlbiBEYW5u eSBBbC1HYWFmICYgRGFuaWVsIEdvbGx1YiBwdWJsaXNoZWQgIkNlcGggDQo+ID4+Pj4+PiA+PiBQ ZXJmb3JtYW5jZQ0KPiA+Pj4+Pj4gPj4gQW5hbHlzaXM6IGZpbyBhbmQgUkJEIiBhdA0KPiA+Pj4+ Pj4gPj4NCj4gPj4+Pj4+IGh0dHBzOi8vdGVsZWtvbWNsb3VkLmdpdGh1Yi5pby9jZXBoLzIwMTQv MDIvMjYvY2VwaC1wZXJmb3JtYW5jZQ0KPiA+Pj4+Pj4gLWENCj4gPj4+Pj4+IG5hbHkNCj4gPj4+ Pj4+ID4+IHMgaXNfZmlvX3JiZC5odG1sLCB0aGV5IGFsc28gbWVudGlvbmVkIGEgZmlvIGVuZ2lu ZSB0aGF0IA0KPiA+Pj4+Pj4gPj4gbGlua2VkIGRpcmVjdGx5IGludG8gY2VwaCdzIEZpbGVTdG9y ZS4gSSB3YXMgYWJsZSB0byBmaW5kIA0KPiA+Pj4+Pj4gPj4gRGFuaWVsJ3MgYnJhbmNoDQo+ID4+ Pj4+PiBvbg0KPiA+Pj4+Pj4gPj4gZ2l0aHViIGF0DQo+ID4+Pj4+PiA+PiBodHRwczovL2dpdGh1 Yi5jb20vZ29sbHViL2NlcGgvdHJlZS9maW9fZmlsZXN0b3JlX3YyLCBhbmQNCj4gPj4+Pj4+IGRp ZCBzb21lIG1vcmUgd29yayBvbiBpdCBhdCB0aGUgdGltZS4NCj4gPj4+Pj4+ID4+DQo+ID4+Pj4+ PiA+PiBJIGp1c3QgcmViYXNlZCB0aGF0IHdvcmsgb250byB0aGUgbGF0ZXN0IGNlcGggbWFzdGVy IGJyYW5jaCwgDQo+ID4+Pj4+PiA+PiBhbmQNCj4gPj4+Pj4+IHB1c2hlZCB0byBvdXIgZ2l0aHVi IGF0DQo+ID4+Pj4+PiBodHRwczovL2dpdGh1Yi5jb20vbGludXhib3gyL2xpbnV4Ym94LWNlcGgv dHJlZS9maW8tb2JqZWN0c3RvcmUuDQo+ID4+Pj4+PiBZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBp biBzcmMvdGVzdC9maW9fY2VwaF9maWxlc3RvcmUuY2MsIGFuZCANCj4gPj4+Pj4+IHJ1biBmaW8g d2l0aCB0aGUgcHJvdmlkZWQgZXhhbXBsZSBmaW8gam9iIGZpbGUgaW4gDQo+ID4+Pj4+PiBzcmMv dGVzdC9maWxlc3RvcmUuZmlvLg0KPiA+Pj4+Pj4gPj4NCj4gPj4+Pj4+ID4+IEkgZGlkbid0IGhh dmUgYSBjaGFuY2UgdG8gY29uZmlybSB0aGF0IGl0IGJ1aWxkcyB3aXRoIA0KPiA+Pj4+Pj4gPj4g YXV0b21ha2UsIGJ1dA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ID4+IHRoZSBjbWFrZSB2ZXJzaW9uIGJ1 aWx0IGZvciBtZS4gSSdtIGhhcHB5IHRvIGhlbHAgaWYgeW91IHJ1biANCj4gPj4+Pj4+ID4+IGlu dG8gcHJvYmxlbXMsIENhc2V5DQo+ID4+Pj4+PiA+Pg0KPiA+Pj4+Pj4gPj4gT24gVHVlLCBKdW4g MzAsIDIwMTUgYXQgMjozMSBQTSwgSmFtZXMgKEZlaSkgTGl1LVNTSQ0KPiA+Pj4+Pj4gPGphbWVz LmxpdUBzc2kuc2Ftc3VuZy5jb20+IHdyb3RlOg0KPiA+Pj4+Pj4gPj4+IEhpIEhhb21haSwNCj4g Pj4+Pj4+ID4+PiAgIFdoYXQgYXJlIHlvdSB0cnlpbmcgdG8gYXNrIGlzIHRvIGJlbmNobWFyayBs b2NhbA0KPiA+Pj4+Pj4gb2JqZWN0c3RvcmUobGlrZSBrdnN0b3JlL2ZpbGVzdG9yZS9uZXdzdG9y ZSkgbG9jYWxseSB3aXRoIA0KPiA+Pj4+Pj4gRklPKE9iamVjdFN0b3JlIGVuZ2luZSk/IFlvdSB3 YW50IHRvIHB1cmVseSBjb21wYXJlIHRoZSANCj4gPj4+Pj4+IHBlcmZvcm1hbmNlIGxvY2FsbHkg Zm9yIHRoZXNlIG9iamVjdHN0b3JlcywgcmlnaHQ/DQo+ID4+Pj4+PiA+Pj4NCj4gPj4+Pj4+ID4+ PiAgIFJlZ2FyZHMsDQo+ID4+Pj4+PiA+Pj4gICBKYW1lcw0KPiA+Pj4+Pj4gPj4+DQo+ID4+Pj4+ PiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+ID4+PiBGcm9tOiBjZXBo LWRldmVsLW93bmVyQHZnZXIua2VybmVsLm9yZyANCj4gPj4+Pj4+ID4+PiBbbWFpbHRvOmNlcGgt ZGV2ZWwtb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYgT2YgDQo+ID4+Pj4+PiA+Pj4g SGFvbWFpDQo+ID4+Pj4+PiBXYW5nDQo+ID4+Pj4+PiA+Pj4gU2VudDogVHVlc2RheSwgSnVuZSAz MCwgMjAxNSA5OjA2IEFNDQo+ID4+Pj4+PiA+Pj4gVG86IGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwu b3JnDQo+ID4+Pj4+PiA+Pj4gU3ViamVjdDogQWJvdXQgRmlvIGJhY2tlbmQgd2l0aCBPYmplY3RT dG9yZSBBUEkNCj4gPj4+Pj4+ID4+Pg0KPiA+Pj4+Pj4gPj4+IEhpIGFsbCwNCj4gPj4+Pj4+ID4+ Pg0KPiA+Pj4+Pj4gPj4+IExvbmcgbG9uZyBhZ28sIGlzIHRoZXJlIHNvbWVvbmUgc2FpZCBhYm91 dCBmaW8gYmFja2VuZCB3aXRoIA0KPiA+Pj4+Pj4gPj4+IENlcGgNCj4gPj4+Pj4+IE9iamVjdFN0 b3JlIEFQST8gU28gd2UgY291bGQgdXNlIHRoZSBleGlzdGluZyBtYXR1cmUgZmlvIA0KPiA+Pj4+ Pj4gZmFjaWxpdHkgdG8gYmVuY2htYXJrIGNlcGggb2JqZWN0c3RvcmUuDQo+ID4+Pj4+PiA+Pj4N Cj4gPj4+Pj4+ID4+PiAtLQ0KPiA+Pj4+Pj4gPj4+IEJlc3QgUmVnYXJkcywNCj4gPj4+Pj4+ID4+ Pg0KPiA+Pj4+Pj4gPj4+IFdoZWF0DQo+ID4+Pj4+PiA+Pj4gLS0NCj4gPj4+Pj4+ID4+PiBUbyB1 bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUNCj4g Pj4+Pj4+IGNlcGgtZGV2ZWwiDQo+ID4+Pj4+PiA+Pj4gaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdl IHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9yZQ0KPiA+Pj4+Pj4gbWFqb3Jkb21vDQo+ ID4+Pj4+PiA+Pj4gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5m by5odG1sDQo+ID4+Pj4+PiA+PiAgIHsubiArICAgICAgICslICBsendtICBiIOunsiAgciAgecep INevelggICAgINyofSAgIMageiAmajordiAgICAgICAgelorDQo+ID4+Pj4+PiAgK3pmICAgaCAg IH4gICAgaSAgIHogICB3ICAgPyAgICAmICnfoiBmDQo+ID4+Pj4+PiBOICAgICByICB5ICAgYiBY ICDHp3YgXiAp3rp7Lm4gKyAgIHogXXogICB7YXkgyofamSAsaiAgZiAgIGggICB6ICB3DQo+ID4+ Pj4+PiAgICAgajordiAgIHcgaiBtICAgICAgICB6WisgIN2iaiINCj4gPj4+Pj4NCj4gPj4+Pj4g LS0NCj4gPj4+Pj4gTWF0dCBCZW5qYW1pbg0KPiA+Pj4+PiBDb2hvcnRGUywgTExDLg0KPiA+Pj4+ PiAzMTUgV2VzdCBIdXJvbiBTdHJlZXQsIFN1aXRlIDE0MEEgQW5uIEFyYm9yLCBNaWNoaWdhbiA0 ODEwMw0KPiA+Pj4+Pg0KPiA+Pj4+PiBodHRwOi8vY29ob3J0ZnMuY29tDQo+ID4+Pj4+DQo+ID4+ Pj4+IHRlbC4gIDczNC03NjEtNDY4OQ0KPiA+Pj4+PiBmYXguICA3MzQtNzY5LTg5MzgNCj4gPj4+ Pj4gY2VsLiAgNzM0LTIxNi01MzA5DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gLS0N Cj4gPj4+PiBCZXN0IFJlZ2FyZHMsDQo+ID4+Pj4NCj4gPj4+PiBXaGVhdA0KPiA+Pj4NCj4gPj4+ DQo+ID4+Pg0KPiA+Pj4gLS0NCj4gPj4+IEJlc3QgUmVnYXJkcywNCj4gPj4+DQo+ID4+PiBXaGVh dA0KPiA+DQo+ID4NCj4gPg0KPiA+IC0tDQo+ID4gQmVzdCBSZWdhcmRzLA0KPiA+DQo+ID4gV2hl YXQNCj4gPiAtLQ0KPiA+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBs aW5lICJ1bnN1YnNjcmliZSBjZXBoLWRldmVsIg0KPiA+IGluIHRoZSBib2R5IG9mIGEgbWVzc2Fn ZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vIA0KPiA+IGluZm8g YXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiANCj4gDQo+ IA0KPiAtLQ0KPiBCZXN0IFJlZ2FyZHMsDQo+IA0KPiBXaGVhdA0KPiBOICAgICByICB5ICAgYiBY ICDHp3YgXiAp3rp7Lm4gKyAgIHogXXogICB7YXkgyofamSAsaiAgZiAgIGggICB6ICB3ICAgICAg ag0KPiA6K3YgICB3IGogbSAgICAgICAgelorICDdomoiICANCg==