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 1wcac6-003T7y-1u for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 03:18:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcac5-003SJH-1F for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 03:18: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 ) id 1wcac4-003SJ7-2G for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 03:18:49 +0000 Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcac2-000000007TF-2Qsc for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 03:18:47 +0000 Received: by mail-oo1-xc33.google.com with SMTP id 006d021491bc7-69ec2ebec61so1134693eaf.3 for ; Wed, 24 Jun 2026 20:18:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782357526; cv=none; d=google.com; s=arc-20260327; b=UmtN/xqEIoLh6alorTyBqr5oc2Uj1rSNv+AvD+fVfveP1W9DXfpgboiOyISVtlBRFU I8sBkIXQujFe0aLxfDXMrv5BcvHBoFd6DVPZ9j7xhdSHFX3Lz6roxScbe/KYyKW4oImZ CVax6ATTqa5A654NIEAe++kPili8atH0ikNmJ42fbCkbmVwj5ZzEV5bq0Vfc24KTqC1o rUdAYY0EbMl1ldvTcE4QxTLHJg4vS6n1Qnjbz7bizV7OjnzfZ2pNkdTkNdU1d/593hvu EQ4DfzVDkJsCyLknUQPenD/JtJxoCJ9WNK40CjaPOw4mqZokR0kaPi8n4jfQfSwQ8Kg/ o3JQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=dc9hlEiZ8Qxibu1AAm80m3vq6Bjucc3Oqrb6bXgBvdI=; fh=ftxEANoQ0T7M9pK+44nf2FEj1Y9H4SQ+35EjYWsyjd4=; b=F6CmwQHHhyaUobvXQ0RRSaC58Cdlmo5iQRbdAvpgl+e6m55aPAwmQeXcIzgH8P64iI xaSfReQcsGjo5r9muxYzqPh+zUE9CLTJrkz1QH4aopz5Vi/emIVNyIElcQ9jcR/zRQTg Za/RLeIUyis53YII09o5UeI647WIRYZeUILX0ci0kfD43yMWE+7qQtZvcKGUoy3RY0QH IfIS8xw46Z1Tl83nsxcjoGwp1lbpUKRvN+NUFaYMegD+sJAMxzSLoRqYRz/9AOCy1xqB H8wYDWa5iwdDXAk/dZ4DB38Y5gmcQcjwbMd02U5EOELWXPSqGcNjP1mD77cB4JeqAWw2 PM2g==; 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=20251104; t=1782357526; x=1782962326; 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=dc9hlEiZ8Qxibu1AAm80m3vq6Bjucc3Oqrb6bXgBvdI=; b=HbxeRkm2bQJUNAV1WZPe2UjOpE3/RkC2wGFVClNvGGbP84hda8eVgWLyt0Odv3myGx xVgU9nuYnkGEw+SoaWkxhD77LSEtwim4fdCvrgyzvltEt2JEZQN1MsTlM7n3t1MuF8ku vjjhpF74GNELCyslXzse2/6GUPNzleeHRGjr4ZgdG/PqdC7qQKHwgYKg7KlJH6wObTj2 LmPYoG/omEtkYImbp0p64hBKFYoprW/tr8mQFoC+ZUouBnOcifpp7p2bB+SkLi/2Rrsr lJhgheBy2NGOddMWOCxBVmCQE58H9YBm4TBNGeNZimGWLxB8vite2dqCUFNMvZ+c1GWr U/ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782357526; x=1782962326; 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=dc9hlEiZ8Qxibu1AAm80m3vq6Bjucc3Oqrb6bXgBvdI=; b=Cd0JXuSjTchvp8H3aTmDZQez0UPrIFlb5V/o2AnBxpgY8dr9r2zsytslM9WNQgOGm2 4+YJToMuDSvVGznj73/wgWTe0YoeFAkEoryfyJpjpJkTcIKXiTvPinDAWd3qClv8I3TF LqFJT8qO+br/DDq2DBfIvR443h84Jc34vKPnL5SXIHVErg+oep3EOLheJCr/g6yxjhru tm9ngBeJAxHvzAs3uKxGg8cGtQjaTE9Do5ZpucJzQbwf7vLjGEW/o096z8fEAAAn6js/ bmI4VYP/4rl5Z2wmJX3nravQOyLz7ZkbvMEKKVgqyYVeFyU0JFDLB/9mhtHfvboRRmbd 6n+Q== X-Forwarded-Encrypted: i=1; AFNElJ+yBfc+Ehc4bRpzoEDqq/M7sJBMLKyXWKsnkKwcH41xdoAxN1wAdJPNi7x4PMppBr/x0uCseDsL2rtwTGP2@lists.postgresql.org X-Gm-Message-State: AOJu0YyDISLdwBfwbGjQG7s9cImwKhtTYkcCQiBJUYVrXfg9Nw+L3oVc 28Gi0e3SPuxHgPYeZKL0KFAVuxTErNc/Obz7pku3498klXalqfHxLOt+OO3ZuJgfSOKOdbCZNIh J0qbUYUyqcx4mSQcoMF169ao14e+28Pyliw9l X-Gm-Gg: AfdE7cn9LlG3bGdRi94nft2rFzjjxso2eo7bpGksFXlM0r5D19Lr/Fu0FOqQ0TNG8nR nysX+zsReEWCgCE0foByxAYdy7Y++jfHQluOq5iDUgLIdOMGFtqm/r7rMkDLzqS7MDe+yy86My7 Y+xFNZBcH7dWFLTFwidK7uCKtVGhEbCpSiWAWpQL2XmVhky5DbfG8LpuGqn7MctzvWj02lxOQRU N9yrpjA4Lebs8jbHBLubMx7RSYaT3/jegaL+RQe4Ak9c4uchPk+zZ2YGRbOdLdLamvRT+qRP/U= X-Received: by 2002:a05:6820:3089:b0:69e:3567:d7b6 with SMTP id 006d021491bc7-6a13521a4e7mr611124eaf.30.1782357525818; Wed, 24 Jun 2026 20:18:45 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Richard Guo Date: Thu, 25 Jun 2026 12:18:32 +0900 X-Gm-Features: AVVi8Cd-Da9Gy2WT18YwVnRnG5tkC8fvNevX8M0fERvalqudYw1BcebyCKh5qX4 Message-ID: Subject: Re: Add enable_groupagg GUC parameter to control GroupAggregate usage To: Tatsuro Yamada Cc: David Rowley , Ashutosh Bapat , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000003090bb06550b732a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003090bb06550b732a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 25, 2026 at 8:05=E2=80=AFAM Richard Guo wrote: > I rebased your last patch and made some changes. Attached is what I > ended up with. I looked into the AGG_MIXED case some more, and I don't think the v3 patch handles it correctly. I'd assumed an AGG_MIXED plan always does some sorted grouping, but that's not true. For the common cube/rollup queries the grouping sets always include the empty set, which can't be hashed, so even the maximally-hashed plan comes out as AGG_MIXED. Disabling it under enable_groupagg therefore penalizes the very plan we want. To recap how grouping sets are costed: create_groupingsets_path loops over the rollups and calls cost_agg once per rollup. The first call gets the path's overall strategy (AGG_MIXED for a mixed plan); the rest come through as AGG_HASHED or AGG_SORTED, one per rollup, with their disabled_nodes summed into the path. So an AGG_MIXED plan's sorted grouping shows up in the per-rollup AGG_SORTED calls, not in the AGG_MIXED call itself. And the empty grouping set is really computed like AGG_PLAIN, with no hash table and no sort, so it shouldn't bump disabled_nodes at all. It reaches cost_agg with numGroupCols =3D=3D 0, which makes it easy to tell apart. So in the attached patch AGG_MIXED is disabled only by enable_hashagg, and AGG_SORTED is disabled by enable_groupagg only when numGroupCols > 0. That also lets the tests in groupingsets.sql use enable_groupagg, which they couldn't before. - Richard --0000000000003090bb06550b732a Content-Type: application/octet-stream; name="v4-0001-Add-an-enable_groupagg-GUC-parameter.patch" Content-Disposition: attachment; filename="v4-0001-Add-an-enable_groupagg-GUC-parameter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqsxn2bb0 RnJvbSBlMmQ3YTBkOGMzNjFmZTZmN2ZlOTM3MDZkYzk1MDFlOGM1ZDhjNmRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyNCBKdW4gMjAyNiAxODowOTowNiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjRd IEFkZCBhbiBlbmFibGVfZ3JvdXBhZ2cgR1VDIHBhcmFtZXRlcgoKV2UndmUgbG9uZyBoYWQgZW5h YmxlX2hhc2hhZ2cgdG8gZGlzY291cmFnZSBoYXNoZWQgYWdncmVnYXRpb24sIGJ1dAp0aGVyZSB3 YXMgbm8gZXF1aXZhbGVudCBmb3IgZ3JvdXBpbmcgdGhhdCB3b3JrcyBieSByZWFkaW5nIHByZXNv cnRlZAppbnB1dC4gIFRoYXQncyBoYW5keSB3aGVuIGludmVzdGlnYXRpbmcgcGxhbm5lciBjb3N0 IG1pc2VzdGltYXRlcywgYW5kCmFzIGFuIGVzY2FwZSBoYXRjaCB3aGVuIGEgc29ydGVkIGdyb3Vw aW5nIHBsYW4gaXMgY2hvc2VuIG92ZXIgYSBtdWNoCmNoZWFwZXIgaGFzaGVkIG9uZS4KCmVuYWJs ZV9ncm91cGFnZyAob24gYnkgZGVmYXVsdCkgY292ZXJzIHRoZSBHcm91cEFnZ3JlZ2F0ZSBhbmQg R3JvdXAKbm9kZXMsIHRoZSBzb3J0LWJhc2VkIFVuaXF1ZSBzdGVwIHVzZWQgZm9yIERJU1RJTkNU IGFuZCBzZW1pam9pbgp1bmlxdWUtaWZpY2F0aW9uLCBhbmQgdGhlIHNvcnRlZCBtb2RlIG9mIFNl dE9wLiAgSXQgaXNuJ3QgYSBoYXJkCnN3aXRjaDsgaXQgb25seSBidW1wcyBkaXNhYmxlZF9ub2Rl cywgc28gcGxhbnMgd2l0aCBubyBvdGhlciBjaG9pY2UKYXJlIHN0aWxsIHByb2R1Y2VkLgoKU2V2 ZXJhbCByZWdyZXNzaW9uIGFuZCBtb2R1bGUgdGVzdHMgaGFkIGJlZW4gc2V0dGluZyBlbmFibGVf c29ydCBvZmYsCmFuZCBvbmUgZW5hYmxlX2luZGV4c2NhbiBvZmYsIG9ubHkgdG8gZm9yY2UgYSBo YXNoZWQgcGxhbi4gIFVzZQplbmFibGVfZ3JvdXBhZ2cgdGhlcmUgaW5zdGVhZCwgd2hlcmUgdGhh dCB3YXMgdGhlIHJlYWwgaW50ZW50LiAgSW4KdW5pb24uc3FsIHRoaXMgYWxzbyBsZXRzIHVzIHRl c3QgdGhlIGhhc2hlZCBVTklPTiBwYXRoLCB3aGljaCB3ZSBoYWQKbm8gd2F5IHRvIHJlYWNoIGJl Zm9yZS4KLS0tCiBjb250cmliL2hzdG9yZS9leHBlY3RlZC9oc3RvcmUub3V0ICAgICAgICAgICAg fCAgNCArLQogY29udHJpYi9oc3RvcmUvc3FsL2hzdG9yZS5zcWwgICAgICAgICAgICAgICAgIHwg IDQgKy0KIGNvbnRyaWIvbHRyZWUvZXhwZWN0ZWQvbHRyZWUub3V0ICAgICAgICAgICAgICB8ICA0 ICstCiBjb250cmliL2x0cmVlL3NxbC9sdHJlZS5zcWwgICAgICAgICAgICAgICAgICAgfCAgNCAr LQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysr KysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgICAgIHwgMzMg KysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMg ICAgICAgICB8IDIwICsrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0ICAgICB8ICA3ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAxICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmggICAgICAg ICAgICAgICAgICB8ICAxICsKIC4uLi9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2hhc2hhZ2cu b3V0ICAgICB8ICAyICstCiAuLi4vbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9oYXNoYWdn LnNxbCAgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCAg ICAgIHwgMTAgKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JvdXBpbmdzZXRzLm91 dCAgICB8ICA4ICsrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0ICAgICAg ICAgICB8ICA2ICstLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMu b3V0IHwgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQgICAg ICB8ICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdF9kaXN0aW5jdC5vdXQg fCAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzZWxlY3Qub3V0ICAgICAgIHwg IDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAz ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9uLm91dCAgICAgICAgICAgfCAzNyAr KysrKysrKysrKystLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbCAg ICAgICAgICAgfCAxMCArKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JvdXBpbmdzZXRzLnNx bCAgICAgICAgIHwgIDggKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsICAgICAg ICAgICAgICAgIHwgIDYgKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMu c3FsICAgICAgfCAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwgICAg ICAgICAgIHwgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9kaXN0aW5jdC5zcWwg ICAgICB8ICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzZWxlY3Quc3FsICAgICAgICAg ICAgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdW5pb24uc3FsICAgICAgICAgICAgICAg IHwgMTYgKysrKy0tLS0KIDI5IGZpbGVzIGNoYW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCA3NSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9leHBlY3RlZC9oc3RvcmUu b3V0IGIvY29udHJpYi9oc3RvcmUvZXhwZWN0ZWQvaHN0b3JlLm91dAppbmRleCBhY2VhODgwNmJh NC4uOTcxMzM3MmI3YTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaHN0b3JlL2V4cGVjdGVkL2hzdG9y ZS5vdXQKKysrIGIvY29udHJpYi9oc3RvcmUvZXhwZWN0ZWQvaHN0b3JlLm91dApAQCAtMTUwOSw3 ICsxNTA5LDcgQEAgc2VsZWN0IGNvdW50KCopIGZyb20gKHNlbGVjdCBoIGZyb20gKHNlbGVjdCAq IGZyb20gdGVzdGhzdG9yZSB1bmlvbiBhbGwgc2VsZWN0ICoKICgxIHJvdykKIAogc2V0IGVuYWJs ZV9oYXNoYWdnID0gdHJ1ZTsKLXNldCBlbmFibGVfc29ydCA9IGZhbHNlOworc2V0IGVuYWJsZV9n cm91cGFnZyA9IGZhbHNlOwogc2VsZWN0IGNvdW50KCopIGZyb20gKHNlbGVjdCBoIGZyb20gKHNl bGVjdCAqIGZyb20gdGVzdGhzdG9yZSB1bmlvbiBhbGwgc2VsZWN0ICogZnJvbSB0ZXN0aHN0b3Jl KSBocyBncm91cCBieSBoKSBoczI7CiAgY291bnQgCiAtLS0tLS0tCkBAIC0xNTIyLDcgKzE1MjIs NyBAQCBzZWxlY3QgZGlzdGluY3QgKiBmcm9tICh2YWx1ZXMgKGhzdG9yZSAnJyB8fCAnJyksKCcn KSkgdihoKTsKICAKICgxIHJvdykKIAotc2V0IGVuYWJsZV9zb3J0ID0gdHJ1ZTsKK3NldCBlbmFi bGVfZ3JvdXBhZ2cgPSB0cnVlOwogLS0gYnRyZWUKIGRyb3AgaW5kZXggaGlkeDsKIGNyZWF0ZSBp bmRleCBoaWR4IG9uIHRlc3Roc3RvcmUgdXNpbmcgYnRyZWUgKGgpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9oc3RvcmUvc3FsL2hzdG9yZS5zcWwgYi9jb250cmliL2hzdG9yZS9zcWwvaHN0b3JlLnNx bAppbmRleCA4YWU5NWU4YTUxMC4uYWM5MjllMDc1MDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaHN0 b3JlL3NxbC9oc3RvcmUuc3FsCisrKyBiL2NvbnRyaWIvaHN0b3JlL3NxbC9oc3RvcmUuc3FsCkBA IC0zNDUsMTAgKzM0NSwxMCBAQCBzZWxlY3QgY291bnQoZGlzdGluY3QgaCkgZnJvbSB0ZXN0aHN0 b3JlOwogc2V0IGVuYWJsZV9oYXNoYWdnID0gZmFsc2U7CiBzZWxlY3QgY291bnQoKikgZnJvbSAo c2VsZWN0IGggZnJvbSAoc2VsZWN0ICogZnJvbSB0ZXN0aHN0b3JlIHVuaW9uIGFsbCBzZWxlY3Qg KiBmcm9tIHRlc3Roc3RvcmUpIGhzIGdyb3VwIGJ5IGgpIGhzMjsKIHNldCBlbmFibGVfaGFzaGFn ZyA9IHRydWU7Ci1zZXQgZW5hYmxlX3NvcnQgPSBmYWxzZTsKK3NldCBlbmFibGVfZ3JvdXBhZ2cg PSBmYWxzZTsKIHNlbGVjdCBjb3VudCgqKSBmcm9tIChzZWxlY3QgaCBmcm9tIChzZWxlY3QgKiBm cm9tIHRlc3Roc3RvcmUgdW5pb24gYWxsIHNlbGVjdCAqIGZyb20gdGVzdGhzdG9yZSkgaHMgZ3Jv dXAgYnkgaCkgaHMyOwogc2VsZWN0IGRpc3RpbmN0ICogZnJvbSAodmFsdWVzIChoc3RvcmUgJycg fHwgJycpLCgnJykpIHYoaCk7Ci1zZXQgZW5hYmxlX3NvcnQgPSB0cnVlOworc2V0IGVuYWJsZV9n cm91cGFnZyA9IHRydWU7CiAKIC0tIGJ0cmVlCiBkcm9wIGluZGV4IGhpZHg7CmRpZmYgLS1naXQg YS9jb250cmliL2x0cmVlL2V4cGVjdGVkL2x0cmVlLm91dCBiL2NvbnRyaWIvbHRyZWUvZXhwZWN0 ZWQvbHRyZWUub3V0CmluZGV4IGYxZDBlYjM3YjgxLi4wYWI2MjNjYzIwNCAxMDA2NDQKLS0tIGEv Y29udHJpYi9sdHJlZS9leHBlY3RlZC9sdHJlZS5vdXQKKysrIGIvY29udHJpYi9sdHJlZS9leHBl Y3RlZC9sdHJlZS5vdXQKQEAgLTc4OTEsNyArNzg5MSw3IEBAIHJlc2V0IGVuYWJsZV9zZXFzY2Fu OwogcmVzZXQgZW5hYmxlX2JpdG1hcHNjYW47CiAtLSB0ZXN0IGhhc2ggYWdncmVnYXRlCiBzZXQg ZW5hYmxlX2hhc2hhZ2c9b247Ci1zZXQgZW5hYmxlX3NvcnQ9b2ZmOworc2V0IGVuYWJsZV9ncm91 cGFnZz1vZmY7CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSAoCiBT RUxFQ1QgdCBGUk9NIChTRUxFQ1QgKiBGUk9NIGx0cmVldGVzdCBVTklPTiBBTEwgU0VMRUNUICog RlJPTSBsdHJlZXRlc3QpIHQxIEdST1VQIEJZIHQKQEAgLTc5MTUsNyArNzkxNSw3IEBAIFNFTEVD VCB0IEZST00gKFNFTEVDVCAqIEZST00gbHRyZWV0ZXN0IFVOSU9OIEFMTCBTRUxFQ1QgKiBGUk9N IGx0cmVldGVzdCkgdDEgR1JPCiAoMSByb3cpCiAKIHJlc2V0IGVuYWJsZV9oYXNoYWdnOwotcmVz ZXQgZW5hYmxlX3NvcnQ7CityZXNldCBlbmFibGVfZ3JvdXBhZ2c7CiBkcm9wIGluZGV4IHRzdGlk eDsKIC0tIHRlc3QgZ2lzdCBpbmRleAogY3JlYXRlIGluZGV4IHRzdGlkeCBvbiBsdHJlZXRlc3Qg dXNpbmcgZ2lzdCAodCBnaXN0X2x0cmVlX29wcyhzaWdsZW49MCkpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9sdHJlZS9zcWwvbHRyZWUuc3FsIGIvY29udHJpYi9sdHJlZS9zcWwvbHRyZWUuc3FsCmlu ZGV4IDgzMzA5MWRjNmJiLi41YzMyNDE2MGFmZCAxMDA2NDQKLS0tIGEvY29udHJpYi9sdHJlZS9z cWwvbHRyZWUuc3FsCisrKyBiL2NvbnRyaWIvbHRyZWUvc3FsL2x0cmVlLnNxbApAQCAtMzcyLDcg KzM3Miw3IEBAIHJlc2V0IGVuYWJsZV9iaXRtYXBzY2FuOwogLS0gdGVzdCBoYXNoIGFnZ3JlZ2F0 ZQogCiBzZXQgZW5hYmxlX2hhc2hhZ2c9b247Ci1zZXQgZW5hYmxlX3NvcnQ9b2ZmOworc2V0IGVu YWJsZV9ncm91cGFnZz1vZmY7CiAKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgq KSBGUk9NICgKQEAgLTM4NCw3ICszODQsNyBAQCBTRUxFQ1QgdCBGUk9NIChTRUxFQ1QgKiBGUk9N IGx0cmVldGVzdCBVTklPTiBBTEwgU0VMRUNUICogRlJPTSBsdHJlZXRlc3QpIHQxIEdSTwogKSB0 MjsKIAogcmVzZXQgZW5hYmxlX2hhc2hhZ2c7Ci1yZXNldCBlbmFibGVfc29ydDsKK3Jlc2V0IGVu YWJsZV9ncm91cGFnZzsKIAogZHJvcCBpbmRleCB0c3RpZHg7CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBmYTU2 NmM5ZTU1My4uYjM5NTIyMWNhZDEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU4NjEsNiArNTg2MSwyMCBAQCBB TlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1ncm91cGFnZyIgeHJl ZmxhYmVsPSJlbmFibGVfZ3JvdXBhZ2ciPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX2dy b3VwYWdnPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJt PgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmVuYWJsZV9ncm91cGFnZzwvdmFybmFtZT4gY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAg IDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxl cyBvciBkaXNhYmxlcyB0aGUgcXVlcnkgcGxhbm5lcidzIHVzZSBvZiBzb3J0LWJhc2VkIGdyb3Vw aW5nCisgICAgICAgIGFuZCBhZ2dyZWdhdGlvbiBwbGFuIHR5cGVzLiBUaGUgZGVmYXVsdCBpcyA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJs ZS1oYXNoYWdnIiB4cmVmbGFiZWw9ImVuYWJsZV9oYXNoYWdnIj4KICAgICAgIDx0ZXJtPjx2YXJu YW1lPmVuYWJsZV9oYXNoYWdnPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAg ICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29z dHNpemUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggMWM1 NzVlNTZmZjYuLmFjNTIzZWNmOWE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXpl LmMKQEAgLTE1MSw2ICsxNTEsNyBAQCBib29sCQllbmFibGVfdGlkc2NhbiA9IHRydWU7CiBib29s CQllbmFibGVfc29ydCA9IHRydWU7CiBib29sCQllbmFibGVfaW5jcmVtZW50YWxfc29ydCA9IHRy dWU7CiBib29sCQllbmFibGVfaGFzaGFnZyA9IHRydWU7Citib29sCQllbmFibGVfZ3JvdXBhZ2cg PSB0cnVlOwogYm9vbAkJZW5hYmxlX25lc3Rsb29wID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9tYXRl cmlhbCA9IHRydWU7CiBib29sCQllbmFibGVfbWVtb2l6ZSA9IHRydWU7CkBAIC0yODM3LDE0ICsy ODM4LDE0IEBAIGNvc3RfYWdnKFBhdGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290LAogCQkvKiB3 ZSBhcmVuJ3QgZ3JvdXBpbmcgKi8KIAkJdG90YWxfY29zdCA9IHN0YXJ0dXBfY29zdCArIGNwdV90 dXBsZV9jb3N0OwogCQlvdXRwdXRfdHVwbGVzID0gMTsKKworCQkvKiBBR0dfUExBSU4gbmVpdGhl ciBoYXNoZXMgbm9yIHNvcnRzLCBzbyBuZWl0aGVyIHN3aXRjaCBkaXNhYmxlcyBpdCAqLwogCX0K IAllbHNlIGlmIChhZ2dzdHJhdGVneSA9PSBBR0dfU09SVEVEIHx8IGFnZ3N0cmF0ZWd5ID09IEFH R19NSVhFRCkKIAl7CiAJCS8qIEhlcmUgd2UgYXJlIGFibGUgdG8gZGVsaXZlciBvdXRwdXQgb24t dGhlLWZseSAqLwogCQlzdGFydHVwX2Nvc3QgPSBpbnB1dF9zdGFydHVwX2Nvc3Q7CiAJCXRvdGFs X2Nvc3QgPSBpbnB1dF90b3RhbF9jb3N0OwotCQlpZiAoYWdnc3RyYXRlZ3kgPT0gQUdHX01JWEVE ICYmICFlbmFibGVfaGFzaGFnZykKLQkJCSsrZGlzYWJsZWRfbm9kZXM7CiAJCS8qIGNhbGNzIHBo cmFzZWQgdGhpcyB3YXkgdG8gbWF0Y2ggSEFTSEVEIGNhc2UsIHNlZSBub3RlIGFib3ZlICovCiAJ CXRvdGFsX2Nvc3QgKz0gYWdnY29zdHMtPnRyYW5zQ29zdC5zdGFydHVwOwogCQl0b3RhbF9jb3N0 ICs9IGFnZ2Nvc3RzLT50cmFuc0Nvc3QucGVyX3R1cGxlICogaW5wdXRfdHVwbGVzOwpAQCAtMjg1 MywxMyArMjg1NCwzMSBAQCBjb3N0X2FnZyhQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9vdCwK IAkJdG90YWxfY29zdCArPSBhZ2djb3N0cy0+ZmluYWxDb3N0LnBlcl90dXBsZSAqIG51bUdyb3Vw czsKIAkJdG90YWxfY29zdCArPSBjcHVfdHVwbGVfY29zdCAqIG51bUdyb3VwczsKIAkJb3V0cHV0 X3R1cGxlcyA9IG51bUdyb3VwczsKKworCQkvKgorCQkgKiBBR0dfTUlYRUQgaGFzaGVzIGF0IGxl YXN0IG9uZSBncm91cGluZyBzZXQsIHNvIGl0IGlzIGRpc2FibGVkIHdoZW4KKwkJICogZW5hYmxl X2hhc2hhZ2cgaXMgb2ZmLiAgQW55IHNvcnRlZCBncm91cGluZyBpdCBhbHNvIHBlcmZvcm1zIGlz CisJCSAqIGNvc3RlZCBzZXBhcmF0ZWx5LCBzaW5jZSBjcmVhdGVfZ3JvdXBpbmdzZXRzX3BhdGgo KSBjYWxscworCQkgKiBjb3N0X2FnZygpIG9uY2UgcGVyIHJvbGx1cCBhbmQgdGhlIG5vbi1oYXNo ZWQgcm9sbHVwcyBjb21lIHRocm91Z2gKKwkJICogYXMgQUdHX1NPUlRFRC4KKwkJICoKKwkJICog QUdHX1NPUlRFRCBpcyBkaXNhYmxlZCB3aGVuIGVuYWJsZV9ncm91cGFnZyBpcyBvZmYsIGJ1dCBv bmx5IHdoZW4KKwkJICogdGhlcmUgYXJlIGdyb3VwaW5nIGNvbHVtbnMuICBUaGUgZW1wdHkgZ3Jv dXBpbmcgc2V0IGFycml2ZXMgd2l0aAorCQkgKiBudW1Hcm91cENvbHMgPT0gMCBhbmQgaXMgY29t cHV0ZWQgbGlrZSBBR0dfUExBSU4sIHdpdGggbm8gaGFzaGluZworCQkgKiBvciBzb3J0aW5nLCBz byBpdCBpc24ndCBkaXNhYmxlZC4KKwkJICovCisJCWlmIChhZ2dzdHJhdGVneSA9PSBBR0dfTUlY RUQpCisJCXsKKwkJCWlmICghZW5hYmxlX2hhc2hhZ2cpCisJCQkJKytkaXNhYmxlZF9ub2RlczsK KwkJfQorCQllbHNlIGlmIChudW1Hcm91cENvbHMgPiAwICYmICFlbmFibGVfZ3JvdXBhZ2cpCS8q IEFHR19TT1JURUQgKi8KKwkJCSsrZGlzYWJsZWRfbm9kZXM7CiAJfQogCWVsc2UKIAl7CiAJCS8q IG11c3QgYmUgQUdHX0hBU0hFRCAqLwogCQlzdGFydHVwX2Nvc3QgPSBpbnB1dF90b3RhbF9jb3N0 OwotCQlpZiAoIWVuYWJsZV9oYXNoYWdnKQotCQkJKytkaXNhYmxlZF9ub2RlczsKIAkJc3RhcnR1 cF9jb3N0ICs9IGFnZ2Nvc3RzLT50cmFuc0Nvc3Quc3RhcnR1cDsKIAkJc3RhcnR1cF9jb3N0ICs9 IGFnZ2Nvc3RzLT50cmFuc0Nvc3QucGVyX3R1cGxlICogaW5wdXRfdHVwbGVzOwogCQkvKiBjb3N0 IG9mIGNvbXB1dGluZyBoYXNoIHZhbHVlICovCkBAIC0yODcxLDYgKzI4OTAsMTAgQEAgY29zdF9h Z2coUGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsCiAJCS8qIGNvc3Qgb2YgcmV0cmlldmlu ZyBmcm9tIGhhc2ggdGFibGUgKi8KIAkJdG90YWxfY29zdCArPSBjcHVfdHVwbGVfY29zdCAqIG51 bUdyb3VwczsKIAkJb3V0cHV0X3R1cGxlcyA9IG51bUdyb3VwczsKKworCQkvKiBBR0dfSEFTSEVE IGlzIGRpc2FibGVkIHdoZW4gZW5hYmxlX2hhc2hhZ2cgaXMgb2ZmICovCisJCWlmICghZW5hYmxl X2hhc2hhZ2cpCisJCQkrK2Rpc2FibGVkX25vZGVzOwogCX0KIAogCS8qCkBAIC0zMzQwLDcgKzMz NjMsNyBAQCBjb3N0X2dyb3VwKFBhdGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290LAogCX0KIAog CXBhdGgtPnJvd3MgPSBvdXRwdXRfdHVwbGVzOwotCXBhdGgtPmRpc2FibGVkX25vZGVzID0gaW5w dXRfZGlzYWJsZWRfbm9kZXM7CisJcGF0aC0+ZGlzYWJsZWRfbm9kZXMgPSBpbnB1dF9kaXNhYmxl ZF9ub2RlcyArIChlbmFibGVfZ3JvdXBhZ2cgPyAwIDogMSk7CiAJcGF0aC0+c3RhcnR1cF9jb3N0 ID0gc3RhcnR1cF9jb3N0OwogCXBhdGgtPnRvdGFsX2Nvc3QgPSB0b3RhbF9jb3N0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggNzM1MThjOGY4NzAuLjM4NzVlM2Rk NTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKQEAgLTMwMzYsNiArMzAz NiwxNiBAQCBjcmVhdGVfdW5pcXVlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJCWNwdV9vcGVy YXRvcl9jb3N0ICogc3VicGF0aC0+cm93cyAqIG51bUNvbHM7CiAJcGF0aG5vZGUtPnBhdGgucm93 cyA9IG51bUdyb3VwczsKIAorCS8qCisJICogTWFyayB0aGUgcGF0aCBhcyBkaXNhYmxlZCBpZiBl bmFibGVfZ3JvdXBhZ2cgaXMgb2ZmLiAgV2hpbGUgdGhpcyBpc24ndAorCSAqIGEgZ3JvdXBpbmcg QWdnIG5vZGUsIGl0IGlzIHRoZSBzb3J0LWJhc2VkIHdheSBvZiByZW1vdmluZyBkdXBsaWNhdGVz CisJICogYW5kIHNvIGlzIHRoZSBuYXR1cmFsIGNvdW50ZXJwYXJ0IHRvIHRoZSBBR0dfSEFTSEVE IHBhdGggdGhhdAorCSAqIGVuYWJsZV9oYXNoYWdnIGNvbnRyb2xzOyBpdCBzZWVtcyBjbG9zZSBl bm91Z2ggdG8ganVzdGlmeSBsZXR0aW5nIHRoYXQKKwkgKiBzd2l0Y2ggY29udHJvbCBpdC4KKwkg Ki8KKwlpZiAoIWVuYWJsZV9ncm91cGFnZykKKwkJcGF0aG5vZGUtPnBhdGguZGlzYWJsZWRfbm9k ZXMrKzsKKwogCXJldHVybiBwYXRobm9kZTsKIH0KIApAQCAtMzUyMiw2ICszNTMyLDE2IEBAIGNy ZWF0ZV9zZXRvcF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkgKiBxdWFsLWNoZWNraW5nIG9y IHByb2plY3Rpb24uCiAJCSAqLwogCQlwYXRobm9kZS0+cGF0aC50b3RhbF9jb3N0ICs9IGNwdV9v cGVyYXRvcl9jb3N0ICogb3V0cHV0Um93czsKKworCQkvKgorCQkgKiBNYXJrIHRoZSBwYXRoIGFz IGRpc2FibGVkIGlmIGVuYWJsZV9ncm91cGFnZyBpcyBvZmYuICBXaGlsZSB0aGlzCisJCSAqIGlz bid0IGEgZ3JvdXBpbmcgQWdnIG5vZGUsIGl0IGlzIHRoZSBzb3J0LWJhc2VkIGltcGxlbWVudGF0 aW9uIGFuZAorCQkgKiBzbyBpcyB0aGUgbmF0dXJhbCBjb3VudGVycGFydCB0byB0aGUgU0VUT1Bf SEFTSEVEIHBhdGggdGhhdAorCQkgKiBlbmFibGVfaGFzaGFnZyBjb250cm9sczsgaXQgc2VlbXMg Y2xvc2UgZW5vdWdoIHRvIGp1c3RpZnkgbGV0dGluZworCQkgKiB0aGF0IHN3aXRjaCBjb250cm9s IGl0LgorCQkgKi8KKwkJaWYgKCFlbmFibGVfZ3JvdXBhZ2cpCisJCQlwYXRobm9kZS0+cGF0aC5k aXNhYmxlZF9ub2RlcysrOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y19wYXJhbWV0ZXJzLmRhdAppbmRleCA3YjFlYjZlNjFiYy4uM2Y5ZGMzZmM1YTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC05MDUsNiArOTA1LDEzIEBA CiAgIGJvb3RfdmFsID0+ICd0cnVlJywKIH0sCiAKK3sgbmFtZSA9PiAnZW5hYmxlX2dyb3VwYWdn JywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1FV RVJZX1RVTklOR19NRVRIT0QnLAorICBzaG9ydF9kZXNjID0+ICdFbmFibGVzIHRoZSBwbGFubmVy XCdzIHVzZSBvZiBzb3J0LWJhc2VkIGdyb3VwaW5nIGFuZCBhZ2dyZWdhdGlvbiBwbGFucy4nLAor ICBmbGFncyA9PiAnR1VDX0VYUExBSU4nLAorICB2YXJpYWJsZSA9PiAnZW5hYmxlX2dyb3VwYWdn JywKKyAgYm9vdF92YWwgPT4gJ3RydWUnLAorfSwKKwogeyBuYW1lID0+ICdlbmFibGVfaGFzaGFn ZycsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdyb3VwID0+ICdR VUVSWV9UVU5JTkdfTUVUSE9EJywKICAgc2hvcnRfZGVzYyA9PiAnRW5hYmxlcyB0aGUgcGxhbm5l clwncyB1c2Ugb2YgaGFzaGVkIGFnZ3JlZ2F0aW9uIHBsYW5zLicsCiAgIGZsYWdzID0+ICdHVUNf RVhQTEFJTicsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKaW5kZXggYWMzOGNkZGFhZjkuLjI0OTBmMjc2MDE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC00MjYsNiArNDI2LDcgQEAKICNlbmFi bGVfYXN5bmNfYXBwZW5kID0gb24KICNlbmFibGVfYml0bWFwc2NhbiA9IG9uCiAjZW5hYmxlX2dh dGhlcm1lcmdlID0gb24KKyNlbmFibGVfZ3JvdXBhZ2cgPSBvbgogI2VuYWJsZV9oYXNoYWdnID0g b24KICNlbmFibGVfaGFzaGpvaW4gPSBvbgogI2VuYWJsZV9pbmNyZW1lbnRhbF9zb3J0ID0gb24K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmggYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvY29zdC5oCmluZGV4IGYyZmQ1ZDMxNTA3Li5iZGEzZjE2OTBjMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvY29zdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJs ZV90aWRzY2FuOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3NvcnQ7CiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBlbmFibGVfaW5jcmVtZW50YWxfc29ydDsKIGV4dGVybiBQR0RMTElN UE9SVCBib29sIGVuYWJsZV9oYXNoYWdnOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2dyb3VwYWdnOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX25lc3Rsb29wOwogZXh0 ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX21hdGVyaWFsOwogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgZW5hYmxlX21lbW9pemU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvZXhwZWN0ZWQvaGFzaGFnZy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvZXhwZWN0ZWQvaGFzaGFnZy5vdXQKaW5kZXggY2M0MjQ3YWY5N2QuLjJmNzVl OWJlOGI3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhw ZWN0ZWQvaGFzaGFnZy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2hhc2hhZ2cub3V0CkBAIC0zNiw3ICszNiw3IEBAIENSRUFURSBUQUJMRSBoYXNo YWdnX2lqKHggSU5URUdFUik7CiBJTlNFUlQgSU5UTyBoYXNoYWdnX2lqIFNFTEVDVCBnIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsNTEwMCkgZzsKIFNFVCBtYXhfcGFyYWxsZWxfd29ya2Vycz0wOwog U0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI9MDsKLVNFVCBlbmFibGVfc29ydD1G QUxTRTsKK1NFVCBlbmFibGVfZ3JvdXBhZ2c9RkFMU0U7CiBTRVQgd29ya19tZW09JzRNQic7CiBT RUxFQ1QgQ09VTlQoKikgRlJPTSAoU0VMRUNUIERJU1RJTkNUIHggRlJPTSBoYXNoYWdnX2lqKSBz OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhhc2gtYWdn cmVnYXRlLXNwaWxsLTEwMDAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9zcWwvaGFzaGFnZy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2hhc2hhZ2cuc3FsCmluZGV4IDUxZDgxNDYyM2ZjLi41ZDU4MGY4ZTQyNSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9oYXNoYWdnLnNxbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2hhc2hhZ2cuc3FsCkBA IC0xNyw3ICsxNyw3IEBAIElOU0VSVCBJTlRPIGhhc2hhZ2dfaWogU0VMRUNUIGcgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw1MTAwKSBnOwogCiBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnM9MDsKIFNF VCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyPTA7Ci1TRVQgZW5hYmxlX3NvcnQ9RkFM U0U7CitTRVQgZW5hYmxlX2dyb3VwYWdnPUZBTFNFOwogU0VUIHdvcmtfbWVtPSc0TUInOwogCiBT RUxFQ1QgQ09VTlQoKikgRlJPTSAoU0VMRUNUIERJU1RJTkNUIHggRlJPTSBoYXNoYWdnX2lqKSBz OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXggODllMDUxZWU4 MjQuLmRlNmY5NGE5ZTE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Fn Z3JlZ2F0ZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5v dXQKQEAgLTE0NTksNyArMTQ1OSw3IEBAIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgbWlubWF4dGVz dDIKIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgbWlubWF4dGVzdDMKIC0tIERJU1RJTkNUIGNhbiBh bHNvIHRyaWdnZXIgd3JvbmcgYW5zd2VycyB3aXRoIGhhc2ggYWdncmVnYXRpb24gKGJ1ZyAjMTg0 NjUpCiBiZWdpbjsKLXNldCBsb2NhbCBlbmFibGVfc29ydCA9IG9mZjsKK3NldCBsb2NhbCBlbmFi bGVfZ3JvdXBhZ2cgPSBvZmY7CiBleHBsYWluIChjb3N0cyBvZmYpCiAgIHNlbGVjdCBmMSwgKHNl bGVjdCBkaXN0aW5jdCBtaW4odDEuZjEpIGZyb20gaW50NF90YmwgdDEgd2hlcmUgdDEuZjEgPSB0 MC5mMSkKICAgZnJvbSBpbnQ0X3RibCB0MDsKQEAgLTM4MDQsNyArMzgwNCw3IEBAIHNlbGVjdCB2 fHwnYScsIGNhc2Ugd2hlbiB2fHwnYScgPSAnYWEnIHRoZW4gMSBlbHNlIDAgZW5kLCBjb3VudCgq KQogLS0KIC0tIEhhc2ggQWdncmVnYXRpb24gU3BpbGwgdGVzdHMKIC0tCi1zZXQgZW5hYmxlX3Nv cnQ9ZmFsc2U7CitzZXQgZW5hYmxlX2dyb3VwYWdnPWZhbHNlOwogc2V0IHdvcmtfbWVtPSc2NGtC JzsKIHNlbGVjdCB1bmlxdWUxLCBjb3VudCgqKSwgc3VtKHR3b3Rob3VzYW5kKSBmcm9tIHRlbmsx CiBncm91cCBieSB1bmlxdWUxCkBAIC0zODYzLDcgKzM4NjMsNyBAQCBvcmRlciBieSBzdW0odHdv dGhvdXNhbmQpOwogKDQ4IHJvd3MpCiAKIHNldCB3b3JrX21lbSB0byBkZWZhdWx0Owotc2V0IGVu YWJsZV9zb3J0IHRvIGRlZmF1bHQ7CitzZXQgZW5hYmxlX2dyb3VwYWdnIHRvIGRlZmF1bHQ7CiAt LQogLS0gQ29tcGFyZSByZXN1bHRzIGJldHdlZW4gcGxhbnMgdXNpbmcgc29ydGluZyBhbmQgcGxh bnMgdXNpbmcgaGFzaAogLS0gYWdncmVnYXRpb24uIEZvcmNlIHNwaWxsaW5nIGluIGJvdGggY2Fz ZXMgYnkgc2V0dGluZyB3b3JrX21lbSBsb3cuCkBAIC0zOTEyLDcgKzM5MTIsNyBAQCBzZWxlY3Qg KGcvMik6Om51bWVyaWMgYXMgYzEsIGFycmF5X2FnZyhnOjpudW1lcmljKSBhcyBjMiwgY291bnQo KikgYXMgYzMKICAgZnJvbSBhZ2dfZGF0YV8yayBncm91cCBieSBnLzI7CiAtLSBQcm9kdWNlIHJl c3VsdHMgd2l0aCBoYXNoIGFnZ3JlZ2F0aW9uCiBzZXQgZW5hYmxlX2hhc2hhZ2cgPSB0cnVlOwot c2V0IGVuYWJsZV9zb3J0ID0gZmFsc2U7CitzZXQgZW5hYmxlX2dyb3VwYWdnID0gZmFsc2U7CiBz ZXQgaml0X2Fib3ZlX2Nvc3QgPSAwOwogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0IGclMTAw MDAgYXMgYzEsIHN1bShnOjpudW1lcmljKSBhcyBjMiwgY291bnQoKikgYXMgYzMKQEAgLTM5NDQs NyArMzk0NCw3IEBAIHNlbGVjdCAoZy8yKTo6bnVtZXJpYyBhcyBjMSwgc3VtKDc6OmludDQpIGFz IGMyLCBjb3VudCgqKSBhcyBjMwogY3JlYXRlIHRhYmxlIGFnZ19oYXNoXzQgYXMKIHNlbGVjdCAo Zy8yKTo6bnVtZXJpYyBhcyBjMSwgYXJyYXlfYWdnKGc6Om51bWVyaWMpIGFzIGMyLCBjb3VudCgq KSBhcyBjMwogICBmcm9tIGFnZ19kYXRhXzJrIGdyb3VwIGJ5IGcvMjsKLXNldCBlbmFibGVfc29y dCA9IHRydWU7CitzZXQgZW5hYmxlX2dyb3VwYWdnID0gdHJ1ZTsKIHNldCB3b3JrX21lbSB0byBk ZWZhdWx0OwogLS0gQ29tcGFyZSBncm91cCBhZ2dyZWdhdGlvbiByZXN1bHRzIHRvIGhhc2ggYWdn cmVnYXRpb24gcmVzdWx0cwogKHNlbGVjdCAqIGZyb20gYWdnX2hhc2hfMSBleGNlcHQgc2VsZWN0 ICogZnJvbSBhZ2dfZ3JvdXBfMSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZ3JvdXBpbmdzZXRzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JvdXBpbmdz ZXRzLm91dAppbmRleCBiMDgwODNlYzU0Yy4uYzNmMDA3NzFmNmUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JvdXBpbmdzZXRzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2dyb3VwaW5nc2V0cy5vdXQKQEAgLTIwMTAsNyArMjAxMCw3IEBAIGFsdGVy IHRhYmxlIGJ1Z18xNjc4NCBzZXQgKGF1dG92YWN1dW1fZW5hYmxlZCA9ICdmYWxzZScpOwogdXBk YXRlIHBnX2NsYXNzIHNldCByZWx0dXBsZXMgPSAxMCB3aGVyZSByZWxuYW1lPSdidWdfMTY3ODQn OwogaW5zZXJ0IGludG8gYnVnXzE2Nzg0IHNlbGVjdCBnLzEwLCBnIGZyb20gZ2VuZXJhdGVfc2Vy aWVzKDEsNDApIGc7CiBzZXQgd29ya19tZW09JzY0a0InOwotc2V0IGVuYWJsZV9zb3J0ID0gZmFs c2U7CitzZXQgZW5hYmxlX2dyb3VwYWdnID0gZmFsc2U7CiBzZWxlY3QgKiBmcm9tCiAgICh2YWx1 ZXMgKDEpLCgyKSkgdihhKSwKICAgbGF0ZXJhbCAoc2VsZWN0IGEsIGksIGosIGNvdW50KCopIGZy b20KQEAgLTIyMDUsNyArMjIwNSw3IEBAIGFsdGVyIHRhYmxlIGdzX2RhdGFfMSBzZXQgKGF1dG92 YWN1dW1fZW5hYmxlZCA9ICdmYWxzZScpOwogdXBkYXRlIHBnX2NsYXNzIHNldCByZWx0dXBsZXMg PSAxMCB3aGVyZSByZWxuYW1lPSdnc19kYXRhXzEnOwogc2V0IHdvcmtfbWVtPSc2NGtCJzsKIC0t IFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcuCi1zZXQgZW5hYmxlX3NvcnQgPSB0cnVlOwor c2V0IGVuYWJsZV9ncm91cGFnZyA9IHRydWU7CiBzZXQgZW5hYmxlX2hhc2hhZ2cgPSBmYWxzZTsK IHNldCBqaXRfYWJvdmVfY29zdCA9IDA7CiBleHBsYWluIChjb3N0cyBvZmYpCkBAIC0yMjM0LDcg KzIyMzQsNyBAQCBzZWxlY3QgZzEwMCwgZzEwLCBzdW0oZzo6bnVtZXJpYyksIGNvdW50KCopLCBt YXgoZzo6dGV4dCkKIGZyb20gZ3NfZGF0YV8xIGdyb3VwIGJ5IGN1YmUgKGcxMDAwLCBnMTAwLGcx MCk7CiAtLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBoYXNoIGFnZ3JlZ2F0aW9uLgogc2V0IGVuYWJs ZV9oYXNoYWdnID0gdHJ1ZTsKLXNldCBlbmFibGVfc29ydCA9IGZhbHNlOworc2V0IGVuYWJsZV9n cm91cGFnZyA9IGZhbHNlOwogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0IGcxMDAsIGcxMCwg c3VtKGc6Om51bWVyaWMpLCBjb3VudCgqKSwgbWF4KGc6OnRleHQpCiBmcm9tIGdzX2RhdGFfMSBn cm91cCBieSBjdWJlIChnMTAwMCwgZzEwMCxnMTApOwpAQCAtMjI1NSw3ICsyMjU1LDcgQEAgZnJv bSBnc19kYXRhXzEgZ3JvdXAgYnkgY3ViZSAoZzEwMDAsIGcxMDAsZzEwKTsKIGNyZWF0ZSB0YWJs ZSBnc19oYXNoXzEgYXMKIHNlbGVjdCBnMTAwLCBnMTAsIHN1bShnOjpudW1lcmljKSwgY291bnQo KiksIG1heChnOjp0ZXh0KQogZnJvbSBnc19kYXRhXzEgZ3JvdXAgYnkgY3ViZSAoZzEwMDAsIGcx MDAsZzEwKTsKLXNldCBlbmFibGVfc29ydCA9IHRydWU7CitzZXQgZW5hYmxlX2dyb3VwYWdnID0g dHJ1ZTsKIHNldCB3b3JrX21lbSB0byBkZWZhdWx0Owogc2V0IGhhc2hfbWVtX211bHRpcGxpZXIg dG8gZGVmYXVsdDsKIC0tIENvbXBhcmUgcmVzdWx0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25i Lm91dAppbmRleCA0ZTI0Njc4NTJkYi4uYjFkMmNlNWYwM2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmIub3V0CkBAIC0zNDczLDcgKzM0NzMsNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSAo U0VMRUNUIGogRlJPTSAoU0VMRUNUICogRlJPTSB0ZXN0anNvbmIgVU5JT04gQUxMIFNFTEVDVCAq CiAoMSByb3cpCiAKIFNFVCBlbmFibGVfaGFzaGFnZyA9IG9uOwotU0VUIGVuYWJsZV9zb3J0ID0g b2ZmOworU0VUIGVuYWJsZV9ncm91cGFnZyA9IG9mZjsKIFNFTEVDVCBjb3VudCgqKSBGUk9NIChT RUxFQ1QgaiBGUk9NIChTRUxFQ1QgKiBGUk9NIHRlc3Rqc29uYiBVTklPTiBBTEwgU0VMRUNUICog RlJPTSB0ZXN0anNvbmIpIGpzIEdST1VQIEJZIGopIGpzMjsKICBjb3VudCAKIC0tLS0tLS0KQEAg LTM0ODYsOSArMzQ4Niw5IEBAIFNFTEVDVCBkaXN0aW5jdCAqIEZST00gKHZhbHVlcyAoanNvbmIg J3t9JyB8fCAnJzo6dGV4dCksKCd7fScpKSB2KGopOwogIHt9CiAoMSByb3cpCiAKLVNFVCBlbmFi bGVfc29ydCA9IG9uOworU0VUIGVuYWJsZV9ncm91cGFnZyA9IG9uOwogUkVTRVQgZW5hYmxlX2hh c2hhZ2c7Ci1SRVNFVCBlbmFibGVfc29ydDsKK1JFU0VUIGVuYWJsZV9ncm91cGFnZzsKIERST1Ag SU5ERVggamlkeDsKIERST1AgSU5ERVggamlkeF9hcnJheTsKIC0tIGJ0cmVlCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKaW5kZXggNjAwNmFlZGUzMWQu LmQ0N2NlNGI2ZDZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRp cmFuZ2V0eXBlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdl dHlwZXMub3V0CkBAIC0zNDQyLDE0ICszNDQyLDE0IEBAIE5PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gdHlwZSB0d29faW50c19yYW5nZQogLS0KIC0tIENoZWNrIGJlaGF2aW9yIHdoZW4gc3VidHlw ZSBsYWNrcyBhIGhhc2ggZnVuY3Rpb24KIC0tCi1zZXQgZW5hYmxlX3NvcnQgPSBvZmY7ICAtLSB0 cnkgdG8gbWFrZSBpdCBwaWNrIGEgaGFzaCBzZXRvcCBpbXBsZW1lbnRhdGlvbgorc2V0IGVuYWJs ZV9ncm91cGFnZyA9IG9mZjsgIC0tIHRyeSB0byBtYWtlIGl0IHBpY2sgYSBoYXNoIHNldG9wIGlt cGxlbWVudGF0aW9uCiBzZWxlY3QgJ3soMDEsMTApfSc6OnZhcmJpdG11bHRpcmFuZ2UgZXhjZXB0 IHNlbGVjdCAneygxMCwxMSl9Jzo6dmFyYml0bXVsdGlyYW5nZTsKICB2YXJiaXRtdWx0aXJhbmdl IAogLS0tLS0tLS0tLS0tLS0tLS0tCiAgeygwMSwxMCl9CiAoMSByb3cpCiAKLXJlc2V0IGVuYWJs ZV9zb3J0OworcmVzZXQgZW5hYmxlX2dyb3VwYWdnOwogLS0KIC0tIE9VVC9JTk9VVC9UQUJMRSBm dW5jdGlvbnMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jhbmdl dHlwZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dAppbmRl eCBlMDYyYTRlNWMyYy4uYmE2MzBlNmYyMTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y YW5nZXR5cGVzLm91dApAQCAtMTgxOSwxNCArMTgxOSwxNCBAQCBOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIHR5cGUgdHdvX2ludHNfcmFuZ2UKIC0tIENoZWNrIGJlaGF2aW9yIHdoZW4gc3VidHlw ZSBsYWNrcyBhIGhhc2ggZnVuY3Rpb24KIC0tCiBjcmVhdGUgdHlwZSB2YXJiaXRyYW5nZSBhcyBy YW5nZSAoc3VidHlwZSA9IHZhcmJpdCk7Ci1zZXQgZW5hYmxlX3NvcnQgPSBvZmY7ICAtLSB0cnkg dG8gbWFrZSBpdCBwaWNrIGEgaGFzaCBzZXRvcCBpbXBsZW1lbnRhdGlvbgorc2V0IGVuYWJsZV9n cm91cGFnZyA9IG9mZjsgIC0tIHRyeSB0byBtYWtlIGl0IHBpY2sgYSBoYXNoIHNldG9wIGltcGxl bWVudGF0aW9uCiBzZWxlY3QgJygwMSwxMCknOjp2YXJiaXRyYW5nZSBleGNlcHQgc2VsZWN0ICco MTAsMTEpJzo6dmFyYml0cmFuZ2U7CiAgdmFyYml0cmFuZ2UgCiAtLS0tLS0tLS0tLS0tCiAgKDAx LDEwKQogKDEgcm93KQogCi1yZXNldCBlbmFibGVfc29ydDsKK3Jlc2V0IGVuYWJsZV9ncm91cGFn ZzsKIC0tCiAtLSBPVVQvSU5PVVQvVEFCTEUgZnVuY3Rpb25zCiAtLQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3RfZGlzdGluY3Qub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zZWxlY3RfZGlzdGluY3Qub3V0CmluZGV4IDM3OWJhMGJjOWZhLi43NDFm NzIzODc0MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3RfZGlz dGluY3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X2Rpc3RpbmN0 Lm91dApAQCAtMTg3LDcgKzE4Nyw3IEBAIFNFTEVDVCBESVNUSU5DVCBodW5kcmVkLCB0d28gRlJP TSB0ZW5rMTsKIFJFU0VUIGVuYWJsZV9zZXFzY2FuOwogU0VUIGVuYWJsZV9oYXNoYWdnPVRSVUU7 CiAtLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBoYXNoIGFnZ3JlZ2F0aW9uLgotU0VUIGVuYWJsZV9z b3J0PUZBTFNFOworU0VUIGVuYWJsZV9ncm91cGFnZz1GQUxTRTsKIFNFVCBqaXRfYWJvdmVfY29z dD0wOwogRVhQTEFJTiAoY29zdHMgb2ZmKQogU0VMRUNUIERJU1RJTkNUIGclMTAwMCBGUk9NIGdl bmVyYXRlX3NlcmllcygwLDk5OTkpIGc7CkBAIC0yMDMsNyArMjAzLDcgQEAgU0VMRUNUIERJU1RJ TkNUIGclMTAwMCBGUk9NIGdlbmVyYXRlX3NlcmllcygwLDk5OTkpIGc7CiBTRVQgaml0X2Fib3Zl X2Nvc3QgVE8gREVGQVVMVDsKIENSRUFURSBUQUJMRSBkaXN0aW5jdF9oYXNoXzIgQVMKIFNFTEVD VCBESVNUSU5DVCAoZyUxMDAwKTo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygwLDk5OTkpIGc7 Ci1TRVQgZW5hYmxlX3NvcnQ9VFJVRTsKK1NFVCBlbmFibGVfZ3JvdXBhZ2c9VFJVRTsKIFNFVCB3 b3JrX21lbSBUTyBERUZBVUxUOwogLS0gQ29tcGFyZSByZXN1bHRzCiAoU0VMRUNUICogRlJPTSBk aXN0aW5jdF9oYXNoXzEgRVhDRVBUIFNFTEVDVCAqIEZST00gZGlzdGluY3RfZ3JvdXBfMSkKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dAppbmRleCBhMzc3OGMyM2MzNC4uYTc1 YzRlZjNkM2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2VsZWN0 Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNlbGVjdC5vdXQKQEAgLTE0 NTQsNyArMTQ1NCw3IEBAIHdoZXJlIG8udGVuID0gMDsKIC0tIFRlc3QgcmVzY2FuIG9mIGEgaGFz aGVkIFNldE9wIG5vZGUKIC0tCiBiZWdpbjsKLXNldCBsb2NhbCBlbmFibGVfc29ydCA9IG9mZjsK K3NldCBsb2NhbCBlbmFibGVfZ3JvdXBhZ2cgPSBvZmY7CiBleHBsYWluIChjb3N0cyBvZmYpCiBz ZWxlY3QgY291bnQoKikgZnJvbQogICBvbmVrIG8gY3Jvc3Mgam9pbiBsYXRlcmFsICgKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXggMTMyYjU2YTU4NjQuLjFlMzI3YzJh ZmE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApAQCAtMTYxLDYgKzE2 MSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBs aWtlICdlbmFibGUlJzsKICBlbmFibGVfZWFnZXJfYWdncmVnYXRlICAgICAgICAgfCBvbgogIGVu YWJsZV9nYXRoZXJtZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2dyb3VwX2J5X3Jlb3Jk ZXJpbmcgICAgIHwgb24KKyBlbmFibGVfZ3JvdXBhZ2cgICAgICAgICAgICAgICAgfCBvbgogIGVu YWJsZV9oYXNoYWdnICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2hhc2hqb2luICAgICAg ICAgICAgICAgIHwgb24KICBlbmFibGVfaW5jcmVtZW50YWxfc29ydCAgICAgICAgfCBvbgpAQCAt MTgwLDcgKzE4MSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hl cmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAg fCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNj YW4gICAgICAgICAgICAgICAgIHwgb24KLSgyNSByb3dzKQorKDI2IHJvd3MpCiAKIC0tIFRoZXJl IGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuICBJ bmplY3Rpb25Qb2ludAogLS0gbWF5IGJlIHByZXNlbnQgb3IgYWJzZW50LCBkZXBlbmRpbmcgb24g aGlzdG9yeSBzaW5jZSBsYXN0IHBvc3RtYXN0ZXIgc3RhcnQuCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dW5pb24ub3V0CmluZGV4IDNhNDliMzU0MDU4Li42MjA2NTk1M2E4NCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC91bmlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC91bmlvbi5vdXQKQEAgLTM4NiwxNCArMzg2LDE0IEBAIHNlbGVjdCBjb3VudCgqKSBm cm9tCiAoMSByb3cpCiAKIC0tIHRoaXMgcXVlcnkgd2lsbCBwcmVmZXIgYSBzb3J0ZWQgc2V0b3Ag dW5sZXNzIHdlIGZvcmNlIGl0Lgotc2V0IGVuYWJsZV9pbmRleHNjYW4gdG8gb2ZmOworc2V0IGVu YWJsZV9ncm91cGFnZyB0byBvZmY7CiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgdW5pcXVl MSBmcm9tIHRlbmsxIGV4Y2VwdCBzZWxlY3QgdW5pcXVlMiBmcm9tIHRlbmsxIHdoZXJlIHVuaXF1 ZTIgIT0gMTA7Ci0gICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBIYXNoU2V0T3AgRXhjZXB0Ci0gICAt PiAgU2VxIFNjYW4gb24gdGVuazEKLSAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSB0ZW5rMV8xCisg ICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTEgb24gdGVuazEKKyAgIC0+ ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgdGVuazFfdW5pcXVlMiBvbiB0ZW5rMSB0ZW5rMV8xCiAg ICAgICAgICBGaWx0ZXI6ICh1bmlxdWUyIDw+IDEwKQogKDQgcm93cykKIApAQCAtNDAzLDcgKzQw Myw3IEBAIHNlbGVjdCB1bmlxdWUxIGZyb20gdGVuazEgZXhjZXB0IHNlbGVjdCB1bmlxdWUyIGZy b20gdGVuazEgd2hlcmUgdW5pcXVlMiAhPSAxMDsKICAgICAgIDEwCiAoMSByb3cpCiAKLXJlc2V0 IGVuYWJsZV9pbmRleHNjYW47CityZXNldCBlbmFibGVfZ3JvdXBhZ2c7CiAtLSB0aGUgaGFzaGVk IGltcGxlbWVudGF0aW9uIGlzIHNlbnNpdGl2ZSB0byBjaGlsZCBwbGFucycgdHVwbGUgc2xvdCB0 eXBlcwogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpbnRlcnNl Y3Qgc2VsZWN0IHEyLCBxMSBmcm9tIGludDhfdGJsIG9yZGVyIGJ5IDEsIDI7CkBAIC05ODEsMTkg Kzk4MSwzMCBAQCBzZWxlY3QgZXhjZXB0IHNlbGVjdDsKIAogLS0gY2hlY2sgaGFzaGVkIGltcGxl bWVudGF0aW9uCiBzZXQgZW5hYmxlX2hhc2hhZ2cgPSB0cnVlOwotc2V0IGVuYWJsZV9zb3J0ID0g ZmFsc2U7Ci0tLSBXZSd2ZSBubyB3YXkgdG8gY2hlY2sgaGFzaGVkIFVOSU9OIGFzIHRoZSBlbXB0 eSBwYXRoa2V5cyBpbiB0aGUgQXBwZW5kIGFyZQotLS0gZmluZSB0byBtYWtlIHVzZSBvZiBVbmlx dWUsIHdoaWNoIGlzIGNoZWFwZXIgdGhhbiBIYXNoQWdncmVnYXRlIGFuZCB3ZSd2ZQotLS0gbm8g bWVhbnMgdG8gZGlzYWJsZSBVbmlxdWUuCitzZXQgZW5hYmxlX2dyb3VwYWdnID0gZmFsc2U7Citl eHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSB1bmlv biBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwzKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBI YXNoQWdncmVnYXRlCisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRnVuY3Rpb24gU2NhbiBv biBnZW5lcmF0ZV9zZXJpZXMKKyAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBnZW5lcmF0ZV9zZXJpZXNfMQorKDQgcm93cykKKwogZXhwbGFpbiAoY29zdHMgb2Zm KQogc2VsZWN0IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgaW50ZXJzZWN0IHNlbGVjdCBmcm9t IGdlbmVyYXRlX3NlcmllcygxLDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNldE9wIEludGVyc2VjdAorIEhhc2hTZXRP cCBJbnRlcnNlY3QKICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcwogICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGdlbmVyYXRlX3Nlcmllc18xCiAo MyByb3dzKQogCitzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSB1bmlvbiBzZWxlY3Qg ZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwzKTsKKy0tCisoMSByb3cpCisKIHNlbGVjdCBmcm9tIGdl bmVyYXRlX3NlcmllcygxLDUpIHVuaW9uIGFsbCBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwzKTsKIC0tCiAoOCByb3dzKQpAQCAtMTAxNiw3ICsxMDI3LDcgQEAgc2VsZWN0IGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsNSkgZXhjZXB0IGFsbCBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwzKTsKIAogLS0gY2hlY2sgc29ydGVkIGltcGxlbWVudGF0aW9uCiBzZXQgZW5hYmxlX2hhc2hh Z2cgPSBmYWxzZTsKLXNldCBlbmFibGVfc29ydCA9IHRydWU7CitzZXQgZW5hYmxlX2dyb3VwYWdn ID0gdHJ1ZTsKIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCBmcm9tIGdlbmVyYXRlX3Nlcmll cygxLDUpIHVuaW9uIHNlbGVjdCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDMpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIApA QCAtMTA3NSw3ICsxMDg2LDcgQEAgc2VsZWN0IGZyb20gY3RlIHVuaW9uIHNlbGVjdCBmcm9tIGN0 ZTsKICgxIHJvdykKIAogcmVzZXQgZW5hYmxlX2hhc2hhZ2c7Ci1yZXNldCBlbmFibGVfc29ydDsK K3Jlc2V0IGVuYWJsZV9ncm91cGFnZzsKIC0tCiAtLSBDaGVjayBoYW5kbGluZyBvZiBhIGNhc2Ug d2l0aCB1bmtub3duIGNvbnN0YW50cy4gIFdlIGRvbid0IGd1YXJhbnRlZQogLS0gYW4gdW5kZWNv cmF0ZWQgY29uc3RhbnQgd2lsbCB3b3JrIGluIGFsbCBjYXNlcywgYnV0IGhpc3RvcmljYWxseSB0 aGlzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCmluZGV4IDkxNjM4M2RiOTI3Li5iNjZk YWQ1NjYwZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKQEAgLTQ5Myw3ICs0OTMs NyBAQCBkcm9wIHRhYmxlIG1pbm1heHRlc3QgY2FzY2FkZTsKIAogLS0gRElTVElOQ1QgY2FuIGFs c28gdHJpZ2dlciB3cm9uZyBhbnN3ZXJzIHdpdGggaGFzaCBhZ2dyZWdhdGlvbiAoYnVnICMxODQ2 NSkKIGJlZ2luOwotc2V0IGxvY2FsIGVuYWJsZV9zb3J0ID0gb2ZmOworc2V0IGxvY2FsIGVuYWJs ZV9ncm91cGFnZyA9IG9mZjsKIGV4cGxhaW4gKGNvc3RzIG9mZikKICAgc2VsZWN0IGYxLCAoc2Vs ZWN0IGRpc3RpbmN0IG1pbih0MS5mMSkgZnJvbSBpbnQ0X3RibCB0MSB3aGVyZSB0MS5mMSA9IHQw LmYxKQogICBmcm9tIGludDRfdGJsIHQwOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgc2VsZWN0IHZ8 fCdhJywgY2FzZSB3aGVuIHZ8fCdhJyA9ICdhYScgdGhlbiAxIGVsc2UgMCBlbmQsIGNvdW50KCop CiAtLSBIYXNoIEFnZ3JlZ2F0aW9uIFNwaWxsIHRlc3RzCiAtLQogCi1zZXQgZW5hYmxlX3NvcnQ9 ZmFsc2U7CitzZXQgZW5hYmxlX2dyb3VwYWdnPWZhbHNlOwogc2V0IHdvcmtfbWVtPSc2NGtCJzsK IAogc2VsZWN0IHVuaXF1ZTEsIGNvdW50KCopLCBzdW0odHdvdGhvdXNhbmQpIGZyb20gdGVuazEK QEAgLTE2ODEsNyArMTY4MSw3IEBAIGhhdmluZyBzdW0oZml2ZXRob3VzKSA+IDQ5NzUKIG9yZGVy IGJ5IHN1bSh0d290aG91c2FuZCk7CiAKIHNldCB3b3JrX21lbSB0byBkZWZhdWx0Owotc2V0IGVu YWJsZV9zb3J0IHRvIGRlZmF1bHQ7CitzZXQgZW5hYmxlX2dyb3VwYWdnIHRvIGRlZmF1bHQ7CiAK IC0tCiAtLSBDb21wYXJlIHJlc3VsdHMgYmV0d2VlbiBwbGFucyB1c2luZyBzb3J0aW5nIGFuZCBw bGFucyB1c2luZyBoYXNoCkBAIC0xNzM2LDcgKzE3MzYsNyBAQCBzZWxlY3QgKGcvMik6Om51bWVy aWMgYXMgYzEsIGFycmF5X2FnZyhnOjpudW1lcmljKSBhcyBjMiwgY291bnQoKikgYXMgYzMKIC0t IFByb2R1Y2UgcmVzdWx0cyB3aXRoIGhhc2ggYWdncmVnYXRpb24KIAogc2V0IGVuYWJsZV9oYXNo YWdnID0gdHJ1ZTsKLXNldCBlbmFibGVfc29ydCA9IGZhbHNlOworc2V0IGVuYWJsZV9ncm91cGFn ZyA9IGZhbHNlOwogCiBzZXQgaml0X2Fib3ZlX2Nvc3QgPSAwOwogCkBAIC0xNzY5LDcgKzE3Njks NyBAQCBjcmVhdGUgdGFibGUgYWdnX2hhc2hfNCBhcwogc2VsZWN0IChnLzIpOjpudW1lcmljIGFz IGMxLCBhcnJheV9hZ2coZzo6bnVtZXJpYykgYXMgYzIsIGNvdW50KCopIGFzIGMzCiAgIGZyb20g YWdnX2RhdGFfMmsgZ3JvdXAgYnkgZy8yOwogCi1zZXQgZW5hYmxlX3NvcnQgPSB0cnVlOworc2V0 IGVuYWJsZV9ncm91cGFnZyA9IHRydWU7CiBzZXQgd29ya19tZW0gdG8gZGVmYXVsdDsKIAogLS0g Q29tcGFyZSBncm91cCBhZ2dyZWdhdGlvbiByZXN1bHRzIHRvIGhhc2ggYWdncmVnYXRpb24gcmVz dWx0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JvdXBpbmdzZXRzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyb3VwaW5nc2V0cy5zcWwKaW5kZXggYTU5NDQ0OWI2OTcu LmM1ZDRlZDJlYjU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ncm91cGluZ3Nl dHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyb3VwaW5nc2V0cy5zcWwKQEAgLTU4 Myw3ICs1ODMsNyBAQCB1cGRhdGUgcGdfY2xhc3Mgc2V0IHJlbHR1cGxlcyA9IDEwIHdoZXJlIHJl bG5hbWU9J2J1Z18xNjc4NCc7CiBpbnNlcnQgaW50byBidWdfMTY3ODQgc2VsZWN0IGcvMTAsIGcg ZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw0MCkgZzsKIAogc2V0IHdvcmtfbWVtPSc2NGtCJzsKLXNl dCBlbmFibGVfc29ydCA9IGZhbHNlOworc2V0IGVuYWJsZV9ncm91cGFnZyA9IGZhbHNlOwogCiBz ZWxlY3QgKiBmcm9tCiAgICh2YWx1ZXMgKDEpLCgyKSkgdihhKSwKQEAgLTYwOSw3ICs2MDksNyBA QCBzZXQgd29ya19tZW09JzY0a0InOwogCiAtLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5n LgogCi1zZXQgZW5hYmxlX3NvcnQgPSB0cnVlOworc2V0IGVuYWJsZV9ncm91cGFnZyA9IHRydWU7 CiBzZXQgZW5hYmxlX2hhc2hhZ2cgPSBmYWxzZTsKIHNldCBqaXRfYWJvdmVfY29zdCA9IDA7CiAK QEAgLTYyNCw3ICs2MjQsNyBAQCBmcm9tIGdzX2RhdGFfMSBncm91cCBieSBjdWJlIChnMTAwMCwg ZzEwMCxnMTApOwogLS0gUHJvZHVjZSByZXN1bHRzIHdpdGggaGFzaCBhZ2dyZWdhdGlvbi4KIAog c2V0IGVuYWJsZV9oYXNoYWdnID0gdHJ1ZTsKLXNldCBlbmFibGVfc29ydCA9IGZhbHNlOworc2V0 IGVuYWJsZV9ncm91cGFnZyA9IGZhbHNlOwogCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3Qg ZzEwMCwgZzEwLCBzdW0oZzo6bnVtZXJpYyksIGNvdW50KCopLCBtYXgoZzo6dGV4dCkKQEAgLTYz NCw3ICs2MzQsNyBAQCBjcmVhdGUgdGFibGUgZ3NfaGFzaF8xIGFzCiBzZWxlY3QgZzEwMCwgZzEw LCBzdW0oZzo6bnVtZXJpYyksIGNvdW50KCopLCBtYXgoZzo6dGV4dCkKIGZyb20gZ3NfZGF0YV8x IGdyb3VwIGJ5IGN1YmUgKGcxMDAwLCBnMTAwLGcxMCk7CiAKLXNldCBlbmFibGVfc29ydCA9IHRy dWU7CitzZXQgZW5hYmxlX2dyb3VwYWdnID0gdHJ1ZTsKIHNldCB3b3JrX21lbSB0byBkZWZhdWx0 Owogc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgdG8gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIu c3FsCmluZGV4IGQyOGVkMWMxZTg1Li5kNGU4ZDdkOGM5ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNx bApAQCAtOTI3LDEzICs5MjcsMTMgQEAgU0VMRUNUIGNvdW50KGRpc3RpbmN0IGopIEZST00gdGVz dGpzb25iOwogU0VUIGVuYWJsZV9oYXNoYWdnID0gb2ZmOwogU0VMRUNUIGNvdW50KCopIEZST00g KFNFTEVDVCBqIEZST00gKFNFTEVDVCAqIEZST00gdGVzdGpzb25iIFVOSU9OIEFMTCBTRUxFQ1Qg KiBGUk9NIHRlc3Rqc29uYikganMgR1JPVVAgQlkgaikganMyOwogU0VUIGVuYWJsZV9oYXNoYWdn ID0gb247Ci1TRVQgZW5hYmxlX3NvcnQgPSBvZmY7CitTRVQgZW5hYmxlX2dyb3VwYWdnID0gb2Zm OwogU0VMRUNUIGNvdW50KCopIEZST00gKFNFTEVDVCBqIEZST00gKFNFTEVDVCAqIEZST00gdGVz dGpzb25iIFVOSU9OIEFMTCBTRUxFQ1QgKiBGUk9NIHRlc3Rqc29uYikganMgR1JPVVAgQlkgaikg anMyOwogU0VMRUNUIGRpc3RpbmN0ICogRlJPTSAodmFsdWVzIChqc29uYiAne30nIHx8ICcnOjp0 ZXh0KSwoJ3t9JykpIHYoaik7Ci1TRVQgZW5hYmxlX3NvcnQgPSBvbjsKK1NFVCBlbmFibGVfZ3Jv dXBhZ2cgPSBvbjsKIAogUkVTRVQgZW5hYmxlX2hhc2hhZ2c7Ci1SRVNFVCBlbmFibGVfc29ydDsK K1JFU0VUIGVuYWJsZV9ncm91cGFnZzsKIAogRFJPUCBJTkRFWCBqaWR4OwogRFJPUCBJTkRFWCBq aWR4X2FycmF5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5 cGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKaW5kZXgg ZGRmZjcyMmIyOGMuLmNmMGZmZjZmZGRkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9tdWx0aXJhbmdldHlwZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFu Z2V0eXBlcy5zcWwKQEAgLTg2MiwxMSArODYyLDExIEBAIGRyb3AgdHlwZSB0d29faW50cyBjYXNj YWRlOwogLS0gQ2hlY2sgYmVoYXZpb3Igd2hlbiBzdWJ0eXBlIGxhY2tzIGEgaGFzaCBmdW5jdGlv bgogLS0KIAotc2V0IGVuYWJsZV9zb3J0ID0gb2ZmOyAgLS0gdHJ5IHRvIG1ha2UgaXQgcGljayBh IGhhc2ggc2V0b3AgaW1wbGVtZW50YXRpb24KK3NldCBlbmFibGVfZ3JvdXBhZ2cgPSBvZmY7ICAt LSB0cnkgdG8gbWFrZSBpdCBwaWNrIGEgaGFzaCBzZXRvcCBpbXBsZW1lbnRhdGlvbgogCiBzZWxl Y3QgJ3soMDEsMTApfSc6OnZhcmJpdG11bHRpcmFuZ2UgZXhjZXB0IHNlbGVjdCAneygxMCwxMSl9 Jzo6dmFyYml0bXVsdGlyYW5nZTsKIAotcmVzZXQgZW5hYmxlX3NvcnQ7CityZXNldCBlbmFibGVf Z3JvdXBhZ2c7CiAKIC0tCiAtLSBPVVQvSU5PVVQvVEFCTEUgZnVuY3Rpb25zCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3JhbmdldHlwZXMuc3FsCmluZGV4IDVjNGIwMzM3YjdhLi5kYmZlMGQwNDlkYSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKQEAgLTU4NywxMSArNTg3LDExIEBAIGRyb3AgdHlw ZSB0d29faW50cyBjYXNjYWRlOwogCiBjcmVhdGUgdHlwZSB2YXJiaXRyYW5nZSBhcyByYW5nZSAo c3VidHlwZSA9IHZhcmJpdCk7CiAKLXNldCBlbmFibGVfc29ydCA9IG9mZjsgIC0tIHRyeSB0byBt YWtlIGl0IHBpY2sgYSBoYXNoIHNldG9wIGltcGxlbWVudGF0aW9uCitzZXQgZW5hYmxlX2dyb3Vw YWdnID0gb2ZmOyAgLS0gdHJ5IHRvIG1ha2UgaXQgcGljayBhIGhhc2ggc2V0b3AgaW1wbGVtZW50 YXRpb24KIAogc2VsZWN0ICcoMDEsMTApJzo6dmFyYml0cmFuZ2UgZXhjZXB0IHNlbGVjdCAnKDEw LDExKSc6OnZhcmJpdHJhbmdlOwogCi1yZXNldCBlbmFibGVfc29ydDsKK3Jlc2V0IGVuYWJsZV9n cm91cGFnZzsKIAogLS0KIC0tIE9VVC9JTk9VVC9UQUJMRSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9kaXN0aW5jdC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zZWxlY3RfZGlzdGluY3Quc3FsCmluZGV4IDUwYWM3ZGRlMzk2Li4yZWQxNjE2YjA5 OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0X2Rpc3RpbmN0LnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3RfZGlzdGluY3Quc3FsCkBAIC04MSw3ICs4 MSw3IEBAIFNFVCBlbmFibGVfaGFzaGFnZz1UUlVFOwogCiAtLSBQcm9kdWNlIHJlc3VsdHMgd2l0 aCBoYXNoIGFnZ3JlZ2F0aW9uLgogCi1TRVQgZW5hYmxlX3NvcnQ9RkFMU0U7CitTRVQgZW5hYmxl X2dyb3VwYWdnPUZBTFNFOwogCiBTRVQgaml0X2Fib3ZlX2Nvc3Q9MDsKIApAQCAtOTYsNyArOTYs NyBAQCBTRVQgaml0X2Fib3ZlX2Nvc3QgVE8gREVGQVVMVDsKIENSRUFURSBUQUJMRSBkaXN0aW5j dF9oYXNoXzIgQVMKIFNFTEVDVCBESVNUSU5DVCAoZyUxMDAwKTo6dGV4dCBGUk9NIGdlbmVyYXRl X3NlcmllcygwLDk5OTkpIGc7CiAKLVNFVCBlbmFibGVfc29ydD1UUlVFOworU0VUIGVuYWJsZV9n cm91cGFnZz1UUlVFOwogCiBTRVQgd29ya19tZW0gVE8gREVGQVVMVDsKIApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2VsZWN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3N1YnNlbGVjdC5zcWwKaW5kZXggMWEwMmMzZjg2YzAuLjVjOGUyNGViNmRiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzZWxlY3Quc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3N1YnNlbGVjdC5zcWwKQEAgLTczMCw3ICs3MzAsNyBAQCB3aGVyZSBvLnRlbiA9IDA7 CiAtLSBUZXN0IHJlc2NhbiBvZiBhIGhhc2hlZCBTZXRPcCBub2RlCiAtLQogYmVnaW47Ci1zZXQg bG9jYWwgZW5hYmxlX3NvcnQgPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX2dyb3VwYWdnID0gb2Zm OwogCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgY291bnQoKikgZnJvbQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdW5pb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv dW5pb24uc3FsCmluZGV4IDA3OGM4NTg0MjlmLi5mODE0YWRlNDVhNyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdW5pb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Vu aW9uLnNxbApAQCAtMTM1LDEzICsxMzUsMTMgQEAgc2VsZWN0IGNvdW50KCopIGZyb20KICAgKCBz ZWxlY3QgdW5pcXVlMSBmcm9tIHRlbmsxIGludGVyc2VjdCBzZWxlY3QgZml2ZXRob3VzIGZyb20g dGVuazEgKSBzczsKIAogLS0gdGhpcyBxdWVyeSB3aWxsIHByZWZlciBhIHNvcnRlZCBzZXRvcCB1 bmxlc3Mgd2UgZm9yY2UgaXQuCi1zZXQgZW5hYmxlX2luZGV4c2NhbiB0byBvZmY7CitzZXQgZW5h YmxlX2dyb3VwYWdnIHRvIG9mZjsKIAogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0IHVuaXF1 ZTEgZnJvbSB0ZW5rMSBleGNlcHQgc2VsZWN0IHVuaXF1ZTIgZnJvbSB0ZW5rMSB3aGVyZSB1bmlx dWUyICE9IDEwOwogc2VsZWN0IHVuaXF1ZTEgZnJvbSB0ZW5rMSBleGNlcHQgc2VsZWN0IHVuaXF1 ZTIgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUyICE9IDEwOwogCi1yZXNldCBlbmFibGVfaW5kZXhz Y2FuOworcmVzZXQgZW5hYmxlX2dyb3VwYWdnOwogCiAtLSB0aGUgaGFzaGVkIGltcGxlbWVudGF0 aW9uIGlzIHNlbnNpdGl2ZSB0byBjaGlsZCBwbGFucycgdHVwbGUgc2xvdCB0eXBlcwogZXhwbGFp biAoY29zdHMgb2ZmKQpAQCAtMzIxLDE0ICszMjEsMTQgQEAgc2VsZWN0IGV4Y2VwdCBzZWxlY3Q7 CiAKIC0tIGNoZWNrIGhhc2hlZCBpbXBsZW1lbnRhdGlvbgogc2V0IGVuYWJsZV9oYXNoYWdnID0g dHJ1ZTsKLXNldCBlbmFibGVfc29ydCA9IGZhbHNlOworc2V0IGVuYWJsZV9ncm91cGFnZyA9IGZh bHNlOwogCi0tLSBXZSd2ZSBubyB3YXkgdG8gY2hlY2sgaGFzaGVkIFVOSU9OIGFzIHRoZSBlbXB0 eSBwYXRoa2V5cyBpbiB0aGUgQXBwZW5kIGFyZQotLS0gZmluZSB0byBtYWtlIHVzZSBvZiBVbmlx dWUsIHdoaWNoIGlzIGNoZWFwZXIgdGhhbiBIYXNoQWdncmVnYXRlIGFuZCB3ZSd2ZQotLS0gbm8g bWVhbnMgdG8gZGlzYWJsZSBVbmlxdWUuCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSB1bmlvbiBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwzKTsKIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCBmcm9tIGdlbmVyYXRlX3Nlcmllcygx LDUpIGludGVyc2VjdCBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwzKTsKIAorc2VsZWN0 IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgdW5pb24gc2VsZWN0IGZyb20gZ2VuZXJhdGVfc2Vy aWVzKDEsMyk7CiBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSB1bmlvbiBhbGwgc2Vs ZWN0IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMyk7CiBzZWxlY3QgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSw1KSBpbnRlcnNlY3Qgc2VsZWN0IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMyk7CiBzZWxl Y3QgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBpbnRlcnNlY3QgYWxsIHNlbGVjdCBmcm9tIGdl bmVyYXRlX3NlcmllcygxLDMpOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHNlbGVjdCBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDUpIGV4Y2VwdCBhbGwgc2VsZWN0IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEs Myk7CiAKIC0tIGNoZWNrIHNvcnRlZCBpbXBsZW1lbnRhdGlvbgogc2V0IGVuYWJsZV9oYXNoYWdn ID0gZmFsc2U7Ci1zZXQgZW5hYmxlX3NvcnQgPSB0cnVlOworc2V0IGVuYWJsZV9ncm91cGFnZyA9 IHRydWU7CiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCBmcm9tIGdlbmVyYXRlX3Nlcmll cygxLDUpIHVuaW9uIHNlbGVjdCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDMpOwpAQCAtMzYzLDcg KzM2Myw3IEBAIHdpdGggY3RlIGFzIG5vdCBtYXRlcmlhbGl6ZWQgKHNlbGVjdCBzIGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsNSkgcykKIHNlbGVjdCBmcm9tIGN0ZSB1bmlvbiBzZWxlY3QgZnJvbSBj dGU7CiAKIHJlc2V0IGVuYWJsZV9oYXNoYWdnOwotcmVzZXQgZW5hYmxlX3NvcnQ7CityZXNldCBl bmFibGVfZ3JvdXBhZ2c7CiAKIC0tCiAtLSBDaGVjayBoYW5kbGluZyBvZiBhIGNhc2Ugd2l0aCB1 bmtub3duIGNvbnN0YW50cy4gIFdlIGRvbid0IGd1YXJhbnRlZQotLSAKMi4zOS41IChBcHBsZSBH aXQtMTU0KQoK --0000000000003090bb06550b732a--