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 1whFNj-0006UO-0k for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 23:39:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whFNh-003P6m-1v for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 23:39:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whFNh-003P6e-0H for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 23:39:14 +0000 Received: from mail-qk1-x732.google.com ([2607:f8b0:4864:20::732]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1whFNd-000000007tv-41w5 for pgsql-hackers@postgresql.org; Tue, 07 Jul 2026 23:39:13 +0000 Received: by mail-qk1-x732.google.com with SMTP id af79cd13be357-92e6391b114so2537985a.3 for ; Tue, 07 Jul 2026 16:39:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783467549; cv=none; d=google.com; s=arc-20260327; b=Hx1t1VwpX4baD5CP2zUPQJCUFspOBOKsnPmzZlu0QnIaEcLTUiLXB+9AvZ+qcsHYoY gCtm/q3jb5ROvHf0yCS8ltZcDBetwDa5fSiF/aE9XIYOxA4d993v0zg1DGvozrw/6T90 oCnumkRZlQZ6OM5bSe3m123gqD5GMq5WHaFRJcwYMUdo/ax4mOWnHtpF/qCggNkeeo+I YZoXRWWQmRwWCSJcX28KzllBHV3BSKbzkdonZW56Upyj6683/DVr58jKrzEeIBwzfyzI WKrtaWipYtt8PM1nLQh2wrNh0amFGNEd3r2XjSHDuveJzUgWTFfmJlaj3kpDRLk4yPY6 veCg== 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=X7u20lIHOZwOnGhVqeKw4x10r2LYeKr1IiteF3iNYhs=; fh=5pXUTt+I+WlSG0KSukrYfeMwV2W8bz9kgxVSRhjB5K4=; b=MWDSHqJE1ac8sroaVvH3pSPG3fjJcvZMdIgCWwLJJImwcnvRfD0fpejVuSUEAMgjB6 W2DErto/uGzAgEKyUM6JWTek9Edax6PLLZAMOnMIQxJAyCPRuPv68NfybK9PMPzUvwPS 4YyajcHYgolLtjXnzXzhSJ6cOWeJJ4UbiisUT0uzXDtp/mJYZQaF15Hn5ZbpU1YMmmuP YARv84cy11gXkANEEOM8llK2r0om3cpyMHFkHq10J9fJIQl3AxCwljirs/JzogTOq4cW hsxv6gw8ldAb52w6AcB/Cw8tNzyBXGXyaRcIHzZOVw/WW0boE7kxv7nXwGUYDn8ulh6P NazQ==; darn=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=1783467549; x=1784072349; darn=postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=X7u20lIHOZwOnGhVqeKw4x10r2LYeKr1IiteF3iNYhs=; b=AZ9CnKfqd9LRxjJIAAa1pgmU1hUUPbCQoaKggEIuaNDjg4nzJFagy3fDq5eEAnuGgU 9YsKOKrg7UM6BaGpDInKGYpw4q0cTPjPn3G7Lwh+uk020EoU8lKN91Lbux0EmdDhDP4Y 92aO7nJk9fdHFSn/phQvxQgBzaoPfsC45sb9FuojTcjrRR+TmdHSB1kWBiK5EDnIVHhk tRsMF9DKmyb6PLMhMlKoMkcRWQStX6bZyXJKIMrnsO4GaVESLAhFNbl59Afep2CCXGzu ljnMfGzpWPGXLjgzzT61np9brWvwCTybnFujrQu7QD+Nrwt9HyaFnV31BruHjBRE2DuR W5Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783467549; x=1784072349; h=content-type: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:content-type; bh=X7u20lIHOZwOnGhVqeKw4x10r2LYeKr1IiteF3iNYhs=; b=ThCZ4lQxPoELupbW6RLHz3WBRkuQ7xL1ZszpqZfTTjHgCSZ/Ro+Rik5llRYfzLLyzj Cl6A1KSCuXB2gwTcWmUGiCm6kgVVt5foO4jm/NrPLUR5dMimuG4PFa1t3XF9I8lEc7nH 4aX6B7qSE5oHoyQ/8LBaesgl8/x3W3aSk+bye/2Km8zTYxSXiTFnc0FtRvqLusuaCUJy vMIRbfA3VA/pNjjsFfEzhXu2EakABQ+CLVDh102dqpSInB7t7Z7Z7BaH89mMA4m5AV2t VYgt1o2qc7ggaz5cgA5OVqzjBr7A0TAz6sHpKFxFF59nnl8GN0d56AYMoDts9A6hSeNy h6DA== X-Forwarded-Encrypted: i=1; AHgh+RrjKAzzNEeLLyTx3YrbfCyhN5g/PjjETbMeaXEA1NO7GR6QaWjUUWzzsTQrcKB1SLhpW0jNnWsOYZUzfAKF@postgresql.org X-Gm-Message-State: AOJu0YzNz96pYO+uf1YJl8e+yLK4w/gfH6TGiNYwJTQ+sLBjMFbtwJDr 9NjqLirmZUk+tcEy+8r8gEKRSUkHHtzaHN/pFDDi85qn9qJUp0N5UZYc4MJXzeyKhDzrNqLTyKU 9R7Kh8W9hlad2V02jH+KurU55tXWMI/0= X-Gm-Gg: AfdE7cmTVEG2MpzxMiizBAi0/SflHMRgcGzvT3Q3+2XHFtaRO3+IEHzIOBrQ/9wprxa kwPyGZbfInEeo0GvXcvTNPam+U81Sd2kTBVBKVN4lL7bDPiYQ4KbWP0yfFPr3QnylRYD+Q2Jj6Y v9GpQvYvRk6VDTewqlKFBfA3twnNZHiy+ehksTnv9w+m4apBl0plF0PFF9iS/stdrnwekg3v2Z2 9aB+2pUCwxeBjDftHTl9RPgH4tO0oFrW7Oah9HmNE7hhApPIylWeaM/prqnqA8FyaBaBlSPgRDg pLX+7BgRDlPwlrq8xO5C5kb7Dgty9KTVRcPXcKaVAWek3wysQh1A2CaR2VXVJWo8Whsesp0EsIt xEhApmHOeJYuS1Q== X-Received: by 2002:a05:6214:c24:b0:8e4:d2ba:d677 with SMTP id 6a1803df08f44-8fcb461bae9mr94552636d6.29.1783467548620; Tue, 07 Jul 2026 16:39:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Korotkov Date: Wed, 8 Jul 2026 02:38:56 +0300 X-Gm-Features: AVVi8Ce4GgYlcbVKvTsNkHpIy1I34ADvcD6lD2k0ZP4LyV94Er5evTTWE7OHgZs Message-ID: Subject: Re: SQL/JSON json_table plan clause To: Nikita Malakhov Cc: Amit Langote , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000b4cf3f06560de5a3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b4cf3f06560de5a3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! On Sun, Jul 5, 2026 at 12:02=E2=80=AFAM Alexander Korotkov wrote: > On Fri, May 15, 2026 at 2:53=E2=80=AFPM Nikita Malakhov wrote: > > Again, Alexander and Amit, thanks for the review. I've rebased the patc= h and made > > some changes according to Alexander's notes. I've slightly rearranged f= iles between > > patches for it to be easier to review, so now there are 3 patches: > > v23-0001-json-table-plan-clause.patch - main code changes > > v23-0002-json-table-plan-tests.patch - test cases and out file changes > > v23-0003-json-table-plan-docs.patch - docs package > > > > <...> > > >1. IsA(planstate, JsonTableSiblingJoin) is wrong. planstate is not a > > >node, thus IsA() can't be applied to it. You should instead do > > >IsA(planstate->plan, JsonTableSiblingJoin). It wasn't catched, > > >because regression tests don't exercise this branch. So, you also > > >need to improve the coverage. > > - done; > > > > >2. get_json_table() with patch uses JSON_BEHAVIOR_EMPTY as the default > > >value for deparsing, while parsing still uses > > >JSON_BEHAVIOR_EMPTY_ARRAY. Looks plain wrong. I'm not sure what is > > >intention here. > > - looks like leftover from older version, changed to default behavior, = so unnecessary > > emission of ERROR is omitted; > > > > >3. PLAN clause is always emitted during deparsing even if user didn't > > >specify anything. I would prefer to skip PLAN clause in this case > > >unless there is strong reason to do the opposite (this reason must be > > >pointed if any). > > - done, this made test cases much more readable; > > > > >4. Unused typedefs in src/tools/pgindent/typedefs.list: > > >JsonTableScanState, JsonPathSpec, JsonTablePlanStateType, > > >JsonTableJoinState. > > - done; > > > > >5. Empty comment in JsonTablePlanState definition. Pointed by Amit, > > >but not fixed. > > - done; > > > > >6. Rename passingArgs to passing_Args for no reason in parse_jsontable= .c. > > - done; > > > > >7. Patch lacks documentation (also pointed by Amit) > > - done, documentation is provided in separate patch; > > > > >8. Patch could use pgindent run. > > - not done yet but would provide a newer version with it. > > Thank you. I've made following additional changes. > > 1. Actually, I don't see my previous item 3 fully addressed. We > still had PLAN clause deparsed in the case user didn't specify it. I > see this as an undesirable behavior. And there are at least two ways > to fix this: don't output PLAN clause if it's not the default, > remember if user specified as a special flag or even original clause. > I found first way (don't output default) more appealing as it don't > require additional struct members and we already do this in other > similar cases (NULLS FIRST/LAST, ON EMPTY/ON ERROR). So, I did this > for PLAN clause. > 2. Simplification for JsonTablePlanNextRow(): no reason to check > (planstate->advanceNested || planstate->nested) if we already issued > break for (planstate->nested =3D=3D NULL). > 3. Similar simplification for transformJsonTableNestedColumns(). I made some additional changes to the patch. In the previous versions PLAN qual required name for root path, but didn't required names for nested paths. I've rechecked with standard, and it appears that standard claims the opposite: name is not required for the root path, but required for nested paths. So, I decided to allow skipping name for both root path (as standard claims), and nested path (our extension to standard). Corresponding changes made to code, tests and documentation. Also, I merged 3 patches into 1, and edited sql_features.txt. I'm going to push this if no objections. ------ Regards, Alexander Korotkov Supabase --000000000000b4cf3f06560de5a3 Content-Type: application/octet-stream; name="v25-0001-JSON_TABLE-PLAN-clause.patch" Content-Disposition: attachment; filename="v25-0001-JSON_TABLE-PLAN-clause.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrbabw8z0 RnJvbSAxMGQ1Y2RiODRkZGRhMGRhZTZiZGYwZDE4ZjlmNWRjYWQ5Y2JlYTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogV2VkLCA4IEp1bCAyMDI2IDAyOjMxOjQxICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjVdIEpTT05fVEFCTEUgUExBTiBjbGF1c2UKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVu dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp bmc6IDhiaXQKClRoaXMgcGF0Y2ggYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBKU09OX1RBQkxF LCB3aGljaCBhbGxvdyB0aGUgdXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20gbmVzdGVkIHBh dGhzIGFyZSBqb2luZWQsIGFsbG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGluIHNoYXBpbmcg dGhlIHRhYnVsYXIgb3V0cHV0IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBhbGxvd3MgdGhl IHVzZXIgdG8gc3BlY2lmeSB0aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFsaW5nIHdpdGgg c2libGluZyBvciBjaGlsZCBuZXN0ZWQgcGF0aHMuIFRoaXMgaXMgb2Z0ZW4gc3VmZmljaWVudAp0 byBhY2hpZXZlIHRoZSBuZWNlc3NhcnkgZ29hbCwgYW5kIGlzIGNvbnNpZGVyYWJseSBzaW1wbGVy IHRoYW4gdGhlCmZ1bGwgUExBTiBjbGF1c2UsIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBzcGVj aWZ5IHRoZSBzdHJhdGVneSB0byBiZQp1c2VkIGZvciBlYWNoIG5hbWVkIG5lc3RlZCBwYXRoLgoK UGF0aCBuYW1lcyBtYXkgYmUgYXR0YWNoZWQgdG8gdGhlIHJvdyBwYXR0ZXJuIGFuZCB0byBlYWNo IE5FU1RFRCBwYXRoCnVzaW5nIEFTLiAgVW5saWtlIHRoZSBTUUwvSlNPTiBzdGFuZGFyZCwgd2hp Y2ggcmVxdWlyZXMgYSBuYW1lIGZvciBldmVyeQpORVNURUQgcGF0aCB3aGVuIGEgUExBTiBjbGF1 c2UgaXMgcHJlc2VudCwgUG9zdGdyZVNRTCBkb2VzIG5vdCByZXF1aXJlCnRoZW0gYW5kIGdlbmVy YXRlcyBhIG5hbWUgZm9yIGFueSBwYXRoIGxlZnQgdW5uYW1lZDsgYSBzcGVjaWZpYyBQTEFOKCkK Y2FuIG9ubHkgcmVmZXJlbmNlIHBhdGhzIGJ5IG5hbWUsIHNvIHVubmFtZWQgcGF0aHMgaXQgbXVz dCBtZW50aW9uIGFyZQpyZXBvcnRlZCBhcyBub3QgY292ZXJlZCBieSB0aGUgcGxhbi4KCkF1dGhv cjogTmlraXRhIE1hbGFraG92IDxuLm1hbGFraG92QHBvc3RncmVzcHJvLnJ1PgpDby1hdXRob3Jl ZC1ieTogTmlraXRhIEdsdWtob3YgPG4uZ2x1aG92QHBvc3RncmVzcHJvLnJ1PgpDby1hdXRob3Jl ZC1ieTogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fldi5ydT4KQ28tYXV0aG9yZWQtYnk6IE9s ZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5k ZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpDby1hdXRob3JlZC1ieTogQW5kcmV3 IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkNvLWF1dGhvcmVkLWJ5OiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpDby1hdXRob3JlZC1ieTogQW50b24gTWVsbmlr b3YgPGEubWVsbmlrb3ZAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5k IDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5OiBQYXZlbCBTdGVodWxlIDxwYXZlbC5z dGVodWxlQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBBbHN1cCA8Ymx1ZXNicmVha2Vy QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEVyaWsgUmlqa2VycyA8ZXJAeHM0YWxsLm5sPgpSZXZp ZXdlZC1ieTogWmhpaG9uZyBZdSA8enl1QHl1Z2FieXRlLmNvbT4KUmV2aWV3ZWQtYnk6IEhpbWFu c2h1IFVwYWRoeWF5YSA8dXBhZGh5YXlhLmhpbWFuc2h1QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxAeWVzcWwuc2U+ClJldmlld2VkLWJ5OiBKdXN0aW4g UHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4KUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVy YSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+ClJldmlld2VkLWJ5OiBqaWFuIGhlIDxqaWFuLnVuaXZl cnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBWbGFkbGVuIFBvcG9saXRvdiA8di5wb3Bv bGl0b3ZAcG9zdGdyZXNwcm8ucnU+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vY2Qw YmI5MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRiQHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYyMzMxMzAucnBhcml2YWZpcHQ2ZG9qM0Bh bGFwMy5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2FiZDliODNi LWFhNjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBvc3RncmVzcWwub3JnCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2 aTVkNHhjS3lyTEMxTmJnQG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0FOLUxDVlA3SFhtR3UtV2NpbnNIdmRLcU1HRWR2PTFZNjdINFU1OEY2WT1RME01R3lR QG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1qc29uLnNnbWwgICAg ICAgICAgICAgIHwgMTc2ICsrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50 eHQgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAg ICAgICAgICAgICB8ICA1NCArKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAg ICAgICAgICAgIHwgMTAxICsrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5j ICAgICAgICAgIHwgMzgyICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0 aF9leGVjLmMgICAgICAgICB8IDE3MSArKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jICAgICAgICAgICAgIHwgIDk5ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNz LmggICAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCAgICAgICAgICAgICAgICB8ICA0MyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg ICAgICAgICAgICAgICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fanNv bnRhYmxlLm91dCAgICB8IDY1NSArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3NxbGpzb25fanNvbnRhYmxlLnNxbCAgICB8IDQzNCArKysrKysrKysrKysKIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMyArCiAxMyBmaWxlcyBj aGFuZ2VkLCAyMDE3IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWpzb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtanNvbi5zZ21sCmluZGV4IDNkOTdlMmI1Mzc1Li41NDFkMDJkNGE2ZSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1qc29uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMv ZnVuYy1qc29uLnNnbWwKQEAgLTM2NjMsNiArMzY2MywxMSBAQCBKU09OX1RBQkxFICgKICAgICA8 cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRo X2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEFTIDxyZXBsYWNlYWJsZT5qc29u X3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+IDxvcHRpb25hbD4gUEFTU0lORyB7 IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT52YXJuYW1l PC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiA8L29wdGlvbmFsPgog ICAgIENPTFVNTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9j b2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCiAgICAgPG9w dGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRl cmFsPiA8b3B0aW9uYWw+QVJSQVk8L29wdGlvbmFsPn0gPGxpdGVyYWw+T04gRVJST1I8L2xpdGVy YWw+IDwvb3B0aW9uYWw+CisgICAgPG9wdGlvbmFsPgorICAgICAgICBQTEFOICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkgfAor ICAgICAgICBQTEFOIERFRkFVTFQgKCB7IElOTkVSIHwgT1VURVIgfSA8b3B0aW9uYWw+ICwgeyBD Uk9TUyB8IFVOSU9OIH0gPC9vcHRpb25hbD4KKyAgICAgICAgICAgICAgICAgICAgIHwgeyBDUk9T UyB8IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsgSU5ORVIgfCBPVVRFUiB9IDwvb3B0aW9uYWw+ICkK KyAgICA8L29wdGlvbmFsPgogKQogCiA8cGhyYXNlPgpAQCAtMzY3OSw2ICszNjg0LDE2IEBAIHdo ZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVw bGFjZWFibGU+IGlzOgogICB8IDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxh Y2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFWElTVFMgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNl YWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgogICAgICAgICA8 b3B0aW9uYWw+IHsgRVJST1IgfCBUUlVFIHwgRkFMU0UgfCBVTktOT1dOIH0gT04gRVJST1IgPC9v cHRpb25hbD4KICAgfCBORVNURUQgPG9wdGlvbmFsPiBQQVRIIDwvb3B0aW9uYWw+IDxyZXBsYWNl YWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IEFTIDxyZXBsYWNl YWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+IENPTFVNTlMgKCA8 cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAu Li48L29wdGlvbmFsPiApCis8cGhyYXNlPgorPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwv cmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9u YW1lPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiB7IE9VVEVSIHwgSU5ORVIgfSA8cmVwbGFjZWFi bGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorICB8 IDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+IHsgVU5J T04gPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4gfSA8 b3B0aW9uYWw+Li4uPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFu X3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB7IENST1NTIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3Bs YW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPi4uLjwvb3B0aW9uYWw+Cis8cGhy YXNlPgorPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4g aXM6Cis8L3BocmFzZT4KKyAgICA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2Vh YmxlPiB8ICggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkKIDwv c3lub3BzaXM+CiAKICAgPHBhcmE+CkBAIC0zODQyLDYgKzM4NTcsMTEgQEAgd2hlcmUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4g aXM6CiAgICAgIGluIGEgc2luZ2xlIGZ1bmN0aW9uIGludm9jYXRpb24gcmF0aGVyIHRoYW4gY2hh aW5pbmcgc2V2ZXJhbAogICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJl c3Npb25zIGluIGFuIFNRTCBzdGF0ZW1lbnQuCiAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+Cisg ICAgIFlvdSBjYW4gdXNlIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVm aW5lIGhvdworICAgICB0byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5F U1RFRCBQQVRIPC9saXRlcmFsPiBjbGF1c2VzLgorICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgpAQCAtMzg2NiwxMiArMzg4 NiwxMzAgQEAgd2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpzb25fdGFibGVf Y29sdW1uPC9yZXBsYWNlYWJsZT4gaXM6CiAKICAgICA8cGFyYT4KICAgICAgVGhlIG9wdGlvbmFs IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IHNlcnZlcyBhcyBhbgot ICAgICBpZGVudGlmaWVyIG9mIHRoZSBwcm92aWRlZCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4uCi0gICAgIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIGFuZCBkaXN0 aW5jdCBmcm9tIHRoZSBjb2x1bW4gbmFtZXMuCisgICAgIGlkZW50aWZpZXIgb2YgdGhlIHByb3Zp ZGVkIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+Lgor ICAgICBUaGUgcGF0aCBuYW1lIG11c3QgYmUgdW5pcXVlIGFuZCBkaXN0aW5jdCBmcm9tIHRoZSBj b2x1bW4gbmFtZXMuICBFYWNoCisgICAgIHBhdGggbmFtZSBjYW4gYXBwZWFyIGluIHRoZSA8bGl0 ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFyYT4KKyAgICA8 cGFyYT4KKyAgICAgVGhlIFNRTC9KU09OIHN0YW5kYXJkIHJlcXVpcmVzIGFuIGV4cGxpY2l0IHBh dGggbmFtZSBmb3IgZXZlcnkKKyAgICAgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHdo ZW4gYSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBvcgorICAgICA8bGl0ZXJhbD5QTEFOIERFRkFV TFQ8L2xpdGVyYWw+IGNsYXVzZSBpcyBwcmVzZW50LCB3aGlsZSB0aGUgcm93IHBhdHRlcm4KKyAg ICAgcGF0aCBuYW1lIGFsd2F5cyByZW1haW5zIG9wdGlvbmFsLiAgQXMgYW4gZXh0ZW5zaW9uLAor ICAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGRvZXMgbm90IHJlcXVp cmUgYW55IHBhdGggbmFtZTogYQorICAgICBuYW1lIGlzIGdlbmVyYXRlZCBmb3IgYW55IHBhdGgg bGVmdCB1bm5hbWVkLiAgTm90ZSwgaG93ZXZlciwgdGhhdCBhCisgICAgIHNwZWNpZmljIDxsaXRl cmFsPlBMQU48L2xpdGVyYWw+ICg8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNl YWJsZT4pCisgICAgIGNhbiBvbmx5IHJlZmVyIHRvIHBhdGhzIGJ5IG5hbWUsIHNvIGV2ZXJ5IHBh dGggdGhhdCBzdWNoIGEgcGxhbiBtdXN0CisgICAgIG1lbnRpb24gaGFzIHRvIGJlIGdpdmVuIGEg bmFtZSBleHBsaWNpdGx5LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFs PlBMQU48L2xpdGVyYWw+ICggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFi bGU+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIERl ZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBB VEg8L2xpdGVyYWw+CisgICAgIGNsYXVzZXMgdG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisgICAg PC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUbyBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hp bGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVzZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJsZWxp c3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5FUjwv bGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAg IFVzZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9saXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJv dworICAgICBpcyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZlIGFu eSBjaGlsZCByb3dzCisgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxp dGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+Cisg ICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxsaXRlcmFsPkxFRlQgT1VURVIgSk9JTjwvbGl0ZXJh bD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cKKyAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGludG8g dGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMgbm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAgICAg YWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwv bGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMKKyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY2hpbGQg Y29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisg ICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBm b3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxl bGlzdD4KKyAgICAgPHBhcmE+CisgICAgIFRvIGpvaW4gc2libGluZyBjb2x1bW5zLCB5b3UgY2Fu IHVzZToKKyAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPgorICAgIDwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJhdGUgb25lIHJvdyBmb3Ig ZWFjaCB2YWx1ZSBwcm9kdWNlZCBieSBlYWNoIG9mIHRoZSBzaWJsaW5nCisgICAgIGNvbHVtbnMu IFRoZSBjb2x1bW5zIGZyb20gdGhlIG90aGVyIHNpYmxpbmdzIGFyZSBzZXQgdG8gbnVsbC4KKyAg ICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uIGZv ciBqb2luaW5nIHNpYmxpbmcgY29sdW1ucy4KICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAg ICA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor CisgICAgPHBhcmE+CisgICAgIEdlbmVyYXRlIG9uZSByb3cgZm9yIGVhY2ggY29tYmluYXRpb24g b2YgdmFsdWVzIGZyb20gdGhlIHNpYmxpbmcgY29sdW1ucy4KKyAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorCisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICA8bGl0ZXJhbD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+ICggPGxpdGVyYWw+ PHJlcGxhY2VhYmxlPk9VVEVSIHwgSU5ORVI8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCA8cmVw bGFjZWFibGU+VU5JT04gfCBDUk9TUzwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+PC9saXRlcmFs PiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUg dGVybXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGluIHJldmVyc2Ugb3JkZXIuIFRoZQorICAgICAg PGxpdGVyYWw+SU5ORVI8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPiBvcHRp b24gZGVmaW5lcyB0aGUKKyAgICAgIGpvaW5pbmcgcGxhbiBmb3IgcGFyZW50L2NoaWxkIGNvbHVt bnMsIHdoaWxlIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPiBvcgorICAgICAgPGxpdGVyYWw+Q1JP U1M8L2xpdGVyYWw+IGFmZmVjdHMgam9pbnMgb2Ygc2libGluZyBjb2x1bW5zLiBUaGlzIGZvcm0K KyAgICAgIG9mIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBw bGFuIGZvcgorICAgICAgYWxsIGNvbHVtbnMgYXQgb25jZS4KKyAgICAgPC9wYXJhPgorICAgICA8 cGFyYT4KKyAgICAgIDxsaXRlcmFsPlBMQU4gREVGQVVMVDwvbGl0ZXJhbD4gaXMgc2ltcGxlciB0 aGFuIHNwZWNpZnlpbmcgYSBjb21wbGV0ZQorICAgICAgPGxpdGVyYWw+UExBTjwvbGl0ZXJhbD4s IGFuZCBpcyBvZnRlbiBhbGwgdGhhdCBpcyByZXF1aXJlZCB0byBnZXQgdGhlIGRlc2lyZWQKKyAg ICAgIG91dHB1dC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT4KICAgICAgeyA8bGl0ZXJhbD5F UlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5FTVBUWTwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5PTiBF UlJPUjwvbGl0ZXJhbD4KQEAgLTQwODIsNSArNDIyMCwzOSBAQCBDT0xVTU5TICgKIDwvc2NyZWVu PgogCiAgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEZpbmQgYSBkaXJlY3RvciB0 aGF0IGhhcyBkb25lIGZpbG1zIGluIHR3byBkaWZmZXJlbnQgZ2VucmVzOgorPHNjcmVlbj4KK1NF TEVDVAorICBkaXJlY3RvcjEgQVMgZGlyZWN0b3IsIHRpdGxlMSwga2luZDEsIHRpdGxlMiwga2lu ZDIKK0ZST00KKyAgbXlfZmlsbXMsCisgIEpTT05fVEFCTEUgKCBqcywgJyQuZmF2b3JpdGVzJyBB UyBmYXZzIENPTFVNTlMgKAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczEgQ09MVU1O UyAoCisgICAgICBraW5kMSB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAn JC5maWxtc1sqXScgQVMgZmlsbTEgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMSB0ZXh0IFBBVEgg JyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjEgdGV4dCBQQVRIICckLmRpcmVjdG9yJykKKyAg ICApLAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczIgQ09MVU1OUyAoCisgICAgICBr aW5kMiB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScg QVMgZmlsbTIgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMiB0ZXh0IFBBVEggJyQudGl0bGUnLAor ICAgICAgICBkaXJlY3RvcjIgdGV4dCBQQVRIICckLmRpcmVjdG9yJworICAgICAgKQorICAgICkK KyAgICkKKyAgIFBMQU4gKGZhdnMgT1VURVIgKChmaWxtczEgSU5ORVIgZmlsbTEpIENST1NTIChm aWxtczIgSU5ORVIgZmlsbTIpKSkKKyAgKSBBUyBqdAorIFdIRVJFIGtpbmQxID4ga2luZDIgQU5E IGRpcmVjdG9yMSA9IGRpcmVjdG9yMjsKKworICAgICBkaXJlY3RvciAgICAgfCB0aXRsZTEgIHwg IGtpbmQxICAgfCB0aXRsZTIgfCBraW5kMgorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tCisgQWxmcmVkIEhpdGNoY29jayB8IFZlcnRpZ28g fCB0aHJpbGxlciB8IFBzeWNobyB8IGhvcnJvcgorKDEgcm93KQorPC9zY3JlZW4+CisgICAgIDwv cGFyYT4KKwogICA8L3NlY3QyPgogIDwvc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJl cy50eHQKaW5kZXggNjI2MDU0Y2JjZWYuLjU1ZjA3M2UyMjYyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z cWxfZmVhdHVyZXMudHh0CkBAIC02NTAsNyArNjUwLDcgQEAgVDgxNAlDb2xvbiBpbiBKU09OX09C SkVDVCBvciBKU09OX09CSkVDVEFHRwkJCVlFUwogVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBv cGVyYXRvcnMJCQlZRVMJCiBUODIyCVNRTC9KU09OOiBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMg cHJlZGljYXRlCQkJWUVTCQogVDgyMwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCi1U ODI0CUpTT05fVEFCTEU6IHNwZWNpZmljIFBMQU4gY2xhdXNlCQkJTk8JCitUODI0CUpTT05fVEFC TEU6IHNwZWNpZmljIFBMQU4gY2xhdXNlCQkJWUVTCQogVDgyNQlTUUwvSlNPTjogT04gRU1QVFkg YW5kIE9OIEVSUk9SIGNsYXVzZXMJCQlZRVMJCiBUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lv biBpbiBPTiBFUlJPUiBvciBPTiBFTVBUWSBjbGF1c2VzCQkJWUVTCQogVDgyNwlKU09OX1RBQkxF OiBzaWJsaW5nIE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlZRVMJCkBAIC02NjQsNyArNjY0LDcg QEAgVDgzNAlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzb3IJ CQlZRVMKIFQ4MzUJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogZmlsdGVyIGV4cHJlc3Npb25zCQkJ WUVTCQogVDgzNglTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdGFydHMgd2l0aCBwcmVkaWNhdGUJ CQlZRVMJCiBUODM3CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHJlZ2V4X2xpa2UgcHJlZGljYXRl CQkJWUVTCQotVDgzOAlKU09OX1RBQkxFOiBQTEFOIERFRkFVTFQgY2xhdXNlCQkJTk8JCitUODM4 CUpTT05fVEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlZRVMJCiBUODM5CUZvcm1hdHRlZCBj YXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdzCQkJTk8JCiBUODQwCUhl eCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UJCQlZRVMJCiBUODUx CVNRTC9KU09OOiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBzeW50YXgJCQlZRVMJCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCmluZGV4IDQwYjA5OTU4YWMyLi5jZGMwMmIyNzRmZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMKQEAgLTk2Myw2ICs5NjMsNjAgQEAgbWFrZUpzb25CZWhhdmlvcihKc29uQmVo YXZpb3JUeXBlIGJ0eXBlLCBOb2RlICpleHByLCBpbnQgbG9jYXRpb24pCiAJcmV0dXJuIGJlaGF2 aW9yOwogfQogCisvKgorICogbWFrZUpzb25UYWJsZURlZmF1bHRQbGFuIC0KKyAqCSAgIGNyZWF0 ZXMgYSBKc29uVGFibGVQbGFuU3BlYyBub2RlIHRvIHJlcHJlc2VudCBhICJkZWZhdWx0IiBKU09O X1RBQkxFIHBsYW4KKyAqCSAgIHdpdGggZ2l2ZW4gam9pbiBzdHJhdGVneQorICovCitOb2RlICoK K21ha2VKc29uVGFibGVEZWZhdWx0UGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgam9pbl90eXBl LCBpbnQgbG9jYXRpb24pCit7CisJSnNvblRhYmxlUGxhblNwZWMgKm4gPSBtYWtlTm9kZShKc29u VGFibGVQbGFuU3BlYyk7CisKKwluLT5wbGFuX3R5cGUgPSBKU1RQX0RFRkFVTFQ7CisJbi0+am9p bl90eXBlID0gam9pbl90eXBlOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4g KE5vZGUgKikgbjsKK30KKworLyoKKyAqIG1ha2VKc29uVGFibGVTaW1wbGVQbGFuIC0KKyAqCSAg IGNyZWF0ZXMgYSBKc29uVGFibGVQbGFuU3BlYyBub2RlIHRvIHJlcHJlc2VudCBhICJzaW1wbGUi IEpTT05fVEFCTEUgcGxhbgorICoJICAgZm9yIGdpdmVuIFBBVEgKKyAqLworTm9kZSAqCittYWtl SnNvblRhYmxlU2ltcGxlUGxhbihjaGFyICpwYXRobmFtZSwgaW50IGxvY2F0aW9uKQoreworCUpz b25UYWJsZVBsYW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+ cGxhbl90eXBlID0gSlNUUF9TSU1QTEU7CisJbi0+cGF0aG5hbWUgPSBwYXRobmFtZTsKKwluLT5s b2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIG47Cit9CisKKy8qCisgKiBt YWtlSnNvblRhYmxlSm9pbmVkUGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxhblNw ZWMgbm9kZSB0byByZXByZXNlbnQgam9pbiBiZXR3ZWVuIHRoZSBnaXZlbgorICoJICAgcGFpciBv ZiBwbGFucworICovCitOb2RlICoKK21ha2VKc29uVGFibGVKb2luZWRQbGFuKEpzb25UYWJsZVBs YW5Kb2luVHlwZSB0eXBlLCBOb2RlICpwbGFuMSwgTm9kZSAqcGxhbjIsCisJCQkJCQlpbnQgbG9j YXRpb24pCit7CisJSnNvblRhYmxlUGxhblNwZWMgKm4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFu U3BlYyk7CisKKwluLT5wbGFuX3R5cGUgPSBKU1RQX0pPSU5FRDsKKwluLT5qb2luX3R5cGUgPSB0 eXBlOworCW4tPnBsYW4xID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhblNwZWMsIHBsYW4xKTsKKwlu LT5wbGFuMiA9IGNhc3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCBwbGFuMik7CisJbi0+bG9jYXRp b24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOworfQorCiAvKgogICogbWFrZUpz b25LZXlWYWx1ZSAtCiAgKgkgIGNyZWF0ZXMgYSBKc29uS2V5VmFsdWUgbm9kZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK aW5kZXggZmY0ZTEzODhjNTUuLjllMDVhMzE0NzA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTY3Miw2ICs2 NzIsMTQgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlqc29uX3RhYmxlCiAJCQkJanNv bl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbgogCQkJCWpzb25fdGFibGVfY29sdW1uX3BhdGhfY2xh dXNlX29wdAorCQkJCWpzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9w bGFuCisJCQkJanNvbl90YWJsZV9wbGFuX3NpbXBsZQorCQkJCWpzb25fdGFibGVfcGxhbl9vdXRl cgorCQkJCWpzb25fdGFibGVfcGxhbl9pbm5lcgorCQkJCWpzb25fdGFibGVfcGxhbl91bmlvbgor CQkJCWpzb25fdGFibGVfcGxhbl9jcm9zcworCQkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5CiAl dHlwZSA8bGlzdD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9leHBy X2xpc3QKIAkJCQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0CkBAIC02 ODMsNiArNjkxLDkgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxpdmFsPglqc29u X2JlaGF2aW9yX3R5cGUKIAkJCQlqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnQKIAkJCQlq c29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNl cworCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyCisJCQkJanNvbl90YWJs ZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MKIAkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKICV0 eXBlIDxib29sZWFuPglqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CiAJCQkJanNv bl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0CkBAIC0xNTE4OCw2ICsxNTE5OSw3 IEBAIGpzb25fdGFibGU6CiAJCQkJanNvbl92YWx1ZV9leHByICcsJyBhX2V4cHIganNvbl90YWJs ZV9wYXRoX25hbWVfb3B0CiAJCQkJanNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKIAkJCQlDT0xVTU5T ICcoJyBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJanNvbl90YWJs ZV9wbGFuX2NsYXVzZV9vcHQKIAkJCQlqc29uX29uX2Vycm9yX2NsYXVzZV9vcHQKIAkJCScpJwog CQkJCXsKQEAgLTE1MTk5LDEzICsxNTIxMSwxNSBAQCBqc29uX3RhYmxlOgogCQkJCQkJY2FzdE5v ZGUoQV9Db25zdCwgJDUpLT52YWwubm9kZS50eXBlICE9IFRfU3RyaW5nKQogCQkJCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks Ci0JCQkJCQkJCWVycm1zZygib25seSBzdHJpbmcgY29uc3RhbnRzIGFyZSBzdXBwb3J0ZWQgaW4g SlNPTl9UQUJMRSBwYXRoIHNwZWNpZmljYXRpb24iKSwKKwkJCQkJCQkJZXJybXNnKCJvbmx5IHN0 cmluZyBjb25zdGFudHMgYXJlIHN1cHBvcnRlZCBpbiIKKwkJCQkJCQkJCSAgICIgSlNPTl9UQUJM RSBwYXRoIHNwZWNpZmljYXRpb24iKSwKIAkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEA1KSk7 CiAJCQkJCXBhdGhzdHJpbmcgPSBjYXN0Tm9kZShBX0NvbnN0LCAkNSktPnZhbC5zdmFsLnN2YWw7 CiAJCQkJCW4tPnBhdGhzcGVjID0gbWFrZUpzb25UYWJsZVBhdGhTcGVjKHBhdGhzdHJpbmcsICQ2 LCBANSwgQDYpOwogCQkJCQluLT5wYXNzaW5nID0gJDc7CiAJCQkJCW4tPmNvbHVtbnMgPSAkMTA7 Ci0JCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSAkMTI7CisJCQkJCW4tPnBsYW5z cGVjID0gKEpzb25UYWJsZVBsYW5TcGVjICopICQxMjsKKwkJCQkJbi0+b25fZXJyb3IgPSAoSnNv bkJlaGF2aW9yICopICQxMzsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KQEAgLTE1Mjk3LDggKzE1MzExLDcgQEAganNvbl90YWJsZV9jb2x1bW5f ZGVmaW5pdGlvbjoKIAkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxl Q29sdW1uKTsKIAogCQkJCQluLT5jb2x0eXBlID0gSlRDX05FU1RFRDsKLQkJCQkJbi0+cGF0aHNw ZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikKLQkJCQkJCW1ha2VKc29uVGFibGVQYXRoU3BlYygk MywgTlVMTCwgQDMsIC0xKTsKKwkJCQkJbi0+cGF0aHNwZWMgPSBtYWtlSnNvblRhYmxlUGF0aFNw ZWMoJDMsIE5VTEwsIEAzLCAtMSk7CiAJCQkJCW4tPmNvbHVtbnMgPSAkNjsKIAkJCQkJbi0+bG9j YXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtMTUzMDksOCArMTUzMjIsNyBA QCBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uOgogCQkJCQlKc29uVGFibGVDb2x1bW4gKm4g PSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOwogCiAJCQkJCW4tPmNvbHR5cGUgPSBKVENfTkVT VEVEOwotCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFibGVQYXRoU3BlYyAqKQotCQkJCQkJbWFr ZUpzb25UYWJsZVBhdGhTcGVjKCQzLCAkNSwgQDMsIEA1KTsKKwkJCQkJbi0+cGF0aHNwZWMgPSBt YWtlSnNvblRhYmxlUGF0aFNwZWMoJDMsICQ1LCBAMywgQDUpOwogCQkJCQluLT5jb2x1bW5zID0g JDg7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTE1 MzI5LDYgKzE1MzQxLDgzIEBAIGpzb25fdGFibGVfY29sdW1uX3BhdGhfY2xhdXNlX29wdDoKIAkJ CQl7ICQkID0gTlVMTDsgfQogCQk7CiAKK2pzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0OgorCQkJ UExBTiAnKCcganNvbl90YWJsZV9wbGFuICcpJworCQkJCXsgJCQgPSAkMzsgfQorCQkJfCBQTEFO IERFRkFVTFQgJygnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXMgJyknCisJCQkJeyAk JCA9IG1ha2VKc29uVGFibGVEZWZhdWx0UGxhbigkNCwgQDEpOyB9CisJCQl8IC8qIEVNUFRZICov CisJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW46CisJCQlqc29uX3Rh YmxlX3BsYW5fc2ltcGxlCisJCQl8IGpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJfCBqc29uX3Rh YmxlX3BsYW5faW5uZXIKKwkJCXwganNvbl90YWJsZV9wbGFuX3VuaW9uCisJCQl8IGpzb25fdGFi bGVfcGxhbl9jcm9zcworCQk7CisKK2pzb25fdGFibGVfcGxhbl9zaW1wbGU6CisJCQluYW1lCisJ CQkJeyAkJCA9IG1ha2VKc29uVGFibGVTaW1wbGVQbGFuKCQxLCBAMSk7IH0KKwkJOworCitqc29u X3RhYmxlX3BsYW5fb3V0ZXI6CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlIE9VVEVSX1AganNv bl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4o SlNUUF9KT0lOX09VVEVSLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9p bm5lcjoKKwkJCWpzb25fdGFibGVfcGxhbl9zaW1wbGUgSU5ORVJfUCBqc29uX3RhYmxlX3BsYW5f cHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQX0pPSU5fSU5O RVIsICQxLCAkMywgQDEpOyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuX3VuaW9uOgorCQkJanNv bl90YWJsZV9wbGFuX3ByaW1hcnkgVU5JT04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7 ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAx KTsgfQorCQkJfCBqc29uX3RhYmxlX3BsYW5fdW5pb24gVU5JT04ganNvbl90YWJsZV9wbGFuX3By aW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9O LCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9jcm9zczoKKwkJCWpzb25f dGFibGVfcGxhbl9wcmltYXJ5IENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAk JCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7 IH0KKwkJCXwganNvbl90YWJsZV9wbGFuX2Nyb3NzIENST1NTIGpzb25fdGFibGVfcGxhbl9wcmlt YXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywg JDEsICQzLCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5fcHJpbWFyeToKKwkJCWpzb25f dGFibGVfcGxhbl9zaW1wbGUKKwkJCQl7ICQkID0gJDE7IH0KKwkJCXwgJygnIGpzb25fdGFibGVf cGxhbiAnKScKKwkJCQl7CisJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCAkMiktPmxv Y2F0aW9uID0gQDE7CisJCQkJCSQkID0gJDI7CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfZGVm YXVsdF9wbGFuX2Nob2ljZXM6CisJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRl cgorCQkJCXsgJCQgPSAkMSB8IEpTVFBfSk9JTl9VTklPTjsgfQorCQkJfCBqc29uX3RhYmxlX2Rl ZmF1bHRfcGxhbl91bmlvbl9jcm9zcworCQkJCXsgJCQgPSAkMSB8IEpTVFBfSk9JTl9PVVRFUjsg fQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlciAnLCcganNvbl90YWJs ZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQkJfCBq c29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9zcyAnLCcganNvbl90YWJsZV9kZWZhdWx0 X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQk7CisKK2pzb25fdGFi bGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyOgorCQkJSU5ORVJfUAkJCQkJCXsgJCQgPSBKU1RQ X0pPSU5fSU5ORVI7IH0KKwkJCXwgT1VURVJfUAkJCQkJeyAkJCA9IEpTVFBfSk9JTl9PVVRFUjsg fQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzOgorCQkJVU5JT04J CQkJCQl7ICQkID0gSlNUUF9KT0lOX1VOSU9OOyB9CisJCQl8IENST1NTCQkJCQkJeyAkJCA9IEpT VFBfSk9JTl9DUk9TUzsgfQorCQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVR5 cGUgc3ludGF4CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxl LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKaW5kZXggMzJhMWU4NjI5 YjIuLmVmMDQyODMwZjAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNv bnRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCkBAIC0z OSwxNyArMzksMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlUGFyc2VDb250ZXh0CiB9IEpz b25UYWJsZVBhcnNlQ29udGV4dDsKIAogc3RhdGljIEpzb25UYWJsZVBsYW4gKnRyYW5zZm9ybUpz b25UYWJsZUNvbHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICpjeHQsCisJCQkJCQkJCQkJCQlK c29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMsCiAJCQkJCQkJCQkJCQlMaXN0ICpjb2x1bW5zLAog CQkJCQkJCQkJCQkJTGlzdCAqcGFzc2luZ0FyZ3MsCiAJCQkJCQkJCQkJCQlKc29uVGFibGVQYXRo U3BlYyAqcGF0aHNwZWMpOwogc3RhdGljIEpzb25UYWJsZVBsYW4gKnRyYW5zZm9ybUpzb25UYWJs ZU5lc3RlZENvbHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICpjeHQsCisJCQkJCQkJCQkJCQkJ ICBKc29uVGFibGVQbGFuU3BlYyAqcGxhbiwKIAkJCQkJCQkJCQkJCQkgIExpc3QgKnBhc3NpbmdB cmdzLAogCQkJCQkJCQkJCQkJCSAgTGlzdCAqY29sdW1ucyk7CiBzdGF0aWMgSnNvbkZ1bmNFeHBy ICp0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4oSnNvblRhYmxlQ29sdW1uICpqdGMsCiAJCQkJCQkJ CQkJCSAgTm9kZSAqY29udGV4dEl0ZW1FeHByLAotCQkJCQkJCQkJCQkgIExpc3QgKnBhc3NpbmdB cmdzKTsKKwkJCQkJCQkJCQkJICBMaXN0ICpwYXNzaW5nQXJncywKKwkJCQkJCQkJCQkJICBib29s IGVycm9yT25FcnJvcik7CiBzdGF0aWMgYm9vbCBpc0NvbXBvc2l0ZVR5cGUoT2lkIHR5cGlkKTsK LXN0YXRpYyBKc29uVGFibGVQbGFuICptYWtlSnNvblRhYmxlUGF0aFNjYW4oSnNvblRhYmxlUGF0 aFNwZWMgKnBhdGhzcGVjLAorc3RhdGljIEpzb25UYWJsZVBsYW4gKm1ha2VKc29uVGFibGVQYXRo U2NhbihKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwKKwkJCQkJCQkJCQkJSnNvblRhYmxlUGF0 aFNwZWMgKnBhdGhzcGVjLAorCQkJCQkJCQkJCQlKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMs CiAJCQkJCQkJCQkJCWJvb2wgZXJyb3JPbkVycm9yLAogCQkJCQkJCQkJCQlpbnQgY29sTWluLCBp bnQgY29sTWF4LAogCQkJCQkJCQkJCQlKc29uVGFibGVQbGFuICpjaGlsZHBsYW4pOwpAQCAtNTcs OCArNjIsMTQgQEAgc3RhdGljIHZvaWQgQ2hlY2tEdXBsaWNhdGVDb2x1bW5PclBhdGhOYW1lcyhK c29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwKIAkJCQkJCQkJCQkJTGlzdCAqY29sdW1ucyk7CiBz dGF0aWMgYm9vbCBMb29rdXBQYXRoT3JDb2x1bW5OYW1lKEpzb25UYWJsZVBhcnNlQ29udGV4dCAq Y3h0LCBjaGFyICpuYW1lKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1l KEpzb25UYWJsZVBhcnNlQ29udGV4dCAqY3h0KTsKLXN0YXRpYyBKc29uVGFibGVQbGFuICptYWtl SnNvblRhYmxlU2libGluZ0pvaW4oSnNvblRhYmxlUGxhbiAqbHBsYW4sCitzdGF0aWMgdm9pZCB2 YWxpZGF0ZUpzb25UYWJsZUNoaWxkUGxhbihKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwKKwkJ CQkJCQkJCSAgIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuLAorCQkJCQkJCQkJICAgTGlzdCAqY29s dW1ucyk7CitzdGF0aWMgSnNvblRhYmxlUGxhbiAqbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKGJv b2wgY3Jvc3MsCisJCQkJCQkJCQkJCSAgIEpzb25UYWJsZVBsYW4gKmxwbGFuLAogCQkJCQkJCQkJ CQkgICBKc29uVGFibGVQbGFuICpycGxhbik7CitzdGF0aWMgdm9pZAorCQkJYXBwZW5kSnNvblRh YmxlQ29sdW1ucyhKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwgTGlzdCAqY29sdW1ucywgTGlz dCAqcGFzc2luZ0FyZ3MpOwogCiAvKgogICogdHJhbnNmb3JtSnNvblRhYmxlIC0KQEAgLTc2LDYg Kzg3LDcgQEAgdHJhbnNmb3JtSnNvblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxl ICpqdCkKIAlUYWJsZUZ1bmMgICp0ZjsKIAlKc29uRnVuY0V4cHIgKmpmZTsKIAlKc29uRXhwciAg ICpqZTsKKwlKc29uVGFibGVQbGFuU3BlYyAqcGxhbiA9IGp0LT5wbGFuc3BlYzsKIAlKc29uVGFi bGVQYXRoU3BlYyAqcm9vdFBhdGhTcGVjID0ganQtPnBhdGhzcGVjOwogCWJvb2wJCWlzX2xhdGVy YWw7CiAJSnNvblRhYmxlUGFyc2VDb250ZXh0IGN4dCA9IHtwc3RhdGV9OwpAQCAtOTQsOCArMTA2 LDE3IEBAIHRyYW5zZm9ybUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAq anQpCiAJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwganQtPm9uX2Vycm9yLT5sb2NhdGlv bikpOwogCiAJY3h0LnBhdGhOYW1lSWQgPSAwOworCisJLyoKKwkgKiBHZW5lcmF0ZSBhIG5hbWUg Zm9yIHRoZSByb3cgcGF0dGVybiBwYXRoIGlmIGl0IHdhcyBub3QgZ2l2ZW4gb25lLiAgUGF0aAor CSAqIG5hbWVzIGFyZSBvcHRpb25hbCBmb3IgZXZlcnkgcGF0aCwgaW5jbHVkaW5nIHdoZW4gYSBQ TEFOIGNsYXVzZSBpcworCSAqIHByZXNlbnQ7IGEgc3BlY2lmaWMgUExBTigpIGNhbiBvbmx5IHJl ZmVyZW5jZSBuYW1lZCBwYXRocywgc28gYW4KKwkgKiB1bm5hbWVkIHBhdGggdGhhdCB0aGUgcGxh biBtdXN0IG1lbnRpb24gaXMgY2F1Z2h0IGxhdGVyIGFzIGEgcGF0aCBuYW1lCisJICogbWlzbWF0 Y2ggb3IgYSBwYXRoIG5vdCBjb3ZlcmVkIGJ5IHRoZSBwbGFuLgorCSAqLwogCWlmIChyb290UGF0 aFNwZWMtPm5hbWUgPT0gTlVMTCkKIAkJcm9vdFBhdGhTcGVjLT5uYW1lID0gZ2VuZXJhdGVKc29u VGFibGVQYXRoTmFtZSgmY3h0KTsKKwogCWN4dC5wYXRoTmFtZXMgPSBsaXN0X21ha2UxKHJvb3RQ YXRoU3BlYy0+bmFtZSk7CiAJQ2hlY2tEdXBsaWNhdGVDb2x1bW5PclBhdGhOYW1lcygmY3h0LCBq dC0+Y29sdW1ucyk7CiAKQEAgLTEzNSw3ICsxNTYsNyBAQCB0cmFuc2Zvcm1Kc29uVGFibGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KQogCSAqLwogCWN4dC5qdCA9IGp0OwogCWN4 dC50ZiA9IHRmOwotCXRmLT5wbGFuID0gKE5vZGUgKikgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1u cygmY3h0LCBqdC0+Y29sdW1ucywKKwl0Zi0+cGxhbiA9IChOb2RlICopIHRyYW5zZm9ybUpzb25U YWJsZUNvbHVtbnMoJmN4dCwgcGxhbiwganQtPmNvbHVtbnMsCiAJCQkJCQkJCQkJCQkgIGp0LT5w YXNzaW5nLAogCQkJCQkJCQkJCQkJICByb290UGF0aFNwZWMpOwogCkBAIC0yNDYsMjUgKzI2Nywx MTAgQEAgZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4 dCkKICAqIHRoZWlyIHR5cGUvY29sbGF0aW9uIGluZm9ybWF0aW9uIHRvIGN4dC0+dGYuCiAgKi8K IHN0YXRpYyBKc29uVGFibGVQbGFuICoKLXRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRh YmxlUGFyc2VDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMsCit0cmFuc2Zvcm1Kc29uVGFibGVD b2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqY3h0LAorCQkJCQkJICBKc29uVGFibGVQbGFu U3BlYyAqcGxhbnNwZWMsCisJCQkJCQkgIExpc3QgKmNvbHVtbnMsCiAJCQkJCQkgIExpc3QgKnBh c3NpbmdBcmdzLAogCQkJCQkJICBKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMpCiB7Ci0JUGFy c2VTdGF0ZSAqcHN0YXRlID0gY3h0LT5wc3RhdGU7CiAJSnNvblRhYmxlICAqanQgPSBjeHQtPmp0 OwogCVRhYmxlRnVuYyAgKnRmID0gY3h0LT50ZjsKLQlMaXN0Q2VsbCAgICpjb2w7Ci0JYm9vbAkJ b3JkaW5hbGl0eV9mb3VuZCA9IGZhbHNlOworCUpzb25UYWJsZVBhdGhTY2FuICpzY2FuOworCUpz b25UYWJsZVBsYW5TcGVjICpjaGlsZFBsYW5TcGVjOworCWJvb2wJCWRlZmF1bHRQbGFuID0gcGxh bnNwZWMgPT0gTlVMTCB8fAorCQlwbGFuc3BlYy0+cGxhbl90eXBlID09IEpTVFBfREVGQVVMVDsK IAlib29sCQllcnJvck9uRXJyb3IgPSBqdC0+b25fZXJyb3IgJiYKIAkJanQtPm9uX2Vycm9yLT5i dHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOwotCU9pZAkJCWNvbnRleHRJdGVtVHlwaWQgPSBl eHByVHlwZSh0Zi0+ZG9jZXhwcik7CiAJaW50CQkJY29sTWluLAogCQkJCWNvbE1heDsKLQlKc29u VGFibGVQbGFuICpjaGlsZHBsYW47CisJSnNvblRhYmxlUGxhbiAqY2hpbGRwbGFuID0gTlVMTDsK IAogCS8qIFN0YXJ0IG9mIGNvbHVtbiByYW5nZSAqLwogCWNvbE1pbiA9IGxpc3RfbGVuZ3RoKHRm LT5jb2x2YWxleHBycyk7CiAKKwlpZiAoZGVmYXVsdFBsYW4pCisJCWNoaWxkUGxhblNwZWMgPSBw bGFuc3BlYzsKKwllbHNlCisJeworCQkvKiB2YWxpZGF0ZSBwYXJlbnQgYW5kIGNoaWxkIHBsYW5z ICovCisJCUpzb25UYWJsZVBsYW5TcGVjICpwYXJlbnRQbGFuU3BlYzsKKworCQlpZiAocGxhbnNw ZWMtPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwkJeworCQkJaWYgKHBsYW5zcGVjLT5qb2lu X3R5cGUgIT0gSlNUUF9KT0lOX0lOTkVSICYmCisJCQkJcGxhbnNwZWMtPmpvaW5fdHlwZSAhPSBK U1RQX0pPSU5fT1VURVIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBwbGFu IGNsYXVzZSIpLAorCQkJCQkJIGVycmRldGFpbCgiRXhwZWN0ZWQgSU5ORVIgb3IgT1VURVIuIiks CisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuc3BlYy0+bG9jYXRp b24pKSk7CisKKwkJCXBhcmVudFBsYW5TcGVjID0gcGxhbnNwZWMtPnBsYW4xOworCQkJY2hpbGRQ bGFuU3BlYyA9IHBsYW5zcGVjLT5wbGFuMjsKKworCQkJQXNzZXJ0KHBhcmVudFBsYW5TcGVjLT5w bGFuX3R5cGUgIT0gSlNUUF9KT0lORUQpOworCQkJQXNzZXJ0KHBhcmVudFBsYW5TcGVjLT5wYXRo bmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwYXJlbnRQbGFuU3BlYyA9IHBsYW5zcGVjOwor CQkJY2hpbGRQbGFuU3BlYyA9IE5VTEw7CisJCX0KKworCQlpZiAoc3RyY21wKHBhcmVudFBsYW5T cGVjLT5wYXRobmFtZSwgcGF0aHNwZWMtPm5hbWUpICE9IDApCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImludmFs aWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJCSBlcnJkZXRhaWwoIlBBVEggbmFtZSBtaXNtYXRj aDogZXhwZWN0ZWQgJXMgYnV0ICVzIGlzIGdpdmVuLiIsCisJCQkJCQkJICAgcGF0aHNwZWMtPm5h bWUsIHBhcmVudFBsYW5TcGVjLT5wYXRobmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o Y3h0LT5wc3RhdGUsIHBsYW5zcGVjLT5sb2NhdGlvbikpKTsKKworCQl2YWxpZGF0ZUpzb25UYWJs ZUNoaWxkUGxhbihjeHQsIGNoaWxkUGxhblNwZWMsIGNvbHVtbnMpOworCX0KKworCWFwcGVuZEpz b25UYWJsZUNvbHVtbnMoY3h0LCBjb2x1bW5zLCBwYXNzaW5nQXJncyk7CisKKwkvKiBFbmQgb2Yg Y29sdW1uIHJhbmdlLiAqLworCWlmIChsaXN0X2xlbmd0aCh0Zi0+Y29sdmFsZXhwcnMpID09IGNv bE1pbikKKwl7CisJCS8qIE5vIGNvbHVtbnMgaW4gdGhpcyBTY2FuIGJlc2lkZSB0aGUgbmVzdGVk IG9uZXMuICovCisJCWNvbE1heCA9IGNvbE1pbiA9IC0xOworCX0KKwllbHNlCisJCWNvbE1heCA9 IGxpc3RfbGVuZ3RoKHRmLT5jb2x2YWxleHBycykgLSAxOworCisJaWYgKGNoaWxkUGxhblNwZWMg fHwgZGVmYXVsdFBsYW4pCisJeworCQkvKiB0cmFuc2Zvcm0gcmVjdXJzaXZlbHkgbmVzdGVkIGNv bHVtbnMgKi8KKwkJY2hpbGRwbGFuID0gdHJhbnNmb3JtSnNvblRhYmxlTmVzdGVkQ29sdW1ucyhj eHQsIGNoaWxkUGxhblNwZWMsCisJCQkJCQkJCQkJCQkJY29sdW1ucywgcGFzc2luZ0FyZ3MpOwor CX0KKworCS8qIHRyYW5zZm9ybSBvbmx5IG5vbi1uZXN0ZWQgY29sdW1ucyAqLworCXNjYW4gPSAo SnNvblRhYmxlUGF0aFNjYW4gKikgbWFrZUpzb25UYWJsZVBhdGhTY2FuKGN4dCwgcGF0aHNwZWMs CisJCQkJCQkJCQkJCQkJICAgcGxhbnNwZWMsCisJCQkJCQkJCQkJCQkJICAgZXJyb3JPbkVycm9y LAorCQkJCQkJCQkJCQkJCSAgIGNvbE1pbiwKKwkJCQkJCQkJCQkJCQkgICBjb2xNYXgsCisJCQkJ CQkJCQkJCQkJICAgY2hpbGRwbGFuKTsKKworCXJldHVybiAoSnNvblRhYmxlUGxhbiAqKSBzY2Fu OworfQorCisvKiBBcHBlbmQgdHJhbnNmb3JtZWQgbm9uLW5lc3RlZCBKU09OX1RBQkxFIGNvbHVt bnMgdG8gdGhlIFRhYmxlRnVuYyBub2RlICovCitzdGF0aWMgdm9pZAorYXBwZW5kSnNvblRhYmxl Q29sdW1ucyhKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwgTGlzdCAqY29sdW1ucywgTGlzdCAq cGFzc2luZ0FyZ3MpCit7CisJTGlzdENlbGwgICAqY29sOworCVBhcnNlU3RhdGUgKnBzdGF0ZSA9 IGN4dC0+cHN0YXRlOworCUpzb25UYWJsZSAgKmp0ID0gY3h0LT5qdDsKKwlUYWJsZUZ1bmMgICp0 ZiA9IGN4dC0+dGY7CisJYm9vbAkJb3JkaW5hbGl0eV9mb3VuZCA9IGZhbHNlOworCUpzb25CZWhh dmlvciAqb25fZXJyb3IgPSBqdC0+b25fZXJyb3I7CisJYm9vbAkJZXJyb3JPbkVycm9yID0gb25f ZXJyb3IgJiYKKwkJb25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisJT2lk CQkJY29udGV4dEl0ZW1UeXBpZCA9IGV4cHJUeXBlKHRmLT5kb2NleHByKTsKKwogCWZvcmVhY2go Y29sLCBjb2x1bW5zKQogCXsKIAkJSnNvblRhYmxlQ29sdW1uICpyYXdjID0gY2FzdE5vZGUoSnNv blRhYmxlQ29sdW1uLCBsZmlyc3QoY29sKSk7CkBAIC0yNzMsMTIgKzM3OSw5IEBAIHRyYW5zZm9y bUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVt bnMsCiAJCU9pZAkJCXR5cGNvbGwgPSBJbnZhbGlkT2lkOwogCQlOb2RlCSAgICpjb2xleHByOwog Ci0JCWlmIChyYXdjLT5jb2x0eXBlICE9IEpUQ19ORVNURUQpCi0JCXsKLQkJCUFzc2VydChyYXdj LT5uYW1lKTsKKwkJaWYgKHJhd2MtPm5hbWUpCiAJCQl0Zi0+Y29sbmFtZXMgPSBsYXBwZW5kKHRm LT5jb2xuYW1lcywKIAkJCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKHJhd2MtPm5hbWUpKSk7 Ci0JCX0KIAogCQkvKgogCQkgKiBEZXRlcm1pbmUgdGhlIHR5cGUgYW5kIHR5cG1vZCBmb3IgdGhl IG5ldyBjb2x1bW4uIEZPUiBPUkRJTkFMSVRZCkBAIC0zMjQsNyArNDI3LDcgQEAgdHJhbnNmb3Jt SnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwgTGlzdCAqY29sdW1u cywKIAkJCQkJcGFyYW0tPnR5cGVNb2QgPSAtMTsKIAogCQkJCQlqZmUgPSB0cmFuc2Zvcm1Kc29u VGFibGVDb2x1bW4ocmF3YywgKE5vZGUgKikgcGFyYW0sCi0JCQkJCQkJCQkJCQkgICBwYXNzaW5n QXJncyk7CisJCQkJCQkJCQkJCQkgICBwYXNzaW5nQXJncywgZXJyb3JPbkVycm9yKTsKIAogCQkJ CQljb2xleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGpmZSwKIAkJCQkJCQkJ CQkJRVhQUl9LSU5EX0ZST01fRlVOQ1RJT04pOwpAQCAtMzQ5LDIyICs0NTIsNiBAQCB0cmFuc2Zv cm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqY3h0LCBMaXN0ICpjb2x1 bW5zLAogCQl0Zi0+Y29sY29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKHRmLT5jb2xjb2xsYXRpb25z LCB0eXBjb2xsKTsKIAkJdGYtPmNvbHZhbGV4cHJzID0gbGFwcGVuZCh0Zi0+Y29sdmFsZXhwcnMs IGNvbGV4cHIpOwogCX0KLQotCS8qIEVuZCBvZiBjb2x1bW4gcmFuZ2UuICovCi0JaWYgKGxpc3Rf bGVuZ3RoKHRmLT5jb2x2YWxleHBycykgPT0gY29sTWluKQotCXsKLQkJLyogTm8gY29sdW1ucyBp biB0aGlzIFNjYW4gYmVzaWRlIHRoZSBuZXN0ZWQgb25lcy4gKi8KLQkJY29sTWF4ID0gY29sTWlu ID0gLTE7Ci0JfQotCWVsc2UKLQkJY29sTWF4ID0gbGlzdF9sZW5ndGgodGYtPmNvbHZhbGV4cHJz KSAtIDE7Ci0KLQkvKiBSZWN1cnNpdmVseSB0cmFuc2Zvcm0gbmVzdGVkIGNvbHVtbnMgKi8KLQlj aGlsZHBsYW4gPSB0cmFuc2Zvcm1Kc29uVGFibGVOZXN0ZWRDb2x1bW5zKGN4dCwgcGFzc2luZ0Fy Z3MsIGNvbHVtbnMpOwotCi0JLyogQ3JlYXRlIGEgInBhcmVudCIgc2NhbiByZXNwb25zaWJsZSBm b3IgYWxsIGNvbHVtbnMgaGFuZGxlZCBhYm92ZS4gKi8KLQlyZXR1cm4gbWFrZUpzb25UYWJsZVBh dGhTY2FuKHBhdGhzcGVjLCBlcnJvck9uRXJyb3IsIGNvbE1pbiwgY29sTWF4LAotCQkJCQkJCQkg Y2hpbGRwbGFuKTsKIH0KIAogLyoKQEAgLTM5NSw3ICs0ODIsNyBAQCBpc0NvbXBvc2l0ZVR5cGUo T2lkIHR5cGlkKQogICovCiBzdGF0aWMgSnNvbkZ1bmNFeHByICoKIHRyYW5zZm9ybUpzb25UYWJs ZUNvbHVtbihKc29uVGFibGVDb2x1bW4gKmp0YywgTm9kZSAqY29udGV4dEl0ZW1FeHByLAotCQkJ CQkJIExpc3QgKnBhc3NpbmdBcmdzKQorCQkJCQkJIExpc3QgKnBhc3NpbmdBcmdzLCBib29sIGVy cm9yT25FcnJvcikKIHsKIAlOb2RlCSAgICpwYXRoc3BlYzsKIAlKc29uRnVuY0V4cHIgKmpmZXhw ciA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CkBAIC00MzcsNiArNTI0LDggQEAgdHJhbnNmb3Jt SnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbHVtbiAqanRjLCBOb2RlICpjb250ZXh0SXRlbUV4 cHIsCiAJamZleHByLT5vdXRwdXQtPnJldHVybmluZy0+Zm9ybWF0ID0ganRjLT5mb3JtYXQ7CiAJ amZleHByLT5vbl9lbXB0eSA9IGp0Yy0+b25fZW1wdHk7CiAJamZleHByLT5vbl9lcnJvciA9IGp0 Yy0+b25fZXJyb3I7CisJaWYgKGpmZXhwci0+b25fZXJyb3IgPT0gTlVMTCAmJiBlcnJvck9uRXJy b3IpCisJCWpmZXhwci0+b25fZXJyb3IgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1Jf RVJST1IsIE5VTEwsIC0xKTsKIAlqZmV4cHItPnF1b3RlcyA9IGp0Yy0+cXVvdGVzOwogCWpmZXhw ci0+d3JhcHBlciA9IGp0Yy0+d3JhcHBlcjsKIAlqZmV4cHItPmxvY2F0aW9uID0ganRjLT5sb2Nh dGlvbjsKQEAgLTQ0NCw1NyArNTMzLDEzNyBAQCB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4oSnNv blRhYmxlQ29sdW1uICpqdGMsIE5vZGUgKmNvbnRleHRJdGVtRXhwciwKIAlyZXR1cm4gamZleHBy OwogfQogCitzdGF0aWMgSnNvblRhYmxlQ29sdW1uICoKK2ZpbmROZXN0ZWRKc29uVGFibGVDb2x1 bW4oTGlzdCAqY29sdW1ucywgY29uc3QgY2hhciAqcGF0aG5hbWUpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpqdGMg PSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYykpOworCisJCWlmIChqdGMtPmNv bHR5cGUgPT0gSlRDX05FU1RFRCAmJgorCQkJanRjLT5wYXRoc3BlYy0+bmFtZSAmJgorCQkJIXN0 cmNtcChqdGMtPnBhdGhzcGVjLT5uYW1lLCBwYXRobmFtZSkpCisJCQlyZXR1cm4ganRjOworCX0K KworCXJldHVybiBOVUxMOworfQorCiAvKgogICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtIG5lc3Rl ZCBjb2x1bW5zIGFuZCBjcmVhdGUgY2hpbGQgcGxhbihzKSB0aGF0IHdpbGwgYmUKICAqIHVzZWQg dG8gZXZhbHVhdGUgdGhlaXIgcm93IHBhdHRlcm5zLgorICoKKyAqIERlZmF1bHQgcGxhbiBpcyB0 cmFuc2Zvcm1lZCBpbnRvIGEgY3Jvc3MvdW5pb24gam9pbiBvZiBpdHMgbmVzdGVkIGNvbHVtbnMu CisgKiBTaW1wbGUgYW5kIG91dGVyL2lubmVyIHBsYW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIGEg SnNvblRhYmxlUGxhbiBieQorICogZmluZGluZyBhbmQgdHJhbnNmb3JtaW5nIGNvcnJlc3BvbmRp bmcgbmVzdGVkIGNvbHVtbi4KKyAqIFNpYmxpbmcgcGxhbnMgYXJlIHJlY3Vyc2l2ZWx5IHRyYW5z Zm9ybWVkIGludG8gYSBKc29uVGFibGVTaWJsaW5nSm9pbi4KICAqLwogc3RhdGljIEpzb25UYWJs ZVBsYW4gKgogdHJhbnNmb3JtSnNvblRhYmxlTmVzdGVkQ29sdW1ucyhKc29uVGFibGVQYXJzZUNv bnRleHQgKmN4dCwKLQkJCQkJCQkJTGlzdCAqcGFzc2luZ0FyZ3MsCi0JCQkJCQkJCUxpc3QgKmNv bHVtbnMpCisJCQkJCQkJCUpzb25UYWJsZVBsYW5TcGVjICpwbGFuc3BlYywKKwkJCQkJCQkJTGlz dCAqY29sdW1ucywKKwkJCQkJCQkJTGlzdCAqcGFzc2luZ0FyZ3MpCiB7Ci0JSnNvblRhYmxlUGxh biAqcGxhbiA9IE5VTEw7Ci0JTGlzdENlbGwgICAqbGM7CisJSnNvblRhYmxlQ29sdW1uICpqdGMg PSBOVUxMOwogCi0JLyoKLQkgKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgTkVTVEVEIENPTFVNTlMg Y2xhdXNlcyBpbiAnY29sdW1ucycsIHRoZWlyCi0JICogcmVzcGVjdGl2ZSBwbGFucyB3aWxsIGJl IGNvbWJpbmVkIHVzaW5nIGEgInNpYmxpbmcgam9pbiIgcGxhbiwgd2hpY2gKLQkgKiBlZmZlY3Rp dmVseSBkb2VzIGEgVU5JT04gb2YgdGhlIHNldHMgb2Ygcm93cyBjb21pbmcgZnJvbSBlYWNoIG5l c3RlZAotCSAqIHBsYW4uCi0JICovCi0JZm9yZWFjaChsYywgY29sdW1ucykKKwlpZiAoIXBsYW5z cGVjIHx8IHBsYW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUKQogCXsKLQkJSnNvblRh YmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYykpOwot CQlKc29uVGFibGVQbGFuICpuZXN0ZWQ7CisJCS8qIHVuc3BlY2lmaWVkIG9yIGRlZmF1bHQgcGxh biAqLworCQlKc29uVGFibGVQbGFuICpwbGFuID0gTlVMTDsKKwkJTGlzdENlbGwgICAqbGM7CisJ CWJvb2wJCWNyb3NzID0gcGxhbnNwZWMgJiYgKHBsYW5zcGVjLT5qb2luX3R5cGUgJiBKU1RQX0pP SU5fQ1JPU1MpOwogCi0JCWlmIChqdGMtPmNvbHR5cGUgIT0gSlRDX05FU1RFRCkKLQkJCWNvbnRp bnVlOworCQkvKgorCQkgKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgTkVTVEVEIENPTFVNTlMgY2xh dXNlcyBpbiAnY29sdW1ucycsIHRoZWlyCisJCSAqIHJlc3BlY3RpdmUgcGxhbnMgd2lsbCBiZSBj b21iaW5lZCB1c2luZyBhICJzaWJsaW5nIGpvaW4iIHBsYW4sCisJCSAqIHdoaWNoIGVmZmVjdGl2 ZWx5IGRvZXMgYSBVTklPTiBvZiB0aGUgc2V0cyBvZiByb3dzIGNvbWluZyBmcm9tIGVhY2gKKwkJ ICogbmVzdGVkIHBsYW4uCisJCSAqLworCQlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCQl7CisJCQlK c29uVGFibGVDb2x1bW4gKmNvbCA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxj KSk7CisJCQlKc29uVGFibGVQbGFuICpuZXN0ZWQ7CiAKLQkJaWYgKGp0Yy0+cGF0aHNwZWMtPm5h bWUgPT0gTlVMTCkKLQkJCWp0Yy0+cGF0aHNwZWMtPm5hbWUgPSBnZW5lcmF0ZUpzb25UYWJsZVBh dGhOYW1lKGN4dCk7CisJCQlpZiAoY29sLT5jb2x0eXBlICE9IEpUQ19ORVNURUQpCisJCQkJY29u dGludWU7CisKKwkJCWlmIChjb2wtPnBhdGhzcGVjLT5uYW1lID09IE5VTEwpCisJCQl7CisJCQkJ Y29sLT5wYXRoc3BlYy0+bmFtZSA9IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoY3h0KTsKKwkJ CX0KIAotCQluZXN0ZWQgPSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKGN4dCwganRjLT5jb2x1 bW5zLCBwYXNzaW5nQXJncywKLQkJCQkJCQkJCQkgICBqdGMtPnBhdGhzcGVjKTsKKwkJCW5lc3Rl ZCA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoY3h0LCBwbGFuc3BlYywgY29sLT5jb2x1bW5z LAorCQkJCQkJCQkJCQkgICBwYXNzaW5nQXJncywKKwkJCQkJCQkJCQkJICAgY29sLT5wYXRoc3Bl Yyk7CiAKLQkJaWYgKHBsYW4pCi0JCQlwbGFuID0gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKHBs YW4sIG5lc3RlZCk7CisJCQkvKiBKb2luIG5lc3RlZCBwbGFuIHdpdGggcHJldmlvdXMgc2libGlu ZyBuZXN0ZWQgcGxhbnMuICovCisJCQlpZiAocGxhbikKKwkJCQlwbGFuID0gbWFrZUpzb25UYWJs ZVNpYmxpbmdKb2luKGNyb3NzLCBwbGFuLCBuZXN0ZWQpOworCQkJZWxzZQorCQkJCXBsYW4gPSBu ZXN0ZWQ7CisJCX0KKworCQlyZXR1cm4gcGxhbjsKKwl9CisJZWxzZSBpZiAocGxhbnNwZWMtPnBs YW5fdHlwZSA9PSBKU1RQX1NJTVBMRSkKKwl7CisJCWp0YyA9IGZpbmROZXN0ZWRKc29uVGFibGVD b2x1bW4oY29sdW1ucywgcGxhbnNwZWMtPnBhdGhuYW1lKTsKKwl9CisJZWxzZSBpZiAocGxhbnNw ZWMtPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuc3BlYy0+am9pbl90 eXBlID09IEpTVFBfSk9JTl9JTk5FUiB8fAorCQkJcGxhbnNwZWMtPmpvaW5fdHlwZSA9PSBKU1RQ X0pPSU5fT1VURVIpCisJCXsKKwkJCUFzc2VydChwbGFuc3BlYy0+cGxhbjEtPnBsYW5fdHlwZSA9 PSBKU1RQX1NJTVBMRSk7CisJCQlqdGMgPSBmaW5kTmVzdGVkSnNvblRhYmxlQ29sdW1uKGNvbHVt bnMsIHBsYW5zcGVjLT5wbGFuMS0+cGF0aG5hbWUpOworCQl9CiAJCWVsc2UKLQkJCXBsYW4gPSBu ZXN0ZWQ7CisJCXsKKwkJCUpzb25UYWJsZVBsYW4gKmxwbGFuID0gdHJhbnNmb3JtSnNvblRhYmxl TmVzdGVkQ29sdW1ucyhjeHQsCisJCQkJCQkJCQkJCQkJCQkJICAgcGxhbnNwZWMtPnBsYW4xLAor CQkJCQkJCQkJCQkJCQkJCSAgIGNvbHVtbnMsCisJCQkJCQkJCQkJCQkJCQkJICAgcGFzc2luZ0Fy Z3MpOworCQkJSnNvblRhYmxlUGxhbiAqcnBsYW4gPSB0cmFuc2Zvcm1Kc29uVGFibGVOZXN0ZWRD b2x1bW5zKGN4dCwKKwkJCQkJCQkJCQkJCQkJCQkgICBwbGFuc3BlYy0+cGxhbjIsCisJCQkJCQkJ CQkJCQkJCQkJICAgY29sdW1ucywKKwkJCQkJCQkJCQkJCQkJCQkgICBwYXNzaW5nQXJncyk7CisK KwkJCXJldHVybiBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4ocGxhbnNwZWMtPmpvaW5fdHlwZSA9 PSBKU1RQX0pPSU5fQ1JPU1MsCisJCQkJCQkJCQkJCWxwbGFuLCBycGxhbik7CisJCX0KIAl9CisJ ZWxzZQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gdHlwZSAlZCIsIHBs YW5zcGVjLT5wbGFuX3R5cGUpOwogCi0JcmV0dXJuIHBsYW47CisJaWYgKCFqdGMpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJt c2coImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZSIpLAorCQkJCSBlcnJkZXRhaWwoIlBB VEggbmFtZSB3YXMgJXMgbm90IGZvdW5kIGluIG5lc3RlZCBjb2x1bW5zIGxpc3QuIiwKKwkJCQkJ CSAgIHBsYW5zcGVjLT5wYXRobmFtZSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBz dGF0ZSwgcGxhbnNwZWMtPmxvY2F0aW9uKSkpOworCisJcmV0dXJuIHRyYW5zZm9ybUpzb25UYWJs ZUNvbHVtbnMoY3h0LCBwbGFuc3BlYywganRjLT5jb2x1bW5zLAorCQkJCQkJCQkJIHBhc3NpbmdB cmdzLAorCQkJCQkJCQkJIGp0Yy0+cGF0aHNwZWMpOwogfQogCiAvKgotICogQ3JlYXRlIGEgSnNv blRhYmxlUGxhbiBmb3IgZ2l2ZW4gcGF0aCBhbmQgT04gRVJST1IgYmVoYXZpb3IuCisgKiBDcmVh dGUgdHJhbnNmb3JtZWQgSlNPTl9UQUJMRSBwYXJlbnQgcGxhbiBub2RlIGJ5IGFwcGVuZGluZyBh bGwgbm9uLW5lc3RlZAorICogY29sdW1ucyB0byB0aGUgVGFibGVGdW5jIG5vZGUgYW5kIHJlbWVt YmVyaW5nIHRoZWlyIGluZGljZXMgaW4gdGhlCisgKiBjb2x2YWxleHBycyBsaXN0LgogICoKLSAq IGNvbE1pbiBhbmQgY29sTWluIGdpdmUgdGhlIHJhbmdlIG9mIGNvbHVtbnMgY29tcHV0ZWQgYnkg dGhpcyBzY2FuIGluIHRoZQorICogY29sTWluIGFuZCBjb2xNYXggZ2l2ZSB0aGUgcmFuZ2Ugb2Yg Y29sdW1ucyBjb21wdXRlZCBieSB0aGlzIHNjYW4gaW4gdGhlCiAgKiBnbG9iYWwgZmxhdCBsaXN0 IG9mIGNvbHVtbiBleHByZXNzaW9ucyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICogSlNP Tl9UQUJMRSdzIFRhYmxlRnVuYy4gIEJvdGggYXJlIC0xIHdoZW4gYWxsIG9mIGNvbHVtbnMgYXJl IG5lc3RlZCBhbmQKICAqIHRodXMgY29tcHV0ZWQgYnkgJ2NoaWxkcGxhbicuCiAgKi8KIHN0YXRp YyBKc29uVGFibGVQbGFuICoKLW1ha2VKc29uVGFibGVQYXRoU2NhbihKc29uVGFibGVQYXRoU3Bl YyAqcGF0aHNwZWMsIGJvb2wgZXJyb3JPbkVycm9yLAorbWFrZUpzb25UYWJsZVBhdGhTY2FuKEpz b25UYWJsZVBhcnNlQ29udGV4dCAqY3h0LCBKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMsCisJ CQkJCSAgSnNvblRhYmxlUGxhblNwZWMgKnBsYW5zcGVjLAorCQkJCQkgIGJvb2wgZXJyb3JPbkVy cm9yLAogCQkJCQkgIGludCBjb2xNaW4sIGludCBjb2xNYXgsCiAJCQkJCSAgSnNvblRhYmxlUGxh biAqY2hpbGRwbGFuKQogewpAQCAtNTE4LDYgKzY4NywxMSBAQCBtYWtlSnNvblRhYmxlUGF0aFNj YW4oSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhzcGVjLCBib29sIGVycm9yT25FcnJvciwKIAlzY2Fu LT5jb2xNaW4gPSBjb2xNaW47CiAJc2Nhbi0+Y29sTWF4ID0gY29sTWF4OwogCisJaWYgKHNjYW4t PmNoaWxkKQorCQlzY2FuLT5vdXRlckpvaW4gPSBwbGFuc3BlYyA9PSBOVUxMIHx8CisJCQkocGxh bnNwZWMtPmpvaW5fdHlwZSAmIEpTVFBfSk9JTl9PVVRFUik7CisJLyogZWxzZTogZGVmYXVsdCBw bGFuIGNhc2UsIG5vIGNoaWxkcmVuIGZvdW5kICovCisKIAlyZXR1cm4gKEpzb25UYWJsZVBsYW4g Kikgc2NhbjsKIH0KIApAQCAtNTI5LDEzICs3MDMsMTAzIEBAIG1ha2VKc29uVGFibGVQYXRoU2Nh bihKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMsIGJvb2wgZXJyb3JPbkVycm9yLAogICogc2V0 cyBvZiByb3dzIGZyb20gJ2xwbGFuJyBhbmQgJ3JwbGFuJy4KICAqLwogc3RhdGljIEpzb25UYWJs ZVBsYW4gKgotbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKEpzb25UYWJsZVBsYW4gKmxwbGFuLCBK c29uVGFibGVQbGFuICpycGxhbikKK21ha2VKc29uVGFibGVTaWJsaW5nSm9pbihib29sIGNyb3Nz LCBKc29uVGFibGVQbGFuICpscGxhbiwgSnNvblRhYmxlUGxhbiAqcnBsYW4pCiB7CiAJSnNvblRh YmxlU2libGluZ0pvaW4gKmpvaW4gPSBtYWtlTm9kZShKc29uVGFibGVTaWJsaW5nSm9pbik7CiAK IAlqb2luLT5wbGFuLnR5cGUgPSBUX0pzb25UYWJsZVNpYmxpbmdKb2luOwogCWpvaW4tPmxwbGFu ID0gbHBsYW47CiAJam9pbi0+cnBsYW4gPSBycGxhbjsKKwlqb2luLT5jcm9zcyA9IGNyb3NzOwog CiAJcmV0dXJuIChKc29uVGFibGVQbGFuICopIGpvaW47CiB9CisKKy8qIENvbGxlY3Qgc2libGlu ZyBwYXRoIG5hbWVzIGZyb20gcGxhbiB0byB0aGUgc3BlY2lmaWVkIGxpc3QuICovCitzdGF0aWMg dm9pZAorY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihKc29uVGFibGVQbGFuU3Bl YyAqcGxhbiwgTGlzdCAqKnBhdGhzKQoreworCWlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9T SU1QTEUpCisJCSpwYXRocyA9IGxhcHBlbmQoKnBhdGhzLCBwbGFuLT5wYXRobmFtZSk7CisJZWxz ZSBpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVEKQorCXsKKwkJaWYgKHBsYW4tPmpv aW5fdHlwZSA9PSBKU1RQX0pPSU5fSU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQ X0pPSU5fT1VURVIpCisJCXsKKwkJCUFzc2VydChwbGFuLT5wbGFuMS0+cGxhbl90eXBlID09IEpT VFBfU0lNUExFKTsKKwkJCSpwYXRocyA9IGxhcHBlbmQoKnBhdGhzLCBwbGFuLT5wbGFuMS0+cGF0 aG5hbWUpOworCQl9CisJCWVsc2UgaWYgKHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQX0pPSU5fQ1JP U1MgfHwKKwkJCQkgcGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9VTklPTikKKwkJeworCQkJ Y29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihwbGFuLT5wbGFuMSwgcGF0aHMpOwor CQkJY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihwbGFuLT5wbGFuMiwgcGF0aHMp OworCQl9CisJCWVsc2UKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIEpTT05fVEFCTEUgam9pbiB0 eXBlICVkIiwKKwkJCQkgcGxhbi0+am9pbl90eXBlKTsKKwl9Cit9CisKKy8qCisgKiBWYWxpZGF0 ZSBjaGlsZCBKU09OX1RBQkxFIHBsYW4gYnkgY2hlY2tpbmcgdGhhdDoKKyAqICAtIGFsbCBuZXN0 ZWQgY29sdW1ucyBoYXZlIHBhdGggbmFtZXMgc3BlY2lmaWVkCisgKiAgLSBhbGwgbmVzdGVkIGNv bHVtbnMgaGF2ZSBjb3JyZXNwb25kaW5nIG5vZGUgaW4gdGhlIHNpYmxpbmcgcGxhbgorICogIC0g cGxhbiBkb2VzIG5vdCBjb250YWluIGR1cGxpY2F0ZSBvciBleHRyYSBub2RlcworICovCitzdGF0 aWMgdm9pZAordmFsaWRhdGVKc29uVGFibGVDaGlsZFBsYW4oSnNvblRhYmxlUGFyc2VDb250ZXh0 ICpjeHQsIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuLAorCQkJCQkJICAgTGlzdCAqY29sdW1ucykK K3sKKwlQYXJzZVN0YXRlICpwc3RhdGUgPSBjeHQtPnBzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsYzE7 CisJTGlzdAkgICAqc2libGluZ3MgPSBOSUw7CisJaW50CQkJbmNoaWxkcmVuID0gMDsKKworCWlm IChwbGFuKQorCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4sICZzaWJs aW5ncyk7CisKKwlmb3JlYWNoKGxjMSwgY29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAq anRjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMxKSk7CisKKwkJaWYgKGp0 Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVEKQorCQl7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQli b29sCQlmb3VuZCA9IGZhbHNlOworCisJCQkvKgorCQkJICogQSBORVNURUQgcGF0aCBuZWVkIG5v dCBiZSBuYW1lZDsgZ2VuZXJhdGUgYSBuYW1lIGlmIGl0IHdhcyBsZWZ0CisJCQkgKiB1bm5hbWVk LiAgQSBnZW5lcmF0ZWQgbmFtZSBjYW5ub3QgYmUgcmVmZXJlbmNlZCBieSBhIHNwZWNpZmljCisJ CQkgKiBQTEFOKCksIHNvIHN1Y2ggYSBwYXRoIGlzIHJlcG9ydGVkIGp1c3QgYmVsb3cgYXMgYSBu ZXN0ZWQgcGF0aAorCQkJICogbm90IGNvdmVyZWQgYnkgdGhlIHBsYW4uCisJCQkgKi8KKwkJCWlm IChqdGMtPnBhdGhzcGVjLT5uYW1lID09IE5VTEwpCisJCQkJanRjLT5wYXRoc3BlYy0+bmFtZSA9 IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoY3h0KTsKKworCQkJLyogZmluZCBuZXN0ZWQgcGF0 aCBuYW1lIGluIHRoZSBsaXN0IG9mIHNpYmxpbmcgcGF0aCBuYW1lcyAqLworCQkJZm9yZWFjaChs YzIsIHNpYmxpbmdzKQorCQkJeworCQkJCWlmICgoZm91bmQgPSAhc3RyY21wKGp0Yy0+cGF0aHNw ZWMtPm5hbWUsIGxmaXJzdChsYzIpKSkpCisJCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAoIWZv dW5kKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJCWVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRpb24iKSwK KwkJCQkJCWVycmRldGFpbCgiUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoICVzIHdhcyBub3Qg Zm91bmQuIiwKKwkJCQkJCQkJICBqdGMtPnBhdGhzcGVjLT5uYW1lKSwKKwkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKTsKKworCQkJbmNoaWxkcmVuKys7CisJ CX0KKwl9CisKKwlpZiAobGlzdF9sZW5ndGgoc2libGluZ3MpID4gbmNoaWxkcmVuKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCWVycm1z ZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJZXJyZGV0YWlsKCJQTEFO IGNsYXVzZSBjb250YWlucyBzb21lIGV4dHJhIG9yIGR1cGxpY2F0ZSBzaWJsaW5nIG5vZGVzLiIp LAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHBsYW4gPyBwbGFuLT5sb2NhdGlvbiA6 IC0xKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhl Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCA5YmY4ZWNk Y2QwYy4uYjY5Yzg3ZDg1ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpA QCAtMjQwLDYgKzI0MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFuU3RhdGUKIAog CS8qIFBhcmVudCBwbGFuLCBpZiB0aGlzIGlzIGEgbmVzdGVkIHBsYW4gKi8KIAlzdHJ1Y3QgSnNv blRhYmxlUGxhblN0YXRlICpwYXJlbnQ7CisKKwkvKiBKb2luIHR5cGUgKi8KKwlib29sCQljcm9z czsKKwlib29sCQlvdXRlckpvaW47CisJLyogUGxhbm5pbmcgY29udHJvbCBmaWVsZHMgKi8KKwli b29sCQlhZHZhbmNlTmVzdGVkOworCWJvb2wJCWFkdmFuY2VSaWdodDsKKwlib29sCQlyZXNldDsK IH0gSnNvblRhYmxlUGxhblN0YXRlOwogCiAvKiBSYW5kb20gbnVtYmVyIHRvIGlkZW50aWZ5IEpz b25UYWJsZUV4ZWNDb250ZXh0IGZvciBzYW5pdHkgY2hlY2tpbmcgKi8KQEAgLTM4OCwxMyArMzk2 LDEzIEBAIHN0YXRpYyBKc29uVGFibGVQbGFuU3RhdGUgKkpzb25UYWJsZUluaXRQbGFuKEpzb25U YWJsZUV4ZWNDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkJCSBNZW1vcnlDb250ZXh0IG1jeHQpOwog c3RhdGljIHZvaWQgSnNvblRhYmxlU2V0RG9jdW1lbnQoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0 ZSwgRGF0dW0gdmFsdWUpOwogc3RhdGljIHZvaWQgSnNvblRhYmxlUmVzZXRSb3dQYXR0ZXJuKEpz b25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBEYXR1bSBpdGVtKTsKK3N0YXRpYyB2b2lkIEpz b25UYWJsZVJlc2NhbihKc29uVGFibGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSk7CiBzdGF0aWMgYm9v bCBKc29uVGFibGVGZXRjaFJvdyhUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlKTsKIHN0YXRpYyBE YXR1bSBKc29uVGFibGVHZXRWYWx1ZShUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29s bnVtLAogCQkJCQkJCSAgIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBib29sICppc251bGwpOwog c3RhdGljIHZvaWQgSnNvblRhYmxlRGVzdHJveU9wYXF1ZShUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0 YXRlKTsKIHN0YXRpYyBib29sIEpzb25UYWJsZVBsYW5TY2FuTmV4dFJvdyhKc29uVGFibGVQbGFu U3RhdGUgKnBsYW5zdGF0ZSk7CiBzdGF0aWMgdm9pZCBKc29uVGFibGVSZXNldE5lc3RlZFBsYW4o SnNvblRhYmxlUGxhblN0YXRlICpwbGFuc3RhdGUpOwotc3RhdGljIGJvb2wgSnNvblRhYmxlUGxh bkpvaW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlKTsKIHN0YXRpYyBib29s IEpzb25UYWJsZVBsYW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlKTsKIAog Y29uc3QgVGFibGVGdW5jUm91dGluZSBKc29uYlRhYmxlUm91dGluZSA9CkBAIC00NTE0LDYgKzQ1 MjIsNyBAQCBKc29uVGFibGVJbml0UGxhbihKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0LCBKc29u VGFibGVQbGFuICpwbGFuLAogCQlKc29uVGFibGVQYXRoU2NhbiAqc2NhbiA9IChKc29uVGFibGVQ YXRoU2NhbiAqKSBwbGFuOwogCQlpbnQJCQlpOwogCisJCXBsYW5zdGF0ZS0+b3V0ZXJKb2luID0g c2Nhbi0+b3V0ZXJKb2luOwogCQlwbGFuc3RhdGUtPnBhdGggPSBEYXR1bUdldEpzb25QYXRoUChz Y2FuLT5wYXRoLT52YWx1ZS0+Y29uc3R2YWx1ZSk7CiAJCXBsYW5zdGF0ZS0+YXJncyA9IGFyZ3M7 CiAJCXBsYW5zdGF0ZS0+bWN4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShtY3h0LCAiSnNvblRh YmxlRXhlY0NvbnRleHQiLApAQCAtNDUzMyw2ICs0NTQyLDggQEAgSnNvblRhYmxlSW5pdFBsYW4o SnNvblRhYmxlRXhlY0NvbnRleHQgKmN4dCwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAl7CiAJCUpz b25UYWJsZVNpYmxpbmdKb2luICpqb2luID0gKEpzb25UYWJsZVNpYmxpbmdKb2luICopIHBsYW47 CiAKKwkJcGxhbnN0YXRlLT5jcm9zcyA9IGpvaW4tPmNyb3NzOworCiAJCXBsYW5zdGF0ZS0+bGVm dCA9IEpzb25UYWJsZUluaXRQbGFuKGN4dCwgam9pbi0+bHBsYW4sIHBhcmVudHN0YXRlLAogCQkJ CQkJCQkJCQlhcmdzLCBtY3h0KTsKIAkJcGxhbnN0YXRlLT5yaWdodCA9IEpzb25UYWJsZUluaXRQ bGFuKGN4dCwgam9pbi0+cnBsYW4sIHBhcmVudHN0YXRlLApAQCAtNDU4NywxMSArNDU5OCw3IEBA IEpzb25UYWJsZVJlc2V0Um93UGF0dGVybihKc29uVGFibGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg RGF0dW0gaXRlbSkKIAkJSnNvblZhbHVlTGlzdENsZWFyKCZwbGFuc3RhdGUtPmZvdW5kKTsKIAl9 CiAKLQkvKiBSZXNldCBwbGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGl0ZW0g bGlzdCAqLwotCUpzb25WYWx1ZUxpc3RJbml0SXRlcmF0b3IoJnBsYW5zdGF0ZS0+Zm91bmQsICZw bGFuc3RhdGUtPml0ZXIpOwotCXBsYW5zdGF0ZS0+Y3VycmVudC52YWx1ZSA9IFBvaW50ZXJHZXRE YXR1bShOVUxMKTsKLQlwbGFuc3RhdGUtPmN1cnJlbnQuaXNudWxsID0gdHJ1ZTsKLQlwbGFuc3Rh dGUtPm9yZGluYWwgPSAwOworCUpzb25UYWJsZVJlc2NhbihwbGFuc3RhdGUpOwogfQogCiAvKgpA QCAtNDYwMiwxNiArNDYwOSw5MyBAQCBKc29uVGFibGVSZXNldFJvd1BhdHRlcm4oSnNvblRhYmxl UGxhblN0YXRlICpwbGFuc3RhdGUsIERhdHVtIGl0ZW0pCiBzdGF0aWMgYm9vbAogSnNvblRhYmxl UGxhbk5leHRSb3coSnNvblRhYmxlUGxhblN0YXRlICpwbGFuc3RhdGUpCiB7Ci0JaWYgKElzQShw bGFuc3RhdGUtPnBsYW4sIEpzb25UYWJsZVBhdGhTY2FuKSkKLQkJcmV0dXJuIEpzb25UYWJsZVBs YW5TY2FuTmV4dFJvdyhwbGFuc3RhdGUpOwotCWVsc2UgaWYgKElzQShwbGFuc3RhdGUtPnBsYW4s IEpzb25UYWJsZVNpYmxpbmdKb2luKSkKLQkJcmV0dXJuIEpzb25UYWJsZVBsYW5Kb2luTmV4dFJv dyhwbGFuc3RhdGUpOworCWlmIChJc0EocGxhbnN0YXRlLT5wbGFuLCBKc29uVGFibGVTaWJsaW5n Sm9pbikpCisJeworCQlpZiAocGxhbnN0YXRlLT5hZHZhbmNlUmlnaHQpCisJCXsKKwkJCS8qIGZl dGNoIG5leHQgaW5uZXIgcm93ICovCisJCQlpZiAoSnNvblRhYmxlUGxhbk5leHRSb3cocGxhbnN0 YXRlLT5yaWdodCkpCisJCQkJcmV0dXJuIHRydWU7CisKKwkJCS8qIGlubmVyIHJvd3MgYXJlIGV4 aGF1c3RlZCAqLworCQkJaWYgKHBsYW5zdGF0ZS0+Y3Jvc3MpCisJCQkJcGxhbnN0YXRlLT5hZHZh bmNlUmlnaHQgPSBmYWxzZTsJLyogbmV4dCBvdXRlciByb3cgKi8KKwkJCWVsc2UKKwkJCQlyZXR1 cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisJCX0KKworCQl3aGlsZSAoIXBsYW5zdGF0ZS0+ YWR2YW5jZVJpZ2h0KQorCQl7CisJCQkvKiBmZXRjaCBuZXh0IG91dGVyIHJvdyAqLworCQkJYm9v bAkJbW9yZSA9IEpzb25UYWJsZVBsYW5OZXh0Um93KHBsYW5zdGF0ZS0+bGVmdCk7CisKKwkJCWlm IChwbGFuc3RhdGUtPmNyb3NzKQorCQkJeworCQkJCWlmICghbW9yZSkKKwkJCQkJcmV0dXJuIGZh bHNlOwkvKiBlbmQgb2Ygc2NhbiAqLworCisJCQkJSnNvblRhYmxlUmVzY2FuKHBsYW5zdGF0ZS0+ cmlnaHQpOworCisJCQkJaWYgKCFKc29uVGFibGVQbGFuTmV4dFJvdyhwbGFuc3RhdGUtPnJpZ2h0 KSkKKwkJCQkJY29udGludWU7CS8qIG5leHQgb3V0ZXIgcm93ICovCisKKwkJCQlwbGFuc3RhdGUt PmFkdmFuY2VSaWdodCA9IHRydWU7IC8qIG5leHQgaW5uZXIgcm93ICovCisJCQl9CisJCQllbHNl IGlmICghbW9yZSkKKwkJCXsKKwkJCQlpZiAoIUpzb25UYWJsZVBsYW5OZXh0Um93KHBsYW5zdGF0 ZS0+cmlnaHQpKQorCQkJCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCQlw bGFuc3RhdGUtPmFkdmFuY2VSaWdodCA9IHRydWU7IC8qIG5leHQgaW5uZXIgcm93ICovCisJCQl9 CisKKwkJCWJyZWFrOworCQl9CisJfQogCWVsc2UKLQkJZWxvZyhFUlJPUiwgImludmFsaWQgSnNv blRhYmxlUGxhbiAlZCIsIChpbnQpIHBsYW5zdGF0ZS0+cGxhbi0+dHlwZSk7CisJeworCQkvKiBy ZXNldCBjb250ZXh0IGl0ZW0gaWYgcmVxdWVzdGVkICovCisJCWlmIChwbGFuc3RhdGUtPnJlc2V0 KQorCQl7CisJCQlKc29uVGFibGVQbGFuU3RhdGUgKnBhcmVudCA9IHBsYW5zdGF0ZS0+cGFyZW50 OworCisJCQlBc3NlcnQocGFyZW50ICE9IE5VTEwgJiYgIXBhcmVudC0+Y3VycmVudC5pc251bGwp OworCQkJSnNvblRhYmxlUmVzZXRSb3dQYXR0ZXJuKHBsYW5zdGF0ZSwgcGFyZW50LT5jdXJyZW50 LnZhbHVlKTsKKwkJCXBsYW5zdGF0ZS0+cmVzZXQgPSBmYWxzZTsKKwkJfQorCisJCWlmIChwbGFu c3RhdGUtPmFkdmFuY2VOZXN0ZWQpCisJCXsKKwkJCS8qIGZldGNoIG5leHQgbmVzdGVkIHJvdyAq LworCQkJcGxhbnN0YXRlLT5hZHZhbmNlTmVzdGVkID0gSnNvblRhYmxlUGxhbk5leHRSb3cocGxh bnN0YXRlLT5uZXN0ZWQpOworCQkJaWYgKHBsYW5zdGF0ZS0+YWR2YW5jZU5lc3RlZCkKKwkJCQly ZXR1cm4gdHJ1ZTsKKwkJfQorCisJCWZvciAoOzspCisJCXsKKwkJCWlmICghSnNvblRhYmxlUGxh blNjYW5OZXh0Um93KHBsYW5zdGF0ZSkpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQlpZiAocGxh bnN0YXRlLT5uZXN0ZWQgPT0gTlVMTCkKKwkJCQlicmVhazsKKworCQkJSnNvblRhYmxlUmVzZXRO ZXN0ZWRQbGFuKHBsYW5zdGF0ZS0+bmVzdGVkKTsKKwkJCXBsYW5zdGF0ZS0+YWR2YW5jZU5lc3Rl ZCA9IEpzb25UYWJsZVBsYW5OZXh0Um93KHBsYW5zdGF0ZS0+bmVzdGVkKTsKKworCQkJaWYgKCFw bGFuc3RhdGUtPmFkdmFuY2VOZXN0ZWQgJiYgIXBsYW5zdGF0ZS0+b3V0ZXJKb2luKQorCQkJCWNv bnRpbnVlOwogCi0JQXNzZXJ0KGZhbHNlKTsKLQkvKiBBcHBlYXNlIGNvbXBpbGVyICovCi0JcmV0 dXJuIGZhbHNlOworCQkJLyoKKwkJCSAqIFdlIGhhdmUgYSByb3cgdG8gcmV0dXJuOiBlaXRoZXIg dGhlIG5lc3RlZCBwbGFuIHByb2R1Y2VkIG9uZSwKKwkJCSAqIG9yIHRoaXMgaXMgYW4gb3V0ZXIg am9pbiBhbmQgd2UgZW1pdCB0aGUgcGFyZW50IHJvdyB3aXRoIHRoZQorCQkJICogbmVzdGVkIGNv bHVtbnMgc2V0IHRvIE5VTEwuCisJCQkgKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJcmV0dXJu IHRydWU7CiB9CiAKIC8qCkBAIC00Njk3LDQ3ICs0NzgxLDI3IEBAIEpzb25UYWJsZVJlc2V0TmVz dGVkUGxhbihKc29uVGFibGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSkKIAl7CiAJCUpzb25UYWJsZVBs YW5TdGF0ZSAqcGFyZW50ID0gcGxhbnN0YXRlLT5wYXJlbnQ7CiAKLQkJaWYgKCFwYXJlbnQtPmN1 cnJlbnQuaXNudWxsKQotCQkJSnNvblRhYmxlUmVzZXRSb3dQYXR0ZXJuKHBsYW5zdGF0ZSwgcGFy ZW50LT5jdXJyZW50LnZhbHVlKTsKKwkJcGxhbnN0YXRlLT5yZXNldCA9IHRydWU7CisJCXBsYW5z dGF0ZS0+YWR2YW5jZU5lc3RlZCA9IGZhbHNlOworCisJCWlmIChwbGFuc3RhdGUtPm5lc3RlZCkK KwkJCUpzb25UYWJsZVJlc2V0TmVzdGVkUGxhbihwbGFuc3RhdGUtPm5lc3RlZCk7CiAKIAkJLyoK IAkJICogSWYgdGhpcyBwbGFuIGl0c2VsZiBoYXMgYSBjaGlsZCBuZXN0ZWQgcGxhbiwgaXQgd2ls bCBiZSByZXNldCB3aGVuCiAJCSAqIHRoZSBjYWxsZXIgY2FsbHMgSnNvblRhYmxlUGxhbk5leHRS b3coKSBvbiB0aGlzIHBsYW4uCiAJCSAqLworCQlpZiAoIXBhcmVudC0+Y3VycmVudC5pc251bGwp CisJCQlKc29uVGFibGVSZXNldFJvd1BhdHRlcm4ocGxhbnN0YXRlLCBwYXJlbnQtPmN1cnJlbnQu dmFsdWUpOwogCX0KIAllbHNlIGlmIChJc0EocGxhbnN0YXRlLT5wbGFuLCBKc29uVGFibGVTaWJs aW5nSm9pbikpCiAJewogCQlKc29uVGFibGVSZXNldE5lc3RlZFBsYW4ocGxhbnN0YXRlLT5sZWZ0 KTsKIAkJSnNvblRhYmxlUmVzZXROZXN0ZWRQbGFuKHBsYW5zdGF0ZS0+cmlnaHQpOworCQlwbGFu c3RhdGUtPmFkdmFuY2VSaWdodCA9IGZhbHNlOwogCX0KIH0KIAotLyoKLSAqIEZldGNoIHRoZSBu ZXh0IHJvdyBmcm9tIGEgSnNvblRhYmxlU2libGluZ0pvaW4uCi0gKgotICogVGhpcyBpcyBlc3Nl bnRpYWxseSBhIFVOSU9OIGJldHdlZW4gdGhlIHJvd3MgZnJvbSBsZWZ0IGFuZCByaWdodCBzaWJs aW5ncy4KLSAqLwotc3RhdGljIGJvb2wKLUpzb25UYWJsZVBsYW5Kb2luTmV4dFJvdyhKc29uVGFi bGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSkKLXsKLQotCS8qIEZldGNoIHJvdyBmcm9tIGxlZnQgc2li bGluZy4gKi8KLQlpZiAoIUpzb25UYWJsZVBsYW5OZXh0Um93KHBsYW5zdGF0ZS0+bGVmdCkpCi0J ewotCQkvKgotCQkgKiBMZWZ0IHNpYmxpbmcgcmFuIG91dCBvZiByb3dzLCBzbyBzdGFydCBmZXRj aGluZyBmcm9tIHRoZSByaWdodAotCQkgKiBzaWJsaW5nLgotCQkgKi8KLQkJaWYgKCFKc29uVGFi bGVQbGFuTmV4dFJvdyhwbGFuc3RhdGUtPnJpZ2h0KSkKLQkJewotCQkJLyogUmlnaHQgc2libGlu ZyByYW4gb3V0IG9mIHJvd3MgdG9vLCBzbyB0aGVyZSBhcmUgbm8gbW9yZSByb3dzLiAqLwotCQkJ cmV0dXJuIGZhbHNlOwotCQl9Ci0JfQotCi0JcmV0dXJuIHRydWU7Ci19Ci0KIC8qCiAgKiBKc29u VGFibGVGZXRjaFJvdwogICoJCVByZXBhcmUgdGhlIG5leHQgImN1cnJlbnQiIHJvdyBmb3IgdXBj b21pbmcgR2V0VmFsdWUgY2FsbHMuCkBAIC00ODAyLDMgKzQ4NjYsMjYgQEAgSnNvblRhYmxlR2V0 VmFsdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwgaW50IGNvbG51bSwKIAogCXJldHVybiBy ZXN1bHQ7CiB9CisKKy8qIFJlY3Vyc2l2ZWx5IHJlc2V0IHBsYW5zdGF0ZSBhbmQgaXRzIGNoaWxk IG5vZGVzICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUmVzY2FuKEpzb25UYWJsZVBsYW5TdGF0 ZSAqcGxhbnN0YXRlKQoreworCWlmIChJc0EocGxhbnN0YXRlLT5wbGFuLCBKc29uVGFibGVQYXRo U2NhbikpCisJeworCQkvKiBSZXNldCBwbGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGl0ZW0gbGlzdCAqLworCQlKc29uVmFsdWVMaXN0SW5pdEl0ZXJhdG9yKCZwbGFuc3RhdGUt PmZvdW5kLCAmcGxhbnN0YXRlLT5pdGVyKTsKKwkJcGxhbnN0YXRlLT5jdXJyZW50LnZhbHVlID0g UG9pbnRlckdldERhdHVtKE5VTEwpOworCQlwbGFuc3RhdGUtPmN1cnJlbnQuaXNudWxsID0gdHJ1 ZTsKKwkJcGxhbnN0YXRlLT5vcmRpbmFsID0gMDsKKworCQlpZiAocGxhbnN0YXRlLT5uZXN0ZWQp CisJCQlKc29uVGFibGVSZXNjYW4ocGxhbnN0YXRlLT5uZXN0ZWQpOworCX0KKwllbHNlIGlmIChJ c0EocGxhbnN0YXRlLT5wbGFuLCBKc29uVGFibGVTaWJsaW5nSm9pbikpCisJeworCQlKc29uVGFi bGVSZXNjYW4ocGxhbnN0YXRlLT5sZWZ0KTsKKwkJSnNvblRhYmxlUmVzY2FuKHBsYW5zdGF0ZS0+ cmlnaHQpOworCQlwbGFuc3RhdGUtPmFkdmFuY2VSaWdodCA9IGZhbHNlOworCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA4OGRlNWMwNDgxYy4uOGI3MjVlZDFhZGIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTEyNjc1LDYgKzEyNjc1LDg5IEBAIGdldF9qc29u X3RhYmxlX25lc3RlZF9jb2x1bW5zKFRhYmxlRnVuYyAqdGYsIEpzb25UYWJsZVBsYW4gKnBsYW4s CiAJfQogfQogCisvKgorICoganNvbl90YWJsZV9wbGFuX2lzX2RlZmF1bHQgLSBkb2VzIHRoaXMg cGxhbiBtYXRjaCB0aGUgaW1wbGljaXQgZGVmYXVsdD8KKyAqCisgKiBXaGVuIG5vIFBMQU4gY2xh dXNlIGlzIGdpdmVuLCBKU09OX1RBQkxFIGJ1aWxkcyBhIGRlZmF1bHQgcGxhbiB0aGF0IGpvaW5z CisgKiBldmVyeSBuZXN0ZWQgcGF0aCB0byBpdHMgcGFyZW50IHdpdGggT1VURVIgYW5kIGV2ZXJ5 IHNldCBvZiBzaWJsaW5nIHBhdGhzCisgKiB3aXRoIFVOSU9OIChzZWUgdHJhbnNmb3JtSnNvblRh YmxlQ29sdW1ucygpKS4gIFN1Y2ggYSBwbGFuIGlzIGZ1bGx5IGltcGxpZWQKKyAqIGJ5IHRoZSBO RVNURUQgQ09MVU1OUyBzdHJ1Y3R1cmUsIHNvIHdlIG5lZWQgbm90IChhbmQsIHRvIG1hdGNoIHRo ZSBpbnB1dCwKKyAqIHNob3VsZCBub3QpIHByaW50IGEgUExBTiBjbGF1c2UgZm9yIGl0OyB3ZSBv bmx5IGRlcGFyc2UgYSBQTEFOIGNsYXVzZSB3aGVuCisgKiB0aGUgcGxhbiBkZXZpYXRlcyBmcm9t IHRoZSBkZWZhdWx0LCBpLmUuIHVzZXMgYW4gSU5ORVIgb3IgQ1JPU1Mgam9pbgorICogc29tZXdo ZXJlLiAgVGhpcyBmb2xsb3dzIHRoZSB1c3VhbCBydWxldXRpbHMgY29udmVudGlvbiBvZiBvbWl0 dGluZyBhIGNsYXVzZQorICogdGhhdCBtZXJlbHkgcmVzdGF0ZXMgdGhlIGRlZmF1bHQgKGNmLiBn ZXRfanNvbl9leHByX29wdGlvbnMoKSBmb3IgT04KKyAqIEVNUFRZL09OIEVSUk9SLCBvciB0aGUg TlVMTFMgRklSU1QvTEFTVCBoYW5kbGluZyBpbiBnZXRfcnVsZV9vcmRlcmJ5KCkpLgorICovCitz dGF0aWMgYm9vbAoranNvbl90YWJsZV9wbGFuX2lzX2RlZmF1bHQoSnNvblRhYmxlUGxhbiAqcGxh bikKK3sKKwlpZiAoSXNBKHBsYW4sIEpzb25UYWJsZVBhdGhTY2FuKSkKKwl7CisJCUpzb25UYWJs ZVBhdGhTY2FuICpzY2FuID0gY2FzdE5vZGUoSnNvblRhYmxlUGF0aFNjYW4sIHBsYW4pOworCisJ CWlmIChzY2FuLT5jaGlsZCkKKwkJeworCQkJaWYgKCFzY2FuLT5vdXRlckpvaW4pCisJCQkJcmV0 dXJuIGZhbHNlOwkvKiBJTk5FUiBpcyBub3QgdGhlIGRlZmF1bHQgKi8KKwkJCXJldHVybiBqc29u X3RhYmxlX3BsYW5faXNfZGVmYXVsdChzY2FuLT5jaGlsZCk7CisJCX0KKworCQlyZXR1cm4gdHJ1 ZTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlU2libGluZ0pvaW4gKmpvaW4gPSBjYXN0Tm9k ZShKc29uVGFibGVTaWJsaW5nSm9pbiwgcGxhbik7CisKKwkJaWYgKGpvaW4tPmNyb3NzKQorCQkJ cmV0dXJuIGZhbHNlOwkJLyogQ1JPU1MgaXMgbm90IHRoZSBkZWZhdWx0ICovCisJCXJldHVybiBq c29uX3RhYmxlX3BsYW5faXNfZGVmYXVsdChqb2luLT5scGxhbikgJiYKKwkJCWpzb25fdGFibGVf cGxhbl9pc19kZWZhdWx0KGpvaW4tPnJwbGFuKTsKKwl9Cit9CisKKy8qCisgKiBnZXRfanNvbl90 YWJsZV9wbGFuIC0gUGFyc2UgYmFjayBhIEpTT05fVEFCTEUgcGxhbgorICovCitzdGF0aWMgdm9p ZAorZ2V0X2pzb25fdGFibGVfcGxhbihUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQbGFuICpwbGFu LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJCWJvb2wgcGFyZW50aGVzaXplKQorewor CWlmIChwYXJlbnRoZXNpemUpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1Ziwg JygnKTsKKworCWlmIChJc0EocGxhbiwgSnNvblRhYmxlUGF0aFNjYW4pKQorCXsKKwkJSnNvblRh YmxlUGF0aFNjYW4gKnMgPSBjYXN0Tm9kZShKc29uVGFibGVQYXRoU2NhbiwgcGxhbik7CisKKwkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIHF1b3RlX2lkZW50aWZpZXIocy0+ cGF0aC0+bmFtZSkpOworCisJCWlmIChzLT5jaGlsZCkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhjb250ZXh0LT5idWYsCisJCQkJCQkJCSAgIHMtPm91dGVySm9pbiA/ICIgT1VURVIg IiA6ICIgSU5ORVIgIik7CisJCQlnZXRfanNvbl90YWJsZV9wbGFuKHRmLCBzLT5jaGlsZCwgY29u dGV4dCwKKwkJCQkJCQkJSXNBKHMtPmNoaWxkLCBKc29uVGFibGVTaWJsaW5nSm9pbikpOworCQl9 CisJfQorCWVsc2UgaWYgKElzQShwbGFuLCBKc29uVGFibGVTaWJsaW5nSm9pbikpCisJeworCQlK c29uVGFibGVTaWJsaW5nSm9pbiAqaiA9IChKc29uVGFibGVTaWJsaW5nSm9pbiAqKSBwbGFuOwor CisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIGotPmxwbGFuLCBjb250ZXh0LAorCQkJCQkJCUlz QShqLT5scGxhbiwgSnNvblRhYmxlU2libGluZ0pvaW4pIHx8CisJCQkJCQkJY2FzdE5vZGUoSnNv blRhYmxlUGF0aFNjYW4sIGotPmxwbGFuKS0+Y2hpbGQpOworCisJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoY29udGV4dC0+YnVmLCBqLT5jcm9zcyA/ICIgQ1JPU1MgIiA6ICIgVU5JT04gIik7CisK KwkJZ2V0X2pzb25fdGFibGVfcGxhbih0Ziwgai0+cnBsYW4sIGNvbnRleHQsCisJCQkJCQkJSXNB KGotPnJwbGFuLCBKc29uVGFibGVTaWJsaW5nSm9pbikgfHwKKwkJCQkJCQljYXN0Tm9kZShKc29u VGFibGVQYXRoU2Nhbiwgai0+cnBsYW4pLT5jaGlsZCk7CisJfQorCisJaWYgKHBhcmVudGhlc2l6 ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKScpOworfQorCiAvKgog ICogZ2V0X2pzb25fdGFibGVfY29sdW1ucyAtIFBhcnNlIGJhY2sgSlNPTl9UQUJMRSBjb2x1bW5z CiAgKi8KQEAgLTEyNjg0LDYgKzEyNzY3LDcgQEAgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJs ZUZ1bmMgKnRmLCBKc29uVGFibGVQYXRoU2NhbiAqc2NhbiwKIAkJCQkJICAgYm9vbCBzaG93aW1w bGljaXQpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJSnNvbkV4cHIgICAq amV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwgdGYtPmRvY2V4cHIpOwogCUxpc3RDZWxsICAgKmxj X2NvbG5hbWU7CiAJTGlzdENlbGwgICAqbGNfY29sdHlwZTsKIAlMaXN0Q2VsbCAgICpsY19jb2x0 eXBtb2Q7CkBAIC0xMjc2Myw2ICsxMjg0Nyw5IEBAIGdldF9qc29uX3RhYmxlX2NvbHVtbnMoVGFi bGVGdW5jICp0ZiwgSnNvblRhYmxlUGF0aFNjYW4gKnNjYW4sCiAJCQlkZWZhdWx0X2JlaGF2aW9y ID0gSlNPTl9CRUhBVklPUl9OVUxMOwogCQl9CiAKKwkJaWYgKGpleHByLT5vbl9lcnJvci0+YnR5 cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCWRlZmF1bHRfYmVoYXZpb3IgPSBKU09OX0JF SEFWSU9SX0VSUk9SOworCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFBBVEggIik7 CiAKIAkJZ2V0X2pzb25fcGF0aF9zcGVjKGNvbGV4cHItPnBhdGhfc3BlYywgY29udGV4dCwgc2hv d2ltcGxpY2l0KTsKQEAgLTEyODQwLDYgKzEyOTI3LDE4IEBAIGdldF9qc29uX3RhYmxlKFRhYmxl RnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCiAJ Z2V0X2pzb25fdGFibGVfY29sdW1ucyh0ZiwgY2FzdE5vZGUoSnNvblRhYmxlUGF0aFNjYW4sIHRm LT5wbGFuKSwgY29udGV4dCwKIAkJCQkJCSAgIHNob3dpbXBsaWNpdCk7CiAKKwkvKgorCSAqIERl cGFyc2UgYSBQTEFOIGNsYXVzZSBvbmx5IGZvciBhIG5vbi1kZWZhdWx0IHBsYW47IHRoZSBkZWZh dWx0IHBsYW4gaXMKKwkgKiBpbXBsaWVkIGJ5IHRoZSBORVNURUQgQ09MVU1OUyBzdHJ1Y3R1cmUg KHNlZQorCSAqIGpzb25fdGFibGVfcGxhbl9pc19kZWZhdWx0KS4KKwkgKi8KKwlpZiAocm9vdC0+ Y2hpbGQgJiYgIWpzb25fdGFibGVfcGxhbl9pc19kZWZhdWx0KChKc29uVGFibGVQbGFuICopIHJv b3QpKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRDb250 ZXh0S2V5d29yZChjb250ZXh0LCAiUExBTiAiLCAwLCAwLCAwKTsKKwkJZ2V0X2pzb25fdGFibGVf cGxhbih0ZiwgKEpzb25UYWJsZVBsYW4gKikgcm9vdCwgY29udGV4dCwgdHJ1ZSk7CisJfQorCiAJ aWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSkK IAkJZ2V0X2pzb25fYmVoYXZpb3IoamV4cHItPm9uX2Vycm9yLCBjb250ZXh0LCAiRVJST1IiKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCBiZjU0ZDM5ZmViMC4uNGM5ZDJlYzdjMDkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCkBAIC0xMjQsNSArMTI0LDEwIEBAIGV4dGVybiBKc29uVGFibGVQYXRo ICptYWtlSnNvblRhYmxlUGF0aChDb25zdCAqcGF0aHZhbHVlLCBjaGFyICpwYXRobmFtZSk7CiBl eHRlcm4gSnNvblRhYmxlUGF0aFNwZWMgKm1ha2VKc29uVGFibGVQYXRoU3BlYyhjaGFyICpzdHJp bmcsIGNoYXIgKm5hbWUsCiAJCQkJCQkJCQkJCQlpbnQgc3RyaW5nX2xvY2F0aW9uLAogCQkJCQkJ CQkJCQkJaW50IG5hbWVfbG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKm1ha2VKc29uVGFibGVEZWZh dWx0UGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgam9pbl90eXBlLAorCQkJCQkJCQkJICBpbnQg bG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKm1ha2VKc29uVGFibGVTaW1wbGVQbGFuKGNoYXIgKnBh dGhuYW1lLCBpbnQgbG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKm1ha2VKc29uVGFibGVKb2luZWRQ bGFuKEpzb25UYWJsZVBsYW5Kb2luVHlwZSB0eXBlLAorCQkJCQkJCQkJIE5vZGUgKnBsYW4xLCBO b2RlICpwbGFuMiwgaW50IGxvY2F0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8qIE1BS0VGVU5DX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlMDM1NTYzOTlhYi4uNzdmNjlmOTQ2MDcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE5ODIsNiArMTk4Miw0OCBAQCB0eXBlZGVmIHN0cnVj dCBKc29uVGFibGVQYXRoU3BlYwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogbG9jYXRpb24gb2Yg J3N0cmluZycgKi8KIH0gSnNvblRhYmxlUGF0aFNwZWM7CiAKKy8qCisgKiBKc29uVGFibGVQbGFu VHlwZSAtCisgKgkJZmxhZ3MgZm9yIEpTT05fVEFCTEUgcGxhbiBub2RlIHR5cGVzIHJlcHJlc2Vu dGF0aW9uCisgKi8KK3R5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuVHlwZQoreworCUpTVFBfREVG QVVMVCwKKwlKU1RQX1NJTVBMRSwKKwlKU1RQX0pPSU5FRCwKK30gSnNvblRhYmxlUGxhblR5cGU7 CisKKy8qCisgKiBKc29uVGFibGVQbGFuSm9pblR5cGUgLQorICoJCUpTT05fVEFCTEUgam9pbiB0 eXBlcyBmb3IgSlNUUF9KT0lORUQgcGxhbnMKKyAqLwordHlwZWRlZiBlbnVtIEpzb25UYWJsZVBs YW5Kb2luVHlwZQoreworCUpTVFBfSk9JTl9JTk5FUiA9IDB4MDEsCisJSlNUUF9KT0lOX09VVEVS ID0gMHgwMiwKKwlKU1RQX0pPSU5fQ1JPU1MgPSAweDA0LAorCUpTVFBfSk9JTl9VTklPTiA9IDB4 MDgsCit9IEpzb25UYWJsZVBsYW5Kb2luVHlwZTsKKworLyoKKyAqIEpzb25UYWJsZVBsYW5TcGVj IC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUncyBQTEFO IGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFuU3BlYworeworCU5vZGVU YWcJCXR5cGU7CisKKwlKc29uVGFibGVQbGFuVHlwZSBwbGFuX3R5cGU7CS8qIHBsYW4gdHlwZSAq LworCUpzb25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGU7CS8qIGpvaW4gdHlwZSAoZm9yIGpv aW5lZCBwbGFuIG9ubHkpICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5hbWUgKGZv ciBzaW1wbGUgcGxhbiBvbmx5KSAqLworCisJLyogRm9yIGpvaW5lZCBwbGFucyAqLworCXN0cnVj dCBKc29uVGFibGVQbGFuU3BlYyAqcGxhbjE7CS8qIGZpcnN0IGpvaW5lZCBwbGFuICovCisJc3Ry dWN0IEpzb25UYWJsZVBsYW5TcGVjICpwbGFuMjsJLyogc2Vjb25kIGpvaW5lZCBwbGFuICovCisK KwlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3du ICovCit9IEpzb25UYWJsZVBsYW5TcGVjOworCiAvKgogICogSnNvblRhYmxlIC0KICAqCQl1bnRy YW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUKQEAgLTE5OTMsNiArMjAzNSw3 IEBAIHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZQogCUpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3Bl YzsJLyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gKi8KIAlMaXN0CSAgICpwYXNzaW5nOwkJLyog bGlzdCBvZiBQQVNTSU5HIGNsYXVzZSBhcmd1bWVudHMsIGlmIGFueSAqLwogCUxpc3QJICAgKmNv bHVtbnM7CQkvKiBsaXN0IG9mIEpzb25UYWJsZUNvbHVtbiAqLworCUpzb25UYWJsZVBsYW5TcGVj ICpwbGFuc3BlYzsJLyogam9pbiBwbGFuLCBpZiBzcGVjaWZpZWQgKi8KIAlKc29uQmVoYXZpb3Ig Km9uX2Vycm9yOwkJLyogT04gRVJST1IgYmVoYXZpb3IgKi8KIAlBbGlhcwkgICAqYWxpYXM7CQkJ LyogdGFibGUgYWxpYXMgaW4gRlJPTSBjbGF1c2UgKi8KIAlib29sCQlsYXRlcmFsOwkJLyogZG9l cyBpdCBoYXZlIExBVEVSQUwgcHJlZml4PyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBiYjA1 YWVlYmVlNC4uY2FjZWY3ZDQxNTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xOTI2LDYgKzE5 MjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQYXRoU2NhbgogCiAJLyogUGxhbihzKSBm b3IgbmVzdGVkIGNvbHVtbnMsIGlmIGFueS4gKi8KIAlKc29uVGFibGVQbGFuICpjaGlsZDsKKwli b29sCQlvdXRlckpvaW47CQkvKiBvdXRlciBvciBpbm5lciBqb2luIGZvciBuZXN0ZWQgY29sdW1u cz8gKi8KIAogCS8qCiAJICogMC1iYXNlZCBpbmRleCBpbiBUYWJsZUZ1bmMuY29sdmFsZXhwcnMg b2YgdGhlIDFzdCBhbmQgdGhlIGxhc3QgY29sdW1uCkBAIC0xOTQ3LDYgKzE5NDgsNyBAQCB0eXBl ZGVmIHN0cnVjdCBKc29uVGFibGVTaWJsaW5nSm9pbgogCiAJSnNvblRhYmxlUGxhbiAqbHBsYW47 CiAJSnNvblRhYmxlUGxhbiAqcnBsYW47CisJYm9vbAkJY3Jvc3M7CiB9IEpzb25UYWJsZVNpYmxp bmdKb2luOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3NxbGpzb25fanNvbnRhYmxlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CmluZGV4IDQ1OGM1YWFhNWIwLi5lNjkwZDc5YzY4 OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pzb250YWJs ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pzb250YWJsZS5v dXQKQEAgLTc3NCw2ICs3NzQsMjQ0IEBAIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKIEVSUk9S OiAgZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG9yIHBhdGggbmFtZTogYQogTElORSAxMDog ICAgTkVTVEVEIFBBVEggJyQnIEFTIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBKU09OX1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCistLSBQYXRoIG5hbWVzIGFy ZSBub3QgcmVxdWlyZWQgb24gdGhlIHJvdyBwYXR0ZXJuIG9yIHRoZSBORVNURUQgcGF0aHMsIGV2 ZW4KKy0tIHdoZW4gYSBQTEFOIGNsYXVzZSBpcyBwcmVzZW50OyBhIG5hbWUgaXMgZ2VuZXJhdGVk IGZvciBhbnkgcGF0aCBsZWZ0CistLSB1bm5hbWVkLiAgVGhlIG5leHQgdHdvIHF1ZXJpZXMgc3Vj Y2VlZC4KKy0tIFBMQU4gREVGQVVMVCB3aXRoIGFuIHVubmFtZWQgcm93IHBhdHRlcm4KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnW10nLCAnJCcKKyAgICAgICBDT0xV TU5TICgKKyAgICAgICAgICAgICAgIGZvbyBpbnQgUEFUSCAnJCcKKyAgICAgICApCisgICAgICAg UExBTiBERUZBVUxUIChVTklPTikKKykganQ7CisgZm9vIAorLS0tLS0KKyAgICAKKygxIHJvdykK KworLS0gUExBTiBERUZBVUxUIHdpdGggYW4gdW5uYW1lZCBORVNURUQgcGF0aAorU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdbXScsICckJyBBUyBwYXRoMQorICAgICAg IENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKAorICAg ICAgICAgICAgICAgICAgICAgICBmb28gaW50IFBBVEggJyQnCisgICAgICAgICAgICAgICApCisg ICAgICAgKQorICAgICAgIFBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworIGZvbyAKKy0tLS0t CisgICAgCisoMSByb3cpCisKKy0tIEFuIHVubmFtZWQgTkVTVEVEIHBhdGggdW5kZXIgYW4gZXhw bGljaXQgUExBTigpIGlzIGFsc28gYWNjZXB0ZWQsIGJ1dCB0aGUKKy0tIGdlbmVyYXRlZCBuYW1l IGNhbm5vdCBiZSByZWZlcmVuY2VkIGJ5IHRoZSBwbGFuLCBzbyBpdCBmYWlscyBhcyBhIG5lc3Rl ZAorLS0gcGF0aCBub3QgY292ZXJlZCBieSB0aGUgcGxhbi4KK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRSgKKyAgICAgICBqc29uYiAnW10nLCAnJCcgQVMgcGF0aDEKKyAgICAgICBDT0xVTU5TICgK KyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBDT0xVTU5TICgKKyAgICAgICAgICAgICAg ICAgICAgICAgZm9vIGludCBQQVRIICckJworICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAg ICAgICBQTEFOIChwYXRoMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVj aWZpY2F0aW9uCitMSU5FIDQ6ICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBDT0xVTU5T ICgKKyAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5l c3RlZCBwYXRoIGpzb25fdGFibGVfcGF0aF8wIHdhcyBub3QgZm91bmQuCistLSBKU09OX1RBQkxF OiBwbGFuIHZhbGlkYXRpb24KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBO RVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xV TU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4g KHAxKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICAg ICAgICBQTEFOIChwMSkKKyAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQQVRIIG5h bWUgbWlzbWF0Y2g6IGV4cGVjdGVkIHAwIGJ1dCBwMSBpcyBnaXZlbi4KK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENP TFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBm b28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIg Q09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5F U1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVT VEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICAp CisgICAgICAgKQorICAgICAgIFBMQU4gKHAwKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09O X1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgNDogICAgICAgICAgICAgICAgTkVTVEVEIFBBVEgg JyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQ TEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAg IENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMg KAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAg ICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKK0VSUk9SOiAg aW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgNDogICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBe CitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZC4K K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBB UyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFT IHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMg cDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQ QVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAg ICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisg ICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIFVOSU9OIHAxIFVOSU9O IHAxMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZQorTElO RSAxMjogICAgICAgIFBMQU4gKHAwIFVOSU9OIHAxIFVOSU9OIHAxMSkKKyAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBFeHBlY3RlZCBJTk5FUiBvciBPVVRFUi4KK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAg IENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMg KAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAg ICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMTMpKQorKSBq dDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgODogICAg ICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDIgd2Fz IG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVs bCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAg ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgK KyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9V VEVSIChwMSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3Bl Y2lmaWNhdGlvbgorTElORSA1OiAgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICck JyBBUyBwMTEgQ09MVU1OUyAoIGZvbyAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDExIHdhcyBub3QgZm91 bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsq XScgQVMgcDAKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICck JyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQn IEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICks CisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAg ICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQg KQorICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOIChwMCBPVVRFUiAoKHAx IFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxF IHBsYW4gY2xhdXNlCitMSU5FIDEyOiAgICAgICAgUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBw MTEpIENST1NTIHAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6 ICBQTEFOIGNsYXVzZSBjb250YWlucyBzb21lIGV4dHJhIG9yIGR1cGxpY2F0ZSBzaWJsaW5nIG5v ZGVzLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdudWxsJywgJyRb Kl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICck JyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVT VEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisgICAgICAgICAgICAgICAp LAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAg ICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIgKChw MSBJTk5FUiBwMTEpIENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJM RSBzcGVjaWZpY2F0aW9uCitMSU5FIDY6ICAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBB VEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMTIgd2FzIG5v dCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcs ICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBB VEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAg ICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6 IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9VVEVS ICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA5OiAgICAgICAgICAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiAuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVk IHBhdGggcDIxIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAg ICAganNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisg ICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwK KyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICgg YmFyIGludCApCisgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAn JCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICAp CisgICAgICAgUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NT IChwMiBJTk5FUiBwMjEpKSkKKykganQ7CisgYmFyIHwgZm9vIHwgYmF6IAorLS0tLS0rLS0tLS0r LS0tLS0KKygwIHJvd3MpCisKKy0tIFNob3VsZCBmYWlsICh0b3AtbGV2ZWwgcGxhbiBtdXN0IGpv aW4gdGhlIHJvdyBwYXR0ZXJuIHVzaW5nIElOTkVSIG9yCistLSBPVVRFUiwgbm90IGEgYmFyZSBz aWJsaW5nIENST1NTKQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdu dWxsJywgJ3N0cmljdCAkWypdJworICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVT VEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5T ICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5T ICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gKChw MSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKQorKSBqdDsKK0VS Uk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlCitMSU5FIDEyOiAgICAgICAgUExB TiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVSIHAyMSkuLi4KKyAg ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBFeHBlY3RlZCBJTk5FUiBvciBPVVRFUi4K IC0tIEpTT05fVEFCTEU6IHBsYW4gZXhlY3V0aW9uCiBDUkVBVEUgVEVNUCBUQUJMRSBqc29uYl90 YWJsZV90ZXN0IChqcyBqc29uYik7CiBJTlNFUlQgSU5UTyBqc29uYl90YWJsZV90ZXN0CkBAIC04 MTMsNiArMTA1MSwzMjUgQEAgZnJvbQogIDQgfCAtMSB8ICAgIDIgfCAyIHwgICAgICB8ICAgCiAo MTEgcm93cykKIAorLS0gZGVmYXVsdCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QKKyAgICAg ICBqdC4qCitmcm9tCisgICAgICAganNvbmJfdGFibGVfdGVzdCBqdHQsCisgICAgICAganNvbl90 YWJsZSAoCisgICAgICAgICAgICAgICBqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisgICAgICAg ICAgICAgICBjb2x1bW5zICgKKyAgICAgICAgICAgICAgICAgICAgICAgbiBmb3Igb3JkaW5hbGl0 eSwKKyAgICAgICAgICAgICAgICAgICAgICAgYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAt MSBvbiBlbXB0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAk LmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorICAgICAgICAgICAgICAg ICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgIHBsYW4gZGVmYXVs dCAob3V0ZXIsIHVuaW9uKQorICAgICAgICkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0t LS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIg fCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAyIHwgIDIgfCAg IHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwgIDMgfCAyIHwg ICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMSByb3dzKQorCistLSBz cGVjaWZpYyBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QKKyAgICAgICBqdC4q Citmcm9tCisgICAgICAganNvbmJfdGFibGVfdGVzdCBqdHQsCisgICAgICAganNvbl90YWJsZSAo CisgICAgICAgICAgICAgICBqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisgICAgICAgICAgICAg ICBjb2x1bW5zICgKKyAgICAgICAgICAgICAgICAgICAgICAgbiBmb3Igb3JkaW5hbGl0eSwKKyAg ICAgICAgICAgICAgICAgICAgICAgYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBl bXB0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorICAgICAgICAgICAgICAgICAgICAg ICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGgg JyQnICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgIHBsYW4gKHAgb3V0ZXIgKHBi IHVuaW9uIHBjKSkKKyAgICAgICApIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0t LSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8 ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAg CisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisg NCB8IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwgMiB8ICAgCisoMTEgcm93cykKKworLS0gc3BlY2lm aWMgcGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorc2VsZWN0CisgICAgICAganQuKgorZnJv bQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAg ICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29s dW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAg ICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks CisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBw YiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVz dGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIChwIG91dGVyIChwYyB1bmlv biBwYikpCisgICAgICAgKSBqdDsKKyBuIHwgYSAgfCBjICB8IGIgCistLS0rLS0tLSstLS0tKy0t LQorIDEgfCAgMSB8ICAgIHwgIAorIDIgfCAgMiB8IDEwIHwgIAorIDIgfCAgMiB8ICAgIHwgIAor IDIgfCAgMiB8IDIwIHwgIAorIDIgfCAgMiB8ICAgIHwgMQorIDIgfCAgMiB8ICAgIHwgMgorIDIg fCAgMiB8ICAgIHwgMworIDMgfCAgMyB8ICAgIHwgMQorIDMgfCAgMyB8ICAgIHwgMgorIDQgfCAt MSB8ICAgIHwgMQorIDQgfCAtMSB8ICAgIHwgMgorKDExIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxh biAoaW5uZXIsIHVuaW9uKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25i X3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0 LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAg ICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAg IGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAg ICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKGlubmVyKQorICAgICAgICkganQ7Cisg biB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAyIHwgIDIgfCAxIHwgICAKKyAy IHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAyIHwg IDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwgIDMg fCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMCByb3dzKQor CistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QKKyAgICAg ICBqdC4qCitmcm9tCisgICAgICAganNvbmJfdGFibGVfdGVzdCBqdHQsCisgICAgICAganNvbl90 YWJsZSAoCisgICAgICAgICAgICAgICBqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisgICAgICAg ICAgICAgICBjb2x1bW5zICgKKyAgICAgICAgICAgICAgICAgICAgICAgbiBmb3Igb3JkaW5hbGl0 eSwKKyAgICAgICAgICAgICAgICAgICAgICAgYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAt MSBvbiBlbXB0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAk LmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorICAgICAgICAgICAgICAg ICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgIHBsYW4gKHAgaW5u ZXIgKHBiIHVuaW9uIHBjKSkKKyAgICAgICApIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSst LS0tKy0tLSstLS0tCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAy IHwgMyB8ICAgCisgMiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwg ICB8IDIwCisgMyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8 ICAgCisgNCB8IC0xIHwgMiB8ICAgCisoMTAgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChpbm5l ciwgY3Jvc3MpCitzZWxlY3QKKyAgICAgICBqdC4qCitmcm9tCisgICAgICAganNvbmJfdGFibGVf dGVzdCBqdHQsCisgICAgICAganNvbl90YWJsZSAoCisgICAgICAgICAgICAgICBqdHQuanMsJ3N0 cmljdCAkWypdJyBhcyBwCisgICAgICAgICAgICAgICBjb2x1bW5zICgKKyAgICAgICAgICAgICAg ICAgICAgICAgbiBmb3Igb3JkaW5hbGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgYSBpbnQg cGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKyAgICAgICAgICAgICAgICAgICAg ICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRo ICckJyApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sq XScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKyAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgIHBsYW4gZGVmYXVsdCAoY3Jvc3MsIGlubmVyKQorICAgICAgICkganQ7Cisg biB8IGEgfCBiIHwgYyAgCistLS0rLS0tKy0tLSstLS0tCisgMiB8IDIgfCAxIHwgMTAKKyAyIHwg MiB8IDEgfCAgIAorIDIgfCAyIHwgMSB8IDIwCisgMiB8IDIgfCAyIHwgMTAKKyAyIHwgMiB8IDIg fCAgIAorIDIgfCAyIHwgMiB8IDIwCisgMiB8IDIgfCAzIHwgMTAKKyAyIHwgMiB8IDMgfCAgIAor IDIgfCAyIHwgMyB8IDIwCisoOSByb3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChw YiBjcm9zcyBwYykpCitzZWxlY3QKKyAgICAgICBqdC4qCitmcm9tCisgICAgICAganNvbmJfdGFi bGVfdGVzdCBqdHQsCisgICAgICAganNvbl90YWJsZSAoCisgICAgICAgICAgICAgICBqdHQuanMs J3N0cmljdCAkWypdJyBhcyBwCisgICAgICAgICAgICAgICBjb2x1bW5zICgKKyAgICAgICAgICAg ICAgICAgICAgICAgbiBmb3Igb3JkaW5hbGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgYSBp bnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKyAgICAgICAgICAgICAgICAg ICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBw YXRoICckJyApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKyAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgIHBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKKyAgICAgICApIGp0 OworIG4gfCBhIHwgYiB8IGMgIAorLS0tKy0tLSstLS0rLS0tLQorIDIgfCAyIHwgMSB8IDEwCisg MiB8IDIgfCAxIHwgICAKKyAyIHwgMiB8IDEgfCAyMAorIDIgfCAyIHwgMiB8IDEwCisgMiB8IDIg fCAyIHwgICAKKyAyIHwgMiB8IDIgfCAyMAorIDIgfCAyIHwgMyB8IDEwCisgMiB8IDIgfCAzIHwg ICAKKyAyIHwgMiB8IDMgfCAyMAorKDkgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChvdXRlciwg Y3Jvc3MpCitzZWxlY3QKKyAgICAgICBqdC4qCitmcm9tCisgICAgICAganNvbmJfdGFibGVfdGVz dCBqdHQsCisgICAgICAganNvbl90YWJsZSAoCisgICAgICAgICAgICAgICBqdHQuanMsJ3N0cmlj dCAkWypdJyBhcyBwCisgICAgICAgICAgICAgICBjb2x1bW5zICgKKyAgICAgICAgICAgICAgICAg ICAgICAgbiBmb3Igb3JkaW5hbGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgYSBpbnQgcGF0 aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKyAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgIHBsYW4gZGVmYXVsdCAob3V0ZXIsIGNyb3NzKQorICAgICAgICkganQ7CisgbiB8 IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwg IDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIg fCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAz IHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwg ICAKKyA0IHwgLTEgfCAgIHwgICAKKygxMiByb3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIG91 dGVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKyAgICAgICBqdC4qCitmcm9tCisgICAgICAganNv bmJfdGFibGVfdGVzdCBqdHQsCisgICAgICAganNvbl90YWJsZSAoCisgICAgICAgICAgICAgICBq dHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisgICAgICAgICAgICAgICBjb2x1bW5zICgKKyAgICAg ICAgICAgICAgICAgICAgICAgbiBmb3Igb3JkaW5hbGl0eSwKKyAgICAgICAgICAgICAgICAgICAg ICAgYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKyAgICAgICAgICAg ICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBi IGludCBwYXRoICckJyApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKyAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgIHBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKKyAgICAg ICApIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwg ICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMSB8 IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMiB8IDIw CisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgMyB8IDIwCisg MyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKworc2VsZWN0Cisg ICAgICAganQuKiwgYjEgKyAxMDAgYXMgYgorZnJvbQorICAgICAgIGpzb25fdGFibGUgKGpzb25i CisgICAgICAgICAgICAgICAnWworICAgICAgICAgICAgICAgICAgICAgICB7ImEiOiAgMSwgICJi IjogW1sxLCAxMF0sIFsyXSwgWzMsIDMwLCAzMDBdXSwgImMiOiBbMSwgbnVsbCwgMl19LAorICAg ICAgICAgICAgICAgICAgICAgICB7ImEiOiAgMiwgICJiIjogWzEwLCAyMF0sICJjIjogWzEsIG51 bGwsIDJdfSwKKyAgICAgICAgICAgICAgICAgICAgICAgeyJ4IjogIjMiLCAiYiI6IFsxMSwgMjIs IDMzLCA0NF19CisgICAgICAgICAgICAgICAgXScsCisgICAgICAgICAgICAgICAnJFsqXScgYXMg cAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9y IG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEn IGRlZmF1bHQgLTEgb24gZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRo ICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiIHRleHQgZm9ybWF0IGpzb24gcGF0aCAnJCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkWypdJyBhcyBwYjEgY29sdW1ucyAoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiMSBpbnQgcGF0aCAnJCcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICks CisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBw YyBjb2x1bW5zICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjIHRleHQgZm9ybWF0 IGpzb24gcGF0aCAnJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBh dGggJ3N0cmljdCAkWypdJyBhcyBwYzEgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjMSBpbnQgcGF0aCAnJCcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgIC0tcGxhbiBkZWZhdWx0KG91dGVyLCBjcm9zcykKKyAgICAgICAgICAgICAg IHBsYW4ocCBvdXRlciAoKHBiIGlubmVyIHBiMSkgY3Jvc3MgKHBjIG91dGVyIHBjMSkpKQorICAg ICAgICkganQ7CisgbiB8IGEgfCAgICAgIGIgICAgICAgfCBiMSAgfCAgYyAgIHwgYzEgfCAgYiAg CistLS0rLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tKy0tLS0tCisgMSB8IDEg fCBbMSwgMTBdICAgICAgfCAgIDEgfCAxICAgIHwgICAgfCAxMDEKKyAxIHwgMSB8IFsxLCAxMF0g ICAgICB8ICAgMSB8IG51bGwgfCAgICB8IDEwMQorIDEgfCAxIHwgWzEsIDEwXSAgICAgIHwgICAx IHwgMiAgICB8ICAgIHwgMTAxCisgMSB8IDEgfCBbMSwgMTBdICAgICAgfCAgMTAgfCAxICAgIHwg ICAgfCAxMTAKKyAxIHwgMSB8IFsxLCAxMF0gICAgICB8ICAxMCB8IG51bGwgfCAgICB8IDExMAor IDEgfCAxIHwgWzEsIDEwXSAgICAgIHwgIDEwIHwgMiAgICB8ICAgIHwgMTEwCisgMSB8IDEgfCBb Ml0gICAgICAgICAgfCAgIDIgfCAxICAgIHwgICAgfCAxMDIKKyAxIHwgMSB8IFsyXSAgICAgICAg ICB8ICAgMiB8IG51bGwgfCAgICB8IDEwMgorIDEgfCAxIHwgWzJdICAgICAgICAgIHwgICAyIHwg MiAgICB8ICAgIHwgMTAyCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAgIDMgfCAxICAgIHwgICAg fCAxMDMKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8IG51bGwgfCAgICB8IDEwMworIDEg fCAxIHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgMiAgICB8ICAgIHwgMTAzCisgMSB8IDEgfCBbMywg MzAsIDMwMF0gfCAgMzAgfCAxICAgIHwgICAgfCAxMzAKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8 ICAzMCB8IG51bGwgfCAgICB8IDEzMAorIDEgfCAxIHwgWzMsIDMwLCAzMDBdIHwgIDMwIHwgMiAg ICB8ICAgIHwgMTMwCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAzMDAgfCAxICAgIHwgICAgfCA0 MDAKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IG51bGwgfCAgICB8IDQwMAorIDEgfCAx IHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgMiAgICB8ICAgIHwgNDAwCisgMiB8IDIgfCAgICAgICAg ICAgICAgfCAgICAgfCAgICAgIHwgICAgfCAgICAKKyAzIHwgICB8ICAgICAgICAgICAgICB8ICAg ICB8ICAgICAgfCAgICB8ICAgIAorKDIwIHJvd3MpCisKIC0tIFBBU1NJTkcgYXJndW1lbnRzIGFy ZSBwYXNzZWQgdG8gbmVzdGVkIHBhdGhzIGFuZCB0aGVpciBjb2x1bW5zJyBwYXRocwogU0VMRUNU ICoKIEZST00KQEAgLTg3Niw2ICsxNDMzLDcgQEAgU0VMRUNUICogRlJPTQogCQkJKQogCQkpCiAJ KTsKK0NSRUFURSBET01BSU4ganNvbmJfdGVzdF9kb21haW4gQVMgdGV4dCBDSEVDSyAodmFsdWUg PD4gJ2ZvbycpOwogXHN2IGpzb25iX3RhYmxlX3ZpZXdfbmVzdGVkCiBDUkVBVEUgT1IgUkVQTEFD RSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3X25lc3RlZCBBUwogIFNFTEVDVCBpZCwKQEAg LTkxMyw3ICsxNDcxLDEwMiBAQCBDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90 YWJsZV92aWV3X25lc3RlZCBBUwogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAg ICAgICAgKQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldyBB UworIFNFTEVDVCBpZCwKKyAgICAiaW50IiwKKyAgICB0ZXh0LAorICAgICJjaGFyKDQpIiwKKyAg ICBib29sLAorICAgICJudW1lcmljIiwKKyAgICBkb21haW4sCisgICAganMsCisgICAgamIsCisg ICAganN0LAorICAgIGpzYywKKyAgICBqc3YsCisgICAganNiLAorICAgIGpzYnEsCisgICAgYWFh LAorICAgIGFhYTEsCisgICAgZXhpc3RzMSwKKyAgICBleGlzdHMyLAorICAgIGV4aXN0czMsCisg ICAganMyLAorICAgIGpzYjJ3LAorICAgIGpzYjJxLAorICAgIGlhLAorICAgIHRhLAorICAgIGpi YSwKKyAgICBhMSwKKyAgICBiMSwKKyAgICBhMTEsCisgICAgYTIxLAorICAgIGEyMgorICAgRlJP TSBKU09OX1RBQkxFKAorICAgICAgICAgICAgJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25f dGFibGVfcGF0aF8xCisgICAgICAgICAgICBQQVNTSU5HCisgICAgICAgICAgICAgICAgMSArIDIg QVMgYSwKKyAgICAgICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJiIGMiCisgICAgICAgICAg ICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICBpZCBGT1IgT1JESU5BTElUWSwKKyAgICAgICAg ICAgICAgICAiaW50IiBpbnRlZ2VyIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIHRleHQgdGV4 dCBQQVRIICckJywKKyAgICAgICAgICAgICAgICAiY2hhcig0KSIgY2hhcmFjdGVyKDQpIFBBVEgg JyQnLAorICAgICAgICAgICAgICAgIGJvb2wgYm9vbGVhbiBQQVRIICckJywKKyAgICAgICAgICAg ICAgICAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKyAgICAgICAgICAgICAgICBkb21haW4g anNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganMganNvbiBQQVRI ICckJywKKyAgICAgICAgICAgICAgICBqYiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAg ICBqc3QgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc2MgY2hh cmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzdiBjaGFy YWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBq c2IganNvbmIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNicSBqc29uYiBQQVRIICckJyBP TUlUIFFVT1RFUywKKyAgICAgICAgICAgICAgICBhYWEgaW50ZWdlciBQQVRIICckLiJhYWEiJywK KyAgICAgICAgICAgICAgICBhYWExIGludGVnZXIgUEFUSCAnJC4iYWFhIicsCisgICAgICAgICAg ICAgICAgZXhpc3RzMSBib29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywKKyAgICAgICAgICAg ICAgICBleGlzdHMyIGludGVnZXIgRVhJU1RTIFBBVEggJyQuImFhYSInIFRSVUUgT04gRVJST1Is CisgICAgICAgICAgICAgICAgZXhpc3RzMyB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC4iYWFh IicgVU5LTk9XTiBPTiBFUlJPUiwKKyAgICAgICAgICAgICAgICBqczIganNvbiBQQVRIICckJywK KyAgICAgICAgICAgICAgICBqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFVOQ09ORElUSU9OQUwg V1JBUFBFUiwKKyAgICAgICAgICAgICAgICBqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RF UywKKyAgICAgICAgICAgICAgICBpYSBpbnRlZ2VyW10gUEFUSCAnJCcsCisgICAgICAgICAgICAg ICAgdGEgdGV4dFtdIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpiYSBqc29uYltdIFBBVEgg JyQnLAorICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWzFdJyBBUyBwMQorICAgICAgICAg ICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICBhMSBpbnRlZ2VyIFBBVEggJyQu ImExIicsCisgICAgICAgICAgICAgICAgICAgIGIxIHRleHQgUEFUSCAnJC4iYjEiJywKKyAgICAg ICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIgorICAgICAgICAgICAg ICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGExMSB0ZXh0IFBBVEgg JyQuImExMSInCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApLAorICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWzJdJyBBUyBwMgorICAgICAgICAgICAgICAgIENP TFVNTlMgKAorICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgInAyOjEi CisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAg YTIxIHRleHQgUEFUSCAnJC4iYTIxIicKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTIHAyMgorICAgICAgICAgICAgICAgICAg ICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGEyMiB0ZXh0IFBBVEggJyQuImEy MiInCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICApCisgICAgICAgICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMSBPVVRFUiAoKHAxIE9VVEVS ICJwMSAxIikgVU5JT04gKHAyIE9VVEVSICgicDI6MSIgVU5JT04gcDIyKSkpKQorICAgICAgICAp OworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxl X3ZpZXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUYWJsZSBGdW5jdGlv biBTY2FuIG9uICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAianNvbl90YWJsZSIuaWQsICJqc29u X3RhYmxlIi4iaW50IiwgImpzb25fdGFibGUiLnRleHQsICJqc29uX3RhYmxlIi4iY2hhcig0KSIs ICJqc29uX3RhYmxlIi5ib29sLCAianNvbl90YWJsZSIuIm51bWVyaWMiLCAianNvbl90YWJsZSIu ZG9tYWluLCAianNvbl90YWJsZSIuanMsICJqc29uX3RhYmxlIi5qYiwgImpzb25fdGFibGUiLmpz dCwgImpzb25fdGFibGUiLmpzYywgImpzb25fdGFibGUiLmpzdiwgImpzb25fdGFibGUiLmpzYiwg Impzb25fdGFibGUiLmpzYnEsICJqc29uX3RhYmxlIi5hYWEsICJqc29uX3RhYmxlIi5hYWExLCAi anNvbl90YWJsZSIuZXhpc3RzMSwgImpzb25fdGFibGUiLmV4aXN0czIsICJqc29uX3RhYmxlIi5l eGlzdHMzLCAianNvbl90YWJsZSIuanMyLCAianNvbl90YWJsZSIuanNiMncsICJqc29uX3RhYmxl Ii5qc2IycSwgImpzb25fdGFibGUiLmlhLCAianNvbl90YWJsZSIudGEsICJqc29uX3RhYmxlIi5q YmEsICJqc29uX3RhYmxlIi5hMSwgImpzb25fdGFibGUiLmIxLCAianNvbl90YWJsZSIuYTExLCAi anNvbl90YWJsZSIuYTIxLCAianNvbl90YWJsZSIuYTIyCisgICBUYWJsZSBGdW5jdGlvbiBDYWxs OiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMSBQ QVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIgQ09MVU1OUyAoaWQgRk9SIE9S RElOQUxJVFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcsIHRleHQgdGV4dCBQQVRIICckJywgImNo YXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywgYm9vbCBib29sZWFuIFBBVEggJyQnLCAibnVt ZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQn LCBqcyBqc29uIFBBVEggJyQnIFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUywgamIganNvbmIg UEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTLCBqc3QgdGV4dCBGT1JNQVQgSlNP TiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9URVMsIGpzYyBjaGFyYWN0ZXIoNCkg Rk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTLCBqc3YgY2hh cmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtF RVAgUVVPVEVTLCBqc2IganNvbmIgUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVT LCBqc2JxIGpzb25iIFBBVEggJyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RFUywgYWFhIGlu dGVnZXIgUEFUSCAnJC4iYWFhIicsIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgZXhpc3Rz MSBib29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3RzMiBpbnRlZ2VyIEVYSVNUUyBQ QVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0 cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLCBqczIganNvbiBQQVRIICckJyBXSVRIT1VU IFdSQVBQRVIgS0VFUCBRVU9URVMsIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggVU5DT05ESVRJ T05BTCBXUkFQUEVSIEtFRVAgUVVPVEVTLCBqc2IycSBqc29uYiBQQVRIICckJyBXSVRIT1VUIFdS QVBQRVIgT01JVCBRVU9URVMsIGlhIGludGVnZXJbXSBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIg S0VFUCBRVU9URVMsIHRhIHRleHRbXSBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9U RVMsIGpiYSBqc29uYltdIFBBVEggJyQnIFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUywgTkVT VEVEIFBBVEggJyRbMV0nIEFTIHAxIENPTFVNTlMgKGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywg YjEgdGV4dCBQQVRIICckLiJiMSInLCBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVN TlMgKGExMSB0ZXh0IFBBVEggJyQuImExMSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBBUyBwMiBD T0xVTU5TICggTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TIChhMjEgdGV4dCBQ QVRIICckLiJhMjEiJyksIE5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoYTIyIHRl eHQgUEFUSCAnJC4iYTIyIicpKSkpCisoMyByb3dzKQorCitEUk9QIFZJRVcganNvbmJfdGFibGVf dmlldzsKIERST1AgVklFVyBqc29uYl90YWJsZV92aWV3X25lc3RlZDsKK0RST1AgRE9NQUlOIGpz b25iX3Rlc3RfZG9tYWluOwogQ1JFQVRFIFRBQkxFIHMgKGpzIGpzb25iKTsKIElOU0VSVCBJTlRP IHMgVkFMVUVTCiAJKCd7ImEiOnsiemEiOlt7InoxIjogWzExLDIyMjJdfSx7InoyMSI6IFsyMiwg MjM0LDIzNDVdfSx7InoyMiI6IFszMiwgMjA0LDE0NV19XX0sImMiOiAzfScpLApAQCAtMTE1Miw3 ICsxODA1LDcgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbl90YWJsZV92aWV3 OSBBUwogICAgRlJPTSBKU09OX1RBQkxFKAogICAgICAgICAgICAgJyJhIic6OnRleHQsICckJyBB UyBqc29uX3RhYmxlX3BhdGhfMAogICAgICAgICAgICAgQ09MVU1OUyAoCi0gICAgICAgICAgICAg ICAgYSB0ZXh0IFBBVEggJyQnCisgICAgICAgICAgICAgICAgYSB0ZXh0IFBBVEggJyQnIE5VTEwg T04gRU1QVFkKICAgICAgICAgICAgICkgRVJST1IgT04gRVJST1IKICAgICAgICAgKQogRFJPUCBW SUVXIGpzb25fdGFibGVfdmlldzgsIGpzb25fdGFibGVfdmlldzk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwKaW5kZXggMTU0ZWVhNzljNzYuLjE0Yjc1YzhjYzE5 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCkBAIC0zNzYs NiArMzc2LDE4NyBAQCBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCiAJKQogKSBqdDsKIAorLS0g SlNPTl9UQUJMRTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucworLS0gUGF0aCBuYW1lcyBhcmUgbm90 IHJlcXVpcmVkIG9uIHRoZSByb3cgcGF0dGVybiBvciB0aGUgTkVTVEVEIHBhdGhzLCBldmVuCist LSB3aGVuIGEgUExBTiBjbGF1c2UgaXMgcHJlc2VudDsgYSBuYW1lIGlzIGdlbmVyYXRlZCBmb3Ig YW55IHBhdGggbGVmdAorLS0gdW5uYW1lZC4gIFRoZSBuZXh0IHR3byBxdWVyaWVzIHN1Y2NlZWQu CistLSBQTEFOIERFRkFVTFQgd2l0aCBhbiB1bm5hbWVkIHJvdyBwYXR0ZXJuCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ1tdJywgJyQnCisgICAgICAgQ09MVU1OUyAo CisgICAgICAgICAgICAgICBmb28gaW50IFBBVEggJyQnCisgICAgICAgKQorICAgICAgIFBMQU4g REVGQVVMVCAoVU5JT04pCispIGp0OworLS0gUExBTiBERUZBVUxUIHdpdGggYW4gdW5uYW1lZCBO RVNURUQgcGF0aAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdbXScs ICckJyBBUyBwYXRoMQorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBB VEggJyQnIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBmb28gaW50IFBBVEggJyQn CisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gREVGQVVMVCAoVU5JT04p CispIGp0OworLS0gQW4gdW5uYW1lZCBORVNURUQgcGF0aCB1bmRlciBhbiBleHBsaWNpdCBQTEFO KCkgaXMgYWxzbyBhY2NlcHRlZCwgYnV0IHRoZQorLS0gZ2VuZXJhdGVkIG5hbWUgY2Fubm90IGJl IHJlZmVyZW5jZWQgYnkgdGhlIHBsYW4sIHNvIGl0IGZhaWxzIGFzIGEgbmVzdGVkCistLSBwYXRo IG5vdCBjb3ZlcmVkIGJ5IHRoZSBwbGFuLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAg ICAgIGpzb25iICdbXScsICckJyBBUyBwYXRoMQorICAgICAgIENPTFVNTlMgKAorICAgICAgICAg ICAgICAgTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBm b28gaW50IFBBVEggJyQnCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4g KHBhdGgxKQorKSBqdDsKKworLS0gSlNPTl9UQUJMRTogcGxhbiB2YWxpZGF0aW9uCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAg ICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xV TU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xV TU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcg QVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAg ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAg ICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOIChwMSkKKykganQ7CitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBD T0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgK KyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICgg Zm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEy IENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICBO RVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5F U1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICAgICAg KQorICAgICAgICkKKyAgICAgICBQTEFOIChwMCkKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5T ICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAg ICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGlu dCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVN TlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQ QVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICAgICAgKQorICAg ICAgICkKKyAgICAgICBQTEFOIChwMCBPVVRFUiBwMykKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xV TU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAg ICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENP TFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RF RCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICAgICAgKQor ICAgICAgICkKKyAgICAgICBQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCispIGp0OworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdudWxsJywgJyRbKl0nIEFTIHAw CisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEg Q09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEg Q09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEgg JyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisgICAgICAgICAgICAgICApLAorICAgICAg ICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAg ICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAg ICAgICAgICAgICkKKyAgICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIgKHAxIENST1NTIHAx MykpCispIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdudWxs JywgJyRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQ QVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisgICAgICAgICAg ICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBi YXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICApCisgICAgICAgUExBTiAocDAgT1VU RVIgKHAxIENST1NTIHAyKSkKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAg ICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAg ICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAg ICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMg cDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAg ICBQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAor ICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENP TFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENP TFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAg ICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAg ICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgcDEx KSBDUk9TUyBwMikpCispIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpz b25iICdudWxsJywgJyRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisg ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENP TFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENP TFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICApCisgICAgICAgUExB TiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7 CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnc3RyaWN0 ICRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisgICAgICAgICAgICAg ICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAg ICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXog aW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIg KChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7 CistLSBTaG91bGQgZmFpbCAodG9wLWxldmVsIHBsYW4gbXVzdCBqb2luIHRoZSByb3cgcGF0dGVy biB1c2luZyBJTk5FUiBvcgorLS0gT1VURVIsIG5vdCBhIGJhcmUgc2libGluZyBDUk9TUykKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsq XScKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAx MSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAg ICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOICgocDEgSU5ORVIgKHAxMiBDUk9T UyBwMTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkKKykganQ7CiAKIC0tIEpTT05fVEFCTEU6IHBs YW4gZXhlY3V0aW9uCiAKQEAgLTQwNSw2ICs1ODYsMTcwIEBAIGZyb20KIAkJKQogCSkganQ7CiAK Ky0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIHVuaW9uKQorc2VsZWN0CisgICAgICAganQuKgorZnJv bQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAg ICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29s dW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAg ICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks CisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBw YiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVz dGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKG91dGVyLCB1 bmlvbikKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24g cGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3Qg anR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3Qg JFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAg ICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGgg J2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5l c3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcg KSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCisgICAgICAgKSBqdDsKKy0tIHNw ZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3NlbGVjdAorICAgICAgIGp0LioK K2Zyb20KKyAgICAgICBqc29uYl90YWJsZV90ZXN0IGp0dCwKKyAgICAgICBqc29uX3RhYmxlICgK KyAgICAgICAgICAgICAgIGp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKyAgICAgICAgICAgICAg IGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICBuIGZvciBvcmRpbmFsaXR5LAorICAg ICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVt cHR5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScg YXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisgICAgICAgICAgICAgICAgICAgICAg IG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgcGxhbiAocCBvdXRlciAocGMg dW5pb24gcGIpKQorICAgICAgICkganQ7CistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikK K3NlbGVjdAorICAgICAgIGp0LioKK2Zyb20KKyAgICAgICBqc29uYl90YWJsZV90ZXN0IGp0dCwK KyAgICAgICBqc29uX3RhYmxlICgKKyAgICAgICAgICAgICAgIGp0dC5qcywnc3RyaWN0ICRbKl0n IGFzIHAKKyAgICAgICAgICAgICAgIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICBu IGZvciBvcmRpbmFsaXR5LAorICAgICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQg cGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisg ICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBj b2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgcGxhbiBkZWZhdWx0IChpbm5lcikKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAo cCBpbm5lciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAg IGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAg ICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisg ICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAg ICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAg ICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5z ICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGgg J3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCisg ICAgICAgKSBqdDsKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2VsZWN0CisgICAg ICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25f dGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAg ICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxp dHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1 bHQgKGNyb3NzLCBpbm5lcikKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5l ciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25i X3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0 LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAg ICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAg IGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAg ICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICBwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCisgICAgICAg KSBqdDsKKy0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQorc2VsZWN0CisgICAgICAganQu KgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUg KAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAg ICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisg ICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24g ZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypd JyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKG91 dGVyLCBjcm9zcykKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIg Y3Jvc3MgcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxl X3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdz dHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAg ICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAg ICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNb Kl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICBwbGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCisgICAgICAgKSBqdDsK K3NlbGVjdAorICAgICAgIGp0LiosIGIxICsgMTAwIGFzIGIKK2Zyb20KKyAgICAgICBqc29uX3Rh YmxlIChqc29uYgorICAgICAgICAgICAgICAgJ1sKKyAgICAgICAgICAgICAgICAgICAgICAgeyJh IjogIDEsICAiYiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJjIjogWzEsIG51bGws IDJdfSwKKyAgICAgICAgICAgICAgICAgICAgICAgeyJhIjogIDIsICAiYiI6IFsxMCwgMjBdLCAi YyI6IFsxLCBudWxsLCAyXX0sCisgICAgICAgICAgICAgICAgICAgICAgIHsieCI6ICIzIiwgImIi OiBbMTEsIDIyLCAzMywgNDRdfQorICAgICAgICAgICAgICAgIF0nLAorICAgICAgICAgICAgICAg JyRbKl0nIGFzIHAKKyAgICAgICAgICAgICAgIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAg ICAgICBuIGZvciBvcmRpbmFsaXR5LAorICAgICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRo ICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICBu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGIxIGNv bHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjEgaW50IHBh dGggJyQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyB0 ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgaW50IHBhdGggJyQnCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAtLXBsYW4gZGVmYXVsdChvdXRlciwgY3Jvc3MpCisgICAg ICAgICAgICAgICBwbGFuKHAgb3V0ZXIgKChwYiBpbm5lciBwYjEpIGNyb3NzIChwYyBvdXRlciBw YzEpKSkKKyAgICAgICApIGp0OwogCiAtLSBQQVNTSU5HIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRv IG5lc3RlZCBwYXRocyBhbmQgdGhlaXIgY29sdW1ucycgcGF0aHMKIFNFTEVDVCAqCkBAIC00NTAs OCArNzk1LDk3IEBAIFNFTEVDVCAqIEZST00KIAkJKQogCSk7CiAKK0NSRUFURSBET01BSU4ganNv bmJfdGVzdF9kb21haW4gQVMgdGV4dCBDSEVDSyAodmFsdWUgPD4gJ2ZvbycpOwogXHN2IGpzb25i X3RhYmxlX3ZpZXdfbmVzdGVkCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90 YWJsZV92aWV3IEFTCisgU0VMRUNUIGlkLAorICAgICJpbnQiLAorICAgIHRleHQsCisgICAgImNo YXIoNCkiLAorICAgIGJvb2wsCisgICAgIm51bWVyaWMiLAorICAgIGRvbWFpbiwKKyAgICBqcywK KyAgICBqYiwKKyAgICBqc3QsCisgICAganNjLAorICAgIGpzdiwKKyAgICBqc2IsCisgICAganNi cSwKKyAgICBhYWEsCisgICAgYWFhMSwKKyAgICBleGlzdHMxLAorICAgIGV4aXN0czIsCisgICAg ZXhpc3RzMywKKyAgICBqczIsCisgICAganNiMncsCisgICAganNiMnEsCisgICAgaWEsCisgICAg dGEsCisgICAgamJhLAorICAgIGExLAorICAgIGIxLAorICAgIGExMSwKKyAgICBhMjEsCisgICAg YTIyCisgICBGUk9NIEpTT05fVEFCTEUoCisgICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAnJFsq XScgQVMganNvbl90YWJsZV9wYXRoXzEKKyAgICAgICAgICAgIFBBU1NJTkcKKyAgICAgICAgICAg ICAgICAxICsgMiBBUyBhLAorICAgICAgICAgICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIK KyAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgIGlkIEZPUiBPUkRJTkFMSVRZ LAorICAgICAgICAgICAgICAgICJpbnQiIGludGVnZXIgUEFUSCAnJCcsCisgICAgICAgICAgICAg ICAgdGV4dCB0ZXh0IFBBVEggJyQnLAorICAgICAgICAgICAgICAgICJjaGFyKDQpIiBjaGFyYWN0 ZXIoNCkgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgYm9vbCBib29sZWFuIFBBVEggJyQnLAor ICAgICAgICAgICAgICAgICJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorICAgICAgICAgICAg ICAgIGRvbWFpbiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBq cyBqc29uIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpiIGpzb25iIFBBVEggJyQnLAorICAg ICAgICAgICAgICAgIGpzdCB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAg ICAgIGpzYyBjaGFyYWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAg ICAganN2IGNoYXJhY3RlciB2YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAg ICAgICAgICAgIGpzYiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc2JxIGpzb25i IFBBVEggJyQnIE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGFhYSBpbnRlZ2VyIFBBVEgg JyQuImFhYSInLAorICAgICAgICAgICAgICAgIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywK KyAgICAgICAgICAgICAgICBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFhYSInLAor ICAgICAgICAgICAgICAgIGV4aXN0czIgaW50ZWdlciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJV RSBPTiBFUlJPUiwKKyAgICAgICAgICAgICAgICBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0 cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLAorICAgICAgICAgICAgICAgIGpzMiBqc29u IFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggVU5D T05ESVRJT05BTCBXUkFQUEVSLAorICAgICAgICAgICAgICAgIGpzYjJxIGpzb25iIFBBVEggJyQn IE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGlhIGludGVnZXJbXSBQQVRIICckJywKKyAg ICAgICAgICAgICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgamJhIGpz b25iW10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAx CisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgIGExIGludGVn ZXIgUEFUSCAnJC4iYTEiJywKKyAgICAgICAgICAgICAgICAgICAgYjEgdGV4dCBQQVRIICckLiJi MSInLAorICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiCisg ICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTEx IHRleHQgUEFUSCAnJC4iYTExIicKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyCisgICAgICAg ICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypd JyBBUyAicDI6MSIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAg ICAgICAgICAgICBhMjEgdGV4dCBQQVRIICckLiJhMjEiJworICAgICAgICAgICAgICAgICAgICAp LAorICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyCisgICAgICAg ICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTIyIHRleHQg UEFUSCAnJC4iYTIyIicKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIFBMQU4gKGpzb25fdGFibGVfcGF0aF8xIE9VVEVS ICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIgT1VURVIgKCJwMjoxIiBVTklPTiBwMjIpKSkp CisgICAgICAgICk7CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00g anNvbmJfdGFibGVfdmlldzsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3OwogRFJPUCBWSUVX IGpzb25iX3RhYmxlX3ZpZXdfbmVzdGVkOworRFJPUCBET01BSU4ganNvbmJfdGVzdF9kb21haW47 CiAKIENSRUFURSBUQUJMRSBzIChqcyBqc29uYik7CiBJTlNFUlQgSU5UTyBzIFZBTFVFUwpkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAxMTdlNzM3OWYxMC4uODg3YTYxZmE3ZjMgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNTA4LDcgKzE1MDgsMTAgQEAgSnNvblRhYmxlUGF0 aFNjYW4KIEpzb25UYWJsZVBhdGhTcGVjCiBKc29uVGFibGVQbGFuCiBKc29uVGFibGVQbGFuUm93 U291cmNlCitKc29uVGFibGVQbGFuU3BlYwogSnNvblRhYmxlUGxhblN0YXRlCitKc29uVGFibGVQ bGFuSm9pblR5cGUKK0pzb25UYWJsZVBsYW5UeXBlCiBKc29uVGFibGVTaWJsaW5nSm9pbgogSnNv blRva2VuVHlwZQogSnNvblRyYW5zZm9ybVN0cmluZ1ZhbHVlc0FjdGlvbgotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --000000000000b4cf3f06560de5a3--