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 1wepeY-0053NA-2Q for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 07:46:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wepeW-00CTLg-0m for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 07:46:36 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wepeV-00CTLY-0u for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 07:46:35 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wepeT-000000012s0-1NIM for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 07:46:34 +0000 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c9d1fff21edso97576a12.1 for ; Wed, 01 Jul 2026 00:46:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782891992; cv=none; d=google.com; s=arc-20260327; b=KYuqOhP7pRng/yaL4+ifnLYenQGpwW7fup1tn2ZXYHlK9VxQSKiiiYZBFK1qTvwsUb 2Xoo8ZTmeAD+9OQhku+4qkvtK7rLHZDBp+7Zogwhe/n+inSvAaT/RqRyMhv4gxZebbq3 lvImpkZV2vzfSeib4QwWermpTNNcO59Jk8ryeg6apS5iyNHcrj9NhKJlsLRX8M22l6VC RG6BCYwyWR/KF7anwff6hjltpIXemhaIAIWkxqRPIsy9Ov8/5dT/nurhztGwy3dxxBj8 tiWe6UOGW2xApa7Ji24AICPMBK9PoVZcHl+k6W1Qf/VepGSWPfZk1YlXrrY5qd8max0H j3dA== 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=NwF/mfNgkJcYPi+OpX+mWoA9lJkhpOAH2dJbI7T0fkU=; fh=LfmmEsnleDdDehgLXoQWUzQPFY4VJR1DUfJu6b9jpPA=; b=Z76NSM3tIhIA4YaubQ0se+9JTLhSrJLGRCwjciEC0lkfPit2mtHAiabavvgceYALsq 8cOpYHb6BjXhUoult9YY+DSne6b7x/UBEqB4pw9AFV00wylu8ldKK7QJ6RT98ISvq/v4 kg2IlgsIGxEX8B0TuG83gqAKVa6wawFJnEpC+4Es/Vo5XeWklNx2Ae3h2AyCw+GWRHWR 7af/2LgMvPQv/4I+NQ0Wuh5rTYFf3Q5KzSfldOVFW/GCkPP8qz9Kl0LQDaIK4t3GitfE 9CNTIGak0iEyica5YYfz1aHnwBzyxJ70GidOnPkMKeSI7dHcRpEyn9TJB91oxxCTZlrM 5Q4g==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782891992; x=1783496792; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NwF/mfNgkJcYPi+OpX+mWoA9lJkhpOAH2dJbI7T0fkU=; b=ftHoxsUDDXZyxjYQZIpEIkameSmpVie0WrO1i7b5hAzMYeyW19wsrRztLcxS9IIu01 T1Uz01i0Lp+Srzm4+Pn0U9T+tKEZ9rjfQrkaz7A71O9N/fI2z5Ovli7e3Q/UrAEEEizF +Y6oHsX7XTxdWTu4+FFlug3OdDtwPxuPf8PIxz8z2NpkHpqha4/xg+UKUdWCVqU+hgUk sqeikPwxTUFQ+VMhvHOBeExR+ktAf4HrltbjVeoRLF9ESwDDUNUSVjwpZi4aOzmgMRq8 /8DPh1LWJqs1f20mbvbDXOgDu4x/A2+jewBFLu/KZfSHm07l0gAaZ7qZitQdTIH5/Euz REcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782891992; x=1783496792; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NwF/mfNgkJcYPi+OpX+mWoA9lJkhpOAH2dJbI7T0fkU=; b=bxTlo5HGQP7Yi2wOUJynxThGfaRYtWv0FQx1ISu5YLbzQOdEdEAHX1DSUs08vfbjeY drtn1cHHjj3wrLFiAHXVT6BlzTV1h7D7n06ccyu4IDDJmfaHGZbatFGv3Wa/06S3qEx6 RMrOChmobAe5UbF2NJ4zh+yLPfg0/bOPUd9yrHidbVTt4xOJRSYZOD1XREvUockISLbR ++bIm5TgF9BTzBeQO08jiEqRvB6gs9+/ku5Bw1hNwbtuz16HkgQWrE+6BaeUJgHaMgwk CYPVOTEN6cqtUJUoNtQg8M33pGdkH2j34a4vLrnz01il5642LolBhHcpBcQERiPW4N41 Po0A== X-Forwarded-Encrypted: i=1; AHgh+Ro6oUyx9ra3cTj7ljQLVZCAD/hLj0gLSvrukWhBDe0GiocK4oz8+M2UeXajsk1XTAcm0yB1BnqR5tXT90Bn@lists.postgresql.org X-Gm-Message-State: AOJu0YyqHcNDzuzFGJlomTduuCFQqZDMCvTXxd6vtHjgjxgSdf3qLnez QX3ETXWG62S11gz2uYqoYWaw/wcyPi9ON8P2MHiaE/JYn/53e/O37+T3dpWOpUTAay6DVPRzNH2 sYUetQHbDspEOlOdlUtIYoVofRC9Suos= X-Gm-Gg: AfdE7cmGFJXM7bFB0Ah4+B0kRIH2Y9KlPZRxO6rosh3Eb2WNkuZmb8inzX/LV+sR9zT f7dUFOCxTiTMnqeK4E9lEEERFNtgyr1/s+Mn4n4oka+ofrnV0vHYBHz2vJCRZ+jA9+RHB9gnFVv GPE7DtCXdZSo6Z+Eb0J8Vo9Eir1yqffWjgXGJBQAqC32ikmySbAsR/eggnNRP5gx7XOAzDwi0/E aVjzaHj3kw55R76Ovcr11nDLoNRwvaAcvvUMErti961/3Qva2gsjQqNdDXmZwRpyXWpTPDJk1ou LehFz9TUOjhiV7pwqF2tgQtmbDLQ9K874Op6GCBPKKwnLuJcaP6KH5vxLIQimLDJsHp0684nFoo = X-Received: by 2002:a05:6a00:cca:b0:847:84b9:f3f1 with SMTP id d2e1a72fcca58-847c0767f4emr433908b3a.27.1782891991679; Wed, 01 Jul 2026 00:46:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Wed, 1 Jul 2026 13:16:19 +0530 X-Gm-Features: AVVi8CfiafG9-56BELpTOoYgct2R3j4xJlnY06YcAIv38z_oBvgKHk6P63gPjCU Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: Dilip Kumar Cc: Amit Kapila , Peter Smith , vignesh C , Nisha Moond , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers , shveta malik Content-Type: multipart/mixed; boundary="000000000000d680e0065587e39a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d680e0065587e39a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 1, 2026 at 12:45=E2=80=AFPM Dilip Kumar = wrote: > > Thanks I have fixed these comments and also merged the docs. Thanks. Sharing the version with pgindent run on v61. thanks Shveta --000000000000d680e0065587e39a Content-Type: application/octet-stream; name="v61-0001-Add-configurable-conflict-log-table-for-Logical-pgindent.patch" Content-Disposition: attachment; filename="v61-0001-Add-configurable-conflict-log-table-for-Logical-pgindent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1rucfq0 RnJvbSBmOTgwZjkwNDRiMzQ1YWIzMjBjNjdhMTFkODAxY2JkYjJmMGM2YjhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBKdWwgMjAyNiAxMzowNzo1MiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjYx XSBBZGQgY29uZmlndXJhYmxlIGNvbmZsaWN0IGxvZyB0YWJsZSBmb3IgTG9naWNhbAogUmVwbGlj YXRpb24KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgcGF0Y2ggYWRkcyBh IGZlYXR1cmUgdG8gcHJvdmlkZSBhIHN0cnVjdHVyZWQsIHF1ZXJ5YWJsZSByZWNvcmQgb2YgYWxs CmxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiBUaGUgY3VycmVudCBhcHByb2FjaCBvZiBs b2dnaW5nIGNvbmZsaWN0cyBhcwpwbGFpbiB0ZXh0IGluIHRoZSBzZXJ2ZXIgbG9ncyBtYWtlcyBp dCBkaWZmaWN1bHQgdG8gcXVlcnksIGFuYWx5emUsIGFuZAp1c2UgZm9yIGV4dGVybmFsIG1vbml0 b3JpbmcgYW5kIGF1dG9tYXRpb24uCgpUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGVzZSBsaW1pdGF0 aW9ucyBieSBpbnRyb2R1Y2luZyBhIGNvbmZpZ3VyYWJsZQpjb25mbGljdF9sb2dfZGVzdGluYXRp b249KCdsb2cnLyd0YWJsZScvJ2FsbCcpIG9wdGlvbiBpbiB0aGUgQ1JFQVRFIFNVQlNDUklQVElP Tgpjb21tYW5kLgoKSWYgdGhlIHVzZXIgY2hvb3NlcyB0byBlbmFibGUgbG9nZ2luZyB0byBhIHRh YmxlIChieSBzZWxlY3RpbmcgJ3RhYmxlJyBvciAnYWxsJyksCmFuIGludGVybmFsIGxvZ2dpbmcg dGFibGUgbmFtZWQgcGdfY29uZmxpY3RfbG9nXzxzdWJpZD4gaXMgYXV0b21hdGljYWxseQpjcmVh dGVkIHdpdGhpbiBhIGRlZGljYXRlZCwgc3lzdGVtLW1hbmFnZWQgJ3BnX2NvbmZsaWN0JyBuYW1l c3BhY2UgdG8gcHJldmVudAp1c2VycyBmcm9tIG1hbnVhbGx5IGRyb3BwaW5nIG9yIGFsdGVyaW5n IGl0LiBUaGlzIGFsc28gcHJldmVudHMgYWNjaWRlbnRhbApuYW1lIGNvbGxpc2lvbnMgd2l0aCB1 c2VyLWNyZWF0ZWQgdGFibGVzLiBUaGlzIHRhYmxlIGlzIGxpbmtlZCB0byB0aGUKc3Vic2NyaXB0 aW9uIHZpYSBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5LCBlbnN1cmluZyBpdCBpcyBhdXRvbWF0aWNh bGx5IGRyb3BwZWQKd2hlbiB0aGUgc3Vic2NyaXB0aW9uIGlzIHJlbW92ZWQKClRoZSBwZXItc3Vi c2NyaXB0aW9uIHRhYmxlIG1vZGVsIHdhcyBjaG9zZW4gb3ZlciBhIHNpbmdsZSBnbG9iYWwgbG9n IHRvIGVuc3VyZQpzdXBlcmlvciBpc29sYXRpb24gYW5kIGFkbWluaXN0cmF0aXZlIGZsZXhpYmls aXR5IGJ5IGRpcmVjdGx5IGFsaWduaW5nIHRhYmxlIG93bmVyc2hpcAp3aXRoIHRoZSBzdWJzY3Jp cHRpb27igJlzIGxpZmVjeWNsZS4gVGhpcyBhcHByb2FjaCBhbGxvd3MgZm9yIGdyYW51bGFyIHBl cm1pc3Npb24KbWFuYWdlbWVudCwgZW5hYmxpbmcgdGhlIHN1YnNjcmlwdGlvbiBvd25lciB0byBw ZXJmb3JtIG5lY2Vzc2FyeSBtYWludGVuYW5jZQp0YXNrcyBsaWtlIFNFTEVDVCwgREVMRVRFLCBh bmQgVFJVTkNBVEUgd2l0aG91dCB0aGUgc2VjdXJpdHkgcmlza3Mgb3IgY29tcGxleApSb3ctTGV2 ZWwgU2VjdXJpdHkgcmVxdWlyZWQgYnkgYSBzaGFyZWQgZ2xvYmFsIHRhYmxlLgoKVGhlIGNvbmZs aWN0IGRldGFpbHMsIGluY2x1ZGluZyB0aGUgb3JpZ2luYWwgYW5kIHJlbW90ZSB0dXBsZXMsIGFy ZSBzdG9yZWQgaW4gSlNPTgpjb2x1bW5zLCBwcm92aWRpbmcgYSBmbGV4aWJsZSBmb3JtYXQgdG8g YWNjb21tb2RhdGUgZGlmZmVyZW50IHRhYmxlIHNjaGVtYXMuCgpUaGUgbG9nIHRhYmxlIGNhcHR1 cmVzIGVzc2VudGlhbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgbG9jYWwgYW5kIHJlbW90ZSB0cmFuc2Fj dGlvbiBJRHMsCkxTTnMsIGNvbW1pdCB0aW1lc3RhbXBzLCBhbmQgY29uZmxpY3QgdHlwZSwgcHJv dmlkaW5nIGEgY29tcGxldGUgcmVjb3JkIGZvciBwb3N0LW1vcnRlbQphbmFseXNpcy4KClRoaXMg ZmVhdHVyZSB3aWxsIG1ha2UgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdHMgZWFzaWVyIHRv IG1vbml0b3IgYW5kIG1hbmFnZSwKc2lnbmlmaWNhbnRseSBpbXByb3ZpbmcgdGhlIG92ZXJhbGwg cmVzaWxpZW5jZSBhbmQgb3BlcmFiaWxpdHkgb2YgcmVwbGljYXRpb24gc2V0dXBzLgoKVGhlIGNv bmZsaWN0IGxvZyB0YWJsZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gYSBwdWJsaWNhdGlvbiwg ZXZlbiBpZiB0aGUgcHVibGljYXRpb24KaXMgY29uZmlndXJlZCB0byBpbmNsdWRlIEFMTCBUQUJM RVMgb3IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEuCgpOb3RlOiBCdW1wIGNhdGFsb2cgdmVyc2lvbiBh cyB0aGlzIGFkZCBuZXcgY29sdW1uIHRvIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nCi0tLQogZG9j L3NyYy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsrCiBkb2Mvc3Jj L3NnbWwvZ2xvc3Nhcnkuc2dtbCAgICAgICAgICAgICAgICAgfCAgMTIgKwogZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgIHwgIDE1ICsrCiBkb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgfCAgMTMgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sICB8ICA0NyArKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2Fj bGNoay5jICAgICAgICAgICAgICAgfCAgNTggKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRh bG9nLmMgICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tjbWRzLmMgICAgICAgICAg ICB8ICAyNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMgICAgICAgICAgICAgIHwg IDEyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jICAgICAgICAgICB8ICAxNCAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgfCAyMTQgKysrKysr KysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAg OTUgKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgIHwg IDI1ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgfCAgMjgg KysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYyB8IDE3MiArKysr KysrKysrKysKIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jICAgICAgICB8ICAy NCArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgIHwgICAyICst CiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL2NhdGFsb2cuaCAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19uYW1lc3BhY2UuZGF0ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICB8ICAxMCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9jb25mbGljdC5oICAgICAgICAgfCAgMjYgKysKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJz Y3JpcHRpb24ub3V0IHwgMjk1ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgIHwgMjM0ICsrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGljdHMucGwgICB8ICA2NyArKysrLQogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgIHwgICAyICsKIDMxIGZpbGVzIGNo YW5nZWQsIDE0NDMgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGZiZDBl YmJmMTBmLi5hYjQ1ZmVhN2VkNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtMzc1OSw2ICszNzU5LDI2IEBAIFJFVk9LRSBD UkVBVEUgT04gU0NIRU1BIHB1YmxpYyBGUk9NIFBVQkxJQzsKICAgIDwvcGFyYT4KICAgPC9zZWN0 Mj4KIAorICA8c2VjdDIgaWQ9ImRkbC1zY2hlbWFzLWNvbmZsaWN0Ij4KKyAgIDx0aXRsZT5UaGUg Q29uZmxpY3QgU2NoZW1hPC90aXRsZT4KKworICAgPGluZGV4dGVybSB6b25lPSJkZGwtc2NoZW1h cy1jb25mbGljdCI+CisgICAgPHByaW1hcnk+Y29uZmxpY3Q8L3ByaW1hcnk+CisgICAgPHNlY29u ZGFyeT5zY2hlbWE8L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAg ICBTaW1pbGFybHksIHRoZSA8bGl0ZXJhbD5wZ19jb25mbGljdDwvbGl0ZXJhbD4gc2NoZW1hIChz b21ldGltZXMgcmVmZXJyZWQgdG8KKyAgICBhcyB0aGUgPGVtcGhhc2lzPmNvbmZsaWN0IHNjaGVt YTwvZW1waGFzaXM+KSBjb250YWlucyBzeXN0ZW0gbWFuYWdlZAorICAgIGNvbmZsaWN0IGxvZyB0 YWJsZXMgdXNlZCBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdCB0cmFja2luZy4gVGhl c2UKKyAgICB0YWJsZXMgYXJlIGNyZWF0ZWQgYW5kIG1haW50YWluZWQgYnkgdGhlIHN5c3RlbSBh bmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IKKyAgICBkaXJlY3QgdXNlciBtYW5pcHVsYXRpb24uIFVu bGlrZSA8bGl0ZXJhbD5wZ19jYXRhbG9nPC9saXRlcmFsPiwgdGhlCisgICAgPGxpdGVyYWw+cGdf Y2F0YWxvZzwvbGl0ZXJhbD4gc2NoZW1hIGlzIG5vdCBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIHRo ZQorICAgIHNlYXJjaCBwYXRoLCBzbyBvYmplY3RzIHdpdGhpbiBpdCBtdXN0IGJlIHJlZmVyZW5j ZWQgZXhwbGljaXRseSBvciBieQorICAgIGFkanVzdGluZyB0aGUgc2VhcmNoIHBhdGguCisgICA8 L3BhcmE+CisgIDwvc2VjdDI+CisKICAgPHNlY3QyIGlkPSJkZGwtc2NoZW1hcy1wYXR0ZXJucyI+ CiAgICA8dGl0bGU+VXNhZ2UgUGF0dGVybnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvZ2xvc3Nhcnkuc2dtbCBiL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IGI4 ODFhZTcxMTk4Li41N2I2OTcwYWQ5ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5 LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwKQEAgLTUwNiw2ICs1MDYsMTgg QEAKICAgIDwvZ2xvc3NkZWY+CiAgIDwvZ2xvc3NlbnRyeT4KIAorICA8Z2xvc3NlbnRyeSBpZD0i Z2xvc3NhcnktY29uZmxpY3Qtc2NoZW1hIj4KKyAgIDxnbG9zc3Rlcm0+Y29uZmxpY3Qgc2NoZW1h PC9nbG9zc3Rlcm0+CisgICA8Z2xvc3NkZWY+CisgICAgPHBhcmE+CisgICAgIFRoZSA8bGl0ZXJh bD5wZ19jb25mbGljdDwvbGl0ZXJhbD4gc2NoZW1hIHRoYXQgY29udGFpbnMgc3lzdGVtLW1hbmFn ZWQKKyAgICAgY29uZmxpY3QgbG9nIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbi4gVGhl c2UgdGFibGVzIGFyZSBjcmVhdGVkCisgICAgIGFuZCBtYWludGFpbmVkIGF1dG9tYXRpY2FsbHkg YnkgdGhlIHN5c3RlbSBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IKKyAgICAgZGlyZWN0IHVzZXIg bWFuaXB1bGF0aW9uLiBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLXNjaGVtYXMtY29uZmxpY3QiLz4u CisgICAgPC9wYXJhPgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9zc2VudHJ5PgorCiAgIDxnbG9z c2VudHJ5IGlkPSJnbG9zc2FyeS1jb25uZWN0aW9uIj4KICAgIDxnbG9zc3Rlcm0+Q29ubmVjdGlv bjwvZ2xvc3N0ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKaW5kZXggNWJlZmVmZDljNWEuLmViZDFjYzg2MmFlIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKQEAgLTI5Myw2ICsyOTMsMjEgQEAKICAgIG9wdGlvbiBvZiA8Y29t bWFuZD5DUkVBVEUgU1VCU0NSSVBUSU9OPC9jb21tYW5kPiBmb3IgZGV0YWlscy4KICAgPC9wYXJh PgogCisgIDxwYXJhPgorICAgPGxpbmsgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb25m bGljdHMiPkNvbmZsaWN0czwvbGluaz4gdGhhdCBvY2N1cgorICAgZHVyaW5nIHJlcGxpY2F0aW9u IGFyZSwgYnkgZGVmYXVsdCwgbG9nZ2VkIGFzIHBsYWluIHRleHQgaW4gdGhlIHNlcnZlciBsb2cs CisgICB3aGljaCBjYW4gbWFrZSBhdXRvbWF0ZWQgbW9uaXRvcmluZyBhbmQgYW5hbHlzaXMgZGlm ZmljdWx0LiBUaGUKKyAgIDxjb21tYW5kPkNSRUFURSBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+IGNv bW1hbmQgcHJvdmlkZXMgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0 aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+CisgICA8bGl0ZXJhbD5j b25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5rPiBvcHRpb24gdG8gcmVjb3Jk IGRldGFpbGVkCisgICBjb25mbGljdCBpbmZvcm1hdGlvbiBpbiBhIHN0cnVjdHVyZWQsIHF1ZXJ5 YWJsZSBmb3JtYXQuIFdoZW4gdGhpcyBwYXJhbWV0ZXIKKyAgIGlzIHNldCB0byA8bGl0ZXJhbD50 YWJsZTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+YWxsPC9saXRlcmFsPiwgdGhlIHN5c3RlbQorICAg YXV0b21hdGljYWxseSBtYW5hZ2VzIGEgZGVkaWNhdGVkIDxmaXJzdHRlcm0+Y29uZmxpY3QgbG9n IHRhYmxlPC9maXJzdHRlcm0+LAorICAgd2hpY2ggaXMgY3JlYXRlZCBhbiBkcm9wcGVkIGFsb25n IHdpdGggdGhlIHN1YnNjcmlwdGlvbi4gVGhpcyBzaWduaWZpY2FudGx5CisgICBpbXByb3ZlcyBw b3N0LW1vcnRlbSBhbmFseXNpcyBhbmQgb3BlcmF0aW9uYWwgdmlzaWJpbGl0eSBvZiB0aGUgcmVw bGljYXRpb24KKyAgIHNldHVwLgorICA8L3BhcmE+CisKICAgPHNlY3QyIGlkPSJsb2dpY2FsLXJl cGxpY2F0aW9uLXN1YnNjcmlwdGlvbi1zbG90Ij4KICAgIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0 aW9uIFNsb3QgTWFuYWdlbWVudDwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNj cmlwdGlvbi5zZ21sCmluZGV4IGU0ZjBiNmIxNmM3Li4xM2I0MTNkMTQyZiAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yOTMsOCArMjkzLDkgQEAgQUxURVIg U1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3Jp cHRpb24tcGFyYW1zLXdpdGgtZmFpbG92ZXIiPjxsaXRlcmFsPmZhaWxvdmVyPC9saXRlcmFsPjwv bGluaz4sCiAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFt cy13aXRoLXR3by1waGFzZSI+PGxpdGVyYWw+dHdvX3BoYXNlPC9saXRlcmFsPjwvbGluaz4sCiAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXJl dGFpbi1kZWFkLXR1cGxlcyI+PGxpdGVyYWw+cmV0YWluX2RlYWRfdHVwbGVzPC9saXRlcmFsPjwv bGluaz4sCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFt cy13aXRoLW1heC1yZXRlbnRpb24tZHVyYXRpb24iPjxsaXRlcmFsPm1heF9yZXRlbnRpb25fZHVy YXRpb248L2xpdGVyYWw+PC9saW5rPiwgYW5kCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJh bD53YWxfcmVjZWl2ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPGxpbmsgbGlu a2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0ZW50aW9uLWR1 cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRlcmFsPjwvbGluaz4s CisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2ZXJfdGltZW91dDwvbGl0 ZXJhbD48L2xpbms+LCBhbmQKKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3Jp cHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3RpbmF0aW9uIj48bGl0ZXJhbD5jb25m bGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5rPi4KICAgICAgIE9ubHkgYSBzdXBl cnVzZXIgY2FuIHNldCA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlPC9saXRlcmFs Pi4KICAgICAgPC9wYXJhPgogCkBAIC0zNTIsNiArMzUzLDE0IEBAIEFMVEVSIFNVQlNDUklQVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8CiAgICAgICA8cXVvdGU+PGxpdGVyYWw+cGdfY29uZmxpY3RfZGV0ZWN0aW9uPC9saXRl cmFsPjwvcXVvdGU+LCBjcmVhdGVkIHRvIHJldGFpbgogICAgICAgZGVhZCB0dXBsZXMgZm9yIGNv bmZsaWN0IGRldGVjdGlvbiwgd2lsbCBiZSBkcm9wcGVkLgogICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICBXaGVuIHRoZSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0 aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+PGxpdGVyYWw+Y29uZmxp Y3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwvbGluaz4KKyAgICAgIHBhcmFtZXRlciBpcyBz ZXQgdG8gPGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmFsbDwvbGl0ZXJhbD4s IHRoZSBzeXN0ZW0KKyAgICAgIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyB0aGUgY29uZmxpY3QgbG9n IHRhYmxlLiBDb252ZXJzZWx5LCBpZiB0aGUgZGVzdGluYXRpb24gaXMgY2hhbmdlZCB0bworICAg ICAgPGxpdGVyYWw+bG9nPC9saXRlcmFsPiwgbG9nZ2luZyB0byB0aGUgdGFibGUgc3RvcHMgYW5k IHRoZSBjb25mbGljdCBsb2cKKyAgICAgIHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgZHJvcHBlZC4K KyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCAwN2Q1YjFiZDc3Yy4u NjE4ZDUxZjJkZWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s CkBAIC0yNjEsNiArMjYxLDUzIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0 aW5hdGlvbiI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv bjwvbGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgU3BlY2lmaWVzIHRoZSBkZXN0aW5hdGlvbiBm b3IgcmVjb3JkaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLgorICAgICAgICAgPC9w YXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGF2YWlsYWJsZSBkZXN0aW5hdGlv bnMgYXJlOgorICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPmxvZzwvbGl0ZXJhbD46 IENvbmZsaWN0IGRldGFpbHMgYXJlIHJlY29yZGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAg ICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgICAgICA8L3BhcmE+ CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPnRhYmxlPC9saXRlcmFsPjogVGhlIHN5 c3RlbSBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBzdHJ1Y3R1cmVkIHRhYmxlCisgICAgICAgICAg ICAgbmFtZWQgPGxpdGVyYWw+cGdfY29uZmxpY3RfbG9nX2Zvcl9zdWJpZF8mbHQ7c3ViaWQmZ3Q7 PC9saXRlcmFsPgorICAgICAgICAgICAgIGluIHRoZSA8bGl0ZXJhbD5wZ19jb25mbGljdDwvbGl0 ZXJhbD4gc2NoZW1hLiBUaGlzIGFsbG93cyBmb3IgZWFzeQorICAgICAgICAgICAgIHF1ZXJ5aW5n IGFuZCBhbmFseXNpcyBvZiBjb25mbGljdHMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAg ICAgICA8Y2F1dGlvbj4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGhlIGNv bmZsaWN0IGxvZyB0YWJsZSBpcyBzdHJpY3RseSB0aWVkIHRvIHRoZSBsaWZlY3ljbGUgb2YgdGhl CisgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiBvciB0aGUgPGxpdGVyYWw+Y29uZmxpY3RfbG9n X2Rlc3RpbmF0aW9uPC9saXRlcmFsPiBzZXR0aW5nLiBJZgorICAgICAgICAgICAgICB0aGUgc3Vi c2NyaXB0aW9uIGlzIGRyb3BwZWQsIG9yIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyBjaGFuZ2VkIHRv CisgICAgICAgICAgICAgIDxsaXRlcmFsPmxvZzwvbGl0ZXJhbD4sIHRoZSB0YWJsZSBhbmQgYWxs IGl0cyByZWNvcmRlZCBjb25mbGljdCBkYXRhIGFyZQorICAgICAgICAgICAgICA8ZW1waGFzaXM+ cGVybWFuZW50bHkgZGVsZXRlZDwvZW1waGFzaXM+LgorICAgICAgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgY29uZmxpY3QgaGlzdG9yeSBtYXkg YmUgbmVlZGVkIGxhdGVyLCBiYWNrIHVwIHRoZSBjb25mbGljdCBsb2cKKyAgICAgICAgICAgICAg dGFibGUgYmVmb3JlIGl0IGdldHMgcmVtb3ZlZC4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAg ICAgICAgICA8L2NhdXRpb24+CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPmFsbDwv bGl0ZXJhbD46IFJlY29yZHMgY29uZmxpY3QgZGV0YWlscyB0byBib3RoIGRlc3RpbmF0aW9ucwor ICAgICAgICAgICAgIDxsaXRlcmFsPmxvZzwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnRhYmxlPC9s aXRlcmFsPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29weS1kYXRhIj4KICAgICAgICAg PHRlcm0+PGxpdGVyYWw+Y29weV9kYXRhPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4p PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCAwMDdlZGU5 OTdjNS4uMTQwY2QxMzAyZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hr LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMzMzNywyNSArMzMzNywz OSBAQCBwZ19jbGFzc19hY2xtYXNrX2V4dChPaWQgdGFibGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xN b2RlIG1hc2ssCiAKIAljbGFzc0Zvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxl KTsKIAotCS8qCi0JICogRGVueSBhbnlvbmUgcGVybWlzc2lvbiB0byB1cGRhdGUgYSBzeXN0ZW0g Y2F0YWxvZyB1bmxlc3MKLQkgKiBwZ19hdXRoaWQucm9sc3VwZXIgaXMgc2V0LgotCSAqCi0JICog QXMgb2YgNy40IHdlIGhhdmUgc29tZSB1cGRhdGFibGUgc3lzdGVtIHZpZXdzOyB0aG9zZSBzaG91 bGRuJ3QgYmUKLQkgKiBwcm90ZWN0ZWQgaW4gdGhpcyB3YXkuICBBc3N1bWUgdGhlIHZpZXcgcnVs ZXMgY2FuIHRha2UgY2FyZSBvZgotCSAqIHRoZW1zZWx2ZXMuICBBQ0xfVVNBR0UgaXMgaWYgd2Ug ZXZlciBoYXZlIHN5c3RlbSBzZXF1ZW5jZXMuCi0JICovCi0JaWYgKChtYXNrICYgKEFDTF9JTlNF UlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8IEFDTF9VU0FHRSkp ICYmCi0JCUlzU3lzdGVtQ2xhc3ModGFibGVfb2lkLCBjbGFzc0Zvcm0pICYmCi0JCWNsYXNzRm9y bS0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYKLQkJIXN1cGVydXNlcl9hcmcocm9sZWlkKSkK LQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9U UlVOQ0FURSB8IEFDTF9VU0FHRSk7Ci0KLQkvKgotCSAqIE90aGVyd2lzZSwgc3VwZXJ1c2VycyBi eXBhc3MgYWxsIHBlcm1pc3Npb24tY2hlY2tpbmcuCi0JICovCi0JaWYgKHN1cGVydXNlcl9hcmco cm9sZWlkKSkKKwlpZiAoIXN1cGVydXNlcl9hcmcocm9sZWlkKSkKIAl7CisJCWlmIChtYXNrICYg KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8IEFD TF9VU0FHRSkpCisJCXsKKwkJCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc0Zvcm0p KQorCQkJeworCQkJCS8qCisJCQkJICogRm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMsIGFsbG93IG5v bi1zdXBlcnVzZXJzIHRvIHBlcmZvcm0KKwkJCQkgKiBERUxFVEUgYW5kIFRSVU5DQVRFIGZvciBj bGVhbnVwIGFuZCBtYWludGVuYW5jZSwgd2hpbGUKKwkJCQkgKiBzdGlsbCByZXN0cmljdGluZyBJ TlNFUlQsIFVQREFURSwgYW5kIFVTQUdFLgorCQkJCSAqLworCQkJCW1hc2sgJj0gfihBQ0xfSU5T RVJUIHwgQUNMX1VQREFURSB8IEFDTF9VU0FHRSk7CisJCQl9CisJCQllbHNlIGlmIChJc1N5c3Rl bUNsYXNzKHRhYmxlX29pZCwgY2xhc3NGb3JtKSAmJgorCQkJCQkgY2xhc3NGb3JtLT5yZWxraW5k ICE9IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIERlbnkgYW55b25lIHBlcm1p c3Npb24gdG8gdXBkYXRlIGEgc3lzdGVtIGNhdGFsb2cgdW5sZXNzCisJCQkJICogcGdfYXV0aGlk LnJvbHN1cGVyIGlzIHNldC4KKwkJCQkgKgorCQkJCSAqIEFzIG9mIDcuNCB3ZSBoYXZlIHNvbWUg dXBkYXRhYmxlIHN5c3RlbSB2aWV3czsgdGhvc2UKKwkJCQkgKiBzaG91bGRuJ3QgYmUgcHJvdGVj dGVkIGluIHRoaXMgd2F5LiAgQXNzdW1lIHRoZSB2aWV3IHJ1bGVzCisJCQkJICogY2FuIHRha2Ug Y2FyZSBvZiB0aGVtc2VsdmVzLiAgQUNMX1VTQUdFIGlzIGlmIHdlIGV2ZXIgaGF2ZQorCQkJCSAq IHN5c3RlbSBzZXF1ZW5jZXMuCisJCQkJICovCisJCQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBB Q0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8CisJCQkJCQkgIEFDTF9VU0FH RSk7CisJCQl9CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogU3VwZXJ1c2VycyBieXBhc3MgYWxs IHBlcm1pc3Npb24tY2hlY2tpbmcuICovCiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAJCXJl dHVybiBtYXNrOwogCX0KQEAgLTM2NjAsNiArMzY3NCwxNCBAQCBwZ19uYW1lc3BhY2VfYWNsbWFz a19leHQoT2lkIG5zcF9vaWQsIE9pZCByb2xlaWQsCiAJQWNsCQkgICAqYWNsOwogCU9pZAkJCW93 bmVySWQ7CiAKKwkvKgorCSAqIERpc2FsbG93IGNyZWF0aW9uIGluIHRoZSBjb25mbGljdCBzY2hl bWEgZm9yIGV2ZXJ5b25lLCBpbmNsdWRpbmcKKwkgKiBzdXBlcnVzZXJzLCB1bmxlc3MgaW4gYmlu YXJ5LXVwZ3JhZGUgbW9kZS4KKwkgKi8KKwlpZiAoIUlzQmluYXJ5VXBncmFkZSAmJiAobWFzayAm IEFDTF9DUkVBVEUpICYmCisJCUlzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShuc3Bfb2lkKSkK KwkJbWFzayAmPSB+QUNMX0NSRUFURTsKKwogCS8qIFN1cGVydXNlcnMgYnlwYXNzIGFsbCBwZXJt aXNzaW9uIGNoZWNraW5nLiAqLwogCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCiAJCXJldHVy biBtYXNrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYwppbmRleCA3YmU0OTAzMjkzNC4uYmU4NzkxYWY4NzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvY2F0YWxvZy5jCkBAIC04Niw3ICs4Niw5IEBAIGJvb2wKIElzU3lzdGVtQ2xh c3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogewogCS8qIElzQ2F0YWxvZ1Jl bGF0aW9uT2lkIGlzIGEgYml0IGZhc3Rlciwgc28gdGVzdCB0aGF0IGZpcnN0ICovCi0JcmV0dXJu IChJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgfHwgSXNUb2FzdENsYXNzKHJlbHR1cGxlKSk7 CisJcmV0dXJuIChJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgfHwKKwkJCUlzVG9hc3RDbGFz cyhyZWx0dXBsZSkgfHwKKwkJCUlzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKHJlbHR1cGxlKSk7CiB9 CiAKIC8qCkBAIC0yMzAsNiArMjMyLDIwIEBAIElzVG9hc3RDbGFzcyhGb3JtX3BnX2NsYXNzIHJl bHR1cGxlKQogCXJldHVybiBJc1RvYXN0TmFtZXNwYWNlKHJlbG5hbWVzcGFjZSk7CiB9CiAKKy8q CisgKiBJc0NvbmZsaWN0TG9nVGFibGVDbGFzcworICoJCVRydWUgaWZmIHBnX2NsYXNzIHR1cGxl IHJlcHJlc2VudHMgYSBDb25mbGljdCBMb2cgVGFibGUuCisgKgorICoJCURvZXMgbm90IHBlcmZv cm0gYW55IGNhdGFsb2cgYWNjZXNzZXMuCisgKi8KK2Jvb2wKK0lzQ29uZmxpY3RMb2dUYWJsZUNs YXNzKEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCit7CisJT2lkCQkJcmVsbmFtZXNwYWNlID0gcmVs dHVwbGUtPnJlbG5hbWVzcGFjZTsKKworCXJldHVybiBJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3Bh Y2UocmVsbmFtZXNwYWNlKTsKK30KKwogLyoKICAqIElzQ2F0YWxvZ05hbWVzcGFjZQogICoJCVRy dWUgaWZmIG5hbWVzcGFjZSBpcyBwZ19jYXRhbG9nLgpAQCAtMjY0LDYgKzI4MCwxNyBAQCBJc1Rv YXN0TmFtZXNwYWNlKE9pZCBuYW1lc3BhY2VJZCkKIAkJaXNUZW1wVG9hc3ROYW1lc3BhY2UobmFt ZXNwYWNlSWQpOwogfQogCisvKgorICogSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlCisgKgkJ VHJ1ZSBpZmYgbmFtZXNwYWNlIGlzIHBnX2NvbmZsaWN0LgorICoKKyAqCQlEb2VzIG5vdCBwZXJm b3JtIGFueSBjYXRhbG9nIGFjY2Vzc2VzLgorICovCitib29sCitJc0NvbmZsaWN0TG9nVGFibGVO YW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKQoreworCXJldHVybiBuYW1lc3BhY2VJZCA9PSBQR19D T05GTElDVF9OQU1FU1BBQ0U7Cit9CiAKIC8qCiAgKiBJc1Jlc2VydmVkTmFtZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDVjNDU3ZDlhY2E4Li4xZWM5NGM4NTFiMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtOTIsNiArOTIsMTMgQEAgY2hlY2tf cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBl cnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKIAorCS8qIENhbid0IGJl IGNvbmZsaWN0IGxvZyB0YWJsZSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2Uo UmVsYXRpb25HZXROYW1lc3BhY2UodGFyZ2V0cmVsKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZyhl cnJvcm1zZywgcmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90 IHN1cHBvcnRlZCBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcy4iKSkpOworCiAJLyogVU5MT0dHRUQg YW5kIFRFTVAgcmVsYXRpb25zIGNhbm5vdCBiZSBwYXJ0IG9mIHB1YmxpY2F0aW9uLiAqLwogCWlm ICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExMyw3ICsxMjAsOCBAQCBzdGF0aWMgdm9pZAogY2hl Y2tfcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgc2NoZW1haWQpCiB7CiAJLyogQ2FuJ3QgYmUg c3lzdGVtIG5hbWVzcGFjZSAqLwotCWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2NoZW1haWQpIHx8 IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpKQorCWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2No ZW1haWQpIHx8IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpIHx8CisJCUlzQ29uZmxpY3RMb2dU YWJsZU5hbWVzcGFjZShzY2hlbWFpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygiY2Fubm90IGFk ZCBzY2hlbWEgXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKQEAgLTE0OCw3ICsxNTYsOCBAQCBjaGVj a19wdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBzY2hlbWFpZCkKICAqIGlzIHJlYWxseSBpbmFk ZXF1YXRlIGZvciB0aGF0LCBzaW5jZSB0aGUgaW5mb3JtYXRpb25fc2NoZW1hIGNvdWxkIGJlCiAg KiBkcm9wcGVkIGFuZCByZWxvYWRlZCBhbmQgdGhlbiBpdCdsbCBiZSBjb25zaWRlcmVkIHB1Ymxp c2hhYmxlLiAgVGhlIGJlc3QKICAqIGxvbmctdGVybSBzb2x1dGlvbiBtYXkgYmUgdG8gYWRkIGEg InJlbGlzcHVibGlzaGFibGUiIGJvb2wgdG8gcGdfY2xhc3MsCi0gKiBhbmQgZGVwZW5kIG9uIHRo YXQgaW5zdGVhZCBvZiBPSUQgY2hlY2tzLgorICogYW5kIGRlcGVuZCBvbiB0aGF0IGluc3RlYWQg b2YgT0lEIGNoZWNrcy4gIElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKCkKKyAqIGV4Y2x1ZGVzIHRh YmxlcyBpbiBjb25mbGljdCBzY2hlbWEuCiAgKi8KIHN0YXRpYyBib29sCiBpc19wdWJsaXNoYWJs ZV9jbGFzcyhPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCkBAIC0xNTcsNiArMTY2 LDcgQEAgaXNfcHVibGlzaGFibGVfY2xhc3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1 cGxlKQogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8 fAogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkgJiYKIAkJIUlzQ2F0 YWxvZ1JlbGF0aW9uT2lkKHJlbGlkKSAmJgorCQkhSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MocmVs dHVwbGUpICYmCiAJCXJlbHR1cGxlLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9Q RVJNQU5FTlQgJiYKIAkJcmVsaWQgPj0gRmlyc3ROb3JtYWxPYmplY3RJZDsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGI1Y2IzMDFkYjg4Li4yMDY4ZTAzYzU3MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0xMzIsNiArMTMyLDcgQEAg R2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZv X25lZWRlZCwKIAlzdWItPnJldGFpbmRlYWR0dXBsZXMgPSBzdWJmb3JtLT5zdWJyZXRhaW5kZWFk dHVwbGVzOwogCXN1Yi0+bWF4cmV0ZW50aW9uID0gc3ViZm9ybS0+c3VibWF4cmV0ZW50aW9uOwog CXN1Yi0+cmV0ZW50aW9uYWN0aXZlID0gc3ViZm9ybS0+c3VicmV0ZW50aW9uYWN0aXZlOworCXN1 Yi0+Y29uZmxpY3Rsb2dyZWxpZCA9IHN1YmZvcm0tPnN1YmNvbmZsaWN0bG9ncmVsaWQ7CiAKIAlp ZiAoY29ubmluZm9fbmVlZGVkKQogCXsKQEAgLTIwMyw2ICsyMDQsMTIgQEAgR2V0U3Vic2NyaXB0 aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZvX25lZWRlZCwKIAkJ CQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luKTsKIAlzdWItPm9yaWdpbiA9 IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwogCisJLyogR2V0IGNvbmZsaWN0IGxvZyBkZXN0 aW5hdGlvbiAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05P SUQsCisJCQkJCQkJCSAgIHR1cCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi Y29uZmxpY3Rsb2dkZXN0KTsKKwlzdWItPmNvbmZsaWN0bG9nZGVzdCA9IFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pOworCiAJLyogSXMgdGhlIHN1YnNjcmlwdGlvbiBvd25lciBhIHN1cGVydXNl cj8gKi8KIAlzdWItPm93bmVyc3VwZXJ1c2VyID0gc3VwZXJ1c2VyX2FyZyhzdWItPm93bmVyKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDhmMTI5YmFlYzkwLi41OTY3 NzYyZTYwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTUyNyw4ICsx NTI3LDggQEAgR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUs IHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVh bSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJICBzdWJwYXNzd29yZHJl cXVpcmVkLCBzdWJydW5hc293bmVyLCBzdWJmYWlsb3ZlciwKICAgICAgICAgICAgICAgc3VicmV0 YWluZGVhZHR1cGxlcywgc3VibWF4cmV0ZW50aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCi0gICAg ICAgICAgICAgIHN1YnNlcnZlciwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YndhbHJj dnRpbWVvdXQsCi0gICAgICAgICAgICAgIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQsIHN1YmNvbmZsaWN0bG9n ZGVzdCwgc3Vic2xvdG5hbWUsCisgICAgICAgICAgICAgIHN1YnN5bmNjb21taXQsIHN1YndhbHJj dnRpbWVvdXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlw dGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRz IEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9sb2NrY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwppbmRleCBmNjZiOGYxN2I5Yi4uMTMyMzJhMzYxOTYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwpAQCAtODMsNyArODMsMTkgQEAgUmFuZ2VWYXJDYWxs YmFja0ZvckxvY2tUYWJsZShjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9sZHJl bGlkLAogCQlyZXR1cm47CQkJCQkvKiB3b29wcywgY29uY3VycmVudGx5IGRyb3BwZWQ7IG5vIHBl cm1pc3Npb25zCiAJCQkJCQkJCSAqIGNoZWNrICovCiAKLQkvKiBDdXJyZW50bHksIHdlIG9ubHkg YWxsb3cgcGxhaW4gdGFibGVzIG9yIHZpZXdzIHRvIGJlIGxvY2tlZCAqLworCS8qCisJICogTm90 ZTogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgZGVsaWJlcmF0ZWx5IE5PVCBibG9ja2VkIGhlcmUs IGV2ZW4KKwkgKiB0aG91Z2ggb3RoZXIgZGlyZWN0IERETCBvbiB0aGVtIGlzIHJlamVjdGVkIGVs c2V3aGVyZS4gcGdfZHVtcCByZWxpZXMKKwkgKiBvbiBiZWluZyBhYmxlIHRvIHRha2UgYW4gQUND RVNTIFNIQVJFIGxvY2sgb24gdGhlc2UgdGFibGVzIHRvIHNhZmVseQorCSAqIGR1bXAgdGhlaXIg ZGVmaW5pdGlvbnMgZHVyaW5nIGEgYmluYXJ5IHVwZ3JhZGUsIHNvIHdlIHBlcm1pdCBMT0NLCisJ ICogY29tbWFuZHMgb24gdGhlbSBhbmQgdHJlYXQgdGhlbSBsaWtlIG9yZGluYXJ5IHRhYmxlcyBo ZXJlLiBJdCdzIHRydWUKKwkgKiB0aGF0IGEgc3Ryb25nIGxvY2sgKFNoYXJlTG9jayBvciBhYm92 ZSkgb24gc3VjaCBhIHRhYmxlIHdvdWxkIGNvbmZsaWN0CisJICogd2l0aCB0aGUgUm93RXhjbHVz aXZlTG9jayB0YWtlbiBieSB0aGUgYXBwbHkgd29ya2VyJ3MgaW5zZXJ0cyBhbmQgY291bGQKKwkg KiBzdGFsbCBjb25mbGljdCBsb2dnaW5nIGFzIHdlbGwgYXMgdGhlIGFwcGx5IHdvcmtlciBmb3Ig YXMgbG9uZyBhcyBpdCBpcworCSAqIGhlbGQuIEJ1dCBsb2NraW5nIGEgc3lzdGVtLW1hbmFnZWQg Y29uZmxpY3QgbG9nIHRhYmxlIGlzIGFuIHVudXN1YWwKKwkgKiB0aGluZyB0byBkbywgYW5kIGl0 IGRvZXNuJ3Qgc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSBvZiBmaWx0ZXJpbmcgYnkgbG9jaworCSAq IG1vZGUgaGVyZS4KKwkgKi8KIAlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJl bGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJgogCQlyZWxraW5kICE9IFJFTEtJ TkRfVklFVykKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE5OCw2ICsyMTAsMTYgQEAgTG9ja1ZpZXdS ZWN1cnNlX3dhbGtlcihOb2RlICpub2RlLCBMb2NrVmlld1JlY3Vyc2VfY29udGV4dCAqY29udGV4 dCkKIAkJCQlyZWxraW5kICE9IFJFTEtJTkRfVklFVykKIAkJCQljb250aW51ZTsKIAorCQkJLyoK KwkJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgb25seSBzdXBwb3J0IFNFTEVDVCwgREVMRVRFLCBh bmQgVFJVTkNBVEUuCisJCQkgKiBBIGRpcmVjdCBMT0NLIG9uIHRoZW0gaXMgcGVybWl0dGVkIHNv bGVseSBzbyB0aGF0IHBnX2R1bXAgY2FuCisJCQkgKiBsb2NrIHRoZW0gZHVyaW5nIGEgYmluYXJ5 IHVwZ3JhZGU7IGxvY2tpbmcgb25lIGluZGlyZWN0bHkgYnkKKwkJCSAqIGxvY2tpbmcgYSB2aWV3 IG92ZXIgaXQgaXMgbm90IG5lZWRlZCBmb3IgdGhhdCwgc28gc2tpcCBpdCBoZXJlCisJCQkgKiBy YXRoZXIgdGhhbiBsb2NraW5nIGl0LgorCQkJICovCisJCQlpZiAoSXNDb25mbGljdExvZ1RhYmxl TmFtZXNwYWNlKGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSkpCisJCQkJY29udGludWU7CisKIAkJ CS8qCiAJCQkgKiBXZSBtaWdodCBiZSBkZWFsaW5nIHdpdGggYSBzZWxmLXJlZmVyZW50aWFsIHZp ZXcuICBJZiBzbywgd2UKIAkJCSAqIGNhbiBqdXN0IHN0b3AgcmVjdXJzaW5nLCBzaW5jZSB3ZSBh bHJlYWR5IGxvY2tlZCBpdC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGlj eS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMKaW5kZXggMjFiOGVlYmUzMmQuLjRj YTA4NmJmNGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYwpAQCAtNzksNiArNzksMTggQEAgUmFuZ2VW YXJDYWxsYmFja0ZvclBvbGljeShjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9s ZHJlbGlkLAogCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxp ZCwgR2V0VXNlcklkKCkpKQogCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIGdl dF9yZWxraW5kX29ianR5cGUoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSksIHJ2LT5yZWxuYW1lKTsK IAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uCisJICogY29uZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBi ZSBtb2RpZmllZCBkaXJlY3RseSwgYXMgaXQgY291bGQKKwkgKiBkaXNydXB0IGNvbmZsaWN0IGxv Z2dpbmcuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKGNsYXNzZm9ybSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBwb2xpY3kgb24gY29uZmxpY3QgbG9nIHRhYmxl IFwiJXNcIiIsCisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3Qg bG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0 aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJLyogTm8gc3lzdGVtIHRhYmxlIG1vZGlmaWNhdGlvbnMg dW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4gKi8KIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2Rz ICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJST1IsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N0YXRzY21kcy5jCmluZGV4IGIzNTQ3MjNiZTQ0Li5jZTk4ZWJiMzVlYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKQEAgLTE0Nyw2ICsxNDcsMjAgQEAgQ3JlYXRlU3RhdGlz dGljcyhDcmVhdGVTdGF0c1N0bXQgKnN0bXQsIGJvb2wgY2hlY2tfcmlnaHRzKQogCQkJYWNsY2hl Y2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRf cmVsLT5yZWxraW5kKSwKIAkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwog CisJCS8qCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxl cyB1c2VkIGludGVybmFsbHkgZm9yCisJCSAqIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3Qg bG9nZ2luZy4gVW5saWtlIHVzZXIgdGFibGVzLCB0aGV5IGFyZQorCQkgKiBub3QgZXhwZWN0ZWQg dG8gaGF2ZSBjb21wbGV4IHF1ZXJ5IHVzYWdlLCBzbyB0byBrZWVwIHRoaW5ncyBzaW1wbGUsCisJ CSAqIHVzZXItZGVmaW5lZCBleHRlbmRlZCBzdGF0aXN0aWNzIGFyZSBub3QgcmVxdWlyZWQgb3Ig c3VwcG9ydGVkIGF0CisJCSAqIHByZXNlbnQuCisJCSAqLworCQlpZiAoSXNDb25mbGljdExvZ1Rh YmxlQ2xhc3MocmVsLT5yZF9yZWwpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBjcmVhdGUg c3RhdGlzdGljcyBvbiBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNv bmZsaWN0cy4iKSkpOworCiAJCS8qIENyZWF0aW5nIHN0YXRpc3RpY3Mgb24gc3lzdGVtIGNhdGFs b2dzIGlzIG5vdCBhbGxvd2VkICovCiAJCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNT eXN0ZW1SZWxhdGlvbihyZWwpKQogCQkJZXJlcG9ydChFUlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBlZTA2YTcyNmY0Mi4uNDI5MmU3ZmI4ZjQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZF9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRh YmFzZV9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JlaWduX3NlcnZlci5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Rh YmxlY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm9y ZWlnbi9mb3JlaWduLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC03OSw2ICs4MSw3IEBA CiAjZGVmaW5lIFNVQk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVAkJCTB4MDAwMTAwMDAKICNkZWZp bmUgU1VCT1BUX0xTTgkJCQkJMHgwMDAyMDAwMAogI2RlZmluZSBTVUJPUFRfT1JJR0lOCQkJCTB4 MDAwNDAwMDAKKyNkZWZpbmUgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUCTB4MDAwODAwMDAKIAog LyogY2hlY2sgaWYgdGhlICd2YWwnIGhhcyAnYml0cycgc2V0ICovCiAjZGVmaW5lIElzU2V0KHZh bCwgYml0cykgICgoKHZhbCkgJiAoYml0cykpID09IChiaXRzKSkKQEAgLTEwNyw2ICsxMTAsNyBA QCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJcmV0YWluZGVhZHR1cGxlczsKIAlpbnQz MgkJbWF4cmV0ZW50aW9uOwogCWNoYXIJICAgKm9yaWdpbjsKKwlDb25mbGljdExvZ0Rlc3QgY29u ZmxpY3Rsb2dkZXN0OwogCVhMb2dSZWNQdHIJbHNuOwogCWNoYXIJICAgKndhbF9yZWNlaXZlcl90 aW1lb3V0OwogfSBTdWJPcHRzOwpAQCAtMTQwLDcgKzE0NCwxMiBAQCBzdGF0aWMgTGlzdCAqbWVy Z2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wg YWRkcHViLAogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3Rh dGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBjaGFyICplcnIpOwogc3RhdGljIHZvaWQg Q2hlY2tBbHRlclN1Yk9wdGlvbihTdWJzY3JpcHRpb24gKnN1YiwgY29uc3QgY2hhciAqb3B0aW9u LAogCQkJCQkJCQlib29sIHNsb3RfbmVlZHNfdXBkYXRlLCBib29sIGlzVG9wTGV2ZWwpOwotCitz dGF0aWMgYm9vbCBhbHRlcl9zdWJfY29uZmxpY3RfbG9nX2Rlc3QoU3Vic2NyaXB0aW9uICpzdWIs CisJCQkJCQkJCQkJQ29uZmxpY3RMb2dEZXN0IG9sZGxvZ2Rlc3QsCisJCQkJCQkJCQkJQ29uZmxp Y3RMb2dEZXN0IG5ld2xvZ2Rlc3QsCisJCQkJCQkJCQkJT2lkICpjb25mbGljdHRhYmxlcmVsaWQp Oworc3RhdGljIHZvaWQgZHJvcF9zdWJfY29uZmxpY3RfbG9nX3RhYmxlKE9pZCBzdWJpZCwgY2hh ciAqc3VibmFtZSwKKwkJCQkJCQkJCQlPaWQgc3ViY29uZmxpY3Rsb2dyZWxpZCk7CiAKIC8qCiAg KiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBhbmQgQUxURVIgU1VC U0NSSVBUSU9OIGNvbW1hbmRzLgpAQCAtMTk2LDYgKzIwNSw4IEBAIHBhcnNlX3N1YnNjcmlwdGlv bl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQlvcHRz LT5tYXhyZXRlbnRpb24gPSAwOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX09S SUdJTikpCiAJCW9wdHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsK KwlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJ CW9wdHMtPmNvbmZsaWN0bG9nZGVzdCA9IENPTkZMSUNUX0xPR19ERVNUX0xPRzsKIAogCS8qIFBh cnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC00MzYsNiArNDQ3 LDE4IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqc3RtdF9vcHRpb25zLAogCQkJCQkJCQkJCSBQR0NfQkFDS0VORCwgUEdDX1NfVEVTVCwgR1VD X0FDVElPTl9TRVQsCiAJCQkJCQkJCQkJIGZhbHNlLCAwLCBmYWxzZSk7CiAJCX0KKwkJZWxzZSBp ZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkgJiYKKwkJ CQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIikgPT0g MCkKKwkJeworCQkJY2hhcgkgICAqdmFsOworCisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lmaWVk X29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJCQkJZXJyb3JDb25mbGljdGluZ0Rl ZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCXZhbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CisJ CQlvcHRzLT5jb25mbGljdGxvZ2Rlc3QgPSBHZXRDb25mbGljdExvZ0Rlc3QodmFsKTsKKwkJCW9w dHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9DT05GTElDVF9MT0dfREVTVDsKKwkJfQogCQll bHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCkBAIC02NjAsNiArNjgzLDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl1aW50MzIJCXN1cHBvcnRlZF9v cHRzOwogCVN1Yk9wdHMJCW9wdHMgPSB7MH07CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlPaWQJ CQlsb2dyZWxpZCA9IEludmFsaWRPaWQ7CiAKIAkvKgogCSAqIFBhcnNlIGFuZCBjaGVjayBvcHRp b25zLgpAQCAtNjc0LDcgKzY5OCw4IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSAgU1VCT1BUX1JVTl9B U19PV05FUiB8IFNVQk9QVF9GQUlMT1ZFUiB8CiAJCQkJCSAgU1VCT1BUX1JFVEFJTl9ERUFEX1RV UExFUyB8CiAJCQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAotCQkJCQkgIFNV Qk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkgIFNVQk9Q VF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4gfAorCQkJCQkgIFNVQk9QVF9D T05GTElDVF9MT0dfREVTVCk7CiAJcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMocHN0YXRlLCBz dG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwogCiAJLyoKQEAgLTg0OCw2ICs4 NzMsMjEgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3Jp Z2luIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKG9wdHMub3JpZ2luKTsKIAorCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ2Rlc3QgLSAxXSA9CisJCUNTdHJp bmdHZXRUZXh0RGF0dW0oQ29uZmxpY3RMb2dEZXN0TmFtZXNbb3B0cy5jb25mbGljdGxvZ2Rlc3Rd KTsKKworCS8qCisJICogV2UgY3JlYXRlIHRoZSBjb25mbGljdCBsb2cgdGFibGUgaGVyZSwgaWYg cmVxdWlyZWQsIHNvIHRoYXQgaXRzCisJICogcmVsYXRpb24gT0lEIGNhbiBiZSBzdG9yZWQgd2hl biBpbnNlcnRpbmcgdGhlIHBnX3N1YnNjcmlwdGlvbiB0dXBsZQorCSAqIGJlbG93LgorCSAqLwor CWlmIChDT05GTElDVFNfTE9HR0VEX1RPX1RBQkxFKG9wdHMuY29uZmxpY3Rsb2dkZXN0KSkKKwkJ bG9ncmVsaWQgPSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlKHN1YmlkLCBzdG10LT5zdWJuYW1l LCBvd25lcik7CisKKwkvKiBTdG9yZSB0YWJsZSBPSUQgaW4gdGhlIGNhdGFsb2cuICovCisJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbmZsaWN0bG9ncmVsaWQgLSAxXSA9CisJCU9i amVjdElkR2V0RGF0dW0obG9ncmVsaWQpOworCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0 aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CiAKIAkvKiBJbnNlcnQgdHVwbGUgaW50 byBjYXRhbG9nLiAqLwpAQCAtODY4LDYgKzkwOCwyNSBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlyZWNvcmRE ZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKIAl9 CiAKKwkvKgorCSAqIEVzdGFibGlzaCBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5IGJldHdlZW4gdGhl IGNvbmZsaWN0IGxvZyB0YWJsZSBhbmQgdGhlCisJICogc3Vic2NyaXB0aW9uLgorCSAqCisJICog V2UgdXNlIERFUEVOREVOQ1lfSU5URVJOQUwgdG8gc2lnbmlmeSB0aGF0IHRoZSB0YWJsZSdzIGxp ZmVjeWNsZSBpcworCSAqIHN0cmljdGx5IHRpZWQgdG8gdGhlIHN1YnNjcmlwdGlvbiwgc2ltaWxh ciB0byBob3cgYSBUT0FTVCB0YWJsZSByZWxhdGVzCisJICogdG8gaXRzIG1haW4gdGFibGUgb3Ig YSBzZXF1ZW5jZSByZWxhdGVzIHRvIGFuIGlkZW50aXR5IGNvbHVtbi4KKwkgKgorCSAqIFRoaXMg ZW5zdXJlcyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgcmVhcGVkIGR1 cmluZyBhCisJICogRFJPUCBTVUJTQ1JJUFRJT04gdmlhIHBlcmZvcm1EZWxldGlvbigpLgorCSAq LworCWlmIChPaWRJc1ZhbGlkKGxvZ3JlbGlkKSkKKwl7CisJCU9iamVjdEFkZHJlc3MgY2x0YWRk cjsKKworCQlPYmplY3RBZGRyZXNzU2V0KGNsdGFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgbG9n cmVsaWQpOworCQlyZWNvcmREZXBlbmRlbmN5T24oJmNsdGFkZHIsICZteXNlbGYsIERFUEVOREVO Q1lfSU5URVJOQUwpOworCX0KKwogCS8qCiAJICogQSByZXBsaWNhdGlvbiBvcmlnaW4gaXMgY3Vy cmVudGx5IGNyZWF0ZWQgZm9yIGFsbCBzdWJzY3JpcHRpb25zLAogCSAqIGluY2x1ZGluZyB0aG9z ZSB0aGF0IG9ubHkgY29udGFpbiBzZXF1ZW5jZXMgb3IgYXJlIG90aGVyd2lzZSBlbXB0eS4KQEAg LTE0MzcsNiArMTQ5Niw3MSBAQCBDaGVja0FsdGVyU3ViT3B0aW9uKFN1YnNjcmlwdGlvbiAqc3Vi LCBjb25zdCBjaGFyICpvcHRpb24sCiAJfQogfQogCisvKgorICogYWx0ZXJfc3ViX2NvbmZsaWN0 X2xvZ19kZXN0CisgKgorICogV2hlbiB0aGUgc3Vic2NyaXB0aW9uJ3MgJ2NvbmZsaWN0X2xvZ19k ZXN0aW5hdGlvbicgaXMgY2hhbmdlZCwgdXBkYXRlIHRoZQorICogY29uZmxpY3QgbG9nIHRhYmxl IGlmIHJlcXVpcmVkLgorICoKKyAqIElmIHRoZSBuZXcgZGVzdGluYXRpb24gbm8gbG9uZ2VyIHJl cXVpcmVzIGEgY29uZmxpY3QgbG9nIHRhYmxlLCB0aGUgZXhpc3RpbmcKKyAqIGNvbmZsaWN0IGxv ZyB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YnNjcmlwdGlvbiBpcyByZW1vdmVkIHZpYSBp bnRlcm5hbAorICogZGVwZW5kZW5jeSBjbGVhbnVwIHRvIHByZXZlbnQgb3JwaGFuZWQgcmVsYXRp b25zLgorICoKKyAqIE9uIHN1Y2Nlc3MsICpjb25mbGljdHRhYmxlcmVsaWQgaXMgc2V0IHRvIHRo ZSBPSUQgb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZQorICogdGhhdCB3YXMgY3JlYXRlZCBvciB2 YWxpZGF0ZWQsIG9yIHRvIEludmFsaWRPaWQgaWYgbm8gdGFibGUgaXMgcmVxdWlyZWQuCisgKgor ICogUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJzY3JpcHRpb24ncyBjb25mbGljdCBsb2cgdGFibGUg cmVmZXJlbmNlIG11c3QgYmUKKyAqIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YgdGhlIGRlc3RpbmF0 aW9uIGNoYW5nZTsgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorYWx0ZXJfc3Vi X2NvbmZsaWN0X2xvZ19kZXN0KFN1YnNjcmlwdGlvbiAqc3ViLCBDb25mbGljdExvZ0Rlc3Qgb2xk bG9nZGVzdCwKKwkJCQkJCQlDb25mbGljdExvZ0Rlc3QgbmV3bG9nZGVzdCwKKwkJCQkJCQlPaWQg KmNvbmZsaWN0dGFibGVyZWxpZCkKK3sKKwlib29sCQl3YW50X3RhYmxlOworCWJvb2wJCWhhc19v bGR0YWJsZTsKKwlib29sCQl1cGRhdGVfcmVsaWQgPSBmYWxzZTsKKwlPaWQJCQlyZWxpZCA9IElu dmFsaWRPaWQ7CisKKwl3YW50X3RhYmxlID0gQ09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShuZXds b2dkZXN0KTsKKwloYXNfb2xkdGFibGUgPSBDT05GTElDVFNfTE9HR0VEX1RPX1RBQkxFKG9sZGxv Z2Rlc3QpOworCisJaWYgKGhhc19vbGR0YWJsZSkKKwl7CisJCS8qIFRoZXJlIGlzIGEgY29uZmxp Y3QgbG9nIHRhYmxlIGFscmVhZHkuICovCisJCWlmICghd2FudF90YWJsZSkKKwkJeworCQkJZHJv cF9zdWJfY29uZmxpY3RfbG9nX3RhYmxlKHN1Yi0+b2lkLCBzdWItPm5hbWUsCisJCQkJCQkJCQkJ c3ViLT5jb25mbGljdGxvZ3JlbGlkKTsKKwkJCXVwZGF0ZV9yZWxpZCA9IHRydWU7CisJCX0KKwl9 CisJZWxzZQorCXsKKwkJLyogVGhlcmUgd2FzIG5vIHByZXZpb3VzIGNvbmZsaWN0IGxvZyB0YWJs ZS4gKi8KKwkJaWYgKHdhbnRfdGFibGUpCisJCXsKKwkJCU9iamVjdEFkZHJlc3MgY2x0YWRkcjsK KwkJCU9iamVjdEFkZHJlc3Mgc3Vib2JqOworCisJCQlyZWxpZCA9IGNyZWF0ZV9jb25mbGljdF9s b2dfdGFibGUoc3ViLT5vaWQsIHN1Yi0+bmFtZSwgc3ViLT5vd25lcik7CisJCQl1cGRhdGVfcmVs aWQgPSB0cnVlOworCisJCQkvKgorCQkJICogRXN0YWJsaXNoIGFuIGludGVybmFsIGRlcGVuZGVu Y3kgYmV0d2VlbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlCisJCQkgKiBhbmQgdGhlIHN1YnNjcmlw dGlvbi4gIEZvciBkZXRhaWxzIHJlZmVyIGNvbW1lbnRzIGluCisJCQkgKiBDcmVhdGVTdWJzY3Jp cHRpb24gZnVuY3Rpb24uCisJCQkgKi8KKwkJCU9iamVjdEFkZHJlc3NTZXQoY2x0YWRkciwgUmVs YXRpb25SZWxhdGlvbklkLCByZWxpZCk7CisJCQlPYmplY3RBZGRyZXNzU2V0KHN1Ym9iaiwgU3Vi c2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViLT5vaWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZj bHRhZGRyLCAmc3Vib2JqLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKwkJfQorCX0KKworCSpjb25m bGljdHRhYmxlcmVsaWQgPSByZWxpZDsKKwlyZXR1cm4gdXBkYXRlX3JlbGlkOworfQorCiAvKgog ICogQWx0ZXIgdGhlIGV4aXN0aW5nIHN1YnNjcmlwdGlvbi4KICAqLwpAQCAtMTQ5OSw3ICsxNjIz LDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlw dGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJICBTVUJPUFRfUkVUQUlOX0RFQURfVFVQTEVTIHwKIAkJ CQkJCQkgIFNVQk9QVF9NQVhfUkVURU5USU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkgIFNVQk9QVF9X QUxfUkVDRUlWRVJfVElNRU9VVCB8Ci0JCQkJCQkJICBTVUJPUFRfT1JJR0lOKTsKKwkJCQkJCQkg IFNVQk9QVF9PUklHSU4gfAorCQkJCQkJCSAgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUKTsKIAkJ CWJyZWFrOwogCiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0VOQUJMRUQ6CkBAIC0xODU4LDYg KzE5ODMsMzQgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YndhbHJjdnRpbWVvdXQgLSAxXSA9IHRydWU7CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9w dHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJCQkJeworCQkJ CQlDb25mbGljdExvZ0Rlc3Qgb2xkX2Rlc3QgPQorCQkJCQkJR2V0Q29uZmxpY3RMb2dEZXN0KHN1 Yi0+Y29uZmxpY3Rsb2dkZXN0KTsKKworCQkJCQlpZiAob3B0cy5jb25mbGljdGxvZ2Rlc3QgIT0g b2xkX2Rlc3QpCisJCQkJCXsKKwkJCQkJCWJvb2wJCXVwZGF0ZV9yZWxpZDsKKwkJCQkJCU9pZAkJ CXJlbGlkID0gSW52YWxpZE9pZDsKKworCQkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YmNvbmZsaWN0bG9nZGVzdCAtIDFdID0KKwkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKENv bmZsaWN0TG9nRGVzdE5hbWVzW29wdHMuY29uZmxpY3Rsb2dkZXN0XSk7CisJCQkJCQlyZXBsYWNl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ2Rlc3QgLSAxXSA9IHRydWU7CisK KwkJCQkJCXVwZGF0ZV9yZWxpZCA9IGFsdGVyX3N1Yl9jb25mbGljdF9sb2dfZGVzdChzdWIsCisJ CQkJCQkJCQkJCQkJCQkJICAgb2xkX2Rlc3QsCisJCQkJCQkJCQkJCQkJCQkJICAgb3B0cy5jb25m bGljdGxvZ2Rlc3QsCisJCQkJCQkJCQkJCQkJCQkJICAgJnJlbGlkKTsKKwkJCQkJCWlmICh1cGRh dGVfcmVsaWQpCisJCQkJCQl7CisJCQkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmNvbmZsaWN0bG9ncmVsaWQgLSAxXSA9CisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQp OworCQkJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbmZsaWN0bG9ncmVs aWQgLSAxXSA9CisJCQkJCQkJCXRydWU7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKIAkJCQl1 cGRhdGVfdHVwbGUgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtMjI5Nyw2ICsyNDUwLDUx IEBAIGNvbnN0cnVjdF9zdWJzZXJ2ZXJfY29ubmluZm8oT2lkIHN1YnNlcnZlciwgT2lkIHN1Ym93 bmVyLCBjaGFyICoqZXJyKQogCXJldHVybiBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhz dWJvd25lciwgc2VydmVyKTsKIH0KIAorLyoKKyAqIERyb3Agc3Vic2NyaXB0aW9uJ3MgY29uZmxp Y3QgbG9nIHRhYmxlCisgKgorICogVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBpcyByZWdpc3RlcmVk IGFzIGFuIGludGVybmFsIGRlcGVuZGVuY3kgb2YgdGhlCisgKiBzdWJzY3JpcHRpb24uIFRoaXMg ZnVuY3Rpb24gcmVtb3ZlcyB0aGUgZGVwZW5kZW5jeSBieSBwZXJmb3JtaW5nIGEKKyAqIGNhc2Nh ZGluZyBkZWxldGlvbiBvbiB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCwgd2hpY2ggaW4gdHVybiBk cm9wcyB0aGUKKyAqIGFzc29jaWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorICoKKyAqIFRoaXMg aXMgdXNlZCB0byBjbGVhbiB1cCBjb25mbGljdCBsb2cgdGFibGVzIHRoYXQgYXJlIG5vIGxvbmdl ciByZXF1aXJlZCwKKyAqIHByZXZlbnRpbmcgYWNjdW11bGF0aW9uIG9mIHN0YWxlIG9yIG9ycGhh bmVkIHJlbGF0aW9ucy4KKyAqCisgKiBOT1RFOgorICogT25seSBjb25mbGljdCBsb2cgdGFibGVz IGFyZSBjdXJyZW50bHkgbWFuYWdlZCB2aWEgdGhpcyBpbnRlcm5hbCBkZXBlbmRlbmN5CisgKiBt ZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2b2lkCitkcm9wX3N1Yl9jb25mbGljdF9sb2dfdGFibGUo T2lkIHN1YmlkLCBjaGFyICpzdWJuYW1lLCBPaWQgc3ViY29uZmxpY3Rsb2dyZWxpZCkKK3sKKwkv KiBEcm9wIGFueSBkZXBlbmRlbnQgY29uZmxpY3QgbG9nIHRhYmxlICovCisJaWYgKE9pZElzVmFs aWQoc3ViY29uZmxpY3Rsb2dyZWxpZCkpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJ Y2hhcgkgICAqY29uZmxpY3RyZWxuYW1lOworCisJCWNvbmZsaWN0cmVsbmFtZSA9IGdldF9yZWxf bmFtZShzdWJjb25mbGljdGxvZ3JlbGlkKTsKKwkJaWYgKGNvbmZsaWN0cmVsbmFtZSA9PSBOVUxM KQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwK KwkJCQkgc3ViY29uZmxpY3Rsb2dyZWxpZCk7CisKKwkJLyoKKwkJICogQnkgdXNpbmcgUEVSRk9S TV9ERUxFVElPTl9TS0lQX09SSUdJTkFMLCB3ZSBlbnN1cmUgdGhhdCBvbmx5IHRoZQorCQkgKiBj b25mbGljdCBsb2cgdGFibGUgaXMgZGVsZXRlZCB3aGlsZSB0aGUgc3Vic2NyaXB0aW9uIHJlbWFp bnMuCisJCSAqLworCQlPYmplY3RBZGRyZXNzU2V0KG9iamVjdCwgU3Vic2NyaXB0aW9uUmVsYXRp b25JZCwgc3ViaWQpOworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9DQVNDQURFLAor CQkJCQkJUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQlQRVJGT1JNX0RFTEVUSU9O X1NLSVBfT1JJR0lOQUwpOworCisJCWVyZXBvcnQoTk9USUNFLAorCQkJCWVycm1zZygiZHJvcHBl ZCBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJ CQkJICAgZ2V0X3F1YWxpZmllZF9vYmpuYW1lKFBHX0NPTkZMSUNUX05BTUVTUEFDRSwgY29uZmxp Y3RyZWxuYW1lKSwKKwkJCQkJICAgc3VibmFtZSkpOworCX0KK30KKwogLyoKICAqIERyb3AgYSBz dWJzY3JpcHRpb24KICAqLwpAQCAtMjMwOSw2ICsyNTA3LDcgQEAgRHJvcFN1YnNjcmlwdGlvbihE cm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCU9pZAkJCXN1Ymlk OwogCU9pZAkJCXN1Ym93bmVyOwogCU9pZAkJCXN1YnNlcnZlcjsKKwlPaWQJCQlzdWJjb25mbGlj dGxvZ3JlbGlkOwogCWNoYXIJICAgKnN1YmNvbm5pbmZvID0gTlVMTDsKIAlEYXR1bQkJZGF0dW07 CiAJYm9vbAkJaXNudWxsOwpAQCAtMjM2MSw2ICsyNTYwLDcgQEAgRHJvcFN1YnNjcmlwdGlvbihE cm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCXN1YmlkID0gZm9y bS0+b2lkOwogCXN1Ym93bmVyID0gZm9ybS0+c3Vib3duZXI7CiAJc3Vic2VydmVyID0gZm9ybS0+ c3Vic2VydmVyOworCXN1YmNvbmZsaWN0bG9ncmVsaWQgPSBmb3JtLT5zdWJjb25mbGljdGxvZ3Jl bGlkOwogCW11c3RfdXNlX3Bhc3N3b3JkID0gIXN1cGVydXNlcl9hcmcoc3Vib3duZXIpICYmIGZv cm0tPnN1YnBhc3N3b3JkcmVxdWlyZWQ7CiAKIAkvKiBtdXN0IGJlIG93bmVyICovCkBAIC0yNDc4 LDYgKzI2NzgsOSBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCiAJCXJlcGxvcmlnaW5fZHJvcF9ieV9uYW1lKG9yaWdpbm5hbWUs IHRydWUsIGZhbHNlKTsKIAl9CiAKKwkvKiBEcm9wIHN1YnNjcmlwdGlvbidzIGNvbmZsaWN0IGxv ZyB0YWJsZSAqLworCWRyb3Bfc3ViX2NvbmZsaWN0X2xvZ190YWJsZShzdWJpZCwgc3VibmFtZSwg c3ViY29uZmxpY3Rsb2dyZWxpZCk7CisKIAkvKiBDbGVhbiB1cCBkZXBlbmRlbmNpZXMgKi8KIAlk ZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwg ZmFsc2UpOwogCWRlbGV0ZVNoYXJlZERlcGVuZGVuY3lSZWNvcmRzRm9yKFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIHN1YmlkLCAwKTsKQEAgLTI3MjIsNiArMjkyNSwxMSBAQCBBbHRlclN1YnNjcmlw dGlvbk93bmVyX2ludGVybmFsKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cCwgT2lkIG5ld093 bmVySWQpCiAJZm9ybS0+c3Vib3duZXIgPSBuZXdPd25lcklkOwogCUNhdGFsb2dUdXBsZVVwZGF0 ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKIAorCS8qIFVwZGF0ZSBvd25lciBvZiB0aGUgY29u ZmxpY3QgbG9nIHRhYmxlIGlmIGl0IGV4aXN0cy4gKi8KKwlpZiAoT2lkSXNWYWxpZChmb3JtLT5z dWJjb25mbGljdGxvZ3JlbGlkKSkKKwkJQVRFeGVjQ2hhbmdlT3duZXIoZm9ybS0+c3ViY29uZmxp Y3Rsb2dyZWxpZCwgbmV3T3duZXJJZCwgdHJ1ZSwKKwkJCQkJCSAgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisKIAkvKiBVcGRhdGUgb3duZXIgZGVwZW5kZW5jeSByZWZlcmVuY2UgKi8KIAljaGFuZ2VE ZXBlbmRlbmN5T25Pd25lcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLAogCQkJCQkJCWZvcm0tPm9p ZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDcyZGIxMTJmYTcuLjk1YWJhZjQ4OTBj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjQ2NCw5ICsyNDY0LDExIEBAIHRydW5j YXRlX2NoZWNrX3JlbChPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCiAJICogcGdf bGFyZ2VvYmplY3QgYW5kIHBnX2xhcmdlb2JqZWN0X21ldGFkYXRhIHRvIGJlIHRydW5jYXRlZCBh cyBwYXJ0IG9mCiAJICogcGdfdXBncmFkZSwgYmVjYXVzZSB3ZSBuZWVkIHRvIGNoYW5nZSBpdHMg cmVsZmlsZW5vZGUgdG8gbWF0Y2ggdGhlIG9sZAogCSAqIGNsdXN0ZXIsIGFuZCBhbGxvd2luZyBh IFRSVU5DQVRFIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQgaXMgdGhlIGVhc2llc3QKLQkgKiB3YXkg b2YgZG9pbmcgdGhhdC4KKwkgKiB3YXkgb2YgZG9pbmcgdGhhdC4gV2UgYWxzbyBhbGxvdyBUUlVO Q0FURSBvbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlcywKKwkgKiB0byBwZXJtaXQgdXNlcnMgdG8g bWFudWFsbHkgcHJ1bmUgY29uZmxpY3QgZGF0YSB0byBtYW5hZ2UgZGlzayBzcGFjZS4KIAkgKi8K LQlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIHJlbHR1 cGxlKQorCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1DbGFzcyhyZWxpZCwg cmVsdHVwbGUpICYmCisJCSFJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhyZWx0dXBsZSkKIAkJJiYg KCFJc0JpbmFyeVVwZ3JhZGUgfHwKIAkJCShyZWxpZCAhPSBMYXJnZU9iamVjdFJlbGF0aW9uSWQg JiYKIAkJCSByZWxpZCAhPSBMYXJnZU9iamVjdE1ldGFkYXRhUmVsYXRpb25JZCkpKQpAQCAtMjc1 NSw2ICsyNzU3LDE4IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0 ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJCSBlcnJtc2coImNhbm5vdCBpbmhl cml0IGZyb20gcGFydGl0aW9uIFwiJXNcIiIsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOwogCisJCS8qCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIG1h bmFnZWQgYnkgdGhlIHN5c3RlbSBmb3IgbG9naWNhbAorCQkgKiByZXBsaWNhdGlvbiBhbmQgc2hv dWxkIG5vdCBiZSB1c2VkIGFzIHBhcmVudCB0YWJsZXMsIGFzIGluaGVyaXRhbmNlCisJCSAqIGNv dWxkIGludGVyZmVyZSB3aXRoIHRoZSBsb2dnaW5nIGJlaGF2aW9yLgorCQkgKi8KKwkJaWYgKElz Q29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2Up KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBpbmhlcml0IGZyb20gY29uZmxpY3QgbG9nIHRh YmxlIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSwK KwkJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQg dGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJCWlmIChy ZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJCXJlbGF0 aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYmCiAJCQlyZWxh dGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCkBAIC0z ODkyLDYgKzM5MDYsMTkgQEAgcmVuYW1lYXR0X2NoZWNrKE9pZCBteXJlbGlkLCBGb3JtX3BnX2Ns YXNzIGNsYXNzZm9ybSwgYm9vbCByZWN1cnNpbmcpCiAJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhS ZWxhdGlvblJlbGF0aW9uSWQsIG15cmVsaWQsIEdldFVzZXJJZCgpKSkKIAkJYWNsY2hlY2tfZXJy b3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKGdldF9yZWxfcmVsa2lu ZChteXJlbGlkKSksCiAJCQkJCSAgIE5hbWVTdHIoY2xhc3Nmb3JtLT5yZWxuYW1lKSk7CisKKwkv KgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNh bCByZXBsaWNhdGlvbgorCSAqIGNvbmZsaWN0IGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgbW9k aWZpZWQgZGlyZWN0bHksIGFzIGl0IGNvdWxkCisJICogZGlzcnVwdCBjb25mbGljdCBsb2dnaW5n LgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc2Zvcm0pKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CSBlcnJtc2coImNhbm5vdCByZW5hbWUgY29sdW1ucyBvZiBjb25mbGljdCBsb2cgdGFibGUgXCIl c1wiIiwKKwkJCQkJCU5hbWVTdHIoY2xhc3Nmb3JtLT5yZWxuYW1lKSksCisJCQkJIGVycmRldGFp bCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dp Y2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxl TW9kcyAmJiBJc1N5c3RlbUNsYXNzKG15cmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKQEAgLTY4 OTQsNiArNjkyMSwyMiBAQCBBVFNpbXBsZVBlcm1pc3Npb25zKEFsdGVyVGFibGVUeXBlIGNtZHR5 cGUsIFJlbGF0aW9uIHJlbCwgaW50IGFsbG93ZWRfdGFyZ2V0cykKIAkJYWNsY2hlY2tfZXJyb3Io QUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxr aW5kKSwKIAkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKKwkvKgorCSAq IENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBs aWNhdGlvbgorCSAqIGNvbmZsaWN0IGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgYWx0ZXJlZCBk aXJlY3RseSwgYXMgaXQgY291bGQKKwkgKiBkaXNydXB0IGNvbmZsaWN0IGxvZ2dpbmcuIERpcmVj dCBBTFRFUiBjb21tYW5kcyBhcmUgYWxyZWFkeSByZWplY3RlZAorCSAqIGR1cmluZyByZWxhdGlv biBsb29rdXAgaW4gUmFuZ2VWYXJDYWxsYmFja0ZvckFsdGVyUmVsYXRpb24oKSwgYW5kCisJICog QWx0ZXJUYWJsZU1vdmVBbGwoKSBza2lwcyB0aGVzZSB0YWJsZXMsIHNvIGEgY29uZmxpY3QgbG9n IHRhYmxlIGRvZXMKKwkgKiBub3Qgbm9ybWFsbHkgcmVhY2ggaGVyZTsgdGhpcyBjaGVjayBndWFy ZHMgYW55IGludGVybmFsIGNhbGxlciB0aGF0CisJICogYXJyaXZlcyB2aWEgQWx0ZXJUYWJsZUlu dGVybmFsKCkuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKHJlbC0+cmRfcmVs KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNc IiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkgZXJyZGV0YWls KCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIpKSk7CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVN b2RzICYmIElzU3lzdGVtUmVsYXRpb24ocmVsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApAQCAtMTAyMDMsNiArMTAyNDYs MTggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkgZXJybXNnKCJyZWZlcmVuY2VkIHJlbGF0 aW9uIFwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwa3JlbCkpKSk7CiAKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50 ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbgorCSAqIGNvbmZsaWN0IGxvZ2dpbmcgYW5k IHNob3VsZCBub3QgYmUgcmVmZXJlbmNlZCBieSBmb3JlaWduIGtleXMsIGFzIGl0CisJICogY291 bGQgZGlzcnVwdCBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFi bGVDbGFzcyhwa3JlbC0+cmRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVmZXJlbmNl IGNvbmZsaWN0IGxvZyB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocGtyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0 ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIpKSk7 CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24ocGtyZWwp KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BS SVZJTEVHRSksCkBAIC0xNzUzOSwxMyArMTc1OTQsMTkgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0 ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10KQogCQkgKiByZWFsbHkgd2lzaGVzIHRvIGRvIHNvLCB0 aGV5IGNhbiBpc3N1ZSB0aGUgaW5kaXZpZHVhbCBBTFRFUgogCQkgKiBjb21tYW5kcyBkaXJlY3Rs eS4KIAkJICoKLQkJICogQWxzbywgZXhwbGljaXRseSBhdm9pZCBhbnkgc2hhcmVkIHRhYmxlcywg dGVtcCB0YWJsZXMsIG9yIFRPQVNUCi0JCSAqIChUT0FTVCB3aWxsIGJlIG1vdmVkIHdpdGggdGhl IG1haW4gdGFibGUpLgorCQkgKiBBbHNvLCBleHBsaWNpdGx5IGF2b2lkIGFueSBzaGFyZWQgdGFi bGVzLCB0ZW1wIHRhYmxlcywgVE9BU1QgKFRPQVNUCisJCSAqIHdpbGwgYmUgbW92ZWQgd2l0aCB0 aGUgbWFpbiB0YWJsZSkuCisJCSAqCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHN5c3Rl bS1tYW5hZ2VkIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGFuZAorCQkgKiBjYW5ub3QgYmUgYWx0 ZXJlZCBkaXJlY3RseSwgc28gc2tpcCB0aGVtIGFzIHdlbGw7IG90aGVyd2lzZSBhCisJCSAqIHNp bmdsZSBzdWNoIHRhYmxlIGluIHRoZSBzb3VyY2UgdGFibGVzcGFjZSB3b3VsZCBhYm9ydCB0aGUg d2hvbGUKKwkJICogYnVsayBtb3ZlLgogCQkgKi8KIAkJaWYgKElzQ2F0YWxvZ05hbWVzcGFjZShy ZWxGb3JtLT5yZWxuYW1lc3BhY2UpIHx8CiAJCQlyZWxGb3JtLT5yZWxpc3NoYXJlZCB8fAogCQkJ aXNBbnlUZW1wTmFtZXNwYWNlKHJlbEZvcm0tPnJlbG5hbWVzcGFjZSkgfHwKLQkJCUlzVG9hc3RO YW1lc3BhY2UocmVsRm9ybS0+cmVsbmFtZXNwYWNlKSkKKwkJCUlzVG9hc3ROYW1lc3BhY2UocmVs Rm9ybS0+cmVsbmFtZXNwYWNlKSB8fAorCQkJSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlKHJl bEZvcm0tPnJlbG5hbWVzcGFjZSkpCiAJCQljb250aW51ZTsKIAogCQkvKiBPbmx5IG1vdmUgdGhl IG9iamVjdCB0eXBlIHJlcXVlc3RlZCAqLwpAQCAtMjAwMzQsNiArMjAwOTUsMTggQEAgUmFuZ2VW YXJDYWxsYmFja093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCWFjbGNo ZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShnZXRfcmVs X3JlbGtpbmQocmVsSWQpKSwKIAkJCQkJICAgcmVsYXRpb24tPnJlbG5hbWUpOwogCisJLyoKKwkg KiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVw bGljYXRpb24KKwkgKiBjb25mbGljdCBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVk IGRpcmVjdGx5LCBhcyBpdCBjb3VsZAorCSAqIGRpc3J1cHQgY29uZmxpY3QgbG9nZ2luZy4KKwkg Ki8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MoKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVD VCh0dXBsZSkpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgY29uZmxpY3QgbG9nIHRh YmxlIFwiJXNcIiIsCisJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgi Q29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9k cyAmJgogCQlJc1N5c3RlbUNsYXNzKHJlbElkLCAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1 cGxlKSkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0yMDA2OSw2ICsyMDE0MiwxOCBAQCBSYW5nZVZh ckNhbGxiYWNrRm9yQWx0ZXJSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwg T2lkIG9sZHJlbGlkLAogCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklk LCByZWxpZCwgR2V0VXNlcklkKCkpKQogCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dO RVIsIGdldF9yZWxraW5kX29ianR5cGUoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSksIHJ2LT5yZWxu YW1lKTsKIAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5 IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJICogY29uZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxk IG5vdCBiZSBhbHRlcmVkIGRpcmVjdGx5LCBhcyBpdCBjb3VsZAorCSAqIGRpc3J1cHQgY29uZmxp Y3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MoY2xhc3Nmb3Jt KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNc IiIsCisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNv bmZsaWN0cy4iKSkpOworCiAJLyogTm8gc3lzdGVtIHRhYmxlIG1vZGlmaWNhdGlvbnMgdW5sZXNz IGV4cGxpY2l0bHkgYWxsb3dlZC4gKi8KIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElz U3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKaW5kZXggYjg3YjRiNDBkMDcuLjQwMWJhZGRiZmM2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCkBAIC0zMTQsNiArMzE0LDE4IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihjb25z dCBDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKIAkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90 X3N1cHBvcnRlZChyZWwtPnJkX3JlbC0+cmVsa2luZCkpKTsKIAorCS8qCisJICogQ29uZmxpY3Qg bG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJ ICogY29uZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJzLCBhcyBpdCBj b3VsZCBkaXNydXB0CisJICogY29uZmxpY3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGlj dExvZ1RhYmxlQ2xhc3MocmVsLT5yZF9yZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjcmVh dGUgdHJpZ2dlciBvbiBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCSBlcnJkZXRhaWwoIkNvbmZsaWN0IGxvZyB0YWJs ZXMgYXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25m bGljdHMuIikpKTsKKwogCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1SZWxh dGlvbihyZWwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZG SUNJRU5UX1BSSVZJTEVHRSksCkBAIC0xNDQzLDYgKzE0NTUsMTkgQEAgUmFuZ2VWYXJDYWxsYmFj a0ZvclJlbmFtZVRyaWdnZXIoY29uc3QgUmFuZ2VWYXIgKnJ2LCBPaWQgcmVsaWQsIE9pZCBvbGRy ZWxpZCwKIAkvKiB5b3UgbXVzdCBvd24gdGhlIHRhYmxlIHRvIHJlbmFtZSBvbmUgb2YgaXRzIHRy aWdnZXJzICovCiAJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJlbGF0aW9uSWQsIHJl bGlkLCBHZXRVc2VySWQoKSkpCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwg Z2V0X3JlbGtpbmRfb2JqdHlwZShnZXRfcmVsX3JlbGtpbmQocmVsaWQpKSwgcnYtPnJlbG5hbWUp OworCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9y IGxvZ2ljYWwgcmVwbGljYXRpb24KKwkgKiBjb25mbGljdCBsb2dnaW5nIGFuZCBzaG91bGQgbm90 IGhhdmUgdHJpZ2dlcnMsIGFzIGl0IGNvdWxkIGRpc3J1cHQKKwkgKiBjb25mbGljdCBsb2dnaW5n LgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhmb3JtKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgcmVuYW1lIHRyaWdnZXIgb24gY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIs CisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxl cyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZs aWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNsYXNz KHJlbGlkLCBmb3JtKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lO U1VGRklDSUVOVF9QUklWSUxFR0UpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYzNhZjk2 OTg5YmEuLmZkZTUwMmVmZDM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTExOTYsNiAr MTE5NiwyNCBAQCBDaGVja1ZhbGlkUmVzdWx0UmVsKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sIENtZFR5cGUgb3BlcmF0aW9uLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl c3VsdFJlbCkpKSk7CiAJCQlicmVhazsKIAl9CisKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJs ZXMgYXJlIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSB0byByZWNvcmQgbG9naWNhbAorCSAqIHJlcGxp Y2F0aW9uIGNvbmZsaWN0cy4gIFdlIGFsbG93IERFTEVURSBhbmQgVFJVTkNBVEUgdG8gcGVybWl0 IHVzZXJzIHRvCisJICogbWFudWFsbHkgcHJ1bmUgdGhlc2UgbG9ncywgYnV0IG1hbnVhbCBkYXRh IGluc2VydGlvbiBvciBtb2RpZmljYXRpb24KKwkgKiAoSU5TRVJULCBVUERBVEUsIE1FUkdFKSBp cyBwcm9oaWJpdGVkIHRvIG1haW50YWluIHRoZSBpbnRlZ3JpdHkgb2YgdGhlCisJICogc3lzdGVt LWdlbmVyYXRlZCBsb2dzLgorCSAqCisJICogU2luY2UgVFJVTkNBVEUgaXMgaGFuZGxlZCBhcyBh IHNlcGFyYXRlIHV0aWxpdHkgY29tbWFuZCwgd2Ugb25seSBuZWVkCisJICogdG8gZXhwbGljaXRs eSBwZXJtaXQgQ01EX0RFTEVURSBoZXJlLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVO YW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UocmVzdWx0UmVsKSkgJiYKKwkJb3BlcmF0aW9u ICE9IENNRF9ERUxFVEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IG1vZGlmeSBvciBpbnNlcnQg ZGF0YSBpbnRvIGNvbmZsaWN0IGxvZyB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVzdWx0UmVsKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgYW5kIG9ubHkgc3VwcG9ydCBjbGVhbnVwIHVzaW5nIERF TEVURSBvciBUUlVOQ0FURS4iKSkpOwogfQogCiAvKgpAQCAtMTI2Nyw2ICsxMjg1LDE2IEBAIENo ZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpCiAJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAkJCWJyZWFrOwogCX0KKwor CS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIHRv IHJlY29yZCBsb2dpY2FsCisJICogcmVwbGljYXRpb24gY29uZmxpY3RzLgorCSAqLworCWlmIChJ c0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJIGVycm1zZygiY2Fubm90IGxvY2sgcm93cyBpbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxl IFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jCmluZGV4IDFmOGQ2 N2ZkZDkwLi45NjEwNGYxMDBiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9jb25mbGljdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv Y29uZmxpY3QuYwpAQCAtMTcsNiArMTcsMTAgQEAKICNpbmNsdWRlICJhY2Nlc3MvY29tbWl0X3Rz LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0u aCIKKyNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Rv YXN0aW5nLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9jb25mbGljdC5oIgpAQCAtMjQsNiArMjgsNTkg QEAKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKIAorLyoKKyAqIFN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzdXBwb3J0ZWQgY29u ZmxpY3QgbG9nZ2luZyBkZXN0aW5hdGlvbnMuCisgKi8KK2NvbnN0IGNoYXIgKmNvbnN0IENvbmZs aWN0TG9nRGVzdE5hbWVzW10gPSB7CisJW0NPTkZMSUNUX0xPR19ERVNUX0xPR10gPSAibG9nIiwK KwlbQ09ORkxJQ1RfTE9HX0RFU1RfVEFCTEVdID0gInRhYmxlIiwKKwlbQ09ORkxJQ1RfTE9HX0RF U1RfQUxMXSA9ICJhbGwiCit9OworCitTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKENvbmZsaWN0 TG9nRGVzdE5hbWVzKSA9PSBDT05GTElDVF9MT0dfREVTVF9BTEwgKyAxLAorCQkJCSAiQ29uZmxp Y3RMb2dEZXN0TmFtZXMgbGVuZ3RoIG1pc21hdGNoIik7CisKKworLyogU3RydWN0dXJlIHRvIGhv bGQgbWV0YWRhdGEgZm9yIG9uZSBjb2x1bW4gb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSAqLwor dHlwZWRlZiBzdHJ1Y3QgQ29uZmxpY3RMb2dDb2x1bW5EZWYKK3sKKwljb25zdCBjaGFyICphdHRu YW1lOwkJLyogQ29sdW1uIG5hbWUgKi8KKwlPaWQJCQlhdHR0eXBpZDsJCS8qIERhdGEgdHlwZSBP SUQgKi8KK30gQ29uZmxpY3RMb2dDb2x1bW5EZWY7CisKKy8qCisgKiBTY2hlbWEgZGVmaW5pdGlv biBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcy4KKyAqCisgKiBEZWZpbmVzIHRoZSBmaXhlZCBzY2hl bWEgb2YgdGhlIHBlci1zdWJzY3JpcHRpb24gY29uZmxpY3QgbG9nIHRhYmxlIGNyZWF0ZWQKKyAq IGluIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UuIEVhY2ggZW50cnkgc3BlY2lmaWVzIHRoZSBj b2x1bW4gbmFtZSBhbmQgaXRzCisgKiB0eXBlIE9JRDsgdGhlIHRhYmxlIGlzIGNyZWF0ZWQgaW4g dGhpcyBjb2x1bW4gb3JkZXIgYnkKKyAqIGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoKS4KKyAq CisgKiBUaGUgdHVwbGUva2V5IGNvbHVtbnMgKHJlcGxpY2FfaWRlbnRpdHksIHJlbW90ZV90dXBs ZSwgbG9jYWxfY29uZmxpY3RzKSBhcmUKKyAqIHR5cGVkIGpzb24gcmF0aGVyIHRoYW4ganNvbmIg b24gcHVycG9zZTogdGhleSBob2xkIGFuIGV4YWN0IGF1ZGl0IHNuYXBzaG90CisgKiBvZiB0aGUg YXBwbGllZCB0dXBsZXMgYW5kIHJlcGxpY2EgaWRlbnRpdHksIGFuZCBqc29uIHByZXNlcnZlcyB0 aGUgdmVyYmF0aW0KKyAqIHJlcHJlc2VudGF0aW9uIHdoZXJlYXMganNvbmIgd291bGQgbm9ybWFs aXplIGl0LiBJbmRleGluZyB0aGVtIChqc29uYidzIG1haW4KKyAqIGFkdmFudGFnZSkgd291bGRu J3QgaGVscCBhbnl3YXksIGFzIHRoZSBjb25mbGljdCBsb2cgaXMgbG9va2VkIHVwIGJ5IGl0cwor ICogc2NhbGFyIGNvbHVtbnMgKHJlbGlkLCBjb25mbGljdF90eXBlLCBjb21taXQgdGltZXN0YW1w KSB3aGlsZSB0aGVzZSBqc29uCisgKiBjb2x1bW5zIGFyZSBwZXItY29uZmxpY3QgcGF5bG9hZCB0 byBpbnNwZWN0LCBub3Qgc2VhcmNoIGtleXMuCisgKi8KK3N0YXRpYyBjb25zdCBDb25mbGljdExv Z0NvbHVtbkRlZiBDb25mbGljdExvZ1NjaGVtYVtdID0geworCXsuYXR0bmFtZSA9ICJyZWxpZCIs IC5hdHR0eXBpZCA9IE9JRE9JRH0sCisJey5hdHRuYW1lID0gInNjaGVtYW5hbWUiLCAuYXR0dHlw aWQgPSBURVhUT0lEfSwKKwl7LmF0dG5hbWUgPSAicmVsbmFtZSIsIC5hdHR0eXBpZCA9IFRFWFRP SUR9LAorCXsuYXR0bmFtZSA9ICJjb25mbGljdF90eXBlIiwgLmF0dHR5cGlkID0gVEVYVE9JRH0s CisJey5hdHRuYW1lID0gInJlbW90ZV94aWQiLCAuYXR0dHlwaWQgPSBYSURPSUR9LAorCXsuYXR0 bmFtZSA9ICJyZW1vdGVfY29tbWl0X2xzbiIsIC5hdHR0eXBpZCA9IExTTk9JRH0sCisJey5hdHRu YW1lID0gInJlbW90ZV9jb21taXRfdHMiLCAuYXR0dHlwaWQgPSBUSU1FU1RBTVBUWk9JRH0sCisJ ey5hdHRuYW1lID0gInJlbW90ZV9vcmlnaW4iLCAuYXR0dHlwaWQgPSBURVhUT0lEfSwKKwl7LmF0 dG5hbWUgPSAicmVwbGljYV9pZGVudGl0eV9mdWxsIiwgLmF0dHR5cGlkID0gQk9PTE9JRH0sCisJ ey5hdHRuYW1lID0gInJlcGxpY2FfaWRlbnRpdHkiLCAuYXR0dHlwaWQgPSBKU09OT0lEfSwKKwl7 LmF0dG5hbWUgPSAicmVtb3RlX3R1cGxlIiwgLmF0dHR5cGlkID0gSlNPTk9JRH0sCisJey5hdHRu YW1lID0gImxvY2FsX2NvbmZsaWN0cyIsIC5hdHR0eXBpZCA9IEpTT05BUlJBWU9JRH0KK307CisK KyNkZWZpbmUgTlVNX0NPTkZMSUNUX0FUVFJTIGxlbmd0aG9mKENvbmZsaWN0TG9nU2NoZW1hKQor CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQ29uZmxpY3RUeXBlTmFtZXNbXSA9IHsKIAlbQ1Rf SU5TRVJUX0VYSVNUU10gPSAiaW5zZXJ0X2V4aXN0cyIsCiAJW0NUX1VQREFURV9PUklHSU5fRElG RkVSU10gPSAidXBkYXRlX29yaWdpbl9kaWZmZXJzIiwKQEAgLTU0LDYgKzExMSwxMjEgQEAgc3Rh dGljIHZvaWQgZ2V0X3R1cGxlX2Rlc2MoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJl bGluZm8sCiBzdGF0aWMgY2hhciAqYnVpbGRfaW5kZXhfdmFsdWVfZGVzYyhFU3RhdGUgKmVzdGF0 ZSwgUmVsYXRpb24gbG9jYWxyZWwsCiAJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCwgT2lk IGluZGV4b2lkKTsKIAorLyoKKyAqIEJ1aWxkcyB0aGUgVHVwbGVEZXNjIGZvciB0aGUgY29uZmxp Y3QgbG9nIHRhYmxlLgorICovCitzdGF0aWMgVHVwbGVEZXNjCitjcmVhdGVfY29uZmxpY3RfbG9n X3RhYmxlX3R1cGRlc2Modm9pZCkKK3sKKwlUdXBsZURlc2MJdHVwZGVzYzsKKworCXR1cGRlc2Mg PSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhOVU1fQ09ORkxJQ1RfQVRUUlMpOworCisJZm9yIChp bnQgaSA9IDA7IGkgPCBOVU1fQ09ORkxJQ1RfQVRUUlM7IGkrKykKKwkJVHVwbGVEZXNjSW5pdEVu dHJ5KHR1cGRlc2MsIGkgKyAxLAorCQkJCQkJICAgQ29uZmxpY3RMb2dTY2hlbWFbaV0uYXR0bmFt ZSwKKwkJCQkJCSAgIENvbmZsaWN0TG9nU2NoZW1hW2ldLmF0dHR5cGlkLAorCQkJCQkJICAgLTEs IDApOworCisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CisKKwlyZXR1cm4gdHVwZGVzYzsK K30KKworLyoKKyAqIENyZWF0ZSBhIHN0cnVjdHVyZWQgY29uZmxpY3QgbG9nIHRhYmxlIGZvciBh IHN1YnNjcmlwdGlvbi4KKyAqCisgKiBUaGUgdGFibGUgaXMgY3JlYXRlZCB3aXRoaW4gdGhlIHN5 c3RlbS1tYW5hZ2VkICdwZ19jb25mbGljdCcgbmFtZXNwYWNlIHRvCisgKiBwcmV2ZW50IHVzZXJz IGZyb20gbWFudWFsbHkgZHJvcHBpbmcgb3IgYWx0ZXJpbmcgaXQuICBUaGlzIGFsc28gcHJldmVu dHMKKyAqIGFjY2lkZW50YWwgbmFtZSBjb2xsaXNpb25zIHdpdGggdXNlci1jcmVhdGVkIHRhYmxl cyB3aXRoIHRoZSBzYW1lIG5hbWUuCisgKgorICogVGhlIHRhYmxlIG5hbWUgaXMgZ2VuZXJhdGVk IGF1dG9tYXRpY2FsbHkgdXNpbmcgdGhlIHN1YnNjcmlwdGlvbidzIE9JRAorICogKGUuZy4sICJw Z19jb25mbGljdF9sb2dfPHN1YmlkPiIpIHRvIGVuc3VyZSB1bmlxdWVuZXNzIHdpdGhpbiB0aGUK KyAqIGNsdXN0ZXIgYW5kIHRvIGF2b2lkIGNvbGxpc2lvbnMgZHVyaW5nIHN1YnNjcmlwdGlvbiBy ZW5hbWVzLgorICovCitPaWQKK2NyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoT2lkIHN1YmlkLCBj aGFyICpzdWJuYW1lLCBPaWQgc3Vib3duZXIpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJT2lk CQkJcmVsaWQ7CisJY2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07CisKKwlzbnByaW50ZihyZWxu YW1lLCBOQU1FREFUQUxFTiwgInBnX2NvbmZsaWN0X2xvZ18ldSIsIHN1YmlkKTsKKworCS8qIEJ1 aWxkIHRoZSB0dXBsZSBkZXNjcmlwdG9yIGZvciB0aGUgbmV3IHRhYmxlLiAqLworCXR1cGRlc2Mg PSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlX3R1cGRlc2MoKTsKKworCS8qIENyZWF0ZSBjb25m bGljdCBsb2cgdGFibGUuICovCisJcmVsaWQgPSBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2cocmVs bmFtZSwKKwkJCQkJCQkJCSBQR19DT05GTElDVF9OQU1FU1BBQ0UsCisJCQkJCQkJCQkgMCwgLyog dGFibGVzcGFjZSAqLworCQkJCQkJCQkJIEludmFsaWRPaWQsCS8qIHJlbGlkICovCisJCQkJCQkJ CQkgSW52YWxpZE9pZCwJLyogcmVsdHlwZWlkICovCisJCQkJCQkJCQkgSW52YWxpZE9pZCwJLyog cmVsb2Z0eXBlaWQgKi8KKwkJCQkJCQkJCSBzdWJvd25lciwKKwkJCQkJCQkJCSBIRUFQX1RBQkxF X0FNX09JRCwKKwkJCQkJCQkJCSB0dXBkZXNjLAorCQkJCQkJCQkJIE5JTCwKKwkJCQkJCQkJCSBS RUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJIFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCwKKwkJ CQkJCQkJCSBmYWxzZSwgLyogc2hhcmVkX3JlbGF0aW9uICovCisJCQkJCQkJCQkgZmFsc2UsIC8q IG1hcHBlZF9yZWxhdGlvbiAqLworCQkJCQkJCQkJIE9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkg KERhdHVtKSAwLCAvKiByZWxvcHRpb25zICovCisJCQkJCQkJCQkgZmFsc2UsIC8qIHVzZV91c2Vy X2FjbCAqLworCQkJCQkJCQkJIHRydWUsCS8qIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzICovCisJ CQkJCQkJCQkgdHJ1ZSwJLyogaXNfaW50ZXJuYWwgKi8KKwkJCQkJCQkJCSBJbnZhbGlkT2lkLAkv KiByZWxyZXdyaXRlICovCisJCQkJCQkJCQkgTlVMTCk7IC8qIHR5cGFkZHJlc3MgKi8KKwlBc3Nl cnQoT2lkSXNWYWxpZChyZWxpZCkpOworCisJLyogUmVsZWFzZSB0dXBsZSBkZXNjcmlwdG9yIG1l bW9yeS4gKi8KKwlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCisJLyoKKwkgKiBXZSBtdXN0IGJ1 bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXdseS1jcmVhdGVkIHJlbGF0aW9u CisJICogdHVwbGUgdmlzaWJsZSBmb3Igb3BlbmluZy4KKwkgKi8KKwlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCisJLyoKKwkgKiBDcmVhdGUgYSBUT0FTVCB0YWJsZSBmb3IgdGhlIGNvbmZs aWN0IGxvZyB0byBzdXBwb3J0IG91dC1vZi1saW5lCisJICogc3RvcmFnZSBvZiBsYXJnZSBqc29u IGRhdGEuCisJICovCisJTmV3UmVsYXRpb25DcmVhdGVUb2FzdFRhYmxlKHJlbGlkLCAoRGF0dW0p IDApOworCisJZXJlcG9ydChOT1RJQ0UsCisJCQkoZXJybXNnKCJjcmVhdGVkIGNvbmZsaWN0IGxv ZyB0YWJsZSBcIiVzXCIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQlnZXRfcXVhbGlm aWVkX29iam5hbWUoUEdfQ09ORkxJQ1RfTkFNRVNQQUNFLCByZWxuYW1lKSwKKwkJCQkJc3VibmFt ZSkpKTsKKworCXJldHVybiByZWxpZDsKK30KKworLyoKKyAqIENvbnZlcnQgdGhlIHN0cmluZyBy ZXByZXNlbnRhdGlvbiBvZiBhIGNvbmZsaWN0IGxvZ2dpbmcgZGVzdGluYXRpb24gdG8gaXRzCisg KiBjb3JyZXNwb25kaW5nIGVudW0gdmFsdWUuCisgKi8KK0NvbmZsaWN0TG9nRGVzdAorR2V0Q29u ZmxpY3RMb2dEZXN0KGNvbnN0IGNoYXIgKmRlc3QpCit7CisJLyogTlVMTCBkZWZhdWx0cyB0byBM T0cuICovCisJaWYgKGRlc3QgPT0gTlVMTCB8fCBwZ19zdHJjYXNlY21wKGRlc3QsICJsb2ciKSA9 PSAwKQorCQlyZXR1cm4gQ09ORkxJQ1RfTE9HX0RFU1RfTE9HOworCisJaWYgKHBnX3N0cmNhc2Vj bXAoZGVzdCwgInRhYmxlIikgPT0gMCkKKwkJcmV0dXJuIENPTkZMSUNUX0xPR19ERVNUX1RBQkxF OworCisJaWYgKHBnX3N0cmNhc2VjbXAoZGVzdCwgImFsbCIpID09IDApCisJCXJldHVybiBDT05G TElDVF9MT0dfREVTVF9BTEw7CisKKwkvKiBVbnJlY29nbml6ZWQgc3RyaW5nLiAqLworCWVyZXBv cnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCSBlcnJtc2coInVucmVjb2duaXplZCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gdmFsdWU6 IFwiJXNcIiIsIGRlc3QpLAorCQkJIGVycmhpbnQoIlZhbGlkIHZhbHVlcyBhcmUgXCJsb2dcIiwg XCJ0YWJsZVwiLCBhbmQgXCJhbGxcIi4iKSkpOworfQorCiAvKgogICogR2V0IHRoZSB4bWluIGFu ZCBjb21taXQgdGltZXN0YW1wIGRhdGEgKG9yaWdpbiBhbmQgdGltZXN0YW1wKSBhc3NvY2lhdGVk CiAgKiB3aXRoIHRoZSBwcm92aWRlZCBsb2NhbCByb3cuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXdyaXRlL3Jld3JpdGVEZWZpbmUuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURl ZmluZS5jCmluZGV4IDZhMjIzZmJlYWE0Li5iZjFmMDkzNjg2NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlRGVmaW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlRGVmaW5lLmMKQEAgLTI2Miw2ICsyNjIsMTggQEAgRGVmaW5lUXVlcnlSZXdyaXRlKGNv bnN0IGNoYXIgKnJ1bGVuYW1lLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZXZlbnRf cmVsYXRpb24pKSwKIAkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChldmVudF9y ZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kKSkpOwogCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFi bGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24KKwkgKiBjb25m bGljdCBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGhhdmUgcnVsZXMsIGFzIGl0IGNvdWxkIGRpc3J1 cHQKKwkgKiBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVD bGFzcyhldmVudF9yZWxhdGlvbi0+cmRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJjb25mbGljdCBs b2cgdGFibGUgXCIlc1wiIGNhbm5vdCBoYXZlIHJ1bGVzIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKGV2ZW50X3JlbGF0aW9uKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9n IHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9u IGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3Rl bVJlbGF0aW9uKGV2ZW50X3JlbGF0aW9uKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApAQCAtNzcyLDYgKzc4NCwxOCBAQCBS YW5nZVZhckNhbGxiYWNrRm9yUmVuYW1lUnVsZShjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxp ZCwgT2lkIG9sZHJlbGlkLAogCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBjYW5ub3QgaGF2 ZSBydWxlcyIsIHJ2LT5yZWxuYW1lKSwKIAkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBv cnRlZChmb3JtLT5yZWxraW5kKSkpOwogCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFy ZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24KKwkgKiBjb25mbGljdCBs b2dnaW5nIGFuZCBzaG91bGQgbm90IGhhdmUgcnVsZXMsIGFzIGl0IGNvdWxkIGRpc3J1cHQKKwkg KiBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhm b3JtKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKKwkJCQkgZXJybXNnKCJjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIGNhbm5vdCBo YXZlIHJ1bGVzIiwKKwkJCQkJCXJ2LT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGlj dCBsb2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGlj YXRpb24gY29uZmxpY3RzLiIpKSk7CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElz U3lzdGVtQ2xhc3MocmVsaWQsIGZvcm0pKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jCmluZGV4IDAzNmRlNWY3OWVmLi5lNTJkNGNjZDA4OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMKQEAgLTM3MDksNyArMzcwOSw3IEBAIGdldF9uYW1lc3BhY2VfbmFtZV9v cl90ZW1wKE9pZCBuc3BpZCkKICAqCQlvYmplY3QgZm9yIHRoZSBnaXZlbiBuYW1lc3BhY2UgSUQg YW5kIG9iamVjdCBuYW1lLgogICovCiBjaGFyICoKLWdldF9xdWFsaWZpZWRfb2JqbmFtZShPaWQg bnNwaWQsIGNoYXIgKm9iam5hbWUpCitnZXRfcXVhbGlmaWVkX29iam5hbWUoT2lkIG5zcGlkLCBj b25zdCBjaGFyICpvYmpuYW1lKQogewogCWNoYXIJICAgKm5zcG5hbWU7CiAJY2hhcgkgICAqcmVz dWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2luaXRk Yi9pbml0ZGIuYwppbmRleCA4ZmJhODk2NTYxYi4uOTNlOWNkNGFjNDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0x ODM5LDYgKzE4MzksMTIgQEAgc2V0dXBfcHJpdmlsZWdlcyhGSUxFICpjbWRmZCkKIAkJCQkgICIg IEFORCByZWxhY2wgSVMgTlVMTDtcblxuIiwKIAkJCQkgIGVzY2FwZV9xdW90ZXModXNlcm5hbWUp KTsKIAlQR19DTURfUFVUUygiR1JBTlQgVVNBR0UgT04gU0NIRU1BIHBnX2NhdGFsb2csIHB1Ymxp YyBUTyBQVUJMSUM7XG5cbiIpOworCisJLyoKKwkgKiBBbGxvdyBub24tc3VwZXJ1c2VyIHN1YnNj cmlwdGlvbiBvd25lcnMgdG8gYWNjZXNzIHRoZWlyIGFzc29jaWF0ZWQKKwkgKiBjb25mbGljdCBs b2cgdGFibGVzIGluIHRoZSBwZ19jb25mbGljdCBzY2hlbWEuCisJICovCisJUEdfQ01EX1BVVFMo IkdSQU5UIFVTQUdFIE9OIFNDSEVNQSBwZ19jb25mbGljdCBUTyBQVUJMSUM7XG5cbiIpOwogCVBH X0NNRF9QVVRTKCJSRVZPS0UgQUxMIE9OIHBnX2xhcmdlb2JqZWN0IEZST00gUFVCTElDO1xuXG4i KTsKIAlQR19DTURfUFVUUygiSU5TRVJUIElOVE8gcGdfaW5pdF9wcml2cyAiCiAJCQkJIiAgKG9i am9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBpbml0cHJpdnMsIHByaXZ0eXBlKSIKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYwppbmRleCA0NmI5YWRkMDYwNC4uZjMzMTQ2NGYyYzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKQEAgLTIzNzYsOCArMjM3Niw4IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBw YXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCIoIiwgIlBVQkxJQ0FUSU9OIik7CiAJLyogQUxU RVIgU1VCU0NSSVBUSU9OIDxuYW1lPiBTRVQgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQotCQlD T01QTEVURV9XSVRIKCJiaW5hcnkiLCAiZGlzYWJsZV9vbl9lcnJvciIsICJmYWlsb3ZlciIsCi0J CQkJCSAgIm1heF9yZXRlbnRpb25fZHVyYXRpb24iLCAib3JpZ2luIiwKKwkJQ09NUExFVEVfV0lU SCgiYmluYXJ5IiwgImNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiIsICJkaXNhYmxlX29uX2Vycm9y IiwKKwkJCQkJICAiZmFpbG92ZXIiLCAibWF4X3JldGVudGlvbl9kdXJhdGlvbiIsICJvcmlnaW4i LAogCQkJCQkgICJwYXNzd29yZF9yZXF1aXJlZCIsICJyZXRhaW5fZGVhZF90dXBsZXMiLAogCQkJ CQkgICJydW5fYXNfb3duZXIiLCAic2xvdF9uYW1lIiwgInN0cmVhbWluZyIsCiAJCQkJCSAgInN5 bmNocm9ub3VzX2NvbW1pdCIsICJ0d29fcGhhc2UiLApAQCAtMzk2MSw4ICszOTYxLDggQEAgbWF0 Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIldJVEgg KCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUgU1VCU0NSSVBUSU9OIDxuYW1lPiAuLi4gIFdJVEgg KCA8b3B0PiIgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwg TWF0Y2hBbnlOLCAiV0lUSCIsICIoIikpCi0JCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25u ZWN0IiwgImNvcHlfZGF0YSIsICJjcmVhdGVfc2xvdCIsCi0JCQkJCSAgImRpc2FibGVfb25fZXJy b3IiLCAiZW5hYmxlZCIsICJmYWlsb3ZlciIsCisJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJj b25mbGljdF9sb2dfZGVzdGluYXRpb24iLCAiY29ubmVjdCIsICJjb3B5X2RhdGEiLAorCQkJCQkg ICJjcmVhdGVfc2xvdCIsICJkaXNhYmxlX29uX2Vycm9yIiwgImVuYWJsZWQiLCAiZmFpbG92ZXIi LAogCQkJCQkgICJtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIiwgIm9yaWdpbiIsCiAJCQkJCSAgInBh c3N3b3JkX3JlcXVpcmVkIiwgInJldGFpbl9kZWFkX3R1cGxlcyIsCiAJCQkJCSAgInJ1bl9hc19v d25lciIsICJzbG90X25hbWUiLCAic3RyZWFtaW5nIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvY2F0YWxvZy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXRhbG9nLmgKaW5kZXgg YTlkNmU4ZWE5ODYuLmZlYWIzOTgyY2Y1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2NhdGFsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdGFsb2cuaApAQCAtMjUsNiAr MjUsNyBAQCBleHRlcm4gYm9vbCBJc0lucGxhY2VVcGRhdGVSZWxhdGlvbihSZWxhdGlvbiByZWxh dGlvbik7CiAKIGV4dGVybiBib29sIElzU3lzdGVtQ2xhc3MoT2lkIHJlbGlkLCBGb3JtX3BnX2Ns YXNzIHJlbHR1cGxlKTsKIGV4dGVybiBib29sIElzVG9hc3RDbGFzcyhGb3JtX3BnX2NsYXNzIHJl bHR1cGxlKTsKK2V4dGVybiBib29sIElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKEZvcm1fcGdfY2xh c3MgcmVsdHVwbGUpOwogCiBleHRlcm4gYm9vbCBJc0NhdGFsb2dSZWxhdGlvbk9pZChPaWQgcmVs aWQpOwogZXh0ZXJuIGJvb2wgSXNDYXRhbG9nVGV4dFVuaXF1ZUluZGV4T2lkKE9pZCByZWxpZCk7 CkBAIC0zMiw2ICszMyw3IEBAIGV4dGVybiBib29sIElzSW5wbGFjZVVwZGF0ZU9pZChPaWQgcmVs aWQpOwogCiBleHRlcm4gYm9vbCBJc0NhdGFsb2dOYW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKTsK IGV4dGVybiBib29sIElzVG9hc3ROYW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKTsKK2V4dGVybiBi b29sIElzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShPaWQgbmFtZXNwYWNlSWQpOwogCiBleHRl cm4gYm9vbCBJc1Jlc2VydmVkTmFtZShjb25zdCBjaGFyICpuYW1lKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19uYW1lc3BhY2UuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19uYW1lc3BhY2UuZGF0CmluZGV4IDMwNzVlMTQyYzczLi5kZTgzMTZlNDBkZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19uYW1lc3BhY2UuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRhdApAQCAtMTgsNiArMTgsOSBAQAogeyBvaWQgPT4g Jzk5Jywgb2lkX3N5bWJvbCA9PiAnUEdfVE9BU1RfTkFNRVNQQUNFJywKICAgZGVzY3IgPT4gJ3Jl c2VydmVkIHNjaGVtYSBmb3IgVE9BU1QgdGFibGVzJywKICAgbnNwbmFtZSA9PiAncGdfdG9hc3Qn LCBuc3BhY2wgPT4gJ19udWxsXycgfSwKK3sgb2lkID0+ICc4OTg4Jywgb2lkX3N5bWJvbCA9PiAn UEdfQ09ORkxJQ1RfTkFNRVNQQUNFJywKKyAgZGVzY3IgPT4gJ3Jlc2VydmVkIHNjaGVtYSBmb3Ig c3Vic2NyaXB0aW9uLXNwZWNpZmljIGNvbmZsaWN0IGxvZyB0YWJsZXMnLAorICBuc3BuYW1lID0+ ICdwZ19jb25mbGljdCcsIG5zcGFjbCA9PiAnX251bGxfJyB9LAogIyB1cGRhdGUgZHVtcE5hbWVz cGFjZSgpIGlmIGNoYW5naW5nIHRoaXMgZGVzY3IKIHsgb2lkID0+ICcyMjAwJywgb2lkX3N5bWJv bCA9PiAnUEdfUFVCTElDX05BTUVTUEFDRScsCiAgIGRlc2NyID0+ICdzdGFuZGFyZCBwdWJsaWMg c2NoZW1hJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDQ4OTQ0MjAx ODg5Li42NWNlOGUxNDVmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBA IC05NSw3ICs5NSwxNSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlv blJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCU9pZAkJCXN1YnNlcnZl ciBCS0lfTE9PS1VQX09QVChwZ19mb3JlaWduX3NlcnZlcik7CS8qIElmIGNvbm5lY3Rpb24gdXNl cwogCQkJCQkJCQkJCQkJCQkJCSAqIHNlcnZlciAqLwogCisJT2lkCQkJc3ViY29uZmxpY3Rsb2dy ZWxpZDsJLyogUmVsaWQgb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZS4gKi8KICNpZmRlZiBDQVRB TE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCisJ LyoKKwkgKiBTdHJhdGVneSBmb3IgbG9nZ2luZyByZXBsaWNhdGlvbiBjb25mbGljdHM6ICdsb2cn IC0gc2VydmVyIGxvZyBvbmx5LAorCSAqICd0YWJsZScgLSBjb25mbGljdCBsb2cgdGFibGUgb25s eSwgJ2FsbCcgLSBib3RoIGxvZyBhbmQgdGFibGUuCisJICovCisJdGV4dAkJc3ViY29uZmxpY3Rs b2dkZXN0IEJLSV9GT1JDRV9OT1RfTlVMTDsKKwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRo ZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbzsJLyogU2V0IGlmIGNvbm5lY3Rpbmcg d2l0aCBjb25uZWN0aW9uIHN0cmluZyAqLwogCkBAIC0xNjQsNiArMTcyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCQkgKiBhbmQgdGhlIHJldGVudGlvbiBkdXJhdGlv biBoYXMgbm90CiAJCQkJCQkJCQkgKiBleGNlZWRlZCBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3 aGVuCiAJCQkJCQkJCQkgKiBkZWZpbmVkICovCisJT2lkCQkJY29uZmxpY3Rsb2dyZWxpZDsJLyog Y29uZmxpY3QgbG9nIHRhYmxlIE9pZCAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVj dGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyog TmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkv KiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCkBAIC0xNzEsNiArMTgw LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJTGlzdAkgICAqcHVibGljYXRpb25z OwkvKiBMaXN0IG9mIHB1YmxpY2F0aW9uIG5hbWVzIHRvIHN1YnNjcmliZSB0byAqLwogCWNoYXIJ ICAgKm9yaWdpbjsJCQkvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9tIHRoZQog CQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2luICovCisJY2hhcgkgICAqY29uZmxpY3Rsb2dkZXN0 OwkvKiBDb25mbGljdCBsb2cgZGVzdGluYXRpb24gKi8KIH0gU3Vic2NyaXB0aW9uOwogCiAjaWZk ZWYgRVhQT1NFX1RPX0NMSUVOVF9DT0RFCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9jb25mbGljdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vY29uZmxpY3QuaAppbmRl eCAyZDlkYmNmNGQwZC4uMzI2NTcwZWQ2MzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2NvbmZsaWN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vY29uZmxpY3Qu aApAQCAtNzksNiArNzksMzIgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uZmxpY3RUdXBsZUluZm8KIAkJ CQkJCQkJICogY29uZmxpY3RpbmcgbG9jYWwgcm93IG9jY3VycmVkICovCiB9IENvbmZsaWN0VHVw bGVJbmZvOwogCisvKgorICogRGVmaW5lcyB3aGVyZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZs aWN0IGRldGFpbHMgYXJlIHJlY29yZGVkLgorICoKKyAqIFdoaWxlIHN0b3JlZCBhcyBhIHRleHQt YmFzZWQgYXJyYXkvc3RyaW5nIGluCisgKiBwZ19zdWJzY3JpcHRpb24uc3ViY29uZmxpY3Rsb2dk ZXN0IGZvciB1c2VyIHJlYWRhYmlsaXR5IGFuZCBleHRlbnNpYmlsaXR5LAorICogd2UgbWFwIHRo ZXNlIHRvIGFuIGludGVybmFsIGVudW0gdG8gYWxsb3cgZm9yIGVmZmljaWVudCBjaGVja3MuCisg Ki8KK3R5cGVkZWYgZW51bSBDb25mbGljdExvZ0Rlc3QKK3sKKwlDT05GTElDVF9MT0dfREVTVF9M T0cgPSAwLAkvKiBFbWl0IHRvIHNlcnZlciBsb2dzICovCisJQ09ORkxJQ1RfTE9HX0RFU1RfVEFC TEUsCS8qIEluc2VydCBpbnRvIHRoZSBjb25mbGljdCBsb2cgdGFibGUgKi8KKwlDT05GTElDVF9M T0dfREVTVF9BTEwJCS8qIEJvdGggbG9nIGFuZCB0YWJsZSAqLworfSBDb25mbGljdExvZ0Rlc3Q7 CisKKyNkZWZpbmUgQ09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShkZXN0KSBcCisJKChkZXN0ID09 IENPTkZMSUNUX0xPR19ERVNUX1RBQkxFKSB8fCAoZGVzdCA9PSBDT05GTElDVF9MT0dfREVTVF9B TEwpKQorI2RlZmluZSBDT05GTElDVFNfTE9HR0VEX1RPX0xPRyhkZXN0KSBcCisJKChkZXN0ID09 IENPTkZMSUNUX0xPR19ERVNUX0xPRykgfHwgKGRlc3QgPT0gQ09ORkxJQ1RfTE9HX0RFU1RfQUxM KSkKKworLyoKKyAqIEFycmF5IG1hcHBpbmcgZm9yIGNvbnZlcnRpbmcgaW50ZXJuYWwgZW51bSB0 byBzdHJpbmcuCisgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBjb25zdCBjaGFyICpjb25zdCBDb25m bGljdExvZ0Rlc3ROYW1lc1tdOworCitleHRlcm4gT2lkCWNyZWF0ZV9jb25mbGljdF9sb2dfdGFi bGUoT2lkIHN1YmlkLCBjaGFyICpzdWJuYW1lLCBPaWQgc3Vib3duZXIpOworZXh0ZXJuIENvbmZs aWN0TG9nRGVzdCBHZXRDb25mbGljdExvZ0Rlc3QoY29uc3QgY2hhciAqZGVzdCk7CiBleHRlcm4g Ym9vbCBHZXRUdXBsZVRyYW5zYWN0aW9uSW5mbyhUdXBsZVRhYmxlU2xvdCAqbG9jYWxzbG90LAog CQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAqeG1pbiwKIAkJCQkJCQkJCVJlcGxPcmlnaW5JZCAqbG9j YWxvcmlnaW4sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDg2NTk4MGNiMGYxLi41M2MyYTllODY3 MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBleHRlcm4gYm9vbCBn ZXRfYXR0c3RhdHNzbG90KEF0dFN0YXRzU2xvdCAqc3Nsb3QsIEhlYXBUdXBsZSBzdGF0c3R1cGxl LAogZXh0ZXJuIHZvaWQgZnJlZV9hdHRzdGF0c3Nsb3QoQXR0U3RhdHNTbG90ICpzc2xvdCk7CiBl eHRlcm4gY2hhciAqZ2V0X25hbWVzcGFjZV9uYW1lKE9pZCBuc3BpZCk7CiBleHRlcm4gY2hhciAq Z2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAoT2lkIG5zcGlkKTsKLWV4dGVybiBjaGFyICpnZXRf cXVhbGlmaWVkX29iam5hbWUoT2lkIG5zcGlkLCBjaGFyICpvYmpuYW1lKTsKK2V4dGVybiBjaGFy ICpnZXRfcXVhbGlmaWVkX29iam5hbWUoT2lkIG5zcGlkLCBjb25zdCBjaGFyICpvYmpuYW1lKTsK IGV4dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJ Z2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2Vf Y29uc3RydWN0b3IyKE9pZCByYW5nZU9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQKaW5kZXggOGRiZmFjNjYzMjYuLmQyMDFhZDc2NGYwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC02MTksNiArNjE5LDMwMSBA QCBDT01NSVQ7CiAtLSBvaywgb3duaW5nIGl0IGlzIGVub3VnaCBmb3IgdGhpcyBzdHVmZgogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwog RFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOworLS0KKy0tIENPTkZMSUNUIExPRyBE RVNUSU5BVElPTiBURVNUUworLS0KK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gJ3JlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXInOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOwor LS0gZmFpbCAtIHVucmVjb2duaXplZCBwYXJhbWV0ZXIgdmFsdWUKK0NSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc19jb25mbGljdF9mYWlsIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZs aWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdpbnZhbGlkJyk7CitFUlJPUjogIHVucmVjb2duaXplZCBj b25mbGljdF9sb2dfZGVzdGluYXRpb24gdmFsdWU6ICJpbnZhbGlkIgorSElOVDogIFZhbGlkIHZh bHVlcyBhcmUgImxvZyIsICJ0YWJsZSIsIGFuZCAiYWxsIi4KKy0tIHZlcmlmeSBzdWJjb25mbGlj dGxvZ2Rlc3QgaXMgJ2xvZycgYW5kIHN1YmNvbmZsaWN0bG9ncmVsaWQgaXMgMCAoSW52YWxpZE9p ZCkgZm9yIGRlZmF1bHQgY2FzZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0 X2xvZ19kZWZhdWx0IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVC TElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UpOworV0FSTklORzogIHN1YnNj cmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0 aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlv biBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRp b24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCitTRUxFQ1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rs b2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBz dWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfbG9nX2RlZmF1bHQnOworICAgICAgICAgICBzdWJu YW1lICAgICAgICAgICAgfCBzdWJjb25mbGljdGxvZ2Rlc3QgfCBzdWJjb25mbGljdGxvZ3JlbGlk IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfY29uZmxpY3RfbG9nX2RlZmF1bHQgfCBsb2cg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIGZhaWwg LSBlbXB0eSBzdHJpbmcgcGFyYW1ldGVyIHZhbHVlCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfY29uZmxpY3RfZW1wdHlfc3RyIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0 X2xvZ19kZXN0aW5hdGlvbiA9ICcnKTsKK0VSUk9SOiAgdW5yZWNvZ25pemVkIGNvbmZsaWN0X2xv Z19kZXN0aW5hdGlvbiB2YWx1ZTogIiIKK0hJTlQ6ICBWYWxpZCB2YWx1ZXMgYXJlICJsb2ciLCAi dGFibGUiLCBhbmQgImFsbCIuCistLSB0aGlzIHNob3VsZCBnZW5lcmF0ZSBhIGNvbmZsaWN0IGxv ZyB0YWJsZSBuYW1lZCBwZ19jb25mbGljdF9sb2dfJHN1YmlkJAorQ1JFQVRFIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZs aWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3 YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBs aWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBl bmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVm cmVzaCBwdWJsaWNhdGlvbnMuCistLSBjaGVjayBtZXRhZGF0YSBpbiBwZ19zdWJzY3JpcHRpb246 IGRlc3RpbmF0aW9uIHNob3VsZCBiZSAndGFibGUnIGFuZCBzdWJjb25mbGljdGxvZ3JlbGlkIHZh bGlkCitTRUxFQ1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3Jl bGlkID4gMCBBUyBoYXNfcmVsaWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUg PSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisgICAgICAgIHN1Ym5hbWUgICAgICAgICB8IHN1 YmNvbmZsaWN0bG9nZGVzdCB8IGhhc19yZWxpZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEg fCB0YWJsZSAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKKy0tIHZlcmlmeSB0aGUgcGh5c2lj YWwgdGFibGUgZXhpc3RzLCBpdHMgT0lEIG1hdGNoZXMgc3ViY29uZmxpY3Rsb2dyZWxpZCwKKy0t IGFuZCBpdCBpcyBsb2NhdGVkIGluIHRoZSAncGdfY29uZmxpY3QnIG5hbWVzcGFjZQorU0VMRUNU IG4ubnNwbmFtZSwgKGMub2lkID0gcy5zdWJjb25mbGljdGxvZ3JlbGlkKSBBUyAib2lkX21hdGNo ZXMiCitGUk9NIHBnX2NsYXNzIGMKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1l ID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitKT0lOIHBnX25hbWVzcGFjZSBuIE9OIGMu cmVsbmFtZXNwYWNlID0gbi5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0 X3Rlc3QxJzsKKyAgIG5zcG5hbWUgICB8IG9pZF9tYXRjaGVzIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcGdfY29uZmxpY3QgfCB0CisoMSByb3cpCisKKy0tIGNoZWNrIGlmIHRoZSBj b25mbGljdCBsb2cgdGFibGUgaGFzIHRoZSBjb3JyZWN0IHNjaGVtYQorU0VMRUNUIGEuYXR0bnVt LCBhLmF0dG5hbWUKK0ZST00gcGdfYXR0cmlidXRlIGEKK0pPSU4gcGdfY2xhc3MgYyBPTiBhLmF0 dHJlbGlkID0gYy5vaWQKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3Bn X2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25m bGljdF90ZXN0MScgQU5EIGEuYXR0bnVtID4gMAorICAgIE9SREVSIEJZIGEuYXR0bnVtOworIGF0 dG51bSB8ICAgICAgICBhdHRuYW1lICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAxIHwgcmVsaWQKKyAgICAgIDIgfCBzY2hlbWFuYW1lCisgICAgICAzIHwg cmVsbmFtZQorICAgICAgNCB8IGNvbmZsaWN0X3R5cGUKKyAgICAgIDUgfCByZW1vdGVfeGlkCisg ICAgICA2IHwgcmVtb3RlX2NvbW1pdF9sc24KKyAgICAgIDcgfCByZW1vdGVfY29tbWl0X3RzCisg ICAgICA4IHwgcmVtb3RlX29yaWdpbgorICAgICAgOSB8IHJlcGxpY2FfaWRlbnRpdHlfZnVsbAor ICAgICAxMCB8IHJlcGxpY2FfaWRlbnRpdHkKKyAgICAgMTEgfCByZW1vdGVfdHVwbGUKKyAgICAg MTIgfCBsb2NhbF9jb25mbGljdHMKKygxMiByb3dzKQorCistLSBDaGFuZ2luZyB0aGUgc3Vic2Ny aXB0aW9uIG93bmVyIHNob3VsZCBhbHNvIHVwZGF0ZSB0aGUgb3duZXIKKy0tIG9mIHRoZSBhc3Nv Y2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2Nv bmZsaWN0X3Rlc3QxIE9XTkVSIFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIyOworU0VMRUNU IHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGMucmVsb3duZXIpIEFTIG93bmVyCitGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBwZ19jYXRhbG9nLnBnX3N1YnNjcmlwdGlvbiBzCisg ICAgICAgIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorV0hFUkUg cy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnOworICAgICAgICAgICBvd25lciAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIyCisoMSByb3cpCisKKy0tIFZlcmlmeSB0aGF0IGEgbm9uLXN1cGVydXNlciBz dWJzY3JpcHRpb24gb3duZXIgY2FuIHRydW5jYXRlLAorLS0gZGVsZXRlIGZyb20sIGFuZCBzZWxl Y3QgZnJvbSB0aGUgYXNzb2NpYXRlZCBjb25mbGljdCBsb2cgdGFibGUuCitTRVQgUk9MRSAncmVn cmVzc19zdWJzY3JpcHRpb25fdXNlcjInOworU0VMRUNUIGZvcm1hdCgnJUkuJUknLCBuLm5zcG5h bWUsIGMucmVsbmFtZSkgQVMgY29uZmxpY3RfbG9nX3RhYmxlCitGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYworSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuCisJT04gbi5vaWQgPSBjLnJl bG5hbWVzcGFjZQorSk9JTiBwZ19jYXRhbG9nLnBnX3N1YnNjcmlwdGlvbiBzCisJT04gYy5yZWxu YW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVn cmVzc19jb25mbGljdF90ZXN0MScKK1xnc2V0CitUUlVOQ0FURSBUQUJMRSA6Y29uZmxpY3RfbG9n X3RhYmxlOworREVMRVRFIEZST00gOmNvbmZsaWN0X2xvZ190YWJsZTsKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIDpjb25mbGljdF9sb2dfdGFibGU7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygx IHJvdykKKworUkVTRVQgUk9MRTsKKy0tIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN1YnNjcmlwdGlv biBvd25lci4KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIE9XTkVS IFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXI7CistLQorLS0gQUxURVIgU1VCU0NSSVBUSU9O IC0gY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHN0YXRlIHRyYW5zaXRpb25zCistLQorLS0gVGhl c2UgdGVzdHMgdmVyaWZ5IHRoZSB0cmFuc2l0aW9uIGxvZ2ljIGJldHdlZW4gZGlmZmVyZW50IGxv Z2dpbmcKKy0tIGRlc3RpbmF0aW9ucywgZW5zdXJpbmcgY29uZmxpY3QgbG9nIHRhYmxlcyBhcmUg Y3JlYXRlZCBvciBkcm9wcGVkIGFzCistLSBleHBlY3RlZAorLS0KKy0tIHRyYW5zaXRpb24gZnJv bSAnbG9nJyB0byAnYWxsJworLS0gYSBuZXcgY29uZmxpY3QgbG9nIHRhYmxlIHNob3VsZCBiZSBj cmVhdGVkCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgQ09OTkVD VElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJ VEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ2xvZycpOwor V0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQK K0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVy IHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCitBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBTRVQgKGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv biA9ICdhbGwnKTsKKy0tIHZlcmlmeSBtZXRhZGF0YSBhZnRlciBBTFRFUiAoZGVzdGluYXRpb24g c2hvdWxkIGJlICdhbGwnKQorU0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3Vi Y29uZmxpY3Rsb2dyZWxpZCA+IDAgQVMgaGFzX3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBX SEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDInOworICAgICAgICBzdWJuYW1l ICAgICAgICAgfCBzdWJjb25mbGljdGxvZ2Rlc3QgfCBoYXNfcmVsaWQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyByZWdyZXNzX2Nv bmZsaWN0X3Rlc3QyIHwgYWxsICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSB0cmFu c2l0aW9uIGZyb20gJ2FsbCcgdG8gJ3RhYmxlJworLS0gc2hvdWxkIE5PVCBkcm9wIHRoZSB0YWJs ZSwgb25seSBjaGFuZ2UgZGVzdGluYXRpb24gc3RyaW5nCitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dy ZWxpZCBBUyBvbGRfcmVsaWQgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdy ZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJyBcZ3NldAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf Y29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsK K1NFTEVDVCBzdWJjb25mbGljdGxvZ2Rlc3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQgPSA6b2xkX3Jl bGlkIEFTIHJlbGlkX3VuY2hhbmdlZAorRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFt ZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsKKyBzdWJjb25mbGljdGxvZ2Rlc3QgfCByZWxp ZF91bmNoYW5nZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHRh YmxlICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworLS0gdHJhbnNpdGlvbiBmcm9tICd0YWJs ZScgdG8gJ2xvZycKKy0tIHNob3VsZCBkcm9wIHRoZSB0YWJsZSBhbmQgY2xlYXIgc3ViY29uZmxp Y3Rsb2dyZWxpZAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VU IChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAnbG9nJyk7CitTRUxFQ1Qgc3ViY29uZmxpY3Rs b2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBz dWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDInOworIHN1YmNvbmZsaWN0bG9nZGVzdCB8 IHN1YmNvbmZsaWN0bG9ncmVsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBsb2cgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAwCisoMSBy b3cpCisKKy0tIHZlcmlmeSB0aGUgcGh5c2ljYWwgdGFibGUgaXMgZ29uZQorU0VMRUNUIGNvdW50 KCopCitGUk9NIHBnX2NsYXNzIGMKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1l ID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVz c19jb25mbGljdF90ZXN0Mic7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKwor LS0KKy0tIFBVQkxJQ0FUSU9OOiBWZXJpZnkgY29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbm90IHB1 Ymxpc2hhYmxlCistLQorLS0gcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUgc2hvdWxkIHJldHVy biBmYWxzZSBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcyB0bworLS0gcHJldmVudCB0aGVtIGZyb20g YmVpbmcgYWNjaWRlbnRhbGx5IGluY2x1ZGVkIGluIHB1YmxpY2F0aW9ucworLS0KK1NFTEVDVCBu Lm5zcG5hbWUsIHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKGMub2lkKQorRlJPTSBwZ19jbGFz cyBjCitKT0lOIHBnX25hbWVzcGFjZSBuIE9OIGMucmVsbmFtZXNwYWNlID0gbi5vaWQKK0pPSU4g cGdfc3Vic2NyaXB0aW9uIHMgT04gcy5zdWJjb25mbGljdGxvZ3JlbGlkID0gYy5vaWQKK1dIRVJF IHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsKKyAgIG5zcG5hbWUgICB8IHBn X3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgcGdfY29uZmxpY3QgfCBmCisoMSByb3cpCisKKy0tCistLSBUYWJsZSBQ cm90ZWN0aW9uIGFuZCBMaWZlY3ljbGUgTWFuYWdlbWVudAorLS0KKy0tIFRoZXNlIHRlc3RzIHZl cmlmeSB0aGF0OgorLS0gTWFudWFsIERST1AgVEFCTEUgaXMgZGlzYWxsb3dlZAorLS0gRFJPUCBT VUJTQ1JJUFRJT04gYXV0b21hdGljYWxseSByZWFwcyB0aGUgdGFibGUKKy0tCistLSByZS1lbmFi bGUgdGFibGUgbG9nZ2luZyBmb3IgdmVyaWZpY2F0aW9uCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc19jb25mbGljdF90ZXN0MSBTRVQgKGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJs ZScpOworLS0gVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBuYW1lIGNvbnRhaW5zIHRoZSBzdWJzY3Jp cHRpb24gT0lELCB3aGljaCBpcworLS0gbm9uLWRldGVybWluaXN0aWMuICBDYXB0dXJlIGl0IGlu dG8gYSBwc3FsIHZhcmlhYmxlIGFuZCByZXBvcnQgb25seSB0aGUKKy0tIFNRTFNUQVRFLCBzbyB0 aGUgZXhwZWN0ZWQgb3V0cHV0IGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgT0lELgorLS0gZmFpbCAt IGRyb3AgdGFibGUgbm90IGFsbG93ZWQgZHVlIHRvIGludGVybmFsIGRlcGVuZGVuY3kKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gTk9USUNFOworU0VMRUNUICdwZ19jb25mbGljdC5wZ19jb25m bGljdF9sb2dfJyB8fCBvaWQgQVMgY2x0MQorICAgIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJF IHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MScgXGdzZXQKK1xzZXQgVkVSQk9TSVRZ IHNxbHN0YXRlCitEUk9QIFRBQkxFIDpjbHQxOworRVJST1I6ICA0MjUwMQorXHNldCBWRVJCT1NJ VFkgZGVmYXVsdAorLS0gQ0xFQU5VUDogRFJPUCBTVUJTQ1JJUFRJT04gcmVhcHMgdGhlIHRhYmxl CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBESVNBQkxFOworQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgU0VUIChzbG90X25hbWUgPSBO T05FKTsKKy0tIFZlcmlmeSB0aGUgdGFibGUgT0lEIGZvciByZWFwIGNoZWNrCitTRUxFQ1QgJ3Bn X2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBBUyBpbnRlcm5hbF90YWJsZW5hbWUg RlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rl c3QxJyBcZ3NldAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworRFJPUCBTVUJT Q1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MTsKKy0tIHNob3VsZCByZXR1cm4gTlVMTCwg bWVhbmluZyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIHdhcyByZWFwZWQgdmlhIGRlcGVuZGVuY3kK K1NFTEVDVCB0b19yZWdjbGFzcyg6J2ludGVybmFsX3RhYmxlbmFtZScpOworIHRvX3JlZ2NsYXNz IAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLQorLS0gQWRkaXRpb25hbCBOYW1lc3Bh Y2UgYW5kIFRhYmxlIFByb3RlY3Rpb24gVGVzdHMKKy0tCistLSBTZXR1cDogRW5zdXJlIHdlIGhh dmUgYSBzdWJzY3JpcHRpb24gd2l0aCBhIGNvbmZsaWN0IGxvZyB0YWJsZQorQ1JFQVRFIFNVQlND UklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCBDT05ORUNUSU9OICdkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnCisgICAgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChj b25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOworV0FS TklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRo ZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRo ZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCistLSBUaGUgY29uZmxpY3Qg bG9nIHRhYmxlIGlzIHN5c3RlbS1tYW5hZ2VkOyBpdHMgbmFtZSBjb250YWlucyB0aGUKKy0tIHN1 YnNjcmlwdGlvbiBPSUQsIHdoaWNoIGlzIG5vbi1kZXRlcm1pbmlzdGljLiAgQ2FwdHVyZSB0aGUg bmFtZSBpbnRvIGEgcHNxbAorLS0gdmFyaWFibGUgYW5kIHJlcG9ydCBvbmx5IHRoZSBTUUxTVEFU RSBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGJlCistLSByZWplY3RlZCwgc28gdGhlIGV4 cGVjdGVkIG91dHB1dCBzdGF5cyBmcmVlIG9mIHRoZSBkeW5hbWljIE9JRC4gIEV2ZXJ5CistLSBz dGF0ZW1lbnQgaW4gdGhlIFZFUkJPU0lUWS1zcWxzdGF0ZSBibG9jayBiZWxvdyBtdXN0IGZhaWwg d2l0aCA0MjgwOQorLS0gKHdyb25nX29iamVjdF90eXBlKSwgZXhjZXB0IGFkZGluZyB0aGUgdGFi bGUgdG8gYSBwdWJsaWNhdGlvbiwgd2hpY2ggZmFpbHMKKy0tIHdpdGggMjIwMjMgKGludmFsaWRf cGFyYW1ldGVyX3ZhbHVlKS4KK1NFTEVDVCAncGdfY29uZmxpY3QuJyB8fCByZWxuYW1lIEFTIGNs dAorICAgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFt ZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorICAgIFdIRVJFIHMuc3VibmFtZSA9ICdy ZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCcgXGdzZXQKKy0tIFRyaWdnZXIgZnVuY3Rp b24gdXNlZCBieSB0aGUgQ1JFQVRFIFRSSUdHRVIgY2hlY2sgYmVsb3cuCitDUkVBVEUgRlVOQ1RJ T04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVH SU4KKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1xzZXQgVkVS Qk9TSVRZIHNxbHN0YXRlCitBTFRFUiBUQUJMRSA6Y2x0IEFERCBDT0xVTU4gZXh0cmFfaW5mbyB0 ZXh0OworRVJST1I6ICA0MjgwOQorSU5TRVJUIElOVE8gOmNsdCAocmVsbmFtZSkgVkFMVUVTICgn bXl0ZXN0Jyk7CitFUlJPUjogIDQyODA5CitVUERBVEUgOmNsdCBTRVQgcmVsbmFtZSA9ICdteXRl c3QnOworRVJST1I6ICA0MjgwOQorQ1JFQVRFIFBPTElDWSBwMSBPTiA6Y2x0IFVTSU5HICh0cnVl KTsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBTVEFUSVNUSUNTIHMxIE9OIHJlbG5hbWUsIHNjaGVt YW5hbWUgRlJPTSA6Y2x0OworRVJST1I6ICA0MjgwOQorQ1JFQVRFIFRBQkxFIHB1YmxpYy5jb25m bGljdF9jaGlsZCAoKSBJTkhFUklUUyAoOmNsdCk7CitFUlJPUjogIDQyODA5CitBTFRFUiBUQUJM RSA6Y2x0IFJFTkFNRSBDT0xVTU4gcmVsbmFtZSBUTyBuZXdfcmVsbmFtZTsKK0VSUk9SOiAgNDI4 MDkKK0NSRUFURSBUQUJMRSBwdWJsaWMuY29uZmxpY3RfZmsgKHJlbG5hbWUgdGV4dCBSRUZFUkVO Q0VTIDpjbHQocmVsbmFtZSkpOworRVJST1I6ICA0MjgwOQorQUxURVIgVEFCTEUgOmNsdCBPV05F UiBUTyByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyX2R1bW15OworRVJST1I6ICA0MjgwOQorQUxU RVIgVEFCTEUgOmNsdCBTRVQgU0NIRU1BIHB1YmxpYzsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBU UklHR0VSIHQxIEJFRk9SRSBJTlNFUlQgT04gOmNsdCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5D VElPTiBwdWJsaWMuZHVtbXlfdHJpZ2dlcl9mdW5jKCk7CitFUlJPUjogIDQyODA5CitBTFRFUiBU UklHR0VSIG5vbl9leGlzdGVudF90cmlnZ2VyIE9OIDpjbHQgUkVOQU1FIFRPIG5ld190cmlnZ2Vy OworRVJST1I6ICA0MjgwOQorQ1JFQVRFIFJVTEUgcjEgQVMgT04gSU5TRVJUIFRPIDpjbHQgRE8g SU5TVEVBRCBOT1RISU5HOworRVJST1I6ICA0MjgwOQorQUxURVIgUlVMRSBub25fZXhpc3RlbnRf cnVsZSBPTiA6Y2x0IFJFTkFNRSBUTyBuZXdfcnVsZTsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBJ TkRFWCBpZHgxIE9OIDpjbHQgKHJlbG5hbWUpOworRVJST1I6ICA0MjgwOQorU0VMRUNUIDEgRlJP TSA6Y2x0IEZPUiBVUERBVEU7CitFUlJPUjogIDQyODA5CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JfY2x0IEZPUiBUQUJMRSA6Y2x0OworRVJST1I6ICAyMjAyMworXHNldCBWRVJCT1NJ VFkgZGVmYXVsdAorLS0gQ2xlYW4gdXAgdGhlIHRyaWdnZXIgZnVuY3Rpb24gdXNlZCBhYm92ZS4K K0RST1AgRlVOQ1RJT04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygpOworLS0gVFJVTkNBVEUg YW5kIERFTEVURSBhcmUgYWxsb3dlZCBzbyB0aGF0IHVzZXJzIGNhbiBwcnVuZSB0aGUgY29uZmxp Y3QgbG9nLgorVFJVTkNBVEUgOmNsdDsKK0RFTEVURSBGUk9NIDpjbHQ7CistLSBDcmVhdGluZyBh IHRhYmxlIGRpcmVjdGx5IGluIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UgaXMgcmVqZWN0ZWQg Zm9yCistLSBldmVyeW9uZSAodGhlIHNjaGVtYSBpcyByZXNlcnZlZCBmb3IgY29uZmxpY3QgbG9n IHRhYmxlcykuCitDUkVBVEUgVEFCTEUgcGdfY29uZmxpY3QubWFudWFsX3RhYmxlIChpZCBpbnQp OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHBnX2NvbmZsaWN0CitMSU5F IDE6IENSRUFURSBUQUJMRSBwZ19jb25mbGljdC5tYW51YWxfdGFibGUgKGlkIGludCk7CisgICAg ICAgICAgICAgICAgICAgICBeCistLSBNb3ZpbmcgYSB1c2VyIHRhYmxlIGludG8gdGhlIHBnX2Nv bmZsaWN0IG5hbWVzcGFjZSBpcyBsaWtld2lzZSByZWplY3RlZC4KK0NSRUFURSBUQUJMRSBwdWJs aWMudGVzdF9tb3ZlIChpZCBpbnQpOworQUxURVIgVEFCTEUgcHVibGljLnRlc3RfbW92ZSBTRVQg U0NIRU1BIHBnX2NvbmZsaWN0OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1h IHBnX2NvbmZsaWN0CitEUk9QIFRBQkxFIHB1YmxpYy50ZXN0X21vdmU7CitTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9IFdBUk5JTkc7CistLSBDbGVhbiB1cCByZW1haW5pbmcgdGVzdCBzdWJzY3Jp cHRpb24KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IERJ U0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9sb2dfZGVmYXVsdCBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGlj dF9sb2dfZGVmYXVsdDsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3Qy IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90 ZXN0MjsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVz dCBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlv bl90ZXN0IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNz X2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdDsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK IERST1AgUk9MRSByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyOwogRFJPUCBST0xFIHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vi c2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5k ZXggMDU1MzNkNjY2NzUuLjg2YzQwMmM1OWFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlw dGlvbi5zcWwKQEAgLTQ3NCw2ICs0NzQsMjQwIEBAIENPTU1JVDsKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIERST1AgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAorLS0KKy0tIENPTkZMSUNUIExPRyBERVNUSU5BVElPTiBU RVNUUworLS0KKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiAncmVncmVzc19zdWJzY3JpcHRp b25fdXNlcic7CisKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKKworLS0gZmFp bCAtIHVucmVjb2duaXplZCBwYXJhbWV0ZXIgdmFsdWUKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc19jb25mbGljdF9mYWlsIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xv Z19kZXN0aW5hdGlvbiA9ICdpbnZhbGlkJyk7CisKKy0tIHZlcmlmeSBzdWJjb25mbGljdGxvZ2Rl c3QgaXMgJ2xvZycgYW5kIHN1YmNvbmZsaWN0bG9ncmVsaWQgaXMgMCAoSW52YWxpZE9pZCkgZm9y IGRlZmF1bHQgY2FzZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19k ZWZhdWx0IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJ T04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UpOworU0VMRUNUIHN1Ym5hbWUsIHN1YmNv bmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZAorRlJPTSBwZ19zdWJzY3JpcHRpb24g V0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0JzsKKworLS0gZmFp bCAtIGVtcHR5IHN0cmluZyBwYXJhbWV0ZXIgdmFsdWUKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc19jb25mbGljdF9lbXB0eV9zdHIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxp Y3RfbG9nX2Rlc3RpbmF0aW9uID0gJycpOworCistLSB0aGlzIHNob3VsZCBnZW5lcmF0ZSBhIGNv bmZsaWN0IGxvZyB0YWJsZSBuYW1lZCBwZ19jb25mbGljdF9sb2dfJHN1YmlkJAorQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFs c2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOworCistLSBjaGVjayBtZXRh ZGF0YSBpbiBwZ19zdWJzY3JpcHRpb246IGRlc3RpbmF0aW9uIHNob3VsZCBiZSAndGFibGUnIGFu ZCBzdWJjb25mbGljdGxvZ3JlbGlkIHZhbGlkCitTRUxFQ1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rs b2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkID4gMCBBUyBoYXNfcmVsaWQKK0ZST00gcGdfc3Vi c2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisKKy0t IHZlcmlmeSB0aGUgcGh5c2ljYWwgdGFibGUgZXhpc3RzLCBpdHMgT0lEIG1hdGNoZXMgc3ViY29u ZmxpY3Rsb2dyZWxpZCwKKy0tIGFuZCBpdCBpcyBsb2NhdGVkIGluIHRoZSAncGdfY29uZmxpY3Qn IG5hbWVzcGFjZQorU0VMRUNUIG4ubnNwbmFtZSwgKGMub2lkID0gcy5zdWJjb25mbGljdGxvZ3Jl bGlkKSBBUyAib2lkX21hdGNoZXMiCitGUk9NIHBnX2NsYXNzIGMKK0pPSU4gcGdfc3Vic2NyaXB0 aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitKT0lOIHBn X25hbWVzcGFjZSBuIE9OIGMucmVsbmFtZXNwYWNlID0gbi5vaWQKK1dIRVJFIHMuc3VibmFtZSA9 ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsKKworLS0gY2hlY2sgaWYgdGhlIGNvbmZsaWN0IGxv ZyB0YWJsZSBoYXMgdGhlIGNvcnJlY3Qgc2NoZW1hCitTRUxFQ1QgYS5hdHRudW0sIGEuYXR0bmFt ZQorRlJPTSBwZ19hdHRyaWJ1dGUgYQorSk9JTiBwZ19jbGFzcyBjIE9OIGEuYXR0cmVsaWQgPSBj Lm9pZAorSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3Rf bG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3Qx JyBBTkQgYS5hdHRudW0gPiAwCisgICAgT1JERVIgQlkgYS5hdHRudW07CisKKy0tIENoYW5naW5n IHRoZSBzdWJzY3JpcHRpb24gb3duZXIgc2hvdWxkIGFsc28gdXBkYXRlIHRoZSBvd25lcgorLS0g b2YgdGhlIGFzc29jaWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgT1dORVIgVE8gcmVncmVzc19zdWJzY3JpcHRpb25fdXNl cjI7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikgQVMgb3du ZXIKK0ZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjCitKT0lOIHBnX2NhdGFsb2cucGdfc3Vic2Ny aXB0aW9uIHMKKyAgICAgICAgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMu b2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisKKy0tIFZl cmlmeSB0aGF0IGEgbm9uLXN1cGVydXNlciBzdWJzY3JpcHRpb24gb3duZXIgY2FuIHRydW5jYXRl LAorLS0gZGVsZXRlIGZyb20sIGFuZCBzZWxlY3QgZnJvbSB0aGUgYXNzb2NpYXRlZCBjb25mbGlj dCBsb2cgdGFibGUuCitTRVQgUk9MRSAncmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjInOworCitT RUxFQ1QgZm9ybWF0KCclSS4lSScsIG4ubnNwbmFtZSwgYy5yZWxuYW1lKSBBUyBjb25mbGljdF9s b2dfdGFibGUKK0ZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjCitKT0lOIHBnX2NhdGFsb2cucGdf bmFtZXNwYWNlIG4KKwlPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlCitKT0lOIHBnX2NhdGFsb2cu cGdfc3Vic2NyaXB0aW9uIHMKKwlPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3RfbG9nXycgfHwg cy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJworXGdzZXQK KworVFJVTkNBVEUgVEFCTEUgOmNvbmZsaWN0X2xvZ190YWJsZTsKK0RFTEVURSBGUk9NIDpjb25m bGljdF9sb2dfdGFibGU7CitTRUxFQ1QgQ09VTlQoKikgRlJPTSA6Y29uZmxpY3RfbG9nX3RhYmxl OworCitSRVNFVCBST0xFOworCistLSBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdWJzY3JpcHRpb24g b3duZXIuCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBPV05FUiBU TyByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyOworCistLQorLS0gQUxURVIgU1VCU0NSSVBUSU9O IC0gY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHN0YXRlIHRyYW5zaXRpb25zCistLQorLS0gVGhl c2UgdGVzdHMgdmVyaWZ5IHRoZSB0cmFuc2l0aW9uIGxvZ2ljIGJldHdlZW4gZGlmZmVyZW50IGxv Z2dpbmcKKy0tIGRlc3RpbmF0aW9ucywgZW5zdXJpbmcgY29uZmxpY3QgbG9nIHRhYmxlcyBhcmUg Y3JlYXRlZCBvciBkcm9wcGVkIGFzCistLSBleHBlY3RlZAorLS0KKy0tIHRyYW5zaXRpb24gZnJv bSAnbG9nJyB0byAnYWxsJworLS0gYSBuZXcgY29uZmxpY3QgbG9nIHRhYmxlIHNob3VsZCBiZSBj cmVhdGVkCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgQ09OTkVD VElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJ VEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ2xvZycpOwor QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9s b2dfZGVzdGluYXRpb24gPSAnYWxsJyk7CisKKy0tIHZlcmlmeSBtZXRhZGF0YSBhZnRlciBBTFRF UiAoZGVzdGluYXRpb24gc2hvdWxkIGJlICdhbGwnKQorU0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZs aWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA+IDAgQVMgaGFzX3JlbGlkCitGUk9NIHBn X3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDInOwor CistLSB0cmFuc2l0aW9uIGZyb20gJ2FsbCcgdG8gJ3RhYmxlJworLS0gc2hvdWxkIE5PVCBkcm9w IHRoZSB0YWJsZSwgb25seSBjaGFuZ2UgZGVzdGluYXRpb24gc3RyaW5nCitTRUxFQ1Qgc3ViY29u ZmxpY3Rsb2dyZWxpZCBBUyBvbGRfcmVsaWQgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3Vi bmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJyBcZ3NldAorQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAn dGFibGUnKTsKK1NFTEVDVCBzdWJjb25mbGljdGxvZ2Rlc3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQg PSA6b2xkX3JlbGlkIEFTIHJlbGlkX3VuY2hhbmdlZAorRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hF UkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsKKworLS0gdHJhbnNpdGlvbiBm cm9tICd0YWJsZScgdG8gJ2xvZycKKy0tIHNob3VsZCBkcm9wIHRoZSB0YWJsZSBhbmQgY2xlYXIg c3ViY29uZmxpY3Rsb2dyZWxpZAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3Rf dGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAnbG9nJyk7CitTRUxFQ1Qgc3Vi Y29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlv biBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDInOworCistLSB2ZXJpZnkg dGhlIHBoeXNpY2FsIHRhYmxlIGlzIGdvbmUKK1NFTEVDVCBjb3VudCgqKQorRlJPTSBwZ19jbGFz cyBjCitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9s b2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDIn OworCistLQorLS0gUFVCTElDQVRJT046IFZlcmlmeSBjb25mbGljdCBsb2cgdGFibGVzIGFyZSBu b3QgcHVibGlzaGFibGUKKy0tCistLSBwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSBzaG91bGQg cmV0dXJuIGZhbHNlIGZvciBjb25mbGljdCBsb2cgdGFibGVzIHRvCistLSBwcmV2ZW50IHRoZW0g ZnJvbSBiZWluZyBhY2NpZGVudGFsbHkgaW5jbHVkZWQgaW4gcHVibGljYXRpb25zCistLQorU0VM RUNUIG4ubnNwbmFtZSwgcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoYy5vaWQpCitGUk9NIHBn X2NsYXNzIGMKK0pPSU4gcGdfbmFtZXNwYWNlIG4gT04gYy5yZWxuYW1lc3BhY2UgPSBuLm9pZAor Sk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBzLnN1YmNvbmZsaWN0bG9ncmVsaWQgPSBjLm9pZAor V0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnOworCistLQorLS0gVGFi bGUgUHJvdGVjdGlvbiBhbmQgTGlmZWN5Y2xlIE1hbmFnZW1lbnQKKy0tCistLSBUaGVzZSB0ZXN0 cyB2ZXJpZnkgdGhhdDoKKy0tIE1hbnVhbCBEUk9QIFRBQkxFIGlzIGRpc2FsbG93ZWQKKy0tIERS T1AgU1VCU0NSSVBUSU9OIGF1dG9tYXRpY2FsbHkgcmVhcHMgdGhlIHRhYmxlCistLQorLS0gcmUt ZW5hYmxlIHRhYmxlIGxvZ2dpbmcgZm9yIHZlcmlmaWNhdGlvbgorQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAn dGFibGUnKTsKKworLS0gVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBuYW1lIGNvbnRhaW5zIHRoZSBz dWJzY3JpcHRpb24gT0lELCB3aGljaCBpcworLS0gbm9uLWRldGVybWluaXN0aWMuICBDYXB0dXJl IGl0IGludG8gYSBwc3FsIHZhcmlhYmxlIGFuZCByZXBvcnQgb25seSB0aGUKKy0tIFNRTFNUQVRF LCBzbyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgT0lELgorCist LSBmYWlsIC0gZHJvcCB0YWJsZSBub3QgYWxsb3dlZCBkdWUgdG8gaW50ZXJuYWwgZGVwZW5kZW5j eQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBOT1RJQ0U7CitTRUxFQ1QgJ3BnX2NvbmZsaWN0 LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBBUyBjbHQxCisgICAgRlJPTSBwZ19zdWJzY3JpcHRp b24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJyBcZ3NldAorXHNldCBW RVJCT1NJVFkgc3Fsc3RhdGUKK0RST1AgVEFCTEUgOmNsdDE7Citcc2V0IFZFUkJPU0lUWSBkZWZh dWx0CisKKy0tIENMRUFOVVA6IERST1AgU1VCU0NSSVBUSU9OIHJlYXBzIHRoZSB0YWJsZQorQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgRElTQUJMRTsKK0FMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7 CisKKy0tIFZlcmlmeSB0aGUgdGFibGUgT0lEIGZvciByZWFwIGNoZWNrCitTRUxFQ1QgJ3BnX2Nv bmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBBUyBpbnRlcm5hbF90YWJsZW5hbWUgRlJP TSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3Qx JyBcZ3NldAorCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CitEUk9QIFNVQlND UklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxOworCistLSBzaG91bGQgcmV0dXJuIE5VTEws IG1lYW5pbmcgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSB3YXMgcmVhcGVkIHZpYSBkZXBlbmRlbmN5 CitTRUxFQ1QgdG9fcmVnY2xhc3MoOidpbnRlcm5hbF90YWJsZW5hbWUnKTsKKworLS0KKy0tIEFk ZGl0aW9uYWwgTmFtZXNwYWNlIGFuZCBUYWJsZSBQcm90ZWN0aW9uIFRlc3RzCistLQorCistLSBT ZXR1cDogRW5zdXJlIHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gd2l0aCBhIGNvbmZsaWN0IGxvZyB0 YWJsZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVz dCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnCisgICAgUFVCTElDQVRJ T04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv biA9ICd0YWJsZScpOworCistLSBUaGUgY29uZmxpY3QgbG9nIHRhYmxlIGlzIHN5c3RlbS1tYW5h Z2VkOyBpdHMgbmFtZSBjb250YWlucyB0aGUKKy0tIHN1YnNjcmlwdGlvbiBPSUQsIHdoaWNoIGlz IG5vbi1kZXRlcm1pbmlzdGljLiAgQ2FwdHVyZSB0aGUgbmFtZSBpbnRvIGEgcHNxbAorLS0gdmFy aWFibGUgYW5kIHJlcG9ydCBvbmx5IHRoZSBTUUxTVEFURSBmb3IgdGhlIG9wZXJhdGlvbnMgdGhh dCBtdXN0IGJlCistLSByZWplY3RlZCwgc28gdGhlIGV4cGVjdGVkIG91dHB1dCBzdGF5cyBmcmVl IG9mIHRoZSBkeW5hbWljIE9JRC4gIEV2ZXJ5CistLSBzdGF0ZW1lbnQgaW4gdGhlIFZFUkJPU0lU WS1zcWxzdGF0ZSBibG9jayBiZWxvdyBtdXN0IGZhaWwgd2l0aCA0MjgwOQorLS0gKHdyb25nX29i amVjdF90eXBlKSwgZXhjZXB0IGFkZGluZyB0aGUgdGFibGUgdG8gYSBwdWJsaWNhdGlvbiwgd2hp Y2ggZmFpbHMKKy0tIHdpdGggMjIwMjMgKGludmFsaWRfcGFyYW1ldGVyX3ZhbHVlKS4KK1NFTEVD VCAncGdfY29uZmxpY3QuJyB8fCByZWxuYW1lIEFTIGNsdAorICAgIEZST00gcGdfY2xhc3MgYyBK T0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8 fCBzLm9pZAorICAgIFdIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rp b25fdGVzdCcgXGdzZXQKKworLS0gVHJpZ2dlciBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBDUkVBVEUg VFJJR0dFUiBjaGVjayBiZWxvdy4KK0NSRUFURSBGVU5DVElPTiBwdWJsaWMuZHVtbXlfdHJpZ2dl cl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBORVc7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitcc2V0IFZFUkJPU0lUWSBzcWxzdGF0ZQorQUxU RVIgVEFCTEUgOmNsdCBBREQgQ09MVU1OIGV4dHJhX2luZm8gdGV4dDsKK0lOU0VSVCBJTlRPIDpj bHQgKHJlbG5hbWUpIFZBTFVFUyAoJ215dGVzdCcpOworVVBEQVRFIDpjbHQgU0VUIHJlbG5hbWUg PSAnbXl0ZXN0JzsKK0NSRUFURSBQT0xJQ1kgcDEgT04gOmNsdCBVU0lORyAodHJ1ZSk7CitDUkVB VEUgU1RBVElTVElDUyBzMSBPTiByZWxuYW1lLCBzY2hlbWFuYW1lIEZST00gOmNsdDsKK0NSRUFU RSBUQUJMRSBwdWJsaWMuY29uZmxpY3RfY2hpbGQgKCkgSU5IRVJJVFMgKDpjbHQpOworQUxURVIg VEFCTEUgOmNsdCBSRU5BTUUgQ09MVU1OIHJlbG5hbWUgVE8gbmV3X3JlbG5hbWU7CitDUkVBVEUg VEFCTEUgcHVibGljLmNvbmZsaWN0X2ZrIChyZWxuYW1lIHRleHQgUkVGRVJFTkNFUyA6Y2x0KHJl bG5hbWUpKTsKK0FMVEVSIFRBQkxFIDpjbHQgT1dORVIgVE8gcmVncmVzc19zdWJzY3JpcHRpb25f dXNlcl9kdW1teTsKK0FMVEVSIFRBQkxFIDpjbHQgU0VUIFNDSEVNQSBwdWJsaWM7CitDUkVBVEUg VFJJR0dFUiB0MSBCRUZPUkUgSU5TRVJUIE9OIDpjbHQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVO Q1RJT04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygpOworQUxURVIgVFJJR0dFUiBub25fZXhp c3RlbnRfdHJpZ2dlciBPTiA6Y2x0IFJFTkFNRSBUTyBuZXdfdHJpZ2dlcjsKK0NSRUFURSBSVUxF IHIxIEFTIE9OIElOU0VSVCBUTyA6Y2x0IERPIElOU1RFQUQgTk9USElORzsKK0FMVEVSIFJVTEUg bm9uX2V4aXN0ZW50X3J1bGUgT04gOmNsdCBSRU5BTUUgVE8gbmV3X3J1bGU7CitDUkVBVEUgSU5E RVggaWR4MSBPTiA6Y2x0IChyZWxuYW1lKTsKK1NFTEVDVCAxIEZST00gOmNsdCBGT1IgVVBEQVRF OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yX2NsdCBGT1IgVEFCTEUgOmNsdDsKK1xz ZXQgVkVSQk9TSVRZIGRlZmF1bHQKKworLS0gQ2xlYW4gdXAgdGhlIHRyaWdnZXIgZnVuY3Rpb24g dXNlZCBhYm92ZS4KK0RST1AgRlVOQ1RJT04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygpOwor CistLSBUUlVOQ0FURSBhbmQgREVMRVRFIGFyZSBhbGxvd2VkIHNvIHRoYXQgdXNlcnMgY2FuIHBy dW5lIHRoZSBjb25mbGljdCBsb2cuCitUUlVOQ0FURSA6Y2x0OworREVMRVRFIEZST00gOmNsdDsK KworLS0gQ3JlYXRpbmcgYSB0YWJsZSBkaXJlY3RseSBpbiB0aGUgcGdfY29uZmxpY3QgbmFtZXNw YWNlIGlzIHJlamVjdGVkIGZvcgorLS0gZXZlcnlvbmUgKHRoZSBzY2hlbWEgaXMgcmVzZXJ2ZWQg Zm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMpLgorQ1JFQVRFIFRBQkxFIHBnX2NvbmZsaWN0Lm1hbnVh bF90YWJsZSAoaWQgaW50KTsKKworLS0gTW92aW5nIGEgdXNlciB0YWJsZSBpbnRvIHRoZSBwZ19j b25mbGljdCBuYW1lc3BhY2UgaXMgbGlrZXdpc2UgcmVqZWN0ZWQuCitDUkVBVEUgVEFCTEUgcHVi bGljLnRlc3RfbW92ZSAoaWQgaW50KTsKK0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0X21vdmUgU0VU IFNDSEVNQSBwZ19jb25mbGljdDsKK0RST1AgVEFCTEUgcHVibGljLnRlc3RfbW92ZTsKKworCitT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CisKKy0tIENsZWFuIHVwIHJlbWFpbmlu ZyB0ZXN0IHN1YnNjcmlwdGlvbgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3Rf bG9nX2RlZmF1bHQgRElTQUJMRTsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0 X2xvZ19kZWZhdWx0IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CitEUk9QIFNVQlNDUklQVElPTiBy ZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0OworCisKK0FMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX2NvbmZsaWN0X3Rlc3QyIERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19j b25mbGljdF90ZXN0MiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJUFRJT04g cmVncmVzc19jb25mbGljdF90ZXN0MjsKKworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29u ZmxpY3RfcHJvdGVjdGlvbl90ZXN0IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c19jb25mbGljdF9wcm90ZWN0aW9uX3Rlc3QgU0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1Ag U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0OworCiBSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl cjsKIERST1AgUk9MRSByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyMjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGljdHMucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzVfY29uZmxpY3RzLnBsCmluZGV4IGYyM2ZlNmFmMmE1Li4zOTEwYTQ5YzBhYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsCkBAIC01MCw3ICs1MCw3 IEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLAogCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHN1Yl90YWIKIAkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFw cGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCi0JIFBVQkxJQ0FUSU9OIHB1Yl90YWI7Iik7CisJIFBV QkxJQ0FUSU9OIHB1Yl90YWIgV0lUSCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPWFsbCkiKTsK IAogIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRhcHBuYW1l KTsKQEAgLTY3MCw0ICs2NzAsNjkgQEAgb2soICRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCiAJ KSwKIAkidGhlIHNsb3QgJ3BnX2NvbmZsaWN0X2RldGVjdGlvbicgaGFzIGJlZW4gZHJvcHBlZCBv biBOb2RlIEEiKTsKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBBIGNvbmZsaWN0IGxvZyB0 YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZCBhbmQgY2Fubm90IGJlIGFsdGVyZWQgZGlyZWN0bHksIHNv CisjIG1vdmluZyBpdCB0byBhbm90aGVyIHRhYmxlc3BhY2UgbXVzdCBiZSByZWplY3RlZC4KKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRzdWJpZCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgb2lkIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJF IHN1Ym5hbWUgPSAnc3ViX3RhYic7Iik7CitteSAkY2x0ID0gInBnX2NvbmZsaWN0LnBnX2NvbmZs aWN0X2xvZ18kc3ViaWQiOworCisodW5kZWYsIHVuZGVmLCAkc3RkZXJyKSA9ICRub2RlX3N1YnNj cmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgJGNsdCBTRVQgVEFCTEVTUEFD RSBwZ19kZWZhdWx0Iik7CitsaWtlKAorCSRzdGRlcnIsCisJcXIvY2Fubm90IGFsdGVyIGNvbmZs aWN0IGxvZyB0YWJsZSAicGdfY29uZmxpY3RfbG9nX1xkKyIvLAorCSJtb3ZpbmcgYSBjb25mbGlj dCBsb2cgdGFibGUgd2l0aCBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBpcyByZWplY3RlZCIp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQ QUNFIG11c3Qgc2tpcCBjb25mbGljdCBsb2cgdGFibGVzLCB0aGUgc2FtZSB3YXkgaXQKKyMgc2tp cHMgY2F0YWxvZyBhbmQgVE9BU1QgdGFibGVzLCBpbnN0ZWFkIG9mIGZhaWxpbmcuICBVc2UgYW4g aXNvbGF0ZWQgZGF0YWJhc2UKKyMgc28gdGhlIGJ1bGsgbW92ZSBvbmx5IHRvdWNoZXMgdGhlIG9i amVjdHMgY3JlYXRlZCBoZXJlLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgREFUQUJBU0UgY2x0X3RzX3Rlc3Qi KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgnY2x0X3RzX3Rlc3QnLAorCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHN1Yl90c190ZXN0CisJICAgICBDT05ORUNUSU9OICdkYm5hbWU9bm9uZXhp c3RlbnQnCisJICAgICBQVUJMSUNBVElPTiBwdWIKKwkgICAgIFdJVEggKGNvbm5lY3Q9ZmFsc2Us IGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbj0ndGFibGUnKSIpOworCisjIEEgcGxhaW4gdXNlciB0 YWJsZSB0aGF0IHNob3VsZCBiZSBtb3ZlZCwgYWxvbmdzaWRlIHRoZSBDTFQgdGhhdCBtdXN0IG5v dCBiZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgnY2x0X3RzX3Rlc3QnLCAiQ1JFQVRF IFRBQkxFIHVzZXJfdGJsIChpIGludCkiKTsKKworIyBDcmVhdGUgYSB0YWJsZXNwYWNlIGJhY2tl ZCBieSBhIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGRhdGEgZGlyLgorbXkgJHRzX2RpciA9ICRub2Rl X3N1YnNjcmliZXItPmRhdGFfZGlyIC4gJy9iYWNrdXBfc3BhY2UnOworbWtkaXIoJHRzX2RpcikK KyAgb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHRhYmxlc3BhY2UgZGlyZWN0b3J5ICR0c19kaXI6 ICQhIjsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEVTUEFDRSBiYWNrdXBfc3BhY2UgTE9DQVRJT04gJyR0c19kaXInIik7CisKKyMgVGhlIGJ1 bGsgbW92ZSBzdWNjZWVkczogdGhlIHVzZXIgdGFibGUgaXMgcmVsb2NhdGVkIHdoaWxlIHRoZSBD TFQgaXMgc2tpcHBlZC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgnY2x0X3RzX3Rlc3Qn LAorCSJBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSBwZ19kZWZhdWx0IFNFVCBUQUJMRVNQ QUNFIGJhY2t1cF9zcGFjZSIpOworCitpcyggJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CQknY2x0X3RzX3Rlc3QnLAorCQkiU0VMRUNUIHJlbHRhYmxlc3BhY2UgPD4gMCBGUk9NIHBnX2Ns YXNzIFdIRVJFIHJlbG5hbWUgPSAndXNlcl90YmwnIiksCisJJ3QnLAorCSJBTFRFUiBUQUJMRSBB TEwgSU4gVEFCTEVTUEFDRSBtb3ZlcyBhbiBvcmRpbmFyeSB1c2VyIHRhYmxlIik7CisKK2lzKCAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJCSdjbHRfdHNfdGVzdCcsCisJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfc3Vic2NyaXB0aW9uIHMKKwkJICAgT04g Yy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCisJCSBXSEVSRSBzLnN1Ym5h bWUgPSAnc3ViX3RzX3Rlc3QnIEFORCBjLnJlbHRhYmxlc3BhY2UgPD4gMCIpLAorCScwJywKKwki QUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0Ugc2tpcHMgdGhlIGNvbmZsaWN0IGxvZyB0YWJs ZSIpOworCisjIENsZWFudXAuICBUaGUgc3Vic2NyaXB0aW9uIGhhcyBubyByZWFsIHB1Ymxpc2hl ciBjb25uZWN0aW9uLCBzbyBkZXRhY2ggaXRzCisjIHNsb3QgYmVmb3JlIGRyb3BwaW5nIGl0Lgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdjbHRfdHNfdGVzdCcsCisJIkFMVEVSIFNVQlND UklQVElPTiBzdWJfdHNfdGVzdCBESVNBQkxFIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ2NsdF90c190ZXN0JywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHN1Yl90c190ZXN0IFNFVCAo c2xvdF9uYW1lID0gTk9ORSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgnY2x0X3Rz X3Rlc3QnLCAiRFJPUCBTVUJTQ1JJUFRJT04gc3ViX3RzX3Rlc3QiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBEQVRBQkFTRSBjbHRfdHNfdGVzdCIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFU1BBQ0Ug YmFja3VwX3NwYWNlIik7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCAzYTI3MjBmYjVmOS4uM2Q2ZDFjMTYxMzIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC01MTUsNiArNTE1LDggQEAgQ29uZGl0aW9uYWxTdGFjawogQ29uZGl0aW9uYWxTdGFj a0RhdGEKIENvbmZpZ0RhdGEKIENvbmZpZ1ZhcmlhYmxlCitDb25mbGljdExvZ0NvbHVtbkRlZgor Q29uZmxpY3RMb2dEZXN0CiBDb25mbGljdFR1cGxlSW5mbwogQ29uZmxpY3RUeXBlCiBDb25uQ2Fj aGVFbnRyeQotLSAKMi4zNC4xCgo= --000000000000d680e0065587e39a--