Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w0HkB-001mHQ-0c for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Mar 2026 11:28:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0Hk9-008iyi-1A for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Mar 2026 11:28:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1w0Hk8-008iyZ-1l for pgsql-hackers@lists.postgresql.org; Wed, 11 Mar 2026 11:28:49 +0000 Received: from mail-yx1-xb134.google.com ([2607:f8b0:4864:20::b134]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1w0Hk3-00000001bIC-3Yds for pgsql-hackers@lists.postgresql.org; Wed, 11 Mar 2026 11:28:48 +0000 Received: by mail-yx1-xb134.google.com with SMTP id 956f58d0204a3-64aedd812baso12733813d50.3 for ; Wed, 11 Mar 2026 04:28:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773228523; cv=none; d=google.com; s=arc-20240605; b=isLArF1ULgEkP0g1rLbHB+wuAW2Zh8Kg+SdwGeBeZQXqA9Ae2ztBKLm/kiKmgrZtSC mRoEtydbYv133agU577XzEpXzGq/XeHxLS382cJbCc+JWaYwvZ/enSCpLWS7fsayjk51 8GL88tVfI1KMjnc2eOVreRI4r+GbM3tYgriZi9CVDCLXQPFPWVOAUWzC2ABZwavtwERZ rvwYCZdQM+xcBtGSi6t756N0I31Nac9x2vm6PXokJoChbaUXH/z7yo4caCsazFrvi36p OQdZo5jvgw4HcjrXuzyTTfC/421QqoNRlYZCV740NgK4LXJ/fe6wGYL3Jw83SDGgKxr3 SKAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=GhfaVo+0Xuy/DfkafesOC9pVJdm8XpuijHKbFMnO+jw=; fh=GTg78PtGQ7G3WtN8Ao/7Oa8WZFcmmWA/C/ikgyzUKMQ=; b=lF+i/j0wKrtLzAIIU3/55q6Tm3NizdkY89QMk8M0k7WrX8uRZFNCXYP8MEqiX1ScnO Xtz4TUQBh0XUSqOPKpnRN6i1KDajjDd6xTCGxCOGc7K3ZSw6pbTDQdTTlgz11Tpb8SXy 2hn9bQFqMoGPmTstnv/GWki+LWVeFOz22k8GysPzx9EaXd/bBC+P4QlEPX6f7LlOalMt tVXfi2qRC4+pS/r9xDeXXabS5Kod1KXBZcjY9WIn253iSiZJZy/JAOOktzhsqwVPaTVy oT9V5EwmZckWSXO11PMJMBv/ii7pN0UOW+olW9ABOOw7ZZqHxyn5kX9vAzL1oRHno7k/ dZ8Q==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773228523; x=1773833323; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GhfaVo+0Xuy/DfkafesOC9pVJdm8XpuijHKbFMnO+jw=; b=YCiFZejlRvYKkgsy0cFvAZWFx39fjhHebfYTvYW0/tJkW8rw2RXvdrk7tFtOXPGoev lW2SYMLe33CezuBanBgyPjHNzZZVA8yGq/OmKZ3r3ZNE7DqO1VHzRK+PKADEska9sXv5 DmigxD0nR6VJEFWOe8Tem1kM0UPP7IcWFmPz+EmFt3hNDJ3BBeTyudxCfT8oFIqfOTAo +T5A5YOCee7gj2s7wLl+LyFBr2UBW5PvPXePgUup7cKJqRDp1GGAq8NpKU1wTC1BBK3x qoweheg6ppxmg0wbL60IvkyZF/mmrNZpwgs9efQJSsIlA5I2sPtA4xm1lJehWmN6hl7R 0KZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773228523; x=1773833323; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GhfaVo+0Xuy/DfkafesOC9pVJdm8XpuijHKbFMnO+jw=; b=Z71qV1b8ENwzzX0DbLSlxUdxsqCH8vSYIElXvC+jQLbyChQGxjEGM43CIWjrdmfSLP o0Y9jOEuLnVii1VVux8cWMZ1ZGWBiwwDe+Ry3Q3q4vhwDXtB6Ytsug0uTGTrSVzXmY3E AUN7NobUR8qFo/RDdu3QQ9WAJbgP4nkxAtqCoP1dr1ZbzNWDL7r8jT1zv/XMEODMzoJ0 UoJLg6VnTFB6Ssl166S31otBruaNvXULMzk8q6xkiLr2m9o9eGND5sO4ldsY9AXmUrvW //Pp8Z/o8FGYJpMyx4ouKo/bj9buXaqmSNRzVTfCoqZgdYhBfCieuM7xRjW/eougXbM+ jwVA== X-Forwarded-Encrypted: i=1; AJvYcCXw23Kbltwm6g4bQn+hNtthIZt4fyXD62+JB6NKmSEcTPO+I1OGJIi8Rin+V4ScXvR0RlkaOYBAGSATE5bQ@lists.postgresql.org X-Gm-Message-State: AOJu0Yx6tc3dWG6VQkcMcWhFlLAPXzHFE1OYILjd9ZnQ/wXCjTeoKRmh GGK6Pb5eSOlvGVi2AnaENXMQ+BnGUsCByTXr3EjQtbEm3AnGtJpl2apk1xslbyBT4cNCSawT55c yfY5oWbE+27v7eG+Ley339uMqDMLOBh0= X-Gm-Gg: ATEYQzzVOqdfbw6iGTrIwUZKODFukUKDfQZfG8Fa0TxTC6l8vNca/UP74blsmLvzJpi +vmAAya0h42vI6Q3t29O4/HBILKjpGtcl537PUNeKjMEJqBfLn3CuGvhsE1ukOWs+u4EWPdjTjd 6L387GDrTlniw91mWqgusyBG9jrblAIj1DSmDWTeLyfTTaR3SYZMjusWgjVk1vyRalc4dYMtvb5 ALhmtM1H2Yz9m3SZWQbYY5WFEXJ52GBu2Qy2DVBglf0ajgBK3oPXmM8tpc4Bd/CaKDt+ORx/5Qj LE59Fz0R X-Received: by 2002:a53:c7d0:0:b0:64d:294e:8438 with SMTP id 956f58d0204a3-64d657bd9b2mr1208259d50.42.1773228523098; Wed, 11 Mar 2026 04:28:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Wed, 11 Mar 2026 18:28:30 +0700 X-Gm-Features: AaiRm50oKUDPp4HuPdEEirBDhiPFC7eFV8_yrzoLQQSkisZ-LXADxXOPADnnbQE Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000039f23a064cbdf03e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000039f23a064cbdf03e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Wed, Mar 11, 2026 at 1:14=E2=80=AFAM Masahiko Sawada wrote: > > On Tue, Mar 3, 2026 at 10:59=E2=80=AFPM Daniil Davydov <3danissimo@gmail.= com> wrote: > > > > So, my point was : why should we have this explicit limitation if it > > 1) doesn't guard us from something bad and 2) can be violated at any ti= me > > (via ALTER SYSTEM SET ...). > > > > Now it seems to me that limiting our parameter by max_parallel_workers = is > > more about grouping of logically related parameters, not a practical ne= cessity. > > I believe there is also a benefit for users when they want to disable > all parallel behavior. If av_max_parallel_workers is in > max_parallel_worker group, they would have to set just > max_parallel_workers to 0. Otherwise, they would have to set both > max_parallel_workers and av_max_parallel_workers. > OK, thank you for the explanation! > I agree that we need to make sure that parallel workers are released > even during ERROR handling, but I don't think it's important to check > the places where AutoVacuumReleaesAllParallelWorkers() is called, by > using regression tests. It's more important and future-proof that we > check if all workers are released according to the shmem data. In > other words, even if we call AutoVacuumReleaseAllParallelWorkers() in > an unexpected call path in an ERROR case, it's still okay if we > successfully release all workers in the end. These regression tests > should test these database behavior but not what specific code path > taken. Indeed, I can't remember where else in the tests we check the passage along specific code paths in this way. > If we can check if all workers are released by checking the > shmem, why do we need to check further where they are released? My point of view was that this code path is so important that we need to test it (important in terms of performance). But of course even if for some reason we cannot release workers inside the try/catch block, we can still be sure that they will be released somewh= ere else, because we have tested it. > I think we should not make the function complex just for testing > purposes. My point is that what we should be testing is the behavior > -- specifically whether parallel workers are released at the expected > timing -- rather than focusing on whether a specific code path was > executed. You've convinced me :) I'll add a log to the "ReleaseWorkers" function and tests will only search for it. > While I agree that showing only two numbers might lack some > information for users, I guess the same is true for > max_parallel_maintenance_workers or other parallel queries related to > GUC parameters. For instance, suppose we set > max_parallel_maintenance_workers to 2, if the table has (large enough) > 4 indexes, we would plan to execute a parallel vacuum with 2 workers > instead of 4 due to max_parallel_maintenance_worker shortage and it's > even possible that only 1 worker can launch due to > max_worker_processes shortage. In this case, we currently consider > that 2 workers are planned. Isn't it the same situation as the case > where we reserved 2 parallel vacuum workers for autovacuum for the > table with 4 indexes? I don't think that examples with other "max_parallel_" parameters will be appropriate, because these parameters are limiting the number of parallel workers for *single* operation/executor node/... . At the same time, av_max_parallel_workers limits the total number of parallel workers across all a/v leaders. Regarding the situation that you provided : The number of planned workers is reduced inside the parallel_vacuum_compute_workers due to the max_parallel_maintenance_workers limit. I.e. we cannot plan more workers than required by the config, and it's completely OK No one expects the number of "planned workers" to be mor= e than max_parallel_maintenance_workers. IMO there is no need to make efforts to track the shortage of max_parallel_maintenance_workers for the VACUUM (PARALLEL), because this parameter just plays the role of a limiter. We will consider only the shortage of max_parallel_workers, that can be determined by looking at "planned vs. launched". And here is a difference with a parallel autovacuum : av_max_parallel_workers is considered twice : in the "parallel_vacuum_compute_workers" and "ReserveWorkers" functions. So the low number of launched workers can be explained by the shortage of both av_max_parallel_workers and max_parallel_workers. Since we want to distinguish between these cases, we have added the "nreserved" concept. I see that few modules can report something like "out of background worker slots" when they cannot launch more workers due to max_parallel_workers shortage (but modules depending on the "parallel.c" logic don't do so). This fact gave me another idea : If we don't want to log "nreserved" or some other similar value, maybe we should add logging after the "ReserveWorkers" function? I.e. if some workers cannot be reserved, we can emit a log like "out of parallel autovacuum workers. you should increase the av_max_parallel_workers parameter". Having this log can help the user distinguish between max_parallel_workers/av_max_parallel_workers shortage situations. What do you think? Summary : 1) I think that we should not look at maintenance vacuum while considering how to inform the user about parameters shortage for autovacuum= , because we have a more complicated situation in case of autovacuum. 2) I suggest adding a separate log that will be emitted every time we are unable to start workers due to a shortage of av_max_parallel_workers. > > I don't mind, but I don't quite understand the reason. We assume that t= he > > minimal value for both variables is 0. Why shouldn't we use unsigned > > data type? > > Unsigned integers should be used for bit masks, flags, or when we need > to handle more than INT_MAX. Signed integers are preferable in other > cases as we're using signed integers for controlling the number of > workers and autovacuum_max_parallel_workers is defined as signed int > (which could be stored to AutoVacuumShmem->av_maxParallelWorkers). I understood, thank you. > * 0001 patch: > > + /* Cannot release more workers than reserved */ > + Assert(nworkers <=3D av_nworkers_reserved); > > I think it's better to use Min() to cap the number of workers to be > released by av_nworkers_reserved as Assert() won't work in release > builds. I agree. > * 0004 patch: > > Can we write the same test cases while not relying on the 0002 patch > (i.e., worker usage logging)? We check the worker usage log at two > places in the regression tests. The idea is that we write the number > of workers planned, reserved, and launched in DEBUG log level and > check these logs in the regression tests. The patch 0001, 0003, and > 0004 can be merged before push while we might want more discussion on > the 0002 patch. Possibly we can introduce a new injection point, or a new log for it. But I assume that the subject of discussion in patch 0002 is the "nreserved" logic, and "nlaunched/nplanned" logic does not raise any questions. I suggest splitting the 0002 patch into two parts : 1) basic logic and 2) additional logic with nreserved or something else. The second part can b= e discussed in isolation from the patch set. If we do this, we may not have t= o change the tests. What do you think? Thank you for the review! Please, see the updated set of patches. I haven't touched patch 0002 yet, because I'd like to hear your opinion on my suggestions above first. -- Best regards, Daniil Davydov --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Disposition: attachment; filename="v25-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydqi42 RnJvbSBlM2JmOGMxZGJjNTQ1OGVmOGVjMTNiNTQzYzYzZGM3MzFhNzQyMjk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUaHUsIDE1IEphbiAyMDI2IDIzOjE1OjQ4ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjUgMy81XSBDb3N0IGJhc2VkIHBhcmFtZXRlcnMgcHJvcGFnYXRpb24gZm9yIHBhcmFsbGVs CiBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAg fCAgMjEgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDE1NyAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8 ICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgICAxICsKIDUg ZmlsZXMgY2hhbmdlZCwgMTgwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwppbmRleCBiY2UzYTJkYWEyNC4uMWI1YmEzY2UxZWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bS5jCkBAIC0yNDM1LDggKzI0MzUsMTkgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNf YW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwKLQkJKCFWYWN1dW1Db3N0 QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAoSW50ZXJydXB0UGVuZGluZykK KwkJcmV0dXJuOworCisJaWYgKElzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFVw ZGF0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBhIHBhcmFsbGVsIGF1 dG92YWN1dW0KKwkJICogd29ya2VyIGlmIGFueSBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4KKwkJICov CisJCXBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKwor CWlmICghVmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0dXJu OwogCiAJLyoKQEAgLTI0NTAsNiArMjQ2MSwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBp c19hbmFseXplKQogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJCSAq IFByb3BhZ2F0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIHRvIHNoYXJlZCBt ZW1vcnkgaWYKKwkJICogYW55IG9mIHRoZW0gaGF2ZSBjaGFuZ2VkIGR1cmluZyB0aGUgY29uZmln IHJlbG9hZC4KKwkJICovCisJCXBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2RlbGF5 X3BhcmFtcygpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpp bmRleCA2NDM4NDliMmZiOC4uMTMzMDRjNDBiNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYwpAQCAtMTgsNiArMTgsMTMgQEAKICAqIHRoZSBwYXJhbGxlbCBjb250ZXh0IGlz IHJlLWluaXRpYWxpemVkIHNvIHRoYXQgdGhlIHNhbWUgRFNNIGNhbiBiZSB1c2VkIGZvcgogICog bXVsdGlwbGUgcGFzc2VzIG9mIGluZGV4IGJ1bGstZGVsZXRpb24gYW5kIGluZGV4IGNsZWFudXAu CiAgKgorICogRm9yIHBhcmFsbGVsIGF1dG92YWN1dW0sIHdlIG5lZWQgdG8gcHJvcGFnYXRlIGNv c3QtYmFzZWQgdmFjdXVtIGRlbGF5CisgKiBwYXJhbWV0ZXJzIGZyb20gdGhlIGxlYWRlciB0byBp dHMgd29ya2VycywgYXMgdGhlIGxlYWRlcidzIHBhcmFtZXRlcnMgY2FuCisgKiBjaGFuZ2UgZXZl biB3aGlsZSBwcm9jZXNzaW5nIGEgdGFibGUgKGUuZy4sIGR1ZSB0byBhIGNvbmZpZyByZWxvYWQp LgorICogVGhlIFBWU2hhcmVkQ29zdFBhcmFtcyBzdHJ1Y3QgbWFuYWdlcyB0aGVzZSBwYXJhbWV0 ZXJzIHVzaW5nIGEKKyAqIGdlbmVyYXRpb24gY291bnRlci4gRWFjaCBwYXJhbGxlbCB3b3JrZXIg cG9sbHMgdGhpcyBzaGFyZWQgc3RhdGUgYW5kCisgKiByZWZyZXNoZXMgaXRzIGxvY2FsIGRlbGF5 IHBhcmFtZXRlcnMgd2hlbmV2ZXIgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisgKgogICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoKQEAgLTU0LDYgKzYxLDMxIEBACiAjZGVmaW5lIFBB UkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFCQk0CiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfSU5ERVhfU1RBVFMJCTUKIAorLyoKKyAqIFN0cnVjdCBmb3IgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgcmVsYXRlZCBwYXJhbWV0ZXJzIHRvIHNoYXJlIGFtb25nIGFuCisgKiBhdXRvdmFjdXVt IHdvcmtlciBhbmQgaXRzIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0 cnVjdCBQVlNoYXJlZENvc3RQYXJhbXMKK3sKKwkvKgorCSAqIFRoZSBnZW5lcmF0aW9uIGNvdW50 ZXIgaXMgaW5jcmVtZW50ZWQgYnkgdGhlIGxlYWRlciBwcm9jZXNzIGVhY2ggdGltZQorCSAqIGl0 IHVwZGF0ZXMgdGhlIHNoYXJlZCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzLiBQ YXJhbGVsbAorCSAqIHZhY3V1bSB3b3JrZXJzIGNvbXBhcmVzIGl0IHdpdGggdGhlaXIgbG9jYWwg Z2VuZXJhdGlvbiwKKwkgKiBzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwsIHRvIGRldGVj dCB3aGV0aGVyIHRoZXkgbmVlZCB0byByZWZyZXNoCisJICogdGhlaXIgbG9jYWwgcGFyYW1ldGVy cy4KKwkgKi8KKwlwZ19hdG9taWNfdWludDMyIGdlbmVyYXRpb247CisKKwlzbG9ja190CQltdXRl eDsJCQkvKiBwcm90ZWN0cyBhbGwgZmllbGRzIGJlbG93ICovCisKKwkvKiBQYXJhbWV0ZXJzIHRv IHNoYXJlIHdpdGggcGFyYWxsZWwgd29ya2VycyAqLworCWRvdWJsZQkJY29zdF9kZWxheTsKKwlp bnQJCQljb3N0X2xpbWl0OworCWludAkJCWNvc3RfcGFnZV9kaXJ0eTsKKwlpbnQJCQljb3N0X3Bh Z2VfaGl0OworCWludAkJCWNvc3RfcGFnZV9taXNzOworfSBQVlNoYXJlZENvc3RQYXJhbXM7CisK IC8qCiAgKiBTaGFyZWQgaW5mb3JtYXRpb24gYW1vbmcgcGFyYWxsZWwgd29ya2Vycy4gIFNvIHRo aXMgaXMgYWxsb2NhdGVkIGluIHRoZSBEU00KICAqIHNlZ21lbnQuCkBAIC0xMjMsNiArMTU1LDE4 IEBAIHR5cGVkZWYgc3RydWN0IFBWU2hhcmVkCiAKIAkvKiBTdGF0aXN0aWNzIG9mIHNoYXJlZCBk ZWFkIGl0ZW1zICovCiAJVmFjRGVhZEl0ZW1zSW5mbyBkZWFkX2l0ZW1zX2luZm87CisKKwkvKgor CSAqIElmICd0cnVlJyB0aGVuIHdlIGFyZSBydW5uaW5nIHBhcmFsbGVsIGF1dG92YWN1dW0uIE90 aGVyd2lzZSwgd2UgYXJlCisJICogcnVubmluZyBwYXJhbGxlbCBtYWludGVuZW5jZSBWQUNVVU0u CisJICovCisJYm9vbAkJaXNfYXV0b3ZhY3V1bTsKKworCS8qCisJICogU3RydWN0IGZvciBzeW5j aW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgYmV0d2VlbgorCSAqIHN1cHBv cnRpdmUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHdpdGggbGVhZGVyIHdvcmtlci4KKwkg Ki8KKwlQVlNoYXJlZENvc3RQYXJhbXMgY29zdF9wYXJhbXM7CiB9IFBWU2hhcmVkOwogCiAvKiBT dGF0dXMgdXNlZCBkdXJpbmcgcGFyYWxsZWwgaW5kZXggdmFjdXVtIG9yIGNsZWFudXAgKi8KQEAg LTIyNSw2ICsyNjksMTEgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAlQVkluZFZhY1N0 YXR1cyBzdGF0dXM7CiB9OwogCitzdGF0aWMgUFZTaGFyZWRDb3N0UGFyYW1zICpwdl9zaGFyZWRf Y29zdF9wYXJhbXMgPSBOVUxMOworCisvKiBTZWUgY29tbWVudHMgaW4gdGhlIFBWU2hhcmVkQ29z dFBhcmFtcyBmb3IgdGhlIGRldGFpbHMgKi8KK3N0YXRpYyB1aW50MzIgc2hhcmVkX3BhcmFtc19n ZW5lcmF0aW9uX2xvY2FsID0gMDsKKwogc3RhdGljIGludAlwYXJhbGxlbF92YWN1dW1fY29tcHV0 ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVk LAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFsbGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9pZCBw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMsIGludCBudW1faW5kZXhfc2NhbnMsCkBAIC0yMzYsNiArMjg1LDcgQEAgc3RhdGljIHZvaWQg cGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgUmVsYXRpb24KIHN0YXRpYyBib29sIHBhcmFsbGVsX3ZhY3V1bV9pbmRleF9pc19wYXJhbGxl bF9zYWZlKFJlbGF0aW9uIGluZHJlbCwgaW50IG51bV9pbmRleF9zY2FucywKIAkJCQkJCQkJCQkJ CSAgIGJvb2wgdmFjdXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9lcnJvcl9jYWxs YmFjayh2b2lkICphcmcpOworc3RhdGljIGlubGluZSB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9zZXRf Y29zdF9wYXJhbWV0ZXJzKFBWU2hhcmVkQ29zdFBhcmFtcyAqcGFyYW1zKTsKIAogLyoKICAqIFRy eSB0byBlbnRlciBwYXJhbGxlbCBtb2RlIGFuZCBjcmVhdGUgYSBwYXJhbGxlbCBjb250ZXh0LiAg VGhlbiBpbml0aWFsaXplCkBAIC0zOTYsNiArNDQ2LDIxIEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlwZ19hdG9t aWNfaW5pdF91MzIoJihzaGFyZWQtPmFjdGl2ZV9ud29ya2VycyksIDApOwogCXBnX2F0b21pY19p bml0X3UzMigmKHNoYXJlZC0+aWR4KSwgMCk7CiAKKwlzaGFyZWQtPmlzX2F1dG92YWN1dW0gPSBB bUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgc2hhcmVk IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgaWYgaXQncyBmb3IKKwkgKiBhdXRv dmFjdXVtLgorCSAqLworCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJeworCQlwYXJhbGxl bF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycygmc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisJCXBn X2F0b21pY19pbml0X3UzMigmc2hhcmVkLT5jb3N0X3BhcmFtcy5nZW5lcmF0aW9uLCAwKTsKKwkJ U3BpbkxvY2tJbml0KCZzaGFyZWQtPmNvc3RfcGFyYW1zLm11dGV4KTsKKworCQlwdl9zaGFyZWRf Y29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJhbXMpOworCX0KKwogCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9TSEFSRUQsIHNoYXJlZCk7CiAJcHZz LT5zaGFyZWQgPSBzaGFyZWQ7CiAKQEAgLTU0MCw2ICs2MDUsOTUgQEAgcGFyYWxsZWxfdmFjdXVt X2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90 YWJsZV90dXAKIAkJCQkJCQkJCQkmd3VzYWdlLT5jbGVhbnVwKTsKIH0KIAorLyoKKyAqIEZpbGwg aW4gdGhlIGdpdmVuIHN0cnVjdHVyZSB3aXRoIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFt ZXRlciB2YWx1ZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGFyYWxsZWxfdmFjdXVtX3Nl dF9jb3N0X3BhcmFtZXRlcnMoUFZTaGFyZWRDb3N0UGFyYW1zICpwYXJhbXMpCit7CisJcGFyYW1z LT5jb3N0X2RlbGF5ID0gdmFjdXVtX2Nvc3RfZGVsYXk7CisJcGFyYW1zLT5jb3N0X2xpbWl0ID0g dmFjdXVtX2Nvc3RfbGltaXQ7CisJcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1dW1Db3N0 UGFnZURpcnR5OworCXBhcmFtcy0+Y29zdF9wYWdlX2hpdCA9IFZhY3V1bUNvc3RQYWdlSGl0Owor CXBhcmFtcy0+Y29zdF9wYWdlX21pc3MgPSBWYWN1dW1Db3N0UGFnZU1pc3M7Cit9CisKKy8qCisg KiBVcGRhdGVzIHRoZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBwYXJh bGxlbCBhdXRvdmFjdXVtCisgKiB3b3JrZXJzLgorICoKKyAqIEZvciBub24tYXV0b3ZhY3V1bSBw YXJhbGxlbCB3b3JrZXIgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICovCit2 b2lkCitwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sK Kwl1aW50MzIJCXBhcmFtc19nZW5lcmF0aW9uOworCisJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIo KSk7CisKKwkvKiBRdWljayByZXR1cm4gaWYgdGhlIHdva3JlciBpcyBub3QgcnVubmluZyBmb3Ig dGhlIGF1dG92YWN1dW0gKi8KKwlpZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJ CXJldHVybjsKKworCXBhcmFtc19nZW5lcmF0aW9uID0gcGdfYXRvbWljX3JlYWRfdTMyKCZwdl9z aGFyZWRfY29zdF9wYXJhbXMtPmdlbmVyYXRpb24pOworCUFzc2VydChzaGFyZWRfcGFyYW1zX2dl bmVyYXRpb25fbG9jYWwgPD0gcGFyYW1zX2dlbmVyYXRpb24pOworCisJLyogUmV0dXJuIGlmIHBh cmFtZXRlcnMgaGFkIG5vdCBjaGFuZ2VkIGluIHRoZSBsZWFkZXIgKi8KKwlpZiAocGFyYW1zX2dl bmVyYXRpb24gPT0gc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsKQorCQlyZXR1cm47CisK KwlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCVZhY3V1 bUNvc3REZWxheSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9kZWxheTsKKwlWYWN1dW1D b3N0TGltaXQgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfbGltaXQ7CisJVmFjdXVtQ29z dFBhZ2VEaXJ0eSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX2RpcnR5OworCVZh Y3V1bUNvc3RQYWdlSGl0ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfaGl0Owor CVZhY3V1bUNvc3RQYWdlTWlzcyA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21p c3M7CisJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKwor CVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisKKwlzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwg PSBwYXJhbXNfZ2VuZXJhdGlvbjsKK30KKworLyoKKyAqIFN0b3JlIHRoZSBjb3N0LWJhc2VkIHZh Y3V1bSBkZWxheSBwYXJhbWV0ZXJzIGluIHRoZSBzaGFyZWQgbWVtb3J5IHNvIHRoYXQKKyAqIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzIGNhbiBjb25zdW1lIHRoZW0gKHNlZQorICogcGFyYWxsZWxf dmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkpLgorICovCit2b2lkCitwYXJhbGxl bF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sKKwlBc3NlcnQo QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsKKworCS8qCisJICogUXVpY2sgcmV0dXJuIGlm IHRoZSBsZWFkZXIgcHJvY2VzcyBpcyBub3Qgc2hhcmluZyB0aGUgZGVsYXkgcGFyYW1ldGVycy4K KwkgKi8KKwlpZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJCXJldHVybjsKKwor CS8qCisJICogQ2hlY2sgaWYgYW55IGRlbGF5IHBhcmFtZXRlcnMgaGFzIGNoYW5nZWQuIFdlIGNh biByZWFkIHRoZW0gd2l0aG91dAorCSAqIGxvY2tzIGFzIG9ubHkgdGhlIGxlYWRlciBjYW4gbW9k aWZ5IHRoZW0uCisJICovCisJaWYgKHZhY3V1bV9jb3N0X2RlbGF5ID09IHB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+Y29zdF9kZWxheSAmJgorCQl2YWN1dW1fY29zdF9saW1pdCA9PSBwdl9zaGFyZWRf Y29zdF9wYXJhbXMtPmNvc3RfbGltaXQgJiYKKwkJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9PSBwdl9z aGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9kaXJ0eSAmJgorCQlWYWN1dW1Db3N0UGFnZUhp dCA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9oaXQgJiYKKwkJVmFjdXVtQ29z dFBhZ2VNaXNzID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21pc3MpCisJCXJl dHVybjsKKworCS8qIFVwZGF0ZSB0aGUgc2hhcmVkIGRlbGF5IHBhcmFtZXRlcnMgKi8KKwlTcGlu TG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCXBhcmFsbGVsX3Zh Y3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyk7CisJU3Bpbkxv Y2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKworCS8qCisJICogSW5j cmVtZW50IHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBpLmUuIGxldCBwYXJhbGxl bCB3b3JrZXJzCisJICoga25vdyB0aGF0IHRoZXkgc2hvdWxkIHJlLXJlYWQgc2hhcmVkIGNvc3Qg cGFyYW1zLgorCSAqLworCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZwdl9zaGFyZWRfY29zdF9w YXJhbXMtPmdlbmVyYXRpb24sIDEpOworfQorCiAvKgogICogQ29tcHV0ZSB0aGUgbnVtYmVyIG9m IHBhcmFsbGVsIHdvcmtlciBwcm9jZXNzZXMgdG8gcmVxdWVzdC4gIEJvdGggaW5kZXgKICAqIHZh Y3V1bSBhbmQgaW5kZXggY2xlYW51cCBjYW4gYmUgZXhlY3V0ZWQgd2l0aCBwYXJhbGxlbCB3b3Jr ZXJzLgpAQCAtMTEwOSw2ICsxMjYzLDkgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihzaGFy ZWQtPmNvc3RfYmFsYW5jZSk7CiAJVmFjdXVtQWN0aXZlTldvcmtlcnMgPSAmKHNoYXJlZC0+YWN0 aXZlX253b3JrZXJzKTsKIAorCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJCXB2X3NoYXJl ZF9jb3N0X3BhcmFtcyA9ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisKIAkvKiBTZXQgcGFyYWxs ZWwgdmFjdXVtIHN0YXRlICovCiAJcHZzLmluZHJlbHMgPSBpbmRyZWxzOwogCXB2cy5uaW5kZXhl cyA9IG5pbmRleGVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBlMWM5OTVk ZDJlYS4uYTBjMDIwZmExYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0x NjkxLDcgKzE2OTEsNyBAQCBWYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQogCX0KIAllbHNlCiAJewot CQkvKiBNdXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpFICovCisJCS8qIE11c3QgYmUg ZXhwbGljaXQgVkFDVVVNIG9yIEFOQUxZWkUgb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIg Ki8KIAkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CiAJCXZhY3V1bV9jb3N0 X2xpbWl0ID0gVmFjdXVtQ29zdExpbWl0OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMWIx ZmI2MjVjYjIuLjRiZmViYTgyNjRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92 YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtNDM0LDYgKzQz NCw4IEBAIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMs CiAJCQkJCQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCwKIAkJCQkJCQkJCQkJCVBWV29ya2Vy c1VzYWdlICp3dXNhZ2UpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFy ZWRfZGVsYXlfcGFyYW1zKHZvaWQpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb3Bh Z2F0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFj dXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFu ZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDBmYjQwZjNjMDdm Li5hZWI2YmI4NjlmMCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIwNzEsNiArMjA3 MSw3IEBAIFBWSW5kU3RhdHMKIFBWSW5kVmFjU3RhdHVzCiBQVk9JRAogUFZTaGFyZWQKK1BWU2hh cmVkQ29zdFBhcmFtcwogUFZXb3JrZXJzVXNhZ2UKIFBWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwot LSAKMi40My4wCgo= --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0004-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v25-0004-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydqhr1 RnJvbSA5YjQ2ZTBlZDZiNzM2MWQxYjdjMzMzNzIzYjljNzVmMDg4NGZiYWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjUgNC81XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDIyICsrCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgMjUgKysKIHNyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5oICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVz L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtLy5naXRpZ25vcmUgICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS9NYWtlZmlsZSAgICAgfCAgMjggKysKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL21lc29uLmJ1aWxkICB8ICAzNiArKysKIC4uLi90LzAwMV9wYXJhbGxlbF9hdXRv dmFjdXVtLnBsICAgICAgICAgICAgICB8IDI5OSArKysrKysrKysrKysrKysrKysKIC4uLi90ZXN0 X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsICB8ICAxMiArCiAuLi4vbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMgfCAgMzEgKysKIC4uLi90ZXN0X2F1 dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmNvbnRyb2wgICB8ICAgMyArCiAxMyBmaWxlcyBjaGFu Z2VkLCA0NzAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0 b3ZhY3V1bS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMjg2MjRkM2Jh MjUuLmQ1MWRiMGNmNjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0x NTIsNiArMTUyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgorI2luY2x1ZGUg InV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3BnX3J1c2FnZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5o IgpAQCAtODczLDYgKzg3NCwxNCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25z dCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCWxhenlfY2hlY2tfd3JhcGFyb3VuZF9mYWlsc2FmZSh2 YWNyZWwpOwogCWRlYWRfaXRlbXNfYWxsb2ModmFjcmVsLCBwYXJhbXMubndvcmtlcnMpOwogCisj aWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkvKgorCSAqIFRyaWdnZXIgaW5qZWN0aW9uIHBv aW50LCBpZiBwYXJhbGxlbCBhdXRvdmFjdXVtIGlzIGFib3V0IHRvIGJlIHN0YXJ0ZWQuCisJICov CisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBQYXJhbGxlbFZhY3V1bUlzQWN0 aXZlKHZhY3JlbCkpCisJCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxl bC12YWN1dW0iLCBOVUxMKTsKKyNlbmRpZgorCiAJLyoKIAkgKiBDYWxsIGxhenlfc2Nhbl9oZWFw IHRvIHBlcmZvcm0gYWxsIHJlcXVpcmVkIGhlYXAgcHJ1bmluZywgaW5kZXgKIAkgKiB2YWN1dW1p bmcsIGFuZCBoZWFwIHZhY3V1bWluZyAocGx1cyByZWxhdGVkIHByb2Nlc3NpbmcpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAxMzMwNGM0MGI1OS4uODI2MThhYjNhYzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtNDcsNiArNDcsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2lu dC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5o IgogCkBAIC02NTMsNiArNjU0LDE0IEBAIHBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2Rl bGF5X3BhcmFtcyh2b2lkKQogCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CiAKIAlzaGFyZWRfcGFyYW1z X2dlbmVyYXRpb25fbG9jYWwgPSBwYXJhbXNfZ2VuZXJhdGlvbjsKKworCWVsb2coREVCVUcyLAor CQkgInBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PSVk LCBjb3N0X2RlbGF5PSVnLCBjb3N0X3BhZ2VfbWlzcz0lZCwgY29zdF9wYWdlX2RpcnR5PSVkLCBj b3N0X3BhZ2VfaGl0PSVkIiwKKwkJIHZhY3V1bV9jb3N0X2xpbWl0LAorCQkgdmFjdXVtX2Nvc3Rf ZGVsYXksCisJCSBWYWN1dW1Db3N0UGFnZU1pc3MsCisJCSBWYWN1dW1Db3N0UGFnZURpcnR5LAor CQkgVmFjdXVtQ29zdFBhZ2VIaXQpOwogfQogCiAvKgpAQCAtOTE5LDYgKzkyOCwxOSBAQCBwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMs IGludCBudW1faW5kZXhfc2NhbgogCQkJCQkJCXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQs IG53b3JrZXJzKSkpOwogCX0KIAorI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJLyoKKwkg KiBUbyBiZSBhYmxlIHRvIGV4ZXJjaXNlIHdoZXRoZXIgYWxsIHJlc2VydmVkIHBhcmFsbGVsIHdv cmtlcnMgYXJlIGJlaW5nCisJICogcmVsZWFzZWQgYW55d2F5LCBhbGxvdyBpbmplY3Rpb24gcG9p bnRzIHRvIHRyaWdnZXIgYSBmYWlsdXJlIGF0IHRoaXMKKwkgKiBwb2ludC4KKwkgKgorCSAqIFRo aXMgaW5qZWN0aW9uIHBvaW50IGlzIGFsc28gdXNlZCB0byB3YWl0IHVudGlsIHBhcmFsbGVsIHdv cmtlcnMKKwkgKiBmaW5pc2hlcyB0aGVpciBwYXJ0IG9mIGluZGV4IHByb2Nlc3NpbmcuCisJICov CisJaWYgKG53b3JrZXJzID4gMCkKKwkJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLWxlYWRl ci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nIiwgTlVMTCk7CisjZW5kaWYKKwogCS8qIFZhY3V1 bSB0aGUgaW5kZXhlcyB0aGF0IGNhbiBiZSBwcm9jZXNzZWQgYnkgb25seSBsZWFkZXIgcHJvY2Vz cyAqLwogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3Vuc2FmZV9pbmRleGVzKHB2cyk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggYTBjMDIwZmExYTcuLjdlOTk0ZTg4ODUz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMzQ0OCw2ICszNDQ4LDEyIEBA IEF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2VycykKIAogCS8qIERv bid0IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2Ugd29ya2VycyBhbnltb3JlLiAqLwogCWF2X253b3Jr ZXJzX3Jlc2VydmVkIC09IG53b3JrZXJzOworCisJZWxvZyhERUJVRzIsCisJCSBuZ2V0dGV4dCgi YXV0b3ZhY3V1bSB3b3JrZXI6ICVkIHBhcmFsbGVsIHdvcmtlciBoYXMgYmVlbiByZWxlYXNlZCIs CisJCQkJICAiYXV0b3ZhY3V1bSB3b3JrZXI6ICVkIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4g cmVsZWFzZWQiLAorCQkJCSAgbndvcmtlcnMpLAorCQkgbndvcmtlcnMpOwogfQogCiAvKgpAQCAt MzQ2Niw2ICszNDcyLDIxIEBAIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZv aWQpCiAJQXNzZXJ0KGF2X253b3JrZXJzX3Jlc2VydmVkID09IDApOwogfQogCisvKgorICogR2V0 IG51bWJlciBvZiBmcmVlIGF1dG92YWN1dW0gcGFyYWxsZWwgd29ya2Vycy4KKyAqLworaW50MzIK K0F1dG9WYWN1dW1HZXRGcmVlUGFyYWxsZWxXb3JrZXJzKHZvaWQpCit7CisJaW50MzIJCW5mcmVl X3dvcmtlcnM7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19TSEFSRUQpOwor CW5mcmVlX3dvcmtlcnMgPSBBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7 CisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CisKKwlyZXR1cm4gbmZyZWVfd29ya2Vy czsKK30KKwogLyoKICAqIGF1dG92YWNfaW5pdAogICoJCVRoaXMgaXMgY2FsbGVkIGF0IHBvc3Rt YXN0ZXIgaW5pdGlhbGl6YXRpb24uCkBAIC0zNjM0LDUgKzM2NTUsOSBAQCBhZGp1c3RfZnJlZV9w YXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKQogCUF1dG9WYWN1 dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9IE1heChuZnJlZV93b3JrZXJzLCAwKTsK IAlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92YWN1dW1fbWF4 X3BhcmFsbGVsX3dvcmtlcnM7CiAKKwllbG9nKERFQlVHMiwKKwkJICJudW1iZXIgb2YgZnJlZSBw YXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgaXMgc2V0IHRvICV1IGR1ZSB0byBjb25maWcgcmVs b2FkIiwKKwkJIEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2Vycyk7CisKIAlM V0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmgKaW5kZXggZjM3ODNhZmI1MWIuLmQ2MDAxMGE0M2I0IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVy L2F1dG92YWN1dW0uaApAQCAtNjYsNiArNjYsNyBAQCBleHRlcm4gYm9vbCBBdXRvVmFjdXVtUmVx dWVzdFdvcmsoQXV0b1ZhY3V1bVdvcmtJdGVtVHlwZSB0eXBlLAogZXh0ZXJuIHZvaWQJQXV0b1Zh Y3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoaW50ICpud29ya2Vycyk7CiBleHRlcm4gdm9pZCBB dXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpOwogZXh0ZXJuIHZv aWQgQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCk7CitleHRlcm4gaW50 MzIgQXV0b1ZhY3V1bUdldEZyZWVQYXJhbGxlbFdvcmtlcnModm9pZCk7CiAKIC8qIHNoYXJlZCBt ZW1vcnkgc3R1ZmYgKi8KIGV4dGVybiBTaXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9N YWtlZmlsZQppbmRleCA0YWM1Yzg0ZGI0My4uMDFmZTAwNDFjOTcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAt MTYsNiArMTYsNyBAQCBTVUJESVJTID0gXAogCQkgIHBsc2FtcGxlIFwKIAkJICBzcGdpc3RfbmFt ZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKKwkJICB0ZXN0X2F1dG92YWN1dW0gXAogCQkgIHRlc3Rf YmluYXJ5aGVhcCBcCiAJCSAgdGVzdF9iaXRtYXBzZXQgXAogCQkgIHRlc3RfYmxvb21maWx0ZXIg XApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggZTJiM2VlZjQxMzYuLjlkY2RjNjhiYzg3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv bWVzb24uYnVpbGQKQEAgLTE2LDYgKzE2LDcgQEAgc3ViZGlyKCdwbHNhbXBsZScpCiBzdWJkaXIo J3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIoJ3NzbF9wYXNzcGhyYXNlX2NhbGxiYWNrJykKIHN1 YmRpcigndGVzdF9haW8nKQorc3ViZGlyKCd0ZXN0X2F1dG92YWN1dW0nKQogc3ViZGlyKCd0ZXN0 X2JpbmFyeWhlYXAnKQogc3ViZGlyKCd0ZXN0X2JpdG1hcHNldCcpCiBzdWJkaXIoJ3Rlc3RfYmxv b21maWx0ZXInKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v LmdpdGlnbm9yZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcxNmUxN2Y1YTJhCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9y ZQpAQCAtMCwwICsxLDIgQEAKKyMgR2VuZXJhdGVkIHN1YmRpcmVjdG9yaWVzCisvdG1wX2NoZWNr LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzIyNTRjNTNhNWQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQpAQCAtMCwwICsxLDI4 IEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCisKK1BHRklM RURFU0MgPSAidGVzdF9hdXRvdmFjdXVtIC0gdGVzdCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFj dXVtIgorCitNT0RVTEVfYmlnID0gdGVzdF9hdXRvdmFjdXVtCitPQkpTID0gXAorCSQoV0lOMzJS RVMpIFwKKwl0ZXN0X2F1dG92YWN1dW0ubworCitFWFRFTlNJT04gPSB0ZXN0X2F1dG92YWN1dW0K K0RBVEEgPSB0ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKKworVEFQX1RFU1RTID0gMQorCitFWFRS QV9JTlNUQUxMID0gc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzCisKK2V4cG9ydCBl bmFibGVfaW5qZWN0aW9uX3BvaW50cworCitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdf Y29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQ R1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0KK3Rv cF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFr ZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2Jh bC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVp bGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk2OWFmOGJkNTJhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24u YnVpbGQKQEAgLTAsMCArMSwzNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQtMjAyNiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMg PSBmaWxlcygKKyAgJ3Rlc3RfYXV0b3ZhY3V1bS5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0g J3dpbmRvd3MnCisgIHRlc3RfYXV0b3ZhY3V1bV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vz cyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9hdXRvdmFj dXVtJywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X2F1dG92YWN1dW0gLSB0ZXN0IGNvZGUgZm9y IHBhcmFsbGVsIGF1dG92YWN1dW0nLF0pCitlbmRpZgorCit0ZXN0X2F1dG92YWN1dW0gPSBzaGFy ZWRfbW9kdWxlKCd0ZXN0X2F1dG92YWN1dW0nLAorICB0ZXN0X2F1dG92YWN1dW1fc291cmNlcywK KyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVz dF9hdXRvdmFjdXVtCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAndGVzdF9hdXRv dmFjdXVtLmNvbnRyb2wnLAorICAndGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsJywKKykKKwordGVz dHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2F1dG92YWN1dW0nLAorICAnc2QnOiBtZXNvbi5jdXJy ZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAg J3RhcCc6IHsKKyAgICAnZW52JzogeworICAgICAgICdlbmFibGVfaW5qZWN0aW9uX3BvaW50cyc6 IGdldF9vcHRpb24oJ2luamVjdGlvbl9wb2ludHMnKSA/ICd5ZXMnIDogJ25vJywKKyAgICB9LAor ICAgICd0ZXN0cyc6IFsKKyAgICAgICd0LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsJywKKyAg ICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1ZGFjZjU5OTgwCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5w bApAQCAtMCwwICsxLDI5OSBAQAorIyBUZXN0IHBhcmFsbGVsIGF1dG92YWN1dW0gYmVoYXZpb3IK KwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor aWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tp cF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsK K30KKworIyBCZWZvcmUgZWFjaCB0ZXN0IHdlIHNob3VsZCBkaXNhYmxlIGF1dG92YWN1dW0gZm9y ICd0ZXN0X2F1dG92YWMnIHRhYmxlIGFuZAorIyBnZW5lcmF0ZSBzb21lIGRlYWQgdHVwbGVzIGlu IGl0LgorCitzdWIgcHJlcGFyZV9mb3JfbmV4dF90ZXN0Cit7CisJbXkgKCRub2RlLCAkdGVzdF9u dW1iZXIpID0gQF87CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCQlBTFRF UiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CisJ fSk7CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCQlVUERBVEUgdGVzdF9h dXRvdmFjIFNFVCBjb2xfMSA9ICR0ZXN0X251bWJlcjsKKwl9KTsKK30KKworCitteSAkcHNxbF9v dXQ7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlMScp OworJG5vZGUtPmluaXQ7CisKKyMgQ29uZmlndXJlIHBvc3RncmVzLCBzbyBpdCBjYW4gbGF1bmNo IHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycywgbG9nIGFsbAorIyBpbmZvcm1hdGlvbiB3ZSBh cmUgaW50ZXJlc3RlZCBpbiBhbmQgYXV0b3ZhY3V1bSB3b3JrcyBmcmVxdWVudGx5Ciskbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxeworCW1heF93b3JrZXJfcHJvY2Vzc2Vz ID0gMjAKKwltYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCisJbWF4X3BhcmFsbGVsX21haW50ZW5h bmNlX3dvcmtlcnMgPSAyMAorCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyMAor CWxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzIKKwlhdXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCisJ bWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDAKKwlzaGFyZWRfcHJlbG9hZF9saWJyYXJp ZXM9dGVzdF9hdXRvdmFjdXVtCit9KTsKKyRub2RlLT5zdGFydDsKKworIyBDaGVjayBpZiB0aGUg ZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMg cG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJl IHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEk bm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lw X2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisK KyMgQ3JlYXRlIGFsbCBmdW5jdGlvbnMgbmVlZGVkIGZvciB0ZXN0aW5nCiskbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBFWFRFTlNJT04gdGVzdF9hdXRvdmFjdXVtOwor CUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30pOworCitteSAkaW5kZXhlc19u dW0gPSA0OworbXkgJGluaXRpYWxfcm93c19udW0gPSAxMF8wMDA7CitteSAkYXV0b3ZhY3V1bV9w YXJhbGxlbF93b3JrZXJzID0gMjsKKworIyBDcmVhdGUgdGFibGUgYW5kIGZpbGwgaXQgd2l0aCBz b21lIGRhdGEKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFRBQkxF IHRlc3RfYXV0b3ZhYyAoCisJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKKwkJY29sXzEgSU5URUdF UiwgIGNvbF8yIElOVEVHRVIsICBjb2xfMyBJTlRFR0VSLCAgY29sXzQgSU5URUdFUgorCSkgV0lU SCAoYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxsZWxfd29y a2VycywKKwkJCWxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDApOworCisJSU5TRVJUIElO VE8gdGVzdF9hdXRvdmFjCisJU0VMRUNUCisJCWcgQVMgY29sMSwKKwkJZyArIDEgQVMgY29sMiwK KwkJZyArIDIgQVMgY29sMywKKwkJZyArIDMgQVMgY29sNAorCUZST00gZ2VuZXJhdGVfc2VyaWVz KDEsICRpbml0aWFsX3Jvd3NfbnVtKSBBUyBnOworfSk7CisKKyMgQ3JlYXRlIHNwZWNpZmllZCBu dW1iZXIgb2YgYi10cmVlIGluZGV4ZXMgb24gdGhlIHRhYmxlCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxeworCURPIFwkXCQKKwlERUNMQVJFCisJCWkgSU5URUdFUjsKKwlCRUdJTgor CQlGT1IgaSBJTiAxLi4kaW5kZXhlc19udW0gTE9PUAorCQkJRVhFQ1VURSBmb3JtYXQoJ0NSRUFU RSBJTkRFWCBpZHhfY29sX1wlcyBPTiB0ZXN0X2F1dG92YWMgKGNvbF9cJXMpOycsIGksIGkpOwor CQlFTkQgTE9PUDsKKwlFTkQgXCRcJDsKK30pOworCisjIFRlc3QgMSA6CisjIE91ciB0YWJsZSBo YXMgZW5vdWdoIGluZGV4ZXMgYW5kIGFwcHJvcHJpYXRlIHJlbG9wdGlvbnMsIHNvIGF1dG92YWN1 dW0gbXVzdAorIyBiZSBhYmxlIHRvIHByb2Nlc3MgaXQgaW4gcGFyYWxsZWwgbW9kZS4gSnVzdCBj aGVjayBpZiBpdCBjYW4uCisjIEFsc28gY2hlY2sgd2hldGhlciBhbGwgcmVxdWVzdGVkIHdvcmtl cnM6CisjIAkxKSBsYXVuY2hlZAorIyAJMikgY29ycmVjdGx5IHJlbGVhc2VkCisKK3ByZXBhcmVf Zm9yX25leHRfdGVzdCgkbm9kZSwgMSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0g dHJ1ZSk7Cit9KTsKKworIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhdXRvdmFjdXVtIG9uIHRh YmxlIGlzIGNvbXBsZXRlZC4gQXQgdGhlIHNhbWUgdGltZSwKKyMgd2UgY2hlY2sgdGhhdCB0aGUg cmVxdWlyZWQgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gc3RhcnRlZC4KKyRs b2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL3BhcmFsbGVsIHdvcmtlcnM6IGlu ZGV4IHZhY3V1bTogMiBwbGFubmVkLCAyIHJlc2VydmVkLCAyIGxhdW5jaGVkLywKKwkkbG9nX3N0 YXJ0CispOworCiskcHNxbF9vdXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewor CVNFTEVDVCBnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKTsKK30pOworaXMo JHBzcWxfb3V0LCAyMCwgJ0FsbCBwYXJhbGxlbCB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIGJ5 IHRoZSBsZWFkZXInKTsKKworIyBUZXN0IDI6CisjIENoZWNrIHdoZXRoZXIgcGFyYWxsZWwgYXV0 b3ZhY3V1bSBsZWFkZXIgY2FuIHByb3BhZ2F0ZSBjb3N0LWJhc2VkIHBhcmFtZXRlcnMKKyMgdG8g cGFyYWxsZWwgd29ya2Vycy4KKworcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAyKTsKKwor JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJywgJ3dhaXQnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1p bmRleGVzLXByb2Nlc3NpbmcnLCAnd2FpdCcpOworCisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFj IFNFVCAoYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMSwgYXV0b3ZhY3V1bV9lbmFibGVk ID0gdHJ1ZSk7Cit9KTsKKworIyBXYWl0IHVudGlsIHBhcmFsbGVsIGF1dG92YWN1dW0gaXMgaW5p dGVkCiskbm9kZS0+d2FpdF9mb3JfZXZlbnQoCisJJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0 b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nCispOworCisjIFJlbG9hZCBjb25maWcgLSBs ZWFkZXIgd29ya2VyIG11c3QgdXBkYXRlIGl0cyBvd24gcGFyYW1ldGVycyBkdXJpbmcgaW5kZXhl cworIyBwcm9jZXNzaW5nCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVS IFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfbGltaXQgPSA1MDA7CisJQUxURVIgU1lTVEVNIFNFVCB2 YWN1dW1fY29zdF9wYWdlX21pc3MgPSAxMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0 X3BhZ2VfZGlydHkgPSAxMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfaGl0 ID0gMTA7CisJU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Cit9KTsKKworJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2F1dG92 YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7Cit9KTsKKworIyBOb3cgd2FpdCB1bnRpbCBw YXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBjb21wbGV0ZXMgcHJvY2Vzc2luZyB0YWJsZSAoaS5l LgorIyBndWFyYW50ZWVkIHRvIGNhbGwgdmFjdXVtX2RlbGF5X3BvaW50KSBhbmQgbGF1bmNoZXMg cGFyYWxsZWwgd29ya2VyLgorJG5vZGUtPndhaXRfZm9yX2V2ZW50KAorCSdhdXRvdmFjdXVtIHdv cmtlcicsCisJJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnCisp OworCisjIENoZWNrIHdoZXRoZXIgcGFyYWxsZWwgd29ya2VyIHN1Y2Nlc3NmdWxseSB1cGRhdGVk IGFsbCBwYXJhbWV0ZXJzIGR1cmluZworIyBpbmRleCBwcm9jZXNzaW5nCiskbG9nX3N0YXJ0ID0g JG5vZGUtPndhaXRfZm9yX2xvZygKKwlxci9wYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlciBjb3N0 IHBhcmFtczogY29zdF9saW1pdD01MDAsIGNvc3RfZGVsYXk9MiwgLyAuCisJcXIvY29zdF9wYWdl X21pc3M9MTAsIGNvc3RfcGFnZV9kaXJ0eT0xMCwgY29zdF9wYWdlX2hpdD0xMC8sCisJJGxvZ19z dGFydAorKTsKKworIyBDbGVhbnVwCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3Jl LWluZGV4ZXMtcHJvY2Vzc2luZycpOworCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNo KCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2lu ZycpOworCisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9wYXJhbGxl bF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyk7Cit9KTsKKworIyBUZXN0 IDM6CisjIFRlc3QgYWRqdXN0bWVudCBvZiBmcmVlIHBhcmFsbGVsIHdvcmtlcnMgbnVtYmVyIHdo ZW4gY2hhbmdpbmcKKyMgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBwYXJhbWV0ZXIK KworcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCA0KTsKKworJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2F1dG92YWN1 dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnLCAnd2FpdCcpOworCUFMVEVSIFRB QkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisK KyRub2RlLT53YWl0X2Zvcl9ldmVudCgKKwknYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFj dXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJworKTsKKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBTWVNURU0gU0VUIGF1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMgPSAxOworCVNFTEVDVCBwZ19yZWxvYWRfY29uZigpOworfSk7CisKKyMg U2luY2UgMiBwYXJhbGxlbCB3b3JrZXJzIGFscmVhZHkgbGF1bmNoZWQgYW5kIHdpbGwgYmUgcmVs ZWFzZWQgaW4gdGhlIGZ1dHVyZSwKKyMgd2UgYXJlIGV4cGVjdGluZyB0aGF0IDoKKyMgMSkgbnVt YmVyIG9mIGZyZWUgd29ya2VycyB3aWxsIGJlICcwJyBhZnRlciBjb25maWcgcmVsb2FkCisjIDIp IG51bWJlciBvZiBmcmVlIHdvcmtlcnMgd2lsbCBiZSAnMScgYWZ0ZXIgcmVsZWFzaW5nIHdvcmtl cnMKKworIyBDaGVjayBzdGF0ZW1lbnQgKDEpCiskbG9nX3N0YXJ0ID0gJG5vZGUtPndhaXRfZm9y X2xvZygKKwlxci9udW1iZXIgb2YgZnJlZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgaXMg c2V0IHRvIDAgZHVlIHRvIGNvbmZpZyByZWxvYWQvLAorCSRsb2dfc3RhcnQKKyk7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2Fr ZXVwKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7Cit9KTsK KworIyBXYWl0IHVudGlsIHRoZSBlbmQgb2YgcGFyYWxsZWwgcHJvY2Vzc2luZworJGxvZ19zdGFy dCA9ICRub2RlLT53YWl0X2Zvcl9sb2coCisJcXIvcGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFj dXVtOiAyIHBsYW5uZWQsIDIgcmVzZXJ2ZWQsIDIgbGF1bmNoZWQvLAorCSRsb2dfc3RhcnQKKyk7 CisKKyMgQ2hlY2sgc3RhdGVtZW50ICgyKQorJHBzcWxfb3V0ID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgZ2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3Jr ZXJzKCk7Cit9KTsKK2lzKCRwc3FsX291dCwgMSwgJ051bWJlciBvZiBmcmVlIHBhcmFsbGVsIHdv cmtlcnMgaXMgY29uc2lzdGVudCcpOworCisjIENsZWFudXAKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7CisJQUxURVIgU1lTVEVNIFNFVCBh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMTA7CisJU0VMRUNUIHBnX3JlbG9hZF9j b25mKCk7Cit9KTsKKworIyBUZXN0IDQ6CisjIFdlIHdhbnQgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3 b3JrZXJzIHRvIGJlIHJlbGVhc2VkIGV2ZW4gaWYgbGVhZGVyIGdldHMgYW4KKyMgZXJyb3IuIEF0 IGZpcnN0LCBzaW11bGF0ZSBzaXR1YXRpb24sIHdoZW4gbGVhZGVyIGV4aXRzIGR1ZSB0byBhbiBF UlJPUi4KKworcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCA0KTsKKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2F1 dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnLCAnZXJyb3InKTsKKwlB TFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsK K30pOworCiskbG9nX3N0YXJ0ID0gJG5vZGUtPndhaXRfZm9yX2xvZygKKwlxci9lcnJvciB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCAvIC4KKwlxci9hdXRvdmFjdXVtLWxlYWRlci1iZWZv cmUtaW5kZXhlcy1wcm9jZXNzaW5nLywKKwkkbG9nX3N0YXJ0CispOworCiskbG9nX3N0YXJ0ID0g JG5vZGUtPndhaXRfZm9yX2xvZygKKwlxci9hdXRvdmFjdXVtIHdvcmtlcjogMiBwYXJhbGxlbCB3 b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkLywKKwkkbG9nX3N0YXJ0CispOworCisjIENsZWFudXAK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7 Cit9KTsKKworIyBUZXN0IDU6CisjIFNhbWUgYXMgYWJvdmUgdGVzdCwgYnV0IHNpbXVsYXRlIHNp dHVhdGlvbiwgd2hlbiBsZWFkZXIgZXhpdHMgZHVlIHRvIEZBVEFMLgorCitwcmVwYXJlX2Zvcl9u ZXh0X3Rlc3QoJG5vZGUsIDUpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3Jl LWluZGV4ZXMtcHJvY2Vzc2luZycsICd3YWl0Jyk7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFj IFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKworIyBXYWl0IHVudGlsIHBh cmFsbGVsIHdvcmtlcnMgYXJlIHJlc2VydmVkIGF1dG92YWN1dW0gYW5kIGtpbGwgdGhlIGxlYWRl cgorJG5vZGUtPndhaXRfZm9yX2V2ZW50KAorCSdhdXRvdmFjdXVtIHdvcmtlcicsCisJJ2F1dG92 YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnCispOworCitteSAkYXZfcGlk ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9hY3Rpdml0eQorCVdIRVJFIGJhY2tlbmRfdHlwZSA9ICdhdXRvdmFjdXVtIHdvcmtlcicK KwkgIEFORCB3YWl0X2V2ZW50ID0gJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXBy b2Nlc3NpbmcnCisJTElNSVQgMTsKK30pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCVNFTEVDVCBwZ190ZXJtaW5hdGVfYmFja2VuZCgnJGF2X3BpZCcpOworfSk7CisKKyRs b2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL2F1dG92YWN1dW0gd29ya2VyOiAy IHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQvLAorCSRsb2dfc3RhcnQKKyk7CisK KyMgQ2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXBy b2Nlc3NpbmcnKTsKK30pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0x LjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNTY0NmUw ZGVmNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbApAQCAtMCwwICsxLDEyIEBACisvKiBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgKi8KKworLS0g Y29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENS RUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2F1dG92YWN1 dW0iIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCisvKgorICogRnVuY3Rpb25zIGZvciBleHBl Y3Rpbmcgc2hhcmVkIGF1dG92YWN1dW0gc3RhdGUKKyAqLworCitDUkVBVEUgRlVOQ1RJT04gZ2V0 X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKCkKK1JFVFVSTlMgSU5URUdFUiBTVFJJ Q1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZDVjODM5ZTg1MQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCkBAIC0wLDAg KzEsMzEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3RfYXV0b3ZhY3V1bS5jCisg KgkJSGVscGVycyB0byB3cml0ZSB0ZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQorICoKKyAq IENvcHlyaWdodCAoYykgMjAyMC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50 LmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKworUEdfRlVOQ1RJT05fSU5GT19WMShnZXRfcGFyYWxs ZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMpOworRGF0dW0KK2dldF9wYXJhbGxlbF9hdXRvdmFj dXVtX2ZyZWVfd29ya2VycyhQR19GVU5DVElPTl9BUkdTKQoreworCWludDMyCQluZnJlZV93b3Jr ZXJzOworCisJbmZyZWVfd29ya2VycyA9IEF1dG9WYWN1dW1HZXRGcmVlUGFyYWxsZWxXb3JrZXJz KCk7CisKKwlQR19SRVRVUk5fSU5UMzIobmZyZWVfd29ya2Vycyk7Cit9CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9s Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjdmYWQyNThmMAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0 b3ZhY3V1bS5jb250cm9sCkBAIC0wLDAgKzEsMyBAQAorY29tbWVudCA9ICdUZXN0IGNvZGUgZm9y IHBhcmFsbGVsIGF1dG92YWN1dW0nCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3Bh dGhuYW1lID0gJyRsaWJkaXIvdGVzdF9hdXRvdmFjdXVtJwotLSAKMi40My4wCgo= --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v25-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydqif3 RnJvbSA1MWYzYzI4NTZhMmI1ODNkYzgzYzQ3N2NiMDNhZGQ2N2YzNjNjMDU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjUgMi81XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCA1NCArKysrKysrKysrKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAzMiArKysrKysr KysrKysrLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgIHwgMzkgKysr KysrKysrKysrKysrKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICB8 ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4MmM1YjI4ZTBhZC4uMjg2 MjRkM2JhMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Myw2ICsz NDMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCWludAkJCW51bV9pbmRleF9zY2Fu czsKIAlpbnQJCQludW1fZGVhZF9pdGVtc19yZXNldHM7CiAJU2l6ZQkJdG90YWxfZGVhZF9pdGVt c19ieXRlczsKKworCS8qCisJICogVG90YWwgbnVtYmVyIG9mIHBsYW5uZWQgYW5kIGFjdHVhbGx5 IGxhdW5jaGVkIHBhcmFsbGVsIHdvcmtlcnMgZm9yCisJICogaW5kZXggc2NhbnMuCisJICovCisJ UFZXb3JrZXJzVXNhZ2Ugd29ya2Vyc191c2FnZTsKKwogCS8qIENvdW50ZXJzIHRoYXQgZm9sbG93 IGFyZSBvbmx5IGZvciBzY2FubmVkX3BhZ2VzICovCiAJaW50NjQJCXR1cGxlc19kZWxldGVkOyAv KiAjIGRlbGV0ZWQgZnJvbSB0YWJsZSAqLwogCWludDY0CQl0dXBsZXNfZnJvemVuOwkvKiAjIG5l d2x5IGZyb3plbiAqLwpAQCAtNzgxLDYgKzc4OCwxMSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRp b24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCXZhY3JlbC0+bmV3X2FsbF92aXNp YmxlX2FsbF9mcm96ZW5fcGFnZXMgPSAwOwogCXZhY3JlbC0+bmV3X2FsbF9mcm96ZW5fcGFnZXMg PSAwOwogCisJdmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQgPSAwOworCXZh Y3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQgPSAwOworCXZhY3JlbC0+d29ya2Vy c191c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCA9IDA7CisJdmFjcmVsLT53b3JrZXJzX3VzYWdlLmNs ZWFudXAubnBsYW5uZWQgPSAwOworCiAJLyoKIAkgKiBHZXQgY3V0b2ZmcyB0aGF0IGRldGVybWlu ZSB3aGljaCBkZWxldGVkIHR1cGxlcyBhcmUgY29uc2lkZXJlZCBERUFELAogCSAqIG5vdCBqdXN0 IFJFQ0VOVExZX0RFQUQsIGFuZCB3aGljaCBYSURzL01YSURzIHRvIGZyZWV6ZS4gIFRoZW4gZGV0 ZXJtaW5lCkBAIC0xMTIzLDYgKzExMzUsNDIgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJl bCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQkJCQkgb3JpZ19yZWxfcGFnZXMgPT0g MCA/IDEwMC4wIDoKIAkJCQkJCQkgMTAwLjAgKiB2YWNyZWwtPmxwZGVhZF9pdGVtX3BhZ2VzIC8g b3JpZ19yZWxfcGFnZXMsCiAJCQkJCQkJIHZhY3JlbC0+bHBkZWFkX2l0ZW1zKTsKKwkJCWlmICh2 YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkID4gMCkKKwkJCXsKKwkJCQlpZiAo QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5m bygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6IGluZGV4IHZhY3V1bTogJWQg cGxhbm5lZCwgJWQgcmVzZXJ2ZWQsICVkIGxhdW5jaGVkIGluIHRvdGFsXG4iKSwKKwkJCQkJCQkJ CSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnJlc2VydmVkLAorCQkJCQkJCQkJIHZhY3JlbC0+d29y a2Vyc191c2FnZS52YWN1dW0ubmxhdW5jaGVkKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJ CQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6 IGluZGV4IHZhY3V1bTogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWQgaW4gdG90YWxcbiIpLAorCQkJ CQkJCQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQsCisJCQkJCQkJCQkg dmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQpOworCQkJCX0KKwkJCX0KKwkJ CWlmICh2YWNyZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ucGxhbm5lZCA+IDApCisJCQl7CisJ CQkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJCQl7CisJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZiwKKwkJCQkJCQkJCSBfKCJwYXJhbGxlbCB3b3JrZXJzOiBpbmRleCBjbGVh bnVwOiAlZCBwbGFubmVkLCAlZCByZXNlcnZlZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJ IHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5yZXNlcnZlZCwKKwkJCQkJCQkJCSB2YWNyZWwtPndv cmtlcnNfdXNhZ2UuY2xlYW51cC5ubGF1bmNoZWQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsCisJCQkJCQkJCQkgXygicGFyYWxsZWwgd29ya2Vy czogaW5kZXggY2xlYW51cDogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJ IHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCk7CisJCQkJfQorCQkJfQogCQkJZm9y IChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKyspCiAJCQl7CiAJCQkJSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IHZhY3JlbC0+aW5kc3RhdHNbaV07CkBAIC0yNjY5LDcg KzI3MTcsOCBAQCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJ ewogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBwYXJhbGxlbCB2YXJpYW50ICovCiAJCXBh cmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKHZhY3JlbC0+cHZzLCBvbGRfbGl2ZV90 dXBsZXMsCi0JCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJ dmFjcmVsLT5udW1faW5kZXhfc2NhbnMsCisJCQkJCQkJCQkJCSZ2YWNyZWwtPndvcmtlcnNfdXNh Z2UpOwogCiAJCS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5aW5nIHdy YXBhcm91bmQgZmFpbHNhZmUgbm93LiAgTm90ZQpAQCAtMzEwMyw3ICszMTUyLDggQEAgbGF6eV9j bGVhbnVwX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291cmNlIGV2 ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1fY2xlYW51 cF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2YWNyZWwt Pm51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJ CQkJZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQkmdmFjcmVsLT53b3JrZXJzX3VzYWdlKTsK IAl9CiAKIAkvKiBSZXNldCB0aGUgcHJvZ3Jlc3MgY291bnRlcnMgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDgwNmE3ZjQ4MzI2Li42NDM4NDliMmZiOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0 IFBhcmFsbGVsVmFjdXVtU3RhdGUKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVf d29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwK IAkJCQkJCQkJCQkJYm9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwogc3RhdGljIHZvaWQgcGFy YWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBpbnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJCQkJYm9vbCB2YWN1dW0pOworCQkJCQkJ CQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1N0YXRzICp3c3RhdHMpOwogc3RhdGljIHZvaWQg cGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cyk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhl cyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5k cmVsLApAQCAtNTAzLDcgKzUwMyw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9yZXNldF9kZWFkX2l0ZW1z KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cykKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2J1 bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJs ZV90dXBsZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zKQorCQkJCQkJCQkJaW50IG51 bV9pbmRleF9zY2FucywgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFy YWxsZWxXb3JrZXIoKSk7CiAKQEAgLTUxNCw3ICs1MTQsOCBAQCBwYXJhbGxlbF92YWN1dW1fYnVs a2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxl X3R1cAogCXB2cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+ c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQgPSB0cnVlOwogCi0JcGFyYWxsZWxfdmFjdXVtX3Byb2Nl c3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUpOworCXBhcmFsbGVsX3Zh Y3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCB0cnVlLAorCQkJ CQkJCQkJCSZ3dXNhZ2UtPnZhY3V1bSk7CiB9CiAKIC8qCkBAIC01MjIsNyArNTIzLDggQEAgcGFy YWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBsb25nIG51bV90YWJsZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBf YWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBs ZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkK KwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJ CQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3Jr ZXIoKSk7CiAKQEAgLTUzNCw3ICs1MzYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2 cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5l c3RpbWF0ZWRfY291bnQgPSBlc3RpbWF0ZWRfY291bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJv Y2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVs X3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwK KwkJCQkJCQkJCQkmd3VzYWdlLT5jbGVhbnVwKTsKIH0KIAogLyoKQEAgLTYxNiwxMCArNjE5LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGlu dCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAvKgogICogUGVyZm9ybSBpbmRleCB2YWN1dW0g b3IgaW5kZXggY2xlYW51cCB3aXRoIHBhcmFsbGVsIHdvcmtlcnMuICBUaGlzIGZ1bmN0aW9uCiAg KiBtdXN0IGJlIHVzZWQgYnkgdGhlIHBhcmFsbGVsIHZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAq CisgKiBJZiB3c3RhdHMgaXMgbm90IE5VTEwsIHRoZSBzdGF0aXN0aWNzIGl0IHN0b3JlcyB3aWxs IGJlIHVwZGF0ZWQgYWNjb3JkaW5nCisgKiB0byB3aGF0IGhhcHBlbnMgZHVyaW5nIGZ1bmN0aW9u IGV4ZWN1dGlvbi4KICAqLwogc3RhdGljIHZvaWQKIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2Fs bF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywK LQkJCQkJCQkJCWJvb2wgdmFjdXVtKQorCQkJCQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1N0 YXRzICp3c3RhdHMpCiB7CiAJaW50CQkJbndvcmtlcnM7CiAJUFZJbmRWYWNTdGF0dXMgbmV3X3N0 YXR1czsKQEAgLTY1NiwxMyArNjYyLDIzIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICov CiAJbndvcmtlcnMgPSBNaW4obndvcmtlcnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyog UmVtZW1iZXIgdGhpcyB2YWx1ZSwgaWYgd2UgYXNrZWQgdG8gKi8KKwlpZiAod3N0YXRzICE9IE5V TEwgJiYgbndvcmtlcnMgPiAwKQorCQl3c3RhdHMtPm5wbGFubmVkICs9IG53b3JrZXJzOworCiAJ LyoKIAkgKiBSZXNlcnZlIHdvcmtlcnMgaW4gYXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUg dGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KIAkgKiBmZXdlciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVk LgogCSAqLwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAw KQorCXsKIAkJQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoJm53b3JrZXJzKTsKIAor CQkvKiBSZW1lbWJlciB0aGlzIHZhbHVlLCBpZiB3ZSBhc2tlZCB0byAqLworCQlpZiAod3N0YXRz ICE9IE5VTEwpCisJCQl3c3RhdHMtPm5yZXNlcnZlZCArPSBud29ya2VyczsKKwl9CisKIAkvKgog CSAqIFNldCBpbmRleCB2YWN1dW0gc3RhdHVzIGFuZCBtYXJrIHdoZXRoZXIgcGFyYWxsZWwgdmFj dXVtIHdvcmtlciBjYW4KIAkgKiBwcm9jZXNzIGl0LgpAQCAtNzI5LDYgKzc0NSwxMCBAQCBwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMs IGludCBudW1faW5kZXhfc2NhbgogCQkJLyogRW5hYmxlIHNoYXJlZCBjb3N0IGJhbGFuY2UgZm9y IGxlYWRlciBiYWNrZW5kICovCiAJCQlWYWN1dW1TaGFyZWRDb3N0QmFsYW5jZSA9ICYocHZzLT5z aGFyZWQtPmNvc3RfYmFsYW5jZSk7CiAJCQlWYWN1dW1BY3RpdmVOV29ya2VycyA9ICYocHZzLT5z aGFyZWQtPmFjdGl2ZV9ud29ya2Vycyk7CisKKwkJCS8qIFJlbWVtYmVyIHRoaXMgdmFsdWUsIGlm IHdlIGFza2VkIHRvICovCisJCQlpZiAod3N0YXRzICE9IE5VTEwpCisJCQkJd3N0YXRzLT5ubGF1 bmNoZWQgKz0gcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsKIAkJfQogCiAJCWlmICh2YWN1 dW0pCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IGU4ODVhNGI5Yzc3Li4xYjFmYjYyNWNiMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKQEAgLTMwMCw2ICszMDAsMzkgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFj RGVhZEl0ZW1zSW5mbwogCWludDY0CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmll cyAqLwogfSBWYWNEZWFkSXRlbXNJbmZvOwogCisvKgorICogSGVscGVyIGZvciB0aGUgUFZXb3Jr ZXJzVXNhZ2Ugc3RydWN0dXJlIChzZWUgYmVsb3cpLCB0byBhdm9pZCByZXBldGl0aW9uLgorICov Cit0eXBlZGVmIHN0cnVjdCBQVldvcmtlcnNTdGF0cworeworCS8qIE51bWJlciBvZiBwYXJhbGxl bCB3b3JrZXJzIHdlIGFyZSBwbGFubmVkIHRvIGxhdW5jaCAqLworCWludAkJCW5wbGFubmVkOwor CisJLyoKKwkgKiBOdW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyB3ZSBoYXZlIG1hbmFnZWQgdG8g cmVzZXJ2ZS4KKwkgKgorCSAqIE5vdGUsIHRoYXQgd2UgY29sbGVjdCB0aGlzIHN0YXRzIG9ubHkg Zm9yIHRoZSBwYXJhbGxlbCAqYXV0b3ZhY3V1bSoKKwkgKiBzaW5jZSBkdXJpbmcgaXQgd2UgbXVz dCByZXNlcnZlIHdvcmtlcnMgaW4gc2hhcmVkIHN0YXRlIGJlZm9yZSBhY3R1YWxseQorCSAqIHRy eWluZyB0byBsYXVuY2ggdGhlbSAoaW4gb3JkZXIgdG8gbWVldCB0aGUKKwkgKiBhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzIGxpbWl0KS4gTWFudWFsIFZBQ1VVTSAoUEFSQUxMRUwpLCBv bgorCSAqIHRoZSBjb250cmFyeSwgZG9lc24ndCBuZWVkIHRvIHJlc2VydmUgd29ya2Vycy4KKwkg Ki8KKwlpbnQJCQlucmVzZXJ2ZWQ7CisKKwkvKiBOdW1iZXIgb2YgbGF1bmNoZWQgcGFyYWxsZWwg d29ya2VycyAqLworCWludAkJCW5sYXVuY2hlZDsKK30gUFZXb3JrZXJzU3RhdHM7CisKKy8qCisg KiBQVldvcmtlcnNVc2FnZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdG90YWwgbnVtYmVyIG9m IGxhdW5jaGVkLCByZXNlcnZlZAorICogYW5kIHBsYW5uZWQgd29ya2VycyBkdXJpbmcgcGFyYWxs ZWwgdmFjdXVtIChib3RoIGZvciB2YWN1dW0gYW5kIGNsZWFudXApLgorICovCit0eXBlZGVmIHN0 cnVjdCBQVldvcmtlcnNVc2FnZQoreworCVBWV29ya2Vyc1N0YXRzIHZhY3V1bTsKKwlQVldvcmtl cnNTdGF0cyBjbGVhbnVwOworfSBQVldvcmtlcnNVc2FnZTsKKwogLyogR1VDIHBhcmFtZXRlcnMg Ki8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldDsJLyog UEdETExJTVBPUlQgZm9yIFBvc3RHSVMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVt X2ZyZWV6ZV9taW5fYWdlOwpAQCAtMzk0LDExICs0MjcsMTMgQEAgZXh0ZXJuIFRpZFN0b3JlICpw YXJhbGxlbF92YWN1dW1fZ2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAog ZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWxvbmcgbnVtX3Rh YmxlX3R1cGxlcywKLQkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpOworCQkJCQkJCQkJ CQkJaW50IG51bV9pbmRleF9zY2FucywKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVz LAogCQkJCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJCWJvb2wgZXN0 aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJ CQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5k cy9hbmFseXplLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggM2RhMTlkNDE0MTMu LjBmYjQwZjNjMDdmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjA3MSw2ICsyMDcx LDggQEAgUFZJbmRTdGF0cwogUFZJbmRWYWNTdGF0dXMKIFBWT0lECiBQVlNoYXJlZAorUFZXb3Jr ZXJzVXNhZ2UKK1BWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwogUFhfQ2lwaGVyCiBQWF9Db21ibwot LSAKMi40My4wCgo= --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v25-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydqir4 RnJvbSAyOGY1N2FmNzk4ZmI4ZTIxOGYyZTAyODg5YjhjNDljM2EyYmFmMGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjUgMS81XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDggKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy NDAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCAyMzdhYjhkMGVkOS4uOTQ1OWEwMTBjYzMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMzUsNiArMjM1LDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTk2OCw2ICsxOTc3LDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDI3OTEwOGNhODlmLi44 MDZhN2Y0ODMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0z NzQsOCArMzc3LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlv biAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRf bXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9CiAJ CShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBhcmFs bGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsKKwkJ dmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgorCQl2 YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2YWNf d29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9yIGRl YWQgaXRlbXMgKi8KQEAgLTU1NCwxMiArNTU4LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRl X3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQs CiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4ZXNf cGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJCQlt YXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp ID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxlbF9t YWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3JtaW5n IHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVuIHBh cmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIgfHwg bWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5OCw4 ICs2MDcsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRy ZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMgPSAo bnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVsKSA6 IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVuYW5j ZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBt YXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJpYWJs ZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dvcmtl cnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDcsNiArNjU2LDEzIEBA IHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtlcnMs IHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4gYXV0 b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUgdGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KKwkgKiBmZXdl ciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVkLgorCSAqLworCWlmIChBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAwKQorCQlBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVs V29ya2VycygmbndvcmtlcnMpOworCiAJLyoKIAkgKiBTZXQgaW5kZXggdmFjdXVtIHN0YXR1cyBh bmQgbWFyayB3aGV0aGVyIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIgY2FuCiAJICogcHJvY2VzcyBp dC4KQEAgLTY5MSw2ICs3MDcsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4 ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAogCQlMYXVu Y2hQYXJhbGxlbFdvcmtlcnMocHZzLT5wY3h0KTsKIAorCQkvKgorCQkgKiBUZWxsIGF1dG92YWN1 dW0gdGhhdCB3ZSBjb3VsZCBub3QgbGF1bmNoIGFsbCB0aGUgcHJldmlvdXNseQorCQkgKiByZXNl cnZlZCB3b3JrZXJzLgorCQkgKi8KKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAm JgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA8IG53b3JrZXJzKQorCQl7CisJCQlB dXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhud29ya2VycyAtIHB2cy0+cGN4dC0+bndv cmtlcnNfbGF1bmNoZWQpOworCQl9CisKIAkJaWYgKHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPiAwKQogCQl7CiAJCQkvKgpAQCAtNzM5LDYgKzc2NSwxMCBAQCBwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5k ZXhfc2NhbgogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3VzYWdl W2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCisJCS8qIFJlbGVhc2UgYWxsIHRoZSByZXNlcnZl ZCBwYXJhbGxlbCB3b3JrZXJzIGZvciBhdXRvdmFjdXVtICovCisJCWlmIChBbUF1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkgJiYgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA+IDApCisJCQlB dXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2VycygpOwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDY5NWUxODdiYTExLi5lMWM5OTVkZDJlYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE1Miw2ICsxNTIsMTMgQEAgaW50CQkJ TG9nX2F1dG9hbmFseXplX21pbl9kdXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZf c3RvcmFnZV9wYXJhbV9jb3N0X2RlbGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFy YW1fY29zdF9saW1pdCA9IC0xOwogCisvKgorICogVHJhY2tzIHRoZSBudW1iZXIgb2YgcGFyYWxs ZWwgd29ya2VycyBjdXJyZW50bHkgcmVzZXJ2ZWQgYnkgdGhlCisgKiBhdXRvdmFjdXVtIHdvcmtl ci4gVGhpcyBpcyBub24temVybyBvbmx5IGZvciB0aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bQorICog bGVhZGVyIHByb2Nlc3MuCisgKi8KK3N0YXRpYyBpbnQJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAw OworCiAvKiBGbGFncyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9sYXRpbGUg c2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7CiAKQEAgLTI4Niw2ICsyOTMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVtV29ya0l0ZW0KICAqIGF2X3dvcmtJdGVtcwkJd29yayBp dGVtIGFycmF5CiAgKiBhdl9ud29ya2Vyc0ZvckJhbGFuY2UgdGhlIG51bWJlciBvZiBhdXRvdmFj dXVtIHdvcmtlcnMgdG8gdXNlIHdoZW4KICAqIAkJCQkJY2FsY3VsYXRpbmcgdGhlIHBlciB3b3Jr ZXIgY29zdCBsaW1pdAorICogYXZfZnJlZVBhcmFsbGVsV29ya2VycyB0aGUgbnVtYmVyIG9mIGZy ZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzCisgKiBhdl9tYXhQYXJhbGxlbFdvcmtlcnMg dGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycwogICoKICAq IFRoaXMgc3RydWN0IGlzIHByb3RlY3RlZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0IGZvciBh dl9zaWduYWwgYW5kIHBhcnRzCiAgKiBvZiB0aGUgd29ya2VyIGxpc3QgKHNlZSBhYm92ZSkuCkBA IC0zMDAsNiArMzA5LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlXb3JrZXJJbmZvCWF2X3N0YXJ0aW5n V29ya2VyOwogCUF1dG9WYWN1dW1Xb3JrSXRlbSBhdl93b3JrSXRlbXNbTlVNX1dPUktJVEVNU107 CiAJcGdfYXRvbWljX3VpbnQzMiBhdl9ud29ya2Vyc0ZvckJhbGFuY2U7CisJaW50MzIJCWF2X2Zy ZWVQYXJhbGxlbFdvcmtlcnM7CisJaW50MzIJCWF2X21heFBhcmFsbGVsV29ya2VyczsKIH0gQXV0 b1ZhY3V1bVNobWVtU3RydWN0OwogCiBzdGF0aWMgQXV0b1ZhY3V1bVNobWVtU3RydWN0ICpBdXRv VmFjdXVtU2htZW07CkBAIC0zNjIsNiArMzczLDcgQEAgc3RhdGljIHZvaWQgYXV0b3ZhY19yZXBv cnRfd29ya2l0ZW0oQXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRlbSwKIHN0YXRpYyB2b2lkIGF2 bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpOwogc3RhdGljIGJvb2wgYXZfd29ya2VyX2F2 YWlsYWJsZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGNoZWNrX2F2X3dvcmtlcl9ndWNzKHZvaWQpOwor c3RhdGljIHZvaWQgYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhpbnQgcHJldl9tYXhfcGFy YWxsZWxfd29ya2Vycyk7CiAKIAogCkBAIC03NjAsNiArNzcyLDggQEAgUHJvY2Vzc0F1dG9WYWNM YXVuY2hlckludGVycnVwdHModm9pZCkKIAlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKIAl7CiAJ CWludAkJCWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiA9IGF1dG92YWN1dW1fbWF4X3dvcmtl cnM7CisJCWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNfcHJldiA9CisJCQlh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiAJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CkBAIC03NzYsNiArNzkw LDE1IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZvaWQpCiAJCWlmIChhdXRv dmFjdXVtX21heF93b3JrZXJzX3ByZXYgIT0gYXV0b3ZhY3V1bV9tYXhfd29ya2VycykKIAkJCWNo ZWNrX2F2X3dvcmtlcl9ndWNzKCk7CiAKKwkJLyoKKwkJICogSWYgYXV0b3ZhY3V1bV9tYXhfcGFy YWxsZWxfd29ya2VycyBjaGFuZ2VkLCB3ZSBtdXN0IHRha2UgY2FyZSBvZgorCQkgKiB0aGUgY29y cmVjdCB2YWx1ZSBvZiBhdmFpbGFibGUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGluCisJ CSAqIHNobWVtLgorCQkgKi8KKwkJaWYgKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNf cHJldiAhPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycykKKwkJCWFkanVzdF9m cmVlX3BhcmFsbGVsX3dvcmtlcnMoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2 KTsKKwogCQkvKiByZWJ1aWxkIHRoZSBsaXN0IGluIGNhc2UgdGhlIG5hcHRpbWUgY2hhbmdlZCAq LwogCQlyZWJ1aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxpZE9pZCk7CiAJfQpAQCAtMTM4MCw2ICsx NDAzLDE2IEBAIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAgKgkJCQkJICBBVVRP VkFDVVVNIFdPUktFUiBDT0RFCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qCisgKiBNYWtlIHN1cmUgdGhh dCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQsIGV2ZW4gaWYgcGFyYWxsZWwKKyAq IGF1dG92YWN1dW0gbGVhZGVyIGlzIGZpbmlzaGluZyBkdWUgdG8gRkFUQUwgZXJyb3IuCisgKi8K K3N0YXRpYyB2b2lkCithdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1fZXhpdChpbnQgY29k ZSwgRGF0dW0gYXJnKQoreworCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7 Cit9CisKIC8qCiAgKiBNYWluIGVudHJ5IHBvaW50IGZvciBhdXRvdmFjdXVtIHdvcmtlciBwcm9j ZXNzZXMuCiAgKi8KQEAgLTIyNzYsNiArMjMwOSwxMiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJ CQkJCQkJCQkJICAiQXV0b3ZhY3V1bSBQb3J0YWwiLAogCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVG QVVMVF9TSVpFUyk7CiAKKwkvKgorCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gY2FuIHJlc2VydmUg cGFyYWxsZWwgd29ya2Vycy4gTWFrZSBzdXJlIHRoYXQgYWxsCisJICogcmVzZXJ2ZWQgd29ya2Vy cyBhcmUgcmVsZWFzZWQgZXZlbiBhZnRlciBGQVRBTCBlcnJvci4KKwkgKi8KKwliZWZvcmVfc2ht ZW1fZXhpdChhdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1fZXhpdCwgMCk7CisKIAkvKgog CSAqIFBlcmZvcm0gb3BlcmF0aW9ucyBvbiBjb2xsZWN0ZWQgdGFibGVzLgogCSAqLwpAQCAtMjQ1 Nyw2ICsyNDk2LDEyIEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJfQogCQlQR19DQVRDSCgpOwog CQl7CisJCQkvKgorCQkJICogUGFyYWxsZWwgYXV0b3ZhY3V1bSBjYW4gcmVzZXJ2ZSBwYXJhbGxl bCB3b3JrZXJzLiBNYWtlIHN1cmUKKwkJCSAqIHRoYXQgYWxsIHJlc2VydmVkIHdvcmtlcnMgYXJl IHJlbGVhc2VkLgorCQkJICovCisJCQlBdXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2Vy cygpOworCiAJCQkvKgogCQkJICogQWJvcnQgdGhlIHRyYW5zYWN0aW9uLCBzdGFydCBhIG5ldyBv bmUsIGFuZCBwcm9jZWVkIHdpdGggdGhlCiAJCQkgKiBuZXh0IHRhYmxlIGluIG91ciBsaXN0LgpA QCAtMjg1Nyw4ICsyOTAyLDEyIEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhU QUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJICovCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFu dXAgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUg PSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKLQkJLyogQXMgb2Ygbm93LCB3ZSBkb24ndCBzdXBw b3J0IHBhcmFsbGVsIHZhY3V1bSBmb3IgYXV0b3ZhY3V1bSAqLwotCQl0YWItPmF0X3BhcmFtcy5u d29ya2VycyA9IC0xOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIG5lZWQgdG8gcHJvY2VzcyBp bmRleGVzIG9mIHRhYmxlIGluIHBhcmFsbGVsLiAqLworCQl0YWItPmF0X3BhcmFtcy5ud29ya2Vy cyA9IGF2b3B0cworCQkJPyBhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycworCQkJ OiAtMTsKKwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6ZV9taW5fYWdl OwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3RhYmxlX2FnZTsK IAkJdGFiLT5hdF9wYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVsdGl4YWN0X2Zy ZWV6ZV9taW5fYWdlOwpAQCAtMzMzNSw2ICszMzg0LDg4IEBAIEF1dG9WYWN1dW1SZXF1ZXN0V29y ayhBdXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsIE9pZCByZWxhdGlvbklkLAogCXJldHVybiBy ZXN1bHQ7CiB9CiAKKy8qCisgKiBSZXNlcnZlcyBwYXJhbGxlbCB3b3JrZXJzIGZvciBhdXRvdmFj dXVtLgorICoKKyAqIG53b3JrZXJzIGlzIGFuIGluL291dCBwYXJhbWV0ZXI7IHRoZSByZXF1ZXN0 ZWQgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAqIHRvIHJlc2VydmUgYnkgdGhlIGNhbGxl ciwgYW5kIHNldCB0byB0aGUgYWN0dWFsIG51bWJlciBvZiByZXNlcnZlZCB3b3JrZXJzLgorICoK KyAqIFRoZSBjYWxsZXIgbXVzdCBjYWxsIEF1dG9WYWN1dW1SZWxlYXNlW0FsbF1QYXJhbGxlbFdv cmtlcnMoKSB0byByZWxlYXNlIHRoZQorICogcmVzZXJ2ZWQgd29ya2Vycy4KKyAqCisgKiBOT1RF OiBXZSB3aWxsIHRyeSB0byBwcm92aWRlIGFzIG1hbnkgd29ya2VycyBhcyByZXF1ZXN0ZWQsIGV2 ZW4gaWYgY2FsbGVyCisgKiB3aWxsIG9jY3VweSBhbGwgYXZhaWxhYmxlIHdvcmtlcnMuCisgKi8K K3ZvaWQKK0F1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKGludCAqbndvcmtlcnMpCit7 CisJLyogT25seSBsZWFkZXIgYXV0b3ZhY3V1bSB3b3JrZXIgY2FuIGNhbGwgdGhpcyBmdW5jdGlv bi4gKi8KKwlBc3NlcnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsKKworCS8qIFRoZSB3 b3JrZXIgbXVzdCBub3QgaGF2ZSBhbnkgcmVzZXJ2ZWQgd29ya2VycyB5ZXQgKi8KKwlBc3NlcnQo YXZfbndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1M b2NrLCBMV19FWENMVVNJVkUpOworCisJLyogUHJvdmlkZSBhcyBtYW55IHdvcmtlcnMgYXMgd2Ug Y2FuLiAqLworCSpud29ya2VycyA9IE1pbihBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxl bFdvcmtlcnMsICpud29ya2Vycyk7CisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxX b3JrZXJzIC09ICpud29ya2VyczsKKworCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwor CisJLyogUmVtZW1iZXIgaG93IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJlc2VydmVkLiAqLworCWF2 X253b3JrZXJzX3Jlc2VydmVkID0gKm53b3JrZXJzOworfQorCisvKgorICogUmVsZWFzZXMgdGhl IHJlc2VydmVkIHBhcmFsbGVsIHdvcmtlcnMgZm9yIGF1dG92YWN1dW0uCisgKgorICogVGhpcyBm dW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byByZWxlYXNlIHRoZSBwYXJhbGxlbCB3b3JrZXJzIHRo YXQgYW4KKyAqIGF1dG92YWN1dW0gd29ya2VyIHJlc2VydmVkIGJ5IEF1dG9WYWN1dW1SZXNlcnZl UGFyYWxsZWxXb3JrZXJzKCkuIG53b3JrZXJzCisgKiBpcyB0aGUgbnVtYmVyIG9mIHdvcmtlcnMg dG8gcmVsZWFzZSwgd2hpY2ggbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIHRoZQorICogbnVtYmVy IG9mIHdvcmtlcnMgY3VycmVudGx5IHJlc2VydmVkLCBhdl9ud29ya2Vyc19yZXNlcnZlZC4KKyAq Lwordm9pZAorQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKQor eworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAqLworCUFz c2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOworCisJLyogQ2Fubm90IHJlbGVhc2Ug bW9yZSB3b3JrZXJzIHRoYW4gcmVzZXJ2ZWQgKi8KKwlud29ya2VycyA9IE1pbihud29ya2Vycywg YXZfbndvcmtlcnNfcmVzZXJ2ZWQpOworCisJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywg TFdfRVhDTFVTSVZFKTsKKworCS8qCisJICogSWYgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFs bGVsIHdvcmtlcnMgd2FzIHJlZHVjZWQgZHVyaW5nIGV4ZWN1dGlvbiwKKwkgKiB3ZSBtdXN0IGNh cCBhdmFpbGFibGUgd29ya2VycyBudW1iZXIgYnkgaXRzIG5ldyB2YWx1ZS4KKwkgKi8KKwlBdXRv VmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgPQorCQlNaW4oQXV0b1ZhY3V1bVNo bWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzICsgbndvcmtlcnMsCisJCQlBdXRvVmFjdXVtU2ht ZW0tPmF2X21heFBhcmFsbGVsV29ya2Vycyk7CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1M b2NrKTsKKworCS8qIERvbid0IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2Ugd29ya2VycyBhbnltb3Jl LiAqLworCWF2X253b3JrZXJzX3Jlc2VydmVkIC09IG53b3JrZXJzOworfQorCisvKgorICogU2Ft ZSBhcyBhYm92ZSwgYnV0IHRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgYWxsIHRoZSBwYXJhbGxlbCB3 b3JrZXJzIHRoYXQKKyAqIHRoaXMgYXV0b3ZhY3V1bSB3b3JrZXIgcmVzZXJ2ZWQuCisgKi8KK3Zv aWQKK0F1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpCit7CisJLyogT25s eSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJQXNzZXJ0KEFtQXV0 b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSk7CisKKwlpZiAoYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPiAw KQorCQlBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhhdl9ud29ya2Vyc19yZXNlcnZl ZCk7CisKKwlBc3NlcnQoYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7Cit9CisKIC8qCiAgKiBh dXRvdmFjX2luaXQKICAqCQlUaGlzIGlzIGNhbGxlZCBhdCBwb3N0bWFzdGVyIGluaXRpYWxpemF0 aW9uLgpAQCAtMzM5NSw2ICszNTI2LDEwIEBAIEF1dG9WYWN1dW1TaG1lbUluaXQodm9pZCkKIAkJ QXNzZXJ0KCFmb3VuZCk7CiAKIAkJQXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7 CisJCUF1dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzID0KKwkJCU1pbihhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzLCBtYXhfcGFyYWxsZWxfd29ya2Vycyk7CisJCUF1 dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCQlBdXRvVmFjdXVtU2ht ZW0tPmF2X21heFBhcmFsbGVsV29ya2VyczsKIAkJZGNsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1l bS0+YXZfZnJlZVdvcmtlcnMpOwogCQlkbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1 bm5pbmdXb3JrZXJzKTsKIAkJQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciA9IE5V TEw7CkBAIC0zNDc2LDMgKzM2MTEsMjggQEAgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9pZCkKIAkJ CQkgZXJyZGV0YWlsKCJUaGUgc2VydmVyIHdpbGwgb25seSBzdGFydCB1cCB0byBcImF1dG92YWN1 dW1fd29ya2VyX3Nsb3RzXCIgKCVkKSBhdXRvdmFjdXVtIHdvcmtlcnMgYXQgYSBnaXZlbiB0aW1l LiIsCiAJCQkJCQkgICBhdXRvdmFjdXVtX3dvcmtlcl9zbG90cykpKTsKIH0KKworLyoKKyAqIEFk anVzdHMgdGhlIG51bWJlciBvZiBmcmVlIHBhcmFsbGVsIHdvcmtlcnMgY29ycmVzcG9uZHMgdG8g dGhlIG5ldworICogYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyB2YWx1ZS4KKyAqLwor c3RhdGljIHZvaWQKK2FkanVzdF9mcmVlX3BhcmFsbGVsX3dvcmtlcnMoaW50IHByZXZfbWF4X3Bh cmFsbGVsX3dvcmtlcnMpCit7CisJaW50CW5mcmVlX3dvcmtlcnM7CisKKwlMV0xvY2tBY3F1aXJl KEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOworCisJLyoKKwkgKiBDYXAgb3IgaW5jcmVh c2UgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBhY2NvcmRpbmcgdG8gdGhlCisJICog cGFyYW1ldGVyIGNoYW5nZS4KKwkgKi8KKwluZnJlZV93b3JrZXJzID0KKwkJYXV0b3ZhY3V1bV9t YXhfcGFyYWxsZWxfd29ya2VycyAtIHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMgKworCQlBdXRv VmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7CisKKwlBdXRvVmFjdXVtU2htZW0t PmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgPSBNYXgobmZyZWVfd29ya2VycywgMCk7CisJQXV0b1Zh Y3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnMgPSBhdXRvdmFjdXVtX21heF9wYXJhbGxl bF93b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvZ2xvYmFscy5jCmluZGV4IDM2YWQ3MDhiMzYwLi44MjY1YTgyYjYzOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9nbG9iYWxzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQCBpbnQJCQlOQnVmZmVycyA9IDE2 Mzg0OwogaW50CQkJTWF4Q29ubmVjdGlvbnMgPSAxMDA7CiBpbnQJCQltYXhfd29ya2VyX3Byb2Nl c3NlcyA9IDg7CiBpbnQJCQltYXhfcGFyYWxsZWxfd29ya2VycyA9IDg7CitpbnQJCQlhdXRvdmFj dXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMjsKIGludAkJCU1heEJhY2tlbmRzID0gMDsKIAog LyogR1VDIHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZDc3 NTAyODM4YzQuLjRhNWM3M2E5ZTMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMzMjYsOSArMzMy NiwxMyBAQCBzZXRfY29uZmlnX3dpdGhfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbmZpZ19o YW5kbGUgKmhhbmRsZSwKIAkgKgogCSAqIEFsc28gYWxsb3cgbm9ybWFsIHNldHRpbmcgaWYgdGhl IEdVQyBpcyBtYXJrZWQgR1VDX0FMTE9XX0lOX1BBUkFMTEVMLgogCSAqCi0JICogT3RoZXIgY2hh bmdlcyBtaWdodCBuZWVkIHRvIGFmZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4K KwkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNv IGZvcmJpZCB0aGVtLiBOb3RlLAorCSAqIHRoYXQgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIg aXMgYW4gZXhjZXB0aW9uLCBiZWNhdXNlIG9ubHkKKwkgKiBjb3N0LWJhc2VkIGRlbGF5cyBuZWVk IHRvIGJlIGFmZmVjdGVkIGFsc28gdG8gcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMsCisJICogYW5k IHdlIHdpbGwgaGFuZGxlIGl0IGVsc2V3aGVyZSBpZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlpZiAo SXNJblBhcmFsbGVsTW9kZSgpICYmIGNoYW5nZVZhbCAmJiBhY3Rpb24gIT0gR1VDX0FDVElPTl9T QVZFICYmCisJaWYgKElzSW5QYXJhbGxlbE1vZGUoKSAmJiAhQW1BdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpICYmIGNoYW5nZVZhbCAmJgorCQlhY3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCiAJ CShyZWNvcmQtPmZsYWdzICYgR1VDX0FMTE9XX0lOX1BBUkFMTEVMKSA9PSAwKQogCXsKIAkJZXJl cG9ydChlbGV2ZWwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJh bWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0Cmlu ZGV4IGE1YTBlZGYyNTM0Li5jMjM5NWNmNjYzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKQEAgLTE1NCw2ICsxNTQsMTQgQEAKICAgbWF4ID0+ICcyMDAwMDAw MDAwJywKIH0sCiAKK3sgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vycycs IHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVN X0FVVE9WQUNVVU0nLAorICBzaG9ydF9kZXNjID0+ICdNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMsIHRoYXQgY2FuIGJlIHRha2VuIGZyb20gYmd3b3JrZXJzIHBv b2wuJywKKyAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMnLAor ICBib290X3ZhbCA9PiAnMicsCisgIG1pbiA9PiAnMCcsCisgIG1heCA9PiAnTUFYX0JBQ0tFTkRT JywKK30sCisKIHsgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsIHR5cGUgPT4gJ2lu dCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0n LAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVv dXNseSBydW5uaW5nIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4nLAogICB2YXJpYWJsZSA9 PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggZTY4NmQ4OGFmYzQuLjVlMWM2MmQ2MTZjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC03MTAs NiArNzEwLDcgQEAKICNhdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAgICAjIGF1 dG92YWN1dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0b3ZhY3V1 bV9tYXhfd29ya2VycyA9IDMgICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92YWN1dW0g c3VicHJvY2Vzc2VzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIgICAgIyBs aW1pdGVkIGJ5IG1heF9wYXJhbGxlbF93b3JrZXJzCiAjYXV0b3ZhY3V1bV9uYXB0aW1lID0gMW1p biAgICAgICAgICAgICAgIyB0aW1lIGJldHdlZW4gYXV0b3ZhY3V1bSBydW5zCiAjYXV0b3ZhY3V1 bV92YWN1dW1fdGhyZXNob2xkID0gNTAgICAgICAgIyBtaW4gbnVtYmVyIG9mIHJvdyB1cGRhdGVz IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFjdXVt CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMTk5ZmM2NGRkZjUuLjg0ZjEwNDBhZWQyIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgdGFibGVfc3RvcmFnZV9wYXJhbWV0ZXJzW10gPSB7CiAJImF1dG92YWN1dW1fbXVs dGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIiwKIAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21p bl9hZ2UiLAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlIiwKKwkiYXV0 b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxh eSIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQiLAogCSJhdXRvdmFjdXVtX3ZhY3V1 bV9pbnNlcnRfc2NhbGVfZmFjdG9yIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1p bi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggZjE2ZjM1NjU5YjkuLjAwMTkwYzY3 ZWNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVk ZS9taXNjYWRtaW4uaApAQCAtMTc4LDYgKzE3OCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg TWF4QmFja2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heENvbm5lY3Rpb25zOwogZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfd29ya2VyX3Byb2Nlc3NlczsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IGF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg Y29tbWl0X3RpbWVzdGFtcF9idWZmZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtdWx0aXhh Y3RfbWVtYmVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCmluZGV4IDVh YTBmM2E4YWMxLi5mMzc4M2FmYjUxYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgK QEAgLTYyLDYgKzYyLDExIEBAIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIEF1dG9WYWNXb3JrZXJN YWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0CiBleHRlcm4gYm9vbCBB dXRvVmFjdXVtUmVxdWVzdFdvcmsoQXV0b1ZhY3V1bVdvcmtJdGVtVHlwZSB0eXBlLAogCQkJCQkJ CQkgIE9pZCByZWxhdGlvbklkLCBCbG9ja051bWJlciBibGtubyk7CiAKKy8qIHBhcmFsbGVsIGF1 dG92YWN1dW0gc3R1ZmYgKi8KK2V4dGVybiB2b2lkCUF1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxX b3JrZXJzKGludCAqbndvcmtlcnMpOworZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVJlbGVhc2VQYXJh bGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKTsKK2V4dGVybiB2b2lkIEF1dG9WYWN1dW1SZWxlYXNl QWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpOworCiAvKiBzaGFyZWQgbWVtb3J5IHN0dWZmICovCiBl eHRlcm4gU2l6ZSBBdXRvVmFjdXVtU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXV0b1Zh Y3V1bVNobWVtSW5pdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMjM2ODMwZjZiOTMuLjExZGQzYWViYzZj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9yZWwuaApAQCAtMzExLDYgKzMxMSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBGb3JlaWduS2V5 Q2FjaGVJbmZvCiB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjT3B0cwogewogCWJvb2wJCWVuYWJsZWQ7 CisKKwkvKgorCSAqIFRhcmdldCBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJz LiAtMSBieSBkZWZhdWx0IGRpc2FibGVzCisJICogcGFyYWxsZWwgdmFjdXVtIGR1cmluZyBhdXRv dmFjdXVtLiAwIG1lYW5zIGNob29zZSB0aGUgcGFyYWxsZWwgZGVncmVlCisJICogYmFzZWQgb24g dGhlIG51bWJlciBvZiBpbmRleGVzLgorCSAqLworCWludAkJCWF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VyczsKKwogCWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90 aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7Ci0tIAoyLjQzLjAKCg== --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0005-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v25-0005-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydqh30 RnJvbSA5MzA5NzFlMmEyMDQ1NTU0MWNiOGNkZjUwMDVhNWIxMzdkNWYxZmU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjUgNS81XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggOGNkZDgy NmZiZDMuLjczZjgzOWI2YThkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yOTE4LDYgKzI5MTgsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05Mzk1LDYgKzkzOTYsMjIgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LiBUaGUgZGVmYXVsdCBp cyAyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVu YW5jZS5zZ21sCmluZGV4IDdjOTU4YjA2MjczLi5jOWY5MTYzYzU1MSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKQEAgLTkyNiw2ICs5MjYsMTggQEAgSElOVDogIEV4ZWN1dGUgYSBkYXRhYmFzZS13aWRl IFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlLgogICAgIGF1dG92YWN1dW0gd29ya2VycycgYWN0aXZp dHkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIElmIGFuIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3MgY29tZXMgYWNyb3NzIGEgdGFibGUgd2l0aCB0aGUgZW5hYmxlZAorICAgIDx4cmVm IGxpbmtlbmQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiLz4gc3RvcmFn ZSBwYXJhbWV0ZXIsCisgICAgaXQgd2lsbCBsYXVuY2ggcGFyYWxsZWwgd29ya2VycyBpbiBvcmRl ciB0byB2YWN1dW0gaW5kZXhlcyBvZiB0aGlzIHRhYmxlCisgICAgaW4gYSBwYXJhbGxlbCBtb2Rl LiBQYXJhbGxlbCB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIG9mIHByb2Nlc3Nlcwor ICAgIGVzdGFibGlzaGVkIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3Nl cyIvPiwgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29y a2VycyIvPi4KKyAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyB0aGF0IGNhbiBiZSBhY3RpdmUgYXQgb25lCisgICAgdGltZSBpcyBsaW1pdGVkIGJ5IHRo ZSA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPgor ICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAg ICBJZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1p bmcgaW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJz IG1pZ2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCA5ODI1MzJmZTcyNS4uNDg5NGRlMDIxY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTcxOCw2ICsxNzE4LDI2IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgIDx2YXJsaXN0ZW50cnkgaWQ9InJl bG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnM8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0 ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM8 L3Zhcm5hbWU+IHN0b3JhZ2UgcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUg bWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIHBy b2Nlc3MKKyAgICAgIGluZGV4ZXMgb2YgdGhpcyB0YWJsZS4KKyAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIC0xLCB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcgZm9yCisg ICAgICB0aGlzIHRhYmxlLiBJZiB2YWx1ZSBpcyAwIHRoZW4gcGFyYWxsZWwgZGVncmVlIHdpbGwg Y29tcHV0ZWQgYmFzZWQgb24KKyAgICAgIG51bWJlciBvZiBpbmRleGVzLgorICAgICAgTm90ZSB0 aGF0IHRoZSBjb21wdXRlZCBudW1iZXIgb2Ygd29ya2VycyBtYXkgbm90IGFjdHVhbGx5IGJlIGF2 YWlsYWJsZSBhdAorICAgICAgcnVuIHRpbWUuIElmIHRoaXMgb2NjdXJzLCB0aGUgYXV0b3ZhY3V1 bSB3aWxsIHJ1biB3aXRoIGZld2VyIHdvcmtlcnMKKyAgICAgIHRoYW4gZXhwZWN0ZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXZhY3V1bS10aHJlc2hvbGQiIHhyZWZs YWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIj4KICAgICA8dGVybT48bGl0ZXJhbD5h dXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD50b2FzdC5hdXRv dmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikK ICAgICA8aW5kZXh0ZXJtPgotLSAKMi40My4wCgo= --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v24--v25-diff-for-0004.patch" Content-Disposition: attachment; filename="v24--v25-diff-for-0004.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydvz45 RnJvbSBkZWFmMjQ3NTlkODM5OWY1NmQ3ZTE1NTc1OGRmNzc3MWY2ZWU2MjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBXZWQsIDExIE1hciAyMDI2IDE3OjUzOjA5ICswNzAwClN1YmplY3Q6IFtQQVRD SF0gZml4ZXMgZm9yIDAwMDQKCi0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMgICAgICAgICAgIHwgMjUgKysrKystLS0tLS0tLS0tLS0tLQogLi4uL3QvMDAxX3BhcmFsbGVs X2F1dG92YWN1dW0ucGwgICAgICAgICAgICAgIHwgIDQgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDgg aW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYwppbmRleCA4NjljYThmNzU5Yi4uN2U5OTRlODg4NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jCkBAIC0xNDEwLDE4ICsxNDEwLDcgQEAgYXZsX3NpZ3VzcjJfaGFuZGxlcihT SUdOQUxfQVJHUykKIHN0YXRpYyB2b2lkCiBhdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1f ZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCWludCBucmVzZXJ2ZWRfb2xkID0gYXZfbndv cmtlcnNfcmVzZXJ2ZWQ7Ci0KIAlBdXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2Vycygp OwotCi0JaWYgKG5yZXNlcnZlZF9vbGQgPiAwKQotCXsKLQkJZWxvZyhERUJVRzIsCi0JCQkgbmdl dHRleHQoImF1dG92YWN1dW0gd29ya2VyIGJlZm9yZV9zaG1lbV9leGl0OiAlZCBwYXJhbGxlbCB3 b3JrZXIgaGFzIGJlZW4gcmVsZWFzZWQiLAotCQkJCQkgICJhdXRvdmFjdXVtIHdvcmtlciBiZWZv cmVfc2htZW1fZXhpdDogJWQgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZCIsCi0J CQkJCQlucmVzZXJ2ZWRfb2xkIC0gYXZfbndvcmtlcnNfcmVzZXJ2ZWQpLAotCQkJIG5yZXNlcnZl ZF9vbGQgLSBhdl9ud29ya2Vyc19yZXNlcnZlZCk7Ci0JfQogfQogCiAvKgpAQCAtMjUwNywyMCAr MjQ5NiwxMiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCX0KIAkJUEdfQ0FUQ0goKTsKIAkJewot CQkJaW50CW5yZXNlcnZlZF93b3JrZXJzID0gYXZfbndvcmtlcnNfcmVzZXJ2ZWQ7Ci0KIAkJCS8q CiAJCQkgKiBQYXJhbGxlbCBhdXRvdmFjdXVtIGNhbiByZXNlcnZlIHBhcmFsbGVsIHdvcmtlcnMu IE1ha2Ugc3VyZQogCQkJICogdGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQu CiAJCQkgKi8KIAkJCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7CiAKLQkJ CWlmIChucmVzZXJ2ZWRfd29ya2VycyA+IDApCi0JCQkJZXJlcG9ydChERUJVRzIsCi0JCQkJCQko ZXJybXNnKCIlZCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQg YWZ0ZXIgb2NjdXJlZCBlcnJvciIsCi0JCQkJCQkJCW5yZXNlcnZlZF93b3JrZXJzKSwKLQkJCQkJ CSBlcnJoaWRlY29udGV4dCh0cnVlKSkpOwotCiAJCQkvKgogCQkJICogQWJvcnQgdGhlIHRyYW5z YWN0aW9uLCBzdGFydCBhIG5ldyBvbmUsIGFuZCBwcm9jZWVkIHdpdGggdGhlCiAJCQkgKiBuZXh0 IHRhYmxlIGluIG91ciBsaXN0LgpAQCAtMzQ2Nyw2ICszNDQ4LDEyIEBAIEF1dG9WYWN1dW1SZWxl YXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2VycykKIAogCS8qIERvbid0IGhhdmUgdG8gcmVt ZW1iZXIgdGhlc2Ugd29ya2VycyBhbnltb3JlLiAqLwogCWF2X253b3JrZXJzX3Jlc2VydmVkIC09 IG53b3JrZXJzOworCisJZWxvZyhERUJVRzIsCisJCSBuZ2V0dGV4dCgiYXV0b3ZhY3V1bSB3b3Jr ZXI6ICVkIHBhcmFsbGVsIHdvcmtlciBoYXMgYmVlbiByZWxlYXNlZCIsCisJCQkJICAiYXV0b3Zh Y3V1bSB3b3JrZXI6ICVkIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQiLAorCQkJ CSAgbndvcmtlcnMpLAorCQkgbndvcmtlcnMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1 dW0ucGwKaW5kZXggN2Y4YjVhN2I0ZDMuLmU1ZGFjZjU5OTgwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92 YWN1dW0ucGwKQEAgLTI0OSw3ICsyNDksNyBAQCAkbG9nX3N0YXJ0ID0gJG5vZGUtPndhaXRfZm9y X2xvZygKICk7CiAKICRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAotCXFyLzIgcGFy YWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIGFmdGVyIG9jY3VyZWQg ZXJyb3IvLAorCXFyL2F1dG92YWN1dW0gd29ya2VyOiAyIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJl ZW4gcmVsZWFzZWQvLAogCSRsb2dfc3RhcnQKICk7CiAKQEAgLTI4Niw3ICsyODYsNyBAQCAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewogfSk7CiAKICRsb2dfc3RhcnQgPSAkbm9kZS0+ d2FpdF9mb3JfbG9nKAotCXFyL2F1dG92YWN1dW0gd29ya2VyIGJlZm9yZV9zaG1lbV9leGl0OiAy IHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQvLAorCXFyL2F1dG92YWN1dW0gd29y a2VyOiAyIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQvLAogCSRsb2dfc3RhcnQK ICk7CiAKLS0gCjIuNDMuMAoK --00000000000039f23a064cbdf03e Content-Type: text/x-patch; charset="US-ASCII"; name="v24--v25-diff-for-0001.patch" Content-Disposition: attachment; filename="v24--v25-diff-for-0001.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmlydvzr6 RnJvbSAzNzIzZjQzMjUzYmJmMjBiYzBhYzMxM2Q0ZjJkNjYwNjViZTYyOWYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBXZWQsIDExIE1hciAyMDI2IDE2OjE4OjE1ICswNzAwClN1YmplY3Q6IFtQQVRD SF0gZml4ZXMgZm9yIDAwMDEKCi0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGQ0MDM0NTBkNTA4Li5lMWM5OTVk ZDJlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTM0MzIsNyArMzQzMiw3 IEBAIEF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2VycykKIAlBc3Nl cnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsKIAogCS8qIENhbm5vdCByZWxlYXNlIG1v cmUgd29ya2VycyB0aGFuIHJlc2VydmVkICovCi0JQXNzZXJ0KG53b3JrZXJzIDw9IGF2X253b3Jr ZXJzX3Jlc2VydmVkKTsKKwlud29ya2VycyA9IE1pbihud29ya2VycywgYXZfbndvcmtlcnNfcmVz ZXJ2ZWQpOwogCiAJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVTSVZFKTsK IAotLSAKMi40My4wCgo= --00000000000039f23a064cbdf03e--