From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v12 01/23] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Wed, 14 Jun 2017 09:12:34 +0800 Message-ID: <1497402776-22348-2-git-send-email-yi.y.sun@linux.intel.com> References: <1497402776-22348-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKx3f-0007E2-Ko for xen-devel@lists.xenproject.org; Wed, 14 Jun 2017 01:25:19 +0000 In-Reply-To: <1497402776-22348-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBjcmVhdGVzIENBVCBhbmQgQ0RQIGZlYXR1cmUgZG9jdW1lbnQgaW4gZG9jL2Zl YXR1cmVzLy4gSXQgZGVzY3JpYmVzCmtleSBwb2ludHMgdG8gaW1wbGVtZW50IEwzIENBVC9DRFAg YW5kIEwyIENBVCB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlscyBpbgpJbnRlbCBTRE0gIklO VEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJ T04gRkVBVFVSRVMiLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRl bC5jb20+ClJldmlld2VkLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+ClJldmlld2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0K djExOgogICAgLSBtb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb25zIGFjY29yZGluZyB0 byBjb2RlIGNoYW5nZXMuCiAgICAtIG1vZGlmeSByZXZpc2lvbi4Kdjk6CiAgICAtIGFkZCAnQ01U JyB0byB0aGUgbGlzdCBvZiBhY3Jvbnltcy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQog ICAgLSBjaGFuZ2UgZmVhdHVyZSBsaXN0IHRvIGZlYXR1cmUgYXJyYXkuCiAgICAtIG1vZGlmeSBk YXRhIHN0cnVjdHVyZSBkZXNjcmlwdGlvbnMgYWNjb3JkaW5nIHRvIGxhdGVzdCBjb2Rlcy4KICAg IC0gbW9kaWZ5IHJldmlzaW9uLgp2ODoKICAgIC0gY2hhbmdlIHJldmlzaW9uIGluZm8uCiAgICAg IChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBhZGQgY29udGVudCBp bnQgJ0FyZWFzIGZvciBpbXByb3ZlbWVudCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6 ZXN6dXRlayBXaWxrKQp2NzoKICAgIC0gY29ycmVjdCB0eXBvLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gcmVwbGFjZSBhcHBsaWNhdGlvbi9WTSB0byBk b21haW4uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBh bWVuZCBkZXNjcmlwdGlvbiBvZiBgZmVhdF9tYXNrYCB0byBtYWtlIGl0IGNsZWFyZXIuCiAgICAg IChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSB1cGRhdGUgcmV2aXNp b24uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBvdGhl ciBtaW5vciBmaXhlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGsp CnY2OgogICAgLSB3cml0ZSBhIG5ldyBmZWF0dXJlIGRvY3VtZW50IHRvIGNvdmVyIEwzIENBVC9D RFAgYW5kIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZpbiBUaWFuKQogICAgLSBhZGp1 c3QgJ1Rlcm1pbm9sb2d5JyBwb3NpdGlvbiBpbiBkb2N1bWVudC4KICAgICAgKHN1Z2dlc3RlZCBi eSBEYXJpbyBGYWdnaW9saSkKICAgIC0gZml4IHdvcmRpbmdzLgogICAgICAoc3VnZ2VzdGVkIGJ5 IERhcmlvIEZhZ2dpb2xpLCBLZXZpbiBUaWFuIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAg ICAtIGFkZCBTRE0gY2hhcHRlciB0aXRsZSBpbiBjb21taXQgbWVzc2FnZS4KICAgICAgKHN1Z2dl c3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBtb3JlIGV4cGxhbmF0aW9u cy4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZpbiBUaWFuKQp2NDoKICAgIC0gY2hhbmdlIGZpbGUg bmFtZSB0byBiZSBtb3JlIGRlc2NyaXB0aXZlLCAnaW50ZWxfcHNyX2wyX2NhdC5wYW5kb2MnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAgLSByZW1vdmUgJ0V4dCcgYW5k ICdOZXcnIHByZWZpeGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAg LSByZW1vdmUgY2hhbmdlIGxvZyBpbiBSZXZpc29uIHBhcnQuCiAgICAgIChzdWdnZXN0ZWQgYnkg RGFyaW8gRmFnZ2lvbGkpCiAgICAtIGFkanVzdCBYZW4gcmVsZWFzZSBudW1iZXIgdG8gNC45IHRv IHNob3cgdGhpcyBmZWF0dXJlIHRhcmdldHMgNC45LgogICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlv IEZhZ2dpb2xpKQogICAgLSBwcm92aWRlICdUZXJtaW5vbG9neScgYW5kIG1vcmUgc2VjdGlvbnMu CiAgICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAgICAtIGZpeCB3b3JkaW5ncy4K ICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIHJlbW92ZSBj aGFwdGVyIG51bWJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGsp CnYzOgogICAgLSBtYWtlIGRlc2lnbiBkb2N1bWVudCBiZSBhIHBhdGNoLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKdjI6CiAgICAtIHByb3ZpZGUgY2hhcHRlciBm b3IgdGhlIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBNZW5nIFh1KQotLS0KLS0tCiBkb2Nz L2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYyB8IDQ2MSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0NjEgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCgpk aWZmIC0tZ2l0IGEvZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2NkcC5wYW5kb2MgYi9kb2Nz L2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43OWI0NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9mZWF0dXJlcy9p bnRlbF9wc3JfY2F0X2NkcC5wYW5kb2MKQEAgLTAsMCArMSw0NjEgQEAKKyUgSW50ZWwgQ2FjaGUg QWxsb2NhdGlvbiBUZWNobm9sb2d5IGFuZCBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uIEZl YXR1cmVzCislIFJldmlzaW9uIDEuMTEKKworXGNsZWFycGFnZQorCisjIEJhc2ljcworCistLS0t LS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgIFN0YXR1czogKipUZWNoIFByZXZpZXcqKgorCitBcmNoaXRlY3R1 cmUocyk6IEludGVsIHg4NgorCisgICBDb21wb25lbnQocyk6IEh5cGVydmlzb3IsIHRvb2xzdGFj aworCisgICAgICAgSGFyZHdhcmU6IEwzIENBVDogSGFzd2VsbCBhbmQgYmV5b25kIENQVXMKKyAg ICAgICAgICAgICAgICAgQ0RQICAgOiBCcm9hZHdlbGwgYW5kIGJleW9uZCBDUFVzCisgICAgICAg ICAgICAgICAgIEwyIENBVDogQXRvbSBjb2RlbmFtZSBHb2xkbW9udCBhbmQgYmV5b25kIENQVXMK Ky0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCisjIFRlcm1pbm9sb2d5CisKKyogQ0FUICAgICAgICAgQ2FjaGUgQWxs b2NhdGlvbiBUZWNobm9sb2d5CisqIENCTSAgICAgICAgIENhcGFjaXR5IEJpdE1hc2tzCisqIENE UCAgICAgICAgIENvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24KKyogQ01UICAgICAgICAgQ2Fj aGUgTW9uaXRvcmluZyBUZWNobm9sb2d5CisqIENPUy9DTE9TICAgIENsYXNzIG9mIFNlcnZpY2UK KyogTVNScyAgICAgICAgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3RlcnMKKyogUFNSICAgICAgICAg SW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291cmNlCisKKyMgT3ZlcnZpZXcKKworSW50ZWwgcHJv dmlkZXMgYSBzZXQgb2YgYWxsb2NhdGlvbiBjYXBhYmlsaXRpZXMgaW5jbHVkaW5nIENhY2hlIEFs bG9jYXRhdGlvbgorVGVjaG5vbG9neSAoQ0FUKSBhbmQgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXph dGlvbiAoQ0RQKS4KKworQ0FUIGFsbG93cyBhbiBPUyBvciBoeXBlcnZpc29yIHRvIGNvbnRyb2wg YWxsb2NhdGlvbiBvZiBhIENQVSdzIHNoYXJlZCBjYWNoZQorYmFzZWQgb24gYXBwbGljYXRpb24v ZG9tYWluIHByaW9yaXR5IG9yIENsYXNzIG9mIFNlcnZpY2UgKENPUykuIEVhY2ggQ09TIGlzCitj b25maWd1cmVkIHVzaW5nIGNhcGFjaXR5IGJpdG1hc2tzIChDQk1zKSB3aGljaCByZXByZXNlbnQg Y2FjaGUgY2FwYWNpdHkgYW5kCitpbmRpY2F0ZSB0aGUgZGVncmVlIG9mIG92ZXJsYXAgYW5kIGlz b2xhdGlvbiBiZXR3ZWVuIGNsYXNzZXMuIE9uY2UgQ0FUIGlzIGNvLQorbmZpZ3VyZWQsIHRoZSBw cm9jZXNzb3IgYWxsb3dzIGFjY2VzcyB0byBwb3J0aW9ucyBvZiBjYWNoZSBhY2NvcmRpbmcgdG8g dGhlCitlc3RhYmxpc2hlZCBDT1MuIEludGVsIFhlb24gcHJvY2Vzc29yIEU1IHY0IGZhbWlseSAo YW5kIHNvbWUgb3RoZXJzKSBpbnRyb2R1Y2UKK2NhcGFiaWxpdGllcyB0byBjb25maWd1cmUgYW5k IG1ha2UgdXNlIG9mIHRoZSBDQVQgbWVjaGFuaXNtIG9uIHRoZSBMMyBjYWNoZS4KK0ludGVsIEdv bGRtb250IHByb2Nlc3NvciBwcm92aWRlcyBzdXBwb3J0IGZvciBjb250cm9sIG92ZXIgdGhlIEwy IGNhY2hlLgorCitDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uIChDRFApIFRlY2hub2xvZ3kg aXMgYW4gZXh0ZW5zaW9uIG9mIENBVC4gQ0RQCitlbmFibGVzIGlzb2xhdGlvbiBhbmQgc2VwYXJh dGUgcHJpb3JpdGl6YXRpb24gb2YgY29kZSBhbmQgZGF0YSBmZXRjaGVzIHRvCit0aGUgTDMgY2Fj aGUgaW4gYSBTVyBjb25maWd1cmFibGUgbWFubmVyLCB3aGljaCBjYW4gZW5hYmxlIHdvcmtsb2Fk IHByaW9yaXQtCitpemF0aW9uIGFuZCB0dW5pbmcgb2YgY2FjaGUgY2FwYWNpdHkgdG8gdGhlIGNo YXJhY3RlcmlzdGljcyBvZiB0aGUgd29ya2xvYWQuCitDRFAgZXh0ZW5kcyBDQVQgYnkgcHJvdmlk aW5nIHNlcGFyYXRlIGNvZGUgYW5kIGRhdGEgbWFza3MgcGVyIENsYXNzIG9mIFNlcnZpY2UKKyhD T1MpLiBXaGVuIFNXIGNvbmZpZ3VyZXMgdG8gZW5hYmxlIENEUCwgTDMgQ0FUIGlzIGRpc2FibGVk LgorCisjIFVzZXIgZGV0YWlscworCisqIEZlYXR1cmUgRW5hYmxpbmc6CisKKyAgQWRkICJwc3I9 Y2F0IiB0byBib290IGxpbmUgcGFyYW1ldGVyIHRvIGVuYWJsZSBhbGwgc3VwcG9ydGVkIGxldmVs IENBVCBmZWF0dS0KKyAgcmVzLiBBZGQgInBzcj1jZHAiIHRvIGVuYWJsZSBMMyBDRFAgYnV0IGRp c2FibGVzIEwzIENBVCBieSBTVy4KKworKiB4bCBpbnRlcmZhY2VzOgorCisgIDEuIGBwc3ItY2F0 LXNob3cgW09QVElPTlNdIGRvbWFpbi1pZGA6CisKKyAgICAgU2hvdyBMMiBDQVQgb3IgTDMgQ0FU L0NEUCBDQk0gb2YgdGhlIGRvbWFpbiBkZXNpZ25hdGVkIGJ5IFhlbiBkb21haW4taWQuCisKKyAg ICAgT3B0aW9uIGAtbGA6CisgICAgIGAtbDJgOiBTaG93IGNibSBmb3IgTDIgY2FjaGUuCisgICAg IGAtbDNgOiBTaG93IGNibSBmb3IgTDMgY2FjaGUuCisKKyAgICAgSWYgYC1sWGAgaXMgc3BlY2lm aWVkIGFuZCBMWCBpcyBub3Qgc3VwcG9ydGVkLCBwcmludCBlcnJvci4KKyAgICAgSWYgbm8gYC1s YCBpcyBzcGVjaWZpZWQsIGxldmVsIDMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uLgorCisgIDIuIGBw c3ItY2F0LXNldCBbT1BUSU9OU10gZG9tYWluLWlkIGNibWA6CisKKyAgICAgU2V0IEwyIENBVCBv ciBMMyBDQVQvQ0RQIENCTSB0byB0aGUgZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVuIGRvbWFpbi1p ZC4KKworICAgICBPcHRpb24gYC1zYDogU3BlY2lmeSB0aGUgc29ja2V0IHRvIHByb2Nlc3MsIG90 aGVyd2lzZSBhbGwgc29ja2V0cyBhcmUKKyAgICAgcHJvY2Vzc2VkLgorCisgICAgIE9wdGlvbiBg LWxgOgorICAgICBgLWwyYDogU3BlY2lmeSBjYm0gZm9yIEwyIGNhY2hlLgorICAgICBgLWwzYDog U3BlY2lmeSBjYm0gZm9yIEwzIGNhY2hlLgorCisgICAgIElmIGAtbFhgIGlzIHNwZWNpZmllZCBh bmQgTFggaXMgbm90IHN1cHBvcnRlZCwgcHJpbnQgZXJyb3IuCisgICAgIElmIG5vIGAtbGAgaXMg c3BlY2lmaWVkLCBsZXZlbCAzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbi4KKworICAgICBPcHRpb24g YC1jYCBvciBgLWRgOgorICAgICBgLWNgOiBTZXQgTDMgQ0RQIGNvZGUgY2JtLgorICAgICBgLWRg OiBTZXQgTDMgQ0RQIGRhdGEgY2JtLgorCisgIDMuIGBwc3ItaHdpbmZvIFtPUFRJT05TXWA6CisK KyAgICAgU2hvdyBDTVQgJiBMMiBDQVQgJiBMMyBDQVQvQ0RQIEhXIGluZm9ybWF0aW9uIG9uIGV2 ZXJ5IHNvY2tldC4KKworICAgICBPcHRpb24gYC1tLCAtLWNtdGA6IFNob3cgQ2FjaGUgTW9uaXRv cmluZyBUZWNobm9sb2d5IChDTVQpIGhhcmR3YXJlIGluZm8uCisKKyAgICAgT3B0aW9uIGAtYSwg LS1jYXRgOiBTaG93IENBVC9DRFAgaGFyZHdhcmUgaW5mby4KKworIyBUZWNobmljYWwgZGV0YWls cworCitMMyBDQVQvQ0RQIGFuZCBMMiBDQVQgYXJlIGFsbCBtZW1iZXJzIG9mIEludGVsIFBTUiBm ZWF0dXJlcywgdGhleSBzaGFyZSB0aGUgYmFzZQorUFNSIGluZnJhc3RydWN0dXJlIGluIFhlbi4K KworIyMgSGFyZHdhcmUgcGVyc3BlY3RpdmUKKworICBDQVQvQ0RQIGRlZmluZXMgYSByYW5nZSBv ZiBNU1JzIHRvIGFzc2lnbiBkaWZmZXJlbnQgY2FjaGUgYWNjZXNzIHBhdHRlcm5zCisgIHdoaWNo IGFyZSBrbm93biBhcyBDQk1zLCBlYWNoIENCTSBpcyBhc3NvY2lhdGVkIHdpdGggYSBDT1MuCisK KyAgYGBgCisgIEUuZy4gTDIgQ0FUOgorICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICBJQTMyX1BRUl9B U1NPQyAgICAgICB8IE1TUiAocGVyIHNvY2tldCkgICAgICAgICAgIHwgICAgQWRkcmVzcyAgICAg fAorICAgKy0tLS0rLS0tKy0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICB8Q09TfCAgICAgICB8ICAgICB8IElBMzJfTDJf UU9TX01BU0tfMCAgICAgICAgIHwgICAgIDB4RDEwICAgICAgfAorICAgKy0tLS0rLS0tKy0tLS0t LS0rICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICAgICAgICAgIOKUlC0tLS0tLS0tLS0tLS0+IHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAg fCAgLi4uICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgSUEzMl9MMl9RT1NfTUFTS19uICAgICAgICAgfCAweEQxMCtuIChuPDY0KSB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgIGBgYAorCisgIEwzIENBVC9DRFAgdXNlcyBhIHJhbmdlIG9mIE1T UnMgZnJvbSAweEM5MCB+IDB4QzkwK24gKG48MTI4KS4KKworICBMMiBDQVQgdXNlcyBhIHJhbmdl IG9mIE1TUnMgZnJvbSAweEQxMCB+IDB4RDEwK24gKG48NjQpLCBmb2xsb3dpbmcgdGhlIEwzCisg IENBVC9DRFAgTVNScywgc2V0dGluZyBkaWZmZXJlbnQgTDIgY2FjaGUgYWNjZXNzaW5nIHBhdHRl cm5zIGZyb20gTDMgY2FjaGUgaXMKKyAgc3VwcG9ydGVkLgorCisgIEV2ZXJ5IE1TUiBzdG9yZXMg YSBDQk0gdmFsdWUuIEEgY2FwYWNpdHkgYml0bWFzayAoQ0JNKSBwcm92aWRlcyBhIGhpbnQgdG8g dGhlCisgIGhhcmR3YXJlIGluZGljYXRpbmcgdGhlIGNhY2hlIHNwYWNlIGEgZG9tYWluIHNob3Vs ZCBiZSBsaW1pdGVkIHRvIGFzIHdlbGwgYXMKKyAgcHJvdmlkaW5nIGFuIGluZGljYXRpb24gb2Yg b3ZlcmxhcCBhbmQgaXNvbGF0aW9uIGluIHRoZSBDQVQtY2FwYWJsZSBjYWNoZSBmcm9tCisgIG90 aGVyIGRvbWFpbnMgY29udGVuZGluZyBmb3IgdGhlIGNhY2hlLgorCisgIFNhbXBsZSBjYWNoZSBj YXBhY2l0eSBiaXRtYXNrcyBmb3IgYSBiaXRsZW5ndGggb2YgOCBhcmUgc2hvd24gYmVsb3cuIFBs ZWFzZQorICBub3RlIHRoYXQgYWxsIChhbmQgb25seSkgY29udGlndW91cyAnMScgY29tYmluYXRp b25zIGFyZSBhbGxvd2VkIChlLmcuIEZGRkZILAorICAwRkYwSCwgMDAzQ0gsIGV0Yy4pLgorCisg IGBgYAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisg ICAgICAgfCBNNyB8IE02IHwgTTUgfCBNNCB8IE0zIHwgTTIgfCBNMSB8IE0wIHwKKyAgICAgICAr LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MwIHwgQSAgfCBB ICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IERlZmF1bHQgQml0bWFzaworICAgICAg ICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzEgfCBBICB8 IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MyIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSsKKworICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rCisgICAgICAgfCBNNyB8IE02IHwgTTUgfCBNNCB8IE0zIHwgTTIgfCBNMSB8IE0w IHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBD T1MwIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IE92ZXJsYXBwZWQg Qml0bWFzaworICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r CisgIENPUzEgfCAgICB8ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfCBBICB8IEEgIHwKKyAgICAg ICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MyIHwgICAg fCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8CisgICAgICAgKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKworICAgICAgICstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgICAgICAgfCBNNyB8IE02IHwgTTUgfCBNNCB8IE0z IHwgTTIgfCBNMSB8IE0wIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKworICBDT1MwIHwgQSAgfCBBICB8IEEgIHwgQSAgfCAgICB8ICAgIHwgICAgfCAg ICB8IElzb2xhdGVkIEJpdG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKworICBDT1MxIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwgICAg fCAgICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsK KyAgQ09TMiB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfAorICAgICAg ICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIGBgYAorCisgIFdl IGNhbiBnZXQgdGhlIENCTSBsZW5ndGggdGhyb3VnaCBDUFVJRC4gVGhlIGRlZmF1bHQgdmFsdWUg b2YgQ0JNIGlzIGNhbGN1bC0KKyAgYXRlZCBieSBgKDF1bGwgPDwgY2JtX2xlbikgLSAxYC4gVGhh dCBpcyBhIGZ1bGx5IG9wZW4gYml0bWFzaywgYWxsIG9uZXMgYml0bS0KKyAgYXNrLiBUaGUgQ09T WzBdIGFsd2F5cyBzdG9yZXMgdGhlIGRlZmF1bHQgdmFsdWUgd2l0aG91dCBjaGFuZ2UuCisKKyAg VGhlcmUgaXMgYSBgSUEzMl9QUVJfQVNTT0NgIHJlZ2lzdGVyIHdoaWNoIHN0b3JlcyB0aGUgQ09T IElEIG9mIHRoZSBWQ1BVLiBIVworICBlbmZvcmNlcyBjYWNoZSBhbGxvY2F0aW9uIGFjY29yZGlu ZyB0byB0aGUgY29ycmVzcG9uZGluZyBDQk0uCisKKyMjIFRoZSByZWxhdGlvbnNoaXAgYmV0d2Vl biBMMyBDQVQvQ0RQIGFuZCBMMiBDQVQKKworICBIVyBtYXkgc3VwcG9ydCBhbGwgZmVhdHVyZXMu IEJ5IGRlZmF1bHQsIENEUCBpcyBkaXNhYmxlZCBvbiB0aGUgcHJvY2Vzc29yLgorICBJZiB0aGUg TDMgQ0FUIE1TUnMgYXJlIHVzZWQgd2l0aG91dCBlbmFibGluZyBDRFAsIHRoZSBwcm9jZXNzb3Ig b3BlcmF0ZXMgaW4KKyAgYSB0cmFkaXRpb25hbCBDQVQtb25seSBtb2RlLiBXaGVuIENEUCBpcyBl bmFibGVkOgorICAqIHRoZSBDQVQgbWFzayBNU1JzIGFyZSByZS1tYXBwZWQgaW50byBpbnRlcmxl YXZlZCBwYWlycyBvZiBtYXNrIE1TUnMgZm9yCisgICAgZGF0YSBvciBjb2RlIGZldGNoZXMuCisg ICogdGhlIHJhbmdlIG9mIENPUyBmb3IgQ0FUIGlzIHJlLWluZGV4ZWQsIHdpdGggdGhlIGxvd2Vy LWhhbGYgb2YgdGhlIENPUworICAgIHJhbmdlIGF2YWlsYWJsZSBmb3IgQ0RQLgorCisgIEwyIENB VCBpcyBpbmRlcGVuZGVudCBvZiBMMyBDQVQvQ0RQLCB3aGljaCBtZWFucyBMMiBDQVQgY2FuIGJl IGVuYWJsZWQgd2hpbGUKKyAgTDMgQ0FUL0NEUCBpcyBkaXNhYmxlZCwgb3IgTDIgQ0FUIGFuZCBM MyBDQVQvQ0RQIGFyZSBib3RoIGVuYWJsZWQuCisKKyAgQXMgYSByZXF1aXJlbWVudCwgdGhlIGJp dHMgb2YgQ0JNIG9mIENBVC9DRFAgbXVzdCBiZSBjb250aW51b3VzLgorCisgIE4uQi4gTDIgQ0FU IGFuZCBMMyBDQVQvQ0RQIHNoYXJlIHRoZSBzYW1lIENPUyBmaWVsZCBpbiB0aGUgc2FtZSBhc3Nv Y2lhdGUKKyAgcmVnaXN0ZXIgYElBMzJfUFFSX0FTU09DYCwgd2hpY2ggbWVhbnMgb25lIENPUyBp cyBhc3NvY2lhdGVkIHdpdGggYSBwYWlyIG9mCisgIEwyIENBVCBDQk0gYW5kIEwzIENBVC9DRFAg Q0JNLgorCisgIEJlc2lkZXMsIHRoZSBtYXggQ09TIG9mIEwyIENBVCBtYXkgYmUgZGlmZmVyZW50 IGZyb20gTDMgQ0FUL0NEUCAob3Igb3RoZXIKKyAgUFNSIGZlYXR1cmVzIGluIGZ1dHVyZSkuIElu IHNvbWUgY2FzZXMsIGEgZG9tYWluIGlzIHBlcm1pdHRlZCB0byBoYXZlIGEgQ09TCisgIHRoYXQg aXMgYmV5b25kIG9uZSAob3IgbW9yZSkgb2YgUFNSIGZlYXR1cmVzIGJ1dCB3aXRoaW4gdGhlIG90 aGVycy4gRm9yCisgIGluc3RhbmNlLCBsZXQncyBhc3N1bWUgdGhlIG1heCBDT1Mgb2YgTDIgQ0FU IGlzIDggYnV0IHRoZSBtYXggQ09TIG9mIEwzCisgIENBVCBpcyAxNiwgd2hlbiBhIGRvbWFpbiBp cyBhc3NpZ25lZCA5IGFzIENPUywgdGhlIEwzIENBVCBDQk0gYXNzb2NpYXRlZCB0bworICBDT1Mg OSB3b3VsZCBiZSBlbmZvcmNlZCwgYnV0IGZvciBMMiBDQVQsIHRoZSBIVyB3b3JrcyBhcyBkZWZh dWx0IHZhbHVlIGlzCisgIHNldCBzaW5jZSBDT1MgOSBpcyBiZXlvbmQgdGhlIG1heCBDT1MgKDgp IG9mIEwyIENBVC4KKworIyMgRGVzaWduIE92ZXJ2aWV3CisKKyogQ29yZSBDT1MvQ0JNIGFzc29j aWF0aW9uCisKKyAgV2hlbiBlbmZvcmNpbmcgQ0FUL0NEUCwgYWxsIGNvcmVzIG9mIGRvbWFpbnMg aGF2ZSB0aGUgc2FtZSBkZWZhdWx0IENPUyAoQ09TMCkKKyAgd2hpY2ggaXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBmdWxseSBvcGVuIENCTSAoYWxsIG9uZXMgYml0bWFzaykgdG8gYWNjZXNzIGFsbAor ICBjYWNoZS4gVGhlIGRlZmF1bHQgQ09TIGlzIHVzZWQgb25seSBpbiBoeXBlcnZpc29yIGFuZCBp cyB0cmFuc3BhcmVudCB0byB0b29sCisgIHN0YWNrIGFuZCB1c2VyLgorCisgIFN5c3RlbSBhZG1p bmlzdHJhdG9yIGNhbiBjaGFuZ2UgUFNSIGFsbG9jYXRpb24gcG9saWN5IGF0IHJ1bnRpbWUgYnkg dG9vbCBzdGFjay4KKyAgU2luY2UgTDIgQ0FUIHNoYXJlcyBDT1Mgd2l0aCBMMyBDQVQvQ0RQLCBh IENPUyBjb3JyZXNwb25kcyB0byBhIDItdHVwbGUsIGxpa2UKKyAgW0wyIENCTSwgTDMgQ0JNXSB3 aXRoIG9ubHktQ0FUIGVuYWJsZWQsIHdoZW4gQ0RQIGlzIGVuYWJsZWQsIG9uZSBDT1MgY29ycmVz cG8tCisgIG5kcyB0byBhIDMtdHVwbGUsIGxpa2UgW0wyIENCTSwgTDMgQ29kZV9DQk0sIEwzIERh dGFfQ0JNXS4gSWYgbmVpdGhlciBMMyBDQVQKKyAgbm9yIEwzIENEUCBpcyBlbmFibGVkLCB0aGlu Z3Mgd291bGQgYmUgZWFzaWVyLCBvbmUgQ09TIGNvcnJlc3BvbmRzIHRvIG9uZSBMMgorICBDQk0u CisKKyogVkNQVSBzY2hlZHVsZQorCisgIFdoZW4gY29udGV4dCBzd2l0Y2ggaGFwcGVucywgdGhl IENPUyBvZiBWQ1BVIGlzIHdyaXR0ZW4gdG8gcGVyLXRocmVhZCBNU1IKKyAgYElBMzJfUFFSX0FT U09DYCwgYW5kIHRoZW4gaGFyZHdhcmUgZW5mb3JjZXMgY2FjaGUgYWxsb2NhdGlvbiBhY2NvcmRp bmcgdG8KKyAgdGhlIGNvcnJlc3BvbmRpbmcgQ0JNLgorCisqIE11bHRpLXNvY2tldHMKKworICBE aWZmZXJlbnQgc29ja2V0cyBtYXkgaGF2ZSBkaWZmZXJlbnQgQ0FUL0NEUCBjYXBhYmlsaXR5IChl LmcuIG1heCBDT1MpIGFsdGgtCisgIG91Z2ggaXQgaXMgY29uc2lzdGVudCBvbiB0aGUgc2FtZSBz b2NrZXQuIFNvIHRoZSBjYXBhYmlsaXR5IG9mIHBlci1zb2NrZXQgQ0FULworICBDRFAgaXMgc3Bl Y2lmaWVkLgorCisgICdwc3ItY2F0LXNldCcgY2FuIHNldCBDQk0gZm9yIG9uZSBkb21haW4gcGVy IHNvY2tldC4gT24gZWFjaCBzb2NrZXQsIHdlIG1haW4tCisgIHRhaW4gYSBDT1MgYXJyYXkgZm9y IGFsbCBkb21haW5zLiBPbmUgZG9tYWluIHVzZXMgb25lIENPUyBhdCBvbmUgdGltZS4gT25lIENP UworICBzdG9yZXMgdGhlIENCTSBvZiB0aGUgZG9tYWluIHRvIHdvcmsuIFNvLCB3aGVuIGEgVkNQ VSBvZiB0aGUgZG9tYWluIGlzIG1pZ3JhdC0KKyAgZWQgZnJvbSBzb2NrZXQgMSB0byBzb2NrZXQg MiwgaXQgZm9sbG93cyBjb25maWd1cmF0aW9uIG9uIHNvY2tldCAyLgorCisgIEUuZy4gdXNlciBz ZXRzIGRvbWFpbiAxIENCTSBvbiBzb2NrZXQgMSB0byAweDdmIHdoaWNoIHVzZXMgQ09TIDkgYnV0 IHNldHMgZG8tCisgIG1haW4gMSBDQk0gb24gc29ja2V0IDIgdG8gMHgzZiB3aGljaCB1c2VzIENP UyA3LiBXaGVuIFZDUFUgb2YgdGhpcyBkb21haW4KKyAgaXMgbWlncmF0ZWQgZnJvbSBzb2NrZXQg MSB0byAyLCB0aGUgQ09TIElEIHVzZWQgaXMgNywgdGhhdCBtZWFucyAweDNmIGlzIHRoZQorICBD Qk0gdG8gd29yayBmb3IgdGhpcyBkb21haW4gMSBub3cuCisKKyMjIEltcGxlbWVudGF0aW9uIERl c2NyaXB0aW9uCisKKyogSHlwZXJ2aXNvciBpbnRlcmZhY2VzOgorCisgIDEuIEJvb3QgbGluZSBw YXJhbWV0ZXIgInBzcj1jYXQiIGVuYWJsZXMgTDIgQ0FUIGFuZCBMMyBDQVQgaWYgaGFyZHdhcmUg c3VwcG8tCisgICAgIHJ0ZWQuICJwc3I9Y2RwIiBlbmFibGVzIENEUCBpZiBoYXJkd2FyZSBzdXBw b3J0ZWQuCisKKyAgMi4gU1lTQ1RMOgorICAgICAgICAgIC0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dl dF9sM19pbmZvOiBHZXQgTDMgQ0FUL0NEUCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAtIFhFTl9T WVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbzogR2V0IEwyIENBVCBpbmZvcm1hdGlvbi4KKworICAz LiBET01DVEw6CisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NCTTog R2V0IEwzIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfU0VUX0wzX0NCTTogU2V0IEwzIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NPREU6IEdldCBDRFAgQ29kZSBDQk0gZm9yIGEgZG9t YWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFOiBTZXQg Q0RQIENvZGUgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NB VF9PUF9HRVRfTDNfREFUQTogR2V0IENEUCBEYXRhIENCTSBmb3IgYSBkb21haW4uCisgICAgICAg ICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0RBVEE6IFNldCBDRFAgRGF0YSBDQk0g Zm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9D Qk06IEdldCBMMiBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1Jf Q0FUX09QX1NFVF9MMl9DQk06IFNldCBMMiBDQk0gZm9yIGEgZG9tYWluLgorCisqIHhsIGludGVy ZmFjZXM6CisKKyAgMS4gcHNyLWNhdC1zaG93IC1sWCBkb21haW4taWQKKyAgICAgICAgICBTaG93 IExYIGNibSBmb3IgYSBkb21haW4uCisgICAgICAgICAgPT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dl dF9sM19pbmZvICAgIC8KKyAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2lu Zm8gICAgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNICAv CisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DT0RFIC8KKyAgICAg ICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0RBVEEgLworICAgICAgICAgICAg IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JNCisKKyAgMi4gcHNyLWNhdC1zZXQgLWxY IGRvbWFpbi1pZCBjYm0KKyAgICAgICAgICBTZXQgTFggY2JtIGZvciBhIGRvbWFpbi4KKyAgICAg ICAgICA9PiBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NCTSAgLworICAgICAgICAgICAg IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ09ERSAvCisgICAgICAgICAgICAgWEVOX0RP TUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BT Ul9DQVRfT1BfU0VUX0wyX0NCTQorCisgIDMuIHBzci1od2luZm8KKyAgICAgICAgICBTaG93IFBT UiBIVyBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIEwzIENBVC9DRFAvTDIgQ0FUCisgICAgICAgICAg PT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvIC8KKyAgICAgICAgICAgICBYRU5fU1lT Q1RMX1BTUl9DQVRfZ2V0X2wyX2luZm8KKworKiBLZXkgZGF0YSBzdHJ1Y3R1cmU6CisKKyAgIDEu IEZlYXR1cmUgcHJvcGVydGllcworCisgICAgICBgYGAKKyAgICAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmVhdF9wcm9wcyB7CisgICAgICAgICAgdW5zaWduZWQgaW50IGNvc19udW07CisgICAgICAg ICAgZW51bSBjYm1fdHlwZSB0eXBlW1BTUl9NQVhfQ09TX05VTV07CisgICAgICAgICAgYm9vbCAo KmdldF9mZWF0X2luZm8pKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5 X2xlbik7CisgICAgICAgICAgdm9pZCAoKndyaXRlX21zcikodW5zaWduZWQgaW50IGNvcywgdWlu dDMyX3QgdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOworICAgICAgfSAqZmVhdF9wcm9wc1tQU1Jf U09DS0VUX0ZFQVRfTlVNXTsKKyAgICAgIGBgYAorCisgICAgICBFdmVyeSBmZWF0dXJlIGhhcyBp dHMgb3duIHByb3BlcnRpZXMsIGUuZy4gc29tZSBkYXRhIGFuZCBhY3Rpb25zLiBBCisgICAgICBm ZWF0dXJlIHByb3BlcnR5IHBvaW50ZXIgYXJyYXkgaXMgZGVjbGFyZWQgdG8gc2F2ZSBldmVyeSBm ZWF0dXJlJ3MKKyAgICAgIHByb3BlcnRpZXMuCisKKyAgICAgIC0gTWVtYmVyIGBjb3NfbnVtYAor CisgICAgICAgIGBjb3NfbnVtYCBpcyB0aGUgbnVtYmVyIG9mIENPUyByZWdpc3RlcnMgdGhlIGZl YXR1cmUgdXNlcywgZS5nLiBMMy9MMgorICAgICAgICBDQVQgdXNlcyAxIHJlZ2lzdGVyIGJ1dCBD RFAgdXNlcyAyIHJlZ2lzdGVycy4KKworICAgICAgLSBNZW1iZXIgYHR5cGVgCisKKyAgICAgICAg YHR5cGVgIGlzIGFuIGFycmF5IHRvIHNhdmUgYWxsICdlbnVtIGNibV90eXBlJyB2YWx1ZXMgb2Yg dGhlIGZlYXR1cmUuCisgICAgICAgIEl0IGlzIHVzZWQgd2l0aCBjb3NfbnVtIHRvZ2V0aGVyIHRv IGdldC93cml0ZSBhIGZlYXR1cmUncyBDT1MgcmVnaXN0ZXJzCisgICAgICAgIHZhbHVlcyBvbmUg Ynkgb25lLgorCisgICAgICAtIE1lbWJlciBgZ2V0X2ZlYXRfaW5mb2AKKworICAgICAgICBgZ2V0 X2ZlYXRfaW5mb2AgaXMgdXNlZCB0byByZXR1cm4gZmVhdHVyZSBIVyBpbmZvIHRocm91Z2ggc3lz Y3RsLgorCisgICAgICAtIE1lbWJlciBgd3JpdGVfbXNyYAorCisgICAgICAgIGB3cml0ZV9tc3Jg IGlzIHVzZWQgdG8gd3JpdGUgb3V0IGZlYXR1cmUgTVNSIHJlZ2lzdGVyLgorCisgICAyLiBGZWF0 dXJlIG5vZGUKKworICAgICAgYGBgCisgICAgICBzdHJ1Y3QgZmVhdF9ub2RlIHsKKyAgICAgICAg ICB1bnNpZ25lZCBpbnQgY29zX21heDsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsK KyAgICAgICAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19DTlRdOworICAgICAg fTsKKyAgICAgIGBgYAorCisgICAgICBXaGVuIGEgUFNSIGVuZm9yY2VtZW50IGZlYXR1cmUgaXMg ZW5hYmxlZCwgaXQgd2lsbCBiZSBhZGRlZCBpbnRvIGEKKyAgICAgIGZlYXR1cmUgYXJyYXkuCisK KyAgICAgIC0gTWVtYmVyIGBjb3NfbWF4YAorCisgICAgICAgIGBjb3NfbWF4YCBpcyBvbmUgb2Yg dGhlIGhhcmR3YXJlIGluZm8gb2YgQ0FULiBJdCBtZWFucyB0aGUgbWF4IG51bWJlcgorICAgICAg ICBvZiBDT1MgcmVnaXN0ZXJzLiBBcyBMMyBDQVQvQ0RQL0wyIENBVCBhbGwgaGF2ZSBpdCwgaXQg aXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYGZlYXRfbm9kZWAuCisKKyAgICAgIC0gTWVtYmVyIGBj Ym1fbGVuYAorCisgICAgICAgIGBjYm1fbGVuYCBpcyBvbmUgb2YgdGhlIGhhcmR3YXJlIGluZm8g b2YgQ0FULiBJdCBtZWFucyB0aGUgbWF4IG51bWJlcgorICAgICAgICBvZiBiaXRzIHRvIHNldC4K KworICAgICAgLSBNZW1iZXIgYGNvc19yZWdfdmFsYAorCisgICAgICAgIGBjb3NfcmVnX3ZhbGAg aXMgYW4gYXJyYXkgdG8gbWFpbnRhaW4gdGhlIHZhbHVlIHNldCBpbiBhbGwgQ09TIHJlZ2lzdGVy cworICAgICAgICBvZiB0aGUgZmVhdHVyZS4gVGhlIGFycmF5IGlzIGluZGV4ZWQgYnkgQ09TIElE LgorCisgICAzLiBQZXItc29ja2V0IFBTUiBmZWF0dXJlcyBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUK KworICAgICAgYGBgCisgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvIHsKKyAgICAgICAgICBi b29sIGZlYXRfaW5pdDsKKyAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0dXJlc1tQU1Jf U09DS0VUX0ZFQVRfTlVNXTsKKyAgICAgICAgICBzcGlubG9ja190IHJlZl9sb2NrOworICAgICAg ICAgIHVuc2lnbmVkIGludCBjb3NfcmVmW01BWF9DT1NfUkVHX0NOVF07CisgICAgICAgICAgREVD TEFSRV9CSVRNQVAoZG9tX2lkcywgRE9NSURfSURMRSArIDEpOworICAgICAgfTsKKyAgICAgIGBg YAorCisgICAgICBXZSBjb2xsZWN0IGFsbCBQU1IgYWxsb2NhdGlvbiBmZWF0dXJlcyBpbmZvcm1h dGlvbiBvZiBhIHNvY2tldCBpbiB0aGlzCisgICAgICBgc3RydWN0IHBzcl9zb2NrZXRfaW5mb2Au CisKKyAgICAgIC0gTWVtYmVyIGBmZWF0X2luaXRgCisKKyAgICAgICAgYGZlYXRfaW5pdGAgaXMg YSBmbGFnLCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBDUFUgaW5pdCBvbiBhIHNvY2tldAorICAg ICAgICBoYXMgYmVlbiBkb25lLgorCisgICAgICAtIE1lbWJlciBgZmVhdHVyZXNgCisKKyAgICAg ICAgYGZlYXR1cmVzYCBpcyBhIHBvaW50ZXIgYXJyYXkgdG8gc2F2ZSBhbGwgZW5hYmxlZCBmZWF0 dXJlcyBwb25pdGVycworICAgICAgICBhY2NvcmRpbmcgdG8gZmVhdHVyZSBwb3NpdGlvbiBkZWZp bmVkIGluIGBlbnVtIHBzcl9mZWF0X3R5cGVgLgorCisgICAgICAtIE1lbWJlciBgcmVmX2xvY2tg CisKKyAgICAgICAgYHJlZl9sb2NrYCBpcyBhIHNwaW4gbG9jayB0byBwcm90ZWN0IGBjb3NfcmVm YC4KKworICAgICAgLSBNZW1iZXIgYGNvc19yZWZgCisKKyAgICAgICAgYGNvc19yZWZgIGlzIGFu IGFycmF5IHdoaWNoIG1haW50YWlucyB0aGUgcmVmZXJlbmNlIG9mIG9uZSBDT1MuIEl0IG1hcHMK KyAgICAgICAgdG8gY29zX3JlZ192YWxbTUFYX0NPU19SRUdfTlVNXSBpbiBgc3RydWN0IGZlYXRf bm9kZWAuIElmIG9uZSBDT1MgaXMKKyAgICAgICAgdXNlZCBieSBvbmUgZG9tYWluLCB0aGUgY29y cmVzcG9uZGluZyByZWZlcmVuY2Ugd2lsbCBpbmNyZWFzZSBieSBvbmUuIElmCisgICAgICAgIGEg ZG9tYWluIHJlbGVhc2VzIHRoZSBDT1MsIHRoZSByZWZlcmVuY2Ugd2lsbCBkZWNyZWFzZSBieSBv bmUuIFRoZSBhcnJheQorICAgICAgICBpcyBpbmRleGVkIGJ5IENPUyBJRC4KKworICAgICAgLSBN ZW1iZXIgYGRvbV9pZHNgCisKKyAgICAgICAgYGRvbV9pZHNgIGlzIGEgYml0bWFwLCBldmVyeSBi aXQgY29ycmVzcG9uZHMgdG8gYSBkb21haW4uIEluZGV4IGlzCisgICAgICAgIGRvbWFpbl9pZC4g SXQgaXMgdXNlZCB0byBoZWxwIHJlc3RvcmUgZG9tYWluX2lkIHRvIDAgd2hlbiBhIHNvY2tldCBp cworICAgICAgICBvZmZsaW5lIGFuZCB0aGVuIG9ubGluZSBhZ2Fpbi4KKworIyBMaW1pdGF0aW9u cworCitDQVQvQ0RQIGNhbiBvbmx5IHdvcmsgb24gSFcgd2hpY2ggZW5hYmxlcyBpdChjaGVjayBi eSBDUFVJRCkuIFNvIGZhciwgdGhlcmUgaXMKK25vIEhXIHdoaWNoIGVuYWJsZXMgYm90aCBMMiBD QVQgYW5kIEwzIENBVC9DRFAuIEJ1dCBTVyBpbXBsZW1lbnRhdGlvbiBoYXMgY29ucy0KK2lkZXJl ZCBzdWNoIHNjZW5hcmlvIHRvIGVuYWJsZSBib3RoIEwyIENBVCBhbmQgTDMgQ0FUL0NEUC4KKwor IyBUZXN0aW5nCisKK1dlIGNhbiBleGVjdXRlIGFib3ZlIHhsIGNvbW1hbmRzIHRvIHZlcmlmeSBM MiBDQVQgYW5kIEwzIENBVC9DRFAgb24gZGlmZmVyZW50CitIV3Mgc3VwcG9ydCB0aGVtLgorCitG b3IgZXhhbXBsZToKKyAgICByb290QDp+JCB4bCBwc3ItaHdpbmZvIC0tY2F0CisgICAgQ2FjaGUg QWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMMgorICAgIFNvY2tldCBJRCAgICAgICA6IDAK KyAgICBNYXhpbXVtIENPUyAgICAgOiAzCisgICAgQ0JNIGxlbmd0aCAgICAgIDogOAorICAgIERl ZmF1bHQgQ0JNICAgICA6IDB4ZmYKKworICAgIHJvb3RAOn4kIHhsIHBzci1jYXQtY2JtLXNldCAt bDIgMSAweDdmCisKKyAgICByb290QDp+JCB4bCBwc3ItY2F0LXNob3cgLWwyIDEKKyAgICBTb2Nr ZXQgSUQgICAgICAgOiAwCisgICAgRGVmYXVsdCBDQk0gICAgIDogMHhmZgorICAgICAgIElEICAg ICAgICAgICAgICAgICAgICAgTkFNRSAgICAgICAgICAgICBDQk0KKyAgICAgICAgMSAgICAgICAg ICAgICAgICAgdWJ1bnR1MTQgICAgICAgICAgICAweDdmCisKKyMgQXJlYXMgZm9yIGltcHJvdmVt ZW50CisKK0EgaGV4YWRlY2ltYWwgbnVtYmVyIGlzIHVzZWQgdG8gc2V0L3Nob3cgQ0JNIGZvciBh IGRvbWFpbiBub3cuIEFsdGhvdWdoIHRoaXMKK2lzIGNvbnZlbmllbnQgdG8gY292ZXIgb3Zlcmxh cC9pc29sYXRlZCBiaXRtYXNrIHJlcXVpcmVtZW50LCBpdCBpcyBub3QgdXNlci0KK2ZyaWVuZGx5 LgorCitUbyBpbXByb3ZlIHRoaXMsIHRoZSBsaWJ4bCBpbnRlcmZhY2VzIGNhbiBiZSB3cmFwcGVk IGluIGxpYnZpcnQgdG8gcHJvdmlkZSBtb3JlCit1c3ItZnJpZW5kbHkgaW50ZXJmYWNlcyB0byB1 c2VyLCBlLmcuIGEgcGVyY2VudGFnZSBudW1iZXIgb2YgdGhlIGNhY2hlIHRvIHNldAorYW5kIHNo b3cuCisKKyMgS25vd24gaXNzdWVzCisKK04vQQorCisjIFJlZmVyZW5jZXMKKworIklOVEVMwq4g UkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJT04gRkVB VFVSRVMiIFtJbnRlbMKuIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVs b3BlciBNYW51YWxzLCB2b2wzXShodHRwOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9l bi9wcm9jZXNzb3JzL2FyY2hpdGVjdHVyZXMtc29mdHdhcmUtZGV2ZWxvcGVyLW1hbnVhbHMuaHRt bCkKKworIyBIaXN0b3J5CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGF0ZSAgICAgICBSZXZpc2lvbiBW ZXJzaW9uICBOb3RlcworLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMDE2LTA4LTEyIDEuMCAgICAgIFhlbiA0 LjkgIERlc2lnbiBkb2N1bWVudCB3cml0dGVuCisyMDE3LTAyLTEzIDEuNyAgICAgIFhlbiA0Ljkg IENoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuIE1vZGlmeSB0aGUgZGVz aWduIGRvY3VtZW50IHRvIGNvdmVyIEwzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENBVC9DRFAgYW5kIEwyIENBVDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4gRml4 IHR5cG9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLiBBbWVuZCBkZXNjcmlwdGlv biBvZiBgZmVhdF9tYXNrYCB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGl0IGNsZWFyZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuIE90aGVyIG1pbm9y IGNoYW5nZXMuCisyMDE3LTAyLTE1IDEuOCAgICAgIFhlbiA0LjkgIENoYW5nZXM6CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEuIEFkZCBjb250ZW50IGluICdBcmVhcyBmb3IgaW1wcm92 ZW1lbnQnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBBZGp1c3QgcmV2aXNpb24g bnVtYmVyLgorMjAxNy0wMy0xNiAxLjkgICAgICBYZW4gNC45ICBDaGFuZ2VzOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxLiBBZGQgJ0NNVCcgaW4gJ1Rlcm1pbm9sb2d5JzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMi4gQ2hhbmdlICdmZWF0dXJlIGxpc3QnIHRvICdmZWF0 dXJlIGFycmF5Jy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4gTW9kaWZ5IGRhdGEg c3RydWN0dXJlIGRlc2NyaXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4g QWRqdXN0IHJldmlzaW9uIG51bWJlci4KKzIwMTctMDUtMDMgMS4xMSAgICAgWGVuIDQuOSAgQ2hh bmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gTW9kaWZ5IGRhdGEgc3RydWN0 dXJlIGRlc2NyaXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4gQWRqdXN0 IHJldmlzaW9uIG51bWJlci4KKy0tLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAKMS45LjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK