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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 08331C3DA6E for ; Wed, 20 Dec 2023 12:55:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=on2Cib7RhXazvldjflcPnwO1V19+eyxv/Av9R1dN5D0=; b=0niU/6LOkEWxUn TzNgk8ZEpU0RiDYpRE6WnTGcAahwigsvLrx3dCCjW3qEAh4zkGSjqECSuKbXNvAPGbEy52uR/CaL0 gaoGtaiezIm9DaQRG5yFnD5lArMnqMgizWVqCuNnT9/EHhonnsnbhCBrmep1mRIWBwIWChPw4hMNC t9tONt+Y+SpcmtqxOZk7i/StYMNA0rN5FAEg6VS4XDFmbB4rE+ZZyke7TQpNq0BQ1BDPfDSu9h3Yv A5GYApKdU6SB4TJw2c/ixG5ol+kWUgp3au3s3F/WRR9oFlJOVVeEiaz2/FggV/hO9u/jzMrkdyStO U9Ol3Oh+2trfr31/zbMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFw6P-00HQjq-32; Wed, 20 Dec 2023 12:55:09 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rFw6M-00HQid-1M for linux-arm-kernel@lists.infradead.org; Wed, 20 Dec 2023 12:55:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1703076905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=5EzlJsi0dZtBxnnHimhpFGwSMfH4YSJP5ttKUoO8KF8=; b=CMD19GKXAUdxp1q0hpJf6z+78AiIu5gxmcU1gsUxcXj8/QVf/zljn7qI3CD0KLwEXnARav IIpzpegXSj2psNyKFA8fw+ZXaHJP62o1stDXzkd1tJcR5HjJrYIOG5lRX+7wm9hnuQq0q7 BA8u2ws6s7lkGYx2yHfv9nQWltA1UoA= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-35-85YwY_iQPeuOjZqdn_oxlw-1; Wed, 20 Dec 2023 07:55:03 -0500 X-MC-Unique: 85YwY_iQPeuOjZqdn_oxlw-1 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-40d39a425bbso1640375e9.3 for ; Wed, 20 Dec 2023 04:55:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703076903; x=1703681703; h=content-transfer-encoding:in-reply-to:organization:autocrypt:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5EzlJsi0dZtBxnnHimhpFGwSMfH4YSJP5ttKUoO8KF8=; b=SjrmuOD7xjYjWmKxHJLAU3TkpEkvb/Zt+a/mpfQpWz0Pt2pBUHBzk7GzfDsxVBqh2J nnlv2RIL/p8GvWq3ztC56XTpJh2xE82TJ9OvBlroK/x5G6LrZ4LffrHBHz7R/XN/d/O3 Q3xFeRmLCbQaqSsMe2PkIfmCUzCHwZBuOjSBIrHIgsf44G82to/bbzj3vEXoD5IJl/JD 80R1CJlr3oFl46txVH93Ukbo8+w/1cQLgoF417d7pt36Q2sCUfmmPtMSBEAiBwf+IXrd R7YjZ/UWSLYhAY61lwPfGPDJy8Z5EffIGUpcKKkDN+a9CP91VZqltoSvuNQrd/qzHsMI TlTQ== X-Gm-Message-State: AOJu0YykS+LyO6dqCd11GOh9pfleKaay4a3m1pLOCILfjNZlY4rvVAKZ PPiIhrHrm+ApeKP/31NjDvb2Zz9+9Pm9dI/LjMKLn8c2pL5crIsoCJJrDrz0hntSR6GdWguYgEo 5GD4WxnqveE5tgs+Zy0/MU5nej3FvKIGfuM4= X-Received: by 2002:a05:600c:1c0f:b0:40b:5e21:dd16 with SMTP id j15-20020a05600c1c0f00b0040b5e21dd16mr11714813wms.68.1703076902540; Wed, 20 Dec 2023 04:55:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IGD4+GpjaA6rRGnqlzfD4MApaCEn7+/BusygtI57+L0ws12JNDh8iSqyVJ+MNpEpW5QJ9ufmg== X-Received: by 2002:a05:600c:1c0f:b0:40b:5e21:dd16 with SMTP id j15-20020a05600c1c0f00b0040b5e21dd16mr11714792wms.68.1703076902019; Wed, 20 Dec 2023 04:55:02 -0800 (PST) Received: from ?IPV6:2003:cb:c73b:eb00:8e25:6953:927:1802? (p200300cbc73beb008e25695309271802.dip0.t-ipconnect.de. [2003:cb:c73b:eb00:8e25:6953:927:1802]) by smtp.gmail.com with ESMTPSA id h21-20020a05600c351500b0040d378623b1sm2037929wmq.22.2023.12.20.04.55.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 20 Dec 2023 04:55:01 -0800 (PST) Message-ID: <54d645de-d031-4efc-a1ba-042f709cd549@redhat.com> Date: Wed, 20 Dec 2023 13:54:59 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 02/16] mm: Batch-copy PTE ranges during fork() To: Ryan Roberts , Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland , Kefeng Wang , John Hubbard , Zi Yan , Barry Song <21cnbao@gmail.com>, Alistair Popple , Yang Shi Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231218105100.172635-1-ryan.roberts@arm.com> <20231218105100.172635-3-ryan.roberts@arm.com> <0bef5423-6eea-446b-8854-980e9c23a948@redhat.com> <7c0236ad-01f3-437f-8b04-125d69e90dc0@redhat.com> <9a58b1a2-2c13-4fa0-8ffa-2b3d9655f1b6@arm.com> <28968568-f920-47ac-b6fd-87528ffd8f77@redhat.com> <10b0b562-c1c0-4a66-9aeb-a6bff5c218f6@arm.com> <8f8023cb-3c31-4ead-a9e6-03a10e9490c6@redhat.com> <699cb1db-51eb-460e-9ceb-1ce08ca03050@redhat.com> <2a8c5b6c-f5ae-43b2-99aa-6d10e79b76e1@redhat.com> <3194b8a5-3f72-4d9e-a267-fbdad32ad864@redhat.com> From: David Hildenbrand Autocrypt: addr=david@redhat.com; keydata= xsFNBFXLn5EBEAC+zYvAFJxCBY9Tr1xZgcESmxVNI/0ffzE/ZQOiHJl6mGkmA1R7/uUpiCjJ dBrn+lhhOYjjNefFQou6478faXE6o2AhmebqT4KiQoUQFV4R7y1KMEKoSyy8hQaK1umALTdL QZLQMzNE74ap+GDK0wnacPQFpcG1AE9RMq3aeErY5tujekBS32jfC/7AnH7I0v1v1TbbK3Gp XNeiN4QroO+5qaSr0ID2sz5jtBLRb15RMre27E1ImpaIv2Jw8NJgW0k/D1RyKCwaTsgRdwuK Kx/Y91XuSBdz0uOyU/S8kM1+ag0wvsGlpBVxRR/xw/E8M7TEwuCZQArqqTCmkG6HGcXFT0V9 PXFNNgV5jXMQRwU0O/ztJIQqsE5LsUomE//bLwzj9IVsaQpKDqW6TAPjcdBDPLHvriq7kGjt WhVhdl0qEYB8lkBEU7V2Yb+SYhmhpDrti9Fq1EsmhiHSkxJcGREoMK/63r9WLZYI3+4W2rAc UucZa4OT27U5ZISjNg3Ev0rxU5UH2/pT4wJCfxwocmqaRr6UYmrtZmND89X0KigoFD/XSeVv jwBRNjPAubK9/k5NoRrYqztM9W6sJqrH8+UWZ1Idd/DdmogJh0gNC0+N42Za9yBRURfIdKSb B3JfpUqcWwE7vUaYrHG1nw54pLUoPG6sAA7Mehl3nd4pZUALHwARAQABzSREYXZpZCBIaWxk ZW5icmFuZCA8ZGF2aWRAcmVkaGF0LmNvbT7CwZgEEwEIAEICGwMGCwkIBwMCBhUIAgkKCwQW AgMBAh4BAheAAhkBFiEEG9nKrXNcTDpGDfzKTd4Q9wD/g1oFAl8Ox4kFCRKpKXgACgkQTd4Q 9wD/g1oHcA//a6Tj7SBNjFNM1iNhWUo1lxAja0lpSodSnB2g4FCZ4R61SBR4l/psBL73xktp rDHrx4aSpwkRP6Epu6mLvhlfjmkRG4OynJ5HG1gfv7RJJfnUdUM1z5kdS8JBrOhMJS2c/gPf wv1TGRq2XdMPnfY2o0CxRqpcLkx4vBODvJGl2mQyJF/gPepdDfcT8/PY9BJ7FL6Hrq1gnAo4 3Iv9qV0JiT2wmZciNyYQhmA1V6dyTRiQ4YAc31zOo2IM+xisPzeSHgw3ONY/XhYvfZ9r7W1l pNQdc2G+o4Di9NPFHQQhDw3YTRR1opJaTlRDzxYxzU6ZnUUBghxt9cwUWTpfCktkMZiPSDGd KgQBjnweV2jw9UOTxjb4LXqDjmSNkjDdQUOU69jGMUXgihvo4zhYcMX8F5gWdRtMR7DzW/YE BgVcyxNkMIXoY1aYj6npHYiNQesQlqjU6azjbH70/SXKM5tNRplgW8TNprMDuntdvV9wNkFs 9TyM02V5aWxFfI42+aivc4KEw69SE9KXwC7FSf5wXzuTot97N9Phj/Z3+jx443jo2NR34XgF 89cct7wJMjOF7bBefo0fPPZQuIma0Zym71cP61OP/i11ahNye6HGKfxGCOcs5wW9kRQEk8P9 M/k2wt3mt/fCQnuP/mWutNPt95w9wSsUyATLmtNrwccz63XOwU0EVcufkQEQAOfX3n0g0fZz Bgm/S2zF/kxQKCEKP8ID+Vz8sy2GpDvveBq4H2Y34XWsT1zLJdvqPI4af4ZSMxuerWjXbVWb T6d4odQIG0fKx4F8NccDqbgHeZRNajXeeJ3R7gAzvWvQNLz4piHrO/B4tf8svmRBL0ZB5P5A 2uhdwLU3NZuK22zpNn4is87BPWF8HhY0L5fafgDMOqnf4guJVJPYNPhUFzXUbPqOKOkL8ojk CXxkOFHAbjstSK5Ca3fKquY3rdX3DNo+EL7FvAiw1mUtS+5GeYE+RMnDCsVFm/C7kY8c2d0G NWkB9pJM5+mnIoFNxy7YBcldYATVeOHoY4LyaUWNnAvFYWp08dHWfZo9WCiJMuTfgtH9tc75 7QanMVdPt6fDK8UUXIBLQ2TWr/sQKE9xtFuEmoQGlE1l6bGaDnnMLcYu+Asp3kDT0w4zYGsx 5r6XQVRH4+5N6eHZiaeYtFOujp5n+pjBaQK7wUUjDilPQ5QMzIuCL4YjVoylWiBNknvQWBXS lQCWmavOT9sttGQXdPCC5ynI+1ymZC1ORZKANLnRAb0NH/UCzcsstw2TAkFnMEbo9Zu9w7Kv AxBQXWeXhJI9XQssfrf4Gusdqx8nPEpfOqCtbbwJMATbHyqLt7/oz/5deGuwxgb65pWIzufa N7eop7uh+6bezi+rugUI+w6DABEBAAHCwXwEGAEIACYCGwwWIQQb2cqtc1xMOkYN/MpN3hD3 AP+DWgUCXw7HsgUJEqkpoQAKCRBN3hD3AP+DWrrpD/4qS3dyVRxDcDHIlmguXjC1Q5tZTwNB boaBTPHSy/Nksu0eY7x6HfQJ3xajVH32Ms6t1trDQmPx2iP5+7iDsb7OKAb5eOS8h+BEBDeq 3ecsQDv0fFJOA9ag5O3LLNk+3x3q7e0uo06XMaY7UHS341ozXUUI7wC7iKfoUTv03iO9El5f XpNMx/YrIMduZ2+nd9Di7o5+KIwlb2mAB9sTNHdMrXesX8eBL6T9b+MZJk+mZuPxKNVfEQMQ a5SxUEADIPQTPNvBewdeI80yeOCrN+Zzwy/Mrx9EPeu59Y5vSJOx/z6OUImD/GhX7Xvkt3kq Er5KTrJz3++B6SH9pum9PuoE/k+nntJkNMmQpR4MCBaV/J9gIOPGodDKnjdng+mXliF3Ptu6 3oxc2RCyGzTlxyMwuc2U5Q7KtUNTdDe8T0uE+9b8BLMVQDDfJjqY0VVqSUwImzTDLX9S4g/8 kC4HRcclk8hpyhY2jKGluZO0awwTIMgVEzmTyBphDg/Gx7dZU1Xf8HFuE+UZ5UDHDTnwgv7E th6RC9+WrhDNspZ9fJjKWRbveQgUFCpe1sa77LAw+XFrKmBHXp9ZVIe90RMe2tRL06BGiRZr jPrnvUsUUsjRoRNJjKKA/REq+sAnhkNPPZ/NNMjaZ5b8Tovi8C0tmxiCHaQYqj7G2rgnT0kt WNyWQQ== Organization: Red Hat In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231220_045506_646150_80EAF576 X-CRM114-Status: GOOD ( 19.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAuMTIuMjMgMTM6MDQsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPiBPbiAyMC8xMi8yMDIzIDEx OjU4LCBEYXZpZCBIaWxkZW5icmFuZCB3cm90ZToKPj4gT24gMjAuMTIuMjMgMTI6NTEsIFJ5YW4g Um9iZXJ0cyB3cm90ZToKPj4+IE9uIDIwLzEyLzIwMjMgMTE6MzYsIERhdmlkIEhpbGRlbmJyYW5k IHdyb3RlOgo+Pj4+IE9uIDIwLjEyLjIzIDEyOjI4LCBSeWFuIFJvYmVydHMgd3JvdGU6Cj4+Pj4+ IE9uIDIwLzEyLzIwMjMgMTA6NTYsIERhdmlkIEhpbGRlbmJyYW5kIHdyb3RlOgo+Pj4+Pj4gT24g MjAuMTIuMjMgMTE6NDEsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4+Pj4+PiBPbiAyMC8xMi8yMDIz IDEwOjE2LCBEYXZpZCBIaWxkZW5icmFuZCB3cm90ZToKPj4+Pj4+Pj4gT24gMjAuMTIuMjMgMTE6 MTEsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4+Pj4+Pj4+IE9uIDIwLzEyLzIwMjMgMDk6NTQsIERh dmlkIEhpbGRlbmJyYW5kIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIDIwLjEyLjIzIDEwOjUxLCBSeWFu IFJvYmVydHMgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IE9uIDIwLzEyLzIwMjMgMDk6MTcsIERhdmlkIEhp bGRlbmJyYW5kIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4gT24gMTkuMTIuMjMgMTg6NDIsIFJ5YW4gUm9i ZXJ0cyB3cm90ZToKPj4+Pj4+Pj4+Pj4+PiBPbiAxOS8xMi8yMDIzIDE3OjIyLCBEYXZpZCBIaWxk ZW5icmFuZCB3cm90ZToKPj4+Pj4+Pj4+Pj4+Pj4gT24gMTkuMTIuMjMgMDk6MzAsIFJ5YW4gUm9i ZXJ0cyB3cm90ZToKPj4+Pj4+Pj4+Pj4+Pj4+IE9uIDE4LzEyLzIwMjMgMTc6NDcsIERhdmlkIEhp bGRlbmJyYW5kIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+Pj4+IE9uIDE4LjEyLjIzIDExOjUwLCBSeWFu IFJvYmVydHMgd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+IENvbnZlcnQgY29weV9wdGVfcmFuZ2Uo KSB0byBjb3B5IGEgYmF0Y2ggb2YgcHRlcyBpbiBvbmUgZ28uIEEgZ2l2ZW4KPj4+Pj4+Pj4+Pj4+ Pj4+Pj4gYmF0Y2ggaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIG5l dyBoZWxwZXIsCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHB0ZV9iYXRjaF9yZW1haW5pbmcoKSwgYW5kIG1h cHMgYSBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgYmxvY2sgb2YKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gbWVt b3J5LAo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBhbGwgYmVsb25naW5nIHRvIHRoZSBzYW1lIGZvbGlvLiBB IHB0ZSBiYXRjaCBpcyB0aGVuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHdyaXRlLXByb3RlY3RlZCBpbgo+ Pj4+Pj4+Pj4+Pj4+Pj4+PiBvbmUgZ28gaW4gdGhlIHBhcmVudCB1c2luZyB0aGUgbmV3IGhlbHBl ciwgcHRlcF9zZXRfd3Jwcm90ZWN0cygpCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGFuZCBpcwo+Pj4+Pj4+ Pj4+Pj4+Pj4+PiBzZXQgaW4gb25lIGdvIGluIHRoZSBjaGlsZCB1c2luZyB0aGUgbmV3IGhlbHBl ciwgc2V0X3B0ZXNfZnVsbCgpLgo+Pj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBU aGUgcHJpbWFyeSBtb3RpdmF0aW9uIGZvciB0aGlzIGNoYW5nZSBpcyB0byByZWR1Y2UgdGhlIG51 bWJlcgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBvZiB0bGIKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gbWFpbnRlbmFu Y2Ugb3BlcmF0aW9ucyB0aGF0IHRoZSBhcm02NCBiYWNrZW5kIGhhcyB0byBwZXJmb3JtIGR1cmlu Zwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBmb3JrLCBhcyBpdCBpcyBhYm91dCB0byBhZGQgdHJhbnNwYXJl bnQgc3VwcG9ydCBmb3IgdGhlICJjb250aWd1b3VzCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGJpdCIKPj4+ Pj4+Pj4+Pj4+Pj4+Pj4gaW4gaXRzIHB0ZXMuIEJ5IHdyaXRlLXByb3RlY3RpbmcgdGhlIHBhcmVu dCB1c2luZyB0aGUgbmV3Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHB0ZXBfc2V0X3dycHJvdGVjdHMoKSAo bm90ZSB0aGUgJ3MnIGF0IHRoZSBlbmQpIGZ1bmN0aW9uLCB0aGUKPj4+Pj4+Pj4+Pj4+Pj4+Pj4g YmFja2VuZAo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBjYW4gYXZvaWQgaGF2aW5nIHRvIHVuZm9sZCBjb250 aWcgcmFuZ2VzIG9mIFBURXMsIHdoaWNoIGlzCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGV4cGVuc2l2ZSwK Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gd2hlbiBhbGwgcHRlcyBpbiB0aGUgcmFuZ2UgYXJlIGJlaW5nIHdy aXRlLXByb3RlY3RlZC4gU2ltaWxhcmx5LCBieQo+Pj4+Pj4+Pj4+Pj4+Pj4+PiB1c2luZyBzZXRf cHRlc19mdWxsKCkgcmF0aGVyIHRoYW4gc2V0X3B0ZV9hdCgpIHRvIHNldCB1cCBwdGVzIGluCj4+ Pj4+Pj4+Pj4+Pj4+Pj4+IHRoZQo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBjaGlsZCwgdGhlIGJhY2tlbmQg ZG9lcyBub3QgbmVlZCB0byBmb2xkIGEgY29udGlndW91cyByYW5nZSBvbmNlCj4+Pj4+Pj4+Pj4+ Pj4+Pj4+IHRoZXkKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gYXJlIGFsbCBwb3B1bGF0ZWQgLSB0aGV5IGNh biBiZSBpbml0aWFsbHkgcG9wdWxhdGVkIGFzIGEgY29udGlndW91cwo+Pj4+Pj4+Pj4+Pj4+Pj4+ PiByYW5nZSBpbiB0aGUgZmlyc3QgcGxhY2UuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ Pj4+Pj4+IFRoaXMgY29kZSBpcyB2ZXJ5IHBlcmZvcm1hbmNlIHNlbnNpdGl2ZSwgYW5kIGEgc2ln bmlmaWNhbnQKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gYW1vdW50IG9mCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGVm Zm9ydCBoYXMgYmVlbiBwdXQgaW50byBub3QgcmVncmVzc2luZyBwZXJmb3JtYW5jZSBmb3IgdGhl IG9yZGVyLTAKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gZm9saW8gY2FzZS4gQnkgZGVmYXVsdCwgcHRlX2Jh dGNoX3JlbWFpbmluZygpIGlzIGNvbXBpbGUKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gY29uc3RhbnQgMSwK Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gd2hpY2ggZW5hYmxlcyB0aGUgY29tcGlsZXIgdG8gc2ltcGxpZnkg dGhlIGV4dHJhIGxvb3BzIHRoYXQgYXJlCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGFkZGVkCj4+Pj4+Pj4+ Pj4+Pj4+Pj4+IGZvciBiYXRjaGluZyBhbmQgcHJvZHVjZSBjb2RlIHRoYXQgaXMgZXF1aXZhbGVu dCAoYW5kIGVxdWFsbHkKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gcGVyZm9ybWFudCkgYXMgdGhlIHByZXZp b3VzIGltcGxlbWVudGF0aW9uLgo+Pj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBU aGlzIGNoYW5nZSBhZGRyZXNzZXMgdGhlIGNvcmUtbW0gcmVmYWN0b3Jpbmcgb25seSBhbmQgYSBz ZXBhcmF0ZQo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBjaGFuZ2UKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gd2lsbCBp bXBsZW1lbnQgcHRlX2JhdGNoX3JlbWFpbmluZygpLCBwdGVwX3NldF93cnByb3RlY3RzKCkgYW5k Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHNldF9wdGVzX2Z1bGwoKSBpbiB0aGUgYXJtNjQgYmFja2VuZCB0 byByZWFsaXplIHRoZSBwZXJmb3JtYW5jZQo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBpbXByb3ZlbWVudCBh cyBwYXJ0IG9mIHRoZSB3b3JrIHRvIGVuYWJsZSBjb250cHRlIG1hcHBpbmdzLgo+Pj4+Pj4+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBUbyBlbnN1cmUgdGhlIGFybTY0IGlzIHBlcmZvcm1h bnQgb25jZSBpbXBsZW1lbnRlZCwgdGhpcyBjaGFuZ2UgaXMKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gdmVy eQo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBjYXJlZnVsIHRvIG9ubHkgY2FsbCBwdGVwX2dldCgpIG9uY2Ug cGVyIHB0ZSBiYXRjaC4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gVGhlIGZv bGxvd2luZyBtaWNyb2JlbmNobWFyayByZXN1bHRzIGRlbW9uc3RhdGUgdGhhdCB0aGVyZSBpcyBu bwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBjaGFuZ2UgYWZ0ZXIg dGhpcyBwYXRjaC4gRm9yayBpcyBjYWxsZWQKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gaW4gYQo+Pj4+Pj4+ Pj4+Pj4+Pj4+PiB0aWdodCBsb29wIGluIGEgcHJvY2VzcyB3aXRoIDFHIG9mIHBvcHVsYXRlZCBt ZW1vcnkgYW5kIHRoZSB0aW1lCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGZvcgo+Pj4+Pj4+Pj4+Pj4+Pj4+ PiB0aGUKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gZnVuY3Rpb24gdG8gZXhlY3V0ZSBpcyBtZWFzdXJlZC4g MTAwIGl0ZXJhdGlvbnMgcGVyIHJ1biwgOCBydW5zCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHBlcmZvcm1l ZCBvbiBib3RoIEFwcGxlIE0yIChWTSkgYW5kIEFtcGVyZSBBbHRyYSAoYmFyZSBtZXRhbCkuCj4+ Pj4+Pj4+Pj4+Pj4+Pj4+IFRlc3RzCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHBlcmZvcm1lZCBmb3IgY2Fz ZSB3aGVyZSAxRyBtZW1vcnkgaXMgY29tcHJpc2VkIG9mIG9yZGVyLTAKPj4+Pj4+Pj4+Pj4+Pj4+ Pj4gZm9saW9zIGFuZAo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBjYXNlIHdoZXJlIGNvbXByaXNlZCBvZiBw dGUtbWFwcGVkIG9yZGVyLTkgZm9saW9zLiBOZWdhdGl2ZSBpcwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBm YXN0ZXIsCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHBvc2l0aXZlIGlzIHNsb3dlciwgY29tcGFyZWQgdG8g YmFzZWxpbmUgdXBvbiB3aGljaCB0aGUgc2VyaWVzIGlzCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGJhc2Vk Ogo+Pj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiB8IEFwcGxlIE0yIFZNwqDCoCB8 IG9yZGVyLTAgKHB0ZS1tYXApIHwgb3JkZXItOSAocHRlLW1hcCkgfAo+Pj4+Pj4+Pj4+Pj4+Pj4+ PiB8IGZvcmvCoMKgwqDCoMKgwqDCoMKgwqAgfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t LS0tLS0tLS0tLXwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBtaWNyb2JlbmNowqDCoMKgIHzCoMKgwqAg bWVhbiB8wqDCoCBzdGRldiB8wqDCoMKgIG1lYW4gfMKgwqAgc3RkZXYgfAo+Pj4+Pj4+Pj4+Pj4+ Pj4+PiB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0t LS0tLXwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBiYXNlbGluZcKgwqDCoMKgwqAgfMKgwqDCoCAwLjAl IHzCoMKgwqAgMS4xJSB8wqDCoMKgIDAuMCUgfMKgwqDCoCAxLjIlIHwKPj4+Pj4+Pj4+Pj4+Pj4+ Pj4gfCBhZnRlci1jaGFuZ2XCoCB8wqDCoCAtMS4wJSB8wqDCoMKgIDIuMCUgfMKgwqAgLTAuMSUg fMKgwqDCoCAxLjElIHwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBBbXBl cmUgQWx0cmHCoCB8IG9yZGVyLTAgKHB0ZS1tYXApIHwgb3JkZXItOSAocHRlLW1hcCkgfAo+Pj4+ Pj4+Pj4+Pj4+Pj4+PiB8IGZvcmvCoMKgwqDCoMKgwqDCoMKgwqAgfC0tLS0tLS0tLS0tLS0tLS0t LS18LS0tLS0tLS0tLS0tLS0tLS0tLXwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBtaWNyb2JlbmNowqDC oMKgIHzCoMKgwqAgbWVhbiB8wqDCoCBzdGRldiB8wqDCoMKgIG1lYW4gfMKgwqAgc3RkZXYgfAo+ Pj4+Pj4+Pj4+Pj4+Pj4+PiB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS18LS0t LS0tLS0tfC0tLS0tLS0tLXwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBiYXNlbGluZcKgwqDCoMKgwqAg fMKgwqDCoCAwLjAlIHzCoMKgwqAgMS4wJSB8wqDCoMKgIDAuMCUgfMKgwqDCoCAwLjElIHwKPj4+ Pj4+Pj4+Pj4+Pj4+Pj4gfCBhZnRlci1jaGFuZ2XCoCB8wqDCoCAtMC4xJSB8wqDCoMKgIDEuMiUg fMKgwqAgLTAuMSUgfMKgwqDCoCAwLjElIHwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+ Pj4+Pj4gVGVzdGVkLWJ5OiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+Cj4+Pj4+ Pj4+Pj4+Pj4+Pj4+IFJldmlld2VkLWJ5OiBBbGlzdGFpciBQb3BwbGUgPGFwb3BwbGVAbnZpZGlh LmNvbT4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogUnlhbiBSb2JlcnRzIDxyeWFu LnJvYmVydHNAYXJtLmNvbT4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgIGluY2x1ZGUvbGludXgvcGd0YWJsZS5oIHwgODAKPj4+Pj4+Pj4+ Pj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+Pj4+Pj4+Pj4+ Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgbW0vbWVtb3J5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA5Mgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLQo+Pj4+Pj4+Pj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoCAyIGZpbGVzIGNo YW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKPj4+Pj4+Pj4+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGd0YWJsZS5o IGIvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gaW5kZXggYWY3NjM5 YzNiMGEzLi5kYjkzZmI4MTQ2NWEgMTAwNjQ0Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+IC0tLSBhL2luY2x1 ZGUvbGludXgvcGd0YWJsZS5oCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsrKyBiL2luY2x1ZGUvbGludXgv cGd0YWJsZS5oCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEBAIC0yMDUsNiArMjA1LDI3IEBAIHN0YXRpYyBp bmxpbmUgaW50IHBtZF95b3VuZyhwbWRfdCBwbWQpCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgICNkZWZpbmUgYXJjaF9mbHVzaF9sYXp5X21tdV9tb2RlKCnCoMKgwqAgZG8ge30g d2hpbGUgKDApCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgICNlbmRpZgo+Pj4+ Pj4+Pj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoCArI2lmbmRlZiBwdGVfYmF0Y2hfcmVtYWlu aW5nCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIHB0ZV9iYXRj aF9yZW1haW5pbmcgLSBOdW1iZXIgb2YgcGFnZXMgZnJvbSBhZGRyIHRvIG5leHQgYmF0Y2gKPj4+ Pj4+Pj4+Pj4+Pj4+Pj4gYm91bmRhcnkuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBAcHRlOiBQYWdl IHRhYmxlIGVudHJ5IGZvciB0aGUgZmlyc3QgcGFnZS4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIEBh ZGRyOiBBZGRyZXNzIG9mIHRoZSBmaXJzdCBwYWdlLgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiArICogQGVu ZDogQmF0Y2ggY2VpbGluZyAoZS5nLiBlbmQgb2Ygdm1hKS4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAq Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBTb21lIGFyY2hpdGVjdHVyZXMgKGFybTY0KSBjYW4gZWZm aWNpZW50bHkgbW9kaWZ5IGEgY29udGlndW91cwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBiYXRjaCBvZgo+ Pj4+Pj4+Pj4+Pj4+Pj4+PiBwdGVzLgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiArICogSW4gc3VjaCBjYXNl cywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mCj4+Pj4+Pj4+ Pj4+Pj4+Pj4+IHBhZ2VzIHRvCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHRoZSBlbmQKPj4+Pj4+Pj4+Pj4+ Pj4+Pj4gKyAqIG9mIHRoZSBjdXJyZW50IGJhdGNoLCBhcyBkZWZpbmVkIGJ5IGFkZHIuIFRoaXMg Y2FuIGJlIHVzZWZ1bAo+Pj4+Pj4+Pj4+Pj4+Pj4+PiB3aGVuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGl0 ZXJhdGluZwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiArICogb3ZlciBwdGVzLgo+Pj4+Pj4+Pj4+Pj4+Pj4+ PiArICoKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIE1heSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcmNo aXRlY3R1cmUsIGVsc2UgYmF0Y2ggc2l6ZSBpcwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBhbHdheXMgMS4K Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiArc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgcHRlX2JhdGNoX3JlbWFpbmluZyhwdGVfdCBwdGUsIHVuc2lnbmVkCj4+Pj4+ Pj4+Pj4+Pj4+Pj4+IGxvbmcKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gYWRkciwKPj4+Pj4+Pj4+Pj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWdu ZWQgbG9uZyBlbmQpCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICvCoMKg wqAgcmV0dXJuIDE7Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsjZW5k aWYKPj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+IEl0J3MgYSBzaGFtZSB3ZSBub3cg bG9zZSB0aGUgb3B0aW1pemF0aW9uIGZvciBhbGwgb3RoZXIKPj4+Pj4+Pj4+Pj4+Pj4+PiBhcmNo dGllY3R1cmVzLgo+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gV2FzIHRoZXJlIG5v IHdheSB0byBoYXZlIHNvbWUgYmFzaWMgYmF0Y2hpbmcgbWVjaGFuaXNtIHRoYXQgZG9lc24ndAo+ Pj4+Pj4+Pj4+Pj4+Pj4+IHJlcXVpcmUKPj4+Pj4+Pj4+Pj4+Pj4+PiBhcmNoCj4+Pj4+Pj4+Pj4+ Pj4+Pj4gc3BlY2lmaWNzPwo+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+IEkgdHJpZWQg YSBidW5jaCBvZiB0aGluZ3MgYnV0IHVsdGltYXRlbHkgdGhlIHdheSBJJ3ZlIGRvbmUgaXQgd2Fz IHRoZQo+Pj4+Pj4+Pj4+Pj4+Pj4gb25seQo+Pj4+Pj4+Pj4+Pj4+Pj4gd2F5Cj4+Pj4+Pj4+Pj4+ Pj4+PiB0byByZWR1Y2UgdGhlIG9yZGVyLTAgZm9yayByZWdyZXNzaW9uIHRvIDAuCj4+Pj4+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4gTXkgb3JpZ2luYWwgdjMgcG9zdGluZyB3YXMgY29zdGlu ZyA1JSBleHRyYSBhbmQgZXZlbiBteSBmaXJzdCBhdHRlbXB0Cj4+Pj4+Pj4+Pj4+Pj4+PiBhdCBh bgo+Pj4+Pj4+Pj4+Pj4+Pj4gYXJjaC1zcGVjaWZpYyB2ZXJzaW9uIHRoYXQgZGlkbid0IHJlc29s dmUgdG8gYSBjb21waWxlLXRpbWUKPj4+Pj4+Pj4+Pj4+Pj4+IGNvbnN0YW50IDEKPj4+Pj4+Pj4+ Pj4+Pj4+IHN0aWxsCj4+Pj4+Pj4+Pj4+Pj4+PiBjb3N0IGFuIGV4dHJhIDMlLgo+Pj4+Pj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+PiBJ J2QgaGF2ZSB0aG91Z2h0IHRoYXQgc29tZXRoaW5nIHZlcnkgYmFzaWMgd291bGQgaGF2ZSB3b3Jr ZWQgbGlrZToKPj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+ICogQ2hlY2sgaWYgUFRF IGlzIHRoZSBzYW1lIHdoZW4gc2V0dGluZyB0aGUgUEZOIHRvIDAuCj4+Pj4+Pj4+Pj4+Pj4+Pj4g KiBDaGVjayB0aGF0IFBGTiBpcyBjb25zZWN1dGl2ZQo+Pj4+Pj4+Pj4+Pj4+Pj4+ICogQ2hlY2sg dGhhdCBhbGwgUEZOcyBiZWxvbmcgdG8gdGhlIHNhbWUgZm9saW8KPj4+Pj4+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj4+Pj4+PiBJIGhhdmVuJ3QgdHJpZWQgdGhpcyBleGFjdCBhcHByb2FjaCwgYnV0IEkn ZCBiZSBzdXJwcmlzZWQgaWYgSSBjYW4KPj4+Pj4+Pj4+Pj4+Pj4+IGdldAo+Pj4+Pj4+Pj4+Pj4+ Pj4gdGhlCj4+Pj4+Pj4+Pj4+Pj4+PiByZWdyZXNzaW9uIHVuZGVyIDQlIHdpdGggdGhpcy4gRnVy dGhlciBhbG9uZyB0aGUgc2VyaWVzIEkgc3BlbnQgYQo+Pj4+Pj4+Pj4+Pj4+Pj4gbG90IG9mCj4+ Pj4+Pj4+Pj4+Pj4+PiB0aW1lCj4+Pj4+Pj4+Pj4+Pj4+PiBoYXZpbmcgdG8gZmlkZGxlIHdpdGgg dGhlIGFybTY0IGltcGxlbWVudGF0aW9uOyBldmVyeSBjb25kaXRpb25hbCBhbmQKPj4+Pj4+Pj4+ Pj4+Pj4+IGV2ZXJ5Cj4+Pj4+Pj4+Pj4+Pj4+PiBtZW1vcnkgcmVhZCAoZXZlbiB3aGVuIGluIGNh Y2hlKSB3YXMgYSBwcm9ibGVtLiBUaGVyZSBpcyBqdXN0IHNvCj4+Pj4+Pj4+Pj4+Pj4+PiBsaXR0 bGUgaW4KPj4+Pj4+Pj4+Pj4+Pj4+IHRoZQo+Pj4+Pj4+Pj4+Pj4+Pj4gaW5uZXIgbG9vcCB0aGF0 IGV2ZXJ5IGluc3RydWN0aW9uIG1hdHRlcnMuIChBdCBsZWFzdCBvbiBBbXBlcmUgQWx0cmEKPj4+ Pj4+Pj4+Pj4+Pj4+IGFuZAo+Pj4+Pj4+Pj4+Pj4+Pj4gQXBwbGUKPj4+Pj4+Pj4+Pj4+Pj4+IE0y KS4KPj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+PiBPZiBjb3Vyc2UgaWYgeW91J3JlIHdp bGxpbmcgdG8gcGF5IHRoYXQgNC01JSBmb3Igb3JkZXItMCB0aGVuIHRoZQo+Pj4+Pj4+Pj4+Pj4+ Pj4gYmVuZWZpdCB0bwo+Pj4+Pj4+Pj4+Pj4+Pj4gb3JkZXItOSBpcyBhcm91bmQgMTAlIGluIG15 IG1lYXN1cmVtZW50cy4gUGVyc29uYWxseSB0aG91Z2gsIEknZAo+Pj4+Pj4+Pj4+Pj4+Pj4gcHJl ZmVyIHRvCj4+Pj4+Pj4+Pj4+Pj4+PiBwbGF5Cj4+Pj4+Pj4+Pj4+Pj4+PiBzYWZlIGFuZCBlbnN1 cmUgdGhlIGNvbW1vbiBvcmRlci0wIGNhc2UgZG9lc24ndCByZWdyZXNzLCBhcyB5b3UKPj4+Pj4+ Pj4+Pj4+Pj4+IHByZXZpb3VzbHkKPj4+Pj4+Pj4+Pj4+Pj4+IHN1Z2dlc3RlZC4KPj4+Pj4+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+IEkganVzdCBoYWNrZWQgc29tZXRo aW5nIHVwLCBvbiB0b3Agb2YgbXkgYmVsb3ZlZCBybWFwIGNsZWFudXAvYmF0Y2hpbmcKPj4+Pj4+ Pj4+Pj4+Pj4gc2VyaWVzLiBJCj4+Pj4+Pj4+Pj4+Pj4+IGltcGxlbWVudGVkIHZlcnkgZ2VuZXJp YyBhbmQgc2ltcGxlIGJhdGNoaW5nIGZvciBsYXJnZSBmb2xpb3MgKGFsbCBQVEUKPj4+Pj4+Pj4+ Pj4+Pj4gYml0cwo+Pj4+Pj4+Pj4+Pj4+PiBleGNlcHQgdGhlIFBGTiBoYXZlIHRvIG1hdGNoKS4K Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4gU29tZSB2ZXJ5IHF1aWNrIHRlc3RpbmcgKGRv bid0IHRydXN0IGVhY2ggbGFzdCAlICkgb24gSW50ZWwoUikgWGVvbihSKQo+Pj4+Pj4+Pj4+Pj4+ PiBTaWx2ZXIKPj4+Pj4+Pj4+Pj4+Pj4gNDIxMFIgQ1BVLgo+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4+Pj4+PiBvcmRlci0wOiAwLjAxNDIxMCAtPiAwLjAxMzk2OQo+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+Pj4+PiAtPiBBcm91bmQgMS43ICUgZmFzdGVyCj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+Pj4+IG9yZGVyLTk6IDAuMDE0MzczIC0+IDAuMDA5MTQ5Cj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+ Pj4+Pj4+Pj4+IC0+IEFyb3VuZCAzNi4zICUgZmFzdGVyCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ Pj4+PiBXZWxsIEkgZ3Vlc3MgdGhhdCBzaG93cyBtZSA6KQo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+Pj4gSSdsbCBkbyBhIHJldmlldyBhbmQgcnVuIHRoZSB0ZXN0cyBvbiBteSBIVyB0byBzZWUg aWYgaXQgY29uY3Vycy4KPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gSSBw dXNoZWQgYSBzaW1wbGUgY29tcGlsZSBmaXh1cCAod2UgbmVlZCBwdGVfbmV4dF9wZm4oKSkuCj4+ Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IEkndmUganVzdCBiZWVuIHRyeWluZyB0byBjb21waWxlIGFu ZCBub3RpY2VkIHRoaXMuIFdpbGwgdGFrZSBhIGxvb2sgYXQKPj4+Pj4+Pj4+Pj4geW91cgo+Pj4+ Pj4+Pj4+PiB1cGRhdGUuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IEJ1dCB1cG9uIHJldmlldywg SSd2ZSBub3RpY2VkIHRoZSBwYXJ0IHRoYXQgSSB0aGluayBtYWtlcyB0aGlzIGRpZmZpY3VsdAo+ Pj4+Pj4+Pj4+PiBmb3IKPj4+Pj4+Pj4+Pj4gYXJtNjQgd2l0aCB0aGUgY29udHB0ZSBvcHRpbWl6 YXRpb247IFlvdSBhcmUgY2FsbGluZyBwdGVwX2dldCgpIGZvciBldmVyeQo+Pj4+Pj4+Pj4+PiBw dGUgaW4KPj4+Pj4+Pj4+Pj4gdGhlIGJhdGNoLiBXaGlsZSB0aGlzIGlzIGZ1bmN0aW9uYWxseSBj b3JyZWN0LCBvbmNlIGFybTY0IGhhcyB0aGUgY29udHB0ZQo+Pj4+Pj4+Pj4+PiBjaGFuZ2VzLCBp dHMgcHRlcF9nZXQoKSBoYXMgdG8gcmVhZCBldmVyeSBwdGUgaW4gdGhlIGNvbnRwdGUgYmxvY2sg aW4KPj4+Pj4+Pj4+Pj4gb3JkZXIgdG8KPj4+Pj4+Pj4+Pj4gZ2F0aGVyIHRoZSBhY2Nlc3MgYW5k IGRpcnR5IGJpdHMuIFNvIGlmIHlvdXIgYmF0Y2hpbmcgZnVuY3Rpb24gZW5kcyB1cAo+Pj4+Pj4+ Pj4+PiB3ZWFsa2luZwo+Pj4+Pj4+Pj4+PiBhIDE2IGVudHJ5IGNvbnRwdGUgYmxvY2ssIHRoYXQg d2lsbCBjYXVzZSAxNiB4IDE2IHJlYWRzLCB3aGljaCBraWxscwo+Pj4+Pj4+Pj4+PiBwZXJmb3Jt YW5jZS4gVGhhdCdzIHdoeSBJIGFkZGVkIHRoZSBhcmNoLXNwZWNpZmljIHB0ZV9iYXRjaF9yZW1h aW5pbmcoKQo+Pj4+Pj4+Pj4+PiBmdW5jdGlvbjsgdGhpcyBhbGxvd3MgdGhlIGNvcmUtbW0gdG8g c2tpcCB0byB0aGUgZW5kIG9mIHRoZSBjb250cHRlCj4+Pj4+Pj4+Pj4+IGJsb2NrIGFuZAo+Pj4+ Pj4+Pj4+PiBhdm9pZCBwdGVwX2dldCgpIGZvciB0aGUgMTUgdGFpbCBwdGVzLiBTbyB3ZSBlbmQg dXAgd2l0aCAxNiBSRUFEX09OQ0UoKXMKPj4+Pj4+Pj4+Pj4gaW5zdGVhZAo+Pj4+Pj4+Pj4+PiBv ZiAyNTYuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IEkgY29uc2lkZXJlZCBtYWtpbmcgYSBwdGVw X2dldF9ub3lvdW5nZGlydHkoKSB2YXJpYW50LCB3aGljaCB3b3VsZCBhdm9pZAo+Pj4+Pj4+Pj4+ PiB0aGUKPj4+Pj4+Pj4+Pj4gYml0Cj4+Pj4+Pj4+Pj4+IGdhdGhlcmluZy4gQnV0IHdlIGhhdmUg YSBzaW1pbGFyIHByb2JsZW0gaW4gemFwX3B0ZV9yYW5nZSgpIGFuZCB0aGF0Cj4+Pj4+Pj4+Pj4+ IGZ1bmN0aW9uCj4+Pj4+Pj4+Pj4+IG5lZWRzIHRoZSBkaXJ0eSBiaXQgdG8gdXBkYXRlIHRoZSBm b2xpby4gU28gaXQgZG9lc24ndCB3b3JrIHRoZXJlLiAoc2VlCj4+Pj4+Pj4+Pj4+IHBhdGNoIDMK Pj4+Pj4+Pj4+Pj4gaW4gbXkgc2VyaWVzKS4KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gSSBndWVz cyB5b3UgYXJlIGdvaW5nIHRvIHNheSB0aGF0IHdlIHNob3VsZCBjb21iaW5lIGJvdGggYXBwcm9h Y2hlcywgc28KPj4+Pj4+Pj4+Pj4gdGhhdAo+Pj4+Pj4+Pj4+PiB5b3VyIGJhdGNoaW5nIGxvb3Ag Y2FuIHNraXAgZm9yd2FyZCBhbiBhcmNoLXByb3ZpZGVkIG51bWJlciBvZiBwdGVzPyBUaGF0Cj4+ Pj4+Pj4+Pj4+IHdvdWxkCj4+Pj4+Pj4+Pj4+IGNlcnRhaW5seSB3b3JrLCBidXQgZmVlbHMgbGlr ZSBhbiBvcnRob2dvbmFsIGNoYW5nZSB0byB3aGF0IEknbSB0cnlpbmcgdG8KPj4+Pj4+Pj4+Pj4g YWNoaWV2ZSA6KS4gQW55d2F5LCBJJ2xsIHNwZW5kIHNvbWUgdGltZSBwbGF5aW5nIHdpdGggaXQg dG9kYXkuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBZb3UgY2FuIG92ZXJ3cml0ZSB0aGUgZnVuY3Rp b24gb3IgYWRkIHNwZWNpYWwtY2FzaW5nIGludGVybmFsbHksIHllcy4KPj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+IFJpZ2h0IG5vdywgeW91ciBwYXRjaCBpcyBjYWxsZWQgIm1tOiBCYXRjaC1jb3B5IFBU RSByYW5nZXMgZHVyaW5nIGZvcmsoKSIKPj4+Pj4+Pj4+PiBhbmQgaXQKPj4+Pj4+Pj4+PiBkb2Vz bid0IGRvIGFueSBvZiB0aGF0IGJlc2lkZXMgcHJlcGFyaW5nIGZvciBzb21lIGFybTY0IHdvcmsu Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBXZWxsIGl0IGFsbG93cyBhbiBhcmNoIHRv IG9wdC1pbiB0byBiYXRjaGluZy4gQnV0IEkgc2VlIHlvdXIgcG9pbnQuCj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4gSG93IGRvIHlvdSB3YW50IHRvIGhhbmRsZSB5b3VyIHBhdGNoZXM/IERvIHlvdSB3YW50 IHRvIGNsZWFuIHRoZW0gdXAgYW5kCj4+Pj4+Pj4+PiBJJ2xsCj4+Pj4+Pj4+PiBiYXNlIG15IHN0 dWZmIG9uIHRvcD8gT3IgZG8geW91IHdhbnQgbWUgdG8gdGFrZSB0aGVtIGFuZCBzb3J0IGl0IGFs bCBvdXQ/Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFdoYXRldmVyIHlvdSBwcmVmZXIsIGl0IHdhcyBtb3N0 bHkgYSBxdWljayBwcm90b3R5cGUgdG8gc2VlIGlmIHdlIGNhbgo+Pj4+Pj4+PiBhY2hpZXZlCj4+ Pj4+Pj4+IGRlY2VudCBwZXJmb3JtYW5jZS4KPj4+Pj4+Pgo+Pj4+Pj4+IEknbSBhYm91dCB0byBy dW4gaXQgb24gQWx0cmEgYW5kIE0yLiBCdXQgSSBhc3N1bWUgaXQgd2lsbCBzaG93IHNpbWlsYXIK Pj4+Pj4+PiByZXN1bHRzLgo+Pj4+Pgo+Pj4+PiBPSyByZXN1bHRzIGluLCBub3QgbG9va2luZyBn cmVhdCwgd2hpY2ggYWxpZ25zIHdpdGggbXkgcHJldmlvdXMgZXhwZXJpZW5jZS4KPj4+Pj4gVGhh dAo+Pj4+PiBzYWlkLCBJJ20gc2VlaW5nIHNvbWUgIkJVRzogQmFkIHBhZ2Ugc3RhdGUgaW4gcHJv Y2VzcyBnbWFpbsKgIHBmbjoxMmEwOTQiIHNvCj4+Pj4+IHBlcmhhcHMgdGhlc2UgcmVzdWx0cyBh cmUgbm90IHZhbGlkLi4uCj4+Pj4KPj4+PiBJIGRpZG4ndCBzZWUgdGhhdCBzbyBmYXIgb24geDg2 LCBtYXliZSByZWxhdGVkIHRvIHRoZSBQRk4gZml4dXA/Cj4+Pgo+Pj4gQWxsIEkndmUgZG9uZSBp cyBkZWZpbmUgUEZOX1BURV9TSElGVCBmb3IgYXJtNjQgb24gdG9wIG9mIHlvdXIgbGF0ZXN0IHBh dGNoOgo+Pj4KPj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUu aCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4+PiBpbmRleCBiMTlhOGFlZTY4 NGMuLjllYjBmZDY5M2RmOSAxMDA2NDQKPj4+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v cGd0YWJsZS5oCj4+PiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+Pj4g QEAgLTM1OSw2ICszNTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3B0ZXMoc3RydWN0IG1t X3N0cnVjdCAqbW0sCj4+PiAgwqAgfQo+Pj4gIMKgICNkZWZpbmUgc2V0X3B0ZXMgc2V0X3B0ZXMK Pj4+ICDCoCArI2RlZmluZSBQRk5fUFRFX1NISUZUwqDCoMKgwqDCoMKgwqDCoMKgIFBBR0VfU0hJ RlQKPj4+ICsKPj4+ICDCoCAvKgo+Pj4gIMKgwqAgKiBIdWdlIHB0ZSBkZWZpbml0aW9ucy4KPj4+ ICDCoMKgICovCj4+Pgo+Pj4KPj4+IEFzIGFuIGFzaWRlLCBJIHRoaW5rIHRoZXJlIGlzIGEgYnVn IGluIGFybTY0J3Mgc2V0X3B0ZXMoKSBmb3IgUEEgPiA0OC1iaXQKPj4+IGNhc2UuIEJ1dCB0aGF0 IHdvbid0IGFmZmVjdCB0aGlzLgo+Pj4KPj4+Cj4+PiBXaXRoIFZNX0RFQlVHIG9uLCB0aGlzIGlz IHRoZSBmaXJzdCB3YXJuaW5nIEkgc2VlIGR1cmluZyBib290Ogo+Pj4KPj4+Cj4+PiBbwqDCoMKg IDAuMjc4MTEwXSBwYWdlOjAwMDAwMDAwYzdjZWQ0ZTggcmVmY291bnQ6MTIgbWFwY291bnQ6MAo+ Pj4gbWFwcGluZzowMDAwMDAwMGIyZjk3MzliIGluZGV4OjB4MWE4IHBmbjoweDFiZmYzMAo+Pj4g W8KgwqDCoCAwLjI3ODc0Ml0gaGVhZDowMDAwMDAwMGM3Y2VkNGU4IG9yZGVyOjIgZW50aXJlX21h cGNvdW50OjAKPj4+IG5yX3BhZ2VzX21hcHBlZDoyIHBpbmNvdW50OjAKPj4KPj4gXiBBaCwgeW91 IGFyZSBydW5uaW5nIHdpdGggbVRIUC4gTGV0IG1lIHBsYXkgd2l0aCB0aGF0Lgo+IAo+IEVyci4u LiBJdHMgaW4gbW0tdW5zdGFibGUsIGJ1dCBJJ20gbm90IGVuYWJsaW5nIGFueSBzaXplcy4gSXQg c2hvdWxkIG9ubHkgYmUgc2V0Cj4gdXAgZm9yIFBNRC1zaXplZCBUSFAuCj4gCj4gSSBhbSB1c2lu ZyBYRlMgdGhvdWdoLCBzbyBJIGltYWdpbmUgaXRzIGEgZmlsZSBmb2xpby4KPiAKPiBJJ3ZlIHJl YmFzZWQgeW91ciBybWFwIGNsZWFudXAgYW5kIGZvcmsgYmF0Y2hpbmcgdG8gdGhlIHZlcnNpb24g b2YgbW0tdW5zdGFibGUKPiB0aGF0IEkgd2FzIGRvaW5nIGFsbCBteSBvdGhlciB0ZXN0aW5nIHdp dGggc28gSSBjb3VsZCBjb21wYXJlIG51bWJlcnMuIEJ1dCBpdHMKPiBub3QgdmVyeSBvbGQgKHBl cmhhcHMgYSB3ZWVrKS4gQWxsIHRoZSBwYXRjaGVzIGFwcGxpZWQgd2l0aG91dCBhbnkgY29uZmxp Y3QuCgpJIHRoaW5rIGl0IHdhcyBzb21ldGhpbmcgc3R1cGlkOiBJIHdvdWxkIGdldCAiMTciIGZy b20gZm9saW9fcHRlX2JhdGNoKCkgCmZvciBhbiBvcmRlci00IGZvbGlvLCBidXQgb25seSBzb21l dGltZXMuIFRoZSBybWFwIHNhbml0eSBjaGVja3Mgd2VyZSAKZGVmaW5pdGVseSB3b3J0aCBpdCA6 KQoKSSBndWVzcyB3ZSBoaXQgdGhlIGNhc2UgIm5leHQgbWFwcGVkIGZvbGlvIGlzIGFjdHVhbGx5 IHRoZSBuZXh0IHBoeXNpY2FsIApmb2xpbyIgYW5kIHRoZSBkZXRlY3Rpb24gZm9yIHRoYXQgd2Fz IG9mZiBieSBvbmUuCgpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuYwppbmRl eCAxODdkMWI5YjcwZTIuLjJhZjM0YWRkN2VkNyAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5LmMKKysr IGIvbW0vbWVtb3J5LmMKQEAgLTk3NSw3ICs5NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBmb2xp b19wdGVfYmF0Y2goc3RydWN0IGZvbGlvIAoqZm9saW8sIHVuc2lnbmVkIGxvbmcgYWRkciwKICAg ICAgICAgICAgICAgICAgKiBjb3JuZXIgY2FzZXMgdGhlIG5leHQgUEZOIG1pZ2h0IGZhbGwgaW50 byBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAqIGZvbGlvLgogICAgICAgICAgICAgICAg ICAqLwotICAgICAgICAgICAgICAgaWYgKHB0ZV9wZm4ocHRlKSA9PSBmb2xpb19lbmRfcGZuIC0g MSkKKyAgICAgICAgICAgICAgIGlmIChwdGVfcGZuKHB0ZSkgPT0gZm9saW9fZW5kX3BmbikKICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKQnJpZWZseSB0ZXN0ZWQsIGhhdmUgdG8gZG8g bW9yZSB0ZXN0aW5nLgoKSSBvbmx5IHRlc3RlZCB3aXRoIG9yZGVyLTksIHdoaWNoIG1lYW5zIG1h eF9uciB3b3VsZCBjYXAgYXQgNTEyLiAKU2hvdWxkbid0IGFmZmVjdCB0aGUgcGVyZm9ybWFuY2Ug bWVhc3VyZW1lbnRzLCB3aWxsIHJlZG8gdGhlbS4KCi0tIApDaGVlcnMsCgpEYXZpZCAvIGRoaWxk ZW5iCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=