Return-Path: X-Original-To: apmail-cloudstack-dev-archive@www.apache.org Delivered-To: apmail-cloudstack-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6961C10665 for ; Thu, 19 Sep 2013 17:25:44 +0000 (UTC) Received: (qmail 856 invoked by uid 500); 19 Sep 2013 17:25:43 -0000 Delivered-To: apmail-cloudstack-dev-archive@cloudstack.apache.org Received: (qmail 816 invoked by uid 500); 19 Sep 2013 17:25:43 -0000 Mailing-List: contact dev-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list dev@cloudstack.apache.org Received: (qmail 805 invoked by uid 99); 19 Sep 2013 17:25:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Sep 2013 17:25:42 +0000 X-ASF-Spam-Status: No, hits=-5.0 required=5.0 tests=RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of kelven.yang@citrix.com designates 66.165.176.89 as permitted sender) Received: from [66.165.176.89] (HELO SMTP.CITRIX.COM) (66.165.176.89) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Sep 2013 17:25:39 +0000 X-IronPort-AV: E=Sophos;i="4.90,938,1371081600"; d="scan'208";a="55591149" Received: from sjcpex01cl01.citrite.net ([10.216.14.143]) by FTLPIPO01.CITRIX.COM with ESMTP/TLS/AES128-SHA; 19 Sep 2013 17:25:17 +0000 Received: from SJCPEX01CL02.citrite.net ([169.254.2.131]) by SJCPEX01CL01.citrite.net ([10.216.14.143]) with mapi id 14.02.0342.004; Thu, 19 Sep 2013 10:25:16 -0700 From: Kelven Yang To: "dev@cloudstack.apache.org" Subject: Re: [PROPOSAL] Storage Subsystem API Interface Additions Thread-Topic: [PROPOSAL] Storage Subsystem API Interface Additions Thread-Index: AQHOtGm9VXpfq4LBS0KZzrJc+MaGK5nMH6cAgABh9ICAAO7yAP//4QYA Date: Thu, 19 Sep 2013 17:25:15 +0000 Message-ID: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/14.2.3.120616 x-originating-ip: [10.216.48.12] Content-Type: text/plain; charset="euc-kr" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org DQoNCk9uIDkvMTkvMTMgNToxNiBBTSwgIlN1aWNoSUksIENocmlzdG9waGVyIiA8Q2hyaXMuU3Vp Y2hAbmV0YXBwLmNvbT4gd3JvdGU6DQoNCj5Kb2huIC0gYW55IGNoYW5jZSB3ZSBjYW4gZ2V0IHlv dXIgaW5wdXQgb24gdGhlIG9yaWdpbmFsIHRvcGljLiBNaWtlcw0KPmNvbW1lbnQgd2FzIGEga2lu ZCBvZiB1bnJlbGF0ZWQgKGJ1dCBhIGNvbXBsZXRlbHkgdmFsaWQgdG9waWMgdGhhdCBJJ2QNCj5s aWtlIHRvIGJlIGEgcGFydCBvZiBkaXNjdXNzaW5nIGFueXdheSEpLg0KPg0KPk1pa2UgLSBhcmUg eW91IHBsYW5uaW5nIG9uIGltcGxlbWVudGluZyB0aGUgc25hcHNob3R0aW5nIG1ldGhvZHMgb2Yg dGhlDQo+c3RvcmFnZSBzdWJzeXN0ZW0gQVBJIGFueXRpbWUgaW4gdGhlIG5lYXIgZnV0dXJlPw0K Pg0KPktlbHZpbiBvciBEYXJyZW4sIGRvIHlvdSBoYXZlIHRob3VnaHRzIG9uIGhvdyB0aG91Z2h0 cyBvbiBob3cgdGhpcyB3aWxsDQo+d29yayByZWdhcmRpbmcgdGhlIHVzZXIgZXhwZXJpZW5jZT8g QXMgYSB1c2VyLCBJIHdvdWxkIGJlIHF1aXRlIGFubm95ZWQNCj5pZiBJIGhhZCB0byBiYWNrIHVw IGFsbCBvZiBteSB2bXMgb25lIGF0IGEgYSB0aW1lLiBJIGd1ZXNzIEknbSBzdGlsbCBub3QNCj5z dXJlIEkgdW5kZXJzdGFuZCB0aGUgb3Bwb3NpdGlvbiB0byBhbGxvd2luZyB1c2VycyB0byBwZXJm b3JtIGFuIGFjdGlvbg0KPm9uIG1vcmUgdGhhbiBvbmUgb2JqZWN0IGF0IGEgdGltZS4gSSBrbm93 IHRoYXQgaXMga2luZCBvZiBhIGZvcmVpZ24NCj5jb25jZXB0IGluIENsb3VkU3RhY2sgcmlnaHQg bm93LCBhcyB0aGUgVUkgZG9lc24ndCBzdXBwb3J0IGl0LCBidXQgdGhhdA0KPmlzIHNvbWV0aGlu ZyBJIGFtIGN1cnJlbnRseSB3b3JraW5nIG9uIGFueSAoZXh0ZW5kaW5nIHRoZSBVSSB0byBzdXBw b3J0DQo+dGhpcykuIElmIGl0IGlzIHN0cmljdGx5IGEgbWF0dGVyIG9mIG1ha2luZyBzdXJlIHRo ZSB1c2VyJ3MgZXhwZWN0YXRpb25zDQo+cmVnYXJkaW5nIGNvbnNpc3RlbmN5IGFyZSBpbiBsaW5l IHdpdGggd2hhdCBoYXBwZW5zLCB0aGVuIEkgdGhpbmsgdGhhdCBpcw0KPmEgc2VwYXJhdGUgZGlz Y3Vzc2lvbi4NCj4NCj5NYXliZSBvdGhlcnMgd291bGQgZmluZCBpdCB1c2VmdWwgdG8gaGF2ZSBh biBBUEkgbGlrZSB0aGlzIGV4cG9zZWQgaWYNCj50aGV5IGFyZSBpbnRlcmFjdGluZyB3aXRoIENs b3VkU3RhY2sgZGlyZWN0bHkgdGhyb3VnaCB0aGUgQVBJcyByYXRoZXINCj50aGFuIHRoZSBVSS4g SW1hZ2luZSBiZWluZyBhIGRldmVsb3BlciBjb25zdW1pbmcgb3VyIEFQSXMuIEl0IGNlcnRhaW5s eQ0KPnNlZW1zIGNsZWFuZXIgKGF0IGxlYXN0IHRvIG1lKSwgdG8gbGV0IHRoZSB1c2VyIGNhbGwg b25lIEFQSSB3aXRoIGEgbGlzdA0KPm9mIHZtcyB0byBiYWNrdXAgdGhlbSBhbGwgdXAgaW5zdGVh ZCBvZiB0aGVtIHJlcXVpcmluZyB0byBsb29wIGFyb3VuZCBhcw0KPm1hbnkgdm1zIGFzIHRoZXkg d2FudCBhbmQgaGF2aW5nIHRvIGNhbGwgdGhlIHNhbWUgQVBJIHRoYXQgbWFueSB0aW1lcy4NCj4N Cj5UbyBiZSBwZXJmZWN0bHkgY2xlYXIsIEtlbHZpbiwgdGhlIGJlbmVmaXQgdG8gcHJvcGFnYXRp bmcgdGhlIGFiaWxpdHkgdG8NCj5iYWNrdXAgbXVsdGlwbGUgdm0gdm9sdW1lcyBhdCBvbmNlIHRv IHRoZSBVSSBpcyBhYm91dCBlYXNlIG9mIHVzZSBmb3INCj51c2VycyBhbmQgZWFzZSBvZiBkZXZl bG9wbWVudCBmb3IgdXMgLSB1cyBiZWluZyBDUyBkZXZlbG9wZXJzLCBDUyBwbHVnaW4NCj5kZXZl bG9wZXJzIGFuZCBDUyBBUEkgY29uc3VtZXJzLg0KDQpBcyB5b3Ugc3RpbGwgaGF2ZSB0byBjb21w b3NlIHRoZSBsaXN0IG9mIHZvbHVtZXMgeW91IHdhbnQgdG8gc3VibWl0IHRvIHRoZQ0KQVBJLCB0 aGUgcmVhbCBkaWZmZXJlbmNlIGlzIHRoYXQgeW91IHN1Ym1pdCBpbiBhIGxvb3Agb3IgaW4gb25l IGNhbGwsIGZyb20NCnVzZXIgZXhwZXJpZW5jZSBwZXJzcGVjdGl2ZSwgIHlvdSBjYW4gYWx3YXlz IGhhdmUgdGhlIHNhbWUgZXhwZXJpZW5jZSAoaXQNCmlzIHRoZSBtYXR0ZXIgb2YgVUkgaW1wbGVt ZW50YXRpb24pLiBPbiB0aGUgZmxpcHBpbmcgc2lkZSwgc2luY2UgbXVsdGlwbGUNCnZvbHVtZSBz bmFwc2hvdHMgbWF5IGhhdmUgaW5kZXBlbmRlbnQgbGlmZSBjeWNsZXMsIGlmIHdlIHdhbnQgdG8g dHJhY2sNCnRoZXNlIHNwYXduZWQgdGFza3MgYW5kIHBlcmZvcm0gZ3JhY2VmdWwgZXJyb3IgaGFu ZGxpbmcsIGl0IHdpbGwNCmNvbXBsaWNhdGUgdGhlIEFQSSBkZXNpZ24uIFVubGVzcyB0aGUgcm91 bmQtdHJpcCBjb3N0IG9mIGhhdmluZyBtdWx0aXBsZQ0KY2FsbHMgYmVjb21lcyBzaWduaWZpY2Fu dCwgdGhlIGJlbmVmaXQgb2YgZG9pbmcgc28gbWF5IG5vdCBzb3VuZCBhcw0KdmFsdWFibGUgYXMg aXQgaXMuDQoNCi1LZWx2ZW4gDQoNCg0KPg0KPi0tIA0KPkNocmlzIFN1aWNoDQo+Y2hyaXMuc3Vp Y2hAbmV0YXBwLmNvbQ0KPk5ldEFwcCBTb2Z0d2FyZSBFbmdpbmVlcg0KPkRhdGEgQ2VudGVyIFBs YXRmb3JtcyChqSBDbG91ZCBTb2x1dGlvbnMNCj5DaXRyaXgsIENpc2NvICYgUmVkIEhhdA0KPg0K Pk9uIFNlcCAxOSwgMjAxMywgYXQgMTowMCBBTSwgS2VsdmVuIFlhbmcgPGtlbHZlbi55YW5nQGNp dHJpeC5jb20+IHdyb3RlOg0KPg0KPj4gDQo+PiANCj4+IE9uIDkvMTgvMTMgOToxMCBBTSwgIkRh cnJlbiBTaGVwaGVyZCIgPGRhcnJlbi5zLnNoZXBoZXJkQGdtYWlsLmNvbT4NCj4+d3JvdGU6DQo+ PiANCj4+PiBIZXJlJ3MgbXkgZ2VuZXJhbCBjb25jZXJuIGFib3V0IG11bHRpcGxlIHZvbHVtZSBz bmFwc2hvdHMgYXQgb25jZS4NCj4+PkdpdmluZw0KPj4+IHN1Y2ggYSBmZWF0dXJlIGxlYWRzIHRo ZSB1c2VyIHRvIGJlbGlldmUgdGhhdCBzbmFwc2hvdHRpbmcgbXVsdGlwbGUNCj4+PiB2b2x1bWVz DQo+Pj4gYXQgb25jZSB3aWxsIGdpdmUgdGhlbSBjb25zaXN0ZW5jeSBhY3Jvc3MgdGhlIHZvbHVt ZXMgaW4gdGhlIHNuYXBzaG90Lg0KPj4+IFRoaXMgaXMgbm90IHRydWUsIGFuZCBkaWZmaWN1bHQg dG8gZG8gd2l0aCBtYW55IGh5cGVydmlzb3JzLCBhbmQNCj4+PnR5cGljYWxseQ0KPj4+IHJlcXVp cmVzIGFuIGFnZW50IGluIHRoZSBWTS4gIEEgc2luZ2xlIHNuYXBzaG90LCBhcyBleGlzdHMgdG9k YXksIGlzDQo+Pj4gcmVhbGx5DQo+Pj4gY3Jhc2ggY29uc2lzdGVudCwgbWVhbmluZyB0aGF0IHRo ZXJlIGlzIG1heSBleGlzdCB1bnN5bmMnZCBkYXRhLiAgVG8NCj4+PmRvIGENCj4+PiB0cnVlIG11 bHRpIHZvbHVtZSBzbmFwc2hvdCByZXF1aXJlcyBhICJxdWllc2NlIiBmdW5jdGlvbmFsaXR5IGlu IHRoZQ0KPj4+Vk0uDQo+Pj4gU28geW91IGRvIHBhdXNlIEkvTyBxdWV1ZXMsIGZzeW5jLCBmc3lu Yywgc25hcHNob3QsIHNuYXBzaG90LCB1bnBhdXNlDQo+Pj5JL08uDQo+Pj4gDQo+Pj4gSSdtIG1p Z2h0IGJlIGZpbmUgd2l0aCB0aGUgb3B0aW9uIG9mIGFsbG93aW5nIG11bHRpcGxlIHZvbHVtZUlk J3MgdG8gYmUNCj4+PiBzcGVjaWZpZWQgaW4gdGhlIHNuYXBzaG90IEFQSSwgYnV0IGl0IG5lZWRz IHRvIGJlIGNsZWFyIHRoYXQgdGhvc2UNCj4+PiBzbmFwc2hvdHMgbWF5IGJlIHRha2VuIHNlcXVl bnRpYWxseSBhbmQgdGhleSBhcmUgYWxsIGluZGVwZW5kZW50bHkNCj4+PmNyYXNoDQo+Pj4gY29u c2lzdGVudC4gIEJ1dCwgaWYgeW91IG1ha2UgdGhhdCBjbGVhciwgdGhlbiB3aHkgZXZlbiBoYXZl IHRoZSBBUEkuDQo+Pj4gRXNzZW50aWFsbHkgaXQgaXMgdGhlIHNhbWUgYXMgZG9pbmcgbXVsdGlw bGUgc25hcHNob3QgQVBJIGNvbW1hbmRzLg0KPj4+IA0KPj4+IFNvIHJlYWxseSBJIHdvdWxkIGxl YW4gdG93YXJkcyBoYXZpbmcgdGhlIG11bHRpcGxlIHNuYXBzaG90dGluZw0KPj4+c3VwcG9ydGVk DQo+Pj4gaW4gdGhlIGRyaXZlciBvciBzdG9yYWdlIHN1YnN5c3RlbSwgYnV0IG5vdCBleHBvc2Vk IHRvIHRoZSB1c2VyLiAgWW91DQo+Pj5jYW4NCj4+PiBlYXN5IGFjY29tcGxpc2ggaXQgYnkgaGF2 aW5nIGEgdGltZWQgd2luZG93IG9uIHNuYXBzaG90dGluZy4gIFNvIGV2ZXJ5DQo+Pj4xMA0KPj4+ IHNlY29uZHMgeW91IGRvIHNuYXBzaG90cywgaWYgNSByZXF1ZXN0cyBoYXZlIHF1ZXVlZCBpbiB0 aGUgbGFzdCAxMA0KPj4+IHNlY29uZHMsDQo+Pj4geW91IGRvIHRoZW0gYWxsIGF0IG9uY2UuICBU aGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIGEgZnJhbWV3b3JrDQo+Pj50aGluZy4NCj4+PiBJ ZiB5b3VyIHByb3ZpZGVyIGltcGxlbWVudHMgIlNuYXBzaG90QmF0Y2hpbmciIGludGVyZmFjZSBh bmQgdGhhdCBoYXMgYQ0KPj4+IGdldEJhdGNoV2luZG93VGltZSgpLCB0aGVuIHRoZSBmcmFtZXdv cmsgY2FuIGRldGVjdCB0aGF0IGl0IHNob3VsZCB0cnkNCj4+PnRvDQo+Pj4gcXVldWUgdXAgc29t ZSBzbmFwc2hvdCByZXF1ZXN0cyBhbmQgc2VuZCB0aGVtIHRvIHRoZSBkcml2ZXIgaW4gYSBiYXRj aC4NCj4+PiBPcg0KPj4+IHRoYXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGRyaXZlciBp dHNlbGYuDQo+PiANCj4+IEl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gbWUgdGhhdCAiU25hcHNob3RC YXRjaGluZyIgaXMgbWFkZSBhdmFpbGFibGUgYXQNCj4+IHN0b3JhZ2UgZnJhbWV3b3JrIGxheWVy IGZvciBzaW1pbGFyIGRyaXZlcnMgdGhhdCBoYXZlIHN1Y2ggYmF0Y2gNCj4+IGNhcGFiaWxpdHkg dG8gc2hhcmUuIFRoZXJlIGFsc28gZXhpc3RzIGFub3RoZXIgcG90ZW50aWFsIGludGVsbGlnZW50 DQo+PiBwcm9jZXNzaW5nIC0gIHdoZW4gc3RvcmFnZSBzdWJzeXN0ZW0gbGF5ZXIgcHJvY2Vzc2Vz IGluZGVwZW5kZW50DQo+PiB2b2x1bWUtc25hcHNob3QgcmVxdWVzdHMgZmFsbGluZyBpbnRvIHRo ZSB3aW5kb3csIGl0IGNhbiBhZ2dyZWdhdGUgdGhlDQo+PiByZXF1ZXN0cyB0YXJnZXRpbmcgZm9y IHRoZSBzYW1lIFZNIGluc3RhbmNlIGludG8gZ3JvdXBzLCB0aGlzIGNhbiBhbGxvdw0KPj4gaHlw ZXJ2aXNvciBsZXZlbCBkcml2ZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mIGh5cGVydmlzb3IgcHJv dmlkZWQgVk0NCj4+IHNuYXBzaG90IHdpc2VseS4NCj4+IA0KPj4gU28gKzEgZm9yIHN0b3JhZ2Ug bGF5ZXIgLSBkcml2ZXIgaW50ZXJmYWNlIGVuaGFuY2VtZW50cyBsaWtlIHRoaXMsIGJ1dCBJDQo+ PiBkb24ndCBzZWUgbXVjaCBpbW1lZGlhdGUgYmVuZWZpdCB0byBwcm9wYWdhdGUgaXQgaW50byBl bmQtdXNlciBBUEkNCj4+bGF5ZXIuDQo+PiANCj4+IC1LZWx2ZW4NCj4+IA0KPj4gDQo+Pj4gSSB3 b3VsZCBsZWFuIHRvd2FyZCBkb2luZw0KPj4+IGl0IGluIHRoZSBkcml2ZXIgYW5kIGlmIHRoYXQg Z29lcyB3ZWxsLCB3ZSBsb29rIGF0IHB1bGxpbmcgdGhlDQo+Pj4gZnVuY3Rpb25hbGl0eSBpbnRv IGNvcmUgQUNTLg0KPj4+IA0KPj4+IERhcnJlbg0KPj4+IA0KPj4+IA0KPj4+IE9uIFdlZCwgU2Vw IDE4LCAyMDEzIGF0IDU6MjIgQU0sIFN1aWNoSUksIENocmlzdG9waGVyIDwNCj4+PiBDaHJpcy5T dWljaEBuZXRhcHAuY29tPiB3cm90ZToNCj4+PiANCj4+Pj4gSSB3b3VsZCBsaWtlIHRvIHJhaXNl IGZvciBkaXNjdXNzaW9uIHRoZSBpZGVhIG9mIGFkZGluZyBhIGNvdXBsZQ0KPj4+Pm1ldGhvZHMN Cj4+Pj4gdG8gdGhlIFN0b3JhZ2UgU3Vic3lzdGVtIEFQSSBpbnRlcmZhY2UuIEN1cnJlbnRseSwg dGFrZVNuYXBzaG90KCkgYW5kDQo+Pj4+IHJldmVydFNuYXBzaG90KCkgb25seSBzdXBwb3J0IHNp bmdsZSBWTSB2b2x1bWVzLiBXZSBoYXZlIGEgdXNlIGNhc2UNCj4+Pj5mb3INCj4+Pj4gc25hcHNo b3R0aW5nIG11bHRpcGxlIFZNIHZvbHVtZXMgYXQgdGhlIHNhbWUgdGltZS4gRm9yIHVzLCBpdCBp cyBtb3JlDQo+Pj4+IGVmZmljaWVudCB0byBzbmFwc2hvdCB0aGVtIGFsbCBhdCBvbmNlIHJhdGhl ciB0aGFuIHNuYXBzaG90IFZNIFZvbHVtZXMNCj4+Pj4gaW5kaXZpZHVhbGx5IGFuZCB0aGlzIHNl ZW1zIGxpa2UgYSBtb3JlIGVsZWdhbnQgc29sdXRpb24gdGhhbiBxdWV1ZWluZw0KPj4+PiB0aGUN Cj4+Pj4gcmVxdWVzdHMgd2l0aGluIG91ciBwbHVnaW4uDQo+Pj4+IA0KPj4+PiBCYXNlIG9uIG15 IGludmVzdGlnYXRpb24sIHRoaXMgc2hvdWxkIHJlcXVpcmU6DQo+Pj4+IC1Ud28gYWRkaXRpb25h bCBBUEkgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBVSQ0KPj4+PiAtVHdvIGFkZGl0aW9uYWwgbWV0 aG9kcyBhZGRlZCB0byB0aGUgU3RvcmFnZSBTdWJzeXN0ZW0gQVBJIGludGVyZmFjZQ0KPj4+PiAt Q2hhbmdlcyBpbiBiZXR3ZWVuIHRoZSBBUEkgbGV2ZWwgYW5kIGludm9raW5nIHRoZSBTdG9yYWdl IFN1YnN5c3RlbQ0KPj4+PkFQSQ0KPj4+PiBpbXBsZW1lbnRhdGlvbnMgKEkga25vdyB0aGlzIGlz IGJyb2FkIGFuZCB2YWd1ZSksIG1haW5seSBhcm91bmQgdGhlDQo+Pj4+IFNuYXBzaG90TWFuZ2Vy L0ltcGwNCj4+Pj4gDQo+Pj4+IFRoZXJlIGFyZSBhIGNvdXBsZSB0b3BpY3Mgd2Ugd291bGQgbGlr ZSBkaXNjdXNzaW9uIG9uOg0KPj4+PiAtV291bGQgdGhpcyBiZSBiZW5lZmljaWFsL2RldHJpbWVu dGFsL25ldXRyYWwgdG8gb3RoZXIgc3RvcmFnZQ0KPj4+PiBwcm92aWRlcnM/DQo+Pj4+IC1Ib3cg c2hvdWxkIHdlIGhhbmRsZSB0aGUgYWRkaXRpb24gb2YgbmV3IG1ldGhvZHMgdG8gdGhlIFN0b3Jh Z2UNCj4+Pj4gU3Vic3lzdGVtDQo+Pj4+IEFQSSBpbnRlcmZhY2U/IERlZmF1bHQgdGhlbSB0byB0 aHJvdyBhbiBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbj8NCj4+Pj4gRGVmYXVsdCB0byBj YWxsaW5nIHRoZSBzaW5nbGUgVk0gdm9sdW1lIHZlcnNpb24gbXVsdGlwbGUgdGltZXM/DQo+Pj4+ IC1Eb2VzIGFueW9uZSBzZWUgYW55IGlzc3VlcyB3aXRoIGFsbG93aW5nIG11bHRpcGxlIHNuYXBz aG90cyB0byBiZQ0KPj4+PnRha2VuDQo+Pj4+IGF0IHRoZSBzYW1lIHRpbWUgb3IgbGV0dGluZyBz dG9yYWdlIHByb3ZpZGVycyBoYXZlIGEgbGlzdCBvZiBhbGwgdGhlDQo+Pj4+IHJlcXVlc3RlZCB2 b2x1bWVzIHRvIGJhY2t1cD8NCj4+Pj4gDQo+Pj4+IFBsZWFzZSBsZXQgbWUga25vdyBpZiBJJ3Zl IG1pc3NlZCBhbnkgbWFqb3IgdG9waWNzIGZvciBkaXNjdXNzaW9uIG9yDQo+Pj4+aWYNCj4+Pj4g YW55dGhpbmcgbmVlZHMgY2xhcmlmaWNhdGlvbi4NCj4+Pj4gDQo+Pj4+IFRoYW5rcywNCj4+Pj4g Q2hyaXMNCj4+Pj4gLS0NCj4+Pj4gQ2hyaXMgU3VpY2gNCj4+Pj4gY2hyaXMuc3VpY2hAbmV0YXBw LmNvbQ0KPj4+PiBOZXRBcHAgU29mdHdhcmUgRW5naW5lZXINCj4+Pj4gRGF0YSBDZW50ZXIgUGxh dGZvcm1zIKGpIENsb3VkIFNvbHV0aW9ucw0KPj4+PiBDaXRyaXgsIENpc2NvICYgUmVkIEhhdA0K Pj4+PiANCj4+Pj4gDQo+PiANCj4NCg0K