From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C53AC4743C for ; Wed, 23 Jun 2021 13:45:07 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A2B7860720 for ; Wed, 23 Jun 2021 13:45:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A2B7860720 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 556FB6E8EB; Wed, 23 Jun 2021 13:45:00 +0000 (UTC) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2066.outbound.protection.outlook.com [40.107.237.66]) by gabe.freedesktop.org (Postfix) with ESMTPS id 980A56E8E3; Wed, 23 Jun 2021 13:44:58 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eQKuueSxNykalO8ZWOYl8kVxgN1kEvJ9SLqb46bNJrWSdCJrmpm24Jj1Cf3xzx9BsIPXxnx//FHTJHq/Scd/yYfxmTNXEkU2a1FDheyoEZm7Rtl4m89RCdXptKOscox5UlNbagvOie84390wXLf7ekOYV1oUNZCXoV0m33ZZlH83IvfhfTwZc6cCLKOeGdQKAKmaX+VLoaS01kFDkt3QJGD6GaAEbT43NoltE5zLocS46Id3OqbOu3lKmaCdDNZjTQSVjpyIwZh071Ey2GFj50fxMKi2P1uA53YJrbliANgMZbYz6n+xYd+fTQTsFkMfKMqH2hJEXckn+TkgdjR7qg== 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-SenderADCheck; bh=PTkoOBivQfvNAjKtkSD/Lji4kNo8/rWRMZi+Y8oL5ko=; b=bOfkDAY4AzFOKwJUNkw/Wm3I8qOPKr0UBgI5lo6UZ2vmszRBxGms66f1j8VUQba60o0NOL+X31GCwpp/fOvs4K6CSpqU8tK3iecyDPtPW9g7MDBUdxyvYuWYosJh/+9/nCfR5OaNK9uu2dsDqnkXsXty1RCxQjQiiwLT8gCBY2JJfzGXNbYehAZ2ft3M1iMN3yebYeq/OVI2ndSQzdSb3CpkRxD4oJ3JpOrmfyASrl+643bYYoFeGKVFbUgWAHdl74FiVr0+07raQkX0cbbDZSZE1X23aZ3z38Xsf+hukWqV6ifD9TGyQKPAAMFzqfjfrymdWTfNtnO6BtUW59F6ug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PTkoOBivQfvNAjKtkSD/Lji4kNo8/rWRMZi+Y8oL5ko=; b=hiouip++u9WypzR0a0kIuNnCAOURKX2wl3z7LyyHc7Dx2/LizF1GOlDqis/xr9n4YIr1IQH0c3cpceYvjOUdiRejbGd3nZMxDwiKX7eChmWTAzTnc4pwBz6NVKgpy4iq+xlIxFCXriAm5TN47QFkswmYhEFDIOdv59MIU3Ms3/A= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by MN2PR12MB4440.namprd12.prod.outlook.com (2603:10b6:208:26e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.19; Wed, 23 Jun 2021 13:44:56 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756%5]) with mapi id 15.20.4242.024; Wed, 23 Jun 2021 13:44:56 +0000 To: Bas Nieuwenhuizen References: <20210622165511.3169559-1-daniel.vetter@ffwll.ch> <20210622165511.3169559-16-daniel.vetter@ffwll.ch> <3bf45006-4256-763d-601b-3a25a7057820@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <421cb10d-92a7-0780-3d38-d4cabd008c0c@amd.com> Date: Wed, 23 Jun 2021 15:44:48 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:871f:87e2:f394:e667] X-ClientProxiedBy: PR0P264CA0280.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1::28) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:871f:87e2:f394:e667] (2a02:908:1252:fb60:871f:87e2:f394:e667) by PR0P264CA0280.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Wed, 23 Jun 2021 13:44:53 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4b2ff45a-813e-4872-d891-08d9364d15ef X-MS-TrafficTypeDiagnostic: MN2PR12MB4440: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5bpZZihSpZxXGsc7/hRHPOjHItC26w293DSs/ZCctxV7JuVIhVD74VprVpepMbzp0NSDN2AdBpVhP+ARr5KbbeUk8enkhM9MczhmNPl+U5r6eFGuElZPShzngEoE8OzTD20W0ixZvNz3z5X0wqokHHcuI/mif8Jh7UleqmW8i587bFND16XscBmrs/+qeHqeaJE3EvBuCBFjClDTZ7OsK014eZAJgDGK/dbpIblWBobZtI18SlQAkWYn7tRMvRUIVW5t8qEMNoimhteY2XBZ19TSz19ezwChKsRCwcCgOmblsJWL0P0SFhYZXEgiq9xYnAUxnnebNITaAqc+yYH7xuwaKy3mLUq4JnamVhjblsF85zxeAYG6lOGbSwQD2vux2xmn2InZj05SR3JWLe8Y23ZyFOSALBeuHflfJD60jZCpZC/HyjG0nEAVbly/quaGOWlVeEJDG/omf20iYADY2a1H6292JEuRKx9Ulwi1VigVAqTcVAdULu+DYQFhU7dF2CF1qk4awTRKDeIMH6s0dzr+fghbESO0Q2UzgGbPhL967tW5jlSpAh0rECQKWqYI8wFnl4HsKbCKK+G+qfenerJ6NdmQ/+b7PndcdQBFQlTn0bd9EJ+3Bafa9DOJlggxwlbAqEFu5FpmEY+/RPSBwQyD7Z2Pe/bDiTJMn8MLzT7RpQmdLCyAQeluOLHOmRwDVe2+7FKN1fm1oBMid+/zKYOwBpuPg0Z2zGYI+yNuodegi5tWFxYKJbs8S3wfsnI1CvK23u56SDZ39mTZLlNLRsv2yXD5U8qEb0xUF184jhVgKX86vY4nD92PetBNv39wL31WJ7vfm+xCrg16fyew++bVn4fkWCzAuPqG+UKB7Cg4fXilSsoRGczL+TROSPEpuhpm9eVAkkrR5PBjpYivEw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(39860400002)(136003)(376002)(346002)(366004)(45080400002)(478600001)(6916009)(66476007)(66946007)(66556008)(966005)(30864003)(31686004)(54906003)(83380400001)(66574015)(36756003)(316002)(7416002)(5660300002)(38100700002)(31696002)(86362001)(186003)(53546011)(16526019)(2616005)(2906002)(8936002)(6666004)(8676002)(6486002)(4326008)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MlZLZ01FQlJycUNCNk9BWG51OXlKd1Q1OG5XMUZCTnF2TkVNVFNjV2xHbXc0?= =?utf-8?B?ZSttenNrbm9hMWp5TE1mL1ZGQVlMTTBCOVdoVDlVa0s4QlQ1VEo2RE0vdnlX?= =?utf-8?B?Vm5BQ3ZiTmhEQlVORDhMT2lDODNqc1JxcTBZaHpja3RkK0pRakNNclNyb05n?= =?utf-8?B?WC9JNFRhTElxS216QktRYzBScFArUVFJTGE3NERaSXQ3cUdFOGE5akFUamFB?= =?utf-8?B?SjhEOXdIeXI4dXNZRzh5cmZuSDhza1hBQWR3dnVPOGJ3STBzcDNmeU9xN3g5?= =?utf-8?B?eTVtdWpBek5IZ2dmREZLWElsSWszY2RZdUFvU05XVDdXK1BkT0JQRFFKV0h1?= =?utf-8?B?VFZyTlVPc00zYkRmNVFXcmFheVBJMUx2QXpqRm5qclBLVGx3allwL2lDZUlx?= =?utf-8?B?RExyNFpoOXJEUTBUaUNPdndPSTllOEhpbUZlc2I4R084d0wyNStHQzBkZzd3?= =?utf-8?B?eTRxV3lobVIwYzlTWFJZNGRrdjZuRnpCWkR3WnZwOGlNL2lPZ0lta05wNFhz?= =?utf-8?B?Qnd2ZE9BNlkyeGtEcEhxS0dmMTFxK2xsbzdHeDJzT1o2OUMxUzNhSGdvSEJ0?= =?utf-8?B?elRRRFdWemZneERoNytndWdueUdLS3FoTGZZM0hnUWt2OU5WdzIxd0hSWkZi?= =?utf-8?B?UDVxMExLZWRHTko2c3F1OHNGVkdRQUFTWlJTcDN2QlFkSGxPS1JWcndjc2Vv?= =?utf-8?B?bVdLT3lINFZzQnN3V2VnM3JkZXdDc1VvVWU3M2Q4Q0VGaStwbzBkaTkzelJY?= =?utf-8?B?YWIyTnJPRkFSdU1GaUpLMDMvUVV5WVh3SnJZMHdjSHNWK21Qa0dEeFQvUDlV?= =?utf-8?B?SGFGZC9PWVo3NWVHazE5VnE0UklYd3dzdS9HZnRBTGhrMjhVK2NmaVp4dld4?= =?utf-8?B?R1ZmVjFzL2tuOFhYOERTWlM3YTNrNU55Vnl2eXNRcStPV0Z5Vm01RVVTZU1G?= =?utf-8?B?cUh0cVUvcit5WFc3ZjkwTXFZR1FqbWhJN2ZCVzAwSGZUT3FEQ1d5R2JzeG1y?= =?utf-8?B?M3M0R1hieW9CUS9oTm0xdm9TbGZ1eFBXNndaZFhPZWFUajl2bytXSGw4SWFJ?= =?utf-8?B?czBEcE00ZStZTnBUNHUvWkFKR0xwS3lCZ2FFS0d5UWpOWHMxMnFLVWlhbkFx?= =?utf-8?B?YnJlQjNuM3NjclFZNTB4TE85ejZYY0RMR2RkZms4SHgydTgxYnpEckkyRjJ5?= =?utf-8?B?Z2tJcHZiblZuUnpkQjdoc1FURFA3bGRUNk5GcWtVclZzOUZWK1hWd0d4alFK?= =?utf-8?B?dnlHVERYK3FVcHNscmNjOWNTcldtUGpsdXhtbzEweWc1MkhDeGM2cDhkd3JN?= =?utf-8?B?ZlZlNkN1bjFOOGw5MVJiYnE5TWd5MXkxdFcxeTZhZFpLc2kwYVZOMlFWMnFj?= =?utf-8?B?ak82U0RtQ05GaW83Ylp1N1RhaG9nUmpwK3Q2VVFRTGxiUVVQeDhFc3hGUnNt?= =?utf-8?B?ZDR6T05jbWpHUzhQWldFSjBacWluWGlENDhqUFp3VXN1Z3dFRTRubWxWcjd4?= =?utf-8?B?ZFBTMDliVHZsZE9Yem1JMjlYY29Idm9GMGErSzVtTUp0MmR4MzJUU25EcEFo?= =?utf-8?B?bnZwYzhqMW0wZTltT1hMeC94dlluZndaSmV1WUk5SzkrQjdNTnU2aGdXR2ln?= =?utf-8?B?VmdMdUtnRG5MM3NLMVhGS3R6USs3MGRwWG5nK0E3ZFJkVkoyam5waXZQdGwy?= =?utf-8?B?T3RYNXNWVk9hdUxKbmV3MlRlVDFaVm12Wk45Z2d1VW05SnhwOEZQdlIxN2Zi?= =?utf-8?B?N2t2K1BKSis4eGJFdllDUk90NzB6VU9lcnNBTzE5SXBFZWo0a1prekQreFZy?= =?utf-8?B?TnFXODhqNm1ydXNQc3JMdzJwT2FvSlVqTythT3JGSEdmOCtmK2RXdmdnRmh0?= =?utf-8?Q?lcaEs8tuf+3VX?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b2ff45a-813e-4872-d891-08d9364d15ef X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2021 13:44:56.1895 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: C9Dod5at7AGAYimwvik6fw2obQ8L1MnQGS91edbSCLH6gYnAe2kz773VKloo+CHU X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4440 Subject: Re: [Intel-gfx] [PATCH 15/15] RFC: drm/amdgpu: Implement a proper implicit fencing uapi X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , Daniel Stone , Daniel Vetter , Intel Graphics Development , Kevin Wang , DRI Development , Sumit Semwal , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Luben Tuikov , "Kristian H . Kristensen" , Chen Li , Daniel Vetter , Alex Deucher , mesa-dev , Dave Airlie , =?UTF-8?Q?Michel_D=c3=a4nzer?= , Dennis Li , Deepak R Varma Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QW0gMjMuMDYuMjEgdW0gMTU6Mzggc2NocmllYiBCYXMgTmlldXdlbmh1aXplbjoKPiBPbiBXZWQs IEp1biAyMywgMjAyMSBhdCAyOjU5IFBNIENocmlzdGlhbiBLw7ZuaWcKPiA8Y2hyaXN0aWFuLmtv ZW5pZ0BhbWQuY29tPiB3cm90ZToKPj4gQW0gMjMuMDYuMjEgdW0gMTQ6MTggc2NocmllYiBEYW5p ZWwgVmV0dGVyOgo+Pj4gT24gV2VkLCBKdW4gMjMsIDIwMjEgYXQgMTE6NDUgQU0gQmFzIE5pZXV3 ZW5odWl6ZW4KPj4+IDxiYXNAYmFzbmlldXdlbmh1aXplbi5ubD4gd3JvdGU6Cj4+Pj4gT24gVHVl LCBKdW4gMjIsIDIwMjEgYXQgNjo1NSBQTSBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZm d2xsLmNoPiB3cm90ZToKPj4+Pj4gV0FSTklORzogQWJzb2x1dGVseSB1bnRlc3RlZCBiZXlvbmQg ImdjYyBpc24ndCBkeWluZyBpbiBhZ29ueSIuCj4+Pj4+Cj4+Pj4+IEltcGxpY2l0IGZlbmNpbmcg ZG9uZSBwcm9wZXJseSBuZWVkcyB0byB0cmVhdCB0aGUgaW1wbGljaXQgZmVuY2luZwo+Pj4+PiBz bG90cyBsaWtlIGEgZnVubnkga2luZCBvZiBJUEMgbWFpbGJveC4gSW4gb3RoZXIgd29yZHMgaXQg bmVlZHMgdG8gYmUKPj4+Pj4gZXhwbGljaXRseS4gVGhpcyBpcyB0aGUgb25seSB3YXkgaXQgd2ls bCBtZXNoIHdlbGwgd2l0aCBleHBsaWNpdAo+Pj4+PiBmZW5jaW5nIHVzZXJzcGFjZSBsaWtlIHZr LCBhbmQgaXQncyBhbHNvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8KPj4+Pj4gYmUgYWJs ZSB0byBtYW5hZ2UgYW55dGhpbmcgZWxzZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGUgc2FtZSBidWZm ZXIgb24KPj4+Pj4gbXVsdGlwbGUgZW5naW5lcyBpbiBwYXJhbGxlbCwgYW5kIHN0aWxsIGJlIGFi bGUgdG8gc2hhcmUgaXQgdGhyb3VnaAo+Pj4+PiBpbXBsaWNpdCBzeW5jLgo+Pj4+Pgo+Pj4+PiBh bWRncHUgY29tcGxldGVseSBsYWNrcyBzdWNoIGFuIHVhcGkuIEZpeCB0aGlzLgo+Pj4+Pgo+Pj4+ PiBMdWNraWx5IHRoZSBjb25jZXB0IG9mIGlnbm9yaW5nIGltcGxpY2l0IGZlbmNlcyBleGlzdHMg YWxyZWFkeSwgYW5kCj4+Pj4+IHRha2VzIGNhcmUgb2YgYWxsIHRoZSBjb21wbGV4aXRpZXMgb2Yg bWFraW5nIHN1cmUgdGhhdCBub24tb3B0aW9uYWwKPj4+Pj4gZmVuY2VzIChsaWtlIGJvIG1vdmVz KSBhcmUgbm90IGlnbm9yZWQuIFRoaXMgc3VwcG9ydCB3YXMgYWRkZWQgaW4KPj4+Pj4KPj4+Pj4g Y29tbWl0IDE3N2FlMDliNWQ2OTlhNWViZDFjYWZjZWU3ODg4OWRiOTY4YWJmNTQKPj4+Pj4gQXV0 aG9yOiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Cj4+Pj4+IERhdGU6ICAg RnJpIFNlcCAxNSAyMDo0NDowNiAyMDE3IC0wNDAwCj4+Pj4+Cj4+Pj4+ICAgICAgIGRybS9hbWRn cHU6IGludHJvZHVjZSBBTURHUFVfR0VNX0NSRUFURV9FWFBMSUNJVF9TWU5DIHYyCj4+Pj4+Cj4+ Pj4+IFVuZm9ydHVhbnRlbHkgaXQncyB0aGUgd3Jvbmcgc2VtYW50aWNzLCBiZWNhdXNlIGl0J3Mg YSBibyBmbGFnIGFuZAo+Pj4+PiBkaXNhYmxlcyBpbXBsaWNpdCBzeW5jIG9uIGFuIGFsbG9jYXRl ZCBidWZmZXIgY29tcGxldGVseS4KPj4+Pj4KPj4+Pj4gV2UgX2RvXyB3YW50IGltcGxpY2l0IHN5 bmMsIGJ1dCBjb250cm9sIGl0IGV4cGxpY2l0bHkuIEZvciB0aGlzIHdlCj4+Pj4+IG5lZWQgYSBm bGFnIG9uIHRoZSBkcm1fZmlsZSwgc28gdGhhdCBhIGdpdmVuIHVzZXJzcGFjZSAobGlrZSB2dWxr YW4pCj4+Pj4+IGNhbiBtYW5hZ2UgdGhlIGltcGxpY2l0IHN5bmMgc2xvdHMgZXhwbGljaXRseS4g VGhlIG90aGVyIHNpZGUgb2YgdGhlCj4+Pj4+IHBpcGVsaW5lIChjb21wb3NpdG9yLCBvdGhlciBw cm9jZXNzIG9yIGp1c3QgZGlmZmVyZW50IHN0YWdlIGluIGEgbWVkaWEKPj4+Pj4gcGlwZWxpbmUg aW4gdGhlIHNhbWUgcHJvY2VzcykgY2FuIHRoZW4gZWl0aGVyIGRvIHRoZSBzYW1lLCBvciBmdWxs eQo+Pj4+PiBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW1wbGljaXQgc3luYyBhcyBpbXBsZW1lbnRlZCBi eSB0aGUga2VybmVsIGJ5Cj4+Pj4+IGRlZmF1bHQuCj4+Pj4+Cj4+Pj4+IEJ5IGJ1aWxkaW5nIG9u IHRoZSBleGlzdGluZyBmbGFnIGZvciBidWZmZXJzIHdlIGF2b2lkIGFueSBpc3N1ZXMgd2l0aAo+ Pj4+PiBvcGVuaW5nIHVwIGFkZGl0aW9uYWwgc2VjdXJpdHkgY29uY2VybnMgLSBhbnl0aGluZyB0 aGlzIG5ldyBmbGFnIGhlcmUKPj4+Pj4gYWxsb3dzIGlzIGFscmVhZHkuCj4+Pj4+Cj4+Pj4+IEFs bCBkcml2ZXJzIHdoaWNoIHN1cHBvcnRzIHRoaXMgY29uY2VwdCBvZiBhIHVzZXJzcGFjZS1zcGVj aWZpYwo+Pj4+PiBvcHQtb3V0IG9mIGltcGxpY2l0IHN5bmMgaGF2ZSBhIGZsYWcgaW4gdGhlaXIg Q1MgaW9jdGwsIGJ1dCBpbiByZWFsaXR5Cj4+Pj4+IHRoYXQgdHVybmVkIG91dCB0byBiZSBhIGJp dCB0b28gaW5mbGV4aWJsZS4gU2VlIHRoZSBkaXNjdXNzaW9uIGJlbG93LAo+Pj4+PiBsZXQncyB0 cnkgdG8gZG8gYSBiaXQgYmV0dGVyIGZvciBhbWRncHUuCj4+Pj4+Cj4+Pj4+IFRoaXMgYWxvbmUg b25seSBhbGxvd3MgdXMgdG8gY29tcGxldGVseSBhdm9pZCBhbnkgc3RhbGxzIGR1ZSB0bwo+Pj4+ PiBpbXBsaWNpdCBzeW5jLCBpdCBkb2VzIG5vdCB5ZXQgYWxsb3cgdXMgdG8gdXNlIGltcGxpY2l0 IHN5bmMgYXMgYQo+Pj4+PiBzdHJhbmdlIGZvcm0gb2YgSVBDIGZvciBzeW5jX2ZpbGUuCj4+Pj4+ Cj4+Pj4+IEZvciB0aGF0IHdlIG5lZWQgdHdvIG1vcmUgcGllY2VzOgo+Pj4+Pgo+Pj4+PiAtIGEg d2F5IHRvIGdldCB0aGUgY3VycmVudCBpbXBsaWNpdCBzeW5jIGZlbmNlcyBvdXQgb2YgYSBidWZm ZXIuIENvdWxkCj4+Pj4+ICAgICBiZSBkb25lIGluIGEgZHJpdmVyIGlvY3RsLCBidXQgZXZlcnlv bmUgbmVlZHMgdGhpcywgYW5kIGdlbmVyYWxseSBhCj4+Pj4+ICAgICBkbWEtYnVmIGlzIGludm9s dmVkIGFueXdheSB0byBlc3RhYmxpc2ggdGhlIHNoYXJpbmcuIFNvIGFuIGlvY3RsIG9uCj4+Pj4+ ICAgICB0aGUgZG1hLWJ1ZiBtYWtlcyBhIHRvbiBtb3JlIHNlbnNlOgo+Pj4+Pgo+Pj4+PiAgICAg aHR0cHM6Ly9uYW0xMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBz JTNBJTJGJTJGbG9yZS5rZXJuZWwub3JnJTJGZHJpLWRldmVsJTJGMjAyMTA1MjAxOTAwMDcuNTM0 MDQ2LTQtamFzb24lNDBqbGVrc3RyYW5kLm5ldCUyRiZhbXA7ZGF0YT0wNCU3QzAxJTdDY2hyaXN0 aWFuLmtvZW5pZyU0MGFtZC5jb20lN0NhNDAxZmM0NTUxZjA0NWM5NWQ4ODA4ZDkzNjRjMzhmNiU3 QzNkZDg5NjFmZTQ4ODRlNjA4ZTExYTgyZDk5NGUxODNkJTdDMCU3QzAlN0M2Mzc2MDA1MjMyODcy MTc3MjMlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKV0lqb2lNQzR3TGpBd01EQWlMQ0pRSWpv aVYybHVNeklpTENKQlRpSTZJazFoYVd3aUxDSlhWQ0k2TW4wJTNEJTdDMTAwMCZhbXA7c2RhdGE9 TDhLQ3o4NzExWTJxWngwJTJGSldUNkhTZzRvNk9NaG4lMkJDNFUySVIwNm5WaUUlM0QmYW1wO3Jl c2VydmVkPTAKPj4+Pj4KPj4+Pj4gICAgIEN1cnJlbnQgZHJpdmVycyBpbiB1cHN0cmVhbSBzb2x2 ZXMgdGhpcyBieSBoYXZpbmcgdGhlIG9wdC1vdXQgZmxhZwo+Pj4+PiAgICAgb24gdGhlaXIgQ1Mg aW9jdGwuIFRoaXMgaGFzIHRoZSBkb3duc2lkZSB0aGF0IHZlcnkgb2Z0ZW4gdGhlIENTCj4+Pj4+ ICAgICB3aGljaCBtdXN0IGFjdHVhbGx5IHN0YWxsIGZvciB0aGUgaW1wbGljaXQgZmVuY2UgaXMg cnVuIGEgd2hpbGUKPj4+Pj4gICAgIGFmdGVyIHRoZSBpbXBsaWNpdCBmZW5jZSBwb2ludCB3YXMg bG9naWNhbGx5IHNhbXBsZWQgcGVyIHRoZSBhcGkKPj4+Pj4gICAgIHNwZWMgKHZrIHBhc3NlcyBh biBleHBsaWNpdCBzeW5jb2JqIGFyb3VuZCBmb3IgdGhhdCBhZmFpdWkpLCBhbmQgc28KPj4+Pj4g ICAgIHJlc3VsdHMgaW4gb3ZlcnN5bmMuIENvbnZlcnRpbmcgdGhlIGltcGxpY2l0IHN5bmMgZmVu Y2VzIGludG8gYQo+Pj4+PiAgICAgc25hcC1zaG90IHN5bmNfZmlsZSBpcyBhY3R1YWxseSBhY2N1 cmF0ZS4KPj4+Pj4KPj4+Pj4gLSBTaW1pbGxhciB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc2V0IHRo ZSBleGNsdXNpdmUgaW1wbGljaXQgZmVuY2UuCj4+Pj4+ICAgICBDdXJyZW50IGRyaXZlcnMgYWdh aW4gZG8gdGhpcyB3aXRoIGEgQ1MgaW9jdGwgZmxhZywgd2l0aCBhZ2FpbiB0aGUKPj4+Pj4gICAg IHNhbWUgcHJvYmxlbXMgdGhhdCB0aGUgdGltZSB0aGUgQ1MgaGFwcGVucyBhZGRpdGlvbmFsIGRl cGVuZGVuY2llcwo+Pj4+PiAgICAgaGF2ZSBiZWVuIGFkZGVkLiBBbiBleHBsaWNpdCBpb2N0bCB0 byBvbmx5IGluc2VydCBhIHN5bmNfZmlsZSAod2hpbGUKPj4+Pj4gICAgIHJlc3BlY3RpbmcgdGhl IHJ1bGVzIGZvciBob3cgZXhjbHVzaXZlIGFuZCBzaGFyZWQgZmVuY2Ugc2xvdHMgbXVzdAo+Pj4+ PiAgICAgYmUgdXBkYXRlIGluIHN0cnVjdCBkbWFfcmVzdikgaXMgbXVjaCBiZXR0ZXIuIFRoaXMg aXMgcHJvcG9zZWQgaGVyZToKPj4+Pj4KPj4+Pj4gICAgIGh0dHBzOi8vbmFtMTEuc2FmZWxpbmtz LnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxvcmUua2VybmVsLm9y ZyUyRmRyaS1kZXZlbCUyRjIwMjEwNTIwMTkwMDA3LjUzNDA0Ni01LWphc29uJTQwamxla3N0cmFu ZC5uZXQlMkYmYW1wO2RhdGE9MDQlN0MwMSU3Q2NocmlzdGlhbi5rb2VuaWclNDBhbWQuY29tJTdD YTQwMWZjNDU1MWYwNDVjOTVkODgwOGQ5MzY0YzM4ZjYlN0MzZGQ4OTYxZmU0ODg0ZTYwOGUxMWE4 MmQ5OTRlMTgzZCU3QzAlN0MwJTdDNjM3NjAwNTIzMjg3MjI3NzE5JTdDVW5rbm93biU3Q1RXRnBi R1pzYjNkOGV5SldJam9pTUM0d0xqQXdNREFpTENKUUlqb2lWMmx1TXpJaUxDSkJUaUk2SWsxaGFX d2lMQ0pYVkNJNk1uMCUzRCU3QzEwMDAmYW1wO3NkYXRhPThXcyUyQjU3M1Q1cmo5QnMwOCUyQlFC NUNiSUFzV2dvMzZoWWlIJTJGZDBkUGNKZWclM0QmYW1wO3Jlc2VydmVkPTAKPj4+Pj4KPj4+Pj4g VGhlc2UgdGhyZWUgcGllY2VzIHRvZ2V0aGVyIGFsbG93IHVzZXJzcGFjZSB0byBmdWxseSBjb250 cm9sIGltcGxpY2l0Cj4+Pj4+IGZlbmNpbmcgYW5kIHJlbW92ZSBhbGwgdW5lY2Vzc2FyeSBzdGFs bCBwb2ludHMgZHVlIHRvIHRoZW0uCj4+Pj4+Cj4+Pj4+IFdlbGwsIGFzIG11Y2ggYXMgdGhlIGlt cGxpY2l0IGZlbmNpbmcgbW9kZWwgZnVuZGFtZW50YWxseSBhbGxvd3M6Cj4+Pj4+IFRoZXJlIGlz IG9ubHkgb25lIHNldCBvZiBmZW5jZXMsIHlvdSBjYW4gb25seSBjaG9vc2UgdG8gc3luYyBhZ2Fp bnN0Cj4+Pj4+IG9ubHkgd3JpdGVycyAoZXhjbHVzaXZlIHNsb3QpLCBvciBldmVyeW9uZS4gSGVu Y2Ugc3ViYWxsb2NhdGluZwo+Pj4+PiBtdWx0aXBsZSBidWZmZXJzIG9yIGFueXRoaW5nIGVsc2Ug bGlrZSB0aGlzIGlzIGZ1bmRhbWVudGFsbHkgbm90Cj4+Pj4+IHBvc3NpYmxlLCBhbmQgY2FuIG9u bHkgYmUgZml4ZWQgYnkgYSBwcm9wZXIgZXhwbGljaXQgZmVuY2luZyBtb2RlbC4KPj4+Pj4KPj4+ Pj4gQXNpZGUgZnJvbSB0aGF0IGNhdmVhdCB0aGlzIG1vZGVsIGdldHMgaW1wbGljaXQgZmVuY2lu ZyBhcyBjbG9zZWx5IHRvCj4+Pj4+IGV4cGxpY2l0IGZlbmNpbmcgc2VtYW50aWNzIGFzIHBvc3Np YmxlOgo+Pj4+Pgo+Pj4+PiBPbiB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIEkgb3B0ZWQgZm9y IGEgc2ltcGxlIHNldHBhcmFtIGlvY3RsLCBubwo+Pj4+PiBsb2NraW5nIChqdXN0IGF0b21pYyBy ZWFkcy93cml0ZXMpIGZvciBzaW1wbGljaXR5LiBUaGVyZSBpcyBhIG5pY2UKPj4+Pj4gZmxhZyBw YXJhbWV0ZXIgaW4gdGhlIFZNIGlvY3RsIHdoaWNoIHdlIGNvdWxkIHVzZSwgZXhjZXB0Ogo+Pj4+ PiAtIGl0J3Mgbm90IGNoZWNrZWQsIHNvIHVzZXJzcGFjZSBsaWtlbHkgcGFzc2VzIGdhcmJhZ2UK Pj4+Pj4gLSB0aGVyZSdzIGFscmVhZHkgYSBjb21tZW50IHRoYXQgdXNlcnNwYWNlIF9kb2VzXyBw YXNzIGdhcmJhZ2UgaW4gdGhlCj4+Pj4+ICAgICBwcmlvcml0eSBmaWVsZAo+Pj4+PiBTbyB5ZWFo IHVuZm9ydHVuYXRlbHkgdGhpcyBmbGFnIHBhcmFtZXRlciBmb3Igc2V0dGluZyB2bSBmbGFncyBp cwo+Pj4+PiB1c2VsZXNzLCBhbmQgd2UgbmVlZCB0byBoYWNrIHVwIGEgbmV3IG9uZS4KPj4+Pj4K Pj4+Pj4gdjI6IEV4cGxhaW4gd2h5IGEgbmV3IFNFVFBBUkFNIChKYXNvbikKPj4+Pj4KPj4+Pj4g djM6IEJhcyBub3RpY2VkIEkgZm9yZ290IHRvIGhvb2sgdXAgdGhlIGRlcGVuZGVuY3ktc2lkZSBz aG9ydGN1dC4gV2UKPj4+Pj4gbmVlZCBib3RoLCBvciB0aGlzIGRvZXNuJ3QgZG8gbXVjaC4KPj4+ Pj4KPj4+Pj4gdjQ6IFJlYmFzZSBvdmVyIHRoZSBhbWRncHUgcGF0Y2ggdG8gYWx3YXlzIHNldCB0 aGUgaW1wbGljaXQgc3luYwo+Pj4+PiBmZW5jZXMuCj4+Pj4gU28gSSB0aGluayB0aGVyZSBpcyBz dGlsbCBhIGNhc2UgbWlzc2luZyBpbiB0aGlzIGltcGxlbWVudGF0aW9uLgo+Pj4+IENvbnNpZGVy IHRoZXNlIDMgY2FzZXMKPj4+Pgo+Pj4+IChmb3JtYXQ6IGEtPmI6IGIgd2FpdHMgb24gYS4gWWVz LCBJIGtub3cgYXJyb3dzIGFyZSBoYXJkKQo+Pj4+Cj4+Pj4gZXhwbGljaXQtPmV4cGxpY2l0OiBU aGlzIGRvZXNuJ3Qgd2FpdCBub3csIHdoaWNoIGlzIGdvb2QKPj4+PiBJbXBsaWNpdC0+ZXhwbGlj aXQ6IFRoaXMgZG9lc24ndCB3YWl0IG5vdywgd2hpY2ggaXMgZ29vZAo+Pj4+IGV4cGxpY2l0LT5p bXBsaWNpdCA6IFRoaXMgc3RpbGwgd2FpdHMgYXMgdGhlIGV4cGxpY2l0IHN1Ym1pc3Npb24gc3Rp bGwKPj4+PiBhZGRzIHNoYXJlZCBmZW5jZXMgYW5kIG1vc3QgdGhpbmdzIHRoYXQgc2V0IGFuIGV4 Y2x1c2l2ZSBmZW5jZSBmb3IKPj4+PiBpbXBsaWNpdCBzeW5jIHdpbGwgaGVuY2Ugd2FpdCBvbiBp dC4KPj4+Pgo+Pj4+IFRoaXMgaXMgcHJvYmFibHkgZ29vZCBlbm91Z2ggZm9yIHdoYXQgcmFkdiBu ZWVkcyBub3cgYnV0IGFsc28gc291bmRzCj4+Pj4gbGlrZSBhIHJpc2sgd3J0IGJha2luZyBpbiBu ZXcgdWFwaSBiZWhhdmlvciB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUKPj4+PiB0aGUgZW5kIHJl c3VsdC4KPj4+Pgo+Pj4+IFdpdGhpbiBBTURHUFUgdGhpcyBpcyBwcm9iYWJseSBzb2x2YWJsZSBp biB0d28gd2F5czoKPj4+Pgo+Pj4+IDEpIERvd25ncmFkZSBBTURHUFVfU1lOQ19ORV9PV05FUiB0 byBBTURHUFVfU1lOQ19FWFBMSUNJVCBmb3Igc2hhcmVkIGZlbmNlcy4KPj4+IEknbSBub3Qgc3Vy ZSB0aGF0IHdvcmtzLiBJIHRoaW5rIHRoZSByaWdodCBmaXggaXMgdGhhdCByYWRlb25zaSBhbHNv Cj4+PiBzd2l0Y2hlcyB0byB0aGlzIG1vZGVsLCB3aXRoIG1heWJlIGEgcGVyLWJvIENTIGZsYWcg dG8gc2V0IGluZGljYXRlCj4+PiB3cml0ZSBhY2Nlc3MsIHRvIGN1dCBkb3duIG9uIHRoZSBudW1i ZXIgb2YgaW9jdGxzIHRoYXQgYXJlIG5lZWRlZAo+Pj4gb3RoZXJ3aXNlIG9uIHNoYXJlZCBidWZm ZXJzLiBUaGlzIHBlci1ibyBmbGFnIHdvdWxkIGVzc2VudGlhbGx5IHNlbGVjdAo+Pj4gYmV0d2Vl biBTWU5DX05FX09XTkVSIGFuZCBTWU5DX0VYUExJQ0lUIG9uIGEgcGVyLWJ1ZmZlciBiYXNpcy4K Pj4gWWVhaCwgYnV0IEknbSBzdGlsbCBub3QgZW50aXJlbHkgc3VyZSB3aHkgdGhhdCBhcHByb2Fj aCBpc24ndCBzdWZmaWNpZW50Pwo+Pgo+PiBQcm9ibGVtIHdpdGggdGhlIHBlciBjb250ZXh0IG9y IHBlciB2bSBmbGFnIGlzIHRoYXQgeW91IHRoZW4gZG9uJ3QgZ2V0Cj4+IGFueSBpbXBsaWNpdCBz eW5jaHJvbml6YXRpb24gYW55IG1vcmUgd2hlbiBhbm90aGVyIHByb2Nlc3Mgc3RhcnRzIHVzaW5n Cj4+IHRoZSBidWZmZXIuCj4gVGhhdCBpcyBleGFjdGx5IHdoYXQgSSB3YW50IGZvciBWdWxrYW4g OikKClllYWgsIGJ1dCBhcyBmYXIgYXMgSSBrbm93IHRoaXMgaXMgbm90IHNvbWV0aGluZyB3ZSBj YW4gZG8uCgpTZWUgd2UgaGF2ZSB1c2UgY2FzZXMgbGlrZSBzY3JlZW4gY2FwdHVyZSBhbmQgZGVi dWcgd2hpY2ggcmVseSBvbiB0aGF0IApiZWhhdmlvci4KClRoZSBvbmx5IHRoaW5nIHdlIGNhbiBk byBpcyB0byBzYXkgb24gYSBwZXIgYnVmZmVyIGZsYWcgdGhhdCBhIGJ1ZmZlciAKc2hvdWxkIG5v dCBwYXJ0aWNpcGF0ZSBpbiBpbXBsaWNpdCBzeW5jIGF0IGFsbC4KClJlZ2FyZHMsCkNocmlzdGlh bi4KCj4+PiBUaGUgY3VycmVudCBhbWRncHUgdWFwaSBqdXN0IGRvZXNuJ3QgYWxsb3cgYW55IG90 aGVyIG1vZGVsIHdpdGhvdXQgYW4KPj4+IGV4cGxpY2l0IG9wdC1pbi4gU28gY3VycmVudCBpbXBs aWNpdCBzeW5jIHVzZXJzcGFjZSBqdXN0IGhhcyB0bwo+Pj4gb3ZlcnN5bmMsIHRoZXJlJ3Mgbm90 IG11Y2ggY2hvaWNlLgo+Pj4KPj4+PiAyKSBIYXZlIGFuIEVYUExJQ0lUIGZlbmNlIG93bmVyIHRo YXQgaXMgdXNlZCBmb3IgZXhwbGljaXQgc3VibWlzc2lvbnMKPj4+PiB0aGF0IGlzIGlnbm9yZWQg YnkgQU1ER1BVX1NZTkNfTkVfT1dORVIuCj4+Pj4KPj4+PiBCdXQgdGhpcyBkb2Vzbid0IHNvbHZl IGNyb3NzLWRyaXZlciBpbnRlcmFjdGlvbnMgaGVyZS4KPj4+IFllYWggY3Jvc3MtZHJpdmVyIGlz IHN0aWxsIGVudGlyZWx5IHVuc29sdmVkLCBiZWNhdXNlCj4+PiBhbWRncHVfYm9fZXhwbGljaXRf c3luYygpIG9uIHRoZSBibyBkaWRuJ3Qgc29sdmUgdGhhdCBlaXRoZXIuCj4+IEh1aT8gWW91IGhh dmUgbG9zdCBtZS4gV2h5IGlzIHRoYXQgc3RpbGwgdW5zb2x2ZWQ/Cj4gVGhlIHBhcnQgd2UncmUg dHJ5aW5nIHRvIHNvbHZlIHdpdGggdGhpcyBwYXRjaCBpcyBWdWxrYW4gc2hvdWxkIG5vdAo+IHBh cnRpY2lwYXRlIGluIGFueSBpbXBsaWNpdCBzeW5jIGF0IGFsbCB3cnQgc3VibWlzc2lvbnMgKGFu ZCB0aGVuCj4gaGFuZGxlIHRoZSBpbXBsaWNpdCBzeW5jIGZvciBXU0kgZXhwbGljaXRseSB1c2lu ZyB0aGUgZmVuY2UKPiBpbXBvcnQvZXhwb3J0IHN0dWZmIHRoYXQgSmFzb24gd3JvdGUpLiBBcyBs b25nIHdlIGFkZCBzaGFyZWQgZmVuY2VzIHRvCj4gdGhlIGRtYV9yZXN2IHdlIHBhcnRpY2lwYXRl IGluIGltcGxpY2l0IHN5bmMgKGF0IHRoZSBsZXZlbCBvZiBhbgo+IGltcGxpY2l0IHN5bmMgcmVh ZCkgc3RpbGwsIGF0IGxlYXN0IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGxhdGVyIGpvYnMKPiB3 YWl0aW5nIG9uIHRoZXNlIGZlbmNlcy4KPgo+PiBSZWdhcmRzLAo+PiBDaHJpc3RpYW4uCj4+Cj4+ PiAtRGFuaWVsCj4+Pgo+Pj4+PiBDYzogbWVzYS1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ Pj4+IENjOiBCYXMgTmlldXdlbmh1aXplbiA8YmFzQGJhc25pZXV3ZW5odWl6ZW4ubmw+Cj4+Pj4+ IENjOiBEYXZlIEFpcmxpZSA8YWlybGllZEBnbWFpbC5jb20+Cj4+Pj4+IENjOiBSb2IgQ2xhcmsg PHJvYmRjbGFya0BjaHJvbWl1bS5vcmc+Cj4+Pj4+IENjOiBLcmlzdGlhbiBILiBLcmlzdGVuc2Vu IDxob2Vnc2JlcmdAZ29vZ2xlLmNvbT4KPj4+Pj4gQ2M6IE1pY2hlbCBEw6RuemVyIDxtaWNoZWxA ZGFlbnplci5uZXQ+Cj4+Pj4+IENjOiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNv bT4KPj4+Pj4gQ2M6IFN1bWl0IFNlbXdhbCA8c3VtaXQuc2Vtd2FsQGxpbmFyby5vcmc+Cj4+Pj4+ IENjOiAiQ2hyaXN0aWFuIEvDtm5pZyIgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4+Pj4g Q2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KPj4+Pj4gQ2M6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4+Pj4+IENjOiBEZWVwYWsgUiBW YXJtYSA8bWgxMmd4MjgyNUBnbWFpbC5jb20+Cj4+Pj4+IENjOiBDaGVuIExpIDxjaGVubGlAdW5p b250ZWNoLmNvbT4KPj4+Pj4gQ2M6IEtldmluIFdhbmcgPGtldmluMS53YW5nQGFtZC5jb20+Cj4+ Pj4+IENjOiBEZW5uaXMgTGkgPERlbm5pcy5MaUBhbWQuY29tPgo+Pj4+PiBDYzogTHViZW4gVHVp a292IDxsdWJlbi50dWlrb3ZAYW1kLmNvbT4KPj4+Pj4gQ2M6IGxpbmFyby1tbS1zaWdAbGlzdHMu bGluYXJvLm9yZwo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGludGVsLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jcy5jICB8ICA3ICsrKysrLS0KPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2Rydi5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oICB8ICA2ICsrKysrKwo+Pj4+ PiAgICBpbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaCAgICAgICAgICAgfCAxMCArKysrKysr KysrCj4+Pj4+ICAgIDQgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+ Pj4gaW5kZXggNjVkZjM0YzE3MjY0Li5jNTM4NmQxM2ViNGEgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+Pj4+IEBAIC00OTgsNiArNDk4LDcgQEAg c3RhdGljIGludCBhbWRncHVfY3NfcGFyc2VyX2JvcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAq cCwKPj4+Pj4gICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmdkczsKPj4+Pj4gICAgICAgICAg IHN0cnVjdCBhbWRncHVfYm8gKmd3czsKPj4+Pj4gICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm8g Km9hOwo+Pj4+PiArICAgICAgIGJvb2wgbm9faW1wbGljaXRfc3luYyA9IFJFQURfT05DRShmcHJp di0+dm0ubm9faW1wbGljaXRfc3luYyk7Cj4+Pj4+ICAgICAgICAgICBpbnQgcjsKPj4+Pj4KPj4+ Pj4gICAgICAgICAgIElOSVRfTElTVF9IRUFEKCZwLT52YWxpZGF0ZWQpOwo+Pj4+PiBAQCAtNTc3 LDcgKzU3OCw4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3BhcnNlcl9ib3Moc3RydWN0IGFtZGdw dV9jc19wYXJzZXIgKnAsCj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAgICAgICAgIGUtPmJvX3ZhID0g YW1kZ3B1X3ZtX2JvX2ZpbmQodm0sIGJvKTsKPj4+Pj4KPj4+Pj4gLSAgICAgICAgICAgICAgIGlm IChiby0+dGJvLmJhc2UuZG1hX2J1ZiAmJiAhYW1kZ3B1X2JvX2V4cGxpY2l0X3N5bmMoYm8pKSB7 Cj4+Pj4+ICsgICAgICAgICAgICAgICBpZiAoYm8tPnRiby5iYXNlLmRtYV9idWYgJiYKPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAhKG5vX2ltcGxpY2l0X3N5bmMgfHwgYW1kZ3B1X2JvX2V4cGxp Y2l0X3N5bmMoYm8pKSkgewo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmNoYWlu ID0gZG1hX2ZlbmNlX2NoYWluX2FsbG9jKCk7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCFlLT5jaGFpbikgewo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgciA9IC1FTk9NRU07Cj4+Pj4+IEBAIC02NDksNiArNjUxLDcgQEAgc3RhdGljIGludCBhbWRn cHVfY3Nfc3luY19yaW5ncyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCkKPj4+Pj4gICAgewo+ Pj4+PiAgICAgICAgICAgc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBwLT5maWxwLT5kcml2 ZXJfcHJpdjsKPj4+Pj4gICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm9fbGlzdF9lbnRyeSAqZTsK Pj4+Pj4gKyAgICAgICBib29sIG5vX2ltcGxpY2l0X3N5bmMgPSBSRUFEX09OQ0UoZnByaXYtPnZt Lm5vX2ltcGxpY2l0X3N5bmMpOwo+Pj4+PiAgICAgICAgICAgaW50IHI7Cj4+Pj4+Cj4+Pj4+ICAg ICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsICZwLT52YWxpZGF0ZWQsIHR2LmhlYWQpIHsK Pj4+Pj4gQEAgLTY1Niw3ICs2NTksNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zeW5jX3Jpbmdz KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwKQo+Pj4+PiAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZG1hX3Jlc3YgKnJlc3YgPSBiby0+dGJvLmJhc2UucmVzdjsKPj4+Pj4gICAgICAgICAgICAg ICAgICAgZW51bSBhbWRncHVfc3luY19tb2RlIHN5bmNfbW9kZTsKPj4+Pj4KPj4+Pj4gLSAgICAg ICAgICAgICAgIHN5bmNfbW9kZSA9IGFtZGdwdV9ib19leHBsaWNpdF9zeW5jKGJvKSA/Cj4+Pj4+ ICsgICAgICAgICAgICAgICBzeW5jX21vZGUgPSBub19pbXBsaWNpdF9zeW5jIHx8IGFtZGdwdV9i b19leHBsaWNpdF9zeW5jKGJvKSA/Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1E R1BVX1NZTkNfRVhQTElDSVQgOiBBTURHUFVfU1lOQ19ORV9PV05FUjsKPj4+Pj4gICAgICAgICAg ICAgICAgICAgciA9IGFtZGdwdV9zeW5jX3Jlc3YocC0+YWRldiwgJnAtPmpvYi0+c3luYywgcmVz diwgc3luY19tb2RlLAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZnByaXYtPnZtKTsKPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYu Ywo+Pj4+PiBpbmRleCBjMDgwYmExNWFlNzcuLmY5ODI2MjZiNTMyOCAxMDA2NDQKPj4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+Pj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4+PiBAQCAtMTcyNCw2ICsx NzI0LDI2IEBAIGludCBhbWRncHVfZmlsZV90b19mcHJpdihzdHJ1Y3QgZmlsZSAqZmlscCwgc3Ry dWN0IGFtZGdwdV9mcHJpdiAqKmZwcml2KQo+Pj4+PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+ ICAgIH0KPj4+Pj4KPj4+Pj4gK2ludCBhbWRncHVfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgICAgc3RydWN0IGRybV9h bWRncHVfc2V0cGFyYW0gKnNldHBhcmFtID0gZGF0YTsKPj4+Pj4gKyAgICAgICBzdHJ1Y3QgYW1k Z3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2Owo+Pj4+PiArCj4+Pj4+ICsgICAg ICAgc3dpdGNoIChzZXRwYXJhbS0+cGFyYW0pIHsKPj4+Pj4gKyAgICAgICBjYXNlIEFNREdQVV9T RVRQQVJBTV9OT19JTVBMSUNJVF9TWU5DOgo+Pj4+PiArICAgICAgICAgICAgICAgaWYgKHNldHBh cmFtLT52YWx1ZSkKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfT05DRShmcHJp di0+dm0ubm9faW1wbGljaXRfc3luYywgdHJ1ZSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICBlbHNl Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX09OQ0UoZnByaXYtPnZtLm5vX2lt cGxpY2l0X3N5bmMsIGZhbHNlKTsKPj4+Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+PiAr ICAgICAgIGRlZmF1bHQ6Cj4+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ Pj4gKyAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICByZXR1cm4gMDsKPj4+Pj4gK30KPj4+ Pj4gKwo+Pj4+PiAgICBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgYW1kZ3B1X2lvY3Rsc19r bXNbXSA9IHsKPj4+Pj4gICAgICAgICAgIERSTV9JT0NUTF9ERUZfRFJWKEFNREdQVV9HRU1fQ1JF QVRFLCBhbWRncHVfZ2VtX2NyZWF0ZV9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyks Cj4+Pj4+ICAgICAgICAgICBEUk1fSU9DVExfREVGX0RSVihBTURHUFVfQ1RYLCBhbWRncHVfY3R4 X2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKPj4+Pj4gQEAgLTE3NDIsNiArMTc2 Miw3IEBAIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBhbWRncHVfaW9jdGxzX2ttc1tdID0g ewo+Pj4+PiAgICAgICAgICAgRFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9WQSwgYW1kZ3B1 X2dlbV92YV9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4+Pj4+ICAgICAgICAg ICBEUk1fSU9DVExfREVGX0RSVihBTURHUFVfR0VNX09QLCBhbWRncHVfZ2VtX29wX2lvY3RsLCBE Uk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKPj4+Pj4gICAgICAgICAgIERSTV9JT0NUTF9ERUZf RFJWKEFNREdQVV9HRU1fVVNFUlBUUiwgYW1kZ3B1X2dlbV91c2VycHRyX2lvY3RsLCBEUk1fQVVU SHxEUk1fUkVOREVSX0FMTE9XKSwKPj4+Pj4gKyAgICAgICBEUk1fSU9DVExfREVGX0RSVihBTURH UFVfU0VUUEFSQU0sIGFtZGdwdV9zZXRwYXJhbV9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9B TExPVyksCj4+Pj4+ICAgIH07Cj4+Pj4+Cj4+Pj4+ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2RyaXZlciBhbWRncHVfa21zX2RyaXZlciA9IHsKPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmgKPj4+Pj4gaW5kZXggZGRiODVhODVjYmJhLi4wZThjNDQwYzYzMDMgMTAw NjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+Pj4+IEBA IC0zMjEsNiArMzIxLDEyIEBAIHN0cnVjdCBhbWRncHVfdm0gewo+Pj4+PiAgICAgICAgICAgYm9v bCAgICAgICAgICAgICAgICAgICAgYnVsa19tb3ZlYWJsZTsKPj4+Pj4gICAgICAgICAgIC8qIEZs YWcgdG8gaW5kaWNhdGUgaWYgVk0gaXMgdXNlZCBmb3IgY29tcHV0ZSAqLwo+Pj4+PiAgICAgICAg ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNfY29tcHV0ZV9jb250ZXh0Owo+Pj4+PiArICAg ICAgIC8qCj4+Pj4+ICsgICAgICAgICogRmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIGltcGxpY2l0 IHN5bmMgc2hvdWxkIGFsd2F5cyBiZSBza2lwcGVkIG9uCj4+Pj4+ICsgICAgICAgICogdGhpcyBj b250ZXh0LiBXZSBkbyBub3QgY2FyZSBhYm91dCByYWNlcyBhdCBhbGwsIHVzZXJzcGFjZSBpcyBh bGxvd2VkCj4+Pj4+ICsgICAgICAgICogdG8gc2hvb3QgaXRzZWxmIHdpdGggaW1wbGljaXQgc3lu YyB0byBpdHMgZnVsbGVzdCBsaWtpbmcuCj4+Pj4+ICsgICAgICAgICovCj4+Pj4+ICsgICAgICAg Ym9vbCBub19pbXBsaWNpdF9zeW5jOwo+Pj4+PiAgICB9Owo+Pj4+Pgo+Pj4+PiAgICBzdHJ1Y3Qg YW1kZ3B1X3ZtX21hbmFnZXIgewo+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9h bWRncHVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAo+Pj4+PiBpbmRleCAw Y2JkMTU0MGFlYWMuLjllYWUyNDVjMTRkNiAxMDA2NDQKPj4+Pj4gLS0tIGEvaW5jbHVkZS91YXBp L2RybS9hbWRncHVfZHJtLmgKPj4+Pj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJt LmgKPj4+Pj4gQEAgLTU0LDYgKzU0LDcgQEAgZXh0ZXJuICJDIiB7Cj4+Pj4+ICAgICNkZWZpbmUg RFJNX0FNREdQVV9WTSAgICAgICAgICAgICAgICAgIDB4MTMKPj4+Pj4gICAgI2RlZmluZSBEUk1f QU1ER1BVX0ZFTkNFX1RPX0hBTkRMRSAgICAgMHgxNAo+Pj4+PiAgICAjZGVmaW5lIERSTV9BTURH UFVfU0NIRUQgICAgICAgICAgICAgICAweDE1Cj4+Pj4+ICsjZGVmaW5lIERSTV9BTURHUFVfU0VU UEFSQU0gICAgICAgICAgICAweDE2Cj4+Pj4+Cj4+Pj4+ICAgICNkZWZpbmUgRFJNX0lPQ1RMX0FN REdQVV9HRU1fQ1JFQVRFICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BV X0dFTV9DUkVBVEUsIHVuaW9uIGRybV9hbWRncHVfZ2VtX2NyZWF0ZSkKPj4+Pj4gICAgI2RlZmlu ZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9NTUFQICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9BTURHUFVfR0VNX01NQVAsIHVuaW9uIGRybV9hbWRncHVfZ2VtX21tYXApCj4+Pj4+ IEBAIC03MSw2ICs3Miw3IEBAIGV4dGVybiAiQyIgewo+Pj4+PiAgICAjZGVmaW5lIERSTV9JT0NU TF9BTURHUFVfVk0gICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FN REdQVV9WTSwgdW5pb24gZHJtX2FtZGdwdV92bSkKPj4+Pj4gICAgI2RlZmluZSBEUk1fSU9DVExf QU1ER1BVX0ZFTkNFX1RPX0hBTkRMRSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FN REdQVV9GRU5DRV9UT19IQU5ETEUsIHVuaW9uIGRybV9hbWRncHVfZmVuY2VfdG9faGFuZGxlKQo+ Pj4+PiAgICAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfU0NIRUQgICAgICAgICBEUk1fSU9XKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX1NDSEVELCB1bmlvbiBkcm1fYW1kZ3B1X3NjaGVk KQo+Pj4+PiArI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX1NFVFBBUkFNICAgICAgRFJNX0lPVyhE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9TRVRQQVJBTSwgc3RydWN0IGRybV9hbWRncHVf c2V0cGFyYW0pCj4+Pj4+Cj4+Pj4+ICAgIC8qKgo+Pj4+PiAgICAgKiBET0M6IG1lbW9yeSBkb21h aW5zCj4+Pj4+IEBAIC0zMDYsNiArMzA4LDE0IEBAIHVuaW9uIGRybV9hbWRncHVfc2NoZWQgewo+ Pj4+PiAgICAgICAgICAgc3RydWN0IGRybV9hbWRncHVfc2NoZWRfaW4gaW47Cj4+Pj4+ICAgIH07 Cj4+Pj4+Cj4+Pj4+ICsjZGVmaW5lIEFNREdQVV9TRVRQQVJBTV9OT19JTVBMSUNJVF9TWU5DICAg ICAgIDEKPj4+Pj4gKwo+Pj4+PiArc3RydWN0IGRybV9hbWRncHVfc2V0cGFyYW0gewo+Pj4+PiAr ICAgICAgIC8qIEFNREdQVV9TRVRQQVJBTV8qICovCj4+Pj4+ICsgICAgICAgX191MzIgICBwYXJh bTsKPj4+Pj4gKyAgICAgICBfX3UzMiAgIHZhbHVlOwo+Pj4+PiArfTsKPj4+Pj4gKwo+Pj4+PiAg ICAvKgo+Pj4+PiAgICAgKiBUaGlzIGlzIG5vdCBhIHJlbGlhYmxlIEFQSSBhbmQgeW91IHNob3Vs ZCBleHBlY3QgaXQgdG8gZmFpbCBmb3IgYW55Cj4+Pj4+ICAgICAqIG51bWJlciBvZiByZWFzb25z IGFuZCBoYXZlIGZhbGxiYWNrIHBhdGggdGhhdCBkbyBub3QgdXNlIHVzZXJwdHIgdG8KPj4+Pj4g LS0KPj4+Pj4gMi4zMi4wLnJjMgo+Pj4+Pgo+Pj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=