From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH v4 2/3] public/io/netif.h: document control ring and toeplitz hashing Date: Fri, 8 Jan 2016 15:53:46 +0000 Message-ID: <1452268426.26438.26.camel@citrix.com> References: <1452171912-29857-1-git-send-email-paul.durrant@citrix.com> <1452171912-29857-3-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta4.messagelabs.com ([85.158.143.247]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aHZMX-0003vX-SS for xen-devel@lists.xenproject.org; Fri, 08 Jan 2016 15:54:02 +0000 In-Reply-To: <1452171912-29857-3-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Paul Durrant , xen-devel@lists.xenproject.org Cc: Keir Fraser , Ian Jackson , Jan Beulich , Tim Deegan List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAyMDE2LTAxLTA3IGF0IDEzOjA1ICswMDAwLCBQYXVsIER1cnJhbnQgd3JvdGU6Cj7C oAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vbmV0aWYuaAo+IGIveGVuL2lu Y2x1ZGUvcHVibGljL2lvL25ldGlmLmgKPiBpbmRleCAxNzkwZWEwLi4wNmUwYjYxIDEwMDY0NAo+ IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9uZXRpZi5oCj4gKysrIGIveGVuL2luY2x1ZGUv cHVibGljL2lvL25ldGlmLmgKPiBAQCAtMTUxLDYgKzE1MSwyNzAgQEAKPiDCoCAqLwo+IMKgCj4g wqAvKgo+ICsgKiBDb250cm9sIHJpbmcKPiArICogPT09PT09PT09PT09Cj4gKyAqCj4gKyAqIFNv bWUgZmVhdHVyZXMsIHN1Y2ggYXMgdG9lcGxpdHogaGFzaGluZyAoZGV0YWlsZWQgYmVsb3cpLCBy ZXF1aXJlIGEKPiArICogc2lnbmlmaWNhbnQgYW1vdW50IG9mIG91dC1vZi1iYW5kIGRhdGEgdG8g YmUgcGFzc2VkIGZyb20gZnJvbnRlbmQgdG8KPiArICogYmFja2VuZC4gVXNlIG9mIHhlbnN0b3Jl IGlzIG5vdCBzdWl0YWJsZSBmb3IgbGFyZ2UgcXVhbnRpdGllcyBvZiBkYXRhCj4gKyAqIGJlY2F1 c2Ugb2YgcXVvdGEgbGltaXRhdGlvbnMgYW5kIHNvIGEgZGVkaWNhdGVkICdjb250cm9sIHJpbmcn IGlzIHVzZWQuCj4gKyAqIFRoZSBhYmlsaXR5IG9mIHRoZSBiYWNrZW5kIHRvIHVzZSBhIGNvbnRy b2wgcmluZyBpcyBhZHZlcnRpc2VkIGJ5Cj4gKyAqIHNldHRpbmc6Cj4gKyAqCj4gKyAqIC9sb2Nh bC9kb21haW4vWC9iYWNrZW5kLy8vZmVhdHVyZS1jb250cm9sLXJpbmcgPSAiMSIKPiArICoKPiAr ICogVGhlIGZyb250ZW5kIHByb3ZpZGVzIGEgY29udHJvbCByaW5nIHRvIHRoZSBiYWNrZW5kIGJ5 IHNldHRpbmc6Cj4gKyAqCj4gKyAqIC9sb2NhbC9kb21haW4vL2RldmljZS92aWYvL2N0cmwtcmlu Zy1yZWYgPSAKPiArICogL2xvY2FsL2RvbWFpbi8vZGV2aWNlL3ZpZi8vZXZlbnQtY2hhbm5lbC1j dHJsID0gCj4gKyAqCj4gKyAqIHdoZXJlICBpcyB0aGUgZ3JhbnQgcmVmZXJlbmNlIG9mIHRoZSBz aGFyZWQgcGFnZSB1c2VkIHRvCj4gKyAqIGltcGxlbWVudCB0aGUgY29udHJvbCByaW5nIGFuZCAg aXMgYW4gZXZlbnQgY2hhbm5lbCB0byBiZSB1c2VkCj4gKyAqIGFzIGEgbWFpbGJveCBpbnRlcnJ1 cHQsIGJlZm9yZSB0aGUgZnJvbnRlbmQgbW92ZXMgaW50byB0aGUgY29ubmVjdGVkCj4gKyAqIHN0 YXRlLgoKSSByZWFkIHRoaXMgYXMgc2F5aW5nIHRoYXQgdGhlIG1haWxib3ggaW50ZXJydXB0IGNh biBiZSB1c2VkIHVudGlsIHRoZQpmcm9udGVuZCBtb3ZlcyBpbnRvIHRoZSBjb25uZWN0ZWQgc3Rh dGUsIHdoaWNoIEkgcmVhbGlzZSBpc24ndCB3aGF0IHlvdQptZWFudCBidXQgaGF2aW5nIHNvIG11 Y2ggc3R1ZmYgYmV0d2VlbiAiYnkgc2V0dGluZyIgYW5kICJiZWZvcmUiIG1ha2VzIGl0CmVhc3kg dG8gcmVhZCB3cm9uZ2x5LgoKSG93IGFib3V0ICIuLi4gYXMgYSBtYWlsYm94IGludGVycnVwdC4g VGhlc2Uga2V5cyBtdXN0IGJlIHdyaXR0ZW4gYmVmb3JlCm1vdmluZyBpbnRvIHRoZSBjb25uZWN0 ZWQgc3RhdGUuIiA/Cgo+ICsgKiBUaGUgY29udHJvbCByaW5nIHVzZXMgYSBmaXhlZCByZXF1ZXN0 L3Jlc3BvbnNlIG1lc3NhZ2Ugc2l6ZSBhbmQgaXMKPiArICogYmFsYW5jZWQgKGkuZS4gb25lIHJl cXVlc3QgdG8gb25lIHJlc3BvbnNlKSwgc28gb3BlcmF0aW9uYWxseSBpdCBpcyBtdWNoCj4gKyAq IHRoZSBzYW1lIGFzIGEgdHJhbXNtaXQgb3IgcmVjZWl2ZSByaW5nLgoKInRyYW5zbWl0Ii4KCklz IGl0IGludGVuZGVkIHRvIHN1cHBvcnQgb3V0IG9mIG9yZGVyIHJlc3BvbnNlcz8KCj4gKyAqLwo+ ICsKPiArLyoKPiArICogVG9lcGxpdHogaGFzaCB0eXBlcwo+ICsgKiA9PT09PT09PT09PT09PT09 PT09Cj4gKyAqCj4gKyAqIEZvciB0aGUgcHVycG9zZXMgb2YgdGhlIGRlZmluaXRpb25zIGJlbG93 LCAnUGFja2V0W10nIGlzIGFuIGFycmF5IG9mCj4gKyAqIG9jdGV0cyBjb250YWluaW5nIGFuIElQ IHBhY2tldCB3aXRob3V0IG9wdGlvbnMsICdBcnJheVtYLi5ZXScgbWVhbnMgYQo+ICsgKiBzdWIt YXJyYXkgb2YgJ0FycmF5JyBjb250YWluaW5nIGJ5dGVzIFggdGhydSBZIGluY2x1c2l2ZSwgYW5k ICcrJyBpcwo+ICsgKiB1c2VkIHRvIGluZGljYXRlIGNvbmNhdGVuYXRpb24gb2YgYXJyYXlzLgo+ ICsgKi8KPiArCj4gKy8qCj4gKyAqIEEgaGFzaCBjYWxjdWxhdGVkIG92ZXIgYW4gSVAgdmVyc2lv biA0IGhlYWRlciBhcyBmb2xsb3dzOgo+ICsgKgo+ICsgKiBCdWZmZXJbMC4uOF0gPSBQYWNrZXRb MTIuLjE1XSArIFBhY2tldFsxNi4uMTldCgpJcyB0aGVyZSBhIHJlYXNvbiB0byB3cml0ZSBpdCBs aWtlIHRoaXMgcmF0aGVyIHRoYW46CisgKiBCdWZmZXJbMC4uOF0gPSBQYWNrZXRbMTIuLjE5XQo/ CgpNYXliZSBzb21ldGhpbmcgd2hpY2ggaXMgb2J2aW91cyBpZiB5b3Uga25vdyBhYm91dCBUb2Vw bGl0eiBpbiBtb3JlIHRoYW4KanVzdCBhIHBhc3NpbmcgZmFzaGlvbj8KCgo+ICsvKgo+ICsgKiBD b250cm9sIHJlcXVlc3RzIChuZXRpZl9jdHJsX3JlcXVlc3RfdCkKPiArICogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKyAqCj4gKyAqIEFsbCByZXF1ZXN0cyBoYXZl IHRoZSBmb2xsb3dpbmcgZm9ybWF0Ogo+ICsgKgo+ICsgKsKgwqDCoMKgMMKgwqDCoMKgwqAxwqDC oMKgwqDCoDLCoMKgwqDCoMKgM8KgwqDCoMKgwqA0wqDCoMKgwqDCoDXCoMKgwqDCoMKgNsKgwqDC oMKgwqA3wqDCoG9jdGV0Cj4gKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t LSstLS0tLSstLS0tLSsKPiArICogfMKgwqDCoMKgaWTCoMKgwqDCoMKgfMKgwqDCoHR5cGXCoMKg wqDCoHzCoMKgwqDCoMKgwqDCoMKgwqBkYXRhWzBdwqDCoMKgwqDCoMKgwqB8Cj4gKyAqICstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKPiArICogfMKgwqDC oMKgwqDCoMKgwqDCoGRhdGFbMV3CoMKgwqDCoMKgwqDCoHwKPiArICogKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKwoKVGhlc2UgYXJlIHBhY2tlZCBpbiB0aGUgcmluZywgaS5lLiB0aGVyZSBhcmUg bm8gaW1wbGljaXQgcGFkZGluZyBieXRlcywKcmlnaHQ/CgpJIGtub3cgdGhlIFRvZXBsaXR6IHN0 dWZmIGRvZXNuJ3QgbmVlZCBpdCwgYnV0IHdlIHNob3VsZCBjb25zaWRlciBkZXNpZ25pbmcKaW4g YSBzY2hlbWUgdG8gaGFuZGxlIGNvbnRyb2wgY29tbWFuZHMgd2hpY2ggbmVlZCA+OCBvY3RldHMg b2YgZGF0YSwgb3IKZWxzZSB3ZSByaXNrIGVuZGluZyB1cCB3aXRoIHNvbWV0aGluZyBhcyBjb25m dXNpbmcgYXMgdGhlIGRhdGEgcGF0aC4uLgoKPiArICoKPiArICogaWQ6IHRoZSByZXF1ZXN0IGlk ZW50aWZpZXIsIGVjaG9lZCBpbiByZXNwb25zZS4KPiArICogdHlwZTogdGhlIHR5cGUgb2YgcmVx dWVzdCAoc2VlIGJlbG93KQo+ICsgKiBkYXRhW106IGFueSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0 aGUgcmVxdWVzdCAoZGV0ZXJtaW5lZCBieSB0eXBlKQo+ICsgKi8KPiArCj4gK3N0cnVjdCBuZXRp Zl9jdHJsX3JlcXVlc3Qgewo+ICvCoMKgwqDCoHVpbnQxNl90IGlkOwo+ICvCoMKgwqDCoHVpbnQx Nl90IHR5cGU7Cj4gKwo+ICsjZGVmaW5lIE5FVElGX0NUUkxfVFlQRV9JTlZBTElEwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDAKPiArI2RlZmluZSBORVRJRl9DVFJMX1RZUEVfR0VUX1RPRVBM SVRaX0ZMQUdTwqDCoMKgMQo+ICsjZGVmaW5lIE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJVFpf RkxBR1PCoMKgwqAyCj4gKyNkZWZpbmUgTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQTElUWl9LRVnC oMKgwqDCoMKgMwo+ICsjZGVmaW5lIE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJVFpfTUFQUElO RyA0Cj4gKwo+ICvCoMKgwqDCoHVpbnQzMl90IGRhdGFbMl07Cj4gK307Cj4gK3R5cGVkZWYgc3Ry dWN0IG5ldGlmX2N0cmxfcmVxdWVzdCBuZXRpZl9jdHJsX3JlcXVlc3RfdDsKPiArCj4gKy8qCj4g KyAqIHR5cGUgPSBORVRJRl9DVFJMX1RZUEVfR0VUX1RPRVBMSVRaX0ZMQUdTOgo+ICsgKgo+ICsg KiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHF1ZXJ5IHRoZSB0eXBlcyBvZiB0b2Vw bGl0ego+ICsgKiBoYXNoIHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4gTm8gZGF0YSBpcyByZXF1 aXJlZCBhbmQgdG8gdGhlCgoiYW5kIHRvIHRoZSIgaGFzIGFuIGV4dHJhICJ0byIgaW4gaXQgSSB0 aGluaz8KCgo+ICsgKiBkYXRhW10gZmllbGQgaXMgc2V0IHRvIDAuCgoiZmllbGRzIGFyZSIgPwoK PiArICoKPiArICogdHlwZSA9IE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJVFpfRkxBR1M6Cj4g KyAqCj4gKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQgdG8gc2V0IHRoZSB0eXBlcyBv ZiB0b2VwbGl0eiBoYXNoIHRoYXQKPiArICogdGhlIGJhY2tlbmQgc2hvdWxkIGNhbGN1bGF0ZS4g Tm90ZSB0aGF0IHRoZSAnbWF4aW1hbCcgdHlwZSBvZiBoYXNoCj4gKyAqIHNob3VsZCBhbHdheXMg YmUgY2hvc2VuLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZyb250ZW5kIHNldHMgYm90aCBJUFY0Cj4g KyAqIGFuZCBJUFY0X1RDUCBoYXNoIHR5cGVzIHRoZW4gdGhlIGxhdHRlciBoYXNoIHR5cGUgc2hv dWxkIGJlIGNhbGN1bGF0ZWQKPiArICogZm9yIGFueSBUQ1AgcGFja2V0IGFuZCB0aGUgZm9ybWVy IG9ubHkgY2FsY3VsYXRlZCBmb3Igbm9uLVRDUCBwYWNrZXRzLgo+ICsgKiBUaGUgZGF0YVswXSBm aWVsZCBpcyBhIGJpdHdpc2UgT1Igb2YgTkVUSUZfQ1RSTF9UT0VQTElUWl9GTEFHXyogdmFsdWVz Cj4gKyAqIGRlZmluZWQgYWJvdmUuIFRoZSBkYXRhWzFdIGZpZWxkIGlzIHNldCB0byAwLgo+ICsg Kgo+ICsgKiBOT1RFOiBTZXR0aW5nIGRhdGFbMF0gdG8gMCBkaXNhYmxlcyB0b2VwbGl0eiBoYXNo aW5nIGFuZCB0aGUgYmFja2VuZAo+ICsgKsKgwqDCoMKgwqDCoMKgaXMgZnJlZSB0byBjaG9vc2Ug aG93IGl0IHN0ZWVycyBwYWNrZXRzIHRvIHF1ZXVlcyAod2hpY2ggaXMgdGhlCj4gKyAqwqDCoMKg wqDCoMKgwqBkZWZhdWx0IHN0YXRlKS4KPiArICoKPiArICogdHlwZSA9IE5FVElGX0NUUkxfVFlQ RV9TRVRfVE9FUExJVFpfS0VZOgoKQ2FuIHRoaXMgYmUgc2VudCBiZWZvcmUgRkxBR1M/CgpJcyBp dCBwZXJtaXNzaWJsZSB0byBzZW5kIHRoaXMgZm9yIGEgaGFzaCBzY2hlbWUgbm90IGluY2x1ZGVk IGluIGZsYWdzPwoKPiArICoKPiArICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9udGVuZCB0byBz ZXQgdGhlIGtleSBvZiB0b2VwbGl0eiBoYXNoIHRoYXQKPiArICogdGhlIGJhY2tlbmQgc2hvdWxk IGNhbGN1bGF0ZS4gVGhlIHRvZXBsaXR6IGFsZ29yaXRobSBpcyBpbGx1c3RyYXRlZAo+ICsgKiBi eSB0aGUgZm9sbG93aW5nIHBzZXVkby1jb2RlOgo+ICsgKgo+ICsgKiAoQnVmZmVyW10gYW5kIEtl eVtdIGFyZSB0cmVhdGVkIGFzIHNoaWZ0LXJlZ2lzdGVycyB3aGVyZSB0aGUgTVNCIG9mCj4gKyAq IEJ1ZmZlci9LZXlbMF0gaXMgY29uc2lkZXJlZCAnbGVmdC1tb3N0JyBhbmQgdGhlIExTQiBvZiBC dWZmZXIvS2V5W04tCj4gMV0KPiArICogaXMgdGhlICdyaWdodC1tb3N0JykuCj4gKyAqCj4gKyAq IFZhbHVlID0gMAo+ICsgKiBGb3IgbnVtYmVyIG9mIGJpdHMgaW4gQnVmZmVyW10KPiArICrCoMKg wqDCoElmIChsZWZ0LW1vc3QgYml0IG9mIEJ1ZmZlcltdIGlzIDEpCj4gKyAqwqDCoMKgwqDCoMKg wqDCoFZhbHVlIF49IGxlZnQtbW9zdCAzMiBiaXRzIG9mIEtleVtdCj4gKyAqwqDCoMKgwqBLZXlb XSA8PCAxCj4gKyAqwqDCoMKgwqBCdWZmZXJbXSA8PCAxCj4gKyAqCj4gKyAqIFRoZSBkYXRhWzBd IGZpZWxkIGlzIHNldCB0byB0aGUgc2l6ZSBvZiBrZXkgaW4gb2N0ZXRzLiBUaGUgZGF0YVsxXQo+ ICsgKiBmaWVsZCBpcyBzZXQgdG8gYSBncmFudCByZWZlcmVuY2Ugb2YgYSBwYWdlIGNvbnRhaW5p bmcgdGhlIGtleS4KCkkgc3VwcG9zZSBpdCBpcyBpbXBsaWNpdCB0aGF0IHRoZSBrZXkgc3RhcnRz IGF0IG9mZnNldCAwIGluIHRoZSBwYWdlPwoKPiAgVGhlCj4gKyAqIHJlZmVyZW5jZSBtdXN0IHJl bWFpbiB2YWxpZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZwo+ICsgKiBuZXRpZl9jdHJsX3Jlc3Bv bnNlX3QgaGFzIGJlZW4gcHJvY2Vzc2VkLgoKTWF5IHRoZSByZWYgYmUgci9vPyBJZiBzbywgc2hv dWxkIHRoYXQgYmUgZW5jb3VyYWdlZD8KCj4gKyAqCj4gKyAqIHR5cGUgPSBORVRJRl9DVFJMX1RZ UEVfU0VUX1RPRVBMSVRaX01BUFBJTkc6Cj4gKyAqCj4gKyAqIFRoaXMgaXMgc2VudCBieSB0aGUg ZnJvbnRlbmQgdG8gc2V0IHRoZSBtYXBwaW5nIG9mIHRvZXBsaXR6IGhhc2ggdG8KPiArICogcXVl dWUgbnVtYmVyIHRvIGJlIGFwcGxpZWQgYnkgdGhlIGJhY2tlbmQuCj4gKyAqCj4gKyAqIFRoZSBk YXRhWzBdIGZpZWxkIGlzIHNldCB0byB0aGUgb3JkZXIgb2YgdGhlIG1hcHBpbmcuIFRoZSBkYXRh WzFdIGZpZWxkCj4gKyAqIGlzIHNldCB0byBhIGdyYW50IHJlZmVyZW5jZSBvZiBhIHBhZ2UgY29u dGFpbmluZyB0aGUgbWFwcGluZy4gVGhlCj4gKyAqIHJlZmVyZW5jZSBtdXN0IHJlbWFpbiB2YWxp ZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZwo+ICsgKiBuZXRpZl9jdHJsX3Jlc3BvbnNlX3QgaGFz IGJlZW4gcHJvY2Vzc2VkLgo+ICsgKgo+ICsgKiBUaGUgZm9ybWF0IG9mIHRoZSBtYXBwaW5nIGlz Ogo+ICsgKgo+ICsgKsKgwqDCoMKgMMKgwqDCoMKgwqAxwqDCoMKgwqDCoDLCoMKgwqDCoMKgM8Kg wqDCoMKgwqA0wqDCoMKgwqDCoDXCoMKgwqDCoMKgNsKgwqDCoMKgwqA3wqDCoG9jdGV0Cj4gKyAq ICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKPiArICog fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBxdWV1ZVswXcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfAo+ICsgKiArLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCj4gKyAqIHzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcXVldWVbMV3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHwKPiArICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKwo+ICsgKiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHF1ZXVlWzJdwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8Cj4gKyAqICst LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKPiArICogfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBxdWV1ZVszXcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLgo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLgo+ICsgKiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHF1ZXVlW04tMV3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfAo+ICsgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rCj4gKyAqCj4gKyAqIHdoZXJlIGVhY2ggcXVldWUgdmFsdWUgaXMgbGVzcyB0aGFuICJt dWx0aS1xdWV1ZS1udW0tcXVldWVzIiAoc2VlIGFib3ZlKQo+ICsgKiBhbmQgTiBpcyAxIDw8IGRh dGFbMF0uCj4gKyAqCj4gKyAqIE5PVEU6IEJlZm9yZSBhIHNwZWNpZmljIG1hcHBpbmcgaXMgc2V0 IHVzaW5nIHRoaXMgcmVxdWVzdCwgdGhlIGJhY2tlbmQKPiArICrCoMKgwqDCoMKgwqDCoHNob3Vs ZCBtYXAgYWxsIHRvZXBsaXR6IGhhc2ggdmFsdWVzIHRvIHF1ZXVlIDAgKHdoaWNoIGlzIHRoZSBv bmx5Cj4gKyAqwqDCoMKgwqDCoMKgwqBxdWV1ZSBndWFyYW50ZWVkIHRvIGV4aXN0IGluIGFsbCBj YXNlcykuCgppLmUuIGJldHdlZW4gcmVjZWl2aW5nIGEgTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQ TElUWl9GTEFHUyB3aXRoIGEgbm9uLXplcm8gCnNldCBvZiBmbGFncyBhbmTCoE5FVElGX0NUUkxf VFlQRV9TRVRfVE9FUExJVFpfTUFQUElORyBpdCBzaG91bGQgZG8gdGhpcz8KCklmIGl0IGhhcyBu b3Qgc2VlbiBhIE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJVFpfRkxBR1MsIG9yIGl0IGhhcyBz ZWVuIG9uZQp3aXRoIGZsYWdzID0gMCB0aGVuIGFzIGJlZm9yZSB0aGUgYi9lIGlzIGZyZWUgdG8g c3RlZXIgYXMgaXQgbGlrZXM/CgpJcyBpdCB2YWxpZCB0byBzZW5kIHRoaXMgbWFwcGluZyBjb21t YW5kIGZpcnN0IGJlZm9yZSB0aGUgZmxhZ3M/CgoKPiArICovCj4gKwo+ICsvKgo+ICsgKiBDb250 cm9sIHJlc3BvbnNlcyAobmV0aWZfY3RybF9yZXNwb25zZV90KQo+ICsgKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsgKgo+ICsgKiBBbGwgcmVzcG9uc2VzIGhh dmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6Cj4gKyAqCj4gKyAqwqDCoMKgwqAwwqDCoMKgwqDCoDHC oMKgwqDCoMKgMsKgwqDCoMKgwqAzwqDCoMKgwqDCoDTCoMKgwqDCoMKgNcKgwqDCoMKgwqA2wqDC oMKgwqDCoDfCoMKgb2N0ZXQKPiArICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKwo+ICsgKiB8wqDCoMKgwqBpZMKgwqDCoMKgwqB8wqDCoMKgcGFkwqDC oMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqBzdGF0dXPCoMKgwqDCoMKgwqDCoMKgfAo+ICsgKiAr LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCj4gKyAqIHzC oMKgwqDCoMKgwqDCoMKgwqBkYXRhwqDCoMKgwqDCoMKgwqDCoMKgwqB8Cj4gKyAqICstLS0tLSst LS0tLSstLS0tLSstLS0tLSsKPiArICoKPiArICogaWQ6IHRoZSBjb3JyZXNwb25kaW5nIHJlcXVl c3QgaWRlbnRpZmllcgo+ICsgKiBwYWQ6IHNldCB0byAwCj4gKyAqIHN0YXR1czogdGhlIHN0YXR1 cyBvZiByZXF1ZXN0IHByb2Nlc3NpbmcKPiArICogZGF0YTogYW55IGRhdGEgYXNzb2NpYXRlZCB3 aXRoIHRoZSByZXNwb25zZSAoZGV0ZXJtaW5lZCBieSB0eXBlIGFuZAo+ICsgKsKgwqDCoMKgwqDC oMKgc3RhdHVzKQoKdHlwZSBuZWVkcyB0byBiZSByZW1lbWJlcmVkIHZpYSB0aGUgaWQ/IFdoeSBu b3QgZWNobyBpdCBpbiB0aGUgcGFkIGZpZWxkCmZvciBjb252ZW5pZW5jZT8KCgo+ICsgKi8KPiAr Cj4gK3N0cnVjdCBuZXRpZl9jdHJsX3Jlc3BvbnNlIHsKPiArwqDCoMKgwqB1aW50MTZfdCBpZDsK PiArwqDCoMKgwqB1aW50MTZfdCBwYWQ7Cj4gK8KgwqDCoMKgdWludDMyX3Qgc3RhdHVzOwo+ICsK PiArI2RlZmluZSBORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTwqDCoMKgwqDCoMKgwqDCoMKgwqDC oDAKPiArI2RlZmluZSBORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEwqDCoMKgwqDCoDEK PiArI2RlZmluZSBORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAyCj4gKyNkZWZp bmUgTkVUSUZfQ1RSTF9TVEFUVVNfQlVGRkVSX09WRVJGTE9XwqDCoMKgMwoKSXMgdGhlIGludGVu dGlvbiB0aGF0IHRoZXNlIHdpbGwgYmUgdGhlIHVuaW9uIG9mIGFsbCBwb3NzaWJsZSBmYWlsdXJl Cm1vZGVzLCByYXRoZXIgdGhhbiBtYWtpbmcgcHJvdmlzaW9uIGZvciB0eXBlLXNwZWNpZmljIGZh aWx1cmVzPwoKVGhlc2UgYXJlIGFsbCBwcmV0dHkgZ2VuZXJpYyB0aG91Z2gsIGFuZCBJIHN1cHBv c2Ugd2UgY291bGQgYWx3YXlzIGZpZ3VyZQp0aGF0IG91dCB3aGVuIHNvbWUgY29tbWFuZCBoYXMg YSB2ZXJ5IG9ic2N1cmUgZmFpbHVyZSBjYXNlLgoKPiArCj4gK8KgwqDCoMKgdWludDMyX3QgZGF0 YTsKPiArfTsKPiArdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfY3RybF9yZXNwb25zZSBuZXRpZl9jdHJs X3Jlc3BvbnNlX3Q7Cj4gKwo+ICsvKgo+ICsgKiB0eXBlID0gCj4gKyAqCj4gKyAqIFRoZSBkZWZh dWx0IHJlc3BvbnNlIGZvciBhbnkgdW5yZWNvZ25pc2VkIHJlcXVlc3QgaGFzIHRoZSBzdGF0dXMg ZmllbGQKPiArICogc2V0IHRvIE5FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgYW5kIHRo ZSBkYXRhIGZpZWxkIHNldCB0byAwLgo+ICsgKgo+ICsgKiB0eXBlID0gTkVUSUZfQ1RSTF9NU0df R0VUX1RPRVBMSVRaX0ZMQUdTOgo+ICsgKgo+ICsgKiBTaW5jZSB0aGUgcmVxdWVzdCBjYXJyaWVz IG5vIGRhdGEgdGhlcmUgaXMgbm8gcmVhc29uIGZvciBwcm9jZXNzaW5nIHRvCj4gKyAqIGZhaWws IGhlbmNlIHRoZSBzdGF0dXMgZmllbGQgaXMgc2V0IHRvIE5FVElGX0NUUkxfU1RBVFVTX1NVQ0NF U1MgYW5kIHRoZQo+ICsgKiBkYXRhIGZpZWxkIGlzIGEgYml0d2lzZSBPUiBvZiBORVRJRl9DVFJM X1RPRVBMSVRaX0ZMQUdfKiB2YWx1ZXMgKGRlZmluZWQKPiArICogYWJvdmUpIGluZGljYXRpbmcg d2hpY2ggaGFzaCB0eXBlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kLgo+ICsgKiBJZiBu byBoYXNoaW5nIGlzIHN1cHBvcnRlZCB0aGVuIHRoZSBkYXRhIGZpZWxkIHNob3VsZCBiZSBzZXQg dG8gMC4KCkkgd29uZGVyIGlmIGl0IHdvdWxkIGJlIGNsZWFyZXIgdG8gZGVmaW5lIHRoZSBnZW5l cmljIHJlcXVlc3QgYW5kIHJlc3BvbnNlCnN0cnVjdHVyZXMgdXAgZnJvbnQgZm9sbG93ZWQgYnkg dGhlIHNwZWNpZmljIGNvbW1hbmRzIGFuZCB0aGVpcgpyZXF1ZXN0K3Jlc3BvbnNlIGZvcm1hdHMg YXQgdGhlIHNhbWUgdGltZSwgcmF0aGVyIHRoYW4gc3BsaXR0aW5nIHRoZQpzcGVjaWZpYyBjb21t YW5kIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgaW50byBkaWZmZXJlbnQgcGxhY2VzPwoKTGlrZToK CkNvbW1hbmQ6wqBORVRJRl9DVFJMX01TR19HRVRfVE9FUExJVFpfRkxBR1MKCkRlc2NyaXB0aW9u OiBCbGFoIGJsYWgKClJlcXVlc3QgZGF0YSBmb3JtYXQ6IFdvcmRzIHdvcmRzwqAKVmFsaWQgcmVz cG9uc2Ugc3RhdHVzIGNvZGVzOgrCoCAtIE9uZQrCoCAtIEFub3RoZXIKUmVzcG9uZHMgZGF0YSBm b3JtYXQ6IFdvcmRzCgooaS5lLiBtb3JlIGxpa2UgQVBJIHRoYW4gcHJvdG9jb2wgZG9jdW1lbnRh dGlvbiBpbiB0aGUgZm9ybSBvZiBpbmRlcGVuZGVudApsb29raW5nIHRoaW5ncyBnb2luZyBiYWNr IGFuZCBmb3J0aCkKCj4gKyAqCj4gKyAqIHR5cGUgPSBORVRJRl9DVFJMX01TR19TRVRfVE9FUExJ VFpfRkxBR1M6Cj4gKyAqCj4gKyAqIElmIHRoZSBkYXRhWzBdIGZpZWxkIGluIHRoZSByZXF1ZXN0 IGlzIGludmFsaWQgKGkuZS4gY29udGFpbnMgdW5zdXBwb3J0ZWQKPiArICogaGFzaCB0eXBlcykg dGhlbiB0aGUgc3RhdHVzIGZpZWxkIGlzIHNldCB0bwo+ICsgKiBORVRJRl9DVFJMX1NUQVRVU19J TlZBTElEX1BBUkFNRVRFUi4gT3RoZXJ3aXNlIHRoZSByZXF1c2V0IHNob3VsZMKgCgoicmVxdWVz dCIKCj4gc3VjY2VlZAo+ICsgKiBhbmQgaGVuY2UgdGhlIHN0YXR1cyBmaWVsZCBpcyBzZXQgdG8g TkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUy4KPiArICogVGhlIGRhdGEgZmllbGQgc2hvdWxkIGJl IHNldCB0byAwLgo+ICsgKgo+ICsgKiB0eXBlID0gTkVUSUZfQ1RSTF9NU0dfU0VUX1RPRVBMSVRa X0tFWToKPiArICoKPiArICogSWYgdGhlIGRhdGFbMF0gZmllbGQgaW4gdGhlIHJlcXVlc3QgaXMg YW4gaW52YWxpZCBrZXkgbGVuZ3RoICh0b28gYmlnKQoKQ2FuIGl0IG5vdCBiZSB0b28gc21hbGwg YXMgd2VsbD8gV2hhdCBpcyB0aGUgYmVoYXZpb3VyIGlmIGl0IGlzPwoKPiArICogdGhlbiB0aGUg c3RhdHVzIGZpZWxkIGlzIHNldCB0byBORVRJRl9DVFJMX1NUQVRVU19CVUZGRVJfT1ZFUkZMT1cs IElmIHRoZQo+ICsgKiBkYXRhWzFdIGZpZWxkIGlzIGFuIGludmFsaWQgZ3JhbnQgcmVmZXJlbmNl IHRoZW4gdGhlIHN0YXR1cyBmaWVsZCBpcyBzZXQKPiArICogdG8gTkVUSUZfQ1RSTF9TVEFUVVNf SU5WQUxJRF9QQVJBTUVURVIuIE90aGVyd2lzZSB0aGUgcmVxdWVzdCBzaG91bGQKPiArICogc3Vj Y2VlZCBhbmQgaGVuY2UgdGhlIHN0YXR1cyBmaWVsZCBpcyBzZXQgdG8gTkVUSUZfQ1RSTF9TVEFU VVNfU1VDQ0VTUy4KPiArICogVGhlIGRhdGEgZmllbGQgc2hvdWxkIGJlIHNldCB0byAwLgo+ICsg Kgo+ICsgKiB0eXBlID0gTkVUSUZfQ1RSTF9NU0dfU0VUX1RPRVBMSVRaX01BUFBJTkc6Cj4gKyAq Cj4gKyAqIElmIHRoZSBkYXRhWzBdIGZpZWxkIGluIHRoZSByZXF1ZXN0IGlzIGFuIGludmFsaWQg bWFwcGluZyBvcmRlciAodG9vIGJpZykKCm9yIHRvbyBzbWFsbD8KCj4gKyAqIHRoZW4gdGhlIHN0 YXR1cyBmaWVsZCBpcyBzZXQgdG8gTkVUSUZfQ1RSTF9TVEFUVVNfQlVGRkVSX09WRVJGTE9XLCBJ ZiB0aGUKPiArICogZGF0YVsxXSBmaWVsZCBpcyBhbiBpbnZhbGlkIGdyYW50IHJlZmVyZW5jZSB0 aGVuIHRoZSBzdGF0dXMgZmllbGQgaXMgc2V0Cj4gKyAqIHRvIE5FVElGX0NUUkxfU1RBVFVTX0lO VkFMSURfUEFSQU1FVEVSLiBPdGhlcndpc2UgdGhlIHJlcXVzZXQgc2hvdWxkCgoicmVxdWVzdCIK Cklhbi4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=