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 1wfUjs-005U3W-1x for pgsql-bugs@arkaria.postgresql.org; Fri, 03 Jul 2026 03:38:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wfUjr-004vsa-16 for pgsql-bugs@arkaria.postgresql.org; Fri, 03 Jul 2026 03:38:51 +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 1wfUjq-004vsS-2H for pgsql-bugs@lists.postgresql.org; Fri, 03 Jul 2026 03:38:51 +0000 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wfUjn-00000001HBG-1Vnp for pgsql-bugs@lists.postgresql.org; Fri, 03 Jul 2026 03:38:49 +0000 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45fd464d51fso44935f8f.3 for ; Thu, 02 Jul 2026 20:38:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783049926; cv=none; d=google.com; s=arc-20260327; b=hjp7imbUsC4vmaUnhvVSd22KCdU7Ix8g4zbTckosoGKA6yUIkA2HORv5tTKW53XGmu DG1wEu1mKqYEa/zkH5QGyJ+diLX4il8QNG+4oAYh28Dtw84yL7JFYAYVIfrlPM1OHqJi jPzxzotcLS1HPvaQXTJseJBVdhUHGxoj5PXTENKO1T0Wxd93C/QUt/6xMQGuRFp7kH1o rdmePky0ey0DkIuNNwBuukaD72mGGig22wkRf+ANy+cbYMh+WPdpNgMEfFEjTkxiY4yH uLAIeEpAewXE3NIXVtlU44UqtPZGT13KwMr/5eSNGlK3aJLIKpdRy+oGgTJ7LI84lFUD lJaA== 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=y9j8JSBvHiza+f9izskEgsHyZG7mTbhyLHEq4VJdkzI=; fh=uWPnNFp2ahempj80GHar1ZKM0QjlyMFlJQHP/Pp3gNI=; b=NiC5bYn4udPk5N5ocMNXQMo0Do+2DA54h99qNfGmt9uTikZjecJCB3MGdjASWmH2VL YkzfHzRC4Aq+TDxu70sJiGguQEdtCt1r064/4Bk6tQvrwGDB8pAJueD78gkFYm1bJKvr SVBXrKds/+V0sytr1IvEZ5OVGgl8irg0mKP5ctXpPeHzo5CP4IWaIwu6EttwT3TTQ8A4 +pyfTFgCquuYA9ZPqJV2+ePBttYnjokgmgUM7QYwBn1HHAhSUMZeS+w1a4q59mSqlsbW WQGDjTfw9nhG5lP9n5uPnUpaYxiWMB6Ft8GGKH05zXZ6KTxVgbMrCvggXeKIG8mCaSSy lebQ==; 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=1783049926; x=1783654726; 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=y9j8JSBvHiza+f9izskEgsHyZG7mTbhyLHEq4VJdkzI=; b=Juc9duzglEw+476//T50hoQNtI1ZxIOD2Y5RPQKOaD3oBb+WWUcZ5T70yQwsZqZmMQ MyYUB9pkfPiLrK69hO35PfBJjX9UXySo5m8HNedc70CMnwSy4l7yirhXl0llVnmVkbrw Rytgq+uv7lWE+uP4jsPXa/OtVwL8t2uJS4tioQlmTkRuruKMHOmxHRxpMu61/Kt3YiE5 y3XVAZv8ZBQOdWdYA3cuzATnj5I0UD+0GCHnC1WGYBwsTkAYMPCsOX7JdD0Ao4QvX8WW 2I23IlXtpszUZs8rpQwm+gfXUfoQ98Ssys3xArcLN7sKte005F4EBh8tQQfi7FVy3nec L37g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783049926; x=1783654726; 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=y9j8JSBvHiza+f9izskEgsHyZG7mTbhyLHEq4VJdkzI=; b=qWSqwnsZp+rvBEZhBaxzzzwoIaERWS/qJSg0rmuJ4CJuirP3iOuXEGR/suYLTdnW3y +Pg+2rqxsaK5002JWrGOG03SF04y8LYXJ9AthlawilypNW5bGFegUdoe5husqCuEUkUl ffI0NkYxOb71O+vrAth5dLtS/ThFd66knz0HC/In1bcxFILrB/U55R1ow5anhceIK+eb Oo9iefDH5NOe92lvjsZgBKBoI8AJXsQpmlWmEgoshZOeu0UEWJL6vs+FbPJ36Zo/89+X orNRdq2L7x7X/kKEbzBpRsWs+r+OzeBdfO1DJcHGO4WPo1wj1cGBDg6Voue3R1GFiyII y21g== X-Forwarded-Encrypted: i=1; AHgh+Rp4N72G+HVch2iHcdNvN4LqCbV+q5URqhlu+UqdHLJcoUNo+CpgiKzouYw8xR4M5ARWKS9ll37kHlQi@lists.postgresql.org X-Gm-Message-State: AOJu0Yx73xYW1eCjvRlqC4PyebHi4ALegojtwjy3ibcpwL0VKawqeTtk b7hLEmEvWJZ3qixjPYAzqbFBNIdUSdHvhj6J6kTVU+zdN6wgiS5lTfdxCKjn3xaoC7MVKZ4JeoT KaRbVUmwoULJRwWYtjN9eilAjewyT6SXzB75j X-Gm-Gg: AfdE7clsSr1IB4Uj2Ps7uYWK4y6Dz10JTMCRllRiY8yobjN0Mn0PQoxLvz8f35FWw6Y +sj1t2EaYE9EWa+OYLp9x0PGW5heIMDooZZZwgu+ESTJHz9gbnSWTF2naJUPiXcS1Ra8CZ9WBt/ ttDIEZtl5GcW9XcX4WQRQI4qRbBELaZ53IoX8Fedm/ZTFPUcoB/b39WtMiCOcNnxBv+yKs7SX1s ZUZUqZSmnTYy430ASL1/Zg/O54Un9S0Q1b4HQw0No3phuns+50s4Th7/1KluVz9/JD0pC5X+Glu qyG5WYeWId7cPk3VHbrWs2g+6xcJteFY0/nudVvNCVyCazhg4tAXGlhVhXWhAg== X-Received: by 2002:a05:6000:1847:b0:475:e3fe:8ac3 with SMTP id ffacd0b85a97d-477574b037dmr13896319f8f.8.1783049925631; Thu, 02 Jul 2026 20:38:45 -0700 (PDT) MIME-Version: 1.0 References: <19533-413a1014e5d0e766@postgresql.org> In-Reply-To: From: David Rowley Date: Fri, 3 Jul 2026 15:38:34 +1200 X-Gm-Features: AVVi8CcZ3m4vkQkQLVUSA6jlPbN8Guj2m5zPcEfVd25Ot70kz7tXR-yCoyXvTRk Message-ID: Subject: Re: BUG #19533: Wrong results from WindowAgg run-condition pushdown on count() with EXCLUDE CURRENT ROW To: Richard Guo Cc: Chengpeng Yan , "imchifan@163.com" , "pgsql-bugs@lists.postgresql.org" Content-Type: multipart/mixed; boundary="0000000000006f34f50655aca9cd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006f34f50655aca9cd Content-Type: text/plain; charset="UTF-8" On Tue, 30 Jun 2026 at 01:44, David Rowley wrote: > I think there are also a few equivalences, such as: > > "order by k rows between unbounded preceding and current row exclude > current row" > > I believe is logically the same as: > > "order by k rows between unbounded preceding and 1 preceding" > > Then, if frame_end was 1 PRECEDING with "GROUPS BETWEEN ...", EXCLUDE > would never see the current row or peer group as the frame ends before > we get to the current group or row. > > Anyway, I'm still trying to decide how to balance this. On one hand, > there's an incentive not to disable this optimisation for cases that > are perfectly safe, and on the other hand, there are lots of variables > here, and "perfectly safe" is a little harder to fathom than I'd like > for a bug fix. I'm also not keen on adding very complex and > hard-to-follow logic to the support function. If we can allow a few > more cases but do so as a result of boiling down the logic into > something simpler, then I'd likely be more in favour of covering some > extra cases. > > I'll continue to look at this. I've been playing around with the attached. It doesn't get all the cases that are ok. For example, in theory, I believe 0 FOLLOWING is the same as CURRENT ROW for the frame_end. I've not made that work exactly the same as I don't have the same wfunc->winfnoid == F_COUNT_ANY check that I added to CURRENT ROW for 0 FOLLOWING. I was trying to strike some sort of balance between not regressing things unnecessarily and having to add too much code for cases that are unlikely ever to be used. As far as I'm aware, for GROUPS and ROWS mode, 0 FOLLOWING is the same as CURRENT ROW, so I suspect most people would just use CURRENT ROW. It's a little hard for me to know what to do here, as I really don't know how commonly people use the EXCLUDE clause, and more so, how often the Run Condition optimisation will apply when those are used. It would be good to have an idea if the bug discovery was from a real-world case, or if it was discovered from tooling, or from looking at the code. Does anyone think we should cover more or fewer cases? Or see any problems with this patch? David --0000000000006f34f50655aca9cd Content-Type: text/plain; charset="US-ASCII"; name="v1-0001-Fix-COUNT-s-logic-for-window-run-condition-suppor.patch" Content-Disposition: attachment; filename="v1-0001-Fix-COUNT-s-logic-for-window-run-condition-suppor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr4dn7qq0 RnJvbSBkMTg3NGUzZjE4NDI0MGZmOTQ5OGMzNWFlN2JmZDYwNzJkNTA0ZDI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAzIEp1bCAyMDI2IDE0OjE3OjQyICsxMjAwClN1YmplY3Q6IFtQQVRDSCB2MV0gRml4 IENPVU5UJ3MgbG9naWMgZm9yIHdpbmRvdyBydW4gY29uZGl0aW9uIHN1cHBvcnQKCjlkOWMwMmNj ZCBhZGRlZCBjb2RlIHRvIGFsbG93IHRoZSBleGVjdXRvciB0byBzdG9wIGVhcmx5IHdoZW4gcHJv Y2Vzc2luZwpXaW5kb3dBZ2cgbm9kZXMgd2hlcmUgYSBtb25vdG9uaWMgd2luZG93IGZ1bmN0aW9u IHN0YXJ0cyBwcm9kdWNpbmcKdmFsdWVzIHRoYXQgcmVzdWx0IGluIGEgcHVzaGVkLWRvd24gcXVh bCBubyBsb25nZXIgbWF0Y2hpbmcsIGFuZCB3aWxsCm5ldmVyIG1hdGNoIGFnYWluIGR1ZSB0byB0 aGUgd2luZG93IGZ1bmN0aW9uJ3MgbW9ub3RvbmljIHByb3BlcnRpZXMuCgpUaGF0IGNvbW1pdCBy ZXF1aXJlcyBhIFN1cHBvcnRSZXF1ZXN0V0Z1bmNNb25vdG9uaWMgdG8gZXhpc3Qgb24gdGhlCndp bmRvdyBmdW5jdGlvbiBhbmQgZm9yIGl0IHRvIGRldGVjdCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBt b25vdG9uaWMuICBGb3IKQ09VTlQoQU5ZKSBhbmQgQ09VTlQoKiksIHRoZSBzdXBwb3J0IGZ1bmN0 aW9uIGZhaWxlZCB0byBjb25zaWRlciBzb21lCmNhc2VzIHdoZXJlIHRoZSBXaW5kb3dDbGF1c2Ug dXNlZCBFWENMVURFIHRvIGV4Y2x1ZGUgY2VydGFpbiByb3dzIGZyb20KYmVpbmcgYWdncmVnYXRl ZC4gIFNvbWUgV2luZG93Q2xhdXNlIGRlZmluaXRpb25zIG1lYW4gd2UgYWdncmVnYXRlIHJvd3MK dGhhdCBjb21lIGFmdGVyIHRoZSBjdXJyZW50IHJvdywgYW5kIHdoZW4gcHJvY2Vzc2luZyB0aG9z ZSByb3dzIGxhdGVyLAppZiB3ZSBFWENMVURFIGNlcnRhaW4gcm93cywgdGhlIG1vbm90b25pYyBw cm9wZXJ0eSBjYW4gYmUgYnJva2VuLgoKSGVyZSwgd2UgZGlzYWJsZSB0aGUgIlJ1biBDb25kaXRp b24iIHB1c2hkb3duIG9wdGltaXphdGlvbiBmb3IgQ09VTlQoQU5ZKQphbmQgQ09VTlQoKikgd2hl biB0aGUgd2luZG93IGNsYXVzZSBoYXMgYW4gRVhDTFVERSBjbGF1c2UgYW5kIHRoZQpwcm9wZXJ0 aWVzIG9mIHRoYXQgY2xhdXNlLCBwbHVzIHRoZSBmcmFtZSBib3VuZHMgcmVzdWx0IGluIHRoZSBt b25vdG9uaWMKcHJvcGVydGllcyBub3QgYmVpbmcgZ3VhcmFudGVlZC4KCkJ1ZzogIzE5NTMzClJl cG9ydGVkLWJ5OiBRaWZhbiBMaXUgPGltY2hpZmFuQDE2My5jb20+CkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vMTk1MzMtNDEzYTEwMTRlNWQwZTc2NkBwb3N0Z3Jlc3FsLm9yZwotLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMgICAgICAgICB8IDEwMSArKysrKystCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQgfCA0MzYgKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsICAgICAgfCAyMTUgKysr KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA3NTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvaW50OC5jCmluZGV4IDliNDI5ZGE4NmQ5Li5lMTRhYTc1MTQ3OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvaW50OC5jCkBAIC03OTUsNyArNzk1LDEwNiBAQCBpbnQ4aW5jX3N1cHBvcnQoUEdf RlVOQ1RJT05fQVJHUykKIAkJTW9ub3RvbmljRnVuY3Rpb24gbW9ub3RvbmljID0gTU9OT1RPTklD RlVOQ19OT05FOwogCQlpbnQJCQlmcmFtZU9wdGlvbnMgPSByZXEtPndpbmRvd19jbGF1c2UtPmZy YW1lT3B0aW9uczsKIAotCQkvKiBObyBPUkRFUiBCWSBjbGF1c2UgdGhlbiBhbGwgcm93cyBhcmUg cGVlcnMgKi8KKwkJLyoKKwkJICogV2hlbiB0aGUgZnJhbWUgb3B0aW9ucyBoYXMgYW4gRVhDTFVE RSBjbGF1c2UsIHRoaXMgY2FuIGFmZmVjdCB0aGUKKwkJICogbW9ub3RvbmljIGd1YXJhbnRlZXMu ICBWYXJpb3VzIGNhc2VzIGFyZSBoYW5kbGVkIG9yIHJlamVjdGVkIGJlbG93LgorCQkgKi8KKwkJ aWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVU0lPTikKKwkJeworCQkJV2luZG93 RnVuYyAqd2Z1bmMgPSByZXEtPndpbmRvd19mdW5jOworCisJCQlpZiAoZnJhbWVPcHRpb25zICYg RlJBTUVPUFRJT05fRU5EX09GRlNFVF9QUkVDRURJTkcpCisJCQl7CisJCQkJTm9kZQkgICAqZW5k T2Zmc2V0ID0gcmVxLT53aW5kb3dfY2xhdXNlLT5lbmRPZmZzZXQ7CisKKwkJCQkvKgorCQkJCSAq IFJPV1MgbW9kZSB3aXRoIEVYQ0xVREUgQ1VSUkVOVCBST1cgaXMgZmluZSwgYXMgdGhlIGNvdW50 CisJCQkJICogY2Fubm90IGluY2x1ZGUgcm93cyBiZXlvbmQgdGhlIGN1cnJlbnQgcm93LiAgV2l0 aCBHUk9VUFMgb3IKKwkJCQkgKiBSQU5HRSwgcGVlciByb3dzIHdvdWxkIGJlIGluY2x1ZGVkIGFu ZCB0aG9zZSBwZWVycyBjb3VsZCBiZQorCQkJCSAqIGFmdGVyIHRoZSBjdXJyZW50IHJvdy4KKwkJ CQkgKi8KKwkJCQlpZiAoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fUk9XUyAmJgorCQkJCQlm cmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FWENMVURFX0NVUlJFTlRfUk9XKQorCQkJCXsKKwkJ CQkJLyogQWxsb3dlZCAqLworCQkJCX0KKworCQkJCS8qCisJCQkJICogT3RoZXJ3aXNlLCBFWENM VURFIGlzIGZpbmUgd2hlbiBpbiBHUk9VUFMgb3IgUk9XUyBtb2RlIHdoZW4KKwkJCQkgKiB3ZSBo YXZlIGFuIGFib3ZlIHplcm8gQ29uc3QgaW4gdGhlIE4gUFJFQ0VESU5HLiAgVGhpcyBtZWFucwor CQkJCSAqIGFsbCB0aGUgd291bGQtYmUtZXhjbHVkZWQgcm93cyBhcmUgbmV2ZXIgaW4gdGhlIGZy YW1lJ3MKKwkJCQkgKiBzY29wZS4gIFdlIGFsbG93IGFueSB2YWx1ZSBvZiBQUkVDRURJTkcsIGlu Y2x1ZGluZworCQkJCSAqIG5vbi1jb25zdHMgd2hlbiBFWENMVURFIEdST1VQIGlzIHVzZWQsIGFz IGVmZmVjdGl2ZWx5CisJCQkJICogdGhhdCdzIDEgUFJFQ0VESU5HLiAgVGhlIGV4ZWN1dG9yIGVu c3VyZXMgdGhlIHZhbHVlIGlzCisJCQkJICogbmV2ZXIgbmVnYXRpdmUuICBSYW5nZSBtb2RlIGlz IGRpc2FsbG93ZWQgYXMgdGhlIGVuZE9mZnNldAorCQkJCSAqIGhhcyBhIGRpZmZlcmVudCBwdXJw b3NlLgorCQkJCSAqLworCQkJCWVsc2UgaWYgKChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9F WENMVURFX0dST1VQKSA9PSAwKQorCQkJCXsKKwkJCQkJZW5kT2Zmc2V0ID0gZXZhbF9jb25zdF9l eHByZXNzaW9ucyhOVUxMLCBlbmRPZmZzZXQpOworCisJCQkJCWlmIChmcmFtZU9wdGlvbnMgJiBG UkFNRU9QVElPTl9SQU5HRSB8fAorCQkJCQkJIUlzQShlbmRPZmZzZXQsIENvbnN0KSB8fCBjYXN0 Tm9kZShDb25zdCwgZW5kT2Zmc2V0KS0+Y29uc3Rpc251bGwgfHwKKwkJCQkJCURhdHVtR2V0SW50 NjQoY2FzdE5vZGUoQ29uc3QsIGVuZE9mZnNldCktPmNvbnN0dmFsdWUpIDw9IDApCisJCQkJCXsK KwkJCQkJCXJlcS0+bW9ub3RvbmljID0gTU9OT1RPTklDRlVOQ19OT05FOworCQkJCQkJUEdfUkVU VVJOX1BPSU5URVIocmVxKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJZWxzZSBpZiAoZnJh bWVPcHRpb25zICYgRlJBTUVPUFRJT05fRU5EX0NVUlJFTlRfUk9XKQorCQkJeworCQkJCS8qCisJ CQkJICogV2hlbiB0aGUgZnJhbWUgZW5kcyBhdCBDVVJSRU5UIFJPVywgd2UgbXVzdCBkaXNhbGxv dworCQkJCSAqIENPVU5UKEFOWSkgd2hlbiBpbiBSQU5HRSBvciBHUk9VUFMgbW9kZSB1bmxlc3Mg d2UncmUKKwkJCQkgKiBleGNsdWRpbmcgdGhlIGVudGlyZSBwZWVyIGdyb3VwLiAgU29tZSB2YWx1 ZXMgYmVpbmcgY291bnRlZAorCQkJCSAqIG1heSBiZSBOVUxMLCB3aGljaCBjb3VsZCByZXN1bHQg aW4gdGhlIGNvdW50IGdvaW5nIHVwIHdpdGgKKwkJCQkgKiBFWENMVURFIENVUlJFTlQgUk9XLCBv ciBkb3duIHdpdGggRVhDTFVERSBUSUVTLiAgUk9XUyBtb2RlCisJCQkJICogaXMgZmluZSBhcyB0 aGUgY291bnQgZG9lc24ndCBpbmNsdWRlIHBlZXIgcm93cyBhaGVhZCBvZiB0aGUKKwkJCQkgKiBj dXJyZW50IHJvdy4KKwkJCQkgKi8KKwkJCQlpZiAod2Z1bmMtPndpbmZub2lkID09IEZfQ09VTlRf QU5ZICYmCisJCQkJCWZyYW1lT3B0aW9ucyAmIChGUkFNRU9QVElPTl9SQU5HRSB8IEZSQU1FT1BU SU9OX0dST1VQUykgJiYKKwkJCQkJZnJhbWVPcHRpb25zICYgKEZSQU1FT1BUSU9OX0VYQ0xVREVf Q1VSUkVOVF9ST1cgfCBGUkFNRU9QVElPTl9FWENMVURFX1RJRVMpKQorCQkJCXsKKwkJCQkJcmVx LT5tb25vdG9uaWMgPSBNT05PVE9OSUNGVU5DX05PTkU7CisJCQkJCVBHX1JFVFVSTl9QT0lOVEVS KHJlcSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBDT1VOVCgqKSBkb2Vzbid0IGhhdmUgdGhl IHNhbWUgcHJvYmxlbSBhcyBDT1VOVChBTlkpIHNpbmNlCisJCQkJICogcm93cyBpbiB0aGUgcGVl ciBncm91cCBhcmUgYWx3YXlzIGNvdW50ZWQgd2l0aCBHUk9VUFMgYW5kCisJCQkJICogUkFOR0Ug bW9kZXMsIGFuZCBhbGwgdGhlIEVYQ0xVREUgb3B0aW9ucyBhbHdheXMgZXhjbHVkZSB0aGUKKwkJ CQkgKiBzYW1lIG51bWJlciBvZiByb3dzLCBqdXN0IG5vdCBhbHdheXMgdGhlIHNhbWUgcm93cy4K KwkJCQkgKi8KKwkJCX0KKworCQkJZWxzZSBpZiAoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05f RU5EX09GRlNFVF9GT0xMT1dJTkcpCisJCQl7CisJCQkJTm9kZQkgICAqZW5kT2Zmc2V0ID0gcmVx LT53aW5kb3dfY2xhdXNlLT5lbmRPZmZzZXQ7CisKKwkJCQllbmRPZmZzZXQgPSBldmFsX2NvbnN0 X2V4cHJlc3Npb25zKE5VTEwsIGVuZE9mZnNldCk7CisKKwkJCQkvKgorCQkJCSAqIElmIHRoZSBm cmFtZSBlbmRzIGJleW9uZCB0aGUgY3VycmVudCByb3cgb3IgcGVlciBncm91cCwgd2UKKwkJCQkg KiBjYW4ndCBwcm92ZSBhbnkgbW9ub3RvbmljIHByb3BlcnRpZXMsIGFzIGNvdW50aW5nIHJvd3Mg dGhhdAorCQkJCSAqIG1heSBsYXRlciBiZSBleGNsdWRlZCBieSBFWENMVURFIGNvdWxkIHJlc3Vs dCBpbiB0aGUgY291bnQKKwkJCQkgKiBnb2luZyBkb3duLiAgVGVjaG5pY2FsbHksIHNvbWVvbmUg Y291bGQgd3JpdGUgMCBGT0xMT1dJTkcsCisJCQkJICogd2hpY2ggaXMgdGhlIHNhbWUgYXMgQ1VS UkVOVCBST1cgaW4gR1JPVVBTIG9yIFJPV1MgbW9kZSwgc28KKwkJCQkgKiBkb24ndCBkaXNhbGxv dyB0aGF0LgorCQkJCSAqLworCQkJCWlmIChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9SQU5H RSB8fAorCQkJCQkhSXNBKGVuZE9mZnNldCwgQ29uc3QpIHx8IGNhc3ROb2RlKENvbnN0LCBlbmRP ZmZzZXQpLT5jb25zdGlzbnVsbCB8fAorCQkJCQlEYXR1bUdldEludDY0KGNhc3ROb2RlKENvbnN0 LCBlbmRPZmZzZXQpLT5jb25zdHZhbHVlKSA+IDApCisJCQkJeworCQkJCQlyZXEtPm1vbm90b25p YyA9IE1PTk9UT05JQ0ZVTkNfTk9ORTsKKwkJCQkJUEdfUkVUVVJOX1BPSU5URVIocmVxKTsKKwkJ CQl9CisJCQl9CisJCX0KKworCQkvKiBPdGhlcndpc2UsIG5vIE9SREVSIEJZIGNsYXVzZSBtZWFu cyBhbGwgcm93cyBhcmUgcGVlcnMgKi8KIAkJaWYgKHJlcS0+d2luZG93X2NsYXVzZS0+b3JkZXJD bGF1c2UgPT0gTklMKQogCQkJbW9ub3RvbmljID0gTU9OT1RPTklDRlVOQ19CT1RIOwogCQllbHNl CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQKaW5kZXggOTBkOWY5NTNiODEuLmNlM2Q2 MjkxZDI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0CkBAIC00NDM2LDYgKzQ0 MzYsNDQyIEBAIFdIRVJFIGMgPSAxOwogICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVt cHNhbGFyeQogKDkgcm93cykKIAorLS0KKy0tIEVuc3VyZSB3ZSBnZXQgdGhlIGNvcnJlY3QgYmVo YXZpb3IgZm9yIHJ1biBjb25kaXRpb24gcHVzaGRvd24gd2hlbiB0aGUKKy0tIGZyYW1lIG9wdGlv biBoYXMgYW4gRVhDTFVERSBjbGF1c2UKKy0tCistLSBFbnN1cmUgcHVzaGRvd24gb2NjdXJzIGZv ciAwIFBSRUNFRElORyB3aGVuIHdlIGV4Y2x1ZGUgdGhlIGVudGlyZSBwZWVyIGdyb3VwCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAg ICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBHUk9V UFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAwIFBSRUNFRElORyBFWENMVURFIEdS T1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNh bGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAnMCc6OmJpZ2ludCBQ UkVDRURJTkcgRVhDTFVERSBHUk9VUCkKKyAgIFJ1biBDb25kaXRpb246IChjb3VudCgqKSBPVkVS IHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxh cnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg2IHJvd3MpCisKKy0tIEVu c3VyZSB3ZSBkb24ndCBnZXQgcHVzaGRvd24gd2l0aCBFWENMVURFIENVUlJFTlQgUk9XCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAg ICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBHUk9V UFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAwIFBSRUNFRElORyBFWENMVURFIENV UlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gZW1w CisgICBGaWx0ZXI6IChlbXAuYyA8PSAzKQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2lu ZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJP VU5ERUQgUFJFQ0VESU5HIEFORCAnMCc6OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBDVVJSRU5U IFJPVykKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogZW1wc2Fs YXJ5LnNhbGFyeQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDcg cm93cykKKworLS0gRW5zdXJlIHdlIGRvbid0IGdldCBwdXNoZG93biB3aXRoIEVYQ0xVREUgVElF UworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAor ICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxh cnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMCBQUkVDRURJTkcgRVhD TFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIGVtcAorICAgRmlsdGVyOiAo ZW1wLmMgPD0gMykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdzEgQVMgKE9S REVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgJzAnOjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgVElFUykKKyAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogZW1wc2FsYXJ5LnNhbGFyeQorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDcgcm93cykKKworLS0gRW5zdXJlIHB1 c2hkb3duIG9jY3VycyB3aXRoIDAgUFJFQ0VESU5HIHdoZW4gaW4gUk9XUyBtb2RlIGFuZCBvbmx5 CistLSBleGNsdWRpbmcgdGhlIGN1cnJlbnQgcm93CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAg IGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBS RUNFRElORyBBTkQgMCBQUkVDRURJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBl bXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZworICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBST1dT IEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgJzAnOjpiaWdpbnQgUFJFQ0VESU5HIEVY Q0xVREUgQ1VSUkVOVCBST1cpCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoKikgT1ZFUiB3MSA8 PSAzKQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5Cisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dzKQorCistLSBFWENMVURF IEdST1VQIGlzIGFsc28gZmluZSB0byBwdXNoIGRvd24gdGhlIHJ1biBjb25kaXRpb24gd2l0aCAw IFBSRUNFRElORworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNU IGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRF UiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VE SU5HIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0g MzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVt cHNhbGFyeS5zYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EICcwJzo6 YmlnaW50IFBSRUNFRElORyBFWENMVURFIEdST1VQKQorICAgUnVuIENvbmRpdGlvbjogKGNvdW50 KCopIE9WRVIgdzEgPD0gMykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZW1wc2Fs YXJ5LnNhbGFyeQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDYgcm93cykK KworLS0gRW5zdXJlIHdlIGRvbid0IGRvIHJ1biBjb25kaXRpb24gcHVzaGRvd24gZm9yIEVYQ0xV REUgVElFUworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVt cG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBC WSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VESU5H IEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIGVtcAorICAgRmlsdGVyOiAo ZW1wLmMgPD0gMykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdzEgQVMgKE9S REVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcg QU5EICcwJzo6YmlnaW50IFBSRUNFRElORyBFWENMVURFIFRJRVMpCisgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg3IHJvd3MpCisKKy0tIEVuc3VyZSB0aGUg Zm9sbG93aW5nIDYgdGVzdHMgZG8gcHVzaGRvd24gdGhlIHJ1biBjb25kaXRpb24uCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAg c2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBHUk9VUFMg QkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBSRUNFRElORyBFWENMVURFIEdST1VQ KSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFy eSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAnMSc6OmJpZ2ludCBQUkVD RURJTkcgRVhDTFVERSBHUk9VUCkKKyAgIFJ1biBDb25kaXRpb246IChjb3VudCgqKSBPVkVSIHcx IDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkK KyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg2IHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBz YWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IEdST1VQUyBC RVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDEgUFJFQ0VESU5HIEVYQ0xVREUgQ1VSUkVO VCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBC WSBlbXBzYWxhcnkuc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5E ICcxJzo6YmlnaW50IFBSRUNFRElORyBFWENMVURFIENVUlJFTlQgUk9XKQorICAgUnVuIENvbmRp dGlvbjogKGNvdW50KCopIE9WRVIgdzEgPD0gMykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0 IEtleTogZW1wc2FsYXJ5LnNhbGFyeQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFy eQorKDYgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VM RUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChP UkRFUiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBQ UkVDRURJTkcgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBj IDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVS IEJZIGVtcHNhbGFyeS5zYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBB TkQgJzEnOjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgVElFUykKKyAgIFJ1biBDb25kaXRpb246 IChjb3VudCgqKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6 IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg2 IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBl bXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIg Qlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBSRUNFRElO RyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBj IDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcx IEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJF Q0VESU5HIEFORCAnMSc6OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykKKyAg IFJ1biBDb25kaXRpb246IChjb3VudCgqKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBlbXBzYWxhcnkKKyg2IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZS T00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQo KikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5H IEFORCAxIFBSRUNFRElORyBFWENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1w CitXSEVSRSBjIDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFT IChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VE SU5HIEFORCAnMSc6OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBHUk9VUCkKKyAgIFJ1biBDb25k aXRpb246IChjb3VudCgqKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxh cnkKKyg2IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAo T1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBS RUNFRElORyBFWENMVURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMg PD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBl bXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAnMSc6 OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBUSUVTKQorICAgUnVuIENvbmRpdGlvbjogKGNvdW50 KCopIE9WRVIgdzEgPD0gMykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZW1wc2Fs YXJ5LnNhbGFyeQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDYgcm93cykK KworLS0gRm9yIHRoZSBmb2xsb3dpbmcgNCB0ZXN0cywgZW5zdXJlIHRoZXJlJ3Mgbm8gcHVzaGRv d24gd2l0aCBDT1VOVChBTlkpIHdoZW4KKy0tIGV4Y2x1ZGluZyByb3dzIGZyb20gdGhlIGN1cnJl bnQgcGVlciBncm91cC4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9W RVIgKE9SREVSIEJZIHNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5E IENVUlJFTlQgUk9XIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBl bXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIGVt cAorICAgRmlsdGVyOiAoZW1wLmMgPD0gMykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdp bmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgUkFOR0UgQkVUV0VFTiBVTkJP VU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENMVURFIENVUlJFTlQgUk9XKQorICAg ICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5 CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNyByb3dzKQorCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAg ICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChPUkRFUiBCWSBzYWxh cnkgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENM VURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U3VicXVlcnkgU2NhbiBvbiBlbXAKKyAgIEZpbHRlcjogKGVtcC5jIDw9IDMpCisgICAtPiAgV2lu ZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5 IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVE RSBUSUVTKQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBlbXBz YWxhcnkuc2FsYXJ5CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5Ciso NyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1Qg ZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChP UkRFUiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VS UkVOVCBST1cgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAor V0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiBlbXAK KyAgIEZpbHRlcjogKGVtcC5jIDw9IDMpCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5k b3c6IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9V TkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgQ1VSUkVOVCBST1cpCisgICAg ICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg3IHJvd3MpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAg ICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFy eSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENM VURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTdWJxdWVyeSBTY2FuIG9uIGVtcAorICAgRmlsdGVyOiAoZW1wLmMgPD0gMykKKyAgIC0+ICBX aW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxh cnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhD TFVERSBUSUVTKQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBl bXBzYWxhcnkuc2FsYXJ5CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5 CisoNyByb3dzKQorCistLSBFbnN1cmUgdGhlIGZvbGxvd2luZyAyIHRlc3RzIHB1c2ggZG93biB0 aGUgcnVuIGNvbmRpdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAo U0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBubykg T1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBB TkQgQ1VSUkVOVCBST1cgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAor V0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5 LnNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9X IEVYQ0xVREUgR1JPVVApCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoZW1wc2FsYXJ5LmVtcG5v KSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFy eS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg2IHJvd3MpCisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAg ICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNh bGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBF WENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgR1JPVVBT IEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBHUk9V UCkKKyAgIFJ1biBDb25kaXRpb246IChjb3VudChlbXBzYWxhcnkuZW1wbm8pIE9WRVIgdzEgPD0g MykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZW1wc2FsYXJ5LnNhbGFyeQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDYgcm93cykKKworLS0gRW5zdXJlIHRo ZSBmb2xsb3dpbmcgMyBST1dTIG1vZGUgdGVzdHMgYWxzbyBwdXNoIGRvd24KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxh cnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJF VFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBDVVJSRU5U IFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgUk9XUyBC RVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgQ1VSUkVO VCBST1cpCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoZW1wc2FsYXJ5LmVtcG5vKSBPVkVSIHcx IDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkK KyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg2IHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBz YWxhcnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dT IEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBHUk9V UCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRv dzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRF RCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgR1JPVVApCisgICBSdW4gQ29uZGl0 aW9uOiAoY291bnQoZW1wc2FsYXJ5LmVtcG5vKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBlbXBzYWxhcnkKKyg2IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAq IEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291 bnQoZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBS RUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFy eSkgZW1wCitXSEVSRSBjIDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNh bGFyeS5zYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQg Uk9XIEVYQ0xVREUgVElFUykKKyAgIFJ1biBDb25kaXRpb246IChjb3VudChlbXBzYWxhcnkuZW1w bm8pIE9WRVIgdzEgPD0gMykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZW1wc2Fs YXJ5LnNhbGFyeQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDYgcm93cykK KworLS0gRW5zdXJlIFJBTkdFIG1vZGUgd2l0aCAxIEZPTExPV0lORyBkb2VzIG5vdCBwdXNoIGRv d24gdGhlIHJ1biBjb25kaXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00K KyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikg T1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBB TkQgMSBGT0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkp IGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24g ZW1wCisgICBGaWx0ZXI6IChlbXAuYyA8PSAzKQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAg V2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBSQU5HRSBCRVRXRUVOIFVO Qk9VTkRFRCBQUkVDRURJTkcgQU5EIDEgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpCisg ICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxh cnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg3IHJvd3MpCisK Ky0tIEVuc3VyZSB0aGVyZSdzIG5vIHJ1biBjb25kaXRpb24gcHVzaGRvd24gd2l0aCBhIG5vbi1j b25zdCBOIEZPTExPV0lORyB2YWx1ZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJP TQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgq KSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcg QU5EIHJhbmRvbSgxLDEwKSBGT0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJP TSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIGVtcAorICAgRmlsdGVyOiAoZW1wLmMg PD0gMykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZ IGVtcHNhbGFyeS5zYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIHJh bmRvbSgxLCAxMCkgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpCisgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg3IHJvd3MpCisKKy0tIEVuc3VyZSB3 ZSBwdXNoIGRvd24gdGhlIHJ1biBjb25kaXRpb24gd2l0aCAwIGZvbGxvd2luZywgd2hpY2ggaXMg dGhlIHNhbWUgYXMgQ1VSUkVOVCBST1cuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBG Uk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50 KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgMCBGT0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxh cnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBST1dTIEJFVFdF RU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgJzAnOjpiaWdpbnQgRk9MTE9XSU5HIEVYQ0xVREUg Q1VSUkVOVCBST1cpCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoKikgT1ZFUiB3MSA8PSAzKQor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5CisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dzKQorCiAtLSBUZXN0IFNvcnQgbm9k ZSBjb2xsYXBzaW5nCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgKiBGUk9NCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2luZG93LnNxbAppbmRleCA1YWMzYTQ4NmUxNi4uNjQ2NTQzNmExNTMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpbmRvdy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2luZG93LnNxbApAQCAtMTQ2MCw2ICsxNDYwLDIyMSBAQCBTRUxFQ1QgKiBGUk9NCiAgICBG Uk9NIGVtcHNhbGFyeSkgZW1wCiBXSEVSRSBjID0gMTsKIAorLS0KKy0tIEVuc3VyZSB3ZSBnZXQg dGhlIGNvcnJlY3QgYmVoYXZpb3IgZm9yIHJ1biBjb25kaXRpb24gcHVzaGRvd24gd2hlbiB0aGUK Ky0tIGZyYW1lIG9wdGlvbiBoYXMgYW4gRVhDTFVERSBjbGF1c2UKKy0tCisKKy0tIEVuc3VyZSBw dXNoZG93biBvY2N1cnMgZm9yIDAgUFJFQ0VESU5HIHdoZW4gd2UgZXhjbHVkZSB0aGUgZW50aXJl IHBlZXIgZ3JvdXAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVD VCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JE RVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJF Q0VESU5HIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMg PD0gMzsKKworLS0gRW5zdXJlIHdlIGRvbid0IGdldCBwdXNoZG93biB3aXRoIEVYQ0xVREUgQ1VS UkVOVCBST1cKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBl bXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIg Qlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VE SU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJF IGMgPD0gMzsKKworLS0gRW5zdXJlIHdlIGRvbid0IGdldCBwdXNoZG93biB3aXRoIEVYQ0xVREUg VElFUworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5v LAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBz YWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMCBQUkVDRURJTkcg RVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisK KworLS0gRW5zdXJlIHB1c2hkb3duIG9jY3VycyB3aXRoIDAgUFJFQ0VESU5HIHdoZW4gaW4gUk9X UyBtb2RlIGFuZCBvbmx5CistLSBleGNsdWRpbmcgdGhlIGN1cnJlbnQgcm93CitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2Fs YXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdF RU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMCBQUkVDRURJTkcgRVhDTFVERSBDVVJSRU5UIFJP VykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworCistLSBFWENMVURF IEdST1VQIGlzIGFsc28gZmluZSB0byBwdXNoIGRvd24gdGhlIHJ1biBjb25kaXRpb24gd2l0aCAw IFBSRUNFRElORworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNU IGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRF UiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VE SU5HIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0g MzsKKworLS0gRW5zdXJlIHdlIGRvbid0IGRvIHJ1biBjb25kaXRpb24gcHVzaGRvd24gZm9yIEVY Q0xVREUgVElFUworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNU IGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRF UiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VE SU5HIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAz OworCisKKy0tIEVuc3VyZSB0aGUgZm9sbG93aW5nIDYgdGVzdHMgZG8gcHVzaGRvd24gdGhlIHJ1 biBjb25kaXRpb24uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxF Q1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9S REVSIEJZIHNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBS RUNFRElORyBFWENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBj IDw9IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBl bXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIg Qlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDEgUFJFQ0VE SU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJF IGMgPD0gMzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNU IGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRF UiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBQUkVD RURJTkcgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9 IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBu bywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkg c2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBSRUNFRElORyBF WENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9 IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBu bywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkg c2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBSRUNFRElORyBF WENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAg ICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5 IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBSRUNFRElORyBFWENMVURF IFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKworCistLSBG b3IgdGhlIGZvbGxvd2luZyA0IHRlc3RzLCBlbnN1cmUgdGhlcmUncyBubyBwdXNoZG93biB3aXRo IENPVU5UKEFOWSkgd2hlbgorLS0gZXhjbHVkaW5nIHJvd3MgZnJvbSB0aGUgY3VycmVudCBwZWVy IGdyb3VwLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVt cG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBubykgT1ZFUiAoT1JE RVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVO VCBST1cgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hF UkUgYyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxF Q1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVS IChPUkRFUiBCWSBzYWxhcnkgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBD VVJSRU5UIFJPVyBFWENMVURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJF IGMgPD0gMzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNU IGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBubykgT1ZFUiAo T1JERVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENV UlJFTlQgUk9XIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAK K1dIRVJFIGMgPD0gMzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAo U0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBubykg T1ZFUiAoT1JERVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcg QU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAor V0hFUkUgYyA8PSAzOworCistLSBFbnN1cmUgdGhlIGZvbGxvd2luZyAyIHRlc3RzIHB1c2ggZG93 biB0aGUgcnVuIGNvbmRpdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQor ICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBu bykgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVt cAorV0hFUkUgYyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisg IChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5v KSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVt cAorV0hFUkUgYyA8PSAzOworCistLSBFbnN1cmUgdGhlIGZvbGxvd2luZyAzIFJPV1MgbW9kZSB0 ZXN0cyBhbHNvIHB1c2ggZG93bgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQor ICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBu bykgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5H IEFORCBDVVJSRU5UIFJPVyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFy eSkgZW1wCitXSEVSRSBjIDw9IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZS T00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQo ZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNF RElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkp IGVtcAorV0hFUkUgYyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9N CisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVt cG5vKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVt cAorV0hFUkUgYyA8PSAzOworCistLSBFbnN1cmUgUkFOR0UgbW9kZSB3aXRoIDEgRk9MTE9XSU5H IGRvZXMgbm90IHB1c2ggZG93biB0aGUgcnVuIGNvbmRpdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAg ICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUkFOR0UgQkVUV0VFTiBVTkJP VU5ERUQgUFJFQ0VESU5HIEFORCAxIEZPTExPV0lORyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisg ICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisKKy0tIEVuc3VyZSB0aGVyZSdz IG5vIHJ1biBjb25kaXRpb24gcHVzaGRvd24gd2l0aCBhIG5vbi1jb25zdCBOIEZPTExPV0lORyB2 YWx1ZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5v LAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBz YWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIHJhbmRvbSgxLDEwKSBG T0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAor V0hFUkUgYyA8PSAzOworCistLSBFbnN1cmUgd2UgcHVzaCBkb3duIHRoZSBydW4gY29uZGl0aW9u IHdpdGggMCBmb2xsb3dpbmcsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIENVUlJFTlQgUk9XLgorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAg ICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9X UyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgRk9MTE9XSU5HIEVYQ0xVREUgQ1VS UkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKwogLS0g VGVzdCBTb3J0IG5vZGUgY29sbGFwc2luZwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUICog RlJPTQotLSAKMi41NC4wLndpbmRvd3MuMQoK --0000000000006f34f50655aca9cd--