From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41211) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c2F22-0000Kb-4E for qemu-devel@nongnu.org; Thu, 03 Nov 2016 06:14:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c2F1y-0000fB-Rn for qemu-devel@nongnu.org; Thu, 03 Nov 2016 06:14:02 -0400 Received: from mga04.intel.com ([192.55.52.120]:41643) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c2F1y-0000ea-Gl for qemu-devel@nongnu.org; Thu, 03 Nov 2016 06:13:58 -0400 From: "Li, Liang Z" Date: Thu, 3 Nov 2016 10:13:54 +0000 Message-ID: References: <5feb15.7e53.1576070ae2d.Coremail.lichunguang@hust.edu.cn> <20160926112349.GF2029@work-vm> <13289d.86da.15766fdf27c.Coremail.lichunguang@hust.edu.cn> <20160930054610.GA1429@amit-lp.rh> <1401177.991b.157a34a9dea.Coremail.lichunguang@hust.edu.cn> <20161014111548.GD2030@work-vm> <1fce900.7b41.158294afd28.Coremail.lichunguang@hust.edu.cn> In-Reply-To: <1fce900.7b41.158294afd28.Coremail.lichunguang@hust.edu.cn> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] Migration dirty bitmap: should only mark pages as dirty after they have been sent List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Chunguang Li , "Dr. David Alan Gilbert" Cc: Amit Shah , "pbonzini@redhat.com" , "qemu-devel@nongnu.org" , "stefanha@redhat.com" , "quintela@redhat.com" PiA+ID4gPiA+IEkgdGhpbmsgdGhpcyBpcyAidmVyeSIgd2FzdGVmdWwuIEFzc3VtZSB0aGUgd29y a2xvYWQgd3JpdGVzIHRoZSBwYWdlcw0KPiBkaXJ0eSByYW5kb21seSB3aXRoaW4gdGhlIGd1ZXN0 IGFkZHJlc3Mgc3BhY2UsIGFuZCB0aGUgdHJhbnNmZXIgc3BlZWQgaXMNCj4gY29uc3RhbnQuIElu dHVpdGl2ZWx5LCBJIHRoaW5rIG5lYXJseSBoYWxmIG9mIHRoZSBkaXJ0eSBwYWdlcyBwcm9kdWNl ZCBpbg0KPiBJdGVyYXRpb24gMSBpcyBub3QgcmVhbGx5IGRpcnR5LiBUaGlzIG1lYW5zIHRoZSB0 aW1lIG9mIEl0ZXJhdGlvbiAyIGlzIGRvdWJsZSBvZg0KPiB0aGF0IHRvIHNlbmQgb25seSByZWFs bHkgZGlydHkgcGFnZXMuDQo+ID4gPiA+DQo+ID4gPiA+IEl0IG1ha2VzIHNlbnNlLCBjYW4geW91 IGdldCBzb21lIHBlcmYgbnVtYmVycyB0byBzaG93IHdoYXQga2luZHMgb2YNCj4gPiA+ID4gd29y a2xvYWRzIGdldCBpbXBhY3RlZCB0aGUgbW9zdD8gIFRoYXQgd291bGQgYWxzbyBoZWxwIHVzIHRv IGZpZ3VyZQ0KPiA+ID4gPiBvdXQgd2hhdCBraW5kcyBvZiBzcGVlZCBpbXByb3ZlbWVudHMgd2Ug Y2FuIGV4cGVjdC4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gCQlBbWl0DQo+ID4gPg0KPiA+ ID4gSSBoYXZlIHBpY2tlZCB1cCA2IHdvcmtsb2FkcyBhbmQgZ290IHRoZSBmb2xsb3dpbmcgc3Rh dGlzdGljcyBudW1iZXJzDQo+ID4gPiBvZiBldmVyeSBpdGVyYXRpb24gKGV4Y2VwdCB0aGUgbGFz dCBzdG9wLWNvcHkgb25lKSBkdXJpbmcgcHJlY29weS4NCj4gPiA+IFRoZXNlIG51bWJlcnMgYXJl IG9idGFpbmVkIHdpdGggdGhlIGJhc2ljIHByZWNvcHkgbWlncmF0aW9uLCB3aXRob3V0DQo+ID4g PiB0aGUgY2FwYWJpbGl0aWVzIGxpa2UgeGJ6cmxlIG9yIGNvbXByZXNzaW9uLCBldGMuIFRoZSBu ZXR3b3JrIGZvciB0aGUNCj4gPiA+IG1pZ3JhdGlvbiBpcyBleGNsdXNpdmUsIHdpdGggYSBzZXBh cmF0ZSBuZXR3b3JrIGZvciB0aGUgd29ya2xvYWRzLg0KPiA+ID4gVGhleSBhcmUgYm90aCBnaWdh Yml0IGV0aGVybmV0LiBJIHVzZSBxZW11LTIuNS4xLg0KPiA+ID4NCj4gPiA+IFRocmVlIChib290 aW5nLCBpZGxlLCB3ZWIgc2VydmVyKSBvZiB0aGVtIGNvbnZlcmdlZCB0byB0aGUgc3RvcC1jb3B5 DQo+IHBoYXNlLA0KPiA+ID4gd2l0aCB0aGUgZ2l2ZW4gYmFuZHdpZHRoIGFuZCBkZWZhdWx0IGRv d250aW1lICgzMDBtcyksIHdoaWxlIHRoZSBvdGhlcg0KPiA+ID4gdGhyZWUgKGtlcm5lbCBjb21w aWxhdGlvbiwgemV1c21wLCBtZW1jYWNoZWQpIGRpZCBub3QuDQo+ID4gPg0KPiA+ID4gT25lIHBh Z2UgaXMgIm5vdC1yZWFsbHktZGlydHkiLCBpZiBpdCBpcyB3cml0dGVuIGZpcnN0IGFuZCBpcyBz ZW50IGxhdGVyDQo+ID4gPiAoYW5kIG5vdCB3cml0dGVuIGFnYWluIGFmdGVyIHRoYXQpIGR1cmlu ZyBvbmUgaXRlcmF0aW9uLiBJIGd1ZXNzIHRoaXMNCj4gPiA+IHdvdWxkIG5vdCBoYXBwZW4gc28g b2Z0ZW4gZHVyaW5nIHRoZSBvdGhlciBpdGVyYXRpb25zIGFzIGR1cmluZyB0aGUgMXN0DQo+ID4g PiBpdGVyYXRpb24uIEJlY2F1c2UgYWxsIHRoZSBwYWdlcyBvZiB0aGUgVk0gYXJlIHNlbnQgdG8g dGhlIGRlc3Qgbm9kZQ0KPiBkdXJpbmcNCj4gPiA+IHRoZSAxc3QgaXRlcmF0aW9uLCB3aGlsZSBk dXJpbmcgdGhlIG90aGVycywgb25seSBwYXJ0IG9mIHRoZSBwYWdlcyBhcmUgc2VudC4NCj4gPiA+ IFNvIEkgdGhpbmsgdGhlICJub3QtcmVhbGx5LWRpcnR5IiBwYWdlcyBzaG91bGQgYmUgcHJvZHVj ZWQgbWFpbmx5IGR1cmluZw0KPiA+ID4gdGhlIDFzdCBpdGVyYXRpb24gLCBhbmQgbWF5YmUgdmVy eSBsaXR0bGUgZHVyaW5nIHRoZSBvdGhlciBpdGVyYXRpb25zLg0KPiA+ID4NCj4gPiA+IElmIHdl IGNvdWxkIGF2b2lkIHJlc2VuZGluZyB0aGUgIm5vdC1yZWFsbHktZGlydHkiIHBhZ2VzLCBpbnR1 aXRpdmVseSwgSQ0KPiA+ID4gdGhpbmsgdGhlIHRpbWUgc3BlbnQgb24gSXRlcmF0aW9uIDIgd291 bGQgYmUgaGFsdmVkLiBUaGlzIGlzIGEgY2hhaW4NCj4gcmVhY3Rpb24sDQo+ID4gPiBiZWNhdXNl IHRoZSBkaXJ0eSBwYWdlcyBwcm9kdWNlZCBkdXJpbmcgSXRlcmF0aW9uIDIgaXMgaGFsdmVkLCB3 aGljaA0KPiBpbmN1cnMNCj4gPiA+IHRoYXQgdGhlIHRpbWUgc3BlbnQgb24gSXRlcmF0aW9uIDMg aXMgaGFsdmVkLCB0aGVuIEl0ZXJhdGlvbiA0LCA1Li4uDQo+ID4NCj4gPiBZZXM7IHRoZXNlIG51 bWJlcnMgZG9uJ3Qgc2hvdyBob3cgbWFueSBvZiB0aGVtIGFyZSBmYWxzZSBkaXJ0eSB0aG91Z2gu DQo+ID4NCj4gPiBPbmUgcHJvYmxlbSBpcyB0aGlua2luZyBhYm91dCBwYWdlcyB0aGF0IGhhdmUg YmVlbiByZWRpcnRpZWQsIGlmIHRoZSBwYWdlIGlzDQo+IGRpcnRpZWQNCj4gPiBhZnRlciB0aGUg c3luYyBidXQgYmVmb3JlIHRoZSBuZXR3b3JrIHdyaXRlIHRoZW4gaXQncyB0aGUgZmFsc2UtZGly dHkgdGhhdA0KPiA+IHlvdSdyZSBkZXNjcmliaW5nLg0KPiA+DQo+ID4gSG93ZXZlciwgaWYgdGhl IHBhZ2UgaXMgYmVpbmcgd3JpdHRlbiBhIGZldyB0aW1lcywgYW5kIHNvIGl0IHdvdWxkIGhhdmUN Cj4gYmVlbiB3cml0dGVuDQo+ID4gYWZ0ZXIgdGhlIG5ldHdvcmsgd3JpdGUgdGhlbiBpdCBpc24n dCBhIGZhbHNlLWRpcnR5Lg0KPiA+DQo+ID4gWW91IG1pZ2h0IGJlIGFibGUgdG8gZmlndXJlIHRo YXQgb3V0IHdpdGggc29tZSBrZXJuZWwgdHJhY2luZyBvZiB3aGVuIHRoZQ0KPiBkaXJ0eWluZw0K PiA+IGhhcHBlbnMsIGJ1dCBpdCBtaWdodCBiZSBlYXNpZXIgdG8gd3JpdGUgdGhlIGZpeCENCj4g Pg0KPiA+IERhdmUNCj4gDQo+IEhpLCBJIGhhdmUgbWFkZSBzb21lIG5ldyBwcm9ncmVzcyBub3cu DQo+IA0KPiBUbyB0ZWxsIGhvdyBtYW55IGZhbHNlIGRpcnR5IHBhZ2VzIHRoZXJlIGFyZSBleGFj dGx5IGluIGVhY2ggaXRlcmF0aW9uLCBJIG1hbGxvYw0KPiBhDQo+IGJ1ZmZlciBpbiBtZW1vcnkg YXMgYmlnIGFzIHRoZSBzaXplIG9mIHRoZSB3aG9sZSBWTSBtZW1vcnkuIFdoZW4gYSBwYWdlDQo+ IGlzDQo+IHRyYW5zZmVycmVkIHRvIHRoZSBkZXN0IG5vZGUsIGl0IGlzIGNvcGllZCB0byB0aGUg YnVmZmVyOyBEdXJpbmcgdGhlIG5leHQNCj4gaXRlcmF0aW9uLA0KPiBpZiBvbmUgcGFnZSBpcyB0 cmFuc2ZlcnJlZCwgaXQgaXMgY29tcGFyZWQgdG8gdGhlIG9sZCBvbmUgaW4gdGhlIGJ1ZmZlciwg YW5kIHRoZQ0KPiBvbGQgb25lIHdpbGwgYmUgcmVwbGFjZWQgZm9yIG5leHQgY29tcGFyaXNvbiBp ZiBpdCBpcyByZWFsbHkgZGlydHkuIFRodXMsIHdlIGFyZQ0KPiBub3cNCj4gYWJsZSB0byBnZXQg dGhlIGV4YWN0IG51bWJlciBvZiBmYWxzZSBkaXJ0eSBwYWdlcy4NCj4gDQo+IFRoaXMgdGltZSwg SSB1c2UgMTUgd29ya2xvYWRzIHRvIGdldCB0aGUgc3RhdGlzdGljIG51bWJlci4gVGhleSBhcmU6 DQo+IA0KPiAgIDEuIDExIGJlbmNobWFya3MgcGlja2VkIHVwIGZyb20gY3B1MjAwNiBiZW5jaG1h cmsgc3VpdC4gVGhleSBhcmUgYWxsDQo+IHNjaWVudGlmaWMNCj4gICAgICBjb21wdXRpbmcgd29y a2xvYWRzIGxpa2UgUXVhbnR1bSBDaHJvbW9keW5hbWljcywgRmx1aWQgRHluYW1pY3MsIGV0Yy4N Cj4gSSBwaWNrDQo+ICAgICAgdXAgdGhlc2UgMTEgYmVuY2htYXJrcyBiZWNhdXNlIGNvbXBhcmVk IHRvIG90aGVycywgdGhleSBoYXZlIGJpZ2dlcg0KPiBtZW1vcnkNCj4gICAgICBvY2N1cGF0aW9u IGFuZCBoaWdoZXIgbWVtb3J5IGRpcnR5IHJhdGUuIFRodXMgbW9zdCBvZiB0aGVtIGNvdWxkIG5v dA0KPiBjb252ZXJnZQ0KPiAgICAgIHRvIHN0b3AtYW5kLWNvcHkgdXNpbmcgdGhlIGRlZmF1bHQg bWlncmF0aW9uIHNwZWVkICgzMk1CL3MpLg0KPiAgIDIuIGtlcm5lbCBjb21waWxhdGlvbg0KPiAg IDMuIGlkbGUgVk0NCj4gICA0LiBBcGFjaGUgd2ViIHNlcnZlciB3aGljaCBzZXJ2ZXMgc3RhdGlj IGNvbnRlbnQNCj4gDQo+ICAgKHRoZSBhYm92ZSB3b3JrbG9hZHMgYXJlIGFsbCBydW5uaW5nIGlu IFZNIHdpdGggMSB2Y3B1IGFuZCAxR0IgbWVtb3J5LA0KPiBhbmQgdGhlDQo+ICAgIG1pZ3JhdGlv biBzcGVlZCBpcyB0aGUgZGVmYXVsdCAzMk1CL3MpDQo+IA0KPiAgIDUuIE1lbWNhY2hlZC4gVGhl IFZNIGhhcyA2IGNwdSBjb3JlcyBhbmQgNkdCIG1lbW9yeSwgYW5kIDRHQiBhcmUgdXNlZA0KPiBh cyB0aGUgY2FjaGUuDQo+ICAgICAgQWZ0ZXIgZmlsbGluZyB1cCB0aGUgNEdCIGNhY2hlLCBhIGNs aWVudCB3cml0ZXMgdGhlIGNhY2hlIGF0IGEgY29uc3RhbnQgc3BlZWQNCj4gICAgICBkdXJpbmcg bWlncmF0aW9uLiBUaGlzIHRpbWUsIG1pZ3JhdGlvbiBzcGVlZCBoYXMgbm8gbGltaXQsIGFuZCBp cyB1cCB0byB0aGUNCj4gICAgICBjYXBhYmlsaXR5IG9mIDFHYnBzIEV0aGVybmV0Lg0KPiANCj4g U3VtbWFyaXplIHRoZSByZXN1bHRzIGZpcnN0OiAoYW5kIHlvdSBjYW4gcmVhZCB0aGUgcHJlY2lz ZSBudW1iZXIgYmVsb3cpDQo+IA0KPiAgIDEuIDQgb2YgdGhlc2UgMTUgd29ya2xvYWRzIGhhdmUg YSBiaWcgcHJvcG9ydGlvbiAoPjYwJSwgZXZlbiA+ODAlIGR1cmluZw0KPiBzb21lIGl0ZXJhdGlv bnMpDQo+ICAgICAgb2YgZmFsc2UgZGlydHkgcGFnZXMgb3V0IG9mIGFsbCB0aGUgZGlydHkgcGFn ZXMgc2luY2UgaXRlcmF0aW9uIDIgKGFuZCB0aGUgYmlnDQo+ICAgICAgcHJvcG9ydGlvbiBsYXN0 cyBkdXJpbmcgdGhlIGZvbGxvd2luZyBpdGVyYXRpb25zKS4gVGhleSBhcmUgY3B1MjAwNi56ZXVz bXAsDQo+ICAgICAgY3B1MjAwNi5iemlwMiwgY3B1MjAwNi5tY2YsIGFuZCBtZW1jYWNoZWQuDQo+ ICAgMi4gMiB3b3JrbG9hZHMgKGlkbGUsIHdlYnNlcnZlcikgc3BlbmQgbW9zdCBvZiB0aGUgbWln cmF0aW9uIHRpbWUgb24NCj4gaXRlcmF0aW9uIDEsIGV2ZW4NCj4gICAgICB0aG91Z2ggdGhlIHBy b3BvcnRpb24gb2YgZmFsc2UgZGlydHkgcGFnZXMgaXMgYmlnIHNpbmNlIGl0ZXJhdGlvbiAyLCB0 aGUgc3BhY2UNCj4gdG8NCj4gICAgICBvcHRpbWl6ZSBpcyBzbWFsbC4NCj4gICAzLiAxIHdvcmts b2FkIChrZXJuZWwgY29tcGlsYXRpb24pIG9ubHkgaGF2ZSBhIGJpZyBwcm9wb3J0aW9uIGR1cmlu Zw0KPiBpdGVyYXRpb24gMiwgbm90DQo+ICAgICAgaW4gdGhlIG90aGVyIGl0ZXJhdGlvbnMuDQo+ ICAgNC4gOCB3b3JrbG9hZHMgKHRoZSBvdGhlciA4IGJlbmNobWFya3Mgb2YgY3B1MjAwNikgaGF2 ZSBsaXR0bGUgcHJvcG9ydGlvbiBvZg0KPiBmYWxzZQ0KPiAgICAgIGRpcnR5IHBhZ2VzIHNpbmNl IGl0ZXJhdGlvbiAyLiBTbyB0aGUgc3BhY2VzIHRvIG9wdGltaXplIGZvciB0aGVtIGFyZSBzbWFs bC4NCj4gDQo+IE5vdyBJIHdhbnQgdG8gdGFsayBhIGxpdHRsZSBtb3JlIGFib3V0IHRoZSByZWFz b25zIHdoeSBmYWxzZSBkaXJ0eSBwYWdlcyBhcmUNCj4gcHJvZHVjZWQuDQo+IFRoZSBmaXJzdCBy ZWFzb24gaXMgd2hhdCB3ZSBoYXZlIGRpc2N1c3NlZCBiZWZvcmUtLS10aGUgbWVjaGFuaXNtIHRv IHRyYWNrDQo+IHRoZSBkaXJ0eQ0KPiBwYWdlcy4NCj4gQW5kIHRoZW4gSSBjb21lIHVwIHdpdGgg YW5vdGhlciByZWFzb24uIEhlcmUgaXMgdGhlIHNpdHVhdGlvbjogYSB3cml0ZQ0KPiBvcGVyYXRp b24gdG8gb25lDQo+IG1lbW9yeSBwYWdlIGhhcHBlbnMsIGJ1dCBpdCBkb2Vzbid0IGNoYW5nZSBh bnkgY29udGVudCBvZiB0aGUgcGFnZS4gU28gaXQncw0KPiAid3JpdGUgYnV0DQo+IG5vdCBkaXJ0 eSIsIGFuZCBrZXJuZWwgc3RpbGwgbWFya3MgaXQgYXMgZGlydHkuIE9uZSBndXkgaW4gb3VyIGxh YiBoYXMgZG9uZSBzb21lDQo+IGV4cGVyaW1lbnRzDQo+IHRvIGZpZ3VyZSBvdXQgdGhlIHByb3Bv cnRpb24gb2YgIndyaXRlIGJ1dCBub3QgZGlydHkiIG9wZXJhdGlvbnMsIGFuZCBoZSB1c2VzDQo+ IHRoZSBjcHUyMDA2DQo+IGJlbmNobWFyayBzdWl0LiBBY2NvcmRpbmcgdG8gaGlzIHJlc3VsdHMs IGdlbmVyYWwgd29ya2xvYWRzIGhhcyBhIGxpdHRsZQ0KPiBwcm9wb3J0aW9uICg8MTAlKQ0KPiBv ZiAid3JpdGUgYnV0IG5vdCBkaXJ0eSIgb3V0IG9mIGFsbCB0aGUgd3JpdGUgb3BlcmF0aW9ucywg d2hpbGUgZmV3IHdvcmtsb2Fkcw0KPiBoYXZlIGhpZ2hlcg0KPiBwcm9wb3J0aW9uIChvbmUgZXZl biBhcyBoaWdoIGFzIDUwJSkuIE5vdyB3ZSBhcmUgbm90IHN1cmUgd2h5ICJ3cml0ZSBidXQNCj4g bm90IGRpcnR5IiB3b3VsZA0KPiBoYXBwZW4sIGl0IGp1c3QgaGFwcGVuZWQuDQo+IA0KPiBTbyB0 aGVzZSB0d28gcmVhc29ucyBjb250cmlidXRlIHRvIHRoZSBmYWxzZSBkaXJ0eSBwYWdlcy4gVG8g b3B0aW1pemUsIEkNCj4gY29tcHV0ZSBhbmQgc3RvcmUNCj4gdGhlIFNIQTEgaGFzaCBiZWZvcmUg dHJhbnNmZXJyaW5nIGVhY2ggcGFnZS4gTmV4dCB0aW1lLCBpZiBvbmUgcGFnZSBuZWVkcw0KPiBy ZXRyYW5zbWlzc2lvbiwgaXRzDQo+IFNIQTEgaGFzaCBpcyBjb21wdXRlZCBhZ2FpbiwgYW5kIGNv bXBhcmVkIHRvIHRoZSBvbGQgaGFzaC4gSWYgdGhlIGhhc2ggaXMNCj4gdGhlIHNhbWUsIGl0J3Mg YQ0KPiBmYWxzZSBkaXJ0eSBwYWdlLCBhbmQgd2UganVzdCBza2lwIHRoaXMgcGFnZTsgT3RoZXJ3 aXNlLCB0aGUgcGFnZSBpcw0KPiB0cmFuc2ZlcnJlZCwgYW5kIHRoZSBuZXcNCj4gaGFzaCByZXBs YWNlcyB0aGUgb2xkIG9uZSBmb3IgbmV4dCBjb21wYXJpc29uLg0KPiBUaGUgcmVhc29uIHRvIHVz ZSBTSEExIGhhc2ggYnV0IG5vdCBieXRlLWJ5LWJ5dGUgY29tcGFyaXNvbiBpcyB0aGUNCj4gbWVt b3J5IG92ZXJoZWFkcy4gT25lIFNIQTENCj4gaGFzaCBpcyAyMCBieXRlcy4gU28gd2UgbmVlZCBl eHRyYSAyMC80MDk2ICg8MS8yMDApIG1lbW9yeSBzcGFjZSBvZiB0aGUNCj4gd2hvbGUgVk0gbWVt b3J5LCB3aGljaA0KPiBpcyByZWxhdGl2ZWx5IHNtYWxsLg0KPiBBcyBmYXIgYXMgSSBrbm93LCBT SEExIGhhc2ggaXMgd2lkZWx5IHVzZWQgaW4gdGhlIHNjZW5lcyBvZiBkZWR1cGxpY2F0aW9uIGZv cg0KPiBiYWNrdXAgc3lzdGVtcy4NCj4gVGhleSBoYXZlIHByb3ZlbiB0aGF0IHRoZSBwcm9iYWJp bGl0eSBvZiBoYXNoIGNvbGxpc2lvbiBpcyBmYXIgc21hbGxlciB0aGFuIGRpc2sNCj4gaGFyZHdh cmUgZmF1bHQsDQo+IHNvIGl0J3Mgc2VjdXJlIGhhc2gsIHRoYXQgaXMsIGlmIHRoZSBoYXNoZXMg b2YgdHdvIGNodW5rcyBhcmUgdGhlIHNhbWUsIHRoZQ0KPiBjb250ZW50IG11c3QgYmUgdGhlDQo+ IHNhbWUuIFNvIEkgdGhpbmsgdGhlIFNIQTEgaGFzaCBjb3VsZCByZXBsYWNlIGJ5dGUtdG8tYnl0 ZSBjb21wYXJpc29uIGluIHRoZQ0KPiBWTSBtZW1vcnkgc2NlbmVyeS4NCj4gDQo+IFRoZW4gSSBk byB0aGUgc2FtZSBtaWdyYXRpb24gZXhwZXJpbWVudHMgdXNpbmcgdGhlIFNIQTEgaGFzaC4gRm9y IHRoZSA0DQo+IHdvcmtsb2FkcyB3aGljaCBoYXZlDQo+IGJpZyBwcm9wb3J0aW9ucyBvZiBmYWxz ZSBkaXJ0eSBwYWdlcywgdGhlIGltcHJvdmVtZW50IGlzIHJlbWFya2FibGUuIFdpdGhvdXQNCj4g b3B0aW1pemF0aW9uLA0KPiB0aGV5IGVpdGhlciBjYW4gbm90IGNvbnZlcmdlIHRvIHN0b3AtYW5k LWNvcHksIG9yIHRha2UgYSB2ZXJ5IGxvbmcgdGltZSB0bw0KPiBjb21wbGV0ZS4gV2l0aCB0aGUN Cj4gU0hBMSBoYXNoIG1ldGhvZCwgYWxsIG9mIHRoZW0gbm93IGNvbXBsZXRlIGluIGEgcmVsYXRp dmVseSBzaG9ydCB0aW1lLg0KPiBGb3IgdGhlIHJlYXNvbiBJIGhhdmUgdGFsa2VkIGFib3ZlLCB0 aGUgb3RoZXIgd29ya2xvYWRzIGRvbid0IGdldCBub3RhYmxlDQo+IGltcHJvdmVtZW50cyBmcm9t IHRoZQ0KPiBvcHRpbWl6YXRpb24uIFNvIGJlbG93LCBJIG9ubHkgc2hvdyB0aGUgZXhhY3QgbnVt YmVyIGFmdGVyIG9wdGltaXphdGlvbiBmb3INCj4gdGhlIDQgd29ya2xvYWRzIHdpdGgNCj4gcmVt YXJrYWJsZSBpbXByb3ZlbWVudHMuDQo+IA0KPiBBbnkgY29tbWVudHMgb3Igc3VnZ2VzdGlvbnM/ DQoNCk1heWJlIHlvdSBjYW4gY29tcGFyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgeW91ciBzb2x1dGlv biBhcyB0aGF0IG9mIFhCWlJMRSB0byBzZWUgd2hpY2ggb25lIGlzIGJldHRlci4NClRoZSBtZXJp dCBvZiB1c2luZyBTSEExIGlzIHRoYXQgaXQgY2FuIGF2b2lkIGRhdGEgY29weSBhcyB0aGF0IGlu IFhCWlJMRSwgYW5kIG5lZWQgbGVzcyBidWZmZXIuDQpIb3cgYWJvdXQgdGhlIG92ZXJoZWFkIG9m IGNhbGN1bGF0aW5nIHRoZSBTSEExPyBJcyBpdCBmYXN0ZXIgdGhhbiBjb3B5aW5nIGEgcGFnZT8N Cg0KTGlhbmcNCg0KDQo=