From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: DESIGN: CPUID part 3 Date: Thu, 8 Jun 2017 14:12:07 +0100 Message-ID: <1496927527-6218-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Juergen Gross , Lan Tianyu , Kevin Tian , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Anshul Makkar , Ian Jackson , Tim Deegan , Euan Harris , Jan Beulich , Boris Ostrovsky , Sergey Dyasli , Joao Martins , "Lai, Paul C" List-Id: xen-devel@lists.xenproject.org UHJlc2VudGVkIGhlcmV3aXRoIGlzIHRoZSBhIHBsYW4gZm9yIHRoZSBmaW5hbCBwYXJ0IG9mIENQ VUlEIHdvcmssIHdoaWNoCnByaW1hcmlseSBjb3ZlcnMgYmV0dGVyIFhlbi9Ub29sc3RhY2sgaW50 ZXJhY3Rpb24gZm9yIGNvbmZpZ3VyaW5nIHRoZSBndWVzdHMKQ1BVSUQgcG9saWN5LgoKQSBQREYg dmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IGlzIGF2YWlsYWJsZSBmcm9tOgoKaHR0cDovL3hlbmJp dHMueGVuLm9yZy9wZW9wbGUvYW5kcmV3Y29vcC9jcHVpZC1wYXJ0LTMucGRmCgpUaGVyZSBhcmUg YSBudW1iZXIgb2Ygc3RpbGwtb3BlbiBxdWVzdGlvbnMsIHdoaWNoIEkgd291bGQgYXBwcmVhY2lh dGUgdmlld3MKb24uCgp+QW5kcmV3CgotLS0tLTg8LS0tLS0KJSBDUFVJRCBIYW5kbGluZyAocGFy dCAzKQolIFJldmlzaW9uIDEKCiMgQ3VycmVudCBzdGF0ZQoKQXQgZWFybHkgYm9vdCwgWGVuIGVu dW1lcmF0ZXMgdGhlIGZlYXR1cmVzIGl0IGNhbiBzZWUsIHRha2VzIGludG8gYWNjb3VudAplcnJh dGEgY2hlY2tzIGFuZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLCBhbmQgc3RvcmVzIHRoaXMgaW5m b3JtYXRpb24gaW4gdGhlCmBib290X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5W11gIGJpdG1hcC4g IFRoaXMgZ2V0cyBhZGp1c3RlZCBhcyBBUHMgYm9vdCB1cCwKYW5kIGlzIHNhbml0aXNlZCB0byBk aXNhYmxlIGFsbCBkZXBlbmRlbnQgbGVhZiBmZWF0dXJlcy4KCkF0IG1pZC9sYXRlIGJvb3QgKGJl Zm9yZSBkb20wIGlzIGNvbnN0cnVjdGVkKSwgWGVuIHBlcmZvcm1zIHRoZSBuZWNlc3NhcnkKY2Fs Y3VsYXRpb25zIGZvciBndWVzdCBjcHVpZCBoYW5kbGluZy4gIERhdGEgYXJlIGNvbnRhaW5lZCB3 aXRoaW4gdGhlIGBzdHJ1Y3QKY3B1aWRfcG9saWN5YCBvYmplY3QsIHdoaWNoIGlzIGEgcmVwcmVz ZW50YXRpb24gb2YgdGhlIGFyY2hpdGVjdHVyYWwgQ1BVSUQKaW5mb3JtYXRpb24gYXMgc3BlY2lm aWVkIGJ5IHRoZSBJbnRlbCBhbmQgQU1EIG1hbnVhbHMuCgpUaGVyZSBhcmUgYSBmZXcgZ2xvYmFs IGBjcHVpZF9wb2xpY3lgIG9iamVjdHMuICBGaXJzdCBpcyB0aGUgKipyYXdfcG9saWN5KioKd2hp Y2ggaXMgZmlsbGVkIGluIGZyb20gbmF0aXZlIGBDUFVJRGAgaW5zdHJ1Y3Rpb25zLiAgVGhpcyBy ZXByZXNlbnRzIHdoYXQgdGhlCmhhcmR3YXJlIGlzIGNhcGFibGUgb2YsIGluIGl0cyBjdXJyZW50 IGZpcm13YXJlL21pY3JvY29kZSBjb25maWd1cmF0aW9uLgoKVGhlIG5leHQgZ2xvYmFsIG9iamVj dCBpcyAqKmhvc3RfcG9saWN5KiosIHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUKKipyYXdfcG9s aWN5KiogYW5kIGBib290X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5W11gLiBJdCByZXByZXNlbnRz IHRoZQpmZWF0dXJlcyB3aGljaCBYZW4ga25vd3MgYWJvdXQgYW5kIGlzIHVzaW5nLiAgTmV4dCwg dGhlICoqcHZfbWF4X3BvbGljeSoqIGFuZAoqKmh2bV9tYXhfcG9saWN5KiogYXJlIGRlcml2ZWQg ZnJvbSB0aGUgKipob3N0X3BvbGljeSoqLCBhbmQgcmVwcmVzZW50IHRoZQp1cHBlciBib3VuZHMg YXZhaWxhYmxlIHRvIGd1ZXN0cy4KClRoZSB0b29sc3RhY2sgbWF5IHF1ZXJ5IGZvciB0aGUgKip7 cmF3LGhvc3QscHYsaHZtfVxfZmVhdHVyZXNldCoqIGluZm9ybWF0aW9uCnVzaW5nIF9YRU5cX1NZ U0NUTFxfZ2V0XF9jcHVcX2ZlYXR1cmVzZXRfLiAgVGhpcyBpcyBiaXRtYXAgZm9ybSBvZiB0aGUg ZmVhdHVyZQpsZWF2ZXMgb25seS4KCldoZW4gYSBuZXcgZG9tYWluIGlzIGNyZWF0ZWQsIHRoZSBh cHByb3ByaWF0ZSAqKntwdixodm19X21heF9wb2xpY3kqKiBpcwpkdXBsaWNhdGVkIGFzIGEgc3Rh cnRpbmcgcG9pbnQsIGFuZCBjYW4gYmUgc3Vic2VxdWVudGx5IG11dGF0ZWQgaW5kaXJlY3RseSBi eQpzb21lIGh5cGVyY2FsbHMKKF9YRU5cX0RPTUNUTFxfe3NldFxfYWRkcmVzc1xfc2l6ZSxkaXNh YmxlXF9taWdyYXRlLHNldHRzY2luZm99Xykgb3IgZGlyZWN0bHkKYnkgX1hFTlxfRE9NQ1RMXF9z ZXRcX2NwdWlkXy4KCgojIElzc3VlcyB3aXRoIHRoZSBleGlzdGluZyBoeXBlcmNhbGxzCgpfWEVO XF9ET01DVExcX3NldFxfY3B1aWRfIGRvZXNuJ3QgaGF2ZSBhIHJldHVybiB2YWx1ZSB3aGljaCB0 aGUgZG9tYWluIGJ1aWxkZXIKcGF5cyBhdHRlbnRpb24gdG8uICBUaGlzIGlzIGJlY2F1c2UsIGJl Zm9yZSBDUFVJRCBwYXJ0IDIsIHRoZXJlIHdlcmUgbm8KZmFpbHVyZSBjb25kaXRpb25zLCBhcyBY ZW4gd291bGQgYWNjZXB0IGFsbCB0b29sc3RhY2stcHJvdmlkZWQgZGF0YSwgYW5kCmF0dGVtcHQg dG8gYXVkaXQgaXQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlcXVlc3RlZCBieSB0aGUgZ3Vlc3QuICBU byBzaW1wbGlmeQp0aGUgcGFydCAyIHdvcmssIHRoaXMgYmVoYXZpb3VyIHdhcyBtYWludGFpbmVk LCBhbHRob3VnaCBYZW4gd2FzIGFsdGVyZWQgdG8KYXVkaXQgdGhlIGRhdGEgYXQgaHlwZXJjYWxs IHRpbWUsIHR5cGljYWxseSB6ZXJvaW5nIG91dCBhcmVhcyB3aGljaCBmYWlsZWQgdGhlCmF1ZGl0 LgoKVGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciB0aGUgdG9vbHN0YWNrIHRvIHF1ZXJ5IHRoZSBD UFVJRCBjb25maWd1cmF0aW9uIGZvciBhCnNwZWNpZmljIGRvbWFpbi4gIE9yaWdpbmFsbHksIHRo ZSBkb21haW4gYnVpbGRlciBjb25zdHJ1Y3RlZCBhIGd1ZXN0cyBDUFVJRApwb2xpY3kgZnJvbSBm aXJzdCBwcmluY2lwbGVzLCB1c2luZyBuYXRpdmUgYENQVUlEYCBpbnN0cnVjdGlvbnMgaW4gdGhl IGNvbnRyb2wKZG9tYWluLiAgVGhpcyBmdW5jdGlvbmVkIHRvIGFuIGV4dGVudCwgYnV0IHdhcyBz dWJqZWN0IHRvIG1hc2tpbmcgcHJvYmxlbXMsCmFuZCBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0 aWJsZSB3aXRoIEhWTSBjb250cm9sIGRvbWFpbnMgb3IgdGhlIHVzZSBvZgpfQ1BVSUQgRmF1bHRp bmdfIGluIG5ld2VyIEludGVsIHByb2Nlc3NvcnMuCgpDUFVJRCBwaGFzZSAxIGludHJvZHVjZWQg dGhlIGZlYXR1cmVzZXQgaW5mb3JtYXRpb24sIHdoaWNoIHByb3ZpZGVkIGFuCmFyY2hpdGVjdHVy YWxseSBzb3VuZCBtZWNoYW5pc20gZm9yIHRoZSB0b29sc3RhY2sgdG8gaWRlbnRpZnkgd2hpY2gg ZmVhdHVyZXMKYXJlIHVzYWJsZSBmb3IgZ3Vlc3RzLiAgSG93ZXZlciwgdGhlIHJlc3Qgb2YgdGhl IENQVUlEIHBvbGljeSBpcyBzdGlsbApnZW5lcmF0ZWQgZnJvbSBuYXRpdmUgYENQVUlEYCBpbnN0 cnVjdGlvbnMuCgpUaGUgYGNwdWlkX3BvbGljeWAgaXMgcGVyLWRvbWFpbiBpbmZvcm1hdGlvbi4g IE1vc3QgQ1BVSUQgZGF0YSBpcyBpZGVudGljYWwKYWNyb3NzIGFsbCBDUFVzLiAgU29tZSBkYXRh IGFyZSBkeW5hbWljLCBiYXNlZCBvbiBvdGhlciBjb250cm9sIHNldHRpbmdzCihBUElDLCBPU1hT QVZFLCBPU1BLRSwgT1NMV1ApLCBhbmQgWGVuIHN1YnN0aXR1dGVzIHRoZXNlIGFwcHJvcHJpYXRl bHkgd2hlbgp0aGUgaW5mb3JtYXRpb24gaXMgcmVxdWVzdGVkLi4gIE90aGVyIGFyZWFzIGhvd2V2 ZXIgYXJlIHRvcG9sb2d5IGluZm9ybWF0aW9uLAppbmNsdWRpbmcgdGhyZWFkL2NvcmUvc29ja2V0 IGxheW91dCwgY2FjaGUgYW5kIFRMQiBoaWVyYXJjaHkuICBUaGVzZSBkYXRhIGFyZQppbmhlcml0 ZWQgZnJvbSB3aGljaGV2ZXIgcGh5c2ljYWwgQ1BVIHRoZSBkb21haW4gYnVpbGRlciBoYXBwZW5l ZCB0byBiZQpydW5uaW5nIG9uIHdoZW4gaXQgd2FzIG1ha2luZyBjYWxjdWxhdGlvbnMuICBBcyBh IHJlc3VsdCwgaXQgaXMgaW5hcHByb3ByaWF0ZQpmb3IgdGhlIGd1ZXN0IHVuZGVyIGNvbnRyYWN0 aW9uLCBhbmQgdXN1YWxseSBlbnRpcmVseSBib2d1cyB3aGVuIGNvbnNpZGVyZWQKYWxvbmdzaWRl IG90aGVyIGRhdGEuCgoKIyBPdGhlciBwcm9ibGVtcwoKVGhlcmUgaXMgbm8gZWFzeSBwcm92aXNp b24gZm9yIGZlYXR1cmVzIGF0IGRpZmZlcmVudCBjb2RlIG1hdHVyaXR5IGxldmVscywKYm90aCBp biB0aGUgaHlwZXJ2aXNvciwgYW5kIGluIHRoZSB0b29sc3RhY2suCgpTb21lIENQVUlEIGZlYXR1 cmVzIGhhdmUgdG9wLWxldmVsIGNvbW1hbmQgbGluZSBvcHRpb25zIG9uIHRoZSBYZW4gY29tbWFu ZApsaW5lLCBidXQgbW9zdCBkbyBub3QuICBPbiBzb21lIGhhcmR3YXJlLCBzb21lIGZlYXR1cmVz IGNhbiBiZSBoaWRkZW4KaW5kaXJlY3RseSBieSBhbHRlcmluZyB0aGUgYGNwdWlkX21hc2tfKmAg cGFyYW1ldGVycy4gIFRoaXMgaXMgYSBwcm9ibGVtIGZvcgpkZXZlbG9waW5nIG5ldyBmZWF0dXJl cyAod2hpY2ggd2FudCB0byBiZSBvZmYtYnktZGVmYXVsdCBidXQgYWJsZSB0byBiZSBvcHRlZApp biB0byksIGRlYnVnZ2luZywgd2hlcmUgaXQgY2FuIHNvbWV0aW1lcyBiZSB2ZXJ5IHVzZWZ1bCB0 byBoaWRlIGZlYXR1cmVzIGFuZApzZWUgaWYgYSBwcm9ibGVtIHJlb2NjdXJzLCBhbmQgb2NjYXNp b25hbGx5IGluIHNlY3VyaXR5IGNpcmN1bXN0YW5jZXMsIHdoZXJlCmRpc2FibGluZyBhIGZlYXR1 cmUgb3V0cmlnaHQgaXMgYW4gZWFzeSBzdG9wLWdhcCBzb2x1dGlvbi4KCkZyb20gdGhlIHRvb2xz dGFjayBzaWRlLCBnaXZlbiBubyBvdGhlciBjb25zdHJhaW50cywgYSBndWVzdCBnZXRzIHRoZQpo eXBlcnZpc29yLW1heCBzZXQgb2YgZmVhdHVyZXMuICBUaGlzIHNldCBvZiBmZWF0dXJlcyBpcyBh IHRyYWRlIG9mZiBiZXR3ZWVuCndoYXQgaXMgc3VwcG9ydGVkIGluIHRoZSBoeXBlcnZpc29yLCBh bmQgd2hpY2ggZmVhdHVyZXMgY2FuIHJlYXNvbmFibHkgYmUKb2ZmZXJlZCB3aXRob3V0IGltcGVk aW5nIHRoZSBtaWdyYXRlYWJpbGl0eSBvZiB0aGUgZ3Vlc3QuICBUaGVyZSBpcyBsaXR0bGUKcHJv dmlzaW9uIGZvciBmZWF0dXJlcyB3aGljaCBjYW4gYmUgb3B0ZWQgaW4gdG8gYXQgdGhlIHRvb2xz dGFjayBsZXZlbCwgYW5kCnRob3NlIHRoYXQgYXJlIGFyZSBkb25lIHNvIHZpYSBhZC1ob2MgbWVh bnMuCgoKIyBQcm9wb3NhbAoKRmlyc3QgYW5kIGZvcmVtb3N0LCBzcGxpdCB0aGUgY3VycmVudCAq Km1heFxfcG9saWN5Kiogbm90aW9uIGludG8gc2VwYXJhdGUKKiptYXgqKiBhbmQgKipkZWZhdWx0 KiogcG9saWNpZXMuICBUaGlzIGFsbG93cyBmb3IgdGhlIHByb3Zpc2lvbiBvZiBmZWF0dXJlcwp3 aGljaCBhcmUgdW51c2VkIGJ5IGRlZmF1bHQsIGJ1dCBtYXkgYmUgb3B0ZWQgaW4gdG8sIGJvdGgg YXQgdGhlIGh5cGVydmlzb3IKbGV2ZWwgYW5kIHRoZSB0b29sc3RhY2sgbGV2ZWwuCgpBdCB0aGUg aHlwZXJ2aXNvciBsZXZlbCwgKiptYXgqKiBjb25zdGl0dXRlcyBhbGwgdGhlIGZlYXR1cmVzIFhl biBjYW4gdXNlIG9uCnRoZSBjdXJyZW50IGhhcmR3YXJlLCB3aGlsZSAqKmRlZmF1bHQqKiBpcyB0 aGUgc3Vic2V0IHRoZXJlb2Ygd2hpY2ggYXJlCnN1cHBvcnRlZCBmZWF0dXJlcywgdGhlIGZlYXR1 cmVzIHdoaWNoIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IG9wdGVkIGluIHRvLAphbmQgZXhjbHVk aW5nIGFueSBmZWF0dXJlcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBvcHRlZCBvdXQgb2YuCgpB IG5ldyBgY3B1aWQ9YCBjb21tYW5kIGxpbmUgb3B0aW9uIHNoYWxsIGJlIGludHJvZHVjZWQsIHdo b3NlIGludGVybmFscyBhcmUKZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgZmVhdHVy ZXNldCBBQkkuICBUaGlzIG1lYW5zIHRoYXQgYWxsIGZlYXR1cmVzCmFkZGVkIHRvIGBpbmNsdWRl L3B1YmxpYy9hcmNoLXg4Ni9jcHVmZWF0dXJlc2V0LmhgIGF1dG9tYXRpY2FsbHkgZ2FpbiBjb21t YW5kCmxpbmUgY29udHJvbC4gIChSRkM6IFRoZSBzYW1lIHRvcCBsZXZlbCBvcHRpb24gY2FuIHBy b2JhYmx5IGJlIHVzZWQgZm9yCm5vbi1mZWF0dXJlIENQVUlEIGRhdGEgY29udHJvbCwgYWx0aG91 Z2ggSSBjYW4ndCBjdXJyZW50bHkgdGhpbmsgb2YgYW55IGNhc2VzCndoZXJlIHRoaXMgd291bGQg YmUgdXNlZCBBbHNvIGZpbmQgYSBzZW5zaWJsZSB3YXkgdG8gZXhwcmVzcyAnYXZhaWxhYmxlIGJ1 dApub3QgdG8gYmUgdXNlZCBieSBYZW4nLCBhcyBwZXIgdGhlIGN1cnJlbnQgYHNtZXBgIGFuZCBg c21hcGAgb3B0aW9ucy4pCgoKQXQgdGhlIGd1ZXN0IGxldmVsLCAqKm1heCoqIGNvbnN0aXR1dGVz IGFsbCB0aGUgZmVhdHVyZXMgd2hpY2ggY2FuIGJlIG9mZmVyZWQKdG8gZWFjaCB0eXBlIG9mIGd1 ZXN0IG9uIHRoaXMgaGFyZHdhcmUuICBEZXJpdmVkIGZyb20gWGVuJ3MgKipkZWZhdWx0KioKcG9s aWN5LCBpdCBpbmNsdWRlcyB0aGUgc3VwcG9ydGVkIGZlYXR1cmVzIGFuZCBleHBsaWNpdGx5IG9w dGVkIGluIHRvCmZlYXR1cmVzLCB3aGljaCBhcmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBndWVzdC4K ClRoZSBndWVzdHMgKipkZWZhdWx0KiogcG9saWN5IGlzIHRoZW4gZGVyaXZlZCBmcm9tIGl0cyAq Km1heCoqLCBhbmQgaW5jbHVkZXMKdGhlIHN1cHBvcnRlZCBmZWF0dXJlcyB3aGljaCBhcmUgY29u c2lkZXJlZCBtaWdyYXRpb24gc2FmZS4gIChSRkM6IFRoaXMKZGlzdGluY3Rpb24gaXMgcmF0aGVy IGZ1enp5LCBidXQgZm9yIGV4YW1wbGUgaXQgd291bGRuJ3QgaW5jbHVkZSB0aGluZ3MgbGlrZQpJ VFNDIGJ5IGRlZmF1bHQsIGFzIHRoYXQgaXMgbGlrZWx5IHRvIGdvIHdyb25nIHVubGVzcyBzcGVj aWFsIGNhcmUgaXMgdGFrZW4uKQoKQWxsIGdsb2JhbCBwb2xpY2llcyAoWGVuIGFuZCBndWVzdCwg bWF4IGFuZCBkZWZhdWx0KSBzaGFsbCBiZSBtYWRlIGF2YWlsYWJsZQp0byB0aGUgdG9vbHN0YWNr LCBpbiBhIG1hbm5lciBzaW1pbGFyIHRvIHRoZSBleGlzdGluZwpfWEVOXF9TWVNDVExcX2dldFxf Y3B1XF9mZWF0dXJlc2V0XyBtZWNoYW5pc20uICBUaGlzIGFsbG93cyBkZWNpc2lvbnMgdG8gYmUK dGFrZW4gd2hpY2ggaW5jbHVkZSBhbGwgQ1BVSUQgZGF0YSwgbm90IGp1c3QgdGhlIGZlYXR1cmUg Yml0bWFwcy4KCk5ldyBfWEVOXF9ET01DVExcX3tnZXQsc2V0fVxfY3B1aWRcX3BvbGljeV8gaHlw ZXJjYWxscyB3aWxsIGJlIGludHJvZHVjZWQsCndoaWNoIGFsbG93cyB0aGUgdG9vbHN0YWNrIHRv IHF1ZXJ5IGFuZCBzZXQgdGhlIGNwdWlkIHBvbGljeSBmb3IgYSBzcGVjaWZpYwpkb21haW4uICBJ dCBzaGFsbCBzdXBlcnNlZGUgX1hFTlxfRE9NQ1RMXF9zZXRcX2NwdWlkXywgc2hhbGwgZmFpbCBp ZiBYZW4gaXMKdW5oYXBweSB3aXRoIGFueSBhc3BlY3Qgb2YgdGhlIHBvbGljeSBkdXJpbmcgYXVk aXRpbmcuCgpXaGVuIGEgZG9tYWluIGlzIGluaXRpYWxseSBjcmVhdGVkLCB0aGUgYXBwcm9wcmlh dGUgZ3Vlc3RzICoqZGVmYXVsdCoqIHBvbGljeQppcyBkdXBsaWNhdGVkIGZvciB1c2UuICBXaGVu IGF1ZGl0aW5nLCBYZW4gc2hhbGwgYXVkaXQgdGhlIHRvb2xzdGFja3MKcmVxdWVzdGVkIHBvbGlj eSBhZ2FpbnN0IHRoZSBndWVzdHMgKiptYXgqKiBwb2xpY3kuICBUaGlzIGFsbG93cyBleHBlcmlt ZW50YWwKZmVhdHVyZXMgb3Igbm9uLW1pZ3JhdGlvbi1zYWZlIGZlYXR1cmVzIHRvIGJlIG9wdGVk IGluIHRvLCB3aXRob3V0IHRob3NlCmZlYXR1cmVzIGJlaW5nIGltcG9zZWQgdXBvbiBhbGwgZ3Vl c3RzIGF1dG9tYXRpY2FsbHkuCgpBIGd1ZXN0cyBDUFVJRCBwb2xpY3kgc2hhbGwgYmUgaW1tdXRh YmxlIGFmdGVyIGNvbnN0cnVjdGlvbi4gIFRoaXMgYmV0dGVyCm1hdGNoZXMgcmVhbCBoYXJkd2Fy ZSwgYW5kIHNpbXBsaWZpZXMgdGhlIGxvZ2ljIGluIFhlbiB0byB0cmFuc2xhdGUgcG9saWN5CmFs dGVyYXRpb25zIGludG8gY29uZmlndXJhdGlvbiBjaGFuZ2VzLgoKKFJGQzogRGVjaWRlIGV4YWN0 bHkgd2hlcmUgdG8gZml0IHRoaXMuICBfWEVOXF9ET01DVExcX21heFxfdmNwdXNfIHBlcmhhcHM/ KQpUaGUgdG9vbHN0YWNrIHNoYWxsIGFsc28gaGF2ZSBhIG1lY2hhbmlzbSB0byBleHBsaWNpdGx5 IHNlbGVjdCB0b3BvbG9neQpjb25maWd1cmF0aW9uIGZvciB0aGUgZ3Vlc3QsIHdoaWNoIHByaW1h cmlseSBhZmZlY3RzIHRoZSB2aXJ0dWFsIEFQSUMgSUQKbGF5b3V0LCBhbmQgaGFzIGEga25vY2sg b24gZWZmZWN0IGZvciB0aGUgQVBJQyBJRCBvZiB0aGUgdmlydHVhbCBJTy1BUElDLgpYZW4ncyBh dWRpdGluZyBzaGFsbCBlbnN1cmUgdGhhdCBndWVzdHMgb2JzZXJ2ZSB2YWx1ZXMgY29uc2lzdGVu dCB3aXRoIHRoZQpndWFyYW50ZWVzIG1hZGUgYnkgdGhlIHZlbmRvciBtYW51YWxzLgoKVGhlIGBk aXNhYmxlX21pZ3JhdGVgIGZpZWxkIHNoYWxsIGJlIGRyb3BwZWQuICBUaGUgY29uY2VwdCBvZiBt aWdyYXRlYWJpbGl0eQppcyBub3QgYm9vbGVhbjsgaXQgaXMgYSBsYXJnZSBzcGVjdHJ1bSwgYWxs IG9mIHdoaWNoIG5lZWRzIHRvIGJlIG1hbmFnZWQgYnkKdGhlIHRvb2xzdGFjay4gIFRoZSBzaW1w bGUgY2FzZSBpcyBwaWNraW5nIHRoZSBjb21tb24gc3Vic2V0IG9mIGZlYXR1cmVzCmJldHdlZW4g dGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uICBUaGlzIGJlY29tZXMgbW9yZSBjb21wbGljYXRl ZCBlLmcuIGlmIHRoZQpndWVzdCB1c2VzIExCUi9MRVIsIGF0IHdoaWNoIHBvaW50IHRoZSB0b29s c3RhY2sgbmVlZHMgdG8gY29uc2lkZXIgaGFyZHdhcmUKd2l0aCB0aGUgc2FtZSBMQlIvTEVSIGZv cm1hdCBpbiBhZGRpdGlvbiB0byBqdXN0IHRoZSBwbGFpbiBmZWF0dXJlcy4KCmBkaXNhYmxlX21p Z3JhdGVgIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgdG8gZXhwb3NlIElUU0MgdG8gZ3Vlc3RzLCBi dXQgdGhlcmUKYXJlIGNhc2VzIHdoZXJlIGlzIHBlcmZlY3RseSBzYWZlIHRvIG1pZ3JhdGUgc3Vj aCBhIGd1ZXN0LCBpZiB0aGUgZGVzdGluYXRpb24KaG9zdCBoYXMgdGhlIHNhbWUgVFNDIGZyZXF1 ZW5jeSBvciBoYXJkd2FyZSBUU0Mgc2NhbGluZyBzdXBwb3J0LgoKRmluYWxseSwgYGRpc2FibGVf bWlncmF0ZWAgZG9lc24ndCAoYW5kIGNhbm5vdCByZWFzb25hYmx5KSBiZSB1c2VkIHRvIGluaGli aXQKc3RhdGUgZ2F0aGVyIG9wZXJhdGlvbnMsIGFzIHRoaXMgaW50ZXJmZXJlcyB3aXRoIGRlYnVn Z2luZyBhbmQgbW9uaXRvcmluZwp0YXNrcy4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=