From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from emea01-am1-obe.outbound.protection.outlook.com (mail-am1on0074.outbound.protection.outlook.com [157.56.112.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 1B7F93B25E; Sat, 7 May 2016 05:58:06 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=darbyshire-bryant.me.uk; s=selector1; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=F3hRtpmcCf3E4dt9eq6Sok85SjEeMRpLxZTT3OspnKo=; b=nQiwa0Djc2Sd6Rg6P173RfF1uSSFL3zMc6ddSvDgJs0zcvNz3cDhs1GDRlyBp9CZLC1Lt38DPaC2Rhc9LKuSYEYgVUKbxS7CJ+BxoEbep09DjYIchvV706quB9WGICz5WhRHV+n25wIjhhMmiPP1hsBlu6iP44QYtDv5+8RyWh0= Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=darbyshire-bryant.me.uk; Received: from [IPv6:2001:470:183f:da2b::4007:25d] (2001:470:183f:da2b::4007:25d) by HE1PR07MB0937.eurprd07.prod.outlook.com (10.162.27.143) with Microsoft SMTP Server (TLS) id 15.1.492.11; Sat, 7 May 2016 09:58:02 +0000 To: Jesper Dangaard Brouer , Eric Dumazet , Felix Fietkau , Dave Taht References: <1462125592.5535.194.camel@edumazet-glaptop3.roam.corp.google.com> <865DA393-262D-40B6-A9D3-1B978CD5F6C6@gmail.com> <1462128385.5535.200.camel@edumazet-glaptop3.roam.corp.google.com> <1462136140.5535.219.camel@edumazet-glaptop3.roam.corp.google.com> <1462201620.5535.250.camel@edumazet-glaptop3.roam.corp.google.com> <1462205669.5535.254.camel@edumazet-glaptop3.roam.corp.google.com> <1462464776.13075.18.camel@edumazet-glaptop3.roam.corp.google.com> <1462476207.13075.20.camel@edumazet-glaptop3.roam.corp.google.com> <20160506114243.4eb4f95e@redhat.com> CC: , , ath10k , "netdev@vger.kernel.org" , "codel@lists.bufferbloat.net" , Jonathan Morton , Roman Yeryomin From: Kevin Darbyshire-Bryant Message-ID: <572DBC21.10209@darbyshire-bryant.me.uk> Date: Sat, 7 May 2016 10:57:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 In-Reply-To: <20160506114243.4eb4f95e@redhat.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms020109070209090704010907" X-Originating-IP: [2001:470:183f:da2b::4007:25d] X-ClientProxiedBy: DB5PR04CA0016.eurprd04.prod.outlook.com (10.164.34.154) To HE1PR07MB0937.eurprd07.prod.outlook.com (10.162.27.143) X-MS-Office365-Filtering-Correlation-Id: 7e2ef72a-b4be-4238-61f1-08d3765e14f7 X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0937; 2:MivTz+BiAryrxsjzRYmDoRjBwZyztusQlSDLjrNYu+ym2Es3YTOfUoekJd4qWy5UtQFil1isN5t85zp1WlNaLJOvqGf93L9PIN36KGRrORITysgC7+Gpq/hn7CYzBkpjjEOITTe+kkzeAYhfQBABuUpFy/AJZYq39gBXGp88k7CYWdYiCbuUeSOIgymScoKC; 3:0Qu99I5IjEiWYavZtbDmT1+ZEgKKQ5yONDHMnSHHXjdPVql8mXDnwK2r3lIQ7Uae7lJ1MTPX44UY9B04UN1hmfaJCjAvCqevyrVlculxzlMDvZUC2evd6ej7bRnq947D; 25:qxhs+4OCkLD6Uo39rU0L0Ps/Wufi9gG+Q/P9FX1swl1yBACtqzn+3czlOfp8OWqHwXvrp7eRYNWW71/+y0l1kgLEq6CgT5Titg1F+0aoCmETn8bpwv+dGVD5WKtBDghQ6hgZvykB/8RjrhIHydwJ84JgxO2yxeJWmTHoI5HpTItel+0C8WfDDW/Rk8+Qf5RBisYqkYmFJr+MBKoOCW+EvFQ5nA65RNXcMrEyrQsR4NMyEsAxQiJtKZtNNxA/tdLGs0t5Fg5ZRzCbAHQ+s6RagTqEyn3JJfCojqGoXqgI6Gh2Pba5Er8MIfV5GrS2EIzwBA5UbYFSOdyKA/xkWw0Ah5FJipnvDC8HwSa+FDYFPK+5OHUmPl+6mW8v/1+WPSbnpB2ThUT+KmXMd/UFTRgFfQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR07MB0937; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041072)(6043046); SRVR:HE1PR07MB0937; BCL:0; PCL:0; RULEID:; SRVR:HE1PR07MB0937; X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0937; 4:4ZmU1gG9hCUQfGNmaCwmcKrAqdGocRjsI/AqSNinhN/rZp6YcFlseF4XW3+KgP3H20VC6dABuSjyjmIriAKpVh6ONvTJJxwLznrJwOY9WEf0NbotltzGs/P9XDjm98wrMRgm/KOwKzh2ZTe2OMhxf85w2X8aZ6BY/25FTRRJhAn7vmN/dEL9BH7JZ3xTesBLD24hQyMw+H2JYXt9sq3O/efxMmd6U+WNVFQKrAsLZb9K2jG0lPPUdivulZkV/Fnw9wzSUgziNBLZGMoP/Fl3vj+K47peoKVvzStebICAWLmqXteaEFbHQ9IiO/xglLT5+mICa8ztG7t8KPJUzhXFcVWBm+mbPS1TuwUGeat5q69v+nYwKaSgXpFEW9H1oMeIDK28ouFYW4PkUBsdYHGVVPJP1QOdO7hNtGmHLai9X00= X-Forefront-PRVS: 09352FD734 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(24454002)(65806001)(65956001)(15975445007)(77096005)(86362001)(2950100001)(42186005)(19580395003)(74482002)(5008740100001)(189998001)(92566002)(84326002)(512944002)(83506001)(568964002)(5001770100001)(586003)(36756003)(4001350100001)(93886004)(6116002)(5890100001)(4326007)(2906002)(54356999)(76176999)(65816999)(33656002)(50986999)(5004730100002)(64126003)(81166005)(3826002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR07MB0937; H:[IPv6:2001:470:183f:da2b::4007:25d]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB0937; 23:mFReNpYZiMe6uV/OEYvm0fEVnpCUgFmeEAam4HrTq?= =?us-ascii?Q?t+5RZzoebtkxNW5wvdqNG3fnWLG++0GBOs91CaekbT+EH+VFU4OusCepQCSY?= =?us-ascii?Q?PNIkOGhVBGoosQD4Bx3rmp8iq9kIW8/9YyMqWDvMCM1PzAyXLxIcYv+cX+Ba?= =?us-ascii?Q?2HfWpDFgF2gBnywb8djLH0GZMLI2gWVOUowu1ZdZGU6WSS3SBBzHZv81y0Mv?= =?us-ascii?Q?O3Mt2941mHg7rqSYxupcnA7yfj5vsaPE2z6ytCyKZZkdi6ihq98wk8UCa5mi?= =?us-ascii?Q?kAWVR4wltEmCSkLPR/B3m9f/+IauuSRTMw8n5mkZ/7zxr257mc8TP3QWsrzR?= =?us-ascii?Q?Phpk3LJs1VWKcUxRLS3E4DIZBouUoSeKBWUi4SvwRvay3+2pPe7647dQZrip?= =?us-ascii?Q?SVttPDtnlHLXfYM7DRsGK5xFOJhfScjiKo1hv0wWrNPt1z3tak1HxIQylfxN?= =?us-ascii?Q?lOfX1sWkefZSlP5UtM94mkZDoeePlzJ5c4+UiaUBouLx8R4T/RALngfqxhlY?= =?us-ascii?Q?sx/36ThLi1X3BeePGyR1E34yJM/weLML4EM+DjinrBEIrMSCYsS6cT4f2ABW?= =?us-ascii?Q?rj4KAOZvB2CiHzjLvv6AwfYaQ7IHfFmvoj4q2ZXuhzTgcsyPJXjYOI3tmmy8?= =?us-ascii?Q?U0g+nieSbFEG1eBGBekLFr56lEOXVdh05PdU5wZM5qwJLYC1rNkSoD/MNCXh?= =?us-ascii?Q?cZGJL8zXJ1A0ytR2AHkXSNRUcY44oGE6M6rA0B2Z1l4QtkXJ76uoRT1gbqEj?= =?us-ascii?Q?POIyToHsQodg5z1Ob6ZMF4e0ekl/96BL0kEtDO7iBPYCtsU31HataXeb7Kod?= =?us-ascii?Q?P2yxp1Kt9HB7lt4ZCG1YlTw/PzMORJds1f9CRILXBVpPXqVYM7mWXrVhFFwe?= =?us-ascii?Q?eFwl4n/zROfB5kyAGDuAPbYTQtayRIeD3EvbQwy4Td7WE5RsJX6IhB+yuiGG?= =?us-ascii?Q?7DW6p78VI27wGEYut0XXcNQMBLPvTttKrjKLmKlma25d3kymu85xyXC8jg8a?= =?us-ascii?Q?r/q6AodagQmP7OCrlLGLW2+2zwaF7KTaOFvf33OdLbD4w=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0937; 5:N3jSpxS6YHUhLYZmxoi2YTjarr7MaZP51SfWhP90oabLmN46QBJ6/ebxJpM2mSfvPXyDE6O1E353Zm4BoaN1N2tXaygjxj806kibf8dh4Q6T8i5n6SlVbAqjpEKBO88BfHkCeUmQuSyQNiQCnG4bsw==; 24:LeQLhlguRP4FzCo2EPIiCrqgqn2fgjDQ0uNSObgB9pea10UlJVH8aDHKksWtEC1/4S/nuCSyxPVLsOnXI/T95B9zQbfGNmLSr7iih8k9BDk=; 7:q61oH+XIeNVtJ01Ggkp4VCOIIaLueQVMUCCkEHBcgnDksoLQceI5umT1w9+zan8NyX/yhW3NOBEFjRYd956j9P7mGQCFzHoKaHMkGj9znuD0qtn7D+TNUzRa1vGz+cAh6oBlup337fXfXbVLFN9uRODueV+Qijgrc3VN5rk//WayOgeLeM5tidtISj0PDws6 SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2016 09:58:02.9663 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB0937 X-Mailman-Approved-At: Fri, 13 May 2016 16:54:46 -0400 Subject: Re: [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] fq_codel_drop vs a udp flood) X-BeenThere: make-wifi-fast@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 May 2016 09:58:07 -0000 --------------ms020109070209090704010907 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 06/05/16 10:42, Jesper Dangaard Brouer wrote: > Hi Felix, > > This is an important fix for OpenWRT, please read! > > OpenWRT changed the default fq_codel sch->limit from 10240 to 1024, > without also adjusting q->flows_cnt. Eric explains below that you must= > also adjust the buckets (q->flows_cnt) for this not to break. (Just > adjust it to 128) > > Problematic OpenWRT commit in question: > http://git.openwrt.org/?p=3Dopenwrt.git;a=3Dpatch;h=3D12cd6578084e > 12cd6578084e ("kernel: revert fq_codel quantum override to prevent it = from causing too much cpu load with higher speed (#21326)") I 'pull requested' this to the lede-staging tree on github. https://github.com/lede-project/staging/pull/11 One way or another Felix & co should see the change :-) > > > I also highly recommend you cherry-pick this very recent commit: > net-next: 9d18562a2278 ("fq_codel: add batch ability to fq_codel_drop(= )") > https://git.kernel.org/davem/net-next/c/9d18562a227 > > This should fix very high CPU usage in-case fq_codel goes into drop mod= e. > The problem is that drop mode was considered rare, and implementation > wise it was chosen to be more expensive (to save cycles on normal mode)= =2E > Unfortunately is it easy to trigger with an UDP flood. Drop mode is > especially expensive for smaller devices, as it scans a 4K big array, > thus 64 cache misses for small devices! > > The fix is to allow drop-mode to bulk-drop more packets when entering > drop-mode (default 64 bulk drop). That way we don't suddenly > experience a significantly higher processing cost per packet, but > instead can amortize this. I haven't done the above cherry-pick patch & backport patch creation for 4.4/4.1/3.18 yet - maybe if $dayjob permits time and no one else beats me to it :-) Kevin --------------ms020109070209090704010907 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgMFADCABgkqhkiG9w0BBwEAAKCC DYEwggY0MIIEHKADAgECAgEeMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYD VQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0 ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNzEwMjQyMTAxNTVaFw0xNzEwMjQyMTAxNTVaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUg U2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0 ZSBDbGllbnQgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHCYPMzi3YGrEp pC4Tq5a+ijKDjKaIQZZVR63UbxIP6uq/I0fhCu+cQhoUfE6ERKKnu8zPf1Jwuk0tsvVCk6U9 b+0UjM0dLep3ZdE1gblK/1FwYT5Pipsu2yOMluLqwvsuz9/9f1+1PKHG/FaR/wpbfuIqu54q zHDYeqiUfsYzoVflR80DAC7hmJ+SmZnNTWyUGHJbBpA8Q89lGxahNvuryGaC/o2/ceD2uYDX 9U8Eg5DpIpGQdcbQeGarV04WgAUjjXX5r/2dabmtxWMZwhZna//jdiSyrrSMTGKkDiXm6/3/ 4ebfeZuCYKzN2P8O2F/Xe2AC/Y7zeEsnR7FOp+uXAgMBAAGjggGtMIIBqTAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUU3Ltkpzg2ssBXHx+ljVO8tS4UYIw HwYDVR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwZgYIKwYBBQUHAQEEWjBYMCcGCCsG AQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwLQYIKwYBBQUHMAKGIWh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNydDBbBgNVHR8EVDBSMCegJaAjhiFodHRwOi8v d3d3LnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwJ6AloCOGIWh0dHA6Ly9jcmwuc3RhcnRzc2wu Y29tL3Nmc2NhLmNybDCBgAYDVR0gBHkwdzB1BgsrBgEEAYG1NwECATBmMC4GCCsGAQUFBwIB FiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsGAQUFBwIBFihodHRw Oi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMA0GCSqGSIb3DQEBBQUAA4IC AQAKgwh9eKssBly4Y4xerhy5I3dNoXHYfYa8PlVLL/qtXnkFgdtY1o95CfegFJTwqBBmf8py TUnFsukDFUI22zF5bVHzuJ+GxhnSqN2sD1qetbYwBYK2iyYA5Pg7Er1A+hKMIzEzcduRkIMm CeUTyMyikfbUFvIBivtvkR8ZFAk22BZy+pJfAoedO61HTz4qSfQoCRcLN5A0t4DkuVhTMXIz uQ8CnykhExD6x4e6ebIbrjZLb7L+ocR0y4YjCl/Pd4MXU91y0vTipgr/O75CDUHDRHCCKBVm z/Rzkc/b970MEeHt5LC3NiWTgBSvrLEuVzBKM586YoRD9Dy3OHQgWI270g+5MYA8GfgI/EPT 5G7xPbCDz+zjdH89PeR3U4So4lSXur6H6vp+m9TQXPF3a0LwZrp8MQ+Z77U1uL7TelWO5lAp sbAonrqASfTpaprFVkL4nyGH+NHST2ZJPWIBk81i6Vw0ny0qZW2Niy/QvVNKbb43A43ny076 khXO7cNbBIRdJ/6qQNq9Bqb5C0Q5nEsFcj75oxQRqlKf6TcvGbjxkJh8BYtv9ePsXklAxtm8 J7GCUBthHSQgepbkOexhJ0wP8imUkyiPHQ0GvEnd83129fZjoEhdGwXV27ioRKbj/cIq7JRX un0NbeY+UdMYu9jGfIpDLtUUGSgsg2zMGs5R4jCCB0UwggYtoAMCAQICAw5ySjANBgkqhkiG 9w0BAQsFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNV BAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0 Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBMB4XDTE1MDYyMDIw MzA1MloXDTE2MDYyMDE0MjY0N1owVjEmMCQGA1UEAwwda2V2aW5AZGFyYnlzaGlyZS1icnlh bnQubWUudWsxLDAqBgkqhkiG9w0BCQEWHWtldmluQGRhcmJ5c2hpcmUtYnJ5YW50Lm1lLnVr MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAugCNtDhytCJ9HOfenUHr/vUGUECv PL1IJXgHMl4cIJmwgLOkXhIcTMxHnX+kFweqvT+eDWv1hzA9yMWhvjLFC4eLoFaV0xiAat8O XQ7t3MwKY5DW0mB1dOnjiFIcc/XMwyYI4KfEGnFMJQkzon0rDVpkl/Q1f/hu1sELO7Zc6TFL wuuDuiP7S73zrz50TRoq0+Ob3x0uOMW2uVwVzf6NLwHgBE2LFleMXblyUMx0IlIcLan2nWiI Vsa3XYd+C6KAGGwlmO4VAZ25KuX7hkj8f82lSapvtKTtvrSoDghXlHH2JXiIQX+Sn0UgOmbX 1KyOe9vN7WzQ+tpPRzpFRffnnnp1VQye3wVRPBumjDxQSFTOhUtslnvbefUQSPw6p5w9ZiXI GJICLkX/MkYN/TwGCvuUG2PxBybSR1A2I5ap+VI/zGSG3XGVEA69SOZQyD+8YjJZfaY2nCu+ DuM64JrJUi2CvX6fwcdHNschJNrrfetpnrx3JrGnG9o+pWuUG1phBg+KKN2bhrdzY79qm7ha 86EMKSUOn5nBdGY3YxdXq/naoUQeOCUV2JMFGOulu7sKpiWcz7HVFacXjd9ebisVLv+jOwll z14BWRb87s1+LBEJn/Ybn3ekhtgyEAhB4kgj0scl4hI8xCU6zrZyDnbXmxSvDXbClZA0PACt f/jhGvUCAwEAAaOCAuMwggLfMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQG CCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQULkW2CpDiQpRNumQ7wdspjFfgX+AwHwYD VR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO8tS4UYIwKAYDVR0RBCEwH4Eda2V2aW5AZGFyYnlz aGlyZS1icnlhbnQubWUudWswggFMBgNVHSAEggFDMIIBPzCCATsGCysGAQQBgbU3AQIDMIIB KjAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjCB9wYI KwYBBQUHAgIwgeowJxYgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwAwIBARqB vlRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBhY2NvcmRpbmcgdG8gdGhlIENsYXNzIDEg VmFsaWRhdGlvbiByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeSwgcmVs aWFuY2Ugb25seSBmb3IgdGhlIGludGVuZGVkIHB1cnBvc2UgaW4gY29tcGxpYW5jZSBvZiB0 aGUgcmVseWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov L2NybC5zdGFydHNzbC5jb20vY3J0dTEtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5Bggr BgEFBQcwAYYtaHR0cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczEvY2xpZW50L2Nh MEIGCCsGAQUFBzAChjZodHRwOi8vYWlhLnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3Mx LmNsaWVudC5jYS5jcnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0G CSqGSIb3DQEBCwUAA4IBAQBicQWe98eF/o09TXFsExc+WSyYjt3oSnXyocLzXQp82CQhIg21 5RqNZ1e+hsO7tq8S6hdItUDbKpecpIV59+57ke1zVl2slTRIT19fhYINHH78rVVRPzuHoiDt MXnGrp9hbq3Cz8P4mm8INKDiYK46kyplRAQ3ZMouPG1lsnDzgQAvbCj74H8yAp7fK8if6cxs 28BCUmdP8D3c6M1ffdNNaqNT+4Z3mtOujXXg7zOfmXN0Zg/mEtZ0NrWE2uICGdWjTv9KZiI7 fi4hk2CRpCL63qzmu6BwtcgtwhgYYtuAk2N43+SiyDkyLKGAcjEor3t5f9HivN29E0F0MXTH 1OdgMYIFDTCCBQkCAQEwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBM dGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYD VQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQID DnJKMA0GCWCGSAFlAwQCAwUAoIICSTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG SIb3DQEJBTEPFw0xNjA1MDcwOTU3NTNaME8GCSqGSIb3DQEJBDFCBEBU5o6vDj4fefbyFFSd 1gsexnK4SVXKompbtsGvF+LVKuIvcVf93ai79vjdTa18z5YdKJx4KK1FYdE3i7cTNjdIMGwG CSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw gaUGCSsGAQQBgjcQBDGBlzCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB AgMOckowgacGCyqGSIb3DQEJEAILMYGXoIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2ln bmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBD bGllbnQgQ0ECAw5ySjANBgkqhkiG9w0BAQEFAASCAgBYN7e5svY3TQN3sNfiKuObDrZMpfCD X6Q7qIaNKSucniKFn4G2hQg9XJBojk8pVEf3dQD85yYBY68uBON+iLn15Mb2UKaLiwU2TUX5 a6LNKOGWlPL/SR0fwtSU4E6yHg/ZP2YGDqbo3fCDSNm/FxEzrtGSOVmU3mOxQc0OT67/P3RP GOgaUAldW0efaN5gEfNOXD9EraoltDUZPnMHSBma9nwmPcnO6+hXfB6KqlUHGUJyQiJoMYmb foBjv1UjWpdk/prHmIajrazD8c+mxeyx+EHxDJfc1eHwFqq6X3jeVelnNhxMvMzV1UNlCCGX VtENOcobSJXzHiR6i2wzfH726X3gHbhuIL5CUz3U7tmCuHTFFVb/gssJFn1dpiq0WmIaAt83 YzzY2J+mSxXeDhR1zSFuBvbgfnD2trDcIRW+4N6DSvJCT96rOiKtviSDKHojOTHb5lxitMBk JzB0Jn5lPQWEAK7jI0zBuigFr22M9AFmawZttfqcUoXRQ9df6EOAphmILWafJNm6ugh55VZP coZDGZBDXaBubAW1RKStCvX8hMDNwOqbejFqAp3yWrc6QMY9kGD2/Ecrjgr2uY/Qe6oXjN1c EUCfGZl+BBpHcOmblWiibgbVqSXijuvsUJnPDzyf/g1dyQo4BtqYSUKUJeWtYL9B5XQM8xTj i3NkLQAAAAAAAA== --------------ms020109070209090704010907--