From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c3kk0-0003Bi-7l for qemu-devel@nongnu.org; Mon, 07 Nov 2016 09:17:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c3kju-0007uZ-0s for qemu-devel@nongnu.org; Mon, 07 Nov 2016 09:17:40 -0500 Received: from mga14.intel.com ([192.55.52.115]:64438) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c3kjt-0007uN-Kk for qemu-devel@nongnu.org; Mon, 07 Nov 2016 09:17:33 -0500 From: "Li, Liang Z" Date: Mon, 7 Nov 2016 14:17:27 +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> <484431.8261.1582d4e1433.Coremail.lichunguang@hust.edu.cn> <6c320b.9d63.1583f0fe90e.Coremail.lichunguang@hust.edu.cn> In-Reply-To: <6c320b.9d63.1583f0fe90e.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 Cc: "Dr. David Alan Gilbert" , Amit Shah , "pbonzini@redhat.com" , "qemu-devel@nongnu.org" , "stefanha@redhat.com" , "quintela@redhat.com" PiA+ID4gPiA+ID4gPiA+ID4gSSB0aGluayB0aGlzIGlzICJ2ZXJ5IiB3YXN0ZWZ1bC4gQXNzdW1l IHRoZSB3b3JrbG9hZA0KPiA+ID4gPiA+ID4gPiA+ID4gd3JpdGVzIHRoZSBwYWdlcw0KPiA+ID4g PiA+IGRpcnR5IHJhbmRvbWx5IHdpdGhpbiB0aGUgZ3Vlc3QgYWRkcmVzcyBzcGFjZSwgYW5kIHRo ZSB0cmFuc2Zlcg0KPiA+ID4gPiA+IHNwZWVkIGlzIGNvbnN0YW50LiBJbnR1aXRpdmVseSwgSSB0 aGluayBuZWFybHkgaGFsZiBvZiB0aGUgZGlydHkNCj4gPiA+ID4gPiBwYWdlcyBwcm9kdWNlZCBp biBJdGVyYXRpb24gMSBpcyBub3QgcmVhbGx5IGRpcnR5LiBUaGlzIG1lYW5zDQo+ID4gPiA+ID4g dGhlIHRpbWUgb2YgSXRlcmF0aW9uIDIgaXMgZG91YmxlIG9mIHRoYXQgdG8gc2VuZCBvbmx5IHJl YWxseSBkaXJ0eSBwYWdlcy4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEl0IG1h a2VzIHNlbnNlLCBjYW4geW91IGdldCBzb21lIHBlcmYgbnVtYmVycyB0byBzaG93IHdoYXQNCj4g PiA+ID4gPiA+ID4gPiBraW5kcyBvZiB3b3JrbG9hZHMgZ2V0IGltcGFjdGVkIHRoZSBtb3N0PyAg VGhhdCB3b3VsZCBhbHNvDQo+ID4gPiA+ID4gPiA+ID4gaGVscCB1cyB0byBmaWd1cmUgb3V0IHdo YXQga2luZHMgb2Ygc3BlZWQgaW1wcm92ZW1lbnRzIHdlDQo+ID4gPiA+ID4gPiA+ID4gY2FuDQo+ ID4gPiBleHBlY3QuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+IAkJQW1pdA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJIGhhdmUgcGlja2Vk IHVwIDYgd29ya2xvYWRzIGFuZCBnb3QgdGhlIGZvbGxvd2luZw0KPiA+ID4gPiA+ID4gPiBzdGF0 aXN0aWNzIG51bWJlcnMgb2YgZXZlcnkgaXRlcmF0aW9uIChleGNlcHQgdGhlIGxhc3QNCj4gPiA+ ID4gPiA+ID4gc3RvcC1jb3B5IG9uZSkgZHVyaW5nDQo+ID4gPiBwcmVjb3B5Lg0KPiA+ID4gPiA+ ID4gPiBUaGVzZSBudW1iZXJzIGFyZSBvYnRhaW5lZCB3aXRoIHRoZSBiYXNpYyBwcmVjb3B5IG1p Z3JhdGlvbiwNCj4gPiA+ID4gPiA+ID4gd2l0aG91dCB0aGUgY2FwYWJpbGl0aWVzIGxpa2UgeGJ6 cmxlIG9yIGNvbXByZXNzaW9uLCBldGMuDQo+ID4gPiA+ID4gPiA+IFRoZSBuZXR3b3JrIGZvciB0 aGUgbWlncmF0aW9uIGlzIGV4Y2x1c2l2ZSwgd2l0aCBhIHNlcGFyYXRlDQo+ID4gPiA+ID4gPiA+ IG5ldHdvcmsgZm9yDQo+ID4gPiB0aGUgd29ya2xvYWRzLg0KPiA+ID4gPiA+ID4gPiBUaGV5IGFy ZSBib3RoIGdpZ2FiaXQgZXRoZXJuZXQuIEkgdXNlIHFlbXUtMi41LjEuDQo+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+IFRocmVlIChib290aW5nLCBpZGxlLCB3ZWIgc2VydmVyKSBvZiB0aGVt IGNvbnZlcmdlZCB0byB0aGUNCj4gPiA+ID4gPiA+ID4gc3RvcC1jb3B5DQo+ID4gPiA+ID4gcGhh c2UsDQo+ID4gPiA+ID4gPiA+IHdpdGggdGhlIGdpdmVuIGJhbmR3aWR0aCBhbmQgZGVmYXVsdCBk b3dudGltZSAoMzAwbXMpLCB3aGlsZQ0KPiA+ID4gPiA+ID4gPiB0aGUgb3RoZXIgdGhyZWUgKGtl cm5lbCBjb21waWxhdGlvbiwgemV1c21wLCBtZW1jYWNoZWQpIGRpZCBub3QuDQo+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+IE9uZSBwYWdlIGlzICJub3QtcmVhbGx5LWRpcnR5IiwgaWYgaXQg aXMgd3JpdHRlbiBmaXJzdCBhbmQNCj4gPiA+ID4gPiA+ID4gaXMgc2VudCBsYXRlciAoYW5kIG5v dCB3cml0dGVuIGFnYWluIGFmdGVyIHRoYXQpIGR1cmluZyBvbmUNCj4gPiA+ID4gPiA+ID4gaXRl cmF0aW9uLiBJIGd1ZXNzIHRoaXMgd291bGQgbm90IGhhcHBlbiBzbyBvZnRlbiBkdXJpbmcgdGhl DQo+ID4gPiA+ID4gPiA+IG90aGVyIGl0ZXJhdGlvbnMgYXMgZHVyaW5nIHRoZSAxc3QgaXRlcmF0 aW9uLiBCZWNhdXNlIGFsbA0KPiA+ID4gPiA+ID4gPiB0aGUgcGFnZXMgb2YgdGhlIFZNIGFyZSBz ZW50IHRvIHRoZSBkZXN0IG5vZGUNCj4gPiA+ID4gPiBkdXJpbmcNCj4gPiA+ID4gPiA+ID4gdGhl IDFzdCBpdGVyYXRpb24sIHdoaWxlIGR1cmluZyB0aGUgb3RoZXJzLCBvbmx5IHBhcnQgb2YgdGhl DQo+ID4gPiA+ID4gPiA+IHBhZ2VzIGFyZQ0KPiA+ID4gc2VudC4NCj4gPiA+ID4gPiA+ID4gU28g SSB0aGluayB0aGUgIm5vdC1yZWFsbHktZGlydHkiIHBhZ2VzIHNob3VsZCBiZSBwcm9kdWNlZA0K PiA+ID4gPiA+ID4gPiBtYWlubHkgZHVyaW5nIHRoZSAxc3QgaXRlcmF0aW9uICwgYW5kIG1heWJl IHZlcnkgbGl0dGxlDQo+ID4gPiA+ID4gPiA+IGR1cmluZyB0aGUgb3RoZXINCj4gPiA+IGl0ZXJh dGlvbnMuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IElmIHdlIGNvdWxkIGF2b2lkIHJl c2VuZGluZyB0aGUgIm5vdC1yZWFsbHktZGlydHkiIHBhZ2VzLA0KPiA+ID4gPiA+ID4gPiBpbnR1 aXRpdmVseSwgSSB0aGluayB0aGUgdGltZSBzcGVudCBvbiBJdGVyYXRpb24gMiB3b3VsZCBiZQ0K PiA+ID4gPiA+ID4gPiBoYWx2ZWQuIFRoaXMgaXMgYSBjaGFpbg0KPiA+ID4gPiA+IHJlYWN0aW9u LA0KPiA+ID4gPiA+ID4gPiBiZWNhdXNlIHRoZSBkaXJ0eSBwYWdlcyBwcm9kdWNlZCBkdXJpbmcg SXRlcmF0aW9uIDIgaXMNCj4gPiA+ID4gPiA+ID4gaGFsdmVkLCB3aGljaA0KPiA+ID4gPiA+IGlu Y3Vycw0KPiA+ID4gPiA+ID4gPiB0aGF0IHRoZSB0aW1lIHNwZW50IG9uIEl0ZXJhdGlvbiAzIGlz IGhhbHZlZCwgdGhlbiBJdGVyYXRpb24gNCwgNS4uLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IFllczsgdGhlc2UgbnVtYmVycyBkb24ndCBzaG93IGhvdyBtYW55IG9mIHRoZW0gYXJlIGZhbHNl IGRpcnR5DQo+ID4gPiB0aG91Z2guDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gT25lIHByb2Js ZW0gaXMgdGhpbmtpbmcgYWJvdXQgcGFnZXMgdGhhdCBoYXZlIGJlZW4gcmVkaXJ0aWVkLA0KPiA+ ID4gPiA+ID4gaWYgdGhlIHBhZ2UgaXMNCj4gPiA+ID4gPiBkaXJ0aWVkDQo+ID4gPiA+ID4gPiBh ZnRlciB0aGUgc3luYyBidXQgYmVmb3JlIHRoZSBuZXR3b3JrIHdyaXRlIHRoZW4gaXQncyB0aGUN Cj4gPiA+ID4gPiA+IGZhbHNlLWRpcnR5IHRoYXQgeW91J3JlIGRlc2NyaWJpbmcuDQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gSG93ZXZlciwgaWYgdGhlIHBhZ2UgaXMgYmVpbmcgd3JpdHRlbiBh IGZldyB0aW1lcywgYW5kIHNvIGl0DQo+ID4gPiA+ID4gPiB3b3VsZCBoYXZlDQo+ID4gPiA+ID4g YmVlbiB3cml0dGVuDQo+ID4gPiA+ID4gPiBhZnRlciB0aGUgbmV0d29yayB3cml0ZSB0aGVuIGl0 IGlzbid0IGEgZmFsc2UtZGlydHkuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gWW91IG1pZ2h0 IGJlIGFibGUgdG8gZmlndXJlIHRoYXQgb3V0IHdpdGggc29tZSBrZXJuZWwgdHJhY2luZw0KPiA+ ID4gPiA+ID4gb2Ygd2hlbiB0aGUNCj4gPiA+ID4gPiBkaXJ0eWluZw0KPiA+ID4gPiA+ID4gaGFw cGVucywgYnV0IGl0IG1pZ2h0IGJlIGVhc2llciB0byB3cml0ZSB0aGUgZml4IQ0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IERhdmUNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhpLCBJIGhhdmUgbWFk ZSBzb21lIG5ldyBwcm9ncmVzcyBub3cuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUbyB0ZWxsIGhv dyBtYW55IGZhbHNlIGRpcnR5IHBhZ2VzIHRoZXJlIGFyZSBleGFjdGx5IGluIGVhY2gNCj4gPiA+ ID4gPiBpdGVyYXRpb24sIEkgbWFsbG9jIGEgYnVmZmVyIGluIG1lbW9yeSBhcyBiaWcgYXMgdGhl IHNpemUgb2YgdGhlDQo+ID4gPiA+ID4gd2hvbGUgVk0gbWVtb3J5LiBXaGVuIGEgcGFnZSBpcyB0 cmFuc2ZlcnJlZCB0byB0aGUgZGVzdCBub2RlLCBpdA0KPiA+ID4gPiA+IGlzIGNvcGllZCB0byB0 aGUgYnVmZmVyOyBEdXJpbmcgdGhlIG5leHQgaXRlcmF0aW9uLCBpZiBvbmUgcGFnZQ0KPiA+ID4g PiA+IGlzIHRyYW5zZmVycmVkLCBpdCBpcyBjb21wYXJlZCB0byB0aGUgb2xkIG9uZSBpbiB0aGUg YnVmZmVyLCBhbmQNCj4gPiA+ID4gPiB0aGUgb2xkIG9uZSB3aWxsIGJlIHJlcGxhY2VkIGZvciBu ZXh0IGNvbXBhcmlzb24gaWYgaXQgaXMgcmVhbGx5IGRpcnR5Lg0KPiA+ID4gPiA+IFRodXMsIHdl IGFyZSBub3cgYWJsZSB0byBnZXQgdGhlIGV4YWN0IG51bWJlciBvZiBmYWxzZSBkaXJ0eSBwYWdl cy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoaXMgdGltZSwgSSB1c2UgMTUgd29ya2xvYWRzIHRv IGdldCB0aGUgc3RhdGlzdGljIG51bWJlci4gVGhleSBhcmU6DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgIDEuIDExIGJlbmNobWFya3MgcGlja2VkIHVwIGZyb20gY3B1MjAwNiBiZW5jaG1hcmsgc3Vp dC4gVGhleQ0KPiA+ID4gPiA+IGFyZSBhbGwgc2NpZW50aWZpYw0KPiA+ID4gPiA+ICAgICAgY29t cHV0aW5nIHdvcmtsb2FkcyBsaWtlIFF1YW50dW0gQ2hyb21vZHluYW1pY3MsIEZsdWlkDQo+ID4g PiA+ID4gRHluYW1pY3MsDQo+ID4gPiBldGMuDQo+ID4gPiA+ID4gSSBwaWNrDQo+ID4gPiA+ID4g ICAgICB1cCB0aGVzZSAxMSBiZW5jaG1hcmtzIGJlY2F1c2UgY29tcGFyZWQgdG8gb3RoZXJzLCB0 aGV5DQo+ID4gPiA+ID4gaGF2ZSBiaWdnZXIgbWVtb3J5DQo+ID4gPiA+ID4gICAgICBvY2N1cGF0 aW9uIGFuZCBoaWdoZXIgbWVtb3J5IGRpcnR5IHJhdGUuIFRodXMgbW9zdCBvZiB0aGVtDQo+ID4g PiA+ID4gY291bGQgbm90IGNvbnZlcmdlDQo+ID4gPiA+ID4gICAgICB0byBzdG9wLWFuZC1jb3B5 IHVzaW5nIHRoZSBkZWZhdWx0IG1pZ3JhdGlvbiBzcGVlZCAoMzJNQi9zKS4NCj4gPiA+ID4gPiAg IDIuIGtlcm5lbCBjb21waWxhdGlvbg0KPiA+ID4gPiA+ICAgMy4gaWRsZSBWTQ0KPiA+ID4gPiA+ ICAgNC4gQXBhY2hlIHdlYiBzZXJ2ZXIgd2hpY2ggc2VydmVzIHN0YXRpYyBjb250ZW50DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiAgICh0aGUgYWJvdmUgd29ya2xvYWRzIGFyZSBhbGwgcnVubmluZyBp biBWTSB3aXRoIDEgdmNwdSBhbmQgMUdCDQo+ID4gPiA+ID4gbWVtb3J5LCBhbmQgdGhlDQo+ID4g PiA+ID4gICAgbWlncmF0aW9uIHNwZWVkIGlzIHRoZSBkZWZhdWx0IDMyTUIvcykNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICAgNS4gTWVtY2FjaGVkLiBUaGUgVk0gaGFzIDYgY3B1IGNvcmVzIGFuZCA2 R0IgbWVtb3J5LCBhbmQgNEdCDQo+ID4gPiA+ID4gYXJlIHVzZWQgYXMgdGhlIGNhY2hlLg0KPiA+ ID4gPiA+ICAgICAgQWZ0ZXIgZmlsbGluZyB1cCB0aGUgNEdCIGNhY2hlLCBhIGNsaWVudCB3cml0 ZXMgdGhlIGNhY2hlDQo+ID4gPiA+ID4gYXQgYSBjb25zdGFudA0KPiA+ID4gc3BlZWQNCj4gPiA+ ID4gPiAgICAgIGR1cmluZyBtaWdyYXRpb24uIFRoaXMgdGltZSwgbWlncmF0aW9uIHNwZWVkIGhh cyBubyBsaW1pdCwNCj4gPiA+ID4gPiBhbmQgaXMgdXAgdG8NCj4gPiA+IHRoZQ0KPiA+ID4gPiA+ ICAgICAgY2FwYWJpbGl0eSBvZiAxR2JwcyBFdGhlcm5ldC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IFN1bW1hcml6ZSB0aGUgcmVzdWx0cyBmaXJzdDogKGFuZCB5b3UgY2FuIHJlYWQgdGhlIHByZWNp c2UNCj4gPiA+ID4gPiBudW1iZXINCj4gPiA+ID4gPiBiZWxvdykNCj4gPiA+ID4gPg0KPiA+ID4g PiA+ICAgMS4gNCBvZiB0aGVzZSAxNSB3b3JrbG9hZHMgaGF2ZSBhIGJpZyBwcm9wb3J0aW9uICg+ NjAlLCBldmVuDQo+ID4gPiA+ID4gPjgwJSBkdXJpbmcgc29tZSBpdGVyYXRpb25zKQ0KPiA+ID4g PiA+ICAgICAgb2YgZmFsc2UgZGlydHkgcGFnZXMgb3V0IG9mIGFsbCB0aGUgZGlydHkgcGFnZXMg c2luY2UNCj4gPiA+ID4gPiBpdGVyYXRpb24gMiAoYW5kIHRoZQ0KPiA+ID4gYmlnDQo+ID4gPiA+ ID4gICAgICBwcm9wb3J0aW9uIGxhc3RzIGR1cmluZyB0aGUgZm9sbG93aW5nIGl0ZXJhdGlvbnMp LiBUaGV5IGFyZQ0KPiA+ID4gY3B1MjAwNi56ZXVzbXAsDQo+ID4gPiA+ID4gICAgICBjcHUyMDA2 LmJ6aXAyLCBjcHUyMDA2Lm1jZiwgYW5kIG1lbWNhY2hlZC4NCj4gPiA+ID4gPiAgIDIuIDIgd29y a2xvYWRzIChpZGxlLCB3ZWJzZXJ2ZXIpIHNwZW5kIG1vc3Qgb2YgdGhlIG1pZ3JhdGlvbg0KPiA+ ID4gPiA+IHRpbWUgb24gaXRlcmF0aW9uIDEsIGV2ZW4NCj4gPiA+ID4gPiAgICAgIHRob3VnaCB0 aGUgcHJvcG9ydGlvbiBvZiBmYWxzZSBkaXJ0eSBwYWdlcyBpcyBiaWcgc2luY2UNCj4gPiA+ID4g PiBpdGVyYXRpb24gMiwgdGhlIHNwYWNlIHRvDQo+ID4gPiA+ID4gICAgICBvcHRpbWl6ZSBpcyBz bWFsbC4NCj4gPiA+ID4gPiAgIDMuIDEgd29ya2xvYWQgKGtlcm5lbCBjb21waWxhdGlvbikgb25s eSBoYXZlIGEgYmlnIHByb3BvcnRpb24NCj4gPiA+ID4gPiBkdXJpbmcgaXRlcmF0aW9uIDIsIG5v dA0KPiA+ID4gPiA+ICAgICAgaW4gdGhlIG90aGVyIGl0ZXJhdGlvbnMuDQo+ID4gPiA+ID4gICA0 LiA4IHdvcmtsb2FkcyAodGhlIG90aGVyIDggYmVuY2htYXJrcyBvZiBjcHUyMDA2KSBoYXZlIGxp dHRsZQ0KPiA+ID4gPiA+IHByb3BvcnRpb24gb2YgZmFsc2UNCj4gPiA+ID4gPiAgICAgIGRpcnR5 IHBhZ2VzIHNpbmNlIGl0ZXJhdGlvbiAyLiBTbyB0aGUgc3BhY2VzIHRvIG9wdGltaXplDQo+ID4g PiA+ID4gZm9yIHRoZW0gYXJlDQo+ID4gPiBzbWFsbC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE5v dyBJIHdhbnQgdG8gdGFsayBhIGxpdHRsZSBtb3JlIGFib3V0IHRoZSByZWFzb25zIHdoeSBmYWxz ZQ0KPiA+ID4gPiA+IGRpcnR5IHBhZ2VzIGFyZSBwcm9kdWNlZC4NCj4gPiA+ID4gPiBUaGUgZmly c3QgcmVhc29uIGlzIHdoYXQgd2UgaGF2ZSBkaXNjdXNzZWQgYmVmb3JlLS0tdGhlDQo+ID4gPiA+ ID4gbWVjaGFuaXNtIHRvIHRyYWNrIHRoZSBkaXJ0eSBwYWdlcy4NCj4gPiA+ID4gPiBBbmQgdGhl biBJIGNvbWUgdXAgd2l0aCBhbm90aGVyIHJlYXNvbi4gSGVyZSBpcyB0aGUgc2l0dWF0aW9uOiBh DQo+ID4gPiA+ID4gd3JpdGUgb3BlcmF0aW9uIHRvIG9uZSBtZW1vcnkgcGFnZSBoYXBwZW5zLCBi dXQgaXQgZG9lc24ndA0KPiA+ID4gPiA+IGNoYW5nZSBhbnkgY29udGVudCBvZiB0aGUgcGFnZS4g U28gaXQncyAid3JpdGUgYnV0IG5vdCBkaXJ0eSIsDQo+ID4gPiA+ID4gYW5kIGtlcm5lbCBzdGls bCBtYXJrcyBpdCBhcyBkaXJ0eS4gT25lIGd1eSBpbiBvdXIgbGFiIGhhcyBkb25lDQo+ID4gPiA+ ID4gc29tZSBleHBlcmltZW50cyB0byBmaWd1cmUgb3V0IHRoZSBwcm9wb3J0aW9uIG9mICJ3cml0 ZSBidXQgbm90DQo+IGRpcnR5Ig0KPiA+ID4gPiA+IG9wZXJhdGlvbnMsIGFuZCBoZSB1c2VzIHRo ZSBjcHUyMDA2IGJlbmNobWFyayBzdWl0LiBBY2NvcmRpbmcgdG8NCj4gPiA+ID4gPiBoaXMgcmVz dWx0cywgZ2VuZXJhbCB3b3JrbG9hZHMgaGFzIGEgbGl0dGxlIHByb3BvcnRpb24gKDwxMCUpIG9m DQo+ID4gPiA+ID4gIndyaXRlIGJ1dCBub3QgZGlydHkiIG91dCBvZiBhbGwgdGhlIHdyaXRlIG9w ZXJhdGlvbnMsIHdoaWxlIGZldw0KPiA+ID4gPiA+IHdvcmtsb2FkcyBoYXZlIGhpZ2hlciBwcm9w b3J0aW9uIChvbmUgZXZlbiBhcyBoaWdoIGFzIDUwJSkuIE5vdw0KPiA+ID4gPiA+IHdlIGFyZSBu b3Qgc3VyZSB3aHkgIndyaXRlIGJ1dCBub3QgZGlydHkiIHdvdWxkIGhhcHBlbiwgaXQganVzdA0K PiBoYXBwZW5lZC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNvIHRoZXNlIHR3byByZWFzb25zIGNv bnRyaWJ1dGUgdG8gdGhlIGZhbHNlIGRpcnR5IHBhZ2VzLiBUbw0KPiA+ID4gPiA+IG9wdGltaXpl LCBJIGNvbXB1dGUgYW5kIHN0b3JlIHRoZSBTSEExIGhhc2ggYmVmb3JlIHRyYW5zZmVycmluZw0K PiA+ID4gPiA+IGVhY2ggcGFnZS4gTmV4dCB0aW1lLCBpZiBvbmUgcGFnZSBuZWVkcyByZXRyYW5z bWlzc2lvbiwgaXRzDQo+ID4gPiA+ID4gU0hBMSBoYXNoIGlzIGNvbXB1dGVkIGFnYWluLCBhbmQg Y29tcGFyZWQgdG8gdGhlIG9sZCBoYXNoLiBJZg0KPiA+ID4gPiA+IHRoZSBoYXNoIGlzIHRoZSBz YW1lLCBpdCdzIGEgZmFsc2UgZGlydHkgcGFnZSwgYW5kIHdlIGp1c3Qgc2tpcA0KPiA+ID4gPiA+ IHRoaXMgcGFnZTsgT3RoZXJ3aXNlLCB0aGUgcGFnZSBpcyB0cmFuc2ZlcnJlZCwgYW5kIHRoZSBu ZXcgaGFzaA0KPiA+ID4gPiA+IHJlcGxhY2VzIHRoZSBvbGQgb25lIGZvciBuZXh0IGNvbXBhcmlz b24uDQo+ID4gPiA+ID4gVGhlIHJlYXNvbiB0byB1c2UgU0hBMSBoYXNoIGJ1dCBub3QgYnl0ZS1i eS1ieXRlIGNvbXBhcmlzb24gaXMNCj4gPiA+ID4gPiB0aGUgbWVtb3J5IG92ZXJoZWFkcy4gT25l IFNIQTEgaGFzaCBpcyAyMCBieXRlcy4gU28gd2UgbmVlZA0KPiA+ID4gPiA+IGV4dHJhDQo+ID4g PiA+ID4gMjAvNDA5NiAoPDEvMjAwKSBtZW1vcnkgc3BhY2Ugb2YgdGhlIHdob2xlIFZNIG1lbW9y eSwgd2hpY2ggaXMNCj4gPiA+ID4gPiByZWxhdGl2ZWx5IHNtYWxsLg0KPiA+ID4gPiA+IEFzIGZh ciBhcyBJIGtub3csIFNIQTEgaGFzaCBpcyB3aWRlbHkgdXNlZCBpbiB0aGUgc2NlbmVzIG9mDQo+ ID4gPiA+ID4gZGVkdXBsaWNhdGlvbiBmb3IgYmFja3VwIHN5c3RlbXMuDQo+ID4gPiA+ID4gVGhl eSBoYXZlIHByb3ZlbiB0aGF0IHRoZSBwcm9iYWJpbGl0eSBvZiBoYXNoIGNvbGxpc2lvbiBpcyBm YXINCj4gPiA+ID4gPiBzbWFsbGVyIHRoYW4gZGlzayBoYXJkd2FyZSBmYXVsdCwgc28gaXQncyBz ZWN1cmUgaGFzaCwgdGhhdCBpcywNCj4gPiA+ID4gPiBpZiB0aGUgaGFzaGVzIG9mIHR3byBjaHVu a3MgYXJlIHRoZSBzYW1lLCB0aGUgY29udGVudCBtdXN0IGJlIHRoZQ0KPiBzYW1lLg0KPiA+ID4g PiA+IFNvIEkgdGhpbmsgdGhlIFNIQTEgaGFzaCBjb3VsZCByZXBsYWNlIGJ5dGUtdG8tYnl0ZSBj b21wYXJpc29uDQo+ID4gPiA+ID4gaW4gdGhlIFZNIG1lbW9yeSBzY2VuZXJ5Lg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gVGhlbiBJIGRvIHRoZSBzYW1lIG1pZ3JhdGlvbiBleHBlcmltZW50cyB1c2lu ZyB0aGUgU0hBMSBoYXNoLg0KPiA+ID4gPiA+IEZvciB0aGUgNCB3b3JrbG9hZHMgd2hpY2ggaGF2 ZSBiaWcgcHJvcG9ydGlvbnMgb2YgZmFsc2UgZGlydHkNCj4gPiA+ID4gPiBwYWdlcywgdGhlIGlt cHJvdmVtZW50IGlzIHJlbWFya2FibGUuIFdpdGhvdXQgb3B0aW1pemF0aW9uLCB0aGV5DQo+ID4g PiA+ID4gZWl0aGVyIGNhbiBub3QgY29udmVyZ2UgdG8gc3RvcC1hbmQtY29weSwgb3IgdGFrZSBh IHZlcnkgbG9uZyB0aW1lIHRvDQo+IGNvbXBsZXRlLg0KPiA+ID4gPiA+IFdpdGggdGhlDQo+ID4g PiA+ID4gU0hBMSBoYXNoIG1ldGhvZCwgYWxsIG9mIHRoZW0gbm93IGNvbXBsZXRlIGluIGEgcmVs YXRpdmVseSBzaG9ydA0KPiB0aW1lLg0KPiA+ID4gPiA+IEZvciB0aGUgcmVhc29uIEkgaGF2ZSB0 YWxrZWQgYWJvdmUsIHRoZSBvdGhlciB3b3JrbG9hZHMgZG9uJ3QNCj4gPiA+ID4gPiBnZXQgbm90 YWJsZSBpbXByb3ZlbWVudHMgZnJvbSB0aGUgb3B0aW1pemF0aW9uLiBTbyBiZWxvdywgSSBvbmx5 DQo+ID4gPiA+ID4gc2hvdyB0aGUgZXhhY3QgbnVtYmVyIGFmdGVyIG9wdGltaXphdGlvbiBmb3Ig dGhlIDQgd29ya2xvYWRzDQo+ID4gPiA+ID4gd2l0aCByZW1hcmthYmxlIGltcHJvdmVtZW50cy4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IEFueSBjb21tZW50cyBvciBzdWdnZXN0aW9ucz8NCj4gPiA+ ID4NCj4gPiA+ID4gTWF5YmUgeW91IGNhbiBjb21wYXJlIHRoZSBwZXJmb3JtYW5jZSBvZiB5b3Vy IHNvbHV0aW9uIGFzIHRoYXQgb2YNCj4gPiA+IFhCWlJMRSB0byBzZWUgd2hpY2ggb25lIGlzIGJl dHRlci4NCj4gPiA+ID4gVGhlIG1lcml0IG9mIHVzaW5nIFNIQTEgaXMgdGhhdCBpdCBjYW4gYXZv aWQgZGF0YSBjb3B5IGFzIHRoYXQgaW4NCj4gPiA+ID4gWEJaUkxFLCBhbmQNCj4gPiA+IG5lZWQg bGVzcyBidWZmZXIuDQo+ID4gPiA+IEhvdyBhYm91dCB0aGUgb3ZlcmhlYWQgb2YgY2FsY3VsYXRp bmcgdGhlIFNIQTE/IElzIGl0IGZhc3RlciB0aGFuDQo+ID4gPiA+IGNvcHlpbmcgYQ0KPiA+ID4g cGFnZT8NCj4gPiA+ID4NCj4gPiA+ID4gTGlhbmcNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ ID4gPiBZZXMsIFhCWlJMRSBpcyBhYmxlIHRvIGhhbmRsZSB0aGUgZmFsc2UgZGlydHkgcGFnZXMu IEhvd2V2ZXIsIGlmIHdlDQo+ID4gPiB3YW50IHRvIGF2b2lkIHRyYW5zZmVycmluZyBhbGwgb2Yg dGhlIGZhbHNlIGRpcnR5IHBhZ2VzIHVzaW5nDQo+ID4gPiBYQlpSTEUsIHdlIG5lZWQgYSBidWZm ZXIgYXMgYmlnIGFzIHRoZSB3aG9sZSBWTSBtZW1vcnksIHdoaWxlIFNIQTENCj4gPiA+IG5lZWRz IGEgbXVjaCBzbWFsbCBidWZmZXIuIE9mIGNvdXJzZSwgaWYgd2UgaGF2ZSBhIGJ1ZmZlciBhcyBi aWcgYXMNCj4gPiA+IHRoZSB3aG9sZSBWTSBtZW1vcnkgdXNpbmcgWEJaUkxFLCB3ZSBjb3VsZCB0 cmFuc2ZlciBsZXNzIGRhdGEgb24NCj4gPiA+IG5ldHdvcmsgdGhhbiBTSEExLCBiZWNhdXNlIFhC WlJMRSBpcyBhYmxlIHRvIGNvbXByZXNzIHNpbWlsYXIgcGFnZXMuDQo+ID4gPiBJbiBhIHdvcmQs IHllcywgdGhlIG1lcml0IG9mIHVzaW5nIFNIQTEgaXMgdGhhdCBpdCBuZWVkcyBtdWNoIGxlc3MN Cj4gPiA+IGJ1ZmZlciwgYW5kIGxlYWRzIHRvIG5pY2UgaW1wcm92ZW1lbnQgaWYgdGhlcmUgYXJl IG1hbnkgZmFsc2UgZGlydHkgcGFnZXMuDQo+ID4gPg0KPiA+DQo+ID4gVGhlIGN1cnJlbnQgaW1w bGVtZW50YXRpb24gb2YgWEJaUkxFIGJlZ2lucyB0byBidWZmZXIgcGFnZSBmcm9tIHRoZQ0KPiA+ IHNlY29uZCBpdGVyYXRpb24sIE1heWJlIGl0J3Mgd29ydGggdG8gbWFrZSBpdCBzdGFydCB0byB3 b3JrIGZyb20gdGhlIGZpcnN0DQo+IGl0ZXJhdGlvbiBiYXNlZCBvbiB5b3VyIGZpbmRpbmcuDQo+ ID4NCj4gPiA+IEluIHRlcm1zIG9mIHRoZSBvdmVyaGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgU0hB MSBjb21wYXJlZCB3aXRoDQo+ID4gPiB0cmFuc2ZlcnJpbmcgYSBwYWdlLCBpdCdzIHJlbGF0ZWQg dG8gdGhlIENQVSBhbmQgbmV0d29yaw0KPiA+ID4gcGVyZm9ybWFuY2UuIEluIG15IHRlc3QgZW52 aXJvbm1lbnQoSW50ZWwgWGVvbg0KPiA+ID4gRTU2MjAgQDIuNEdIeiwgMUdicHMgRXRoZXJuZXQp LCBJIGRpZG4ndCBvYnNlcnZlIG9idmlvdXMgZXh0cmENCj4gPiA+IGNvbXB1dGluZyBvdmVyaGVh ZCBjYXVzZWQgYnkgY2FsY3VsYXRpbmcgdGhlIFNIQTEsIGJlY2F1c2UgdGhlDQo+ID4gPiB0aHJv dWdocHV0IG9mIG5ldHdvcmsgKGdvdCBieSAiaW5mbyBtaWdyYXRlIikgcmVtYWlucyBhbG1vc3Qg dGhlIHNhbWUuDQo+ID4NCj4gPiBZb3UgY2FuIGNoZWNrIHRoZSBDUFUgdXNhZ2UsIG9yIHRvIG1l YXN1cmUgdGhlIHRpbWUgc3BlbmQgb24gYSBsb2NhbA0KPiA+IGxpdmUgbWlncmF0aW9uICB3aGlj aCB1c2UgU0hBMS8gWEJaUkxFLg0KPiA+DQo+ID4gTGlhbmcNCj4gPg0KPiA+DQo+IA0KPiBJIGNv bXBhcmUgU0hBMSB3aXRoIFhCWlJMRS4gSSB1c2UgWEJaUkxFIGluIHR3byB3YXlzOg0KPiAxLiBC ZWdpbnMgdG8gYnVmZmVyIHBhZ2VzIGZyb20gaXRlcmF0aW9uIDE7IDIuIEFzIGN1cnJlbnQgaW1w bGVtZW50YXRpb24sDQo+IGJlZ2lucyB0byBidWZmZXIgcGFnZXMgZnJvbSBpdGVyYXRpb24gMi4N Cj4gDQo+IEkgcG9zdCB0aGUgcmVzdWx0cyBvZiB0aHJlZSB3b3JrbG9hZHM6IGNwdTIwMDYuemV1 c21wLCBjcHUyMDA2Lm1jZiwNCj4gbWVtY2FjaGVkLg0KPiBJIHNldCB0aGUgY2FjaGUgc2l6ZSBh cyAyNTZNQiBmb3IgemV1c21wICYgbWNmICh0aGV5IHJ1biBpbiBWTSB3aXRoIDFHQg0KPiByYW0p LCBhbmQgc2V0IHRoZSBjYWNoZSBzaXplIGFzIDFHQiBmb3IgbWVtY2FjaGVkIChpdCBydW4gaW4g Vk0gd2l0aCA2R0INCj4gcmFtLCBhbmQgbWVtY2FjaGVkIHRha2VzIDRHQiBhcyBjYWNoZSkuDQo+ IA0KPiBBcyB5b3UgY2FuIHJlYWQgZnJvbSB0aGUgZGF0YSBiZWxvdywgYmVnaW5uaW5nIHRvIGJ1 ZmZlciBwYWdlcyBmcm9tDQo+IGl0ZXJhdGlvbiAxIGlzIGJldHRlciB0aGFuIHRoZSBjdXJyZW50 IGltcGxlbWVudGF0aW9uKGZyb20gaXRlcmF0aW9uIDIpLA0KPiBiZWNhdXNlIHRoZSB0b3RhbCBt aWdyYXRpb24gdGltZSBpcyBzaG9ydGVyLg0KPiANCj4gU0hBMSBpcyBiZXR0ZXIgdGhhbiB0aGUg WEJaUkxFIHdpdGggdGhlIGNhY2hlIHNpemUgSSBjaG9vc2UsIGJlY2F1c2UgaXQgbGVhZHMNCj4g dG8gc2hvcnRlciBtaWdyYXRpb24gdGltZSwgYW5kIGNvbnN1bWVzIGZhciBsZXNzIG1lbW9yeSBv dmVyaGVhZCAoPDEvMjAwDQo+IG9mIHRoZSB0b3RhbCBWTSBtZW1vcnkpLg0KPiANCg0KSGkgQ2h1 bmd1YW5nLA0KDQpIYXZlIHlvdSB0cmllZCB0byB1c2UgYSBsYXJnZSBYQlpSTEUgY2FjaGUgc2l6 ZSB3aGljaCBlcXVhbHMgdG8gdGhlIGd1ZXN0J3MgUkFNIHNpemU/DQpJcyBTSEExIGZhc3RlciBp biB0aGF0IGNhc2U/DQoNClRoYW5rcyENCkxpYW5nDQo=