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 1vMANy-002jQN-1K for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 19:32:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vMANw-003djy-1W for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 19:32:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vMANv-003djq-39 for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 19:32:04 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vMANs-000bJp-1E for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 19:32:02 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-64074f01a6eso2218448a12.2 for ; Thu, 20 Nov 2025 11:31:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763667119; x=1764271919; 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=nmmZEWGxTX57UR8ZVB7COFziP7FrCI9jprG4elkCRio=; b=HQsXbeXzfRVKlpfCSGUViZ9YkNS2o5YLxnB81GmFpW5YgEssSATEkPiwmk+CnGMIj9 GoNjpXQiRlRQAVY+oMWUQaV1HEcv0WscAfmWDPHcRZY9y4qH25Uh8149QSyNN2ozWu/x VTRSGAGRVwDP8xaJEu127wlRerowmUwmGTgnKCZAjTev0WwN0eLCvxQOCIIG6pRzZEDQ OF+li8tGpLnxOCEEQd1koxRwbinaNd/jhZBqWPL8/PhXyAOUsbixPnC4pj3tpe5ZKgwn kCFIQQotzfKxhIHCoihCMt9o8iQ31C7FHL9YCMtMNby1/ft9uv/W47JVp2F5FJagbzOk Cx3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763667119; x=1764271919; 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=nmmZEWGxTX57UR8ZVB7COFziP7FrCI9jprG4elkCRio=; b=qCa8uAm9fEBQWqhmpLFtnxYriwIkGrQdzCA8oUETi+SiyDkZS/qYRB0S7/MweG1qgT AUxkysemhdVLzyF6HjK2IXiOdcn/fEIqwt3v44FRgon4OTpjlXJyA24mVIOqPtOzQwy0 eUfZmOyocatOXgngQ0Iaz3Kn+Gyh+fsbxO4AAK7jw4KbIRVRUSKT6i9DVzyFb/selEcx 8+UI/wZcG+POOyalkWrAW4bqFV1kyLhmrAXfDbmh/9CsAQyiRAM4o+7DyU5sxErmvzl2 9JZJZSqzi2hO7j7heFMjPuqmxEiC80K2iEdcUBseflcJOjHjJ67tYPqDqm855Hxm/tqB 6I5w== X-Forwarded-Encrypted: i=1; AJvYcCV1iSD3+O4avlGBnXCbUQJvtSTy5t7lefuG7k8mBogk0VDnTES3/atRKsYJnktbF0Nt72MJmj5CTXSAluYv@lists.postgresql.org X-Gm-Message-State: AOJu0Yy/23U/DTjcFIGNVmkhPodpfbMhB7+42kAbvq4yYxJHKD7hoLuD TlE6v7uB6+NJ2FCG2+AbqgFZ17YilyCemmyb0RH9auSBzvcuIz1mObCu9FMEl+uJ0FSep6cKzc+ cOHHAjPGCZE6mPPg2eA2qV9zRMoaQfYA= X-Gm-Gg: ASbGnctn6NTyLN9kjEsF3svml1LdjzNvTB4l15DgsPto1gZNm81gMBy4enAtdHVmoPe fRhlxuWx+tKDNOo+q7H02xrQnAkKDbVVm1ps7vaKlykZeUNifTz/wk2m6bLQzvVA6xG3IBSZPPU YOAhqy1cObOatXnqchDsE3sb7f2+eod7BX/wnU/mbxPzUJUMZHPJPpfpjiPG68uOoFuvy0bkrjo juTQej8UIBC9z3RxJDI8dRPFHahBotwXJpbihbZqPo+BLbqI0r7f/MjsvqnSDzV1EenCA== X-Google-Smtp-Source: AGHT+IGsg2pByZPsR0TsGjVb4zgR78sHbnacz81CEPYVgGMJnOVTGfOTWnvKAGDl3ojPW7OedC5nZu5XxVCMIJF80Xc= X-Received: by 2002:a05:6402:2792:b0:640:36d9:54fe with SMTP id 4fb4d7f45d1cf-6453644f425mr3534028a12.24.1763667118539; Thu, 20 Nov 2025 11:31:58 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Thu, 20 Nov 2025 13:31:45 -0600 X-Gm-Features: AWmQ_bmQ4IrwinX2DrzTLXWzQtyc1PdB9RN8n4yKcU-s3KxLY8-KzoJJwDP1IHg Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Daniil Davydov <3danissimo@gmail.com>, Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000001aafaf06440bc0ea" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001aafaf06440bc0ea Content-Type: text/plain; charset="UTF-8" Hi, I started to review this patch set again, and it needed rebasing, so I went ahead and did that. I also have some comments: #1 In AutoVacuumReserveParallelWorkers() I think here we should assert: ``` Assert(nworkers <= AutoVacuumShmem->av_freeParallelWorkers); ``` prior to: ``` + AutoVacuumShmem->av_freeParallelWorkers -= nworkers; ``` We are capping nworkers earlier in parallel_vacuum_compute_workers() ``` /* Cap by GUC variable */ parallel_workers = Min(parallel_workers, max_workers); ``` so the assert will safe-guard against someone making a faulty change in parallel_vacuum_compute_workers() #2 In parallel_vacuum_process_all_indexes() ``` + /* + * Reserve workers in autovacuum global state. Note, that we may be given + * fewer workers than we requested. + */ + if (AmAutoVacuumWorkerProcess() && nworkers > 0) + nworkers = AutoVacuumReserveParallelWorkers(nworkers); ``` nworkers has a double meaning. The return value of AutoVacuumReserveParallelWorkers is nreserved. I think this should be ``` nreserved = AutoVacuumReserveParallelWorkers(nworkers); ``` and nreserved becomes the authoritative value for the number of parallel workers after that point. #3 I noticed in the logging: ``` 2025-11-20 18:44:09.252 UTC [36787] LOG: automatic vacuum of table "test.public.t": index scans: 0 workers usage statistics for all of index scans : launched in total = 3, planned in total = 3 pages: 0 removed, 503306 remain, 14442 scanned (2.87% of total), 0 eagerly scanned tuples: 101622 removed, 7557074 remain, 0 are dead but not yet removable removable cutoff: 1711, which was 1 XIDs old when operation ended frozen: 4793 pages from table (0.95% of total) had 98303 tuples frozen visibility map: 4822 pages set all-visible, 4745 pages set all-frozen (0 were all-visible) index scan bypassed: 8884 pages from table (1.77% of total) have 195512 dead item identifiers ``` that even though index scan was bypased, we still launched parallel workers. I didn't dig deep into this, but that looks wrong. what do you think? #4 instead of: "workers usage statistics for all of index scans : launched in total = 0, planned in total = 0" how about: "parallel index scan : workers planned = 0, workers launched = 0" also log this after the "index scan needed:" line; so it looks like this. What do you think> ``` index scan needed: 13211 pages from table (2.63% of total) had 289482 dead item identifiers removed parallel index scan : workers planned = 0, workers launched = 0 index "t_pkey": pages: 25234 in total, 0 newly deleted, 0 currently deleted, 0 reusable index "t_c1_idx": pages: 10219 in total, 0 newly deleted, 0 currently deleted, 0 reusable ``` -- Sami Imseih Amazon Web Services (AWS) --0000000000001aafaf06440bc0ea Content-Type: application/octet-stream; name="v14-0004-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v14-0004-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7tp0np3 RnJvbSAxMzAyZjk2NjA1M2MzMGM4OWM5MzY1YjQ4YmZmNzkzODQ0MDUzZDI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDMxIE9jdCAyMDI1IDE0OjQ0OjM1ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTQgNC80XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysK IGRvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sICAgICAgfCAxMiArKysrKysrKysrKysKIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgfCAyMCArKysrKysrKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDAyM2Iz ZjAzYmE5Li4wZjcwOTZjMmI1ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMjg0MSw2ICsyODQxLDcgQEAgaW5j bHVkZV9kaXIgJ2NvbmYuZCcKICAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGVuIGNoYW5naW5n IHRoaXMgdmFsdWUsIGNvbnNpZGVyIGFsc28gYWRqdXN0aW5nCiAgICAgICAgICA8eHJlZiBsaW5r ZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4sCisgICAgICAgICA8eHJlZiBsaW5rZW5k PSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKICAgICAgICAgIDx4cmVm IGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtbWFpbnRlbmFuY2Utd29ya2VycyIvPiwgYW5kCiAg ICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMtcGVyLWdhdGhl ciIvPi4KICAgICAgICAgPC9wYXJhPgpAQCAtOTI2NCw2ICs5MjY1LDIzIEBAIENPUFkgcG9zdGdy ZXNfbG9nIEZST00gJy9mdWxsL3BhdGgvdG8vbG9nZmlsZS5jc3YnIFdJVEggY3N2OwogICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRy eSBpZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyI+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPmF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+PC9wcmltYXJ5PgorICAgICAg ICAgPHNlY29uZGFyeT5jb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvc2Vjb25kYXJ5PgorICAgICAg ICA8L2luZGV4dGVybT4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdAorICAgICAgICAgIGNhbiBiZSB1c2VkIGZvciBwYXJh bGxlbCBpbmRleCB2YWN1dW1pbmcgYXQgb25lIHRpbWUuIElzIGNhcHBlZCBieQorICAgICAgICAg IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3NlcyIvPi4gVGhlIGRlZmF1bHQg aXMgMCwKKyAgICAgICAgICB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcu CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKaW5kZXggZjRmMDQzM2VmNmYuLjAyZjMwNmJiYjhhIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dt bApAQCAtODk3LDYgKzg5NywxOCBAQCBISU5UOiAgRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFD VVVNIGluIHRoYXQgZGF0YWJhc2UuCiAgICAgYXV0b3ZhY3V1bSB3b3JrZXJzJyBhY3Rpdml0eS4K ICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgSWYgYW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJv Y2VzcyBjb21lcyBhY3Jvc3MgYSB0YWJsZSB3aXRoIHRoZSBlbmFibGVkCisgICAgPHhyZWYgbGlu a2VuZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIvPiBzdG9yYWdlIHBh cmFtZXRlciwKKyAgICBpdCB3aWxsIGxhdW5jaCBwYXJhbGxlbCB3b3JrZXJzIGluIG9yZGVyIHRv IHZhY3V1bSBpbmRleGVzIG9mIHRoaXMgdGFibGUKKyAgICBpbiBhIHBhcmFsbGVsIG1vZGUuIFBh cmFsbGVsIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgb2YgcHJvY2Vzc2VzCisgICAg ZXN0YWJsaXNoZWQgYnkgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC13b3JrZXItcHJvY2Vzc2VzIi8+ LCBsaW1pdGVkIGJ5CisgICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJz Ii8+LgorICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJz IHRoYXQgY2FuIGJlIGFjdGl2ZSBhdCBvbmUKKyAgICB0aW1lIGlzIGxpbWl0ZWQgYnkgdGhlIDx4 cmVmIGxpbmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+CisgICAg Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIElm IHNldmVyYWwgbGFyZ2UgdGFibGVzIGFsbCBiZWNvbWUgZWxpZ2libGUgZm9yIHZhY3V1bWluZyBp biBhIHNob3J0CiAgICAgYW1vdW50IG9mIHRpbWUsIGFsbCBhdXRvdmFjdXVtIHdvcmtlcnMgbWln aHQgYmVjb21lIG9jY3VwaWVkIHdpdGgKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4 IDY1NTdjNWNmZmQ4Li5lOTVhNjQ4OGM1ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CkBAIC0xNzE3LDYgKzE3MTcsMjYgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0 aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRvdmFjdXVtX3Bh cmFsbGVsX3dvcmtlcnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VyczwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+ CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvdmFy bmFtZT4gc3RvcmFnZSBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBTZXRzIHRoZSBtYXhp bXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdCBjYW4gcHJvY2Vz cworICAgICAgaW5kZXhlcyBvZiB0aGlzIHRhYmxlLgorICAgICAgVGhlIGRlZmF1bHQgdmFsdWUg aXMgLTEsIHdoaWNoIG1lYW5zIG5vIHBhcmFsbGVsIGluZGV4IHZhY3V1bWluZyBmb3IKKyAgICAg IHRoaXMgdGFibGUuIElmIHZhbHVlIGlzIDAgdGhlbiBwYXJhbGxlbCBkZWdyZWUgd2lsbCBjb21w dXRlZCBiYXNlZCBvbgorICAgICAgbnVtYmVyIG9mIGluZGV4ZXMuCisgICAgICBOb3RlIHRoYXQg dGhlIGNvbXB1dGVkIG51bWJlciBvZiB3b3JrZXJzIG1heSBub3QgYWN0dWFsbHkgYmUgYXZhaWxh YmxlIGF0CisgICAgICBydW4gdGltZS4gSWYgdGhpcyBvY2N1cnMsIHRoZSBhdXRvdmFjdXVtIHdp bGwgcnVuIHdpdGggZmV3ZXIgd29ya2VycworICAgICAgdGhhbiBleHBlY3RlZC4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tdmFjdXVtLXRocmVzaG9sZCIgeHJlZmxhYmVs PSJhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPnRvYXN0LmF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAg IDxpbmRleHRlcm0+Ci0tIAoyLjQzLjAKCg== --0000000000001aafaf06440bc0ea Content-Type: application/octet-stream; name="v14-0003-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v14-0003-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7tp0nn2 RnJvbSAzYTdjYWNiNGU3ZGVkMzdkYWM1ZWI1NGU3NjE0OTQyZTk2ODRmNjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDMxIE9jdCAyMDI1IDE0OjQ0OjEyICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTQgMy80XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L21vZHVs ZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlICAgICB8ICAyNiArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDM2ICsrKwogLi4uL21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3QvMDAxX2Jhc2ljLnBsICAgIHwgMTY1ICsrKysrKysrKysrKwogLi4uL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgIHwgIDM0ICsrKwogLi4uL21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgMjU1ICsrKysrKysrKysrKysrKysr KwogLi4uL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCAgIHwgICAzICsK IDExIGZpbGVzIGNoYW5nZWQsIDU0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9iYXNpYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA5YTI1ODIz ODY1MC4uMGNmZGY3OWNiNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpA QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC03NTIsNiArNzUzLDEzIEBAIHBhcmFs bGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywg aW50IG51bV9pbmRleF9zY2FuCiAJCX0KIAl9CiAKKwkvKgorCSAqIFRvIGJlIGFibGUgdG8gZXhl cmNpc2Ugd2hldGhlciBhbGwgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBhcmUgYmVpbmcKKwkg KiByZWxlYXNlZCBhbnl3YXksIGFsbG93IGluamVjdGlvbiBwb2ludHMgdG8gdHJpZ2dlciBhIGZh aWx1cmUgYXQgdGhpcworCSAqIHBvaW50LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0b3Zh Y3V1bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwgTlVMTCk7CisKIAkvKiBWYWN1dW0gdGhlIGlu ZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDJiNmNlZWRmOTg3Li4zYThhNjE3ZmM2MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTM0MzUsNiArMzQzNSwxMyBAQCBBdXRvVmFj dXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpCiAJLyogUmVtZW1iZXIgaG93 IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJlc2VydmVkLiAqLwogCWF2X253b3JrZXJzX3Jlc2VydmVk ICs9IG53b3JrZXJzOwogCisJLyoKKwkgKiBJbmplY3Rpb24gcG9pbnQgdG8gaGVscCBleGVyY2lz aW5nIG51bWJlciBvZiBhdmFpbGFibGUgcGFyYWxsZWwKKwkgKiBhdXRvdmFjdXVtIHdvcmtlcnMu CisJICovCisJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLXNldC1mcmVlLXBhcmFsbGVsLXdv cmtlcnMtbnVtIiwKKwkJCQkJJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2Vy cyk7CisKIAlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKIAlyZXR1cm4gbnJlc2VydmVk OwogfQpAQCAtMzQ2NSw2ICszNDcyLDEzIEBAIEF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3Jr ZXJzKGludCBud29ya2VycykKIAkvKiBEb24ndCBoYXZlIHRvIHJlbWVtYmVyIHRoZXNlIHdvcmtl cnMgYW55bW9yZS4gKi8KIAlhdl9ud29ya2Vyc19yZXNlcnZlZCAtPSBud29ya2VyczsKIAorCS8q CisJICogSW5qZWN0aW9uIHBvaW50IHRvIGhlbHAgZXhlcmNpc2luZyBudW1iZXIgb2YgYXZhaWxh YmxlIHBhcmFsbGVsCisJICogYXV0b3ZhY3V1bSB3b3JrZXJzLgorCSAqLworCUlOSkVDVElPTl9Q T0lOVCgiYXV0b3ZhY3V1bS1zZXQtZnJlZS1wYXJhbGxlbC13b3JrZXJzLW51bSIsCisJCQkJCSZB dXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMpOworCiAJTFdMb2NrUmVsZWFz ZShBdXRvdmFjdXVtTG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFr ZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDkwMmE3OTU0MTAxLi5mMDlk MDA2MDI0OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIFNVQkRJUlMgPSBcCiAJCSAg cGxzYW1wbGUgXAogCQkgIHNwZ2lzdF9uYW1lX29wcyBcCiAJCSAgdGVzdF9haW8gXAorCQkgIHRl c3RfYXV0b3ZhY3V1bSBcCiAJCSAgdGVzdF9iaW5hcnloZWFwIFwKIAkJICB0ZXN0X2JpdG1hcHNl dCBcCiAJCSAgdGVzdF9ibG9vbWZpbHRlciBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCAxNGZjNzYx YzRjZi4uZWU3ZTg1NWRlZjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVp bGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtMTQsNiArMTQsNyBAQCBz dWJkaXIoJ3Bsc2FtcGxlJykKIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcignc3Ns X3Bhc3NwaHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCitzdWJkaXIoJ3Rlc3Rf YXV0b3ZhY3V1bScpCiBzdWJkaXIoJ3Rlc3RfYmluYXJ5aGVhcCcpCiBzdWJkaXIoJ3Rlc3RfYml0 bWFwc2V0JykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRlcicpCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNzE2ZTE3ZjVhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorIyBHZW5lcmF0ZWQg c3ViZGlyZWN0b3JpZXMKKy90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFj dXVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40Y2Y3 MzQ0YjJhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFj dXVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjYgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1 dG92YWN1dW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJ0ZXN0X2F1dG92YWN1dW0gLSB0ZXN0 IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0iCisKK01PRFVMRV9iaWcgPSB0ZXN0X2F1dG92 YWN1dW0KK09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCXRlc3RfYXV0b3ZhY3V1bS5vCisKK0VY VEVOU0lPTiA9IHRlc3RfYXV0b3ZhY3V1bQorREFUQSA9IHRlc3RfYXV0b3ZhY3V1bS0tMS4wLnNx bAorCitUQVBfVEVTVFMgPSAxCisKK2V4cG9ydCBlbmFibGVfaW5qZWN0aW9uX3BvaW50cworCitp ZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQ R19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitp bmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9w X3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjM0NDFlNWU0OWNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQKQEAgLTAsMCArMSwzNiBAQAorIyBD b3B5cmlnaHQgKGMpIDIwMjQtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKwordGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfYXV0b3ZhY3V1 bS5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHRlc3RfYXV0b3ZhY3V1 bV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczog WworICAgICctLU5BTUUnLCAndGVzdF9hdXRvdmFjdXVtJywKKyAgICAnLS1GSUxFREVTQycsICd0 ZXN0X2F1dG92YWN1dW0gLSB0ZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0nLF0pCitl bmRpZgorCit0ZXN0X2F1dG92YWN1dW0gPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X2F1dG92YWN1dW0n LAorICB0ZXN0X2F1dG92YWN1dW1fc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdz LAorKQordGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF9hdXRvdmFjdXVtCisKK3Rlc3RfaW5zdGFs bF9kYXRhICs9IGZpbGVzKAorICAndGVzdF9hdXRvdmFjdXVtLmNvbnRyb2wnLAorICAndGVzdF9h dXRvdmFjdXVtLS0xLjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2F1 dG92YWN1dW0nLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzog bWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3RhcCc6IHsKKyAgICAnZW52JzogeworICAg ICAgICdlbmFibGVfaW5qZWN0aW9uX3BvaW50cyc6IGdldF9vcHRpb24oJ2luamVjdGlvbl9wb2lu dHMnKSA/ICd5ZXMnIDogJ25vJywKKyAgICB9LAorICAgICd0ZXN0cyc6IFsKKyAgICAgICd0LzAw MV9iYXNpYy5wbCcsCisgICAgXSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vdC8wMDFfYmFzaWMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjIyZWFhYTdkYTlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfYmFzaWMucGwKQEAgLTAsMCArMSwxNjUgQEAKK3VzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRwc3Fs X291dDsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUx Jyk7Ciskbm9kZS0+aW5pdDsKKworIyBDb25maWd1cmUgcG9zdGdyZXMsIHNvIGl0IGNhbiBsYXVu Y2ggcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLCBsb2cgYWxsCisjIGluZm9ybWF0aW9uIHdl IGFyZSBpbnRlcmVzdGVkIGluIGFuZCBhdXRvdmFjdXVtIHdvcmtzIGZyZXF1ZW50bHkKKyRub2Rl LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXF7CisJbWF4X3dvcmtlcl9wcm9jZXNz ZXMgPSAyMAorCW1heF9wYXJhbGxlbF93b3JrZXJzID0gMjAKKwltYXhfcGFyYWxsZWxfbWFpbnRl bmFuY2Vfd29ya2VycyA9IDIwCisJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDEw CisJbG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMgorCWxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlv biA9IDAKKwlhdXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCisJbWluX3BhcmFsbGVsX2luZGV4X3Nj YW5fc2l6ZSA9IDAKKwlzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXM9dGVzdF9hdXRvdmFjdXVtCit9 KTsKKyRub2RlLT5zdGFydDsKKworbXkgJGluZGV4ZXNfbnVtID0gNDsKK215ICRpbml0aWFsX3Jv d3NfbnVtID0gMTBfMDAwOworbXkgJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9IDI7CisK KyMgQ3JlYXRlIHRhYmxlIHdpdGggc3BlY2lmaWVkIG51bWJlciBvZiBiLXRyZWUgaW5kZXhlcyBv biBpdAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgVEFCTEUgdGVz dF9hdXRvdmFjICgKKwkJaWQgU0VSSUFMIFBSSU1BUlkgS0VZLAorCQljb2xfMSBJTlRFR0VSLCAg Y29sXzIgSU5URUdFUiwgIGNvbF8zIElOVEVHRVIsICBjb2xfNCBJTlRFR0VSCisJKSBXSVRIIChh dXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJz LAorCQkJYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworCisJRE8gXCRcJAorCURFQ0xBUkUK KwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZPUiBpIElOIDEuLiRpbmRleGVzX251bSBMT09QCisJ CQlFWEVDVVRFIGZvcm1hdCgnQ1JFQVRFIElOREVYIGlkeF9jb2xfXCVzIE9OIHRlc3RfYXV0b3Zh YyAoY29sX1wlcyk7JywgaSwgaSk7CisJCUVORCBMT09QOworCUVORCBcJFwkOworfSk7CisKKyMg SW5zZXJ0IHNwZWNpZmllZCB0dXBsZXMgbnVtIGludG8gdGhlIHRhYmxlCiskbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxeworCURPIFwkXCQKKwlERUNMQVJFCisJCWkgSU5URUdFUjsKKwlC RUdJTgorCQlGT1IgaSBJTiAxLi4kaW5pdGlhbF9yb3dzX251bSBMT09QCisJCQlJTlNFUlQgSU5U TyB0ZXN0X2F1dG92YWMgVkFMVUVTIChpLCBpICsgMSwgaSArIDIsIGkgKyAzKTsKKwkJRU5EIExP T1A7CisJRU5EIFwkXCQ7Cit9KTsKKworIyBOb3csIGNyZWF0ZSBzb21lIGRlYWQgdHVwbGVzIGFu ZCByZWZyZXNoIHRhYmxlIHN0YXRpc3RpY3MKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXF7CisJVVBEQVRFIHRlc3RfYXV0b3ZhYyBTRVQgY29sXzEgPSAwIFdIRVJFIChjb2xfMSAlIDMp ID0gMDsKKwlBTkFMWVpFIHRlc3RfYXV0b3ZhYzsKK30pOworCisjIENyZWF0ZSBhbGwgZnVuY3Rp b25zIG5lZWRlZCBmb3IgdGVzdGluZworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsK KwlDUkVBVEUgRVhURU5TSU9OIHRlc3RfYXV0b3ZhY3V1bTsKKwlTRUxFQ1QgaW5qX3NldF9mcmVl X3dvcmtlcnNfYXR0YWNoKCk7CisJU0VMRUNUIGlual9sZWFkZXJfZmFpbHVyZV9hdHRhY2goKTsK K30pOworCisjIFRlc3QgMSA6CisjIE91ciB0YWJsZSBoYXMgZW5vdWdoIGluZGV4ZXMgYW5kIGFw cHJvcHJpYXRlIHJlbG9wdGlvbnMsIHNvIGF1dG92YWN1dW0gbXVzdAorIyBiZSBhYmxlIHRvIHBy b2Nlc3MgaXQgaW4gcGFyYWxsZWwgbW9kZS4gSnVzdCBjaGVjayBpZiBpdCBjYW4uCisjIEFsc28g Y2hlY2sgd2hldGhlciBhbGwgcmVxdWVzdGVkIHdvcmtlcnM6CisjIAkxKSBsYXVuY2hlZAorIyAJ MikgY29ycmVjdGx5IHJlbGVhc2VkCisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7 CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gdHJ1 ZSk7Cit9KTsKKworIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhdXRvdmFjdXVtIG9uIHRhYmxl IGlzIGNvbXBsZXRlZC4gQXQgdGhlIHNhbWUgdGltZSwKKyMgd2UgY2hlY2sgdGhhdCB0aGUgcmVx dWlyZWQgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gc3RhcnRlZC4KKyRub2Rl LT53YWl0X2Zvcl9sb2cocXIvd29ya2VycyB1c2FnZSBzdGF0aXN0aWNzIGZvciBhbGwgb2YgaW5k ZXggc2NhbnMgOiAvIC4KKwkJCQkJcXIvbGF1bmNoZWQgaW4gdG90YWwgPSAyLCBwbGFubmVkIGlu IHRvdGFsID0gMi8pOworCiskbm9kZS0+cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgZ2V0X3Bh cmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKCk7IiwKKwlzdGRvdXQgPT4gXCRwc3FsX291 dCwKKyk7CitpcygkcHNxbF9vdXQsIDEwLCAnQWxsIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4g cmVsZWFzZWQgYnkgdGhlIGxlYWRlcicpOworCisjIERpc2FibGUgYXV0b3ZhY3V1bSBvbiB0YWJs ZSBkdXJpbmcgcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IHRlc3QKKyRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgcXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAo YXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworfSk7CisKKyMgQ3JlYXRlIG1vcmUgZGVhZCB0 dXBsZXMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJVVBEQVRFIHRlc3RfYXV0 b3ZhYyBTRVQgY29sXzIgPSAwIFdIRVJFIChjb2xfMiAlIDMpID0gMDsKKwlBTkFMWVpFIHRlc3Rf YXV0b3ZhYzsKK30pOworCisjIFRlc3QgMjoKKyMgV2Ugd2FudCBwYXJhbGxlbCBhdXRvdmFjdXVt IHdvcmtlcnMgdG8gYmUgcmVsZWFzZWQgZXZlbiBpZiBsZWFkZXIgZ2V0cyBhbgorIyBlcnJvci4g QXQgZmlyc3QsIHNpbXVsYXRlIHNpdHVhdGlvbiwgd2hlbiBsZWFkZXIgZXhpdGVzIGR1ZSB0byBh biBFUlJPUi4KKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgdHJp Z2dlcl9sZWFkZXJfZmFpbHVyZSgnRVJST1InKTsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxeworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1f ZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyRub2RlLT53YWl0X2Zvcl9sb2cocXIvZXJyb3IsIHRy aWdnZXJlZCBieSBpbmplY3Rpb24gcG9pbnQvKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOyIsCisJc3Rk b3V0ID0+IFwkcHNxbF9vdXQsCispOworaXMoJHBzcWxfb3V0LCAxMCwKKyAgICdBbGwgcGFyYWxs ZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZCBieSB0aGUgbGVhZGVyIGFmdGVyIEVSUk9SJyk7 CisKKyMgRGlzYWJsZSBhdXRvdmFjdXVtIG9uIHRhYmxlIGR1cmluZyBwcmVwYXJhdGlvbiBmb3Ig dGhlIG5leHQgdGVzdAorJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsK KwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxz ZSk7Cit9KTsKKworIyBDcmVhdGUgbW9yZSBkZWFkIHR1cGxlcworJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcXsKKwlVUERBVEUgdGVzdF9hdXRvdmFjIFNFVCBjb2xfMyA9IDAgV0hFUkUg KGNvbF8zICUgMykgPSAwOworCUFOQUxZWkUgdGVzdF9hdXRvdmFjOworfSk7CisKKyMgVGVzdCAz OgorIyBTYW1lIGFzIFRlc3QgMiwgYnV0IHNpbXVsYXRlIHNpdHVhdGlvbiwgd2hlbiBsZWFkZXIg ZXhpdGVzIGR1ZSB0byBGQVRBTC4KKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgK KwlTRUxFQ1QgdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZSgnRkFUQUwnKTsKKykpOworCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQg KGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyRub2RlLT53YWl0X2Zvcl9sb2co cXIvZmF0YWwsIHRyaWdnZXJlZCBieSBpbmplY3Rpb24gcG9pbnQvKTsKKworJG5vZGUtPnBzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2Vy cygpOyIsCisJc3Rkb3V0ID0+IFwkcHNxbF9vdXQsCispOworaXMoJHBzcWxfb3V0LCAxMCwKKyAg ICdBbGwgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZCBieSB0aGUgbGVhZGVyIGFm dGVyIEZBVEFMJyk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cXsKKwlTRUxFQ1QgaW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0YWNoKCk7CisJU0VMRUNUIGlual9s ZWFkZXJfZmFpbHVyZV9kZXRhY2goKTsKK30pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGlu ZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9h dXRvdmFjdXVtLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVz dF9hdXRvdmFjdXVtLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4wMTdkNWRhODVlYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbApAQCAtMCwwICsxLDM0IEBACisv KiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5z cWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVy IHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2F1dG92YWN1dW0iIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCisvKgorICogRnVuY3Rp b25zIGZvciBleHBlY3Rpbmcgb3IgdG8gaW50ZXJmZXJlIGF1dG92YWN1dW0gc3RhdGUKKyAqLwor Q1JFQVRFIEZVTkNUSU9OIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpCitS RVRVUk5TIElOVEVHRVIgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOwor CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZShmYWlsdXJlX3R5cGUgdGV4 dCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7 CisKKy8qCisgKiBJbmplY3Rpb24gcG9pbnQgcmVsYXRlZCBmdW5jdGlvbnMKKyAqLworQ1JFQVRF IEZVTkNUSU9OIGlual9zZXRfZnJlZV93b3JrZXJzX2F0dGFjaCgpCitSRVRVUk5TIFZPSUQgU1RS SUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04g aW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdN T0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBpbmpfbGVhZGVy X2ZhaWx1cmVfYXR0YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5B TUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBpbmpfbGVhZGVyX2ZhaWx1cmVfZGV0 YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdF IEM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1 dG92YWN1dW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3Zh Y3V1bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OTQ4ZjQ4NThh ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rl c3RfYXV0b3ZhY3V1bS5jCkBAIC0wLDAgKzEsMjU1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CisgKiB0ZXN0X2F1dG92YWN1dW0uYworICoJCUhlbHBlcnMgdG8gd3JpdGUgdGVzdHMgZm9yIHBh cmFsbGVsIGF1dG92YWN1dW0KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyNSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJ ICBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYworICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5j bHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCisjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKKworUEdf TU9EVUxFX01BR0lDOworCit0eXBlZGVmIGVudW0gQVZMZWFkZXJGYXVsdXJlVHlwZQoreworCUZB SUxfTk9ORSwKKwlGQUlMX0VSUk9SLAorCUZBSUxfRkFUQUwsCit9CQkJQVZMZWFkZXJGYXVsdXJl VHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgSW5qUG9pbnRTdGF0ZQoreworCWJvb2wJCWVuYWJsZWRf c2V0X2ZyZWVfd29ya2VyczsKKwl1aW50MzIJCWZyZWVfcGFyYWxsZWxfd29ya2VyczsKKworCWJv b2wJCWVuYWJsZWRfbGVhZGVyX2ZhaWx1cmU7CisJQVZMZWFkZXJGYXVsdXJlVHlwZSBmdHlwZTsK K30JCQlJbmpQb2ludFN0YXRlOworCitzdGF0aWMgSW5qUG9pbnRTdGF0ZSAqIGlual9wb2ludF9z dGF0ZTsKKworLyogU2hhcmVkIG1lbW9yeSBpbml0IGNhbGxiYWNrcyAqLworc3RhdGljIHNobWVt X3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKK3N0YXRp YyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7 CisKK3N0YXRpYyB2b2lkCit0ZXN0X2F1dG92YWN1dW1fc2htZW1fcmVxdWVzdCh2b2lkKQorewor CWlmIChwcmV2X3NobWVtX3JlcXVlc3RfaG9vaykKKwkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2so KTsKKworCVJlcXVlc3RBZGRpblNobWVtU3BhY2Uoc2l6ZW9mKElualBvaW50U3RhdGUpKTsKK30K Kworc3RhdGljIHZvaWQKK3Rlc3RfYXV0b3ZhY3V1bV9zaG1lbV9zdGFydHVwKHZvaWQpCit7CisJ Ym9vbAkJZm91bmQ7CisKKwlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCisJCXByZXZfc2ht ZW1fc3RhcnR1cF9ob29rKCk7CisKKwkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQg bWVtb3J5IHN0YXRlICovCisJTFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VY Q0xVU0lWRSk7CisKKwlpbmpfcG9pbnRfc3RhdGUgPSBTaG1lbUluaXRTdHJ1Y3QoImluamVjdGlv bl9wb2ludHMiLAorCQkJCQkJCQkJICBzaXplb2YoSW5qUG9pbnRTdGF0ZSksCisJCQkJCQkJCQkg ICZmb3VuZCk7CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBp bml0aWFsaXplICovCisJCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9sZWFkZXJfZmFpbHVyZSA9 IGZhbHNlOworCQlpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRfc2V0X2ZyZWVfd29ya2VycyA9IGZh bHNlOworCQlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworCisJCS8qIEtlZXAg aXQgaW4gc3luYyB3aXRoIEF1dG9WYWN1dW1TaG1lbUluaXQgKi8KKwkJaW5qX3BvaW50X3N0YXRl LT5mcmVlX3BhcmFsbGVsX3dvcmtlcnMgPQorCQkJTWluKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVs X3dvcmtlcnMsIG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKworCQlJbmplY3Rpb25Qb2ludEF0dGFj aCgiYXV0b3ZhY3V1bS1zZXQtZnJlZS1wYXJhbGxlbC13b3JrZXJzLW51bSIsCisJCQkJCQkJICJ0 ZXN0X2F1dG92YWN1dW0iLAorCQkJCQkJCSAiaW5qX3NldF9mcmVlX3dvcmtlcnMiLAorCQkJCQkJ CSBOVUxMLAorCQkJCQkJCSAwKTsKKworCQlJbmplY3Rpb25Qb2ludEF0dGFjaCgiYXV0b3ZhY3V1 bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwKKwkJCQkJCQkgInRlc3RfYXV0b3ZhY3V1bSIsCisJ CQkJCQkJICJpbmpfdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZSIsCisJCQkJCQkJIE5VTEwsCisJCQkJ CQkJIDApOworCX0KKworCUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKK30KKwor dm9pZAorX1BHX2luaXQodm9pZCkKK3sKKwlpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGli cmFyaWVzX2luX3Byb2dyZXNzKQorCQlyZXR1cm47CisKKwlwcmV2X3NobWVtX3JlcXVlc3RfaG9v ayA9IHNobWVtX3JlcXVlc3RfaG9vazsKKwlzaG1lbV9yZXF1ZXN0X2hvb2sgPSB0ZXN0X2F1dG92 YWN1dW1fc2htZW1fcmVxdWVzdDsKKwlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IHNobWVtX3N0 YXJ0dXBfaG9vazsKKwlzaG1lbV9zdGFydHVwX2hvb2sgPSB0ZXN0X2F1dG92YWN1dW1fc2htZW1f c3RhcnR1cDsKK30KKworZXh0ZXJuIFBHRExMRVhQT1JUIHZvaWQgaW5qX3NldF9mcmVlX3dvcmtl cnMoY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCQkJCQkJIGNvbnN0IHZvaWQgKnByaXZhdGVfZGF0 YSwKKwkJCQkJCQkJCQkJIHZvaWQgKmFyZyk7CitleHRlcm4gUEdETExFWFBPUlQgdm9pZCBpbmpf dHJpZ2dlcl9sZWFkZXJfZmFpbHVyZShjb25zdCBjaGFyICpuYW1lLAorCQkJCQkJCQkJCQkJICAg Y29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJCQkJICAgdm9pZCAqYXJnKTsKKwor LyoKKyAqIFNldCBudW1iZXIgb2YgY3VycmVudGx5IGF2YWlsYWJsZSBwYXJhbGxlbCBhL3Ygd29y a2Vycy4gVGhpcyB2YWx1ZSBtYXkKKyAqIGNoYW5nZSBhZnRlciByZXNlcnZpbmcgb3IgcmVsZWFz aW5nIHN1Y2ggd29ya2Vycy4KKyAqCisgKiBGdW5jdGlvbiBjYWxsZWQgZnJvbSBwYXJhbGxlbCBh dXRvdmFjdXVtIGxlYWRlci4KKyAqLwordm9pZAoraW5qX3NldF9mcmVlX3dvcmtlcnMoY29uc3Qg Y2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLCB2b2lkICphcmcpCit7CisJZXJl cG9ydChMT0csCisJCQllcnJtc2coInNldCBwYXJhbGxlbCB3b3JrZXJzIGluamVjdGlvbiBwb2lu dCBjYWxsZWQiKSwKKwkJCWVycmhpZGVzdG10KHRydWUpLCBlcnJoaWRlY29udGV4dCh0cnVlKSk7 CisKKwlpZiAoaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX3NldF9mcmVlX3dvcmtlcnMpCisJewor CQlBc3NlcnQoYXJnICE9IE5VTEwpOworCQlpbmpfcG9pbnRfc3RhdGUtPmZyZWVfcGFyYWxsZWxf d29ya2VycyA9ICoodWludDMyICopIGFyZzsKKwl9Cit9CisKKy8qCisgKiBUaHJvdyBhbiBFUlJP UiBvciBGQVRBTCwgaWYgc29tZWJvZHkgcmVxdWVzdGVkIGl0LgorICoKKyAqIEZ1bmN0aW9uIGNh bGxlZCBmcm9tIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyLgorICovCit2b2lkCitpbmpfdHJp Z2dlcl9sZWFkZXJfZmFpbHVyZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICpwcml2YXRl X2RhdGEsCisJCQkJCQkgICB2b2lkICphcmcpCit7CisJaW50CQkJZWxldmVsOworCWNoYXIJICAg KmVsZXZlbF9zdHI7CisKKwllcmVwb3J0KExPRywKKwkJCWVycm1zZygidHJpZ2dlciBsZWFkZXIg ZmFpbHVyZSBpbmplY3Rpb24gcG9pbnQgY2FsbGVkIiksCisJCQllcnJoaWRlc3RtdCh0cnVlKSwg ZXJyaGlkZWNvbnRleHQodHJ1ZSkpOworCisJaWYgKGlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPT0g RkFJTF9OT05FIHx8CisJCSFpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRfbGVhZGVyX2ZhaWx1cmUp CisJeworCQlyZXR1cm47CisJfQorCisJZWxldmVsID0gaW5qX3BvaW50X3N0YXRlLT5mdHlwZSA9 PSBGQUlMX0VSUk9SID8gRVJST1IgOiBGQVRBTDsKKwllbGV2ZWxfc3RyID0gZWxldmVsID09IEVS Uk9SID8gImVycm9yIiA6ICJmYXRhbCI7CisKKwllcmVwb3J0KGVsZXZlbCwgZXJybXNnKCIlcywg dHJpZ2dlcmVkIGJ5IGluamVjdGlvbiBwb2ludCIsIGVsZXZlbF9zdHIpKTsKK30KKworUEdfRlVO Q1RJT05fSU5GT19WMShnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMpOworRGF0 dW0KK2dldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycyhQR19GVU5DVElPTl9BUkdT KQoreworCXVpbnQzMgkJbndvcmtlcnM7CisKKyNpZm5kZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMK KwllbG9nKEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYK KworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisJbndvcmtl cnMgPSBpbmpfcG9pbnRfc3RhdGUtPmZyZWVfcGFyYWxsZWxfd29ya2VyczsKKwlMV0xvY2tSZWxl YXNlKEF1dG92YWN1dW1Mb2NrKTsKKworCVBHX1JFVFVSTl9VSU5UMzIobndvcmtlcnMpOworfQor CitQR19GVU5DVElPTl9JTkZPX1YxKHRyaWdnZXJfbGVhZGVyX2ZhaWx1cmUpOworRGF0dW0KK3Ry aWdnZXJfbGVhZGVyX2ZhaWx1cmUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljb25zdCBjaGFyICpm YWlsdXJlX3R5cGUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisj aWZuZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJZWxvZyhFUlJPUiwgImluamVjdGlvbiBwb2lu dHMgbm90IHN1cHBvcnRlZCIpOworI2VuZGlmCisKKwlpZiAoc3RyY21wKGZhaWx1cmVfdHlwZSwg Ik5PTkUiKSA9PSAwKQorCQlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworCWVs c2UgaWYgKHN0cmNtcChmYWlsdXJlX3R5cGUsICJFUlJPUiIpID09IDApCisJCWlual9wb2ludF9z dGF0ZS0+ZnR5cGUgPSBGQUlMX0VSUk9SOworCWVsc2UgaWYgKHN0cmNtcChmYWlsdXJlX3R5cGUs ICJGQVRBTCIpID09IDApCisJCWlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPSBGQUlMX0ZBVEFMOwor CWVsc2UKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJpbnZhbGlkIGxlYWRlciBmYWlsdXJlIHR5cGUg OiAlcyIsIGZhaWx1cmVfdHlwZSkpKTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZV TkNUSU9OX0lORk9fVjEoaW5qX3NldF9mcmVlX3dvcmtlcnNfYXR0YWNoKTsKK0RhdHVtCitpbmpf c2V0X2ZyZWVfd29ya2Vyc19hdHRhY2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBVU0Vf SU5KRUNUSU9OX1BPSU5UUworCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9zZXRfZnJlZV93b3Jr ZXJzID0gdHJ1ZTsKKwlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworI2Vsc2UK KwllbG9nKEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYK KwlQR19SRVRVUk5fVk9JRCgpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9zZXRfZnJl ZV93b3JrZXJzX2RldGFjaCk7CitEYXR1bQoraW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0YWNoKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwlpbmpfcG9p bnRfc3RhdGUtPmVuYWJsZWRfc2V0X2ZyZWVfd29ya2VycyA9IGZhbHNlOworI2Vsc2UKKwllbG9n KEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19S RVRVUk5fVk9JRCgpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9sZWFkZXJfZmFpbHVy ZV9hdHRhY2gpOworRGF0dW0KK2lual9sZWFkZXJfZmFpbHVyZV9hdHRhY2goUEdfRlVOQ1RJT05f QVJHUykKK3sKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCWlual9wb2ludF9zdGF0ZS0+ ZW5hYmxlZF9sZWFkZXJfZmFpbHVyZSA9IHRydWU7CisjZWxzZQorCWVsb2coRVJST1IsICJpbmpl Y3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRpZgorCVBHX1JFVFVSTl9WT0lEKCk7 Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoaW5qX2xlYWRlcl9mYWlsdXJlX2RldGFjaCk7CitE YXR1bQoraW5qX2xlYWRlcl9mYWlsdXJlX2RldGFjaChQR19GVU5DVElPTl9BUkdTKQoreworI2lm ZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX2xlYWRl cl9mYWlsdXJlID0gZmFsc2U7CisjZWxzZQorCWVsb2coRVJST1IsICJpbmplY3Rpb24gcG9pbnRz IG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRpZgorCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29u dHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5j b250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjdmYWQyNThm MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rl c3RfYXV0b3ZhY3V1bS5jb250cm9sCkBAIC0wLDAgKzEsMyBAQAorY29tbWVudCA9ICdUZXN0IGNv ZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0nCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9k dWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9hdXRvdmFjdXVtJwotLSAKMi40My4wCgo= --0000000000001aafaf06440bc0ea Content-Type: application/octet-stream; name="v14-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v14-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7tp0nk1 RnJvbSA0NTQzOWQ4ZDVlNWRhMWNhOWYxMGZkZGZkOTU4OTQzYTJhYmFlMDhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDMxIE9jdCAyMDI1IDE0OjQyOjQ2ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTQgMi80XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAyMCArKysrKysr KysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8IDE2 ICsrKysrKysrKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg fCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA3YTZkNmY0MjYzNC4uNTk0 MzhjMThiMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Nyw2ICsz NDcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCiAJLyogSW5zdHJ1bWVudGF0aW9u IGNvdW50ZXJzICovCiAJaW50CQkJbnVtX2luZGV4X3NjYW5zOworCisJLyoKKwkgKiBOdW1iZXIg b2YgcGxhbm5lZCBhbmQgYWN0dWFsbHkgbGF1bmNoZWQgcGFyYWxsZWwgd29ya2VycyBmb3IgYWxs IGluZGV4CisJICogc2NhbnMsIG9yIE5VTEwKKwkgKi8KKwlQVldvcmtlcnNVc2FnZSAqd29ya2Vy c191c2FnZTsKIAkvKiBDb3VudGVycyB0aGF0IGZvbGxvdyBhcmUgb25seSBmb3Igc2Nhbm5lZF9w YWdlcyAqLwogCWludDY0CQl0dXBsZXNfZGVsZXRlZDsgLyogIyBkZWxldGVkIGZyb20gdGFibGUg Ki8KIAlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJLyogIyBuZXdseSBmcm96ZW4gKi8KQEAgLTcwMCw2 ICs3MDYsMTYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zIHBhcmFtcywKIAkJaW5kbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2YWNyZWwt Pm5pbmRleGVzKTsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKysp CiAJCQlpbmRuYW1lc1tpXSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVs LT5pbmRyZWxzW2ldKSk7CisKKwkJLyoKKwkJICogQWxsb2NhdGUgc3BhY2UgZm9yIHdvcmtlcnMg dXNhZ2Ugc3RhdGlzdGljcy4gVGh1cywgd2UgZXhwbGljaXRseQorCQkgKiBtYWtlIGNsZWFyIHRo YXQgc3VjaCBzdGF0aXN0aWNzIG11c3QgYmUgYWNjdW11bGF0ZWQuIEZvciBub3csIHRoaXMKKwkJ ICogaXMgdXNlZCBvbmx5IGJ5IGF1dG92YWN1dW0gbGVhZGVyIHdvcmtlciwgYmVjYXVzZSBpdCBt dXN0IGxvZyBpdCBpbgorCQkgKiB0aGUgZW5kIG9mIHRhYmxlIHByb2Nlc3NpbmcuCisJCSAqLwor CQl2YWNyZWwtPndvcmtlcnNfdXNhZ2UgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPwor CQkJKFBWV29ya2Vyc1VzYWdlICopIHBhbGxvYzAoc2l6ZW9mKFBWV29ya2Vyc1VzYWdlKSkgOgor CQkJTlVMTDsKIAl9CiAKIAkvKgpAQCAtMTAyNCw2ICsxMDQwLDExIEBAIGhlYXBfdmFjdXVtX3Jl bChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQkJCQkJIHZhY3Jl bC0+cmVsbmFtZXNwYWNlLAogCQkJCQkJCSB2YWNyZWwtPnJlbG5hbWUsCiAJCQkJCQkJIHZhY3Jl bC0+bnVtX2luZGV4X3NjYW5zKTsKKwkJCWlmICh2YWNyZWwtPndvcmtlcnNfdXNhZ2UpCisJCQkJ YXBwZW5kU3RyaW5nSW5mbygmYnVmLAorCQkJCQkJCQkgXygid29ya2VycyB1c2FnZSBzdGF0aXN0 aWNzIGZvciBhbGwgb2YgaW5kZXggc2NhbnMgOiBsYXVuY2hlZCBpbiB0b3RhbCA9ICVkLCBwbGFu bmVkIGluIHRvdGFsID0gJWRcbiIpLAorCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLT5u bGF1bmNoZWQsCisJCQkJCQkJCSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UtPm5wbGFubmVkKTsKIAkJ CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgXygicGFnZXM6ICV1IHJlbW92ZWQsICV1IHJlbWFpbiwg JXUgc2Nhbm5lZCAoJS4yZiUlIG9mIHRvdGFsKSwgJXUgZWFnZXJseSBzY2FubmVkXG4iKSwKIAkJ CQkJCQkgdmFjcmVsLT5yZW1vdmVkX3BhZ2VzLAogCQkJCQkJCSBuZXdfcmVsX3BhZ2VzLApAQCAt MjY1NSw3ICsyNjc2LDggQEAgbGF6eV92YWN1dW1fYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFj cmVsKQogCXsKIAkJLyogT3V0c291cmNlIGV2ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAq LwogCQlwYXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgb2xk X2xpdmVfdHVwbGVzLAotCQkJCQkJCQkJCQl2YWNyZWwtPm51bV9pbmRleF9zY2Fucyk7CisJCQkJ CQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zLAorCQkJCQkJCQkJCQl2YWNyZWwtPndvcmtl cnNfdXNhZ2UpOwogCiAJCS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5 aW5nIHdyYXBhcm91bmQgZmFpbHNhZmUgbm93LiAgTm90ZQpAQCAtMzA4Nyw3ICszMTA5LDggQEAg bGF6eV9jbGVhbnVwX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291 cmNlIGV2ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1f Y2xlYW51cF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2 YWNyZWwtPm51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJ CQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQl2YWNyZWwtPndvcmtlcnNfdXNh Z2UpOwogCX0KIAogCS8qIFJlc2V0IHRoZSBwcm9ncmVzcyBjb3VudGVycyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggYWNkNTNiODViMWMuLjlhMjU4MjM4NjUwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTIyNyw3ICsyMjcsNyBAQCBz dHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogc3RhdGljIGludAlwYXJhbGxlbF92YWN1dW1fY29t cHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVz dGVkLAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFsbGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9p ZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRl ICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCi0JCQkJCQkJCQkJCQlib29sIHZhY3V1bSk7CisJ CQkJCQkJCQkJCQlib29sIHZhY3V1bSwgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBzdGF0aWMg dm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1T dGF0ZSAqcHZzKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3Vuc2FmZV9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cyk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92 YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlv biBpbmRyZWwsCkBAIC01MDIsNyArNTAyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRf aXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzKQogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1 dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVt X3RhYmxlX3R1cGxlcywKLQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpCisJCQkJCQkJCQlp bnQgbnVtX2luZGV4X3NjYW5zLCBQVldvcmtlcnNVc2FnZSAqd3VzYWdlKQogewogCUFzc2VydCgh SXNQYXJhbGxlbFdvcmtlcigpKTsKIApAQCAtNTEzLDcgKzUxMyw3IEBAIHBhcmFsbGVsX3ZhY3V1 bV9idWxrZGVsX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1f dGFibGVfdHVwCiAJcHZzLT5zaGFyZWQtPnJlbHR1cGxlcyA9IG51bV90YWJsZV90dXBsZXM7CiAJ cHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudCA9IHRydWU7CiAKLQlwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgdHJ1ZSk7CisJcGFyYWxs ZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUs IHd1c2FnZSk7CiB9CiAKIC8qCkBAIC01MjEsNyArNTIxLDggQEAgcGFyYWxsZWxfdmFjdXVtX2J1 bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJs ZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJCQlp bnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkKKwkJCQkJCQkJCWludCBu dW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJUFZXb3JrZXJz VXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIoKSk7CiAKQEAgLTUz Myw3ICs1MzQsNyBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxl bFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2cy0+c2hhcmVkLT5yZWx0 dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQg PSBlc3RpbWF0ZWRfY291bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhl cyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNz X2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwgd3VzYWdlKTsKIH0KIAog LyoKQEAgLTYxOCw3ICs2MTksNyBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJl bGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogICovCiBzdGF0 aWMgdm9pZAogcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJYm9vbCB2YWN1dW0p CisJCQkJCQkJCQlib29sIHZhY3V1bSwgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlpbnQJ CQlud29ya2VyczsKIAlQVkluZFZhY1N0YXR1cyBuZXdfc3RhdHVzOwpAQCAtNzQyLDYgKzc0Mywx MyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCQkJCQkJCQkJICJsYXVuY2hlZCAlZCBwYXJh bGxlbCB2YWN1dW0gd29ya2VycyBmb3IgaW5kZXggY2xlYW51cCAocGxhbm5lZDogJWQpIiwKIAkJ CQkJCQkJCSBwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkKSwKIAkJCQkJCQlwdnMtPnBjeHQt Pm53b3JrZXJzX2xhdW5jaGVkLCBud29ya2VycykpKTsKKworCQkvKiBSZW1lbWJlciB0aGVzZSB2 YWx1ZXMsIGlmIHdlIGFza2VkIHRvLiAqLworCQlpZiAod3VzYWdlICE9IE5VTEwpCisJCXsKKwkJ CXd1c2FnZS0+bmxhdW5jaGVkICs9IHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7CisJCQl3 dXNhZ2UtPm5wbGFubmVkICs9IG53b3JrZXJzOworCQl9CiAJfQogCiAJLyogVmFjdXVtIHRoZSBp bmRleGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBieSBvbmx5IGxlYWRlciBwcm9jZXNzICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCmluZGV4IDFmMzI5MGM3ZmJmLi45MDcwOWNhMzEwNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdmFjdXVtLmgKQEAgLTMwMCw2ICszMDAsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjRGVhZEl0 ZW1zSW5mbwogCWludDY0CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmllcyAqLwog fSBWYWNEZWFkSXRlbXNJbmZvOwogCisvKgorICogUFZXb3JrZXJzVXNhZ2Ugc3RvcmVzIGluZm9y bWF0aW9uIGFib3V0IHRvdGFsIG51bWJlciBvZiBsYXVuY2hlZCBhbmQgcGxhbm5lZAorICogd29y a2VycyBkdXJpbmcgcGFyYWxsZWwgdmFjdXVtLgorICovCit0eXBlZGVmIHN0cnVjdCBQVldvcmtl cnNVc2FnZQoreworCWludAkJCW5sYXVuY2hlZDsKKwlpbnQJCQlucGxhbm5lZDsKK30gUFZXb3Jr ZXJzVXNhZ2U7CisKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBleHRlcm4gUEdETExJTVBPUlQgaW50 IGRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQ7CS8qIFBHRExMSU1QT1JUIGZvciBQb3N0R0lTICov CiBleHRlcm4gUEdETExJTVBPUlQgaW50IHZhY3V1bV9mcmVlemVfbWluX2FnZTsKQEAgLTM5NCwx MSArNDA0LDEzIEBAIGV4dGVybiBUaWRTdG9yZSAqcGFyYWxsZWxfdmFjdXVtX2dldF9kZWFkX2l0 ZW1zKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1 bV9yZXNldF9kZWFkX2l0ZW1zKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cyk7CiBleHRlcm4gdm9p ZCBwYXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRl ICpwdnMsCiAJCQkJCQkJCQkJCQlsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJCQkJCQlp bnQgbnVtX2luZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCisJ CQkJCQkJCQkJCQlQVldvcmtlcnNVc2FnZSAqd3VzYWdlKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVs X3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJ CQkJCQkJCQkJCWxvbmcgbnVtX3RhYmxlX3R1cGxlcywKIAkJCQkJCQkJCQkJCWludCBudW1faW5k ZXhfc2NhbnMsCi0JCQkJCQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCk7CisJCQkJCQkJCQkJ CQlib29sIGVzdGltYXRlZF9jb3VudCwKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywg c2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IGM3NTFjMjVhMDRkLi5mYmZmNDM3ZDEwNCAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTIzNzgsNiArMjM3OCw3IEBAIFB1bGxGaWx0ZXJPcHMKIFB1c2hG aWx0ZXIKIFB1c2hGaWx0ZXJPcHMKIFB1c2hGdW5jdGlvbgorUFZXb3JrZXJzVXNhZ2UKIFB5Q0Z1 bmN0aW9uCiBQeU1ldGhvZERlZgogUHlNb2R1bGVEZWYKLS0gCjIuNDMuMAoK --0000000000001aafaf06440bc0ea Content-Type: application/octet-stream; name="v14-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v14-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7tp0n80 RnJvbSA3NGQyYzA3NmY1ZGRhMGJiMTM1MTA3YjFlMDk1MTFhMDQxMzdjMTI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBGcmksIDMxIE9jdCAyMDI1IDE0OjQyOjI3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTQgMS80XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjMgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDkgKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy MzkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCA5ZTI4OGRmZWNiZi4uM2NjMjlkNDQ1NGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMjIsNiArMjIyLDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTg4MSw2ICsxODkwLDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBmZWVhMWQzMGVjLi5h Y2Q1M2I4NWIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBA IC0zNzMsOCArMzc2LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9n ZXRfbXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9 CiAJCShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBh cmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsK KwkJdmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgor CQl2YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2 YWNfd29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9y IGRlYWQgaXRlbXMgKi8KQEAgLTU1MywxMiArNTU3LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21w dXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0 ZWQsCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4 ZXNfcGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJ CQltYXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxl bF9tYWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3Jt aW5nIHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVu IHBhcmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIg fHwgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5 Nyw4ICs2MDYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICpp bmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMg PSAobnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVs KSA6IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVu YW5jZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJz LCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJp YWJsZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dv cmtlcnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDYsNiArNjU1LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtl cnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4g YXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUsIHRoYXQgd2UgbWF5IGJlIGdpdmVuCisJICog ZmV3ZXIgd29ya2VycyB0aGFuIHdlIHJlcXVlc3RlZC4KKwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpICYmIG53b3JrZXJzID4gMCkKKwkJbndvcmtlcnMgPSBBdXRvVmFjdXVt UmVzZXJ2ZVBhcmFsbGVsV29ya2Vycyhud29ya2Vycyk7CisKIAkvKgogCSAqIFNldCBpbmRleCB2 YWN1dW0gc3RhdHVzIGFuZCBtYXJrIHdoZXRoZXIgcGFyYWxsZWwgdmFjdXVtIHdvcmtlciBjYW4K IAkgKiBwcm9jZXNzIGl0LgpAQCAtNjkwLDYgKzcwNiwxNiBAQCBwYXJhbGxlbF92YWN1dW1fcHJv Y2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhf c2NhbgogCiAJCUxhdW5jaFBhcmFsbGVsV29ya2VycyhwdnMtPnBjeHQpOwogCisJCWlmIChBbUF1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYKKwkJCXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPCBud29ya2VycykKKwkJeworCQkJLyoKKwkJCSAqIFRlbGwgYXV0b3ZhY3V1bSB0aGF0IHdl IGNvdWxkIG5vdCBsYXVuY2ggYWxsIHRoZSBwcmV2aW91c2x5CisJCQkgKiByZXNlcnZlZCB3b3Jr ZXJzLgorCQkJICovCisJCQlBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhud29ya2Vy cyAtIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOworCQl9CisKIAkJaWYgKHB2cy0+cGN4 dC0+bndvcmtlcnNfbGF1bmNoZWQgPiAwKQogCQl7CiAJCQkvKgpAQCAtNzM4LDYgKzc2NCwxMCBA QCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRl ICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5w Y3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+YnVmZmVyX3VzYWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCisJCS8qIEFsc28g cmVsZWFzZSBhbGwgcHJldmlvdXNseSByZXNlcnZlZCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtl cnMgKi8KKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBwdnMtPnBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkID4gMCkKKwkJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJz KHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDFjMzg0ODhmMmNiLi4yYjZjZWVkZjk4NyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE1MSw2ICsxNTEsMTIgQEAgaW50CQkJTG9nX2F1 dG9hbmFseXplX21pbl9kdXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZfc3RvcmFn ZV9wYXJhbV9jb3N0X2RlbGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFyYW1fY29z dF9saW1pdCA9IC0xOwogCisvKgorICogVmFyaWFibGUgdG8ga2VlcCBudW1iZXIgb2YgY3VycmVu dGx5IHJlc2VydmVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2Vycy4KKyAqIEl0IGlzIG9ubHkg cmVsZXZhbnQgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIHByb2Nlc3MuCisgKi8KK3N0 YXRpYyBpbnQJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAwOworCiAvKiBGbGFncyBzZXQgYnkgc2ln bmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1Iy ID0gZmFsc2U7CiAKQEAgLTI4NSw2ICsyOTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVt V29ya0l0ZW0KICAqIGF2X3dvcmtJdGVtcwkJd29yayBpdGVtIGFycmF5CiAgKiBhdl9ud29ya2Vy c0ZvckJhbGFuY2UgdGhlIG51bWJlciBvZiBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gdXNlIHdoZW4K ICAqIAkJCQkJY2FsY3VsYXRpbmcgdGhlIHBlciB3b3JrZXIgY29zdCBsaW1pdAorICogYXZfZnJl ZVBhcmFsbGVsV29ya2VycyB0aGUgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3 b3JrZXJzCisgKiBhdl9tYXhQYXJhbGxlbFdvcmtlcnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBh cmFsbGVsIGF1dG92YWN1dW0gd29ya2VycwogICoKICAqIFRoaXMgc3RydWN0IGlzIHByb3RlY3Rl ZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0IGZvciBhdl9zaWduYWwgYW5kIHBhcnRzCiAgKiBv ZiB0aGUgd29ya2VyIGxpc3QgKHNlZSBhYm92ZSkuCkBAIC0yOTksNiArMzA3LDggQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlXb3JrZXJJbmZvCWF2X3N0YXJ0aW5nV29ya2VyOwogCUF1dG9WYWN1dW1Xb3Jr SXRlbSBhdl93b3JrSXRlbXNbTlVNX1dPUktJVEVNU107CiAJcGdfYXRvbWljX3VpbnQzMiBhdl9u d29ya2Vyc0ZvckJhbGFuY2U7CisJdWludDMyCQlhdl9mcmVlUGFyYWxsZWxXb3JrZXJzOworCXVp bnQzMgkJYXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogfSBBdXRvVmFjdXVtU2htZW1TdHJ1Y3Q7CiAK IHN0YXRpYyBBdXRvVmFjdXVtU2htZW1TdHJ1Y3QgKkF1dG9WYWN1dW1TaG1lbTsKQEAgLTM2NCw2 ICszNzQsNyBAQCBzdGF0aWMgdm9pZCBhdXRvdmFjX3JlcG9ydF93b3JraXRlbShBdXRvVmFjdXVt V29ya0l0ZW0gKndvcmtpdGVtLAogc3RhdGljIHZvaWQgYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdO QUxfQVJHUyk7CiBzdGF0aWMgYm9vbCBhdl93b3JrZXJfYXZhaWxhYmxlKHZvaWQpOwogc3RhdGlj IHZvaWQgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9pZCk7CitzdGF0aWMgdm9pZCBhZGp1c3RfZnJl ZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKTsKIAogCiAK QEAgLTc2Myw2ICs3NzQsOCBAQCBQcm9jZXNzQXV0b1ZhY0xhdW5jaGVySW50ZXJydXB0cyh2b2lk KQogCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQogCXsKIAkJaW50CQkJYXV0b3ZhY3V1bV9tYXhf d29ya2Vyc19wcmV2ID0gYXV0b3ZhY3V1bV9tYXhfd29ya2VyczsKKwkJaW50CQkJYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2ID0KKwkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVs X3dvcmtlcnM7CiAKIAkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29u ZmlnRmlsZShQR0NfU0lHSFVQKTsKQEAgLTc3OSw2ICs3OTIsMTUgQEAgUHJvY2Vzc0F1dG9WYWNM YXVuY2hlckludGVycnVwdHModm9pZCkKIAkJaWYgKGF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJl diAhPSBhdXRvdmFjdXVtX21heF93b3JrZXJzKQogCQkJY2hlY2tfYXZfd29ya2VyX2d1Y3MoKTsK IAorCQkvKgorCQkgKiBJZiBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIGNoYW5nZWQs IHdlIG11c3QgdGFrZSBjYXJlIG9mCisJCSAqIHRoZSBjb3JyZWN0IHZhbHVlIG9mIGF2YWlsYWJs ZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgaW4KKwkJICogc2htZW0uCisJCSAqLworCQlp ZiAoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2ICE9CisJCQlhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzKQorCQkJYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2Vycyhh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzX3ByZXYpOworCiAJCS8qIHJlYnVpbGQgdGhl IGxpc3QgaW4gY2FzZSB0aGUgbmFwdGltZSBjaGFuZ2VkICovCiAJCXJlYnVpbGRfZGF0YWJhc2Vf bGlzdChJbnZhbGlkT2lkKTsKIAl9CkBAIC0xMzgzLDYgKzE0MDUsMTcgQEAgYXZsX3NpZ3VzcjJf aGFuZGxlcihTSUdOQUxfQVJHUykKICAqCQkJCQkgIEFVVE9WQUNVVU0gV09SS0VSIENPREUKICAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KIAorLyoKKyAqIElmIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIGlzIGZp bmlzaGluZyBkdWUgdG8gRkFUQUwgZXJyb3IsIG1ha2Ugc3VyZQorICogdGhhdCBhbGwgcmVzZXJ2 ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQuCisgKi8KK3N0YXRpYyB2b2lkCithdXRvdmFjdXVtX3dv cmtlcl9iZWZvcmVfc2htZW1fZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCWlmIChjb2Rl ICE9IDApCisJCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7Cit9CisKIC8q CiAgKiBNYWluIGVudHJ5IHBvaW50IGZvciBhdXRvdmFjdXVtIHdvcmtlciBwcm9jZXNzZXMuCiAg Ki8KQEAgLTE0MjksNiArMTQ2Miw4IEBAIEF1dG9WYWNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0 YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHRlBFLCBG bG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwogCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwogCisJ YmVmb3JlX3NobWVtX2V4aXQoYXV0b3ZhY3V1bV93b3JrZXJfYmVmb3JlX3NobWVtX2V4aXQsIDAp OworCiAJLyoKIAkgKiBDcmVhdGUgYSBwZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGluIHNoYXJl ZCBtZW1vcnkuICBXZSBtdXN0IGRvIHRoaXMKIAkgKiBiZWZvcmUgd2UgY2FuIHVzZSBMV0xvY2tz IG9yIGFjY2VzcyBhbnkgc2hhcmVkIG1lbW9yeS4KQEAgLTI0ODAsNiArMjUxNSwxMiBAQCBkb19h dXRvdmFjdXVtKHZvaWQpCiAJCX0KIAkJUEdfQ0FUQ0goKTsKIAkJeworCQkJLyoKKwkJCSAqIFBh cmFsbGVsIGF1dG92YWN1dW0gY2FuIHJlc2VydmUgcGFyYWxsZWwgd29ya2Vycy4gTWFrZSBzdXJl CisJCQkgKiB0aGF0IGFsbCByZXNlcnZlZCB3b3JrZXJzIGFyZSByZWxlYXNlZC4KKwkJCSAqLwor CQkJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnMoKTsKKwogCQkJLyoKIAkJCSAq IEFib3J0IHRoZSB0cmFuc2FjdGlvbiwgc3RhcnQgYSBuZXcgb25lLCBhbmQgcHJvY2VlZCB3aXRo IHRoZQogCQkJICogbmV4dCB0YWJsZSBpbiBvdXIgbGlzdC4KQEAgLTI4ODAsOCArMjkyMSwxMiBA QCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAs CiAJCSAqLwogCQl0YWItPmF0X3BhcmFtcy5pbmRleF9jbGVhbnVwID0gVkFDT1BUVkFMVUVfVU5T UEVDSUZJRUQ7CiAJCXRhYi0+YXRfcGFyYW1zLnRydW5jYXRlID0gVkFDT1BUVkFMVUVfVU5TUEVD SUZJRUQ7Ci0JCS8qIEFzIG9mIG5vdywgd2UgZG9uJ3Qgc3VwcG9ydCBwYXJhbGxlbCB2YWN1dW0g Zm9yIGF1dG92YWN1dW0gKi8KLQkJdGFiLT5hdF9wYXJhbXMubndvcmtlcnMgPSAtMTsKKworCQkv KiBEZWNpZGUgd2hldGhlciB3ZSBuZWVkIHRvIHByb2Nlc3MgaW5kZXhlcyBvZiB0YWJsZSBpbiBw YXJhbGxlbC4gKi8KKwkJdGFiLT5hdF9wYXJhbXMubndvcmtlcnMgPSBhdm9wdHMKKwkJCT8gYXZv cHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMKKwkJCTogLTE7CisKIAkJdGFiLT5hdF9w YXJhbXMuZnJlZXplX21pbl9hZ2UgPSBmcmVlemVfbWluX2FnZTsKIAkJdGFiLT5hdF9wYXJhbXMu ZnJlZXplX3RhYmxlX2FnZSA9IGZyZWV6ZV90YWJsZV9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLm11 bHRpeGFjdF9mcmVlemVfbWluX2FnZSA9IG11bHRpeGFjdF9mcmVlemVfbWluX2FnZTsKQEAgLTMz NTgsNiArMzQwMyw4NSBAQCBBdXRvVmFjdXVtUmVxdWVzdFdvcmsoQXV0b1ZhY3V1bVdvcmtJdGVt VHlwZSB0eXBlLCBPaWQgcmVsYXRpb25JZCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICog SW4gb3JkZXIgdG8gbWVldCB0aGUgJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMnIGxp bWl0LCBsZWFkZXIKKyAqIGF1dG92YWN1dW0gcHJvY2VzcyBtdXN0IGNhbGwgdGhpcyBmdW5jdGlv bi4gSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mCisgKiBwYXJhbGxlbCB3b3JrZXJzIHRoYXQgYWN0 dWFsbHkgY2FuIGJlIGxhdW5jaGVkIGFuZCByZXNlcnZlcyB0aGVzZSB3b3JrZXJzCisgKiAoaWYg YW55KSBpbiBnbG9iYWwgYXV0b3ZhY3V1bSBzdGF0ZS4KKyAqCisgKiBOT1RFOiBXZSB3aWxsIHRy eSB0byBwcm92aWRlIGFzIG1hbnkgd29ya2VycyBhcyByZXF1ZXN0ZWQsIGV2ZW4gaWYgY2FsbGVy CisgKiB3aWxsIG9jY3VweSBhbGwgYXZhaWxhYmxlIHdvcmtlcnMuCisgKi8KK2ludAorQXV0b1Zh Y3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKQoreworCWludAkJCW5yZXNl cnZlZDsKKworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAq LworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgIUlzUGFyYWxsZWxXb3Jr ZXIoKSk7CisKKwkvKgorCSAqIFdlIGNhbiBvbmx5IHJlc2VydmUgd29ya2VycyBhdCB0aGUgYmVn aW5uaW5nIG9mIHBhcmFsbGVsIGluZGV4CisJICogcHJvY2Vzc2luZywgc28gd2UgbXVzdCBub3Qg aGF2ZSBhbnkgcmVzZXJ2ZWQgd29ya2VycyByaWdodCBub3cuCisJICovCisJQXNzZXJ0KGF2X253 b3JrZXJzX3Jlc2VydmVkID09IDApOworCisJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywg TFdfRVhDTFVTSVZFKTsKKworCS8qIFByb3ZpZGUgYXMgbWFueSB3b3JrZXJzIGFzIHdlIGNhbi4g Ki8KKwlucmVzZXJ2ZWQgPSBNaW4oQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3Jr ZXJzLCBud29ya2Vycyk7CisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJz IC09IG53b3JrZXJzOworCisJLyogUmVtZW1iZXIgaG93IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJl c2VydmVkLiAqLworCWF2X253b3JrZXJzX3Jlc2VydmVkICs9IG53b3JrZXJzOworCisJTFdMb2Nr UmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CisJcmV0dXJuIG5yZXNlcnZlZDsKK30KKworLyoKKyAq IExlYWRlciBhdXRvdmFjdXVtIHByb2Nlc3MgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gb3Jk ZXIgdG8gdXBkYXRlIGdsb2JhbAorICogYXV0b3ZhY3V1bSBzdGF0ZSwgc28gb3RoZXIgbGVhZGVy cyB3aWxsIGJlIGFibGUgdG8gdXNlIHRoZXNlIHBhcmFsbGVsCisgKiB3b3JrZXJzLgorICoKKyAq ICdud29ya2VycycgLSBob3cgbWFueSB3b3JrZXJzIGNhbGxlciB3YW50cyB0byByZWxlYXNlLgor ICovCit2b2lkCitBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMp Cit7CisJLyogT25seSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJ QXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdvcmtlcigp KTsKKworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkv KgorCSAqIElmIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHdhcyByZWR1 Y2VkIGR1cmluZyBleGVjdXRpb24sCisJICogd2UgbXVzdCBjYXAgYXZhaWxhYmxlIHdvcmtlcnMg bnVtYmVyIGJ5IGl0cyBuZXcgdmFsdWUuCisJICovCisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVl UGFyYWxsZWxXb3JrZXJzID0KKwkJTWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVs V29ya2VycyArIG53b3JrZXJzLAorCQkJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdv cmtlcnMpOworCisJLyogRG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0aGVzZSB3b3JrZXJzIGFueW1v cmUuICovCisJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgLT0gbndvcmtlcnM7CisKKwlMV0xvY2tSZWxl YXNlKEF1dG92YWN1dW1Mb2NrKTsKK30KKworLyoKKyAqIFNhbWUgYXMgYWJvdmUsIGJ1dCByZWxl YXNlICphbGwqIHBhcmFsbGVsIHdvcmtlcnMsIHRoYXQgd2VyZSByZXNlcnZlZCBieQorICogY3Vy cmVudCBsZWFkZXIgYXV0b3ZhY3V1bSBwcm9jZXNzLgorICovCit2b2lkCitBdXRvVmFjdXVtUmVs ZWFzZUFsbFBhcmFsbGVsV29ya2Vycyh2b2lkKQoreworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBj YW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAqLworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9j ZXNzKCkgJiYgIUlzUGFyYWxsZWxXb3JrZXIoKSk7CisKKwlpZiAoYXZfbndvcmtlcnNfcmVzZXJ2 ZWQgPiAwKQorCQlBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhhdl9ud29ya2Vyc19y ZXNlcnZlZCk7Cit9CisKIC8qCiAgKiBhdXRvdmFjX2luaXQKICAqCQlUaGlzIGlzIGNhbGxlZCBh dCBwb3N0bWFzdGVyIGluaXRpYWxpemF0aW9uLgpAQCAtMzQxOCw2ICszNTQyLDEwIEBAIEF1dG9W YWN1dW1TaG1lbUluaXQodm9pZCkKIAkJQXNzZXJ0KCFmb3VuZCk7CiAKIAkJQXV0b1ZhY3V1bVNo bWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7CisJCUF1dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxs ZWxXb3JrZXJzID0KKwkJCU1pbihhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzLCBtYXhf d29ya2VyX3Byb2Nlc3Nlcyk7CisJCUF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29y a2VycyA9CisJCQlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VyczsKIAkJZGNs aXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVdvcmtlcnMpOwogCQlkbGlzdF9pbml0 KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKTsKIAkJQXV0b1ZhY3V1bVNobWVt LT5hdl9zdGFydGluZ1dvcmtlciA9IE5VTEw7CkBAIC0zNDk5LDMgKzM2MjcsMzQgQEAgY2hlY2tf YXZfd29ya2VyX2d1Y3Modm9pZCkKIAkJCQkgZXJyZGV0YWlsKCJUaGUgc2VydmVyIHdpbGwgb25s eSBzdGFydCB1cCB0byBcImF1dG92YWN1dW1fd29ya2VyX3Nsb3RzXCIgKCVkKSBhdXRvdmFjdXVt IHdvcmtlcnMgYXQgYSBnaXZlbiB0aW1lLiIsCiAJCQkJCQkgICBhdXRvdmFjdXVtX3dvcmtlcl9z bG90cykpKTsKIH0KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGF0IG51bWJlciBvZiBmcmVlIHBhcmFs bGVsIHdvcmtlcnMgY29ycmVzcG9uZHMgdG8gdGhlCisgKiBhdXRvdmFjdXVtX21heF9wYXJhbGxl bF93b3JrZXJzIHBhcmFtZXRlciAoYWZ0ZXIgaXQgd2FzIGNoYW5nZWQpLgorICovCitzdGF0aWMg dm9pZAorYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhpbnQgcHJldl9tYXhfcGFyYWxsZWxf d29ya2VycykKK3sKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUp OworCisJLyoKKwkgKiBDYXAgdGhlIG51bWJlciBvZiBmcmVlIHdvcmtlcnMgYnkgbmV3IHBhcmFt ZXRlcidzIHZhbHVlLCBpZiBuZWVkZWQuCisJICovCisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVl UGFyYWxsZWxXb3JrZXJzID0KKwkJTWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVs V29ya2VycywKKwkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMpOworCisJaWYgKGF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPiBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJz KQorCXsKKwkJLyoKKwkJICogSWYgdXNlciB3YW50cyB0byBpbmNyZWFzZSBudW1iZXIgb2YgcGFy YWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLCB3ZQorCQkgKiBtdXN0IGluY3JlYXNlIG51bWJlciBv ZiBmcmVlIHdvcmtlcnMuCisJCSAqLworCQlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxl bFdvcmtlcnMgKz0KKwkJCShhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIC0gcHJldl9t YXhfcGFyYWxsZWxfd29ya2Vycyk7CisJfQorCisJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJh bGxlbFdvcmtlcnMgPSBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOworCisJTFdMb2Nr UmVsZWFzZShBdXRvdmFjdXVtTG9jayk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4 IGQzMWNiNDVhMDU4Li5mZDAwZDZmODlkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAg LTE0Myw2ICsxNDMsNyBAQCBpbnQJCQlOQnVmZmVycyA9IDE2Mzg0OwogaW50CQkJTWF4Q29ubmVj dGlvbnMgPSAxMDA7CiBpbnQJCQltYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDg7CiBpbnQJCQltYXhf cGFyYWxsZWxfd29ya2VycyA9IDg7CitpbnQJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3Jr ZXJzID0gMDsKIGludAkJCU1heEJhY2tlbmRzID0gMDsKIAogLyogR1VDIHBhcmFtZXRlcnMgZm9y IHZhY3V1bSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggYzY0ODRhZWEwODcuLjJhMDM3NDg1ZDVl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMzMjYsOSArMzMyNiwxMyBAQCBzZXRfY29uZmlnX3dp dGhfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbmZpZ19oYW5kbGUgKmhhbmRsZSwKIAkgKgog CSAqIEFsc28gYWxsb3cgbm9ybWFsIHNldHRpbmcgaWYgdGhlIEdVQyBpcyBtYXJrZWQgR1VDX0FM TE9XX0lOX1BBUkFMTEVMLgogCSAqCi0JICogT3RoZXIgY2hhbmdlcyBtaWdodCBuZWVkIHRvIGFm ZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4KKwkgKiBPdGhlciBjaGFuZ2VzIG1p Z2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLiBOb3RlLAor CSAqIHRoYXQgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMgYW4gZXhjZXB0aW9uLCBiZWNh dXNlIG9ubHkKKwkgKiBjb3N0LWJhc2VkIGRlbGF5cyBuZWVkIHRvIGJlIGFmZmVjdGVkIGFsc28g dG8gcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMsCisJICogYW5kIHdlIHdpbGwgaGFuZGxlIGl0IGVs c2V3aGVyZSBpZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYm IGNoYW5nZVZhbCAmJiBhY3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCisJaWYgKElzSW5QYXJh bGxlbE1vZGUoKSAmJiAhQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIGNoYW5nZVZhbCAm JgorCQlhY3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCiAJCShyZWNvcmQtPmZsYWdzICYgR1VD X0FMTE9XX0lOX1BBUkFMTEVMKSA9PSAwKQogCXsKIAkJZXJlcG9ydChlbGV2ZWwsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDExMjgxNjdjMDI1Li5kZTlm MWJkNDgwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAg LTE1NCw2ICsxNTQsMTUgQEAKICAgbWF4ID0+ICcyMDAwMDAwMDAwJywKIH0sCiAKK3sgbmFtZSA9 PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNvbnRl eHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAorICBzaG9y dF9kZXNjID0+ICdNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMs IHRoYXQgY2FuIGJlIHRha2VuIGZyb20gYmd3b3JrZXJzIHBvb2wuJywKKyAgbG9uZ19kZXNjID0+ ICdUaGlzIHBhcmFtZXRlciBpcyBjYXBwZWQgYnkgIm1heF93b3JrZXJfcHJvY2Vzc2VzIiAobm90 IGJ5ICJhdXRvdmFjdXVtX21heF93b3JrZXJzIiEpLicsCisgIHZhcmlhYmxlID0+ICdhdXRvdmFj dXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywKKyAgYm9vdF92YWwgPT4gJzAnLAorICBtaW4gPT4g JzAnLAorICBtYXggPT4gJ01BWF9CQUNLRU5EUycsCit9LAorCiB7IG5hbWUgPT4gJ2F1dG92YWN1 dW1fbWF4X3dvcmtlcnMnLCB0eXBlID0+ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQJywg Z3JvdXAgPT4gJ1ZBQ1VVTV9BVVRPVkFDVVVNJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0aGUg bWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzbHkgcnVubmluZyBhdXRvdmFjdXVtIHdvcmtl ciBwcm9jZXNzZXMuJywKICAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3dvcmtlcnMnLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGRj OWUyMjU1ZjhhLi41NTllZjdiMTc3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNjkxLDYgKzY5MSw3IEBACiAjYXV0b3ZhY3V1bV93b3Jr ZXJfc2xvdHMgPSAxNiAgICAgICAgICAgIyBhdXRvdmFjdXVtIHdvcmtlciBzbG90cyB0byBhbGxv Y2F0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKGNoYW5nZSBy ZXF1aXJlcyByZXN0YXJ0KQogI2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAzICAgICAgICAgICAg ICMgbWF4IG51bWJlciBvZiBhdXRvdmFjdXVtIHN1YnByb2Nlc3NlcworI2F1dG92YWN1dW1fbWF4 X3BhcmFsbGVsX3dvcmtlcnMgPSAwICAgICMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgbGltaXRl ZCBieSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogI2F1dG92YWN1dW1fbmFwdGltZSA9IDFtaW4gICAg ICAgICAgICAgICMgdGltZSBiZXR3ZWVuIGF1dG92YWN1dW0gcnVucwogI2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCA9IDUwICAgICAgICMgbWluIG51bWJlciBvZiByb3cgdXBkYXRlcyBiZWZv cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhY3V1bQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCmluZGV4IDUxODA2NTk3MDM3Li42MTcwNDM2YjM0MSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYwpAQCAtMTQyMyw2ICsxNDIzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNv bnN0IHRhYmxlX3N0b3JhZ2VfcGFyYW1ldGVyc1tdID0gewogCSJhdXRvdmFjdXVtX211bHRpeGFj dF9mcmVlemVfbWF4X2FnZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdl IiwKIAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSIsCisJImF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2VycyIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiLAog CSJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1faW5z ZXJ0X3NjYWxlX2ZhY3RvciIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDlhN2Q3MzNkZGVmLi42MDVkMDgyOWIwMyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmgKQEAgLTE3OCw2ICsxNzgsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heEJh Y2tlbmRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhDb25uZWN0aW9uczsKIGV4dGVybiBQ R0RMTElNUE9SVCBpbnQgbWF4X3dvcmtlcl9wcm9jZXNzZXM7CiBleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9wYXJhbGxlbF93b3JrZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBhdXRvdmFj dXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbW1p dF90aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0X21l bWJlcl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRleCAwMjNhYzZk NWZhOC4uZjRiOTNiNDQ1MzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCkBAIC02 NSw2ICs2NSwxMSBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBBdXRvVmFjV29ya2VyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydAogZXh0ZXJuIGJvb2wgQXV0b1Zh Y3V1bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwKIAkJCQkJCQkJICBP aWQgcmVsYXRpb25JZCwgQmxvY2tOdW1iZXIgYmxrbm8pOwogCisvKiBwYXJhbGxlbCBhdXRvdmFj dXVtIHN0dWZmICovCitleHRlcm4gaW50CUF1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJz KGludCBud29ya2Vycyk7CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29y a2VycyhpbnQgbndvcmtlcnMpOworZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJh bGxlbFdvcmtlcnModm9pZCk7CisKIC8qIHNoYXJlZCBtZW1vcnkgc3R1ZmYgKi8KIGV4dGVybiBT aXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBBdXRvVmFjdXVtU2ht ZW1Jbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMv aW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4MDI4NjA3NmExMS4uZTg3OWZkY2ZjNjkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oCkBAIC0zMTEsNiArMzExLDEzIEBAIHR5cGVkZWYgc3RydWN0IEZvcmVpZ25LZXlDYWNoZUlu Zm8KIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiB7CiAJYm9vbAkJZW5hYmxlZDsKKworCS8q CisJICogTWF4IG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMuIElmIHZhbHVl IGlzIDAgdGhlbiBwYXJhbGxlbAorCSAqIGRlZ3JlZSB3aWxsIGNvbXB1dGVkIGJhc2VkIG9uIG51 bWJlciBvZiBpbmRleGVzLgorCSAqLworCWludAkJCWF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vy czsKKwogCWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90aHJlc2hv bGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7Ci0tIAoyLjQzLjAKCg== --0000000000001aafaf06440bc0ea--