Received: by 2002:ac2:464d:0:0:0:0:0 with SMTP id s13csp3244878lfo; Sun, 22 May 2022 23:42:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzTH6or7DcNFOSi15depxxAjzaAS3MA/E4o8U6xL8wtNCPSwkQTd8bwswXkRzfs8snP087j X-Received: by 2002:a17:90a:6342:b0:1df:763d:4eca with SMTP id v2-20020a17090a634200b001df763d4ecamr24134739pjs.85.1653288179057; Sun, 22 May 2022 23:42:59 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1653288179; cv=pass; d=google.com; s=arc-20160816; b=ihlByxBPOxAsPtyLXsGPs106dSB37bg7BbVMGYcZyW+1t7kjUWnIq2uHimxno/+bLZ Rutja6ru+ZxTXl1SM1XaRliH8gqxmxHtMuuvf0DH67M1GqIVS4vJUSs0lWAVAmJBxcWm OLN+KPUum+ZIXGeUsR+qH+JtwbMm/v9u+LbQHEvdLNxvE/w2VptWQHXWZdsbWAEx+iSc 9dvcsVyIFYr5SIPrqlIP1PPRd9m+5I8c7VIYqYtjNkPP8TrwfIpe/tFgkoRMcDqPB/Jr wAfWLR3RPFR7PBQcUbGJVYt3mniyA3TFElcx6S63RWxGZsZsPoe+U1PSyLSrdE9fBK3V 2oVg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=zG9dIxkxXKYBKb8PvhgdKcOBa2LMiShC/C7qiSShhgc=; b=NBCReOJuZY6RS30HodoHA1AsmBizePOn/+OfhC0WO/pk5nJV0bhIlh1pYbzcMu1k7q 5SVfAv1ZKUeS8rtwJ8fngajX5nJIheqAiHpEjxgttcIr5y07Y+q7Pq1PHBmAVEBsoM5n iv+aPINJM3WBNoiqOsnA3UEwecrQQLMHcbO40Ebc9LA6RM4SinlR4tFe/yiWDmK4/DnR 8aDt5uMJrBlzp+a+iX7w4cTIBidHZJquhp95JOtmoGhKwd6YqkgxY57nuqr1Kj9gQcQq gCbxoyLgKI8bTyr1P/HTL1XwirHib8oNaQWOXfcWHu7MKXTqcOmSKtQ45hvOr/5fDj4U w0PA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=WHChnWA3; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id u190-20020a6385c7000000b003c6d27b355esi9088244pgd.22.2022.05.22.23.42.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 May 2022 23:42:59 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=WHChnWA3; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6E5D74FC6D; Sun, 22 May 2022 23:15:43 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345399AbiEUTtu (ORCPT + 99 others); Sat, 21 May 2022 15:49:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230192AbiEUTtr (ORCPT ); Sat, 21 May 2022 15:49:47 -0400 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2098.outbound.protection.outlook.com [40.107.92.98]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE3BF44766; Sat, 21 May 2022 12:49:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Heg44xkb9nZvi4kJ4AxPW3kC5lAM9AktwbRWdHdF9o++fG7+yX8Ru8x9jBiOXzo5Npzbxww/yj87n6DzKypcXByITSPz4npO2loksL3qG+ymg+i/ovffvnHB2fVme6cqf+WB0EnPVCKBPx45tjQOMmB9SV4J/lIr6UJItpJzc0M2qGR2eT/zeRXDdY+dlZfpWXJvdLsutfowHjn3AnlhcfzEqc65/JUG9aRw9ZNG1qvX4KqCxWn7r40k8fdOz1vgi4WIs7N9CIAXgryMdCMFWJvLmy14P+81BZwq/+2bOtTgiSnmyZfzqg17OCDs0D2DSi9bGWy+dcoSLKxxwid40Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zG9dIxkxXKYBKb8PvhgdKcOBa2LMiShC/C7qiSShhgc=; b=kE41CwcBvmPc2CIj1LJ+xfXMAggpxUeq1q4NtU09Xia3mz1/ZzEyeLlz7QydtJEogb/JZ27FJMNFzdZAgKCP7OxqDj+JDvUqJmrfRjl0JAYHWAxc22jjzBSZBfdepYW1QevRvMNFp2HD/ua2yWdgX1PR5AJtwxpK12lFXTZEfeLk3U3T7iMZg8MYzXWhYYMbEG6KpNZGXg0fN7UPtxPkKy2H6Xx7+ixS+oYdQ+DbooSMWsbSc2ilts42t9EYmpgo+vFr/byh49SW7fBYD6FOFmIMvm9JIBOuN9JtTPQSU8UGB7B60MLtkdi7yi0Y+LUEWtSxOc9oHE8MMu8XTpWh3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hammerspace.com; dmarc=pass action=none header.from=hammerspace.com; dkim=pass header.d=hammerspace.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hammerspace.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zG9dIxkxXKYBKb8PvhgdKcOBa2LMiShC/C7qiSShhgc=; b=WHChnWA3uj61qjeekHISyPRgYj1H/bH+c/bMeOA1998qX2mSyHFTj3wpBAFyKICIrawNumPtavY9FmQTlhWxzMorQKrOSAbBMfyaE0i6CjGTNcPhvm17VflkbatTuJHsXkMQZL/Yxjn84LKyxVtEC0Xljw9U7klA9F1cUiv6Gx4= Received: from CH0PR13MB5084.namprd13.prod.outlook.com (2603:10b6:610:111::7) by DM6PR13MB3939.namprd13.prod.outlook.com (2603:10b6:5:2a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.7; Sat, 21 May 2022 19:49:43 +0000 Received: from CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::694a:6bf0:4537:f3e5]) by CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::694a:6bf0:4537:f3e5%6]) with mapi id 15.20.5293.011; Sat, 21 May 2022 19:49:43 +0000 From: Trond Myklebust To: "chuck.lever@oracle.com" CC: "linux-nfs@vger.kernel.org" , "linux@stwm.de" , "gregkh@linuxfoundation.org" , "jlayton@kernel.org" , "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" Subject: Re: 5.4.188 and later: massive performance regression with nfsd Thread-Topic: 5.4.188 and later: massive performance regression with nfsd Thread-Index: AQHYZR858YHu5BjXv06IiZjQIhNS6q0Zna2AgAAbcoCAAAIRgIAAA5uAgA41xoCAABHLAIAAVxQAgAAJEgCAABXyAIABJ+EAgAANngCAABEMgIAACpYA Date: Sat, 21 May 2022 19:49:43 +0000 Message-ID: <2117abef403c8b6e5e1672031bf8f36c8eafedc9.camel@hammerspace.com> References: <6A15DEE1-CAC9-4C64-8643-AD28EA423046@oracle.com> <0F5EA15D-08A0-4D3E-B5A9-D62C49BF2B56@oracle.com> <59118799-0148-41F3-BA03-BB69151B74EE@oracle.com> <1792eb49d2a9820bbcf7b240f53158170041da6d.camel@hammerspace.com> <3FE1F779-A2EC-4E23-BBCC-28C5E8AFCBB1@oracle.com> <1a38a01debc727a1e11243fd6207d915ac90c251.camel@hammerspace.com> <40D1CC9F-1DA7-4134-9DBD-0C0DFA16A361@oracle.com> <78739abdf5fe7aa0aab9b7f3c9d660010868b0f4.camel@hammerspace.com> <7831BCDD-00A9-42E7-A533-4D6AFA488AEF@oracle.com> In-Reply-To: <7831BCDD-00A9-42E7-A533-4D6AFA488AEF@oracle.com> Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=hammerspace.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d22dba76-3403-4959-792c-08da3b630d27 x-ms-traffictypediagnostic: DM6PR13MB3939:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: l+Eq2aBfnsy66jttK4GuRT96JGrllk5naAp7Gs0yVyXFKWJdg6zAIof8hn3KqU/jQGzGnNqFQ383Fya+KqLsL+Zd+TR5ltrWNBfQ+AeEXv0a2LDOehfq5bFiio582+z3Hm0xsQG9yuajwUYjXTHoU4YYo5aHjv4D6EcQHTWwTWvjlC3CQTdN44YTCa2Yzi+T8ej/JYlIiZxGIKxrniol4KZJALsAV3eVcX/OMJXWsJgTZ0LSNfqBcdSr3VBA+0wbr4c5mqQ1oOJ6voXRLRSu5kxdmo2ety63zcBM2sBq8M+2MrCxRljKymXD3DlIe2uHGAvUc6SUzJkDn134a/gU1Hll+E6UutsWmpytA6MX4Rce1Cq/tiGobmC2VvoKpNsgu5/c1fvl0l1pa/TDJPI5Xy2gKvM1g3ly2WN0DziGgBKqAzeFydHwuckkOobTo12sN5HV2cUd7HdvnohAtg2hS1cCL4jcMGztJAZX1kxVzSdCJW7iiFZ2bF1VnB9VNMHA08h12NVl+gw61QfoOEm3YyZiiC0DcXgIBKjacjULk2R5xPgVwJ1yxjPhD3aLT4CZnne9GYdC0rC9ccFcwuFOmAWRvNYh9NxOTEAdxMB/bdKJej0rhTPABPLo9SR9WeiCXWsNVvjxkX+ffG7Kprt13F4Z+HeF9t1rjhTF9tRnGLOySCu3VHxYTvalCOjv3DAhiaPMbzZFe5aOgFlK+kMVB6/hwRLX150WH0a0CKgzyaIxmKRHoAs7NVz3WLQog4DVx/nvvbxHM+eHohDzB++bAb5AKmPz1RB4gVcpHhehtjLPFa/58UiDTXRB0iahqkBf x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR13MB5084.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(122000001)(38070700005)(6486002)(966005)(508600001)(71200400001)(36756003)(5660300002)(8936002)(2616005)(6916009)(316002)(30864003)(6512007)(4326008)(76116006)(66946007)(66556008)(186003)(26005)(86362001)(54906003)(66446008)(8676002)(64756008)(66476007)(83380400001)(2906002)(6506007)(53546011)(38100700002)(14583001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OEVxMnJOSGRkVU1xOHVrczJlMVVvZTBnN2VuZXBGWVpTWkhxTGVET3FTeGl1?= =?utf-8?B?RmV6aGZZREJsdGY1djNjRzl1dUdEaUFkbVJtYzluR3ZHR2RaMXIzeFBwOWZw?= =?utf-8?B?MmpDcUgrNXFCUXVBT1puc3hLVzcrR1BHYVR0SW9VM1BtOENHRWQ3UDhaSXVj?= =?utf-8?B?bEFPYzZqdDRKSnZSZjh2MWY2cmlHRmtlaWR6bTJoNHN1M2JKSWRwQUF4WTFm?= =?utf-8?B?R2pFME5ZU3F3Ym9IeDZSMHJ1aXhiVG96WUZmUXBWbkhkVkR0ajFjaExTS2Rr?= =?utf-8?B?eFU4L0l2TjhIbTN4cFFFL3lxaWlodEl6MVFlZWxuSjZSZHhPaUIwS2NPbmtZ?= =?utf-8?B?ZDJjRVQzMlIzVkthTTBjblg5R0ZtOUF3aEFzK0VVazRJbFdvTThFbE94OS8r?= =?utf-8?B?c1BuMlVDZ01qY0lHN293ZGViazQ3R1pHcUVPZWtGdElySUE1dC9EcEU2M2V3?= =?utf-8?B?TzlFVGg4VWFLbEdRY09JVWNHN3BXcncvSDZ6bVpHUHF0bmd6d09kaGVjRXBn?= =?utf-8?B?cVVVcDFUYlZ3UCtMOS9NZndUV2QwLzAyVEw0ZTBUbGoxRmh3MURuclBFY0Rk?= =?utf-8?B?WHlJN2dHYmltMGNuNUNpY3Q3VnZUMVo5eFA4MkxPR3RubzgxL09TZXRtYTM4?= =?utf-8?B?N2lMRUh5QnNhMUVFVHE5NS9qS1V6cGpMUjZicG9iNi95SGhYcDlIdThzeXZy?= =?utf-8?B?bmdNUEpHSVNkNktrejJMUGlWWk03Z3BFMGtwTG1BNkdZQ3JDQjNycTd3K1Qx?= =?utf-8?B?WXUzWVZjTGRzYmxYMm1VVXlRRC9WeWhmYytXblhjU1RpLzBZTGtnc3FNWUhZ?= =?utf-8?B?VmJxOU1SeTZJQVNtOTN4Z3pwMk1sMnRsYUxrZUNkeFZ3Q3I2QnNPb3JDcFF6?= =?utf-8?B?QzhpOXhzanNXQ1VBeFJqSGFqWEQ0NkRab3l3UUFOOW4vWjBtL3hyVElQVHZQ?= =?utf-8?B?UkdVYWl3elBiQ3VXNHJpRE1UazI0ODN0UHNaRDBRNXpieE1sQXJyOTc3ZXcy?= =?utf-8?B?bU1hSExlU1ZZSWlvdnk5d3lqYUd5dEdlbkNOd2ozLzFVMkx3aU4rUG9iSzJ5?= =?utf-8?B?TThSUWJxZWVkMVg1UzlwRG90Vitrd29zZXdGWGFjdytRcS90UmIxZ1hqVkpx?= =?utf-8?B?YlFjRHFUeDM0dHJuNGU2TDJvK1poQzVKZXBTRGhwYk5VTmo4b05aUk16SjJn?= =?utf-8?B?aWpnaGJhaGdkZm5qM08zUVhYOUtkR0ZxN3c0dnBRVjZZQmw3MjU5QnBoblJ5?= =?utf-8?B?eGE3a3pmaHBhUDhmYzNrU1dhN0F0Ry91dGNXN2hWRFZFMVpPc1FzcVNQRU5L?= =?utf-8?B?cTAwSUQxcXF6bWpYaWc0QU5xN0I4UE91OGV3VE5zNmU0S2FCZHRHZU5zd09m?= =?utf-8?B?cXI1V1NiemIxZ3lkT1FybENGb29xbXNGT3Z6V2RuSmYxVHl2MThuZjVuOUt3?= =?utf-8?B?NURhcWVoZC9jcTE5bWNwWmdCQ2hLTm9iREVCOE9YMmlDbnMwelVGcEN6R05S?= =?utf-8?B?TTgyRnFFbUNYL1p6Ymd1UW1qdDFOQU9GNUMvVjVBU1lSVzcvRWJDV25NbkhJ?= =?utf-8?B?R2ZUelBoWjBOM3JiQzJ6SkwrVHVSc1VucjI2NXpZOUYyVlFQVGJueEgrQnNn?= =?utf-8?B?RVp6OUE5ZGo4cE5wcUk4UXNZdWNYMkd4TUJiVGJqNXRSVmJCSE5ENnJZTUh0?= =?utf-8?B?akxjU1BadTV3Q215T05PNW8xcnA4QTdXWlBiR1pZbWh6c2l2MHBiZTZTQjNZ?= =?utf-8?B?bFM3a3VWcllxT1AveW1rOUJVNEcwK0Uwbm9ETEpIc2gyaGZ6b3laOU1meE9Z?= =?utf-8?B?SGdtMTZXR2piVzNUcmtMZmh4YWc1SHVlNGhsVjJDbmxVV1o2VXQ1ZjJaRldO?= =?utf-8?B?M1ZnSWdXalljZEUvemo0OW1Ua3pucXo5SVNYMFlia1IxQ1pqOFcrbkd6UmI4?= =?utf-8?B?Y2k4SDJWNmpIRENwWXRRUWt0SjR1anRRaXRzamNZSTc3cUkvWG16MlpvVFlj?= =?utf-8?B?czZDeDdKQ1ZJNjlYRzB3d1JaWWpzZTJXWVRDeEFGQmVjaUpMRUxRUE0ycFp2?= =?utf-8?B?RnByL0RnNnBVZUdibGllUzFBc1FPSDV6YVExRk9qV1ZHclYzMUhlWUJPa2Ey?= =?utf-8?B?WVpBS3kzbjh0S0locjNrTTJCVXZSbUJ4SS8ydXBwdURMdGk0U000c0lqZmcv?= =?utf-8?B?OTJJaGljcGVEcWRzWUgwMHAwM1lkMGZkcDk3d0Nxb2NSVDFla2ZQUGxJYy9z?= =?utf-8?B?ZjBRbTRMeHEybFdDb2V6c1drMldlTEpyTkwxSzVNakw1M09PZjlNT0Z3cUcr?= =?utf-8?B?NDV4NnNhOW9xZzFWM2N4UUhHbHJyTDIzQXRXTXhYRTFoa2NybUpPZWdPaW5J?= =?utf-8?Q?ZPL+opmajL5HW/6c=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <248D2DA68CD3CF46A9F1DBDC1DF0F442@namprd13.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: hammerspace.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR13MB5084.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d22dba76-3403-4959-792c-08da3b630d27 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 May 2022 19:49:43.4682 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d4fed5c-3a70-46fe-9430-ece41741f59e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: R8bR02Sxx0cum98d/MP3f9kK6eTtXxMphMmE3XrEyw/0TyMksVmJfJ5f5uTchQXyMoLjL0e0KTM9V6js8Ct/Nw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB3939 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gU2F0LCAyMDIyLTA1LTIxIGF0IDE5OjExICswMDAwLCBDaHVjayBMZXZlciBJSUkgd3JvdGU6 DQo+IA0KPiANCj4gPiBPbiBNYXkgMjEsIDIwMjIsIGF0IDI6MTAgUE0sIFRyb25kIE15a2xlYnVz dA0KPiA+IDx0cm9uZG15QGhhbW1lcnNwYWNlLmNvbT4gd3JvdGU6DQo+ID4gDQo+ID4gT24gU2F0 LCAyMDIyLTA1LTIxIGF0IDE3OjIyICswMDAwLCBDaHVjayBMZXZlciBJSUkgd3JvdGU6DQo+ID4g PiANCj4gPiA+IA0KPiA+ID4gPiBPbiBNYXkgMjAsIDIwMjIsIGF0IDc6NDMgUE0sIENodWNrIExl dmVyIElJSQ0KPiA+ID4gPiA8Y2h1Y2subGV2ZXJAb3JhY2xlLmNvbT4gd3JvdGU6DQo+ID4gPiA+ IA0KPiA+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+ID4gT24gTWF5IDIwLCAyMDIyLCBhdCA2OjI0 IFBNLCBUcm9uZCBNeWtsZWJ1c3QNCj4gPiA+ID4gPiA8dHJvbmRteUBoYW1tZXJzcGFjZS5jb20+ IHdyb3RlOg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IE9uIEZyaSwgMjAyMi0wNS0yMCBhdCAyMTo1 MiArMDAwMCwgQ2h1Y2sgTGV2ZXIgSUlJIHdyb3RlOg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiA+ID4gT24gTWF5IDIwLCAyMDIyLCBhdCAxMjo0MCBQTSwgVHJvbmQgTXlr bGVidXN0DQo+ID4gPiA+ID4gPiA+IDx0cm9uZG15QGhhbW1lcnNwYWNlLmNvbT4gd3JvdGU6DQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBPbiBGcmksIDIwMjItMDUtMjAgYXQgMTU6MzYg KzAwMDAsIENodWNrIExldmVyIElJSSB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IE9uIE1heSAxMSwgMjAyMiwgYXQgMTA6MzYgQU0s IENodWNrIExldmVyIElJSQ0KPiA+ID4gPiA+ID4gPiA+ID4gPGNodWNrLmxldmVyQG9yYWNsZS5j b20+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBPbiBNYXkgMTEsIDIwMjIsIGF0IDEw OjIzIEFNLCBHcmVnIEtIDQo+ID4gPiA+ID4gPiA+ID4gPiA+IDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4g PiBPbiBXZWQsIE1heSAxMSwgMjAyMiBhdCAwMjoxNjoxOVBNICswMDAwLCBDaHVjaw0KPiA+ID4g PiA+ID4gPiA+ID4gPiBMZXZlcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBJSUkNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBPbiBNYXkgMTEsIDIwMjIsIGF0IDg6Mzgg QU0sIEdyZWcgS0gNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IE9uIFdlZCwgTWF5IDExLCAyMDIyIGF0IDEyOjAzOjEzUE0gKzAyMDAsDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBXb2xmZ2FuZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gV2Fs dGVyDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gSGksDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBzdGFydGluZyB3aXRoIDUuNC4xODggd2llIHNlZSBhIG1hc3NpdmUNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gcGVyZm9ybWFuY2UNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g cmVncmVzc2lvbiBvbiBvdXINCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbmZzLXNlcnZlci4g SXQgYmFzaWNhbGx5IGlzIHNlcnZpbmcgcmVxdWVzdHMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gdmVyeQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB2ZXJ5DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IHNsb3dseSB3aXRoIGNwdQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB1dGls aXphdGlvbiBvZiAxMDAlICh3aXRoIDUuNC4xODcgYW5kIGVhcmxpZXINCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gaXQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaXMNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gMTAlKSBzbw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGF0IGl0 IGlzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHVudXNhYmxlIGFzIGEgZmlsZXNlcnZlci4N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFRo ZSBjdWxwcml0IGFyZSBjb21taXRzIChvciBvbmUgb2YgaXQpOg0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYzMyZjEwNDEzODJhODhiMTdkYTU3 MzY4ODZkYTRhNDkyMzUzYTFiYg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAibmZzZDoNCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gY2xlYW51cA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBuZnNkX2ZpbGVfbHJ1X2Rpc3Bvc2UoKSINCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gNjI4 YWRmYTIxODE1Zjc0YzA0NzI0YWJjODU4NDdmMjRiNWRkMTY0NQ0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiAibmZzZDoNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQ29udGFpbmVyaXNlIGZp bGVjYWNoZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXVuZHJldHRlIg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKHVwc3RyZWFtDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDM2ZWJiZGI5NmI2OTRkZDljNmIyNWFkOThmMmJiZDI2 M2QwMjJiNjMgYW5kDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDk1NDJlNmE2NDNmYzY5ZDUy OGRmYjMzMDNmMTQ1NzE5YzYxZDMwNTApDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJZiBJIHJldmVydCB0aGVtIGluIHY1LjQuMTkyIHRoZSBr ZXJuZWwgd29ya3MNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYXMNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gYmVmb3JlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFuZA0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBwZXJmb3JtYW5jZSBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBvayBhZ2Fpbi4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IEkgZGlkIG5vdCB0cnkgdG8gcmV2ZXJ0IHRoZW0gb25lIGJ5IG9uZSBhcw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhbnkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g ZGlzcnVwdGlvbg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBvZiBvdXIgbmZzLXNlcnZlcg0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpcyBhIHNldmVyZSBwcm9ibGVtIGZvciB1cyBhbmQg SSdtIG5vdCBzdXJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGlmDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IHRoZXkgYXJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHJlbGF0ZWQu DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA1 LjEwIGFuZCA1LjE1IGJvdGggYWx3YXlzIHBlcmZvcm1lZCB2ZXJ5DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IGJhZGx5IG9uDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IG91cg0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBuZnMtDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNlcnZl ciBpbiBhDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNpbWlsYXIgd2F5IHNvIHdlIHdlcmUg c3R1Y2sgd2l0aCA1LjQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBJIG5vdyB0aGluayB0aGlzIGlzIGJlY2F1c2Ugb2YNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gMzZlYmJkYjk2YjY5NGRkOWM2YjI1YWQ5OGYyYmJkMjYzZDAyMmI2Mw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhbmQvb3INCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gOTU0MmU2YTY0M2ZjNjlkNTI4ZGZiMzMwM2YxNDU3MTljNjFkMzA1MA0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiB0aG91Z2gNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBkaWRuJ3QgdHJpZWQgdG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gcmV2ZXJ0IHRoZW0gaW4gNS4xNSB5ZXQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE9kZHMgYXJlIDUuMTgtcmM2IGlzIGFsc28gYSBwcm9i bGVtPw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFdlIGJl bGlldmUgdGhhdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IDZiOGE5NDMzMmVlNCAoIm5mc2Q6IEZpeCBhIHdyaXRlIHBlcmZvcm1hbmNlDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gcmVncmVzc2lvbiIpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gYWRkcmVzc2VzIHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLiBJdCB3 YXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBtZXJnZWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBp bnRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gNS4xOC0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBy Yy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEFuZCBpbnRvIDUu MTcuNCBpZiBzb21lb25lIHdhbnRzIHRvIHRyeSB0aGF0DQo+ID4gPiA+ID4gPiA+ID4gPiA+IHJl bGVhc2UuDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IEkgZG9uJ3QgaGF2 ZSBhIGxvdCBvZiB0aW1lIHRvIGJhY2twb3J0IHRoaXMgb25lDQo+ID4gPiA+ID4gPiA+ID4gPiBt eXNlbGYsDQo+ID4gPiA+ID4gPiA+ID4gPiBzbw0KPiA+ID4gPiA+ID4gPiA+ID4gSSB3ZWxjb21l IGFueW9uZSB3aG8gd2FudHMgdG8gYXBwbHkgdGhhdCBjb21taXQgdG8NCj4gPiA+ID4gPiA+ID4g PiA+IHRoZWlyDQo+ID4gPiA+ID4gPiA+ID4gPiBmYXZvcml0ZSBMVFMga2VybmVsIGFuZCB0ZXN0 IGl0IGZvciB1cy4NCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBJZiBzbywgSSdsbCBqdXN0IHdhaXQgZm9yIHRoZSBmaXggdG8g Z2V0IGludG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IExpbnVzJ3MNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IHRyZWUgYXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRoaXMgZG9lcw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gbm90IHNlZW0gdG8gYmUgYSBzdGFibGUtdHJlZS1vbmx5IGlz c3VlLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFVuZm9y dHVuYXRlbHkgSSd2ZSByZWNlaXZlZCBhIHJlY2VudCByZXBvcnQgdGhhdA0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGZpeA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IGludHJvZHVjZXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhICJzbGVlcCB3aGlsZSBz cGlubG9jayBpcyBoZWxkIiBmb3IgTkZTdjQuMCBpbg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHJh cmUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjYXNlcy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IEljaywgbm90IGdvb2QsIGFueSBwb3RlbnRpYWwgZml4ZXMgZm9y IHRoYXQ/DQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IE5vdCB5ZXQuIEkg d2FzIGF0IExTRiBsYXN0IHdlZWssIHNvIEkndmUganVzdCBzdGFydGVkDQo+ID4gPiA+ID4gPiA+ ID4gPiBkaWdnaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiBpbnRvIHRoaXMgb25lLiBJJ3ZlIGNvbmZp cm1lZCB0aGF0IHRoZSByZXBvcnQgaXMgYQ0KPiA+ID4gPiA+ID4gPiA+ID4gcmVhbA0KPiA+ID4g PiA+ID4gPiA+ID4gYnVnLA0KPiA+ID4gPiA+ID4gPiA+ID4gYnV0IHdlIHN0aWxsIGRvbid0IGtu b3cgaG93IGhhcmQgaXQgaXMgdG8gaGl0IGl0IHdpdGgNCj4gPiA+ID4gPiA+ID4gPiA+IHJlYWwN Cj4gPiA+ID4gPiA+ID4gPiA+IHdvcmtsb2Fkcy4NCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+ID4gPiBXZSBiZWxpZXZlIHRoZSBmb2xsb3dpbmcsIHdoaWNoIHNob3VsZCBiZSBwYXJ0IG9m IHRoZQ0KPiA+ID4gPiA+ID4gPiA+IGZpcnN0DQo+ID4gPiA+ID4gPiA+ID4gTkZTRCBwdWxsIHJl cXVlc3QgZm9yIDUuMTksIHdpbGwgcHJvcGVybHkgYWRkcmVzcyB0aGUNCj4gPiA+ID4gPiA+ID4g PiBzcGxhdC4NCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiBodHRwczovL2dpdC5r ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jZWwvbGludXguZ2l0L2NvbW1pdC8/ aD1mb3ItbmV4dCZpZD01NTYwODJmNWU1ZDdlY2ZkMGVlNDVjMzY0MWUyYjM2NGJmZjllZTQ0DQo+ ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IFVoLi4uIFdo YXQgaGFwcGVucyBpZiB5b3UgaGF2ZSAyIHNpbXVsdGFuZW91cyBjYWxscyB0bw0KPiA+ID4gPiA+ ID4gPiBuZnNkNF9yZWxlYXNlX2xvY2tvd25lcigpIGZvciB0aGUgc2FtZSBmaWxlPyBpLmUuIDIN Cj4gPiA+ID4gPiA+ID4gc2VwYXJhdGUNCj4gPiA+ID4gPiA+ID4gcHJvY2Vzc2VzDQo+ID4gPiA+ ID4gPiA+IG93bmVkIGJ5IHRoZSBzYW1lIHVzZXIsIGJvdGggbG9ja2luZyB0aGUgc2FtZSBmaWxl Lg0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gQ2FuJ3QgdGhhdCBjYXVzZSB0aGUgJ3B1 dGxpc3QnIHRvIGdldCBjb3JydXB0ZWQgd2hlbiBib3RoDQo+ID4gPiA+ID4gPiA+IGNhbGxlcnMN Cj4gPiA+ID4gPiA+ID4gYWRkDQo+ID4gPiA+ID4gPiA+IHRoZSBzYW1lIG5mLT5uZl9wdXRmaWxl IHRvIHR3byBzZXBhcmF0ZSBsaXN0cz8NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gSUlVQywg Y2xfbG9jayBzZXJpYWxpemVzIHRoZSB0d28gUkVMRUFTRV9MT0NLT1dORVIgY2FsbHMuDQo+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+IFRoZSBmaXJzdCBjYWxsIGZpbmRzIHRoZSBsb2Nrb3duZXIg aW4gY2xfb3duZXJzdHJfaGFzaHRibA0KPiA+ID4gPiA+ID4gYW5kDQo+ID4gPiA+ID4gPiB1bmhh c2hlcyBpdCBiZWZvcmUgcmVsZWFzaW5nIGNsX2xvY2suDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+IFRoZW4gdGhlIHNlY29uZCBjYW5ub3QgZmluZCB0aGF0IGxvY2tvd25lciwgdGh1cyBpdCBj YW4ndA0KPiA+ID4gPiA+ID4gcmVxdWV1ZSBpdCBmb3IgYnVsa19wdXQuDQo+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQo+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gSW4gdGhlIGV4YW1wbGUgSSBxdW90ZWQsIHRoZXJlIGFyZSAyIHNlcGFyYXRlIHByb2Nlc3Nl cw0KPiA+ID4gPiA+IHJ1bm5pbmcNCj4gPiA+ID4gPiBvbiB0aGUNCj4gPiA+ID4gPiBjbGllbnQu IFRob3NlIHByb2Nlc3NlcyBjb3VsZCBzaGFyZSB0aGUgc2FtZSBvcGVuIG93bmVyICsNCj4gPiA+ ID4gPiBvcGVuDQo+ID4gPiA+ID4gc3RhdGVpZCwNCj4gPiA+ID4gPiBhbmQgaGVuY2UgdGhlIHNh bWUgc3RydWN0IG5mczRfZmlsZSwgc2luY2UgdGhhdCBkZXBlbmRzIG9ubHkNCj4gPiA+ID4gPiBv bg0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+IHByb2Nlc3MgY3JlZGVudGlhbHMgbWF0Y2hpbmcu IEhvd2V2ZXIgdGhleSB3aWxsIG5vdCBub3JtYWxseQ0KPiA+ID4gPiA+IHNoYXJlIGENCj4gPiA+ ID4gPiBsb2NrIG93bmVyLCBzaW5jZSBQT1NJWCBkb2VzIG5vdCBleHBlY3QgZGlmZmVyZW50IHBy b2Nlc3Nlcw0KPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gc2hhcmUNCj4gPiA+ID4gPiBsb2Nrcy4N Cj4gPiA+ID4gPiANCj4gPiA+ID4gPiBJT1c6IFRoZSBwb2ludCBpcyB0aGF0IG9uZSBjYW4gcmVs YXRpdmVseSBlYXNpbHkgY3JlYXRlIDINCj4gPiA+ID4gPiBkaWZmZXJlbnQNCj4gPiA+ID4gPiBs b2NrIG93bmVycyB3aXRoIGRpZmZlcmVudCBsb2NrIHN0YXRlaWRzIHRoYXQgc2hhcmUgdGhlIHNh bWUNCj4gPiA+ID4gPiB1bmRlcmx5aW5nDQo+ID4gPiA+ID4gc3RydWN0IG5mczRfZmlsZS4NCj4g PiA+ID4gDQo+ID4gPiA+IElzIHRoZXJlIGEgc2ltaWxhciBleHBvc3VyZSBpZiB0d28gZGlmZmVy ZW50IGNsaWVudHMgYXJlDQo+ID4gPiA+IGxvY2tpbmcNCj4gPiA+ID4gdGhlIHNhbWUgZmlsZT8g SWYgc28sIHRoZW4gd2UgY2FuJ3QgdXNlIGEgcGVyLW5mczRfY2xpZW50DQo+ID4gPiA+IHNlbWFw aG9yZQ0KPiA+ID4gPiB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHRoZSBuZl9wdXRmaWxlIGZpZWxk Lg0KPiA+ID4gDQo+ID4gPiBJIGhhZCBhIHRob3VnaHQgYWJvdXQgYW4gYWx0ZXJuYXRlIGFwcHJv YWNoLg0KPiA+ID4gDQo+ID4gPiBDcmVhdGUgYSBzZWNvbmQgbmZzZF9maWxlX3B1dCBBUEkgdGhh dCBpcyBub3QgYWxsb3dlZCB0byBzbGVlcC4NCj4gPiA+IExldCdzIGNhbGwgaXQgIm5mc2RfZmls ZV9wdXRfYXN5bmMoKSIuIFRlYWNoIGNoZWNrX2Zvcl9sb2NrZWQoKQ0KPiA+ID4gdG8gdXNlIHRo YXQgaW5zdGVhZCBvZiBuZnNkX2ZpbGVfcHV0KCkuDQo+ID4gPiANCj4gPiA+IEhlcmUncyB3aGVy ZSBJJ20gYSBsaXR0bGUgZnV6enk6IG5mc2RfZmlsZV9wdXRfYXN5bmMoKSBjb3VsZCBkbw0KPiA+ ID4gc29tZXRoaW5nIGxpa2U6DQo+ID4gPiANCj4gPiA+IHZvaWQgbmZzZF9maWxlX3B1dF9hc3lu YyhzdHJ1Y3QgbmZzZF9maWxlICpuZikNCj4gPiA+IHsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgIGlm IChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJm5mLT5uZl9yZWYpKQ0KPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG5mc2RfZmlsZV9jbG9zZV9pbm9kZShuZi0+bmZfaW5vZGUpOw0K PiA+ID4gfQ0KPiA+ID4gDQo+ID4gPiANCj4gPiANCj4gPiBUaGF0IGFwcHJvYWNoIG1vdmVzIHRo ZSBzeW5jIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rvciwgd2hpY2ggd2FzDQo+ID4gZXhhY3RseSB3 aGF0IHdlJ3JlIHRyeWluZyB0byBhdm9pZCBpbiB0aGUgZmlyc3QgcGxhY2UuDQo+IA0KPiBUb3Rh bGx5IHVuZGVyc3Rvb2QuDQo+IA0KPiBNeSB0aG91Z2h0IHdhcyB0aGF0ICJwdXQiIGZvciBSRUxF QVNFX0xPQ0tPV05FUi9GUkVFX1NUQVRFSUQNCj4gd291bGQgYmUgdW5saWtlbHkgdG8gaGF2ZSBh bnkgZGF0YSB0byBzeW5jIC0tIGNhbGxlcnMgdGhhdA0KPiBhY3R1YWxseSBoYXZlIGRhdGEgdG8g Zmx1c2ggYXJlIGVsc2V3aGVyZSwgYW5kIHRob3NlIHdvdWxkDQo+IGNvbnRpbnVlIHRvIHVzZSB0 aGUgc3luY2hyb25vdXMgbmZzZF9maWxlX3B1dCgpIEFQSS4NCj4gDQo+IERvIHlvdSBoYXZlIGEg d29ya2xvYWQgd2hlcmUgd2UgY2FuIHRlc3QgdGhpcyBhc3N1bXB0aW9uPw0KPiANCj4gDQo+ID4g V2h5IG5vdCBqdXN0IGRvIHRoaXMgImNoZWNrX2Zvcl9sb2NrcygpIiB0aGluZyBkaWZmZXJlbnRs eT8NCj4gPiANCj4gPiBJdCByZWFsbHkgc2hvdWxkbid0IGJlIHRvbyBoYXJkIHRvIGFkZCBzb21l dGhpbmcgdG8NCj4gPiBuZnNkNF9sbV9nZXRfb3duZXIoKS9uZnNkNF9sbV9wdXRfb3duZXIoKSB0 aGF0IGJ1bXBzIGEgY291bnRlciBpbg0KPiA+IHRoZQ0KPiA+IGxvY2tvd25lciBpbiBvcmRlciB0 byB0ZWxsIHlvdSB3aGV0aGVyIG9yIG5vdCBsb2NrcyBhcmUgc3RpbGwgaGVsZA0KPiA+IGluc3Rl YWQgb2YgZG9pbmcgdGhpcyBib25lIGhlYWRlZCB3YWxrIHRocm91Z2ggdGhlIGxpc3Qgb2YgbG9j a3MuDQo+IA0KPiBJIHRob3VnaHQgb2YgdGhhdCBhIGNvdXBsZSB3ZWVrcyBhZ28uIFRoYXQgZG9l c24ndCB3b3JrDQo+IGJlY2F1c2UgeW91IGNhbiBsb2NrIG9yIHVubG9jayBieSByYW5nZS4gVGhh dCBtZWFucyB0aGUNCj4gc3ltbWV0cnkgb2YgTE9DSyBhbmQgTE9DS1UgaXMgbm90IGd1YXJhbnRl ZWQsIGFuZCBJIGRvbid0DQo+IGJlbGlldmUgdGhlc2UgY2FsbHMgYXJlIHVzZWQgdGhhdCB3YXkg YW55d2F5LiBTbyBJDQo+IGFiYW5kb25lZCB0aGUgaWRlYSBvZiB1c2luZyBnZXRfb3duZXIgLyBw dXRfb3duZXIuDQo+IA0KDQpUaGVuIHlvdSdyZSBtaXN1bmRlcnN0YW5kaW5nIGhvdyBpdCB3b3Jr cy4gbG1fZ2V0X293bmVyKCkgaXMgY2FsbGVkDQp3aGVuIGEgbG9jayBpcyBpbml0aWFsaXNlZCBm cm9tIGFub3RoZXIgb25lLiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8NCmVuc3VyZSB0aGF0IGVhY2gg YW5kIGV2ZXJ5IG9iamVjdCByZXByZXNlbnRpbmcgYSByYW5nZSBsb2NrIG9uIHRoZQ0KaW5vZGUn cyBsaXN0IG1haW50YWlucyBpdHMgb3duIHByaXZhdGUgcmVmZXJlbmNlIHRvIHRoZSBrbmZzZCBs b2Nrb3duZXINCihpLmUuIHRoZSBmbC0+Zmxfb3duZXIpLg0KDQpGb3IgaW5zdGFuY2Ugd2hlbiBh IExPQ0sgY2FsbCBjYWxscyBwb3NpeF9sb2NrX2lub2RlKCksIHRoZW4gdGhhdA0KZnVuY3Rpb24g dXNlcyBsb2Nrc19jb3B5X2NvbmZsb2NrKCkgKHdoaWNoIGNhbGxzIGxtX2dldF9vd25lcikgdG8N CmluaXRpYWxpc2UgdGhlIHJhbmdlIGxvY2sgb2JqZWN0IHRoYXQgaXMgYmVpbmcgcHV0IG9uIHRo ZSBpbm9kZSBsaXN0Lg0KSWYgdGhlIG5ldyBsb2NrIGNhdXNlcyBtdWx0aXBsZSBleGlzdGluZyBs b2NrcyB0byBiZSByZXBsYWNlZCwgdGhleSBhbGwNCmNhbGwgbG1fcHV0X293bmVyIHRvIHJlbGVh c2UgdGhlaXIgcmVmZXJlbmNlcyB0byBmbC0+Zmxfb3duZXIgYXMgcGFydA0Kb2YgdGhlIHByb2Nl c3Mgb2YgYmVpbmcgZnJlZWQuDQoNCkNvbnZlcnNlbHksIHdoZW4gTE9DS1UgY2F1c2VzIGEgcmFu Z2UgdG8gZ2V0IHNwbGl0LCB0aGUgdHdvIGxvY2tzIHRoYXQNCnJlcGxhY2UgdGhlIG9sZCBvbmUg YXJlIGJvdGggaW5pdGlhbGlzZWQgdXNpbmcgbG9ja3NfY29weV9jb25mbG9jaygpLA0Kc28gdGhl eSBib3RoIGNhbGwgbG1fZ2V0X293bmVyLiBUaGUgbG9jayB0aGF0IHJlcHJlc2VudHMgdGhlIHJh bmdlDQpiZWluZyByZXBsYWNlZCBpcyB0aGVuIG1hZGUgdG8gY2FsbCBsbV9wdXRfb3duZXIoKSB3 aGVuIGl0IGlzIGZyZWVkLg0KDQpldGMsIGV0Yy4uLg0KDQo+IEJ1dCBtYXliZSB3ZSBjYW4gcHJv dmlkZSBzb21lIG90aGVyIG1lY2hhbmlzbSB0byByZWNvcmQNCj4gd2hldGhlciBhIGxvY2tvd25l ciBpcyBhc3NvY2lhdGVkIHdpdGggZmlsZSBsb2Nrcy4NCj4gDQo+IA0KDQotLSANClRyb25kIE15 a2xlYnVzdA0KTGludXggTkZTIGNsaWVudCBtYWludGFpbmVyLCBIYW1tZXJzcGFjZQ0KdHJvbmQu bXlrbGVidXN0QGhhbW1lcnNwYWNlLmNvbQ0KDQoNCg==