From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 219FFA0518; Mon, 3 Aug 2020 03:27:12 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 21A6F2BD8; Mon, 3 Aug 2020 03:27:11 +0200 (CEST) Received: from m13134.mail.163.com (m13134.mail.163.com [220.181.13.134]) by dpdk.org (Postfix) with ESMTP id 32F942AB for ; Mon, 3 Aug 2020 03:27:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=UAQXm 5zVAc8rVlBYVA1YuUcM+CcM793o0FrXOT2c7IU=; b=QkBYCHUERiEjAwuVuvexN 47FTC81XYpXUij0f7CR46fbHM3RNLUEiw9E2vgyxs8dUnw2nBKPku12qkE8K+MiC jMpWmbpQM7kfRpQFunSSzwrKfKLohuhUtIs4Wgwv4STGFe8MN+n0SVGU48OPhUdM 7MwRRo6ZUZ8xnquw8OREfc= Received: from yang_y_yi$163.com ( [111.207.123.56] ) by ajax-webmail-wmsvr134 (Coremail) ; Mon, 3 Aug 2020 09:26:40 +0800 (CST) X-Originating-IP: [111.207.123.56] Date: Mon, 3 Aug 2020 09:26:40 +0800 (CST) From: yang_y_yi To: "Olivier Matz" Cc: dev@dpdk.org, jiayu.hu@intel.com, thomas@monjalon.net, yangyi01@inspur.com X-Priority: 1 X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23) Copyright (c) 2002-2020 www.mailtech.cn 163com In-Reply-To: <20200802202907.GJ5869@platinum> References: <20200730120900.108232-1-yang_y_yi@163.com> <20200730120900.108232-3-yang_y_yi@163.com> <20200731151543.GH5869@platinum> <2a50e80c.44f.173ac4c6d20.Coremail.yang_y_yi@163.com> <20200802202907.GJ5869@platinum> X-CM-CTRLDATA: /ajTImZvb3Rlcl9odG09ODk5Nzo1Ng== MIME-Version: 1.0 Message-ID: <3cf82e61.145c.173b1ed87ce.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: hsGowADHz2PQZydfB+BgAA--.39718W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiFhV1i144MgSfPQABsO X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH V1 2/3] mbuf: change free_cb interface to adapt to GSO case X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" QXQgMjAyMC0wOC0wMyAwNDoyOTowNywgIk9saXZpZXIgTWF0eiIgPG9saXZpZXIubWF0ekA2d2lu ZC5jb20+IHdyb3RlOgo+SGksCj4KPk9uIFN1biwgQXVnIDAyLCAyMDIwIGF0IDA3OjEyOjM2QU0g KzA4MDAsIHlhbmdfeV95aSB3cm90ZToKPj4gCj4+IAo+PiBBdCAyMDIwLTA3LTMxIDIzOjE1OjQz LCAiT2xpdmllciBNYXR6IiA8b2xpdmllci5tYXR6QDZ3aW5kLmNvbT4gd3JvdGU6Cj4+ID5IaSwK Pj4gPgo+PiA+T24gVGh1LCBKdWwgMzAsIDIwMjAgYXQgMDg6MDg6NTlQTSArMDgwMCwgeWFuZ195 X3lpQDE2My5jb20gd3JvdGU6Cj4+ID4+IEZyb206IFlpIFlhbmcgPHlhbmd5aTAxQGluc3B1ci5j b20+Cj4+ID4+IAo+PiA+PiBJbiBHU08gY2FzZSwgc2VnbWVudGVkIG1idWZzIGFyZSBhdHRhY2hl ZCB0byBvcmlnaW5hbAo+PiA+PiBtYnVmIHdoaWNoIGNhbid0IGJlIGZyZWVkIHdoZW4gaXQgaXMg ZXh0ZXJuYWwuIFRoZSBpc3N1ZQo+PiA+PiBpcyBmcmVlX2NiIGRvZXNuJ3Qga25vdyBvcmlnaW5h bCBtYnVmIGFuZCBkb2Vzbid0IGZyZWUKPj4gPj4gaXQgd2hlbiByZWZjbnQgb2Ygc2hpbmZvIGlz IDAuCj4+ID4+IAo+PiA+PiBPcmlnaW5hbCBtYnVmIGNhbiBiZSBmcmVlZCBieSBydGVfcGt0bWJ1 Zl9mcmVlIHNlZ21lbnRlZAo+PiA+PiBtYnVmcyBvciBieSBydGVfcGt0bWJ1Zl9mcmVlIG9yaWdp bmFsIG1idWYuIFR3byBraW5kIG9mCj4+ID4+IGNhc2VzIHNob3VsZCBoYXZlIGRpZmZlcmVudCBi ZWhhdmlvcnMuIGZyZWVfY2Igd29uJ3QKPj4gPj4gZXhwbGljaXRseSBjYWxsIHJ0ZV9wa3RtYnVm X2ZyZWUgdG8gZnJlZSBvcmlnaW5hbCBtYnVmCj4+ID4+IGlmIGl0IGlzIGZyZWVkIGJ5IHJ0ZV9w a3RtYnVmX2ZyZWUgb3JpZ2luYWwgbWJ1ZiwgYnV0IGl0Cj4+ID4+IGhhcyB0byBjYWxsIHJ0ZV9w a3RtYnVmX2ZyZWUgdG8gZnJlZSBvcmlnaW5hbCBtYnVmIGlmIGl0Cj4+ID4+IGlzIGZyZWVkIGJ5 IHJ0ZV9wa3RtYnVmX2ZyZWUgc2VnbWVudGVkIG1idWZzLgo+PiA+PiAKPj4gPj4gSW4gb3JkZXIg dG8gZml4IHRoaXMgaXNzdWUsIGZyZWVfY2IgaW50ZXJmYWNlIGhhcyB0byBiZWVuCj4+ID4+IGNo YW5nZWQsIF9fcnRlX3BrdG1idWZfZnJlZV9leHRidWYgbXVzdCBkZWxpdmVyIGNhbGxlZAo+PiA+ PiBtYnVmIHBvaW50ZXIgdG8gZnJlZV9jYiwgYXJndW1lbnQgb3BhcXVlIGNhbiBiZSBkZWZpbmVk Cj4+ID4+IGFzIGEgY3VzdG9tIHN0cnVjdCBieSB1c2VyLCBpdCBjYW4gaW5jbHVkZXMgb3JpZ2lu YWwgbWJ1Zgo+PiA+PiBwb2ludGVyLCB1c2VyLWRlZmluZWQgZnJlZV9jYiBjYW4gY29tcGFyZSBj YWxsZXIgbWJ1ZiB3aXRoCj4+ID4+IG1idWYgaW4gb3BhcXVlIHN0cnVjdCwgZnJlZV9jYiBzaG91 bGQgZnJlZSBvcmlnaW5hbCBtYnVmCj4+ID4+IGlmIHRoZXkgYXJlIG5vdCBzYW1lLCB0aGlzIGNv cnJlc3BvbmRzIHRvIHJ0ZV9wa3RtYnVmX2ZyZWUKPj4gPj4gc2VnbWVudGVkIG1idWZzIGNhc2Us IG90aGVyd2lzZSwgZnJlZV9jYiB3b24ndCBmcmVlIG9yaWdpbmFsCj4+ID4+IG1idWYgYmVjYXVz ZSB0aGUgY2FsbGVyIGV4cGxpY2l0bHkgY2FsbGVkIHJ0ZV9wa3RtYnVmX2ZyZWUKPj4gPj4gdG8g ZnJlZSBpdC4KPj4gPj4gCj4+ID4+IEhlcmUgaXMgcHNlZHVvIGNvZGUgdG8gc2hvdyB0d28ga2lu ZCBvZiBjYXNlcy4KPj4gPj4gCj4+ID4+IGNhc2UgMS4gcnRlX3BrdG1idWZfZnJlZSBzZWdtZW50 ZWQgbWJ1ZnMKPj4gPj4gCj4+ID4+IG5iX3R4ID0gcnRlX2dzb19zZWdtZW50KG9yaWdpbmFsX21i dWYsIC8qIG9yaWdpbmFsIG1idWYgKi8KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICZnc29f Y3R4LAo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgLyogc2VnbWVudGVkIG1idWYgKi8KPj4g Pj4gICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX21idWYgKiopJmdzb19tYnVmcywK Pj4gPj4gICAgICAgICAgICAgICAgICAgICAgIE1BWF9HU09fTUJVRlMpOwo+PiA+Cj4+ID5JJ20g c29ycnkgYnV0IGl0IGlzIG5vdCB2ZXJ5IGNsZWFyIHRvIG1lIHdoYXQgb3BlcmF0aW9ucyBhcmUg ZG9uZSBieQo+PiA+cnRlX2dzb19zZWdtZW50KCkuCj4+ID4KPj4gPkluIHRoZSBjdXJyZW50IGNv ZGUsIEkgb25seSBzZWUgY2FsbHMgdG8gcnRlX3BrdG1idWZfYXR0YWNoKCksCj4+ID53aGljaCBk byBub3QgZGVhbCB3aXRoIGV4dGVybmFsIGJ1ZmZlcnMuIEFtIEkgbWlzc2luZyBzb21ldGhpbmc/ Cj4+ID4KPj4gPkFyZSB5b3UgYWJsZSB0byBzaG93IHRoZSBpc3N1ZSBvbmx5IHdpdGggbWJ1ZiBm dW5jdGlvbnM/IEl0IHdvdWxkCj4+ID5iZSBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgd2hhdCBkb2Vz IG5vdCB3b3JrLgo+PiA+Cj4+ID4KPj4gPlRoYW5rcywKPj4gPk9saXZpZXIKPj4gPgo+PiBPbGl2 ZXIsIHRoYW5rIHlvdSBmb3IgY29tbWVudCwgbGV0IG1lIHNob3cgeW91IHdoeSBpdCBkb2Vzbid0 IHdvcmsgZm9yIG15IHVzZSBjYXNlLiAgSW4gT1ZTIERQREssIFZNIHVzZXMgdmhvc3R1c2VyY2xp ZW50IHRvIHNlbmQgbGFyZ2UgcGFja2V0cyB3aG9zZSBzaXplIGlzIGFib3V0IDY0SyBiZWNhdXNl IHdlIGVuYWJsZWQgVFNPICYgVUZPLCB0aGVzZSBsYXJnZSBwYWNrZXRzIHVzZSBydGVfbWJ1ZnMg YWxsb2NhdGVkIGJ5IERQREsgdmlydGlvX25ldCBmdW5jdGlvbiAKPj4gdmlydGlvX2Rldl9wa3Rt YnVmX2FsbG9jKCkgKGluIGZpbGUgbGliL2xpYnJ0ZV92aG9zdC92aXJ0aW9fbmV0LmMuIFBsZWFz ZSByZWZlciB0byBbUEFUQ0ggVjEgMy8zXSwgSSBjaGFuZ2VkIGZyZWVfY2IgYXMgYmVsb3csIHRo ZXNlIHBhY2tldHMgdXNlIHRoZSBzYW1lIGFsbG9jYXRlIGZ1bmN0aW9uIGFuZCB0aGUgc2FtZSBm cmVlX2NiIG5vIG1hdHRlciB0aGV5IGFyZSBUQ1AgcGFja2V0IG9yIFVEUCBwYWNrZXRzLCBpbiBj YXNlIG9mIFZYTEFOIFRTTywgbW9zdCBOSUNzIGNhbid0IHN1cHBvcnQgaW5uZXIgVURQIGZyYWdt ZW50IG9mZmxvYWQsIHNvIE9WUyBEUERLIGhhcyB0byBkbyBpdCBieSBzb2Z0d2FyZSwgZm9yIFVE UCBjYXNlLCB0aGUgb3JpZ2luYWwgcnRlX21idWYgb25seSBjYW4gYmUgZnJlZWQgYnkgc2VnbWVu dGVkIHJ0ZV9tYnVmcyB3aGljaCBhcmUgb3V0cHV0IHBhY2tldHMgb2YgcnRlX2dzb19zZWdtZW50 LCBpLmUuIHRoZSBvcmlnaW5hbCBydGVfbWJ1ZiBvbmx5IGNhbiBmcmVlZCBieSBmcmVlX2NiLCB5 b3UgY2FuIHNlZSwgaXQgZXhwbGljaXRseSBjYWxsZWQgcnRlX3BrdG1idWZfZnJlZShhcmctPm1i dWYpLCB0aGUgY29uZGl0aW9uIHN0YXRlbWVudCAiaWYgKGNhbGxlcl9tICE9IGFyZy0+bWJ1Ziki IGlzIHRydWUgZm9yIHRoaXMgY2FzZSwgdGhpcyBoYXMgbm8gcHJvYmxlbSwgYnV0IGZvciBUQ1Ag Y2FzZSwgdGhlIG9yaWdpbmFsIG1idWYgaXMgZGVsaXZlcmVkIHRvIHJ0ZV9ldGhfdHhfYnVyc3Qo KSBidXQgbm90IHNlZ21lbnRlZCBydGVfbWJ1ZnMgb3V0cHV0IGJ5IHJ0ZV9nc29fc2VnbWVudCwg UE1EIGRyaXZlciB3aWxsIGNhbGwgcnRlX3BrdG1idWZfZnJlZShvcmlnaW5hbF9ydGVfbWJ1Zikg YnV0IG5vdCBydGVfcGt0bWJ1Zl9mcmVlKHNlZ21lbnRlZF9ydGVfbWJ1ZnMpLCB0aGUgc2FtZSBm cmVlX2NiIHdpbGwgYmUgY2FsbGVkLCB0aGF0IG1lYW5zIG9yaWdpbmFsX3J0ZV9tYnVmIHdpbGwg YmUgZnJlZWQgdHdpY2UsIHlvdSBrbm93IHdoYXQgd2lsbCBoYXBwZW4sIHRoaXMgaXMganVzdCB0 aGUgaXNzdWUgSSdtIGZpeGluZy4gSSBicmluZyBpbiBjYWxsZXJfbSBhcmd1bWVudCwgaXQgY2Fu IGhlbHAgd29yayBhcm91bmQgdGhpcyBiZWNhdXNlIGNhbGxlcl9tIGlzIGFyZy0+bWJ1ZiBhbmQg dGhlIGNvbmRpdGlvbiBzdGF0ZW1lbnQgImlmIChjYWxsZXJfbSAhPSBhcmctPm1idWYpIiBpcyBm YWxzZSwgeW91IGNhbid0IGZpeCBpdCB3aXRob3V0IHRoZSBjaGFuZ2UgdGhpcyBwYXRjaCBzZXJp ZXMgZGlkLgo+Cj5JJ20gc2lsbCBub3Qgc3VyZSB0byBnZXQgeW91ciBpc3N1ZS4gUGxlYXNlLCBp ZiB5b3UgaGF2ZSBhIHNpbXBsZSB0ZXN0Cj5jYXNlIHVzaW5nIG9ubHkgbWJ1ZnMgZnVuY3Rpb25z ICh3aXRob3V0IHZpcnRpbywgZ3NvLCAuLi4pLCBpdCB3b3VsZCBiZQo+dmVyeSBoZWxwZnVsIGJl Y2F1c2Ugd2Ugd2lsbCBiZSBzdXJlIHRoYXQgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdGhlIHNhbWUK PnRoaW5nLiBJbiBjYXNlIHRoZXJlIGlzIGFuIGlzc3VlLCBpdCBjYW4gZWFzaWx5IGJlY29tZSBh IHVuaXQgdGVzdC4KCk9saXZlciwgSSB0aGluayB5b3UgZG9uJ3QgZ2V0IHRoZSBwb2ludCwgZnJl ZSBvcGVyYXRpb24gY2FuJ3QgYmUgY29udHJvbGxlZCBieSB0aGUgYXBwbGljYXRpb24gaXRzZWxm LCAKaXQgaXMgZG9uZSBieSBQTUQgZHJpdmVyIGFuZCB0cmlnZ2VyZWQgYnkgcnRlX2V0aF90eF9i dXJzdCwgSSBoYXZlIHNob3duIHBzZXVkbyBjb2RlLApydGVfZ3NvX3NlZ21lbnQganVzdCBzZWdt ZW50cyBhIGxhcmdlIG1idWYgdG8gbXVsdGlwbGUgbWJ1ZnMsIGl0IHdvbid0IHNlbmQgdGhlbSwg dGhlIGFwcGxpY2F0aW9uCndpbGwgY2FsbCBydGVfZXRoX3R4X2J1cnN0IHRvIHNlbmQgdGhlbSBm aW5hbGx5LgoKPgo+VGhhdCBzYWlkLCBJIGxvb2tlZCBhdCB2aG9zdCBtYnVmIGFsbG9jYXRpb24g YW5kIGdzbyBzZWdtZW50YXRpb24sIGFuZAo+SSBmb3VuZCBzb21lIHN0cmFuZ2UgdGhpbmdzOgo+ Cj4xLyBJbiB2aXJ0aW9fZGV2X2V4dGJ1Zl9hbGxvYygpLCBhbmQgSSB0aGVyZSBhcmUgMiBwYXRo cyB0byBjcmVhdGUgdGhlCj4gICBleHQgbWJ1Zi4KPgo+ICAgYS8gVGhlIGZpcnN0IG9uZSBzdG9y ZXMgdGhlIHNoaW5mbyBzdHJ1Y3QgaW4gdGhlIG1idWYsIGJhc2ljYWxseQo+ICAgICAgbGlrZSB0 aGlzOgo+Cj4JcGt0ID0gcnRlX3BrdG1idWZfYWxsb2MobXApOwo+CXNoaW5mbyA9IHJ0ZV9wa3Rt YnVmX210b2QocGt0LCBzdHJ1Y3QgcnRlX21idWZfZXh0X3NoYXJlZF9pbmZvICopOwo+CWJ1ZiA9 IHJ0ZV9tYWxsb2MoTlVMTCwgYnVmX2xlbiwgUlRFX0NBQ0hFX0xJTkVfU0laRSk7Cj4Jc2hpbmZv LT5mcmVlX2NiID0gdmlydGlvX2Rldl9leHRidWZfZnJlZTsKPglzaGluZm8tPmZjYl9vcGFxdWUg PSBidWY7Cj4JcnRlX21idWZfZXh0X3JlZmNudF9zZXQoc2hpbmZvLCAxKTsKPgo+ICAgICAgSSBk b24ndCB0aGluayBpdCBpcyBhIGdvb2QgaWRlYSwgYmVjYXVzZSB0aGVyZSBpcyBubyBndWFyYW50 ZWUgdGhhdAo+ICAgICAgdGhlIG1idWYgd29uJ3QgYmUgZnJlZWQgYmVmb3JlIHRoZSBidWZmZXIu IEZvciBpbnN0YW5jZSwgZG9pbmcKPiAgICAgIHRoaXMgd2lsbCBwcm9iYWJseSBmYWlsOgo+Cj4J cGt0MiA9IHJ0ZV9wa3RtYnVmX2FsbG9jKG1wKTsKPglydGVfcGt0bWJ1Zl9hdHRhY2gocGt0Miwg cGt0KTsKPglydGVfcGt0bWJ1Zl9mcmVlKHBrdCk7ICAvKiBwa3QgaXMgZnJlZWQsIGJ1dCBpdCBj b250YWlucyBzaGluZm8gISAqLwoKcGt0IGlzIGNyZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIEkg Y2FuIGNvbnRyb2wsIHNvIEkgY2FuIGNvbnRyb2wgaXQgd2hlcmUgaXQgd2lsbCBiZSBmcmVlZCwg cmlnaHQ/Cgo+Cj4gICAgICBUbyBkbyB0aGlzIHByb3Blcmx5LCB0aGUgbWJ1ZiByZWZjbnQgc2hv dWxkIGJlIGluY3JlYXNlZCwgYW5kCj4gICAgICB0aGUgbWJ1ZiBzaG91bGQgYmUgZnJlZWQgaW4g dGhlIGNhbGxiYWNrLiBCdXQgSSBkb24ndCB0aGluayBpdCdzCj4gICAgICB3b3J0aCBkb2luZyBp dCwgZ2l2ZW4gdGhlIHNlY29uZCBwYXRoIChiLykgbG9va3MgZ29vZCB0byBtZS4KPgo+ICAgYi8g VGhlIHNlY29uZCBwYXRoIHN0b3JlcyB0aGUgc2hpbmZvIHN0cnVjdCBhdCB0aGUgZW5kIG9mIHRo ZQo+ICAgICAgYWxsb2NhdGVkIGJ1ZmZlciwgbGlrZSB0aGlzOgo+Cj4JcGt0ID0gcnRlX3BrdG1i dWZfYWxsb2MobXApOwo+CWJ1Zl9sZW4gKz0gc2l6ZW9mKCpzaGluZm8pICsgc2l6ZW9mKHVpbnRw dHJfdCk7Cj4JYnVmX2xlbiA9IFJURV9BTElHTl9DRUlMKHRvdGFsX2xlbiwgc2l6ZW9mKHVpbnRw dHJfdCkpOwo+CWJ1ZiA9IHJ0ZV9tYWxsb2MoTlVMTCwgYnVmX2xlbiwgUlRFX0NBQ0hFX0xJTkVf U0laRSk7Cj4Jc2hpbmZvID0gcnRlX3BrdG1idWZfZXh0X3NoaW5mb19pbml0X2hlbHBlcihidWYs ICZidWZfbGVuLAo+CQkJCQkgICAgICB2aXJ0aW9fZGV2X2V4dGJ1Zl9mcmVlLCBidWYpOwo+Cj4g ICAgICBJIHRoaW5rIHRoaXMgaXMgY29ycmVjdCwgYmVjYXVzZSB3ZSBoYXZlIHRoZSBndWFyYW50 ZWUgdGhhdCBzaGluZm8KPiAgICAgIGV4aXN0cyBhcyBsb25nIGFzIHRoZSBidWZmZXIgZXhpc3Rz LgoKV2hhdCBidWZmZXIgZG9lcyB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB5b3UncmUgc2F5aW5nIGhl cmU/IFRoZSBpc3N1ZSB3ZSdyZSBkaXNjdXNzaW5nIGhvdyB3ZSBjYW4KZnJlZSBvcmlnaW5hbCBt YnVmIHdoaWNoIG93bnMgc2hpbmZvIGJ1ZmZlci4KCj4KPjIvIGluIHJ0ZV9nc29fc2VnbWVudCgp LCB0aGVyZSBpcyBhIGxvb3AgbGlrZSB0aGlzOgo+Cj4Jd2hpbGUgKHBrdF9zZWcpIHsKPgkJcnRl X21idWZfcmVmY250X3VwZGF0ZShwa3Rfc2VnLCAtMSk7Cj4JCXBrdF9zZWcgPSBwa3Rfc2VnLT5u ZXh0Owo+CX0KPgo+ICAgWW91IGNoYW5nZSBpdCB0byB0YWtlIGluIGFjY291bnQgdGhlIHJlZmNu dCBmb3IgZXh0IG1idWZzLgo+Cj4gICBJIG1heSBoYXZlIG1pc3NlZCBzb21ldGhpbmcgYnV0IEkg d29uZGVyIHdoeSBpdCBpcyBub3Qgc2ltcGx5Ogo+Cj4JcnRlX3BrdG1idWZfZnJlZShwa3Rfc2Vn KTsKPgo+ICAgSXQgd2lsbCBkZWNyZWFzZSB0aGUgcHJvcGVyIHJlZmNudCwgYW5kIGZyZWUgdGhl IG1idWZzIGlmIHRoZXkKPiAgIGFyZSBub3QgdXNlZC4KCkFnYWluLCBydGVfZ3NvX3NlZ21lbnQg anVzdCBkZWNyZWFzZXMgcmVmY250IGJ5IG9uZSwgdGhpcyB3aWxsIGVuc3VyZSB0aGUgbGFzdCBz ZWdtZW50ZWQgCm1idWYgZnJlZSB3aWxsIHRyaWdnZXIgZnJlZWluZyBvcmlnaW5hbCBtYnVmIChv bmx5IGZyZWVfY2IgY2FuIGRvIHRoaXMpLgoKPgo+QWdhaW4sIHNvcnJ5IGlmIHRoaXMgaXMgbm90 IHRoZSBpc3N1ZSB5b3VyIGFyZSByZWZlcnJpbmcgdG8sIGJ1dAo+aW4gdGhpcyBjYXNlIEkgcmVh bGx5IHRoaW5rIHRoYXQgaGF2aW5nIGEgc2ltcGxlIGV4YW1wbGUgY29kZSB0aGF0Cj5zaG93cyB0 aGUgaXNzdWUgd291bGQgaGVscC4KCk9saXZlciwgbXkgc3RhdGVtZW50IGluIHRoZSBwYXRjaCBJ IHNlbnQgb3V0IGhhcyBwc2V1ZG8gY29kZSB0byBzaG93IHRoaXMuICBJIGRvbid0IHRoaW5rIGEg c2ltcGxlCnVuaXQgdGVzdCBjYW4gc2hvdyBpdC4gTGV0IG1lIHN1bW1hcml6ZSBpdCBoZXJlIGFn YWluLiBGb3Igb3JpZ2luYWwgbWJ1ZiwgdGhlcmUgYXJlIHR3byBjYXNlcyBmcmVlaW5nCml0LCBj YXNlIG9uZSBpcyBQTUQgZHJpdmVyIGNhbGxzIGZyZWUgYWdhaW5zdCBzZWdtZW50ZWQgbWJ1ZnMs IGxhc3Qgc2VnbWVudGVkIG1idWYgZnJlZSB3aWxsIHRyaWdnZXIKZnJlZV9jYiBjYWxsIHdoaWNo IHdpbGwgZnJlZSBvcmlnaW5hbCBsYXJnZSAmIGV4dGVuZGVkIG1idWYuIENhc2UgdHdvIGlzIFBN RCBkcml2ZXIgd2lsbCBjYWxsIGZyZWUgYWdhaW5zdApvcmlnaW5hbCBtYnVmLCB0aGF0IGFsc28g d2lsbCBjYWxsIGZyZWVfY2IgdG8gZnJlZSBhdHRhY2hlZCBleHRlbmRlZCBidWZmZXIuIEluIGNh c2Ugb25lIGZyZWVfY2IgbXVzdCBjYWxsCnJ0ZV9wa3RtYnVmX2ZyZWUgb3RoZXJ3aXNlIG5vYm9k eSB3aWxsIGZyZWUgb3JpZ2luYWwgbGFyZ2UgJiBleHRlbmRlZCBtYnVmLCBpbiBjYXNlIHR3byBm cmVlX2NiIGNhbid0IApjYWxsIHJ0ZV9wa3RtYnVmX2ZyZWUgYmVjYXVzZSB0aGUgY2FsbGVyIGNh bGxpbmcgaXQgaXMganVzdCBydGVfcGt0bWJ1Zl9mcmVlIHdlIG5lZWQuIFRoYXQgaXMgdG8gc2F5 LCB5b3UKbXVzdCB1c2UgdGhlIHNhbWUgZnJlZV9jYiB0byBoYW5kbGUgdGhlc2UgdHdvIGNhc2Vz LCB0aGlzIGlzIG15IGlzc3VlIGFuZCB0aGUgcG9pbnQgeW91IGRvbid0IGdldC4KCgo+Cj5SZWdh cmRzLAo+T2xpdmllcgoKCg==