From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 49F364548E; Wed, 19 Jun 2024 08:45:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D21F04021D; Wed, 19 Jun 2024 08:45:27 +0200 (CEST) Received: from office2.cesnet.cz (office2.cesnet.cz [78.128.248.237]) by mails.dpdk.org (Postfix) with ESMTP id DCE2E4014F for ; Wed, 19 Jun 2024 08:45:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cesnet.cz; s=office2-2020; t=1718779525; bh=C97pzRhJBSw7bN0f1dinuGKMc4zrHTmhRH4NIjCz2vI=; h=Date:From:Subject:To:Cc:References:In-Reply-To; b=UMVWT2EjCWnC02WoWbbE1b+YJbh8iEb5LRlRqa5vKnr65kFpVRIed3thngMidBbWq ++bo39Cr/guoYz636tYDsRH2UxExYSzE3iQKwNJK4+vI4FrrSfThuf2+PMrmEKBOok jeEGlH3zyfzpECnmm9rqPjZ/r/3IwoVKMt1Y0/yMuA5ZH3DzEYVx6R+uOeU9/J1PVz lnCElxHDlHxPGajS+v5xKTj1HjIxHvZNLRG5JpZlfsb/lUuwmECduZi92iqglzlo06 EY98R5eFwmMBURCh86oDCJoEjRaJ5q4pEpayqrfuYivvklc/SS3sYWWmf2CjDXvMxo M7eNey2jlUNzQ== Received: from [IPV6:2a01:c846:1282:6700:3590:5e0f:ba26:38b0] (unknown [IPv6:2a01:c846:1282:6700:3590:5e0f:ba26:38b0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by office2.cesnet.cz (Postfix) with ESMTPSA id 6EB39118007D; Wed, 19 Jun 2024 08:45:22 +0200 (CEST) Message-ID: <3d746dbc-330e-403f-b87f-bf495cac3437@cesnet.cz> Date: Wed, 19 Jun 2024 08:45:21 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: =?UTF-8?Q?M=C3=A1rio_Kuka?= Subject: Hairpin Queues Throughput ConnectX-6 To: dev@dpdk.org Cc: orika@nvidia.com, bingz@nvidia.com, viktorin@cesnet.cz References: Content-Language: en-US, sk-SK In-Reply-To: Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="------------ms080709090409000704030402" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This is a cryptographically signed message in MIME format. --------------ms080709090409000704030402 Content-Type: multipart/alternative; boundary="------------R9P79tCnqZKbpmHFwn2bb60Y" --------------R9P79tCnqZKbpmHFwn2bb60Y Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGVsbG8sDQoNCkkgd2FudCB0byB1c2UgaGFpcnBpbiBxdWV1ZXMgdG8gZm9yd2FyZCBoaWdo IHByaW9yaXR5IHRyYWZmaWMgKHN1Y2ggYXMgDQpMQUNQKS4NCk15IGdvYWwgaXMgdG8gZW5z dXJlIHRoYXQgdGhpcyB0cmFmZmljIGlzIG5vdCBkcm9wcGVkIGluIGNhc2UgdGhlIA0Kc29m dHdhcmUgcGlwZWxpbmUgaXMgb3ZlcndoZWxtZWQuDQpCdXQgZHVyaW5nIHRlc3Rpbmcgd2l0 aCBkcGRrLXRlc3RwbWQgSSBjYW4ndCBhY2hpZXZlIGZ1bGwgdGhyb3VnaHB1dCBmb3IgDQpo YWlycGluIHF1ZXVlcy4NCg0KVGhlIGJlc3QgcmVzdWx0IEkgaGF2ZSBiZWVuIGFibGUgdG8g YWNoaWV2ZSBmb3IgNjRCIHBhY2tldHMgaXMgODMgR2JwcyANCmluIHRoaXMgY29uZmlndXJh dGlvbjoNCiQgc3VkbyBkcGRrLXRlc3RwbWQgLWwgMC0xIC1uIDQgLWEgMDAwMDoxNzowMC4w LGhwX2J1Zl9sb2dfc3o9MTkgLS0gDQotLXJ4cT0xIC0tdHhxPTEgLS1yeGQ9NDA5NiAtLXR4 ZD00MDk2IC0taGFpcnBpbnE9Mg0KdGVzdHBtZD4gZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBh dHRlcm4gZXRoIHNyYyBpcyAwMDoxMDo5NDowMDowMDowMyAvIA0KZW5kIGFjdGlvbnMgcnNz IHF1ZXVlcyAxIDIgZW5kIC8gZW5kDQoNCkZvciBwYWNrZXRzIGluIHRoZSByYW5nZSA2OC04 MEIgSSBtZWFzdXJlZCBldmVuIGxvd2VyIHRocm91Z2hwdXQuDQpGdWxsIHRocm91Z2hwdXQg SSBtZWFzdXJlZCBvbmx5IGZyb20gcGFja2V0cyBsYXJnZXIgdGhhbiAxMTJCDQoNCkZvciBv bmx5IG9uZSBxdWV1ZSwgSSBkaWRuJ3QgZ2V0IG1vcmUgdGhhbiA1NUdicHM6DQokIHN1ZG8g ZHBkay10ZXN0cG1kIC1sIDAtMSAtbiA0IC1hIDAwMDA6MTc6MDAuMCxocF9idWZfbG9nX3N6 PTE5IC0tIA0KLS1yeHE9MSAtLXR4cT0xIC0tcnhkPTQwOTYgLS10eGQ9NDA5NiAtLWhhaXJw aW5xPTEgLWkNCnRlc3RwbWQ+IGZsb3cgY3JlYXRlIDAgaW5ncmVzcyBwYXR0ZXJuIGV0aCBz cmMgaXMgMDA6MTA6OTQ6MDA6MDA6MDMgLyANCmVuZCBhY3Rpb25zIHF1ZXVlIGluZGV4IDEg LyBlbmQNCg0KSSB0cmllZCB0byB1c2UgbG9ja2VkIGRldmljZSBtZW1vcnkgZm9yIFRYIGFu ZCBSWCBxdWV1ZXMsIGJ1dCBpdCBzZWVtcyANCnRoYXQgdGhpcyBpcyBub3Qgc3VwcG9ydGVk Og0KIi0taGFpcnBpbi1tb2RlPTB4MDExMDAwIiAoYml0IDE2IC0gaGFpcnBpbiBUWCBxdWV1 ZXMgd2lsbCB1c2UgbG9ja2VkIA0KZGV2aWNlIG1lbW9yeSwgYml0IDEyIC0gaGFpcnBpbiBS WCBxdWV1ZXMgd2lsbCB1c2UgbG9ja2VkIGRldmljZSBtZW1vcnkpDQoNCkkgd2FzIGV4cGVj dGluZyB0aGF0IGFjaGlldmluZyBmdWxsIHRocm91Z2hwdXQgd2l0aCBoYWlycGluIHF1ZXVl cyB3b3VsZCANCm5vdCBiZSBhIHByb2JsZW0uDQpJcyBteSBleHBlY3RhdGlvbiB0b28gb3B0 aW1pc3RpYz8NCg0KV2hhdCBvdGhlciBwYXJhbWV0ZXJzIGJlc2lkZXMgJ2hwX2J1Zl9sb2df c3onIGNhbiBJIHVzZSB0byBhY2hpZXZlIGZ1bGwgDQp0aHJvdWdocHV0Pw0KSSB0cmllZCBj b21iaW5pbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOiBtcHJxX2VuPSwgcnhxc19taW5f bXBycT0sIA0KbXBycV9sb2dfc3RyaWRlX251bT0sIHR4cV9pbmxpbmVfbXB3PSwgcnhxX3Br dF9wYWRfZW49LA0KYnV0IHdpdGggbm8gcG9zaXRpdmUgaW1wYWN0IG9uIHRocm91Z2hwdXQu DQoNCk15IHNldHVwOg0KRFBESyB2ZXJzaW9uOiBjb21taXQgNzZjZWYxYWY4YmRhZWFmNjdh NWM0Y2E1ZGYzZjIyMWRmOTk0ZGM0NiAoSEVBRCAtPiANCm1haW4sIG9yaWdpbi9tYWluLCBv cmlnaW4vSEVBRCkgRGF0ZTogV2VkIEFwciAzIDExOjIzOjIwIDIwMjQgLTA3MDANCk9GRUQg dmVyc2lvbjogTUxOWF9PRkVEX0xJTlVYLTIzLjEwLTAuNS41LjAgKE9GRUQtMjMuMTAtMC41 LjUpDQpDb25uZWN0WC02IGRldmljZTogMDAwMDoxNzowMC4wICdNVDI4OTIgRmFtaWx5IFtD b25uZWN0WC02IER4XSAxMDFkJyANCmlmPWVuczFmMG5wMCBkcnY9bWx4NV9jb3JlIHVudXNl ZD0NClBDSWUgdmVyc2lvbjogNC4wDQpPUzogT3JhY2xlIExpbnV4IFNlcnZlciA4LjEwDQoN CkFueSBndWlkYW5jZSBvciBzdWdnZXN0aW9ucyBvbiBob3cgdG8gYWNoaWV2ZSBmdWxsIHRo cm91Z2hwdXQgd291bGQgYmUgDQpncmVhdGx5IGFwcHJlY2lhdGVkLg0KDQpUaGFuayB5b3Us DQpNw6FyaW8gS3VrYQ0KDQoNCg0K --------------R9P79tCnqZKbpmHFwn2bb60Y Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello,

I want to use hairpin queues to forward high priority traffic (such as LACP).
My goal is to ensure that this traffic is not dropped in case the software pipeline is overwhelmed.
But during testing with dpdk-testpmd I can't achieve full throughput for hairpin queues.

The best result I have been able to achieve for 64B packets is 83 Gbps in this configuration:
$ sudo dpdk-testpmd -l 0-1 -n 4 -a 0000:17:00.0,hp_buf_log_sz=3D1= 9 -- --rxq=3D1 --txq=3D1 --rxd=3D4096 --txd=3D4096 --hairpinq=3D2 testpmd> flow create 0 ingress pattern eth src is 00:10:94:00:00:03 / end actions rss queues 1 2 end / end

For packets in the range 68-80B I measured even lower throughput.
Full throughput I measured only from packets larger than 112B

For only one queue, I didn't get more than 55Gbps:
$ sudo dpdk-testpmd -l 0-1 -n 4 -a 0000:17:00.0,hp_buf_log_sz=3D19 -- --rxq=3D1 --txq=3D1 --rxd=3D40= 96 --txd=3D4096 --hairpinq=3D1 -i
testpmd> flow create 0 ingress pattern eth src is 00:10:94:00:00:03 / end actions queue index 1 / end

I tried to use locked device memory for TX= and RX queues, but it seems that this is not supported:
"--hairpin-mode=3D0x011000" (bit 16 - hairpin TX queues will use locked device memory, bit 12 - hairpin RX queues will use locked device memory)


I was expecting that achieving full throughput with hairpin queues would not be a problem.
Is my expectation too optimistic?

What other parameters besides 'hp_buf_log_sz' can I use to achieve full throughput?

I tried combining the following parameters= : mprq_en=3D, rxqs_min_mprq=3D, mprq_log_stride_num=3D, txq_inline_= mpw=3D, rxq_pkt_pad_en=3D,
but with no positive impact on throughput.


My setup:
DPDK version: commit 76cef1af8bdaeaf67a5c4ca5df3f221df994dc46 (HEAD -> main, origin/main, origin/HEAD) Date: Wed Apr 3 11:23:20 2024 -0700
OFED version: MLNX_OFED_LINUX-23.10-0.5.5.= 0 (OFED-23.10-0.5.5)
ConnectX-6 device: 0000:17:00.0 'MT2892 Family [ConnectX-6 Dx] 101d' if=3Dens1f0np0 drv=3Dmlx5_core unused=3D
PCIe version: 4.0
OS: Oracle Linux Server 8.10

Any guidance or suggestions on how to achieve full throughput would be greatly appreciated.

Thank you,
M=C3=A1rio Kuka



--------------R9P79tCnqZKbpmHFwn2bb60Y-- --------------ms080709090409000704030402 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC DVswggZtMIIEVaADAgECAhEAnbnQ7qfoWj/NNwoRkcscADANBgkqhkiG9w0BAQwFADBGMQsw CQYDVQQGEwJOTDEZMBcGA1UEChMQR0VBTlQgVmVyZW5pZ2luZzEcMBoGA1UEAxMTR0VBTlQg UGVyc29uYWwgQ0EgNDAeFw0yNDA0MjIwMDAwMDBaFw0yNjA0MjIyMzU5NTlaMIHXMQswCQYD VQQGEwJDWjEeMBwGA1UECAwVUHJhaGEsIEhsYXZuw60gbcSbc3RvMTgwNgYDVQQKDC9DRVNO RVQsIHrDoWptb3bDqSBzZHJ1xb5lbsOtIHByw6F2bmlja8O9Y2ggb3NvYjEZMBcGA1UEYRMQ TlRSQ1otNjM4IDM5IDE3MjEdMBsGCSqGSIb3DQEJARYOa3VrYUBjZXNuZXQuY3oxDTALBgNV BAQTBEt1a2ExDzANBgNVBCoMBk3DoXJpbzEUMBIGA1UEAwwLTcOhcmlvIEt1a2EwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiHwBI7t3hatQXKJ1X1fANpo1f5rur//PMoRMb w06yUiWU8lPAQTGshceMnNDTy+PsZ+jvJ6H5xsrISX911zLBH2T2BcF3IVEEiu6k3JBbXMlc lJvrkKfBcOsV2rnYQUqLHxejKVaeTmvMjTwWGm13HfERf3TRL5JvE9FzwsYHY+XokiFBrHgb pN18YyjvkvS+LJcMYAPFo+jgEsu7WZY4xjK13fIzKk+qoneD8rrX5bbnhuhAfaHOpnHvowJz sQR2lLK/8A2pdLAJd4YQi8ITylZeTaIPWK6M13tc2TU2/mCXXyni4LI0q2+n2gzu4oqILCHE OVam0bRFVAxzZnmFAgMBAAGjggHCMIIBvjAfBgNVHSMEGDAWgBRpAKHHIVj44MUbILAK3adR vxPZ5DAdBgNVHQ4EFgQUqx/ddGZmQk2PwBpPufqOYZQavXUwDgYDVR0PAQH/BAQDAgWgMAwG A1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMFAGA1UdIARJMEcw OgYMKwYBBAGyMQECAQoEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUDAjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vR0VBTlQuY3JsLnNl Y3RpZ28uY29tL0dFQU5UUGVyc29uYWxDQTQuY3JsMHgGCCsGAQUFBwEBBGwwajA9BggrBgEF BQcwAoYxaHR0cDovL0dFQU5ULmNydC5zZWN0aWdvLmNvbS9HRUFOVFBlcnNvbmFsQ0E0LmNy dDApBggrBgEFBQcwAYYdaHR0cDovL0dFQU5ULm9jc3Auc2VjdGlnby5jb20wLwYDVR0RBCgw JoEUTWFyaW8uS3VrYUBjZXNuZXQuY3qBDmt1a2FAY2VzbmV0LmN6MA0GCSqGSIb3DQEBDAUA A4ICAQAlHGBXnHAkPcBj0dtzq+AsVAHCbDjAyrvh6DjaQO6KGfsCdJiI3MKRE7Kmpm0rbdb9 xoSBjtZY5uSJO0ZkAQzz21jcTgiRUJmNgdffTk1r2JaFpXpbQSKrtjOfVG6HfUvOfbgLyVev A7HH837SaniLCaqj2OzBPH2slV+Q+lYxU2W6pP/S/4tjHvypLruKDsp7GFLwDUYbKm7/vBSK prBMnjkLq2HQmQ+E3LkPEt8L5In8BpFpKRmAFj+cNm14xv715o+JreioBG1JklsWkFY2X7KE KYRM6Ov2oJuqK2plhviM4c3r8yQ5bTvale/UWPcm6GXOrGRJXaR0yjuHWk0MZcwrHqXQbfiO porDmt68zVK05UacMRB0RrEQ+1nEjzzsHTVXzpHIIbCTzKBiEadHsaka3mWMFrLP2fWDh1m4 IRTsKJy9YwYmjzDKYMAdisAXgXE4QHN2K8LLHLMttBGoOI08X91pfSf5WoB4g8UM5+tuemSo uNpj14gHxFrxoGCC53EImN0f9F/Lh116CpJKDLN+06RYyeVKNjUVWONZfCeEcQLGWNJTDh3p IDLl13COJGbtUwr2cjHTi1WFG4tYYJUadGgih5+ObDgk9CKqXFFLvkQIXOp7qQnRgRd+Ochq nCGaOZhLHsd/O7ByimWJ3OB6nDujOahK4PRaHS+G8zCCBuYwggTOoAMCAQICEDECcNQ1vpsk mvhW0OHihUkwDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcg SmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MB4XDTIwMDIxODAwMDAwMFoXDTMzMDUwMTIzNTk1OVowRjELMAkGA1UEBhMCTkwxGTAXBgNV BAoTEEdFQU5UIFZlcmVuaWdpbmcxHDAaBgNVBAMTE0dFQU5UIFBlcnNvbmFsIENBIDQwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzSuIiXidb6QRbFAQ1MiAUrrTSMUDGzVDA HqFEyq+eSmF/LZDeYpszai2kQsqWATz/cBA9gGjunvJ45G48ycC4D6gwZFvbBt5JotxlunBe B8K+crGar3v+RCQ4VfvToX07v+HTJ6EeEONR3IzJPTMyzgAwENGsAWf9va9HePQFJiChCzXq hKpp0zen53S+8f9itEy06GS8aku7Mvyb4tMBBa9An3Y3ALIqIeymg/iYs8m9WkSkMyekNtFR B1+1KlnNUpM05G8+sY9EucnQQRUIdHzYsvqjP3XlaSuB4Jj0ia66UGfi5Wx31mm5sKAz8Re9 UGVWIqq6wKFKxkSfuO4iwYiIPJoiGEux3dqabwFLduAroDF1IxE40PqGIdPXzYuZ/wL6BEfF Ab0xy8bfm5S9G7y/ts9mIlFpPtkLZ/nQ/iVOWdsu9ale/nK/uGF47xsxeW2LIvB4sH5U2+D4 ad8vpNbcCrXIXXKtkBnNHgxumNNZ0R1Isq/Pz7TALCxxDzWdsM7AO32/Jn7R4ldtGRZmKpJy fACDn8HU1QPhOtiWsjifrMWnanJhQ6K7M/5qz8BmfPrca+MUrr1Y4NHZb9MrgPtWKQQyGDXy +G5F/iHGdZk7LS+F8NH+Ddolt2wZpz52JqGMTDPIH5Qok4LLO95wbxtn+79Tw+wQxmDTuIg+ LwIDAQABo4IBizCCAYcwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0O BBYEFGkAocchWPjgxRsgsArdp1G/E9nkMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAG AQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA4BgNVHSAEMTAvMC0GBFUd IAAwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwUAYDVR0fBEkwRzBF oEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRp b25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2Ny dC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzAB hhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAKBU57DY8f EzkA/W/sYsbD7e0XquMBzHjcP0eXXXRD4EAEAGCWSs+QRL9XIxmx+52zx9wMa8YTejlR+NKe jiyKPTF0q63zMxrO/z/hUwo8IDcRRLS0NSgvTW6AN2rCXJe5iLN5fIfYgIBB9cy1L6trPuZ/ vjUJm87nQ7ExQzGqWN5F9U8MlAk0c5iLanG7GCMoNjHiF1n0baj6guUeG7n5qcwOQTyDS19+ NEqfwjUPUGasN1ZH8h1sE6PrzvRpti+rKzWpiU+i2/k3l2b5fFDy+Wu9jv6R9BoBh47es/UM zwEZ2kSrIVVr4jSukk+FpmR5ZbtwiYNAV6sdb1srMGsILzXlrdasSE2nGHvZklk2zUdgn7b0 1MHq67g0mNozGmT6Dam41Kbhv25WMFs871XqwVIb4gGoT1yRf/VePMm1jwauqijhKJFvrNwe GnebGPeipaLxIo2iEA4qdRztEg/qyzWGogXK/TFdmivg322fMPQWjQkMhRGMM8SCjlZN22L8 x0ZOYoVA2rHJm5P25IjZe+HPyn7ikJiSJmqlqFmUeowXF3D1dFlCCs/5yC06RYRqI2REFu+2 8t2nswIvY6xCFAR0RtS8Mz2yXNld0js2MmiRUGrc7imWzdUPbPcv9sdUF7SsERGPIzYL8dIi Hzit+YCoGCSXMg6peF37hHNp1TGCAzswggM3AgEBMFswRjELMAkGA1UEBhMCTkwxGTAXBgNV BAoTEEdFQU5UIFZlcmVuaWdpbmcxHDAaBgNVBAMTE0dFQU5UIFBlcnNvbmFsIENBIDQCEQCd udDup+haP803ChGRyxwAMA0GCWCGSAFlAwQCAQUAoIIBsTAYBgkqhkiG9w0BCQMxCwYJKoZI hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDA2MTkwNjQ1MjFaMC8GCSqGSIb3DQEJBDEiBCB3 XlCgEOEDYOl7p3ggQo5ivmQ44Khokkth1358VluTYjBqBgkrBgEEAYI3EAQxXTBbMEYxCzAJ BgNVBAYTAk5MMRkwFwYDVQQKExBHRUFOVCBWZXJlbmlnaW5nMRwwGgYDVQQDExNHRUFOVCBQ ZXJzb25hbCBDQSA0AhEAnbnQ7qfoWj/NNwoRkcscADBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCG SAFlAwQBKjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqG SIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMGwGCyqGSIb3DQEJEAILMV2gWzBG MQswCQYDVQQGEwJOTDEZMBcGA1UEChMQR0VBTlQgVmVyZW5pZ2luZzEcMBoGA1UEAxMTR0VB TlQgUGVyc29uYWwgQ0EgNAIRAJ250O6n6Fo/zTcKEZHLHAAwDQYJKoZIhvcNAQEBBQAEggEA MuO1oRYgyMAqS6ULjZlwaWVPcZX8pr2/u45LOP3mv6sYhOAB5tJYw/ip4aOS/6qQuI/3JxaL 3Z8iBLhDDg2i5tRfD15HhV+punvivqhLHWDM34ElJKlV696uAElYrKoxhBSrtjguAAUdF77U s361z4XZaGJejDK25JfuFXyo1S/PYgIiOgz6SKzr2ok7hRf1fYCQ+FTcCN/+qLj2Quq7rJGv 5tp9nx0BNtNG7gEonzUuARl3k4dtKCEsjhCfQpLDP4LPChnisprSgTSOgIYrOnWNhSJKvO+o d3R0BRnwm8/RXkCM+y5LyHmGyuStVlkTusuRzMiJfkhb/4CjnekdZQAAAAAAAA== --------------ms080709090409000704030402--