Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pEzQE-0002Ps-2V for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Jan 2023 21:11:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pEzQC-0003CP-5f for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Jan 2023 21:11:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pEzQB-0003Bo-Ib for pgsql-hackers@lists.postgresql.org; Mon, 09 Jan 2023 21:11:07 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pEzQ5-0006Em-UN for pgsql-hackers@postgresql.org; Mon, 09 Jan 2023 21:11:07 +0000 Received: by mail-pf1-x434.google.com with SMTP id k19so7162609pfg.11 for ; Mon, 09 Jan 2023 13:11:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=feK/zUBq9xVSKLd2E6XuxNtNZMHMbLwmp+Cu/3HFVrI=; b=pH/QhtCMTD7lStuSRuuLeGVDo4ZAjKIiShpQSR6Hfztwyi+lxGFuxDwwoO/V016fvy Mjd4ea+xo9+C6aeZjkCzhSrfM0iDZAgk5GFAUrDnJShoED1V0fvpMldS1jKQvAZ72JvX iztFxc0eSh+P/zEe0CuBQGNKqKtA3V/jfOHTuGl6dcrou4GGzESTfE+Asy7eVGHf3R1W 07VIhJOXzcepEmK3V07pgQM5amfiKOdAr6R7m6X0dlpwXbwPi8cJlf5Wcg+nt/Qyboq8 +Qk6QOhz/920xiaF/olM/yLXPkPXaE5Cr/yCNurMXyOnCYyhakaZDhU7XOj66Grtdx3g ouLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=feK/zUBq9xVSKLd2E6XuxNtNZMHMbLwmp+Cu/3HFVrI=; b=voBxIiNql/0NDblgUb06zOI0C1afFkT7tmXq5sz/G/ALJ2L/ZJymGUTjSNXDVH3OZi SromITTtjq3e0jc01Hs6Ldky1IF1lLs7mxnr0Ob2RQ3OA+ldyzpytLyEEHN0up0yL9Ti BVUkzzMfXbst6CNgO07Iqyrhh9xeHbP4ll8D/9cPkF8bluOc3hjmaHmOhkt39N3/ha6w byLxhS0LVKIvndpTECfaUiDEKq2m21Q+w26r69H1VSy/rvbWlvkgufod63rEFPh56iga Kc3hIknsaL6pOJA2+67ZCR9fnnQhInlZ8p9B6VX2V8aT/6GlgN8urbcpTwUD4FPKiJM7 gZlw== X-Gm-Message-State: AFqh2kqrkj9DsFoRrKJjE6eJo9/SuPBWhMLAHk46D1gTu5JEk9j3aGVi e8Q8Vnvy3tM2Kvk3gPgucGu9hjVd52Z6j9X1K1E= X-Google-Smtp-Source: AMrXdXvzeFKzuACjfFYQXRGKPEZgOVtNPh5XFnqJ+mdzL5CSPgR/SqMdBg34T6R+nB6Dp5zZRC3lqM826rOzyT09XMM= X-Received: by 2002:a63:4b10:0:b0:49b:2004:b42 with SMTP id y16-20020a634b10000000b0049b20040b42mr2177213pga.170.1673298659376; Mon, 09 Jan 2023 13:10:59 -0800 (PST) MIME-Version: 1.0 References: <20220712171810.7f2ppc45torgaavu@awork3.anarazel.de> <20220720165050.ophdqnun32idffq6@alap3.anarazel.de> <20220825191527.ki6wggnawlrl53i6@awork3.anarazel.de> <20221228235613.ep47flalmnkqgnu7@awork3.anarazel.de> In-Reply-To: From: Melanie Plageman Date: Mon, 9 Jan 2023 16:10:47 -0500 Message-ID: Subject: Re: pg_stat_bgwriter.buffers_backend is pretty meaningless (and more?) To: Andres Freund Cc: Lukas Fittl , Justin Pryzby , Alvaro Herrera , Kyotaro Horiguchi , Magnus Hagander , Pg Hackers , Thomas Munro , Maciek Sakrejda Content-Type: multipart/mixed; boundary="00000000000032a58605f1db346f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000032a58605f1db346f Content-Type: text/plain; charset="UTF-8" Attached is v45 of the patchset. I've done some additional code cleanup and changes. The most significant change, however, is the docs. I've separated the docs into its own patch for ease of review. The docs patch here was edited and co-authored by Samay Sharma. I'm not sure if the order of pg_stat_io in the docs is correct. The significant changes are removal of all "correspondence" or "equivalence"-related sections (those explaining how other IO stats were the same or different from pg_stat_io columns). I've tried to remove references to "strategies" and "Buffer Access Strategy" as much as possible. I've moved the advice and interpretation section to the bottom -- outside of the table of definitions. Since this page is primarily a reference page, I agree with Samay that incorporating interpretation into the column definitions adds clutter and confusion. I think the best course would be to have an "Interpreting Statistics" section. I suggest a structure like the following for this section: - Statistics Collection Configuration - Viewing Statistics - Statistics Views Reference - Statistics Functions Reference - Interpreting Statistics As an aside, this section of the docs has some other structural issues as well. For example, I'm not sure it makes sense to have the dynamic statistics views as sub-sections under 28.2, which is titled "The Cumulative Statistics System." In fact the docs say this under Section 28.2 https://www.postgresql.org/docs/current/monitoring-stats.html "PostgreSQL also supports reporting dynamic information about exactly what is going on in the system right now, such as the exact command currently being executed by other server processes, and which other connections exist in the system. This facility is independent of the cumulative statistics system." So, it is a bit weird that they are defined under the section titled "The Cumulative Statistics System". In this version of the patchset, I have not attempted a new structure but instead moved the advice/interpretation for pg_stat_io to below the table containing the column definitions. - Melanie --00000000000032a58605f1db346f Content-Type: text/x-patch; charset="US-ASCII"; name="v45-0002-pgstat-Infrastructure-to-track-IO-operations.patch" Content-Disposition: attachment; filename="v45-0002-pgstat-Infrastructure-to-track-IO-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lcpaqb271 RnJvbSBlODc4MzFhMGZmZTk0YWY1NGI5MTI4NTYzMGRkNmYxYzQ5N2MzNjhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRh dGU6IFdlZCwgNCBKYW4gMjAyMyAxNzoyMDo0MSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1IDIv NV0gcGdzdGF0OiBJbmZyYXN0cnVjdHVyZSB0byB0cmFjayBJTyBvcGVyYXRpb25zCgpJbnRyb2R1 Y2UgIklPT3AiLCBhbiBJTyBvcGVyYXRpb24gZG9uZSBieSBhIGJhY2tlbmQsICJJT09iamVjdCIs IHRoZQp0YXJnZXQgb2JqZWN0IG9mIHRoZSBJTywgYW5kICJJT0NvbnRleHQiLCB0aGUgY29udGV4 dCBvciBsb2NhdGlvbiBvZiB0aGUKSU8gb3BlcmF0aW9ucyBvbiB0aGF0IG9iamVjdC4gRm9yIGV4 YW1wbGUsIHRoZSBjaGVja3BvaW50ZXIgbWF5IHdyaXRlIGEKc2hhcmVkIGJ1ZmZlciBvdXQuIFRo aXMgd291bGQgYmUgY29uc2lkZXJlZCBhbiBJT09wICJ3cml0dGVuIiBvbiBhbgpJT09iamVjdCBJ T09CSkVDVF9SRUxBVElPTiBpbiBJT0NvbnRleHQgSU9DT05URVhUX05PUk1BTCBieSBCYWNrZW5k VHlwZQoiY2hlY2twb2ludGVyIi4KCkVhY2ggSU9PcCAoZXZpY3QsIGV4dGVuZCwgZnN5bmMsIHJl YWQsIHJldXNlLCBhbmQgd3JpdGUpIGNhbiBiZSBjb3VudGVkCnBlciBJT09iamVjdCAocmVsYXRp b24sIHRlbXAgcmVsYXRpb24pIHBlciBJT0NvbnRleHQgKG5vcm1hbCwgYnVsa3JlYWQsCmJ1bGt3 cml0ZSwgb3IgdmFjdXVtKSB0aHJvdWdoIGEgY2FsbCB0byBwZ3N0YXRfY291bnRfaW9fb3AoKS4K Ck5vdGUgdGhhdCB0aGlzIGNvbW1pdCBpbnRyb2R1Y2VzIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBj b3VudCBJTwpPcGVyYXRpb24gc3RhdGlzdGljcy4gQSBzdWJzZXF1ZW50IGNvbW1pdCB3aWxsIGFk ZCBjYWxscyB0bwpwZ3N0YXRfY291bnRfaW9fb3AoKSBpbiB0aGUgYXBwcm9wcmlhdGUgbG9jYXRp b25zLgoKSU9Db250ZXh0IElPQ09OVEVYVF9OT1JNQUwgY29uY2VybnMgb3BlcmF0aW9ucyBvbiBs b2NhbCBhbmQgc2hhcmVkCmJ1ZmZlcnMsIHdoaWxlIElPQ09OVEVYVF9CVUxLUkVBRCwgSU9DT05U RVhUX0JVTEtXUklURSwgYW5kCklPQ09OVEVYVF9WQUNVVU0gSU9Db250ZXh0cyBjb25jZXJuIElP IG9wZXJhdGlvbnMgb24gYnVmZmVycyBhcyBwYXJ0IG9mCmEgQnVmZmVyQWNjZXNzU3RyYXRlZ3ku CgpJT09iamVjdCBJT09CSkVDVF9URU1QX1JFTEFUSU9OIGNvbmNlcm5zIElPIE9wZXJhdGlvbnMg b24gYnVmZmVycwpjb250YWluaW5nIHRlbXBvcmFyeSB0YWJsZSBkYXRhLCB3aGlsZSBJT09iamVj dCBJT09CSkVDVF9SRUxBVElPTgpjb25jZXJucyBJTyBPcGVyYXRpb25zIG9uIGJ1ZmZlcnMgY29u dGFpbmluZyBwZXJtYW5lbnQgcmVsYXRpb24gZGF0YS4KClN0YXRzIG9uIElPT3BzIG9uIGFsbCBJ T09iamVjdHMgaW4gYWxsIElPQ29udGV4dHMgZm9yIGEgZ2l2ZW4gYmFja2VuZAphcmUgZmlyc3Qg Y291bnRlZCBpbiBhIGJhY2tlbmQncyBsb2NhbCBtZW1vcnkgYW5kIHRoZW4gZmx1c2hlZCB0byBz aGFyZWQKbWVtb3J5IGFuZCBhY2N1bXVsYXRlZCB3aXRoIHRob3NlIGZyb20gYWxsIG90aGVyIGJh Y2tlbmRzLCBleGl0ZWQgYW5kCmxpdmUuCgpTb21lIEJhY2tlbmRUeXBlcyB3aWxsIG5vdCBmbHVz aCB0aGVpciBwZW5kaW5nIHN0YXRpc3RpY3MgYXQgcmVndWxhcgppbnRlcnZhbHMgYW5kIGV4cGxp Y2l0bHkgY2FsbCBwZ3N0YXRfZmx1c2hfaW9fb3BzKCkgZHVyaW5nIHRoZSBjb3Vyc2Ugb2YKbm9y bWFsIG9wZXJhdGlvbnMgdG8gZmx1c2ggdGhlaXIgYmFja2VuZC1sb2NhbCBJTyBvcGVyYXRpb24g c3RhdGlzdGljcwp0byBzaGFyZWQgbWVtb3J5IGluIGEgdGltZWx5IG1hbm5lci4KCkJlY2F1c2Ug bm90IGFsbCBCYWNrZW5kVHlwZSwgSU9PcCwgSU9PYmplY3QsIElPQ29udGV4dCBjb21iaW5hdGlv bnMgYXJlCnZhbGlkLCB0aGUgdmFsaWRpdHkgb2YgdGhlIHN0YXRzIGlzIGNoZWNrZWQgYmVmb3Jl IGZsdXNoaW5nIHBlbmRpbmcKc3RhdHMgYW5kIGJlZm9yZSByZWFkaW5nIGluIHRoZSBleGlzdGlu ZyBzdGF0cyBmaWxlIHRvIHNoYXJlZCBtZW1vcnkuCgpUaGUgYWdncmVnYXRlZCBzdGF0cyBpbiBz aGFyZWQgbWVtb3J5IGNvdWxkIGJlIGV4dGVuZGVkIGluIHRoZSBmdXR1cmUKd2l0aCBwZXItYmFj a2VuZCBzdGF0cyAtLSB1c2VmdWwgZm9yIHBlciBjb25uZWN0aW9uIElPIHN0YXRpc3RpY3MgYW5k Cm1vbml0b3JpbmcuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ ClJldmlld2VkLWJ5OiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4KUmV2aWV3 ZWQtYnk6IEt5b3Rhcm8gSG9yaWd1Y2hpIDxob3Jpa3lvdGEubnR0QGdtYWlsLmNvbT4KRGlzY3Vz c2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzIwMjAwMTI0 MTk1MjI2Lmx0aDUyaXlkcTJuMnVpbHElNDBhbGFwMy5hbmFyYXplbC5kZQotLS0KIGRvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3Bnc3RhdC5jICAgICAgICAgICB8ICAyNiArKwogc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2Jnd3JpdGVyLmMgIHwgICA3ICstCiAuLi4vdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2NoZWNrcG9pbnRlci5jICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9pby5jICAgICAgICB8IDQwMCArKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jICB8ICAxNSArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF93YWwuYyAgICAgICB8ICAgNCArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5j bHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1 ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDY3ICsrKwogc3JjL2luY2x1 ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmggICAgICAgICAgIHwgIDMyICsrCiBzcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDYgKwogMTUgZmlsZXMgY2hh bmdlZCwgNTcyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bAppbmRleCBjZjIyMGMzYmNiLi4xNjkxMjQ2ZTc2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTU0 MDgsNiArNTQwOCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgIHRoZSA8c3Ry dWN0bmFtZT5wZ19zdGF0X2Jnd3JpdGVyPC9zdHJ1Y3RuYW1lPgogICAgICAgICB2aWV3LCA8bGl0 ZXJhbD5hcmNoaXZlcjwvbGl0ZXJhbD4gdG8gcmVzZXQgYWxsIHRoZSBjb3VudGVycyBzaG93biBp bgogICAgICAgICB0aGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9hcmNoaXZlcjwvc3RydWN0bmFtZT4g dmlldywKKyAgICAgICAgPGxpdGVyYWw+aW88L2xpdGVyYWw+IHRvIHJlc2V0IGFsbCB0aGUgY291 bnRlcnMgc2hvd24gaW4gdGhlCisgICAgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVj dG5hbWU+IHZpZXcsCiAgICAgICAgIDxsaXRlcmFsPndhbDwvbGl0ZXJhbD4gdG8gcmVzZXQgYWxs IHRoZSBjb3VudGVycyBzaG93biBpbiB0aGUKICAgICAgICAgPHN0cnVjdG5hbWU+cGdfc3RhdF93 YWw8L3N0cnVjdG5hbWU+IHZpZXcgb3IKICAgICAgICAgPGxpdGVyYWw+cmVjb3ZlcnlfcHJlZmV0 Y2g8L2xpdGVyYWw+IHRvIHJlc2V0IGFsbCB0aGUgY291bnRlcnMgc2hvd24KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvTWFrZWZpbGUKaW5kZXggYTgwZWRhM2NmNC4uN2Q3NDgyZGRlMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKQEAgLTIyLDYgKzIyLDcgQEAgT0JKUyA9IFwKIAlwZ3N0 YXRfY2hlY2twb2ludGVyLm8gXAogCXBnc3RhdF9kYXRhYmFzZS5vIFwKIAlwZ3N0YXRfZnVuY3Rp b24ubyBcCisJcGdzdGF0X2lvLm8gXAogCXBnc3RhdF9yZWxhdGlvbi5vIFwKIAlwZ3N0YXRfcmVw bHNsb3QubyBcCiAJcGdzdGF0X3NobWVtLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNv bi5idWlsZAppbmRleCBhMmI4NzJjMjRiLi41MThlZTNmNzk4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9tZXNvbi5idWlsZApAQCAtOSw2ICs5LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZp bGVzKAogICAncGdzdGF0X2NoZWNrcG9pbnRlci5jJywKICAgJ3Bnc3RhdF9kYXRhYmFzZS5jJywK ICAgJ3Bnc3RhdF9mdW5jdGlvbi5jJywKKyAgJ3Bnc3RhdF9pby5jJywKICAgJ3Bnc3RhdF9yZWxh dGlvbi5jJywKICAgJ3Bnc3RhdF9yZXBsc2xvdC5jJywKICAgJ3Bnc3RhdF9zaG1lbS5jJywKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKaW5kZXggMGZhNTM3MGJjZC4uNjA4YzNiNTlkYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKQEAgLTcyLDYgKzcyLDcgQEAKICAqIC0g cGdzdGF0X2NoZWNrcG9pbnRlci5jCiAgKiAtIHBnc3RhdF9kYXRhYmFzZS5jCiAgKiAtIHBnc3Rh dF9mdW5jdGlvbi5jCisgKiAtIHBnc3RhdF9pby5jCiAgKiAtIHBnc3RhdF9yZWxhdGlvbi5jCiAg KiAtIHBnc3RhdF9yZXBsc2xvdC5jCiAgKiAtIHBnc3RhdF9zbHJ1LmMKQEAgLTM1OSw2ICszNjAs MTUgQEAgc3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBwZ3N0YXRfa2luZF9pbmZvc1tQR1NU QVRfTlVNX0tJTkRTXSA9IHsKIAkJLnNuYXBzaG90X2NiID0gcGdzdGF0X2NoZWNrcG9pbnRlcl9z bmFwc2hvdF9jYiwKIAl9LAogCisJW1BHU1RBVF9LSU5EX0lPXSA9IHsKKwkJLm5hbWUgPSAiaW9f b3BzIiwKKworCQkuZml4ZWRfYW1vdW50ID0gdHJ1ZSwKKworCQkucmVzZXRfYWxsX2NiID0gcGdz dGF0X2lvX3Jlc2V0X2FsbF9jYiwKKwkJLnNuYXBzaG90X2NiID0gcGdzdGF0X2lvX3NuYXBzaG90 X2NiLAorCX0sCisKIAlbUEdTVEFUX0tJTkRfU0xSVV0gPSB7CiAJCS5uYW1lID0gInNscnUiLAog CkBAIC01ODIsNiArNTkyLDcgQEAgcGdzdGF0X3JlcG9ydF9zdGF0KGJvb2wgZm9yY2UpCiAKIAkv KiBEb24ndCBleHBlbmQgYSBjbG9jayBjaGVjayBpZiBub3RoaW5nIHRvIGRvICovCiAJaWYgKGRs aXN0X2lzX2VtcHR5KCZwZ1N0YXRQZW5kaW5nKSAmJgorCQkhaGF2ZV9pb3N0YXRzICYmCiAJCSFo YXZlX3NscnVzdGF0cyAmJgogCQkhcGdzdGF0X2hhdmVfcGVuZGluZ193YWwoKSkKIAl7CkBAIC02 MjgsNiArNjM5LDkgQEAgcGdzdGF0X3JlcG9ydF9zdGF0KGJvb2wgZm9yY2UpCiAJLyogZmx1c2gg ZGF0YWJhc2UgLyByZWxhdGlvbiAvIGZ1bmN0aW9uIC8gLi4uIHN0YXRzICovCiAJcGFydGlhbF9m bHVzaCB8PSBwZ3N0YXRfZmx1c2hfcGVuZGluZ19lbnRyaWVzKG5vd2FpdCk7CiAKKwkvKiBmbHVz aCBJTyBzdGF0cyAqLworCXBhcnRpYWxfZmx1c2ggfD0gcGdzdGF0X2ZsdXNoX2lvKG5vd2FpdCk7 CisKIAkvKiBmbHVzaCB3YWwgc3RhdHMgKi8KIAlwYXJ0aWFsX2ZsdXNoIHw9IHBnc3RhdF9mbHVz aF93YWwobm93YWl0KTsKIApAQCAtMTMyMiw2ICsxMzM2LDEyIEBAIHBnc3RhdF93cml0ZV9zdGF0 c2ZpbGUodm9pZCkKIAlwZ3N0YXRfYnVpbGRfc25hcHNob3RfZml4ZWQoUEdTVEFUX0tJTkRfQ0hF Q0tQT0lOVEVSKTsKIAl3cml0ZV9jaHVua19zKGZwb3V0LCAmcGdTdGF0TG9jYWwuc25hcHNob3Qu Y2hlY2twb2ludGVyKTsKIAorCS8qCisJICogV3JpdGUgSU8gc3RhdHMgc3RydWN0CisJICovCisJ cGdzdGF0X2J1aWxkX3NuYXBzaG90X2ZpeGVkKFBHU1RBVF9LSU5EX0lPKTsKKwl3cml0ZV9jaHVu a19zKGZwb3V0LCAmcGdTdGF0TG9jYWwuc25hcHNob3QuaW8pOworCiAJLyoKIAkgKiBXcml0ZSBT TFJVIHN0YXRzIHN0cnVjdAogCSAqLwpAQCAtMTQ5Niw2ICsxNTE2LDEyIEBAIHBnc3RhdF9yZWFk X3N0YXRzZmlsZSh2b2lkKQogCWlmICghcmVhZF9jaHVua19zKGZwaW4sICZzaG1lbS0+Y2hlY2tw b2ludGVyLnN0YXRzKSkKIAkJZ290byBlcnJvcjsKIAorCS8qCisJICogUmVhZCBJTyBzdGF0cyBz dHJ1Y3QKKwkgKi8KKwlpZiAoIXJlYWRfY2h1bmtfcyhmcGluLCAmc2htZW0tPmlvLnN0YXRzKSkK KwkJZ290byBlcnJvcjsKKwogCS8qCiAJICogUmVhZCBTTFJVIHN0YXRzIHN0cnVjdAogCSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2Jnd3JpdGVyLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfYmd3cml0ZXIuYwppbmRleCA5MjQ3 ZjJkZGEyLi45MmJlMzg0YjBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfYmd3cml0ZXIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfYmd3cml0ZXIuYwpAQCAtMjQsNyArMjQsNyBAQCBQZ1N0YXRfQmdXcml0ZXJTdGF0cyBQZW5k aW5nQmdXcml0ZXJTdGF0cyA9IHswfTsKIAogCiAvKgotICogUmVwb3J0IGJnd3JpdGVyIHN0YXRp c3RpY3MKKyAqIFJlcG9ydCBiZ3dyaXRlciBhbmQgSU8gc3RhdGlzdGljcwogICovCiB2b2lkCiBw Z3N0YXRfcmVwb3J0X2Jnd3JpdGVyKHZvaWQpCkBAIC01Niw2ICs1NiwxMSBAQCBwZ3N0YXRfcmVw b3J0X2Jnd3JpdGVyKHZvaWQpCiAJICogQ2xlYXIgb3V0IHRoZSBzdGF0aXN0aWNzIGJ1ZmZlciwg c28gaXQgY2FuIGJlIHJlLXVzZWQuCiAJICovCiAJTWVtU2V0KCZQZW5kaW5nQmdXcml0ZXJTdGF0 cywgMCwgc2l6ZW9mKFBlbmRpbmdCZ1dyaXRlclN0YXRzKSk7CisKKwkvKgorCSAqIFJlcG9ydCBJ TyBzdGF0aXN0aWNzCisJICovCisJcGdzdGF0X2ZsdXNoX2lvKGZhbHNlKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9jaGVja3BvaW50ZXIu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9jaGVja3BvaW50ZXIuYwppbmRl eCAzZTlhYjQ1MTAzLi4yNmRlYzExMmY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9wZ3N0YXRfY2hlY2twb2ludGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2NoZWNrcG9pbnRlci5jCkBAIC0yNCw3ICsyNCw3IEBAIFBnU3RhdF9DaGVj a3BvaW50ZXJTdGF0cyBQZW5kaW5nQ2hlY2twb2ludGVyU3RhdHMgPSB7MH07CiAKIAogLyoKLSAq IFJlcG9ydCBjaGVja3BvaW50ZXIgc3RhdGlzdGljcworICogUmVwb3J0IGNoZWNrcG9pbnRlciBh bmQgSU8gc3RhdGlzdGljcwogICovCiB2b2lkCiBwZ3N0YXRfcmVwb3J0X2NoZWNrcG9pbnRlcih2 b2lkKQpAQCAtNjIsNiArNjIsMTEgQEAgcGdzdGF0X3JlcG9ydF9jaGVja3BvaW50ZXIodm9pZCkK IAkgKiBDbGVhciBvdXQgdGhlIHN0YXRpc3RpY3MgYnVmZmVyLCBzbyBpdCBjYW4gYmUgcmUtdXNl ZC4KIAkgKi8KIAlNZW1TZXQoJlBlbmRpbmdDaGVja3BvaW50ZXJTdGF0cywgMCwgc2l6ZW9mKFBl bmRpbmdDaGVja3BvaW50ZXJTdGF0cykpOworCisJLyoKKwkgKiBSZXBvcnQgSU8gc3RhdGlzdGlj cworCSAqLworCXBnc3RhdF9mbHVzaF9pbyhmYWxzZSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9pby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjhlYWM3ZDllNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfaW8uYwpAQCAtMCwwICsxLDQwMCBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHBnc3RhdF9pby5jCisgKgkgIEltcGxlbWVudGF0aW9uIG9mIElPIHN0YXRpc3RpY3Mu CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBJTyBzdGF0 aXN0aWNzLiBJdCBpcyBrZXB0IHNlcGFyYXRlCisgKiBmcm9tIHBnc3RhdC5jIHRvIGVuZm9yY2Ug dGhlIGxpbmUgYmV0d2VlbiB0aGUgc3RhdGlzdGljcyBhY2Nlc3MgLyBzdG9yYWdlCisgKiBpbXBs ZW1lbnRhdGlvbiBhbmQgdGhlIGRldGFpbHMgYWJvdXQgaW5kaXZpZHVhbCB0eXBlcyBvZiBzdGF0 aXN0aWNzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyMS0yMDIzLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJ1dGlscy9wZ3N0YXRfaW50ZXJu YWwuaCIKKworCitzdGF0aWMgUGdTdGF0X0JhY2tlbmRJTyBQZW5kaW5nSU9TdGF0czsKK2Jvb2wJ CWhhdmVfaW9zdGF0cyA9IGZhbHNlOworCisKK3ZvaWQKK3Bnc3RhdF9jb3VudF9pb19vcChJT09w IGlvX29wLCBJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0KQoreworCUFz c2VydChpb19jb250ZXh0IDwgSU9DT05URVhUX05VTV9UWVBFUyk7CisJQXNzZXJ0KGlvX29iamVj dCA8IElPT0JKRUNUX05VTV9UWVBFUyk7CisJQXNzZXJ0KGlvX29wIDwgSU9PUF9OVU1fVFlQRVMp OworCUFzc2VydChwZ3N0YXRfdHJhY2tzX2lvX29wKE15QmFja2VuZFR5cGUsIGlvX2NvbnRleHQs IGlvX29iamVjdCwgaW9fb3ApKTsKKworCVBlbmRpbmdJT1N0YXRzLmRhdGFbaW9fY29udGV4dF1b aW9fb2JqZWN0XVtpb19vcF0rKzsKKworCWhhdmVfaW9zdGF0cyA9IHRydWU7Cit9CisKK1BnU3Rh dF9JTyAqCitwZ3N0YXRfZmV0Y2hfc3RhdF9pbyh2b2lkKQoreworCXBnc3RhdF9zbmFwc2hvdF9m aXhlZChQR1NUQVRfS0lORF9JTyk7CisKKwlyZXR1cm4gJnBnU3RhdExvY2FsLnNuYXBzaG90Lmlv OworfQorCisvKgorICogRmx1c2ggb3V0IGxvY2FsbHkgcGVuZGluZyBJTyBzdGF0aXN0aWNzCisg KgorICogSWYgbm8gc3RhdHMgaGF2ZSBiZWVuIHJlY29yZGVkLCB0aGlzIGZ1bmN0aW9uIHJldHVy bnMgZmFsc2UuCisgKgorICogSWYgbm93YWl0IGlzIHRydWUsIHRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0cnVlIGlmIHRoZSBsb2NrIGNvdWxkIG5vdCBiZQorICogYWNxdWlyZWQuIE90aGVyd2lzZSwg cmV0dXJuIGZhbHNlLgorICovCitib29sCitwZ3N0YXRfZmx1c2hfaW8oYm9vbCBub3dhaXQpCit7 CisJTFdMb2NrCSAgICpia3R5cGVfbG9jazsKKwlQZ1N0YXRfQmFja2VuZElPICpia3R5cGVfc2hz dGF0czsKKworCWlmICghaGF2ZV9pb3N0YXRzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlia3R5cGVf bG9jayA9ICZwZ1N0YXRMb2NhbC5zaG1lbS0+aW8ubG9ja3NbTXlCYWNrZW5kVHlwZV07CisJYmt0 eXBlX3Noc3RhdHMgPQorCQkmcGdTdGF0TG9jYWwuc2htZW0tPmlvLnN0YXRzLnN0YXRzW015QmFj a2VuZFR5cGVdOworCisJaWYgKCFub3dhaXQpCisJCUxXTG9ja0FjcXVpcmUoYmt0eXBlX2xvY2ss IExXX0VYQ0xVU0lWRSk7CisJZWxzZSBpZiAoIUxXTG9ja0NvbmRpdGlvbmFsQWNxdWlyZShia3R5 cGVfbG9jaywgTFdfRVhDTFVTSVZFKSkKKwkJcmV0dXJuIHRydWU7CisKKwlmb3IgKElPQ29udGV4 dCBpb19jb250ZXh0ID0gSU9DT05URVhUX0ZJUlNUOworCQkgaW9fY29udGV4dCA8IElPQ09OVEVY VF9OVU1fVFlQRVM7IGlvX2NvbnRleHQrKykKKwkJZm9yIChJT09iamVjdCBpb19vYmplY3QgPSBJ T09CSkVDVF9GSVJTVDsKKwkJCSBpb19vYmplY3QgPCBJT09CSkVDVF9OVU1fVFlQRVM7IGlvX29i amVjdCsrKQorCQkJZm9yIChJT09wIGlvX29wID0gSU9PUF9GSVJTVDsKKwkJCQkgaW9fb3AgPCBJ T09QX05VTV9UWVBFUzsgaW9fb3ArKykKKwkJCQlia3R5cGVfc2hzdGF0cy0+ZGF0YVtpb19jb250 ZXh0XVtpb19vYmplY3RdW2lvX29wXSArPQorCQkJCQlQZW5kaW5nSU9TdGF0cy5kYXRhW2lvX2Nv bnRleHRdW2lvX29iamVjdF1baW9fb3BdOworCisJQXNzZXJ0KHBnc3RhdF9ia3R5cGVfaW9fc3Rh dHNfdmFsaWQoYmt0eXBlX3Noc3RhdHMsIE15QmFja2VuZFR5cGUpKTsKKworCUxXTG9ja1JlbGVh c2UoYmt0eXBlX2xvY2spOworCisJbWVtc2V0KCZQZW5kaW5nSU9TdGF0cywgMCwgc2l6ZW9mKFBl bmRpbmdJT1N0YXRzKSk7CisKKwloYXZlX2lvc3RhdHMgPSBmYWxzZTsKKworCXJldHVybiBmYWxz ZTsKK30KKworY29uc3QgY2hhciAqCitwZ3N0YXRfZ2V0X2lvX2NvbnRleHRfbmFtZShJT0NvbnRl eHQgaW9fY29udGV4dCkKK3sKKwlzd2l0Y2ggKGlvX2NvbnRleHQpCisJeworCQljYXNlIElPQ09O VEVYVF9CVUxLUkVBRDoKKwkJCXJldHVybiAiYnVsa3JlYWQiOworCQljYXNlIElPQ09OVEVYVF9C VUxLV1JJVEU6CisJCQlyZXR1cm4gImJ1bGt3cml0ZSI7CisJCWNhc2UgSU9DT05URVhUX05PUk1B TDoKKwkJCXJldHVybiAibm9ybWFsIjsKKwkJY2FzZSBJT0NPTlRFWFRfVkFDVVVNOgorCQkJcmV0 dXJuICJ2YWN1dW0iOworCX0KKworCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgSU9Db250ZXh0 IHZhbHVlOiAlZCIsIGlvX2NvbnRleHQpOworCXBnX3VucmVhY2hhYmxlKCk7Cit9CisKK2NvbnN0 IGNoYXIgKgorcGdzdGF0X2dldF9pb19vYmplY3RfbmFtZShJT09iamVjdCBpb19vYmplY3QpCit7 CisJc3dpdGNoIChpb19vYmplY3QpCisJeworCQljYXNlIElPT0JKRUNUX1JFTEFUSU9OOgorCQkJ cmV0dXJuICJyZWxhdGlvbiI7CisJCWNhc2UgSU9PQkpFQ1RfVEVNUF9SRUxBVElPTjoKKwkJCXJl dHVybiAidGVtcCByZWxhdGlvbiI7CisJfQorCisJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBJ T09iamVjdCB2YWx1ZTogJWQiLCBpb19vYmplY3QpOworCXBnX3VucmVhY2hhYmxlKCk7Cit9CisK K2NvbnN0IGNoYXIgKgorcGdzdGF0X2dldF9pb19vcF9uYW1lKElPT3AgaW9fb3ApCit7CisJc3dp dGNoIChpb19vcCkKKwl7CisJCWNhc2UgSU9PUF9FVklDVDoKKwkJCXJldHVybiAiZXZpY3RlZCI7 CisJCWNhc2UgSU9PUF9FWFRFTkQ6CisJCQlyZXR1cm4gImV4dGVuZGVkIjsKKwkJY2FzZSBJT09Q X0ZTWU5DOgorCQkJcmV0dXJuICJmaWxlcyBzeW5jZWQiOworCQljYXNlIElPT1BfUkVBRDoKKwkJ CXJldHVybiAicmVhZCI7CisJCWNhc2UgSU9PUF9SRVVTRToKKwkJCXJldHVybiAicmV1c2VkIjsK KwkJY2FzZSBJT09QX1dSSVRFOgorCQkJcmV0dXJuICJ3cml0dGVuIjsKKwl9CisKKwllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIElPT3AgdmFsdWU6ICVkIiwgaW9fb3ApOworCXBnX3VucmVhY2hh YmxlKCk7Cit9CisKK3ZvaWQKK3Bnc3RhdF9pb19yZXNldF9hbGxfY2IoVGltZXN0YW1wVHogdHMp Cit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBCQUNLRU5EX05VTV9UWVBFUzsgaSsrKQorCXsKKwkJ TFdMb2NrCSAgICpia3R5cGVfbG9jayA9ICZwZ1N0YXRMb2NhbC5zaG1lbS0+aW8ubG9ja3NbaV07 CisJCVBnU3RhdF9CYWNrZW5kSU8gKmJrdHlwZV9zaHN0YXRzID0gJnBnU3RhdExvY2FsLnNobWVt LT5pby5zdGF0cy5zdGF0c1tpXTsKKworCQlMV0xvY2tBY3F1aXJlKGJrdHlwZV9sb2NrLCBMV19F WENMVVNJVkUpOworCisJCS8qCisJCSAqIFVzZSB0aGUgbG9jayBpbiB0aGUgZmlyc3QgQmFja2Vu ZFR5cGUncyBQZ1N0YXRfQmFja2VuZElPIHRvIHByb3RlY3QKKwkJICogdGhlIHJlc2V0IHRpbWVz dGFtcCBhcyB3ZWxsLgorCQkgKi8KKwkJaWYgKGkgPT0gMCkKKwkJCXBnU3RhdExvY2FsLnNobWVt LT5pby5zdGF0cy5zdGF0X3Jlc2V0X3RpbWVzdGFtcCA9IHRzOworCisJCW1lbXNldChia3R5cGVf c2hzdGF0cywgMCwgc2l6ZW9mKCpia3R5cGVfc2hzdGF0cykpOworCQlMV0xvY2tSZWxlYXNlKGJr dHlwZV9sb2NrKTsKKwl9Cit9CisKK3ZvaWQKK3Bnc3RhdF9pb19zbmFwc2hvdF9jYih2b2lkKQor eworCWZvciAoaW50IGkgPSAwOyBpIDwgQkFDS0VORF9OVU1fVFlQRVM7IGkrKykKKwl7CisJCUxX TG9jawkgICAqYmt0eXBlX2xvY2sgPSAmcGdTdGF0TG9jYWwuc2htZW0tPmlvLmxvY2tzW2ldOwor CQlQZ1N0YXRfQmFja2VuZElPICpia3R5cGVfc2hzdGF0cyA9ICZwZ1N0YXRMb2NhbC5zaG1lbS0+ aW8uc3RhdHMuc3RhdHNbaV07CisJCVBnU3RhdF9CYWNrZW5kSU8gKmJrdHlwZV9zbmFwID0gJnBn U3RhdExvY2FsLnNuYXBzaG90LmlvLnN0YXRzW2ldOworCisJCUxXTG9ja0FjcXVpcmUoYmt0eXBl X2xvY2ssIExXX1NIQVJFRCk7CisKKwkJLyoKKwkJICogVXNlIHRoZSBsb2NrIGluIHRoZSBmaXJz dCBCYWNrZW5kVHlwZSdzIFBnU3RhdF9CYWNrZW5kSU8gdG8gcHJvdGVjdAorCQkgKiB0aGUgcmVz ZXQgdGltZXN0YW1wIGFzIHdlbGwuCisJCSAqLworCQlpZiAoaSA9PSAwKQorCQkJcGdTdGF0TG9j YWwuc25hcHNob3QuaW8uc3RhdF9yZXNldF90aW1lc3RhbXAgPQorCQkJCXBnU3RhdExvY2FsLnNo bWVtLT5pby5zdGF0cy5zdGF0X3Jlc2V0X3RpbWVzdGFtcDsKKworCQkvKiB1c2luZyBzdHJ1Y3Qg YXNzaWdubWVudCBkdWUgdG8gYmV0dGVyIHR5cGUgc2FmZXR5ICovCisJCSpia3R5cGVfc25hcCA9 ICpia3R5cGVfc2hzdGF0czsKKwkJTFdMb2NrUmVsZWFzZShia3R5cGVfbG9jayk7CisJfQorfQor CisvKgorKiBJTyBzdGF0aXN0aWNzIGFyZSBub3QgY29sbGVjdGVkIGZvciBhbGwgQmFja2VuZFR5 cGVzLgorKgorKiBUaGUgZm9sbG93aW5nIEJhY2tlbmRUeXBlcyBkbyBub3QgcGFydGljaXBhdGUg aW4gdGhlIGN1bXVsYXRpdmUgc3RhdHMKKyogc3Vic3lzdGVtIG9yIGRvIG5vdCBwZXJmb3JtIElP IG9uIHdoaWNoIHdlIGN1cnJlbnRseSB0cmFjazoKKyogLSBTeXNsb2dnZXIgYmVjYXVzZSBpdCBp cyBub3QgY29ubmVjdGVkIHRvIHNoYXJlZCBtZW1vcnkKKyogLSBBcmNoaXZlciBiZWNhdXNlIG1v c3QgcmVsZXZhbnQgYXJjaGl2aW5nIElPIGlzIGRlbGVnYXRlZCB0byBhCisqICAgc3BlY2lhbGl6 ZWQgY29tbWFuZCBvciBtb2R1bGUKKyogLSBXQUwgUmVjZWl2ZXIgYW5kIFdBTCBXcml0ZXIgSU8g aXMgbm90IHRyYWNrZWQgaW4gcGdfc3RhdF9pbyBmb3Igbm93CisqCisqIEZ1bmN0aW9uIHJldHVy bnMgdHJ1ZSBpZiBCYWNrZW5kVHlwZSBwYXJ0aWNpcGF0ZXMgaW4gdGhlIGN1bXVsYXRpdmUgc3Rh dHMKKyogc3Vic3lzdGVtIGZvciBJTyBhbmQgZmFsc2UgaWYgaXQgZG9lcyBub3QuCisqLworYm9v bAorcGdzdGF0X3RyYWNrc19pb19ia3R5cGUoQmFja2VuZFR5cGUgYmt0eXBlKQoreworCS8qCisJ ICogTGlzdCBldmVyeSB0eXBlIHNvIHRoYXQgbmV3IGJhY2tlbmQgdHlwZXMgdHJpZ2dlciBhIHdh cm5pbmcgYWJvdXQKKwkgKiBuZWVkaW5nIHRvIGFkanVzdCB0aGlzIHN3aXRjaC4KKwkgKi8KKwlz d2l0Y2ggKGJrdHlwZSkKKwl7CisJCWNhc2UgQl9JTlZBTElEOgorCQljYXNlIEJfQVJDSElWRVI6 CisJCWNhc2UgQl9MT0dHRVI6CisJCWNhc2UgQl9XQUxfUkVDRUlWRVI6CisJCWNhc2UgQl9XQUxf V1JJVEVSOgorCQkJcmV0dXJuIGZhbHNlOworCisJCWNhc2UgQl9BVVRPVkFDX0xBVU5DSEVSOgor CQljYXNlIEJfQVVUT1ZBQ19XT1JLRVI6CisJCWNhc2UgQl9CQUNLRU5EOgorCQljYXNlIEJfQkdf V09SS0VSOgorCQljYXNlIEJfQkdfV1JJVEVSOgorCQljYXNlIEJfQ0hFQ0tQT0lOVEVSOgorCQlj YXNlIEJfU1RBTkRBTE9ORV9CQUNLRU5EOgorCQljYXNlIEJfU1RBUlRVUDoKKwkJY2FzZSBCX1dB TF9TRU5ERVI6CisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8q CisgKiBTb21lIEJhY2tlbmRUeXBlcyBkbyBub3QgcGVyZm9ybSBJTyBpbiBjZXJ0YWluIElPQ29u dGV4dHMuIFNvbWUgSU9PYmplY3RzCisgKiBhcmUgbmV2ZXIgb3BlcmF0ZWQgb24gaW4gc29tZSBJ T0NvbnRleHRzLiBDaGVjayB0aGF0IHRoZSBnaXZlbiBCYWNrZW5kVHlwZQorICogaXMgZXhwZWN0 ZWQgdG8gZG8gSU8gaW4gdGhlIGdpdmVuIElPQ29udGV4dCBhbmQgdGhhdCB0aGUgZ2l2ZW4gSU9P YmplY3QgaXMKKyAqIGV4cGVjdGVkIHRvIGJlIG9wZXJhdGVkIG9uIGluIHRoZSBnaXZlbiBJT0Nv bnRleHQuCisgKi8KK2Jvb2wKK3Bnc3RhdF90cmFja3NfaW9fb2JqZWN0KEJhY2tlbmRUeXBlIGJr dHlwZSwgSU9Db250ZXh0IGlvX2NvbnRleHQsCisJCQkJCQlJT09iamVjdCBpb19vYmplY3QpCit7 CisJYm9vbAkJbm9fdGVtcF9yZWw7CisKKwkvKgorCSAqIFNvbWUgQmFja2VuZFR5cGVzIHNob3Vs ZCBuZXZlciB0cmFjayBJTyBzdGF0aXN0aWNzLgorCSAqLworCWlmICghcGdzdGF0X3RyYWNrc19p b19ia3R5cGUoYmt0eXBlKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBDdXJyZW50bHks IElPIG9uIHRlbXBvcmFyeSByZWxhdGlvbnMgY2FuIG9ubHkgb2NjdXIgaW4gdGhlCisJICogSU9D T05URVhUX05PUk1BTCBJT0NvbnRleHQuCisJICovCisJaWYgKGlvX2NvbnRleHQgIT0gSU9DT05U RVhUX05PUk1BTCAmJgorCQlpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTikKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBJbiBjb3JlIFBvc3RncmVzLCBvbmx5IHJlZ3VsYXIg YmFja2VuZHMgYW5kIFdBTCBTZW5kZXIgcHJvY2Vzc2VzCisJICogZXhlY3V0aW5nIHF1ZXJpZXMg d2lsbCB1c2UgbG9jYWwgYnVmZmVycyBhbmQgb3BlcmF0ZSBvbiB0ZW1wb3JhcnkKKwkgKiByZWxh dGlvbnMuIFBhcmFsbGVsIHdvcmtlcnMgd2lsbCBub3QgdXNlIGxvY2FsIGJ1ZmZlcnMgKHNlZQor CSAqIEluaXRMb2NhbEJ1ZmZlcnMoKSk7IGhvd2V2ZXIsIGV4dGVuc2lvbnMgbGV2ZXJhZ2luZyBi YWNrZ3JvdW5kIHdvcmtlcnMKKwkgKiBoYXZlIG5vIHN1Y2ggbGltaXRhdGlvbiwgc28gdHJhY2sg SU8gb24gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTiBmb3IKKwkgKiBCYWNrZW5kVHlwZSBCX0JHX1dP UktFUi4KKwkgKi8KKwlub190ZW1wX3JlbCA9IGJrdHlwZSA9PSBCX0FVVE9WQUNfTEFVTkNIRVIg fHwgYmt0eXBlID09IEJfQkdfV1JJVEVSIHx8CisJCWJrdHlwZSA9PSBCX0NIRUNLUE9JTlRFUiB8 fCBia3R5cGUgPT0gQl9BVVRPVkFDX1dPUktFUiB8fAorCQlia3R5cGUgPT0gQl9TVEFOREFMT05F X0JBQ0tFTkQgfHwgYmt0eXBlID09IEJfU1RBUlRVUDsKKworCWlmIChub190ZW1wX3JlbCAmJiBp b19jb250ZXh0ID09IElPQ09OVEVYVF9OT1JNQUwgJiYKKwkJaW9fb2JqZWN0ID09IElPT0JKRUNU X1RFTVBfUkVMQVRJT04pCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogU29tZSBCYWNrZW5k VHlwZXMgZG8gbm90IGN1cnJlbnRseSBwZXJmb3JtIGFueSBJTyBpbiBjZXJ0YWluCisJICogSU9D b250ZXh0cywgYW5kLCB3aGlsZSBpdCBtYXkgbm90IGJlIGluaGVyZW50bHkgaW5jb3JyZWN0IGZv ciB0aGVtIHRvCisJICogZG8gc28sIGV4Y2x1ZGluZyB0aG9zZSByb3dzIGZyb20gdGhlIHZpZXcg bWFrZXMgdGhlIHZpZXcgZWFzaWVyIHRvIHVzZS4KKwkgKi8KKwlpZiAoKGJrdHlwZSA9PSBCX0NI RUNLUE9JTlRFUiB8fCBia3R5cGUgPT0gQl9CR19XUklURVIpICYmCisJCShpb19jb250ZXh0ID09 IElPQ09OVEVYVF9CVUxLUkVBRCB8fAorCQkgaW9fY29udGV4dCA9PSBJT0NPTlRFWFRfQlVMS1dS SVRFIHx8CisJCSBpb19jb250ZXh0ID09IElPQ09OVEVYVF9WQUNVVU0pKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoYmt0eXBlID09IEJfQVVUT1ZBQ19MQVVOQ0hFUiAmJiBpb19jb250ZXh0ID09 IElPQ09OVEVYVF9WQUNVVU0pCisJCXJldHVybiBmYWxzZTsKKworCWlmICgoYmt0eXBlID09IEJf QVVUT1ZBQ19XT1JLRVIgfHwgYmt0eXBlID09IEJfQVVUT1ZBQ19MQVVOQ0hFUikgJiYKKwkJaW9f Y29udGV4dCA9PSBJT0NPTlRFWFRfQlVMS1dSSVRFKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworLyoKKyAqIFNvbWUgQmFja2VuZFR5cGVzIHdpbGwgbmV2ZXIgZG8gY2Vy dGFpbiBJT09wcyBhbmQgc29tZSBJT09wcyBzaG91bGQgbm90CisgKiBvY2N1ciBpbiBjZXJ0YWlu IElPQ29udGV4dHMuIENoZWNrIHRoYXQgdGhlIGdpdmVuIElPT3AgaXMgdmFsaWQgZm9yIHRoZQor ICogZ2l2ZW4gQmFja2VuZFR5cGUgaW4gdGhlIGdpdmVuIElPQ29udGV4dC4gTm90ZSB0aGF0IHRo ZXJlIGFyZSBjdXJyZW50bHkgbm8KKyAqIGNhc2VzIG9mIGFuIElPT3AgYmVpbmcgaW52YWxpZCBm b3IgYSBwYXJ0aWN1bGFyIEJhY2tlbmRUeXBlIG9ubHkgd2l0aGluIGEKKyAqIGNlcnRhaW4gSU9D b250ZXh0LgorICovCitib29sCitwZ3N0YXRfdHJhY2tzX2lvX29wKEJhY2tlbmRUeXBlIGJrdHlw ZSwgSU9Db250ZXh0IGlvX2NvbnRleHQsCisJCQkJCUlPT2JqZWN0IGlvX29iamVjdCwgSU9PcCBp b19vcCkKK3sKKwlib29sCQlzdHJhdGVneV9pb19jb250ZXh0OworCisJLyogaWYgKGlvX2NvbnRl eHQsIGlvX29iamVjdCkgd2lsbCBuZXZlciBjb2xsZWN0IHN0YXRzLCB3ZSdyZSBkb25lICovCisJ aWYgKCFwZ3N0YXRfdHJhY2tzX2lvX29iamVjdChia3R5cGUsIGlvX2NvbnRleHQsIGlvX29iamVj dCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogU29tZSBCYWNrZW5kVHlwZXMgd2lsbCBu b3QgZG8gY2VydGFpbiBJT09wcy4KKwkgKi8KKwlpZiAoKGJrdHlwZSA9PSBCX0JHX1dSSVRFUiB8 fCBia3R5cGUgPT0gQl9DSEVDS1BPSU5URVIpICYmCisJCShpb19vcCA9PSBJT09QX1JFQUQgfHwg aW9fb3AgPT0gSU9PUF9FVklDVCkpCisJCXJldHVybiBmYWxzZTsKKworCWlmICgoYmt0eXBlID09 IEJfQVVUT1ZBQ19MQVVOQ0hFUiB8fCBia3R5cGUgPT0gQl9CR19XUklURVIgfHwKKwkJIGJrdHlw ZSA9PSBCX0NIRUNLUE9JTlRFUikgJiYgaW9fb3AgPT0gSU9PUF9FWFRFTkQpCisJCXJldHVybiBm YWxzZTsKKworCS8qCisJICogU29tZSBJT09wcyBhcmUgbm90IHZhbGlkIGluIGNlcnRhaW4gSU9D b250ZXh0cyBhbmQgc29tZSBJT09wcyBhcmUgb25seQorCSAqIHZhbGlkIGluIGNlcnRhaW4gY29u dGV4dHMuCisJICovCisJaWYgKGlvX2NvbnRleHQgPT0gSU9DT05URVhUX0JVTEtSRUFEICYmIGlv X29wID09IElPT1BfRVhURU5EKQorCQlyZXR1cm4gZmFsc2U7CisKKwlzdHJhdGVneV9pb19jb250 ZXh0ID0gaW9fY29udGV4dCA9PSBJT0NPTlRFWFRfQlVMS1JFQUQgfHwKKwkJaW9fY29udGV4dCA9 PSBJT0NPTlRFWFRfQlVMS1dSSVRFIHx8IGlvX2NvbnRleHQgPT0gSU9DT05URVhUX1ZBQ1VVTTsK KworCS8qCisJICogSU9PUF9SRVVTRSBpcyBvbmx5IHJlbGV2YW50IHdoZW4gYSBCdWZmZXJBY2Nl c3NTdHJhdGVneSBpcyBpbiB1c2UuCisJICovCisJaWYgKCFzdHJhdGVneV9pb19jb250ZXh0ICYm IGlvX29wID09IElPT1BfUkVVU0UpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogSU9PUF9G U1lOQyBJT09wcyBkb25lIGJ5IGEgYmFja2VuZCB1c2luZyBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IGFyZQorCSAqIGNvdW50ZWQgaW4gdGhlIElPQ09OVEVYVF9OT1JNQUwgSU9Db250ZXh0LiBTZWUg Y29tbWVudCBpbgorCSAqIHJlZ2lzdGVyX2RpcnR5X3NlZ21lbnQoKSBmb3IgbW9yZSBkZXRhaWxz LgorCSAqLworCWlmIChzdHJhdGVneV9pb19jb250ZXh0ICYmIGlvX29wID09IElPT1BfRlNZTkMp CisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogVGVtcG9yYXJ5IHRhYmxlcyBhcmUgbm90IGxv Z2dlZCBhbmQgdGh1cyBkbyBub3QgcmVxdWlyZSBmc3luYydpbmcuCisJICovCisJaWYgKGlvX2Nv bnRleHQgPT0gSU9DT05URVhUX05PUk1BTCAmJgorCQlpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVN UF9SRUxBVElPTiAmJiBpb19vcCA9PSBJT09QX0ZTWU5DKQorCQlyZXR1cm4gZmFsc2U7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIENoZWNrIHRoYXQgc3RhdHMgaGF2ZSBub3QgYmVlbiBj b3VudGVkIGZvciBhbnkgY29tYmluYXRpb24gb2YgSU9Db250ZXh0LAorICogSU9PYmplY3QsIGFu ZCBJT09wIHdoaWNoIGFyZSBub3QgdHJhY2tlZCBmb3IgdGhlIHBhc3NlZC1pbiBCYWNrZW5kVHlw ZS4gVGhlCisgKiBwYXNzZWQtaW4gUGdTdGF0X0JhY2tlbmRJTyBtdXN0IGNvbnRhaW4gc3RhdHMg ZnJvbSB0aGUgQmFja2VuZFR5cGUgc3BlY2lmaWVkCisgKiBieSB0aGUgc2Vjb25kIHBhcmFtZXRl ci4gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBsb2NraW5nIHRoZSBwYXNzZWQtaW4KKyAqIFBn U3RhdF9CYWNrZW5kSU8sIGlmIG5lZWRlZC4KKyAqLworYm9vbAorcGdzdGF0X2JrdHlwZV9pb19z dGF0c192YWxpZChQZ1N0YXRfQmFja2VuZElPICpiYWNrZW5kX2lvLAorCQkJCQkJCSBCYWNrZW5k VHlwZSBia3R5cGUpCit7CisJYm9vbAkJYmt0eXBlX3RyYWNrZWQgPSBwZ3N0YXRfdHJhY2tzX2lv X2JrdHlwZShia3R5cGUpOworCisJZm9yIChJT0NvbnRleHQgaW9fY29udGV4dCA9IElPQ09OVEVY VF9GSVJTVDsKKwkJIGlvX2NvbnRleHQgPCBJT0NPTlRFWFRfTlVNX1RZUEVTOyBpb19jb250ZXh0 KyspCisJeworCQlmb3IgKElPT2JqZWN0IGlvX29iamVjdCA9IElPT0JKRUNUX0ZJUlNUOworCQkJ IGlvX29iamVjdCA8IElPT0JKRUNUX05VTV9UWVBFUzsgaW9fb2JqZWN0KyspCisJCXsKKwkJCS8q CisJCQkgKiBEb24ndCBib3RoZXIgdHJ5aW5nIHRvIHNraXAgdG8gdGhlIG5leHQgbG9vcCBpdGVy YXRpb24gaWYKKwkJCSAqIHBnc3RhdF90cmFja3NfaW9fb2JqZWN0KCkgd291bGQgcmV0dXJuIGZh bHNlIGhlcmUuIFdlIHN0aWxsCisJCQkgKiBuZWVkIHRvIHZhbGlkYXRlIHRoYXQgZWFjaCBjb3Vu dGVyIGlzIHplcm8gYW55d2F5LgorCQkJICovCisJCQlmb3IgKElPT3AgaW9fb3AgPSBJT09QX0ZJ UlNUOyBpb19vcCA8IElPT1BfTlVNX1RZUEVTOyBpb19vcCsrKQorCQkJeworCQkJCWlmICgoIWJr dHlwZV90cmFja2VkIHx8ICFwZ3N0YXRfdHJhY2tzX2lvX29wKGJrdHlwZSwgaW9fY29udGV4dCwg aW9fb2JqZWN0LCBpb19vcCkpICYmCisJCQkJCWJhY2tlbmRfaW8tPmRhdGFbaW9fY29udGV4dF1b aW9fb2JqZWN0XVtpb19vcF0gIT0gMCkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQl9CisJ fQorCisJcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCmluZGV4IDJlMjBiOTNjMjAuLmY3OTNhYzE1MTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCkBAIC0yMDYsNyArMjA2LDcgQEAg cGdzdGF0X2Ryb3BfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogfQogCiAvKgotICogUmVwb3J0IHRo YXQgdGhlIHRhYmxlIHdhcyBqdXN0IHZhY3V1bWVkLgorICogUmVwb3J0IHRoYXQgdGhlIHRhYmxl IHdhcyBqdXN0IHZhY3V1bWVkIGFuZCBmbHVzaCBJTyBzdGF0aXN0aWNzLgogICovCiB2b2lkCiBw Z3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVkLApAQCAtMjU4LDEw ICsyNTgsMTggQEAgcGdzdGF0X3JlcG9ydF92YWN1dW0oT2lkIHRhYmxlb2lkLCBib29sIHNoYXJl ZCwKIAl9CiAKIAlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CisKKwkvKgorCSAqIEZs dXNoIElPIHN0YXRpc3RpY3Mgbm93LiBwZ3N0YXRfcmVwb3J0X3N0YXQoKSB3aWxsIGZsdXNoIElP IHN0YXRzLAorCSAqIGhvd2V2ZXIgdGhpcyB3aWxsIG5vdCBiZSBjYWxsZWQgdW50aWwgYWZ0ZXIg YW4gZW50aXJlIGF1dG92YWN1dW0gY3ljbGUKKwkgKiBpcyBkb25lIC0tIHdoaWNoIHdpbGwgbGlr ZWx5IHZhY3V1bSBtYW55IHJlbGF0aW9ucyAtLSBvciB1bnRpbCB0aGUKKwkgKiBWQUNVVU0gY29t bWFuZCBoYXMgcHJvY2Vzc2VkIGFsbCB0YWJsZXMgYW5kIGNvbW1pdHRlZC4KKwkgKi8KKwlwZ3N0 YXRfZmx1c2hfaW8oZmFsc2UpOwogfQogCiAvKgotICogUmVwb3J0IHRoYXQgdGhlIHRhYmxlIHdh cyBqdXN0IGFuYWx5emVkLgorICogUmVwb3J0IHRoYXQgdGhlIHRhYmxlIHdhcyBqdXN0IGFuYWx5 emVkIGFuZCBmbHVzaCBJTyBzdGF0aXN0aWNzLgogICoKICAqIENhbGxlciBtdXN0IHByb3ZpZGUg bmV3IGxpdmUtIGFuZCBkZWFkLXR1cGxlcyBlc3RpbWF0ZXMsIGFzIHdlbGwgYXMgYQogICogZmxh ZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcmVzZXQgdGhlIG1vZF9zaW5jZV9hbmFseXplIGNvdW50 ZXIuCkBAIC0zNDEsNiArMzQ5LDkgQEAgcGdzdGF0X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJl bCwKIAl9CiAKIAlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CisKKwkvKiBzZWUgcGdz dGF0X3JlcG9ydF92YWN1dW0oKSAqLworCXBnc3RhdF9mbHVzaF9pbyhmYWxzZSk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jCmluZGV4IGMxNTA2YjUz ZDAuLjA5ZmZmZDBlODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1l bS5jCkBAIC0yMDIsNiArMjAyLDEwIEBAIFN0YXRzU2htZW1Jbml0KHZvaWQpCiAJCUxXTG9ja0lu aXRpYWxpemUoJmN0bC0+Y2hlY2twb2ludGVyLmxvY2ssIExXVFJBTkNIRV9QR1NUQVRTX0RBVEEp OwogCQlMV0xvY2tJbml0aWFsaXplKCZjdGwtPnNscnUubG9jaywgTFdUUkFOQ0hFX1BHU1RBVFNf REFUQSk7CiAJCUxXTG9ja0luaXRpYWxpemUoJmN0bC0+d2FsLmxvY2ssIExXVFJBTkNIRV9QR1NU QVRTX0RBVEEpOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgQkFDS0VORF9OVU1fVFlQRVM7IGkr KykKKwkJCUxXTG9ja0luaXRpYWxpemUoJmN0bC0+aW8ubG9ja3NbaV0sCisJCQkJCQkJIExXVFJB TkNIRV9QR1NUQVRTX0RBVEEpOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3dhbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3dhbC5jCmluZGV4IGU3YTgyYjVmZWQuLmU4NTk4YjJmNGUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF93YWwuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMKQEAgLTM0LDcgKzM0LDcgQEAgc3RhdGljIFdh bFVzYWdlIHByZXZXYWxVc2FnZTsKIAogLyoKICAqIENhbGN1bGF0ZSBob3cgbXVjaCBXQUwgdXNh Z2UgY291bnRlcnMgaGF2ZSBpbmNyZWFzZWQgYW5kIHVwZGF0ZQotICogc2hhcmVkIHN0YXRpc3Rp Y3MuCisgKiBzaGFyZWQgV0FMIGFuZCBJTyBzdGF0aXN0aWNzLgogICoKICAqIE11c3QgYmUgY2Fs bGVkIGJ5IHByb2Nlc3NlcyB0aGF0IGdlbmVyYXRlIFdBTCwgdGhhdCBkbyBub3QgY2FsbAogICog cGdzdGF0X3JlcG9ydF9zdGF0KCksIGxpa2Ugd2Fsd3JpdGVyLgpAQCAtNDMsNiArNDMsOCBAQCB2 b2lkCiBwZ3N0YXRfcmVwb3J0X3dhbChib29sIGZvcmNlKQogewogCXBnc3RhdF9mbHVzaF93YWwo Zm9yY2UpOworCisJcGdzdGF0X2ZsdXNoX2lvKGZvcmNlKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggNThiZDEzNjBiOS4uNDJiODkwYjgwNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTE1OTMsNiArMTU5Myw4IEBAIHBnX3N0YXRfcmVz ZXRfc2hhcmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXBnc3RhdF9yZXNldF9vZl9raW5kKFBHU1RB VF9LSU5EX0JHV1JJVEVSKTsKIAkJcGdzdGF0X3Jlc2V0X29mX2tpbmQoUEdTVEFUX0tJTkRfQ0hF Q0tQT0lOVEVSKTsKIAl9CisJZWxzZSBpZiAoc3RyY21wKHRhcmdldCwgImlvIikgPT0gMCkKKwkJ cGdzdGF0X3Jlc2V0X29mX2tpbmQoUEdTVEFUX0tJTkRfSU8pOwogCWVsc2UgaWYgKHN0cmNtcCh0 YXJnZXQsICJyZWNvdmVyeV9wcmVmZXRjaCIpID09IDApCiAJCVhMb2dQcmVmZXRjaFJlc2V0U3Rh dHMoKTsKIAllbHNlIGlmIChzdHJjbXAodGFyZ2V0LCAid2FsIikgPT0gMCkKQEAgLTE2MDEsNyAr MTYwMyw3IEBAIHBnX3N0YXRfcmVzZXRfc2hhcmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CiAJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIHJlc2V0IHRhcmdldDogXCIlc1wiIiwgdGFyZ2V0 KSwKLQkJCQkgZXJyaGludCgiVGFyZ2V0IG11c3QgYmUgXCJhcmNoaXZlclwiLCBcImJnd3JpdGVy XCIsIFwicmVjb3ZlcnlfcHJlZmV0Y2hcIiwgb3IgXCJ3YWxcIi4iKSkpOworCQkJCSBlcnJoaW50 KCJUYXJnZXQgbXVzdCBiZSBcImFyY2hpdmVyXCIsIFwiaW9cIiwgXCJiZ3dyaXRlclwiLCBcInJl Y292ZXJ5X3ByZWZldGNoXCIsIG9yIFwid2FsXCIuIikpKTsKIAogCVBHX1JFVFVSTl9WT0lEKCk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oCmluZGV4IDBmZmVlZmM0MzcuLjBhYWY2MDBhNzggMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0zMzEs NiArMzMxLDggQEAgdHlwZWRlZiBlbnVtIEJhY2tlbmRUeXBlCiAJQl9XQUxfV1JJVEVSLAogfSBC YWNrZW5kVHlwZTsKIAorI2RlZmluZSBCQUNLRU5EX05VTV9UWVBFUyAoQl9XQUxfV1JJVEVSICsg MSkKKwogZXh0ZXJuIFBHRExMSU1QT1JUIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAKIGV4 dGVybiBjb25zdCBjaGFyICpHZXRCYWNrZW5kVHlwZURlc2MoQmFja2VuZFR5cGUgYmFja2VuZFR5 cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0 YXQuaAppbmRleCA1ZTMzMjZhM2I5Li5lYTdlMTljNDhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtNDgsNiArNDgsNyBAQCB0 eXBlZGVmIGVudW0gUGdTdGF0X0tpbmQKIAlQR1NUQVRfS0lORF9BUkNISVZFUiwKIAlQR1NUQVRf S0lORF9CR1dSSVRFUiwKIAlQR1NUQVRfS0lORF9DSEVDS1BPSU5URVIsCisJUEdTVEFUX0tJTkRf SU8sCiAJUEdTVEFUX0tJTkRfU0xSVSwKIAlQR1NUQVRfS0lORF9XQUwsCiB9IFBnU3RhdF9LaW5k OwpAQCAtMjc2LDYgKzI3Nyw1NSBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfQ2hlY2twb2ludGVy U3RhdHMKIAlQZ1N0YXRfQ291bnRlciBidWZfZnN5bmNfYmFja2VuZDsKIH0gUGdTdGF0X0NoZWNr cG9pbnRlclN0YXRzOwogCisKKy8qCisgKiBUeXBlcyByZWxhdGVkIHRvIGNvdW50aW5nIElPIG9w ZXJhdGlvbnMKKyAqLwordHlwZWRlZiBlbnVtIElPQ29udGV4dAoreworCUlPQ09OVEVYVF9CVUxL UkVBRCwKKwlJT0NPTlRFWFRfQlVMS1dSSVRFLAorCUlPQ09OVEVYVF9OT1JNQUwsCisJSU9DT05U RVhUX1ZBQ1VVTSwKK30gSU9Db250ZXh0OworCisjZGVmaW5lIElPQ09OVEVYVF9GSVJTVCBJT0NP TlRFWFRfQlVMS1JFQUQKKyNkZWZpbmUgSU9DT05URVhUX05VTV9UWVBFUyAoSU9DT05URVhUX1ZB Q1VVTSArIDEpCisKK3R5cGVkZWYgZW51bSBJT09iamVjdAoreworCUlPT0JKRUNUX1JFTEFUSU9O LAorCUlPT0JKRUNUX1RFTVBfUkVMQVRJT04sCit9IElPT2JqZWN0OworCisjZGVmaW5lIElPT0JK RUNUX0ZJUlNUIElPT0JKRUNUX1JFTEFUSU9OCisjZGVmaW5lIElPT0JKRUNUX05VTV9UWVBFUyAo SU9PQkpFQ1RfVEVNUF9SRUxBVElPTiArIDEpCisKK3R5cGVkZWYgZW51bSBJT09wCit7CisJSU9P UF9FVklDVCwKKwlJT09QX0VYVEVORCwKKwlJT09QX0ZTWU5DLAorCUlPT1BfUkVBRCwKKwlJT09Q X1JFVVNFLAorCUlPT1BfV1JJVEUsCit9IElPT3A7CisKKyNkZWZpbmUgSU9PUF9GSVJTVCBJT09Q X0VWSUNUCisjZGVmaW5lIElPT1BfTlVNX1RZUEVTIChJT09QX1dSSVRFICsgMSkKKwordHlwZWRl ZiBzdHJ1Y3QgUGdTdGF0X0JhY2tlbmRJTworeworCVBnU3RhdF9Db3VudGVyIGRhdGFbSU9DT05U RVhUX05VTV9UWVBFU11bSU9PQkpFQ1RfTlVNX1RZUEVTXVtJT09QX05VTV9UWVBFU107Cit9IFBn U3RhdF9CYWNrZW5kSU87CisKK3R5cGVkZWYgc3RydWN0IFBnU3RhdF9JTworeworCVRpbWVzdGFt cFR6IHN0YXRfcmVzZXRfdGltZXN0YW1wOworCVBnU3RhdF9CYWNrZW5kSU8gc3RhdHNbQkFDS0VO RF9OVU1fVFlQRVNdOworfSBQZ1N0YXRfSU87CisKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0 YXREQkVudHJ5CiB7CiAJUGdTdGF0X0NvdW50ZXIgeGFjdF9jb21taXQ7CkBAIC00NTMsNiArNTAz LDIzIEBAIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfY2hlY2twb2ludGVyKHZvaWQpOwogZXh0 ZXJuIFBnU3RhdF9DaGVja3BvaW50ZXJTdGF0cyAqcGdzdGF0X2ZldGNoX3N0YXRfY2hlY2twb2lu dGVyKHZvaWQpOwogCiAKKy8qCisgKiBGdW5jdGlvbnMgaW4gcGdzdGF0X2lvLmMKKyAqLworCitl eHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaW9fb3AoSU9PcCBpb19vcCwgSU9PYmplY3QgaW9fb2Jq ZWN0LCBJT0NvbnRleHQgaW9fY29udGV4dCk7CitleHRlcm4gUGdTdGF0X0lPICpwZ3N0YXRfZmV0 Y2hfc3RhdF9pbyh2b2lkKTsKK2V4dGVybiBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X2lvX2NvbnRl eHRfbmFtZShJT0NvbnRleHQgaW9fY29udGV4dCk7CitleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0 X2dldF9pb19vYmplY3RfbmFtZShJT09iamVjdCBpb19vYmplY3QpOworZXh0ZXJuIGNvbnN0IGNo YXIgKnBnc3RhdF9nZXRfaW9fb3BfbmFtZShJT09wIGlvX29wKTsKKworZXh0ZXJuIGJvb2wgcGdz dGF0X3RyYWNrc19pb19ia3R5cGUoQmFja2VuZFR5cGUgYmt0eXBlKTsKK2V4dGVybiBib29sIHBn c3RhdF90cmFja3NfaW9fb2JqZWN0KEJhY2tlbmRUeXBlIGJrdHlwZSwKKwkJCQkJCQkJCUlPQ29u dGV4dCBpb19jb250ZXh0LCBJT09iamVjdCBpb19vYmplY3QpOworZXh0ZXJuIGJvb2wgcGdzdGF0 X3RyYWNrc19pb19vcChCYWNrZW5kVHlwZSBia3R5cGUsIElPQ29udGV4dCBpb19jb250ZXh0LAor CQkJCQkJCQlJT09iamVjdCBpb19vYmplY3QsIElPT3AgaW9fb3ApOworCisKIC8qCiAgKiBGdW5j dGlvbnMgaW4gcGdzdGF0X2RhdGFiYXNlLmMKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcGdzdGF0X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJu YWwuaAppbmRleCAxMmZkNTFmMWFlLi5iZjhlNGMzYjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRf aW50ZXJuYWwuaApAQCAtMzI5LDYgKzMyOSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRTaGFy ZWRfQ2hlY2twb2ludGVyCiAJUGdTdGF0X0NoZWNrcG9pbnRlclN0YXRzIHJlc2V0X29mZnNldDsK IH0gUGdTdGF0U2hhcmVkX0NoZWNrcG9pbnRlcjsKIAorLyogc2hhcmVkIHZlcnNpb24gb2YgUGdT dGF0X0lPICovCit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRTaGFyZWRfSU8KK3sKKwkvKgorCSAqIGxv Y2tzW2ldIHByb3RlY3RzIHN0YXRzLnN0YXRzW2ldLiBsb2Nrc1swXSBhbHNvIHByb3RlY3RzCisJ ICogc3RhdHMuc3RhdF9yZXNldF90aW1lc3RhbXAuCisJICovCisJTFdMb2NrCQlsb2Nrc1tCQUNL RU5EX05VTV9UWVBFU107CisJUGdTdGF0X0lPCXN0YXRzOworfSBQZ1N0YXRTaGFyZWRfSU87CisK IHR5cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9TTFJVCiB7CiAJLyogbG9jayBwcm90ZWN0cyAt PnN0YXRzICovCkBAIC00MTksNiArNDMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1NobWVt Q29udHJvbAogCVBnU3RhdFNoYXJlZF9BcmNoaXZlciBhcmNoaXZlcjsKIAlQZ1N0YXRTaGFyZWRf QmdXcml0ZXIgYmd3cml0ZXI7CiAJUGdTdGF0U2hhcmVkX0NoZWNrcG9pbnRlciBjaGVja3BvaW50 ZXI7CisJUGdTdGF0U2hhcmVkX0lPIGlvOwogCVBnU3RhdFNoYXJlZF9TTFJVIHNscnU7CiAJUGdT dGF0U2hhcmVkX1dhbCB3YWw7CiB9IFBnU3RhdF9TaG1lbUNvbnRyb2w7CkBAIC00NDIsNiArNDU0 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1NuYXBzaG90CiAKIAlQZ1N0YXRfQ2hlY2twb2lu dGVyU3RhdHMgY2hlY2twb2ludGVyOwogCisJUGdTdGF0X0lPCWlvOworCiAJUGdTdGF0X1NMUlVT dGF0cyBzbHJ1W1NMUlVfTlVNX0VMRU1FTlRTXTsKIAogCVBnU3RhdF9XYWxTdGF0cyB3YWw7CkBA IC01NDksNiArNTYzLDE3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9kYXRhYmFzZV9yZXNldF90aW1l c3RhbXBfY2IoUGdTdGF0U2hhcmVkX0NvbW1vbiAqaGVhZGVyLCBUaW1lCiBleHRlcm4gYm9vbCBw Z3N0YXRfZnVuY3Rpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wg bm93YWl0KTsKIAogCisvKgorICogRnVuY3Rpb25zIGluIHBnc3RhdF9pby5jCisgKi8KKworZXh0 ZXJuIHZvaWQgcGdzdGF0X2lvX3Jlc2V0X2FsbF9jYihUaW1lc3RhbXBUeiB0cyk7CitleHRlcm4g dm9pZCBwZ3N0YXRfaW9fc25hcHNob3RfY2Iodm9pZCk7CitleHRlcm4gYm9vbCBwZ3N0YXRfZmx1 c2hfaW8oYm9vbCBub3dhaXQpOworZXh0ZXJuIGJvb2wgcGdzdGF0X2JrdHlwZV9pb19zdGF0c192 YWxpZChQZ1N0YXRfQmFja2VuZElPICpjb250ZXh0X29wcywKKwkJCQkJCQkJCQkgQmFja2VuZFR5 cGUgYmt0eXBlKTsKKworCiAvKgogICogRnVuY3Rpb25zIGluIHBnc3RhdF9yZWxhdGlvbi5jCiAg Ki8KQEAgLTY0Myw2ICs2NjgsMTMgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X2NyZWF0ZV90cmFuc2Fj dGlvbmFsKFBnU3RhdF9LaW5kIGtpbmQsIE9pZCBkYm9pZCwgT2lkIG9iam9pZCkKIGV4dGVybiBQ R0RMTElNUE9SVCBQZ1N0YXRfTG9jYWxTdGF0ZSBwZ1N0YXRMb2NhbDsKIAogCisvKgorICogVmFy aWFibGVzIGluIHBnc3RhdF9pby5jCisgKi8KKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaGF2 ZV9pb3N0YXRzOworCisKIC8qCiAgKiBWYXJpYWJsZXMgaW4gcGdzdGF0X3NscnUuYwogICovCmRp ZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDIzYmFmZWM1ZjcuLjdiNjZiMWJjODkgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTA2LDcgKzExMDYsMTAgQEAgSUQKIElORklYCiBJ TlQxMjgKIElOVEVSRkFDRV9JTkZPCitJT0NvbnRleHQKIElPRnVuY1NlbGVjdG9yCitJT09iamVj dAorSU9PcAogSVBDb21wYXJlTWV0aG9kCiBJVEVNCiBJVgpAQCAtMjAxNiw2ICsyMDE5LDcgQEAg UGdTdGF0U2hhcmVkX0NvbW1vbgogUGdTdGF0U2hhcmVkX0RhdGFiYXNlCiBQZ1N0YXRTaGFyZWRf RnVuY3Rpb24KIFBnU3RhdFNoYXJlZF9IYXNoRW50cnkKK1BnU3RhdFNoYXJlZF9JTwogUGdTdGF0 U2hhcmVkX1JlbGF0aW9uCiBQZ1N0YXRTaGFyZWRfUmVwbFNsb3QKIFBnU3RhdFNoYXJlZF9TTFJV CkBAIC0yMDMzLDYgKzIwMzcsOCBAQCBQZ1N0YXRfRmV0Y2hDb25zaXN0ZW5jeQogUGdTdGF0X0Z1 bmN0aW9uQ2FsbFVzYWdlCiBQZ1N0YXRfRnVuY3Rpb25Db3VudHMKIFBnU3RhdF9IYXNoS2V5CitQ Z1N0YXRfSU8KK1BnU3RhdF9CYWNrZW5kSU8KIFBnU3RhdF9LaW5kCiBQZ1N0YXRfS2luZEluZm8K IFBnU3RhdF9Mb2NhbFN0YXRlCi0tIAoyLjM0LjEKCg== --00000000000032a58605f1db346f Content-Type: text/x-patch; charset="US-ASCII"; name="v45-0004-Add-system-view-tracking-IO-ops-per-backend-type.patch" Content-Disposition: attachment; filename="v45-0004-Add-system-view-tracking-IO-ops-per-backend-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lcpaqb283 RnJvbSBjMTljZDdhYWQ1MWY3NWI0ODY1YjE3MWEwOTZkMWZmMWNiYmE0MTRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDkgSmFuIDIwMjMgMTQ6NDI6MjUgLTA1MDAKU3ViamVjdDogW1BB VENIIHY0NSA0LzVdIEFkZCBzeXN0ZW0gdmlldyB0cmFja2luZyBJTyBvcHMgcGVyIGJhY2tlbmQg dHlwZQoKQWRkIHBnX3N0YXRfaW8sIGEgc3lzdGVtIHZpZXcgd2hpY2ggdHJhY2tzIHRoZSBudW1i ZXIgb2YgSU9PcHMKKGV2aWN0aW9ucywgcmV1c2VzLCByZWFkcywgd3JpdGVzLCBleHRlbnNpb25z LCBhbmQgZnN5bmNzKSBkb25lIG9uIGVhY2gKSU9PYmplY3QgKHJlbGF0aW9uLCB0ZW1wIHJlbGF0 aW9uKSBpbiBlYWNoIElPQ29udGV4dCAoIm5vcm1hbCIgYW5kIHRob3NlCnVzaW5nIGEgQnVmZmVy QWNjZXNzU3RyYXRlZ3kpIGJ5IGVhY2ggdHlwZSBvZiBiYWNrZW5kIChlLmcuIGNsaWVudApiYWNr ZW5kLCBjaGVja3BvaW50ZXIpLgoKU29tZSBCYWNrZW5kVHlwZXMgZG8gbm90IGFjY3VtdWxhdGUg SU8gb3BlcmF0aW9ucyBzdGF0aXN0aWNzIGFuZCB3aWxsCm5vdCBiZSBpbmNsdWRlZCBpbiB0aGUg dmlldy4KClNvbWUgSU9Db250ZXh0cyBhcmUgbm90IHVzZWQgYnkgc29tZSBCYWNrZW5kVHlwZXMg YW5kIHdpbGwgbm90IGJlIGluIHRoZQp2aWV3LiBGb3IgZXhhbXBsZSwgY2hlY2twb2ludGVyIGRv ZXMgbm90IHVzZSBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5CihjdXJyZW50bHkpLCBzbyB0aGVyZSB3 aWxsIGJlIG5vIHJvd3MgZm9yIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5CklPQ29udGV4dHMgZm9yIGNo ZWNrcG9pbnRlci4KClNvbWUgSU9PYmplY3RzIGFyZSBuZXZlciBvcGVyYXRlZCBvbiBpbiBzb21l IElPQ29udGV4dHMgb3IgYnkgc29tZQpCYWNrZW5kVHlwZXMuIFRoZXNlIHJvd3MgYXJlIG9taXR0 ZWQgZnJvbSB0aGUgdmlldy4gRm9yIGV4YW1wbGUsCmNoZWNrcG9pbnRlciB3aWxsIG5ldmVyIG9w ZXJhdGUgb24gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTiBkYXRhLCBzbyB0aG9zZQpyb3dzIGFyZSBv bWl0dGVkLgoKU29tZSBJT09wcyBhcmUgaW52YWxpZCBpbiBjb21iaW5hdGlvbiB3aXRoIGNlcnRh aW4gSU9Db250ZXh0cyBhbmQKY2VydGFpbiBJT09iamVjdHMuIFRob3NlIGNlbGxzIHdpbGwgYmUg TlVMTCBpbiB0aGUgdmlldyB0byBkaXN0aW5ndWlzaApiZXR3ZWVuIDAgb2JzZXJ2ZWQgSU9PcHMg b2YgdGhhdCB0eXBlIGFuZCBhbiBpbnZhbGlkIGNvbWJpbmF0aW9uLiBGb3IKZXhhbXBsZSwgdGVt cG9yYXJ5IHRhYmxlcyBhcmUgbm90IGZzeW5jZWQgc28gY2VsbHMgZm9yIGFsbCBCYWNrZW5kVHlw ZXMKZm9yIElPT0JKRUNUX1RFTVBfUkVMQVRJT04gYW5kIElPT1BfRlNZTkMgd2lsbCBiZSBOVUxM LgoKU29tZSBCYWNrZW5kVHlwZXMgbmV2ZXIgcGVyZm9ybSBjZXJ0YWluIElPT3BzLiBUaG9zZSBj ZWxscyB3aWxsIGFsc28gYmUKTlVMTCBpbiB0aGUgdmlldy4gRm9yIGV4YW1wbGUsIGJnd3JpdGVy IHNob3VsZCBub3QgcGVyZm9ybSByZWFkcy4KClZpZXcgc3RhdHMgYXJlIHBvcHVsYXRlZCB3aXRo IHN0YXRpc3RpY3MgaW5jcmVtZW50ZWQgd2hlbiBhIGJhY2tlbmQKcGVyZm9ybXMgYW4gSU8gT3Bl cmF0aW9uIGFuZCBtYWludGFpbmVkIGJ5IHRoZSBjdW11bGF0aXZlIHN0YXRpc3RpY3MKc3Vic3lz dGVtLgoKRWFjaCByb3cgb2YgdGhlIHZpZXcgc2hvd3Mgc3RhdHMgZm9yIGEgcGFydGljdWxhciBC YWNrZW5kVHlwZSwgSU9PYmplY3QsCklPQ29udGV4dCBjb21iaW5hdGlvbiAoZS5nLiBhIGNsaWVu dCBiYWNrZW5kJ3Mgb3BlcmF0aW9ucyBvbiBwZXJtYW5lbnQKcmVsYXRpb25zIGluIHNoYXJlZCBi dWZmZXJzKSBhbmQgZWFjaCBjb2x1bW4gaW4gdGhlIHZpZXcgaXMgdGhlIHRvdGFsCm51bWJlciBv ZiBJTyBPcGVyYXRpb25zIGRvbmUgKGUuZy4gd3JpdGVzKS4gU28gYSBjZWxsIGluIHRoZSB2aWV3 IHdvdWxkCmJlLCBmb3IgZXhhbXBsZSwgdGhlIG51bWJlciBvZiBibG9ja3Mgb2YgcmVsYXRpb24g ZGF0YSB3cml0dGVuIGZyb20Kc2hhcmVkIGJ1ZmZlcnMgYnkgY2xpZW50IGJhY2tlbmRzIHNpbmNl IHRoZSBsYXN0IHN0YXRzIHJlc2V0LgoKSW4gYW50aWNpcGF0aW9uIG9mIHRyYWNraW5nIFdBTCBJ TyBhbmQgbm9uLWJsb2NrLW9yaWVudGVkIElPIChzdWNoIGFzCnRlbXBvcmFyeSBmaWxlIElPKSwg dGhlICJvcF9ieXRlcyIgY29sdW1uIHNwZWNpZmllcyB0aGUgdW5pdCBvZiB0aGUgInJlYWQiLAoi d3JpdHRlbiIsIGFuZCAiZXh0ZW5kZWQiIGNvbHVtbnMgZm9yIGEgZ2l2ZW4gcm93LgoKTm90ZSB0 aGF0IHNvbWUgb2YgdGhlIGNlbGxzIGluIHRoZSB2aWV3IGFyZSByZWR1bmRhbnQgd2l0aCBmaWVs ZHMgaW4KcGdfc3RhdF9iZ3dyaXRlciAoZS5nLiBidWZmZXJzX2JhY2tlbmQpLCBob3dldmVyIHRo ZXNlIGhhdmUgYmVlbiBrZXB0IGluCnBnX3N0YXRfYmd3cml0ZXIgZm9yIGJhY2t3YXJkcyBjb21w YXRpYmlsaXR5LiBEZXJpdmluZyB0aGUgcmVkdW5kYW50CnBnX3N0YXRfYmd3cml0ZXIgc3RhdHMg ZnJvbSB0aGUgSU8gb3BlcmF0aW9ucyBzdGF0cyBzdHJ1Y3R1cmVzIHdhcyBhbHNvCnByb2JsZW1h dGljIGR1ZSB0byB0aGUgc2VwYXJhdGUgcmVzZXQgdGFyZ2V0cyBmb3IgJ2Jnd3JpdGVyJyBhbmQg J2lvJy4KClN1Z2dlc3RlZCBieSBBbmRyZXMgRnJldW5kCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2Vt YW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5k IDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvZmxhdC8yMDIwMDEyNDE5NTIyNi5sdGg1Mml5ZHEybjJ1aWxxJTQwYWxh cDMuYW5hcmF6ZWwuZGUKLS0tCiBjb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5v dXQgfCAgMzEgKysrKwogY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNxbCAgICAgIHwg IDI0ICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgIHwgIDE1ICsr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgfCAxNTQgKysrKysrKysr KysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgIHwgICA5ICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICB8ICAxMiArKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQgICAgIHwgMjI1ICsrKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsICAgICAgICAgIHwgMTM4ICsr KysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgIHwg ICAxICsKIDkgZmlsZXMgY2hhbmdlZCwgNjA5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgYi9jb250cmliL2FtY2hlY2sv ZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggYzAxMDM2MTAyNS4uYzQ0MzM4ZmQ2ZSAxMDA2 NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CisrKyBiL2Nv bnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dApAQCAtNjYsNiArNjYsMTkgQEAg U0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKHJlbGF0aW9uIDo9ICdoZWFwdGVzdCcsIHNraXAg Oj0gJ0FMTC1WSVNJQkxFJyk7CiBJTlNFUlQgSU5UTyBoZWFwdGVzdCAoYSwgYikKIAkoU0VMRUNU IGdzLCByZXBlYXQoJ3gnLCBncykKIAkJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1MCkgZ3MpOwor LS0gcGdfc3RhdF9pbyB0ZXN0OgorLS0gdmVyaWZ5X2hlYXBhbSBhbHdheXMgdXNlcyBhIEJBU19C VUxLUkVBRCBCdWZmZXJBY2Nlc3NTdHJhdGVneS4gVGhpcyBhbGxvd3MKKy0tIHVzIHRvIHJlbGlh Ymx5IHRlc3QgdGhhdCBwZ19zdGF0X2lvIEJVTEtSRUFEIHJlYWRzIGFyZSBiZWluZyBjYXB0dXJl ZAorLS0gd2l0aG91dCByZWx5aW5nIG9uIHRoZSBzaXplIG9mIHNoYXJlZCBidWZmZXJzIG9yIG9u IGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24KKy0tIGxpa2UgQ1JFQVRFIERBVEFCQVNFLgorLS0KKy0t IENyZWF0ZSBhbiBhbHRlcm5hdGl2ZSB0YWJsZXNwYWNlIGFuZCBtb3ZlIHRoZSBoZWFwdGVzdCB0 YWJsZSB0byBpdCwgY2F1c2luZworLS0gaXQgdG8gYmUgcmV3cml0dGVuLgorU0VUIGFsbG93X2lu X3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZTsKK0NSRUFURSBUQUJMRVNQQUNFIHRlc3Rfc3RhdHMg TE9DQVRJT04gJyc7CitTRUxFQ1Qgc3VtKHJlYWQpIEFTIHN0YXRzX2J1bGtyZWFkc19iZWZvcmUK KyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAnYnVsa3JlYWQnIFxnc2V0CitB TFRFUiBUQUJMRSBoZWFwdGVzdCBTRVQgVEFCTEVTUEFDRSB0ZXN0X3N0YXRzOwogLS0gQ2hlY2sg dGhhdCB2YWxpZCBvcHRpb25zIGFyZSBub3QgcmVqZWN0ZWQgbm9yIGNvcnJ1cHRpb24gcmVwb3J0 ZWQKIC0tIGZvciBhIG5vbi1lbXB0eSB0YWJsZQogU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFt KHJlbGF0aW9uIDo9ICdoZWFwdGVzdCcsIHNraXAgOj0gJ25vbmUnKTsKQEAgLTg4LDYgKzEwMSwy MyBAQCBTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0ocmVsYXRpb24gOj0gJ2hlYXB0ZXN0Jywg c3RhcnRibG9jayA6PSAwLCBlbmRibG9jayA6PQogLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst LS0tLQogKDAgcm93cykKIAorLS0gdmVyaWZ5X2hlYXBhbSBzaG91bGQgaGF2ZSByZWFkIGluIHRo ZSBwYWdlIHdyaXR0ZW4gb3V0IGJ5CistLSAgIEFMVEVSIFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFD RSAuLi4KKy0tIGNhdXNpbmcgYW4gYWRkaXRpb25hbCBidWxrcmVhZCwgd2hpY2ggc2hvdWxkIGJl IHJlZmxlY3RlZCBpbiBwZ19zdGF0X2lvLgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzdW0ocmVhZCkgQVMgc3RhdHNfYnVsa3JlYWRzX2Fm dGVyCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ2J1bGtyZWFkJyBcZ3Nl dAorU0VMRUNUIDpzdGF0c19idWxrcmVhZHNfYWZ0ZXIgPiA6c3RhdHNfYnVsa3JlYWRzX2JlZm9y ZTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKIENSRUFURSBST0xFIHJl Z3Jlc3NfaGVhcHRlc3Rfcm9sZTsKIC0tIHZlcmlmeSBwZXJtaXNzaW9ucyBhcmUgY2hlY2tlZCAo ZXJyb3IgZHVlIHRvIGZ1bmN0aW9uIG5vdCBjYWxsYWJsZSkKIFNFVCBST0xFIHJlZ3Jlc3NfaGVh cHRlc3Rfcm9sZTsKQEAgLTE5NSw2ICsyMjUsNyBAQCBFUlJPUjogIGNhbm5vdCBjaGVjayByZWxh dGlvbiAidGVzdF9mb3JlaWduX3RhYmxlIgogREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90 IHN1cHBvcnRlZCBmb3IgZm9yZWlnbiB0YWJsZXMuCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhl YXB0ZXN0OworRFJPUCBUQUJMRVNQQUNFIHRlc3Rfc3RhdHM7CiBEUk9QIFRBQkxFIHRlc3RfcGFy dGl0aW9uOwogRFJPUCBUQUJMRSB0ZXN0X3BhcnRpdGlvbmVkOwogRFJPUCBPV05FRCBCWSByZWdy ZXNzX2hlYXB0ZXN0X3JvbGU7IC0tIHBlcm1pc3Npb25zCmRpZmYgLS1naXQgYS9jb250cmliL2Ft Y2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFw LnNxbAppbmRleCAyOThkZTY4ODZhLi4yMTBmOWIyMmUyIDEwMDY0NAotLS0gYS9jb250cmliL2Ft Y2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsCisrKyBiL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tf aGVhcC5zcWwKQEAgLTIwLDExICsyMCwyNiBAQCBTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0o cmVsYXRpb24gOj0gJ2hlYXB0ZXN0Jywgc2tpcCA6PSAnTk9ORScpOwogU0VMRUNUICogRlJPTSB2 ZXJpZnlfaGVhcGFtKHJlbGF0aW9uIDo9ICdoZWFwdGVzdCcsIHNraXAgOj0gJ0FMTC1GUk9aRU4n KTsKIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbShyZWxhdGlvbiA6PSAnaGVhcHRlc3QnLCBz a2lwIDo9ICdBTEwtVklTSUJMRScpOwogCisKIC0tIEFkZCBzb21lIGRhdGEgc28gc3Vic2VxdWVu dCB0ZXN0cyBhcmUgbm90IGVudGlyZWx5IHRyaXZpYWwKIElOU0VSVCBJTlRPIGhlYXB0ZXN0IChh LCBiKQogCShTRUxFQ1QgZ3MsIHJlcGVhdCgneCcsIGdzKQogCQlGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDUwKSBncyk7CiAKKy0tIHBnX3N0YXRfaW8gdGVzdDoKKy0tIHZlcmlmeV9oZWFwYW0gYWx3 YXlzIHVzZXMgYSBCQVNfQlVMS1JFQUQgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuIFRoaXMgYWxsb3dz CistLSB1cyB0byByZWxpYWJseSB0ZXN0IHRoYXQgcGdfc3RhdF9pbyBCVUxLUkVBRCByZWFkcyBh cmUgYmVpbmcgY2FwdHVyZWQKKy0tIHdpdGhvdXQgcmVseWluZyBvbiB0aGUgc2l6ZSBvZiBzaGFy ZWQgYnVmZmVycyBvciBvbiBhbiBleHBlbnNpdmUgb3BlcmF0aW9uCistLSBsaWtlIENSRUFURSBE QVRBQkFTRS4KKy0tCistLSBDcmVhdGUgYW4gYWx0ZXJuYXRpdmUgdGFibGVzcGFjZSBhbmQgbW92 ZSB0aGUgaGVhcHRlc3QgdGFibGUgdG8gaXQsIGNhdXNpbmcKKy0tIGl0IHRvIGJlIHJld3JpdHRl bi4KK1NFVCBhbGxvd19pbl9wbGFjZV90YWJsZXNwYWNlcyA9IHRydWU7CitDUkVBVEUgVEFCTEVT UEFDRSB0ZXN0X3N0YXRzIExPQ0FUSU9OICcnOworU0VMRUNUIHN1bShyZWFkKSBBUyBzdGF0c19i dWxrcmVhZHNfYmVmb3JlCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ2J1 bGtyZWFkJyBcZ3NldAorQUxURVIgVEFCTEUgaGVhcHRlc3QgU0VUIFRBQkxFU1BBQ0UgdGVzdF9z dGF0czsKKwogLS0gQ2hlY2sgdGhhdCB2YWxpZCBvcHRpb25zIGFyZSBub3QgcmVqZWN0ZWQgbm9y IGNvcnJ1cHRpb24gcmVwb3J0ZWQKIC0tIGZvciBhIG5vbi1lbXB0eSB0YWJsZQogU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKHJlbGF0aW9uIDo9ICdoZWFwdGVzdCcsIHNraXAgOj0gJ25vbmUn KTsKQEAgLTMyLDYgKzQ3LDE0IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbShyZWxhdGlv biA6PSAnaGVhcHRlc3QnLCBza2lwIDo9ICdhbGwtZnJvemVuJyk7CiBTRUxFQ1QgKiBGUk9NIHZl cmlmeV9oZWFwYW0ocmVsYXRpb24gOj0gJ2hlYXB0ZXN0Jywgc2tpcCA6PSAnYWxsLXZpc2libGUn KTsKIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbShyZWxhdGlvbiA6PSAnaGVhcHRlc3QnLCBz dGFydGJsb2NrIDo9IDAsIGVuZGJsb2NrIDo9IDApOwogCistLSB2ZXJpZnlfaGVhcGFtIHNob3Vs ZCBoYXZlIHJlYWQgaW4gdGhlIHBhZ2Ugd3JpdHRlbiBvdXQgYnkKKy0tICAgQUxURVIgVEFCTEUg Li4uIFNFVCBUQUJMRVNQQUNFIC4uLgorLS0gY2F1c2luZyBhbiBhZGRpdGlvbmFsIGJ1bGtyZWFk LCB3aGljaCBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHBnX3N0YXRfaW8uCitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1Qgc3VtKHJlYWQpIEFTIHN0YXRzX2J1bGtyZWFk c19hZnRlcgorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdidWxrcmVhZCcg XGdzZXQKK1NFTEVDVCA6c3RhdHNfYnVsa3JlYWRzX2FmdGVyID4gOnN0YXRzX2J1bGtyZWFkc19i ZWZvcmU7CisKIENSRUFURSBST0xFIHJlZ3Jlc3NfaGVhcHRlc3Rfcm9sZTsKIAogLS0gdmVyaWZ5 IHBlcm1pc3Npb25zIGFyZSBjaGVja2VkIChlcnJvciBkdWUgdG8gZnVuY3Rpb24gbm90IGNhbGxh YmxlKQpAQCAtMTEwLDYgKzEzMyw3IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgndGVz dF9mb3JlaWduX3RhYmxlJywKIAogLS0gY2xlYW51cAogRFJPUCBUQUJMRSBoZWFwdGVzdDsKK0RS T1AgVEFCTEVTUEFDRSB0ZXN0X3N0YXRzOwogRFJPUCBUQUJMRSB0ZXN0X3BhcnRpdGlvbjsKIERS T1AgVEFCTEUgdGVzdF9wYXJ0aXRpb25lZDsKIERST1AgT1dORUQgQlkgcmVncmVzc19oZWFwdGVz dF9yb2xlOyAtLSBwZXJtaXNzaW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmlu ZGV4IDQ0N2M5Yjk3MGYuLjcxNjQ2ZjVhZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwKQEAgLTExMTcsNiArMTExNywyMSBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2Jnd3JpdGVy IEFTCiAgICAgICAgIHBnX3N0YXRfZ2V0X2J1Zl9hbGxvYygpIEFTIGJ1ZmZlcnNfYWxsb2MsCiAg ICAgICAgIHBnX3N0YXRfZ2V0X2Jnd3JpdGVyX3N0YXRfcmVzZXRfdGltZSgpIEFTIHN0YXRzX3Jl c2V0OwogCitDUkVBVEUgVklFVyBwZ19zdGF0X2lvIEFTCitTRUxFQ1QKKyAgICAgICBiLmJhY2tl bmRfdHlwZSwKKyAgICAgICBiLmlvX2NvbnRleHQsCisgICAgICAgYi5pb19vYmplY3QsCisgICAg ICAgYi5yZWFkLAorICAgICAgIGIud3JpdHRlbiwKKyAgICAgICBiLmV4dGVuZGVkLAorICAgICAg IGIub3BfYnl0ZXMsCisgICAgICAgYi5ldmljdGVkLAorICAgICAgIGIucmV1c2VkLAorICAgICAg IGIuZmlsZXNfc3luY2VkLAorICAgICAgIGIuc3RhdHNfcmVzZXQKK0ZST00gcGdfc3RhdF9nZXRf aW8oKSBiOworCiBDUkVBVEUgVklFVyBwZ19zdGF0X3dhbCBBUwogICAgIFNFTEVDVAogICAgICAg ICB3LndhbF9yZWNvcmRzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCA0MmI4 OTBiODA2Li43MWM1ZmY5ZjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdz dGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAt MTIzNCw2ICsxMjM0LDE2MCBAQCBwZ19zdGF0X2dldF9idWZfYWxsb2MoUEdfRlVOQ1RJT05fQVJH UykKIAlQR19SRVRVUk5fSU5UNjQocGdzdGF0X2ZldGNoX3N0YXRfYmd3cml0ZXIoKS0+YnVmX2Fs bG9jKTsKIH0KIAorLyoKKyogV2hlbiBhZGRpbmcgYSBuZXcgY29sdW1uIHRvIHRoZSBwZ19zdGF0 X2lvIHZpZXcsIGFkZCBhIG5ldyBlbnVtIHZhbHVlCisqIGhlcmUgYWJvdmUgSU9fTlVNX0NPTFVN TlMuCisqLwordHlwZWRlZiBlbnVtIGlvX3N0YXRfY29sCit7CisJSU9fQ09MX0JBQ0tFTkRfVFlQ RSwKKwlJT19DT0xfSU9fQ09OVEVYVCwKKwlJT19DT0xfSU9fT0JKRUNULAorCUlPX0NPTF9SRUFE UywKKwlJT19DT0xfV1JJVEVTLAorCUlPX0NPTF9FWFRFTkRTLAorCUlPX0NPTF9DT05WRVJTSU9O LAorCUlPX0NPTF9FVklDVElPTlMsCisJSU9fQ09MX1JFVVNFUywKKwlJT19DT0xfRlNZTkNTLAor CUlPX0NPTF9SRVNFVF9USU1FLAorCUlPX05VTV9DT0xVTU5TLAorfSBpb19zdGF0X2NvbDsKKwor LyoKKyAqIFdoZW4gYWRkaW5nIGEgbmV3IElPT3AsIGFkZCBhIG5ldyBpb19zdGF0X2NvbCBhbmQg YWRkIGEgY2FzZSB0byB0aGlzCisgKiBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGNvcnJlc3BvbmRp bmcgaW9fc3RhdF9jb2wuCisgKi8KK3N0YXRpYyBpb19zdGF0X2NvbAorcGdzdGF0X2dldF9pb19v cF9pbmRleChJT09wIGlvX29wKQoreworCXN3aXRjaCAoaW9fb3ApCisJeworCQljYXNlIElPT1Bf RVZJQ1Q6CisJCQlyZXR1cm4gSU9fQ09MX0VWSUNUSU9OUzsKKwkJY2FzZSBJT09QX1JFQUQ6CisJ CQlyZXR1cm4gSU9fQ09MX1JFQURTOworCQljYXNlIElPT1BfUkVVU0U6CisJCQlyZXR1cm4gSU9f Q09MX1JFVVNFUzsKKwkJY2FzZSBJT09QX1dSSVRFOgorCQkJcmV0dXJuIElPX0NPTF9XUklURVM7 CisJCWNhc2UgSU9PUF9FWFRFTkQ6CisJCQlyZXR1cm4gSU9fQ09MX0VYVEVORFM7CisJCWNhc2Ug SU9PUF9GU1lOQzoKKwkJCXJldHVybiBJT19DT0xfRlNZTkNTOworCX0KKworCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgSU9PcCB2YWx1ZTogJWQiLCBpb19vcCk7CisJcGdfdW5yZWFjaGFibGUo KTsKK30KKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKK3N0YXRpYyBib29sCitwZ3N0YXRf aXN6ZXJvX2lvX29iamVjdChjb25zdCBQZ1N0YXRfQ291bnRlciAqb2JqKQoreworCWZvciAoSU9P cCBpb19vcCA9IElPT1BfRVZJQ1Q7IGlvX29wIDwgSU9PUF9OVU1fVFlQRVM7IGlvX29wKyspCisJ eworCQlpZiAob2JqW2lvX29wXSAhPSAwKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVy biB0cnVlOworfQorI2VuZGlmCisKK0RhdHVtCitwZ19zdGF0X2dldF9pbyhQR19GVU5DVElPTl9B UkdTKQoreworCVJldHVyblNldEluZm8gKnJzaW5mbzsKKwlQZ1N0YXRfSU8gICpiYWNrZW5kc19p b19zdGF0czsKKwlEYXR1bQkJcmVzZXRfdGltZTsKKworCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNp bmZvLCAwKTsKKwlyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87 CisKKwliYWNrZW5kc19pb19zdGF0cyA9IHBnc3RhdF9mZXRjaF9zdGF0X2lvKCk7CisKKwlyZXNl dF90aW1lID0gVGltZXN0YW1wVHpHZXREYXR1bShiYWNrZW5kc19pb19zdGF0cy0+c3RhdF9yZXNl dF90aW1lc3RhbXApOworCisJZm9yIChCYWNrZW5kVHlwZSBia3R5cGUgPSBCX0lOVkFMSUQ7IGJr dHlwZSA8IEJBQ0tFTkRfTlVNX1RZUEVTOyBia3R5cGUrKykKKwl7CisJCWJvb2wJCWJrdHlwZV90 cmFja2VkOworCQlEYXR1bQkJYmt0eXBlX2Rlc2MgPSBDU3RyaW5nR2V0VGV4dERhdHVtKEdldEJh Y2tlbmRUeXBlRGVzYyhia3R5cGUpKTsKKwkJUGdTdGF0X0JhY2tlbmRJTyAqYmt0eXBlX3N0YXRz ID0gJmJhY2tlbmRzX2lvX3N0YXRzLT5zdGF0c1tia3R5cGVdOworCisJCS8qCisJCSAqIEZvciB0 aG9zZSBCYWNrZW5kVHlwZXMgd2l0aG91dCBJTyBPcGVyYXRpb24gc3RhdHMsIHNraXAKKwkJICog cmVwcmVzZW50aW5nIHRoZW0gaW4gdGhlIHZpZXcgYWx0b2dldGhlci4gV2Ugc3RpbGwgbG9vcCB0 aHJvdWdoCisJCSAqIHRoZWlyIGNvdW50ZXJzIHNvIHRoYXQgd2UgY2FuIGFzc2VydCB0aGF0IGFs bCB2YWx1ZXMgYXJlIHplcm8uCisJCSAqLworCQlia3R5cGVfdHJhY2tlZCA9IHBnc3RhdF90cmFj a3NfaW9fYmt0eXBlKGJrdHlwZSk7CisKKwkJZm9yIChJT0NvbnRleHQgaW9fY29udGV4dCA9IElP Q09OVEVYVF9CVUxLUkVBRDsKKwkJCSBpb19jb250ZXh0IDwgSU9DT05URVhUX05VTV9UWVBFUzsg aW9fY29udGV4dCsrKQorCQl7CisJCQljb25zdCBjaGFyICpjb250ZXh0X25hbWUgPSBwZ3N0YXRf Z2V0X2lvX2NvbnRleHRfbmFtZShpb19jb250ZXh0KTsKKworCQkJZm9yIChJT09iamVjdCBpb19v YmogPSBJT09CSkVDVF9SRUxBVElPTjsKKwkJCQkgaW9fb2JqIDwgSU9PQkpFQ1RfTlVNX1RZUEVT OyBpb19vYmorKykKKwkJCXsKKwkJCQljb25zdCBjaGFyICpvYmpfbmFtZSA9IHBnc3RhdF9nZXRf aW9fb2JqZWN0X25hbWUoaW9fb2JqKTsKKworCQkJCURhdHVtCQl2YWx1ZXNbSU9fTlVNX0NPTFVN TlNdID0gezB9OworCQkJCWJvb2wJCW51bGxzW0lPX05VTV9DT0xVTU5TXSA9IHswfTsKKworCQkJ CS8qCisJCQkJICogU29tZSBjb21iaW5hdGlvbnMgb2YgSU9Db250ZXh0LCBJT09iamVjdCwgYW5k IEJhY2tlbmRUeXBlCisJCQkJICogYXJlIG5vdCB2YWxpZCBmb3IgYW55IHR5cGUgb2YgSU9PcC4g SW4gc3VjaCBjYXNlcywgb21pdCB0aGUKKwkJCQkgKiBlbnRpcmUgcm93IGZyb20gdGhlIHZpZXcu CisJCQkJICovCisJCQkJaWYgKCFia3R5cGVfdHJhY2tlZCB8fAorCQkJCQkhcGdzdGF0X3RyYWNr c19pb19vYmplY3QoYmt0eXBlLCBpb19jb250ZXh0LCBpb19vYmopKQorCQkJCXsKKwkJCQkJQXNz ZXJ0KHBnc3RhdF9pc3plcm9faW9fb2JqZWN0KGJrdHlwZV9zdGF0cy0+ZGF0YVtpb19jb250ZXh0 XVtpb19vYmpdKSk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKworCQkJCXZhbHVlc1tJT19DT0xf QkFDS0VORF9UWVBFXSA9IGJrdHlwZV9kZXNjOworCQkJCXZhbHVlc1tJT19DT0xfSU9fQ09OVEVY VF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbnRleHRfbmFtZSk7CisJCQkJdmFsdWVzW0lPX0NP TF9JT19PQkpFQ1RdID0gQ1N0cmluZ0dldFRleHREYXR1bShvYmpfbmFtZSk7CisJCQkJdmFsdWVz W0lPX0NPTF9SRVNFVF9USU1FXSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0ocmVzZXRfdGltZSk7CisK KwkJCQkvKgorCQkJCSAqIEhhcmQtY29kZSB0aGlzIHRvIHRoZSB2YWx1ZSBvZiBCTENLU1ogZm9y IG5vdy4gRnV0dXJlCisJCQkJICogdmFsdWVzIGNvdWxkIGluY2x1ZGUgWExPR19CTENLU1osIG9u Y2UgV0FMIElPIGlzIHRyYWNrZWQsCisJCQkJICogYW5kIGNvbnN0YW50IG11bHRpcGxpZXJzLCBv bmNlIG5vbi1ibG9jay1vcmllbnRlZCBJTyAoZS5nLgorCQkJCSAqIHRlbXBvcmFyeSBmaWxlIElP KSBpcyB0cmFja2VkLgorCQkJCSAqLworCQkJCXZhbHVlc1tJT19DT0xfQ09OVkVSU0lPTl0gPSBJ bnQ2NEdldERhdHVtKEJMQ0tTWik7CisKKwkJCQkvKgorCQkJCSAqIFNvbWUgY29tYmluYXRpb25z IG9mIEJhY2tlbmRUeXBlIGFuZCBJT09wLCBvZiBJT0NvbnRleHQgYW5kCisJCQkJICogSU9PcCwg YW5kIG9mIElPT2JqZWN0IGFuZCBJT09wIGFyZSBub3QgdHJhY2tlZC4gU2V0IHRoZXNlCisJCQkJ ICogY2VsbHMgaW4gdGhlIHZpZXcgTlVMTCBhbmQgYXNzZXJ0IHRoYXQgdGhlc2Ugc3RhdHMgYXJl IHplcm8KKwkJCQkgKiBhcyBleHBlY3RlZC4KKwkJCQkgKi8KKwkJCQlmb3IgKElPT3AgaW9fb3Ag PSBJT09QX0VWSUNUOyBpb19vcCA8IElPT1BfTlVNX1RZUEVTOyBpb19vcCsrKQorCQkJCXsKKwkJ CQkJaW50CQkJY29sX2lkeCA9IHBnc3RhdF9nZXRfaW9fb3BfaW5kZXgoaW9fb3ApOworCisJCQkJ CW51bGxzW2NvbF9pZHhdID0gIXBnc3RhdF90cmFja3NfaW9fb3AoYmt0eXBlLCBpb19jb250ZXh0 LCBpb19vYmosIGlvX29wKTsKKworCQkJCQlpZiAoIW51bGxzW2NvbF9pZHhdKQorCQkJCQkJdmFs dWVzW2NvbF9pZHhdID0KKwkJCQkJCQlJbnQ2NEdldERhdHVtKGJrdHlwZV9zdGF0cy0+ZGF0YVtp b19jb250ZXh0XVtpb19vYmpdW2lvX29wXSk7CisJCQkJCWVsc2UKKwkJCQkJCUFzc2VydChia3R5 cGVfc3RhdHMtPmRhdGFbaW9fY29udGV4dF1baW9fb2JqXVtpb19vcF0gPT0gMCk7CisJCQkJfQor CisJCQkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0 RGVzYywKKwkJCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVy biAoRGF0dW0pIDA7Cit9CisKIC8qCiAgKiBSZXR1cm5zIHN0YXRpc3RpY3Mgb2YgV0FMIGFjdGl2 aXR5CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDM4MTBkZTdiMjIuLjE5OTRhNGNl MzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTY5MCw2ICs1NjkwLDE1IEBACiAgIHBy b25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2J1Zl9hbGxvYycsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJv cGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4g JycsIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfYnVmX2FsbG9jJyB9LAogCit7IG9pZCA9PiAnODQ1 OScsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBwZXIgYmFja2VuZCB0eXBlIElPIHN0YXRpc3RpY3Mn LAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9pbycsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAg cHJvcm93cyA9PiAnMzAnLCBwcm9yZXRzZXQgPT4gJ3QnLAorICBwcm9wYXJhbGxlbCA9PiAncics IHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9hbGxhcmd0 eXBlcyA9PiAne3RleHQsdGV4dCx0ZXh0LGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGlu dDgsdGltZXN0YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sbyxv LG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tiYWNrZW5kX3R5cGUsaW9fY29udGV4dCxpb19vYmpl Y3QscmVhZCx3cml0dGVuLGV4dGVuZGVkLG9wX2J5dGVzLGV2aWN0ZWQscmV1c2VkLGZpbGVzX3N5 bmNlZCxzdGF0c19yZXNldH0nLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2lvJyB9LAorCiB7 IG9pZCA9PiAnMTEzNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBpbmZvcm1hdGlvbiBhYm91dCBX QUwgYWN0aXZpdHknLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF93YWwnLCBwcm9pc3N0cmlj dCA9PiAnZicsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9y ZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uMmQwZTdkYzVjNSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4NzYsNiArMTg3NiwxOCBAQCBwZ19zdGF0X2dzc2FwaXwg U0VMRUNUIHMucGlkLAogICAgIHMuZ3NzX2VuYyBBUyBlbmNyeXB0ZWQKICAgIEZST00gcGdfc3Rh dF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBw bGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQs IHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNs aWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFj a2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xi aXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3Nz X2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCiAgIFdIRVJF IChzLmNsaWVudF9wb3J0IElTIE5PVCBOVUxMKTsKK3BnX3N0YXRfaW98IFNFTEVDVCBiLmJhY2tl bmRfdHlwZSwKKyAgICBiLmlvX2NvbnRleHQsCisgICAgYi5pb19vYmplY3QsCisgICAgYi5yZWFk LAorICAgIGIud3JpdHRlbiwKKyAgICBiLmV4dGVuZGVkLAorICAgIGIub3BfYnl0ZXMsCisgICAg Yi5ldmljdGVkLAorICAgIGIucmV1c2VkLAorICAgIGIuZmlsZXNfc3luY2VkLAorICAgIGIuc3Rh dHNfcmVzZXQKKyAgIEZST00gcGdfc3RhdF9nZXRfaW8oKSBiKGJhY2tlbmRfdHlwZSwgaW9fY29u dGV4dCwgaW9fb2JqZWN0LCByZWFkLCB3cml0dGVuLCBleHRlbmRlZCwgb3BfYnl0ZXMsIGV2aWN0 ZWQsIHJldXNlZCwgZmlsZXNfc3luY2VkLCBzdGF0c19yZXNldCk7CiBwZ19zdGF0X3Byb2dyZXNz X2FuYWx5emV8IFNFTEVDVCBzLnBpZCwKICAgICBzLmRhdGlkLAogICAgIGQuZGF0bmFtZSwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKaW5kZXggMWQ4NDQwN2EwMy4uMDEwNzBhNTNhNCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKQEAgLTExMjYsNCArMTEyNiwyMjkgQEAg U0VMRUNUIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl9zdGF0cyhOVUxMKTsKICAKICgxIHJvdykK IAorLS0gVGVzdCB0aGF0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgdHJhY2tlZCBpbiBw Z19zdGF0X2lvOgorLS0gLSByZWFkcyBvZiB0YXJnZXQgYmxvY2tzIGludG8gc2hhcmVkIGJ1ZmZl cnMKKy0tIC0gd3JpdGVzIG9mIHNoYXJlZCBidWZmZXJzIHRvIHBlcm1hbmVudCBzdG9yYWdlCist LSAtIGV4dGVuZHMgb2YgcmVsYXRpb25zIHVzaW5nIHNoYXJlZCBidWZmZXJzCistLSAtIGZzeW5j cyBkb25lIHRvIGVuc3VyZSB0aGUgZHVyYWJpbGl0eSBvZiBkYXRhIGRpcnR5aW5nIHNoYXJlZCBi dWZmZXJzCistLSBUaGVyZSBpcyBubyB0ZXN0IGZvciBibG9ja3MgZXZpY3RlZCBmcm9tIHNoYXJl ZCBidWZmZXJzLCBiZWNhdXNlIHdlIGNhbm5vdAorLS0gYmUgc3VyZSBvZiB0aGUgc3RhdGUgb2Yg c2hhcmVkIGJ1ZmZlcnMgYXQgdGhlIHBvaW50IHRoZSB0ZXN0IGlzIHJ1bi4KKy0tIENyZWF0ZSBh IHJlZ3VsYXIgdGFibGUgYW5kIGluc2VydCBzb21lIGRhdGEgdG8gZ2VuZXJhdGUgSU9DT05URVhU X05PUk1BTAorLS0gZXh0ZW5kcy4KK1NFTEVDVCBzdW0oZXh0ZW5kZWQpIEFTIGlvX3N1bV9zaGFy ZWRfZXh0ZW5kc19iZWZvcmUKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAn bm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0gJ3JlbGF0aW9uJyBcZ3NldAorQ1JFQVRFIFRBQkxFIHRl c3RfaW9fc2hhcmVkKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRlc3RfaW9fc2hhcmVkIFNFTEVDVCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKWk7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHN1bShleHRlbmRlZCkgQVMgaW9fc3VtX3No YXJlZF9leHRlbmRzX2FmdGVyCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0g J25vcm1hbCcgQU5EIGlvX29iamVjdCA9ICdyZWxhdGlvbicgIFxnc2V0CitTRUxFQ1QgOmlvX3N1 bV9zaGFyZWRfZXh0ZW5kc19hZnRlciA+IDppb19zdW1fc2hhcmVkX2V4dGVuZHNfYmVmb3JlOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gQWZ0ZXIgYSBjaGVja3Bv aW50LCB0aGVyZSBzaG91bGQgYmUgc29tZSBhZGRpdGlvbmFsIElPQ09OVEVYVF9OT1JNQUwgd3Jp dGVzCistLSBhbmQgZnN5bmNzLgorLS0gVGhlIHNlY29uZCBjaGVja3BvaW50IGVuc3VyZXMgdGhh dCBzdGF0cyBmcm9tIHRoZSBmaXJzdCBjaGVja3BvaW50IGhhdmUgYmVlbgorLS0gcmVwb3J0ZWQg YW5kIHByb3RlY3RzIGFnYWluc3QgYW55IHBvdGVudGlhbCByYWNlcyBhbW9uZ3N0IHRoZSB0YWJs ZQorLS0gY3JlYXRpb24sIGEgcG9zc2libGUgdGltaW5nLXRyaWdnZXJlZCBjaGVja3BvaW50LCBh bmQgdGhlIGV4cGxpY2l0CistLSBjaGVja3BvaW50IGluIHRoZSB0ZXN0LgorU0VMRUNUIHN1bSh3 cml0dGVuKSBBUyBpb19zdW1fc2hhcmVkX3dyaXRlc19iZWZvcmUKKyAgRlJPTSBwZ19zdGF0X2lv IFdIRVJFIGlvX2NvbnRleHQgPSAnbm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0gJ3JlbGF0aW9uJyBc Z3NldAorU0VMRUNUIHN1bShmaWxlc19zeW5jZWQpIEFTIGlvX3N1bV9zaGFyZWRfZnN5bmNzX2Jl Zm9yZQorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdub3JtYWwnIEFORCBp b19vYmplY3QgPSAncmVsYXRpb24nIFxnc2V0CitDSEVDS1BPSU5UOworQ0hFQ0tQT0lOVDsKK1NF TEVDVCBzdW0od3JpdHRlbikgQVMgaW9fc3VtX3NoYXJlZF93cml0ZXNfYWZ0ZXIKKyAgRlJPTSBw Z19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAnbm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0gJ3Jl bGF0aW9uJyAgXGdzZXQKK1NFTEVDVCBzdW0oZmlsZXNfc3luY2VkKSBBUyBpb19zdW1fc2hhcmVk X2ZzeW5jc19hZnRlcgorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdub3Jt YWwnIEFORCBpb19vYmplY3QgPSAncmVsYXRpb24nICBcZ3NldAorU0VMRUNUIDppb19zdW1fc2hh cmVkX3dyaXRlc19hZnRlciA+IDppb19zdW1fc2hhcmVkX3dyaXRlc19iZWZvcmU7CisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgY3VycmVudF9zZXR0aW5nKCdm c3luYycpID0gJ29mZicgT1IgOmlvX3N1bV9zaGFyZWRfZnN5bmNzX2FmdGVyID4gOmlvX3N1bV9z aGFyZWRfZnN5bmNzX2JlZm9yZTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKKy0tIENoYW5nZSB0aGUgdGFibGVzcGFjZSBzbyB0aGF0IHRoZSB0YWJsZSBpcyByZXdyaXR0 ZW4gZGlyZWN0bHksIHRoZW4gU0VMRUNUCistLSBmcm9tIGl0IHRvIGNhdXNlIGl0IHRvIGJlIHJl YWQgYmFjayBpbnRvIHNoYXJlZCBidWZmZXJzLgorU0VUIGFsbG93X2luX3BsYWNlX3RhYmxlc3Bh Y2VzID0gdHJ1ZTsKK0NSRUFURSBUQUJMRVNQQUNFIHRlc3RfaW9fc2hhcmVkX3N0YXRzX3RibHNw YyBMT0NBVElPTiAnJzsKK1NFTEVDVCBzdW0ocmVhZCkgQVMgaW9fc3VtX3NoYXJlZF9yZWFkc19i ZWZvcmUKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAnbm9ybWFsJyBBTkQg aW9fb2JqZWN0ID0gJ3JlbGF0aW9uJyBcZ3NldAorQUxURVIgVEFCTEUgdGVzdF9pb19zaGFyZWQg U0VUIFRBQkxFU1BBQ0UgdGVzdF9pb19zaGFyZWRfc3RhdHNfdGJsc3BjOworLS0gU0VMRUNUIGZy b20gdGhlIHRhYmxlIHNvIHRoYXQgaXQgaXMgcmVhZCBpbnRvIHNoYXJlZCBidWZmZXJzIGFuZCBp b19jb250ZXh0CistLSAnbm9ybWFsJywgaW9fb2JqZWN0ICdyZWxhdGlvbicgcmVhZHMgYXJlIGNv dW50ZWQuCitTRUxFQ1QgQ09VTlQoKikgRlJPTSB0ZXN0X2lvX3NoYXJlZDsKKyBjb3VudCAKKy0t LS0tLS0KKyAgIDEwMAorKDEgcm93KQorCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIHN1bShyZWFkKSBBUyBpb19zdW1fc2hhcmVkX3JlYWRz X2FmdGVyCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5E IGlvX29iamVjdCA9ICdyZWxhdGlvbicgIFxnc2V0CitTRUxFQ1QgOmlvX3N1bV9zaGFyZWRfcmVh ZHNfYWZ0ZXIgPiA6aW9fc3VtX3NoYXJlZF9yZWFkc19iZWZvcmU7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfaW9fc2hhcmVkOworRFJPUCBU QUJMRVNQQUNFIHRlc3RfaW9fc2hhcmVkX3N0YXRzX3RibHNwYzsKKy0tIFRlc3QgdGhhdCB0aGUg Zm9sbG93IElPQ09OVEVYVF9MT0NBTCBJT09wcyBhcmUgdHJhY2tlZCBpbiBwZ19zdGF0X2lvOgor LS0gLSBldmljdGlvbiBvZiBsb2NhbCBidWZmZXJzIGluIG9yZGVyIHRvIHJldXNlIHRoZW0KKy0t IC0gcmVhZHMgb2YgdGVtcG9yYXJ5IHRhYmxlIGJsb2NrcyBpbnRvIGxvY2FsIGJ1ZmZlcnMKKy0t IC0gd3JpdGVzIG9mIGxvY2FsIGJ1ZmZlcnMgdG8gcGVybWFuZW50IHN0b3JhZ2UKKy0tIC0gZXh0 ZW5kcyBvZiB0ZW1wb3JhcnkgdGFibGVzCistLSBTZXQgdGVtcF9idWZmZXJzIHRvIGEgbG93IHZh bHVlIHNvIHRoYXQgd2UgY2FuIHRyaWdnZXIgd3JpdGVzIHdpdGggZmV3ZXIKKy0tIGluc2VydGVk IHR1cGxlcy4gRG8gc28gaW4gYSBuZXcgc2Vzc2lvbiBpbiBjYXNlIHRlbXBvcmFyeSB0YWJsZXMg aGF2ZSBiZWVuCistLSBhY2Nlc3NlZCBieSBwcmV2aW91cyB0ZXN0cyBpbiB0aGlzIHNlc3Npb24u CitcYworU0VUIHRlbXBfYnVmZmVycyBUTyAnMU1CJzsKK0NSRUFURSBURU1QT1JBUlkgVEFCTEUg dGVzdF9pb19sb2NhbChhIGludCwgYiBURVhUKTsKK1NFTEVDVCBzdW0oZXh0ZW5kZWQpIEFTIGlv X3N1bV9sb2NhbF9leHRlbmRzX2JlZm9yZQorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29u dGV4dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAndGVtcCByZWxhdGlvbicgXGdzZXQKK1NF TEVDVCBzdW0oZXZpY3RlZCkgQVMgaW9fc3VtX2xvY2FsX2V2aWN0aW9uc19iZWZvcmUKKyAgRlJP TSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAnbm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0g J3RlbXAgcmVsYXRpb24nIFxnc2V0CitTRUxFQ1Qgc3VtKHdyaXR0ZW4pIEFTIGlvX3N1bV9sb2Nh bF93cml0ZXNfYmVmb3JlCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25v cm1hbCcgQU5EIGlvX29iamVjdCA9ICd0ZW1wIHJlbGF0aW9uJyBcZ3NldAorLS0gSW5zZXJ0IHR1 cGxlcyBpbnRvIHRoZSB0ZW1wb3JhcnkgdGFibGUsIGdlbmVyYXRpbmcgZXh0ZW5kcyBpbiB0aGUg c3RhdHMuCistLSBJbnNlcnQgZW5vdWdoIHZhbHVlcyB0aGF0IHdlIG5lZWQgdG8gcmV1c2UgYW5k IHdyaXRlIG91dCBkaXJ0eSBsb2NhbAorLS0gYnVmZmVycywgZ2VuZXJhdGluZyBldmljdGlvbnMg YW5kIHdyaXRlcy4KK0lOU0VSVCBJTlRPIHRlc3RfaW9fbG9jYWwgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygxLCA4MDAwKSBhcyBpZCwgcmVwZWF0KCdhJywgMTAwKTsKK1NFTEVDVCBzdW0ocmVhZCkg QVMgaW9fc3VtX2xvY2FsX3JlYWRzX2JlZm9yZQorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9f Y29udGV4dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAndGVtcCByZWxhdGlvbicgXGdzZXQK Ky0tIFJlYWQgaW4gZXZpY3RlZCBidWZmZXJzLCBnZW5lcmF0aW5nIHJlYWRzLgorU0VMRUNUIENP VU5UKCopIEZST00gdGVzdF9pb19sb2NhbDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgODAwMAorKDEg cm93KQorCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIHN1bShldmljdGVkKSBBUyBpb19zdW1fbG9jYWxfZXZpY3Rpb25zX2FmdGVyCisgIEZS T00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5EIGlvX29iamVjdCA9 ICd0ZW1wIHJlbGF0aW9uJyAgXGdzZXQKK1NFTEVDVCBzdW0ocmVhZCkgQVMgaW9fc3VtX2xvY2Fs X3JlYWRzX2FmdGVyCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1h bCcgQU5EIGlvX29iamVjdCA9ICd0ZW1wIHJlbGF0aW9uJyAgXGdzZXQKK1NFTEVDVCBzdW0od3Jp dHRlbikgQVMgaW9fc3VtX2xvY2FsX3dyaXRlc19hZnRlcgorICBGUk9NIHBnX3N0YXRfaW8gV0hF UkUgaW9fY29udGV4dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAndGVtcCByZWxhdGlvbicg IFxnc2V0CitTRUxFQ1Qgc3VtKGV4dGVuZGVkKSBBUyBpb19zdW1fbG9jYWxfZXh0ZW5kc19hZnRl cgorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdub3JtYWwnIEFORCBpb19v YmplY3QgPSAndGVtcCByZWxhdGlvbicgIFxnc2V0CitTRUxFQ1QgOmlvX3N1bV9sb2NhbF9ldmlj dGlvbnNfYWZ0ZXIgPiA6aW9fc3VtX2xvY2FsX2V2aWN0aW9uc19iZWZvcmU7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgOmlvX3N1bV9sb2NhbF9yZWFkc19h ZnRlciA+IDppb19zdW1fbG9jYWxfcmVhZHNfYmVmb3JlOworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VMRUNUIDppb19zdW1fbG9jYWxfd3JpdGVzX2FmdGVyID4gOmlv X3N1bV9sb2NhbF93cml0ZXNfYmVmb3JlOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygx IHJvdykKKworU0VMRUNUIDppb19zdW1fbG9jYWxfZXh0ZW5kc19hZnRlciA+IDppb19zdW1fbG9j YWxfZXh0ZW5kc19iZWZvcmU7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQor CitSRVNFVCB0ZW1wX2J1ZmZlcnM7CistLSBUZXN0IHRoYXQgcmV1c2Ugb2Ygc3RyYXRlZ3kgYnVm ZmVycyBhbmQgcmVhZHMgb2YgYmxvY2tzIGludG8gdGhlc2UgcmV1c2VkCistLSBidWZmZXJzIHdo aWxlIFZBQ1VVTWluZyBhcmUgdHJhY2tlZCBpbiBwZ19zdGF0X2lvLgorLS0gU2V0IHdhbF9za2lw X3RocmVzaG9sZCBzbWFsbGVyIHRoYW4gdGhlIGV4cGVjdGVkIHNpemUgb2YKKy0tIHRlc3RfaW9f dmFjX3N0cmF0ZWd5IHNvIHRoYXQsIGV2ZW4gaWYgd2FsX2xldmVsIGlzIG1pbmltYWwsIFZBQ1VV TSBGVUxMIHdpbGwKKy0tIGZzeW5jIHRoZSBuZXdseSByZXdyaXR0ZW4gdGVzdF9pb192YWNfc3Ry YXRlZ3kgaW5zdGVhZCBvZiB3cml0aW5nIGl0IHRvIFdBTC4KKy0tIFdyaXRpbmcgaXQgdG8gV0FM IHdpbGwgcmVzdWx0IGluIHRoZSBuZXdseSB3cml0dGVuIHJlbGF0aW9uIHBhZ2VzIGJlaW5nIGlu CistLSBzaGFyZWQgYnVmZmVycyAtLSBwcmV2ZW50aW5nIHVzIGZyb20gdGVzdGluZyBCQVNfVkFD VVVNIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5CistLSByZWFkcy4KK1NFVCB3YWxfc2tpcF90aHJlc2hv bGQgPSAnMSBrQic7CitTRUxFQ1Qgc3VtKHJldXNlZCkgQVMgaW9fc3VtX3ZhY19zdHJhdGVneV9y ZXVzZXNfYmVmb3JlIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ3ZhY3V1bScg XGdzZXQKK1NFTEVDVCBzdW0ocmVhZCkgQVMgaW9fc3VtX3ZhY19zdHJhdGVneV9yZWFkc19iZWZv cmUgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAndmFjdXVtJyBcZ3NldAorQ1JF QVRFIFRBQkxFIHRlc3RfaW9fdmFjX3N0cmF0ZWd5KGEgaW50LCBiIGludCkgV0lUSCAoYXV0b3Zh Y3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7CitJTlNFUlQgSU5UTyB0ZXN0X2lvX3ZhY19zdHJhdGVn eSBTRUxFQ1QgaSwgaSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCA4MDAwKWk7CistLSBFbnN1cmUg dGhhdCB0aGUgbmV4dCBWQUNVVU0gd2lsbCBuZWVkIHRvIHBlcmZvcm0gSU8gYnkgcmV3cml0aW5n IHRoZSB0YWJsZQorLS0gZmlyc3Qgd2l0aCBWQUNVVU0gKEZVTEwpLgorVkFDVVVNIChGVUxMKSB0 ZXN0X2lvX3ZhY19zdHJhdGVneTsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCkgdGVzdF9pb192YWNfc3Ry YXRlZ3k7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIHN1bShyZXVzZWQpIEFTIGlvX3N1bV92YWNfc3RyYXRlZ3lfcmV1c2VzX2FmdGVyIEZS T00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ3ZhY3V1bScgXGdzZXQKK1NFTEVDVCBz dW0ocmVhZCkgQVMgaW9fc3VtX3ZhY19zdHJhdGVneV9yZWFkc19hZnRlciBGUk9NIHBnX3N0YXRf aW8gV0hFUkUgaW9fY29udGV4dCA9ICd2YWN1dW0nIFxnc2V0CitTRUxFQ1QgOmlvX3N1bV92YWNf c3RyYXRlZ3lfcmVhZHNfYWZ0ZXIgPiA6aW9fc3VtX3ZhY19zdHJhdGVneV9yZWFkc19iZWZvcmU7 CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgOmlvX3N1bV92 YWNfc3RyYXRlZ3lfcmV1c2VzX2FmdGVyID4gOmlvX3N1bV92YWNfc3RyYXRlZ3lfcmV1c2VzX2Jl Zm9yZTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1JFU0VUIHdhbF9z a2lwX3RocmVzaG9sZDsKKy0tIFRlc3QgdGhhdCBleHRlbmRzIGRvbmUgYnkgYSBDVEFTLCB3aGlj aCB1c2VzIGEgQkFTX0JVTEtXUklURQorLS0gQnVmZmVyQWNjZXNzU3RyYXRlZ3ksIGFyZSB0cmFj a2VkIGluIHBnX3N0YXRfaW8uCitTRUxFQ1Qgc3VtKGV4dGVuZGVkKSBBUyBpb19zdW1fYnVsa3dy aXRlX3N0cmF0ZWd5X2V4dGVuZHNfYmVmb3JlIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250 ZXh0ID0gJ2J1bGt3cml0ZScgXGdzZXQKK0NSRUFURSBUQUJMRSB0ZXN0X2lvX2J1bGt3cml0ZV9z dHJhdGVneSBBUyBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMClpOworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzdW0oZXh0 ZW5kZWQpIEFTIGlvX3N1bV9idWxrd3JpdGVfc3RyYXRlZ3lfZXh0ZW5kc19hZnRlciBGUk9NIHBn X3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdidWxrd3JpdGUnIFxnc2V0CitTRUxFQ1QgOmlv X3N1bV9idWxrd3JpdGVfc3RyYXRlZ3lfZXh0ZW5kc19hZnRlciA+IDppb19zdW1fYnVsa3dyaXRl X3N0cmF0ZWd5X2V4dGVuZHNfYmVmb3JlOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygx IHJvdykKKworLS0gVGVzdCBJTyBzdGF0cyByZXNldAorU0VMRUNUIHN1bShldmljdGVkKSArIHN1 bShyZXVzZWQpICsgc3VtKGV4dGVuZGVkKSArIHN1bShmaWxlc19zeW5jZWQpICsgc3VtKHJlYWQp ICsgc3VtKHdyaXR0ZW4pIEFTIGlvX3N0YXRzX3ByZV9yZXNldCBGUk9NIHBnX3N0YXRfaW8gXGdz ZXQKK1NFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgnaW8nKTsKKyBwZ19zdGF0X3Jlc2V0X3No YXJlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHN1bShl dmljdGVkKSArIHN1bShyZXVzZWQpICsgc3VtKGV4dGVuZGVkKSArIHN1bShmaWxlc19zeW5jZWQp ICsgc3VtKHJlYWQpICsgc3VtKHdyaXR0ZW4pIEFTIGlvX3N0YXRzX3Bvc3RfcmVzZXQgRlJPTSBw Z19zdGF0X2lvIFxnc2V0CitTRUxFQ1QgOmlvX3N0YXRzX3Bvc3RfcmVzZXQgPCA6aW9fc3RhdHNf cHJlX3Jlc2V0OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwogLS0gRW5k IG9mIFN0YXRzIFRlc3QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbAppbmRleCBiNGQ2NzUzYzcxLi45NjJh ZTViMjgxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0cy5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsCkBAIC01MzYsNCArNTM2LDE0MiBAQCBTRUxF Q1QgcGdfc3RhdF9nZXRfcmVwbGljYXRpb25fc2xvdChOVUxMKTsKIFNFTEVDVCBwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb25fc3RhdHMoTlVMTCk7CiAKIAorLS0gVGVzdCB0aGF0IHRoZSBmb2xsb3dp bmcgb3BlcmF0aW9ucyBhcmUgdHJhY2tlZCBpbiBwZ19zdGF0X2lvOgorLS0gLSByZWFkcyBvZiB0 YXJnZXQgYmxvY2tzIGludG8gc2hhcmVkIGJ1ZmZlcnMKKy0tIC0gd3JpdGVzIG9mIHNoYXJlZCBi dWZmZXJzIHRvIHBlcm1hbmVudCBzdG9yYWdlCistLSAtIGV4dGVuZHMgb2YgcmVsYXRpb25zIHVz aW5nIHNoYXJlZCBidWZmZXJzCistLSAtIGZzeW5jcyBkb25lIHRvIGVuc3VyZSB0aGUgZHVyYWJp bGl0eSBvZiBkYXRhIGRpcnR5aW5nIHNoYXJlZCBidWZmZXJzCisKKy0tIFRoZXJlIGlzIG5vIHRl c3QgZm9yIGJsb2NrcyBldmljdGVkIGZyb20gc2hhcmVkIGJ1ZmZlcnMsIGJlY2F1c2Ugd2UgY2Fu bm90CistLSBiZSBzdXJlIG9mIHRoZSBzdGF0ZSBvZiBzaGFyZWQgYnVmZmVycyBhdCB0aGUgcG9p bnQgdGhlIHRlc3QgaXMgcnVuLgorCistLSBDcmVhdGUgYSByZWd1bGFyIHRhYmxlIGFuZCBpbnNl cnQgc29tZSBkYXRhIHRvIGdlbmVyYXRlIElPQ09OVEVYVF9OT1JNQUwKKy0tIGV4dGVuZHMuCitT RUxFQ1Qgc3VtKGV4dGVuZGVkKSBBUyBpb19zdW1fc2hhcmVkX2V4dGVuZHNfYmVmb3JlCisgIEZS T00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5EIGlvX29iamVjdCA9 ICdyZWxhdGlvbicgXGdzZXQKK0NSRUFURSBUQUJMRSB0ZXN0X2lvX3NoYXJlZChhIGludCk7CitJ TlNFUlQgSU5UTyB0ZXN0X2lvX3NoYXJlZCBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMClpOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIHN1bShl eHRlbmRlZCkgQVMgaW9fc3VtX3NoYXJlZF9leHRlbmRzX2FmdGVyCisgIEZST00gcGdfc3RhdF9p byBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5EIGlvX29iamVjdCA9ICdyZWxhdGlvbicg IFxnc2V0CitTRUxFQ1QgOmlvX3N1bV9zaGFyZWRfZXh0ZW5kc19hZnRlciA+IDppb19zdW1fc2hh cmVkX2V4dGVuZHNfYmVmb3JlOworCistLSBBZnRlciBhIGNoZWNrcG9pbnQsIHRoZXJlIHNob3Vs ZCBiZSBzb21lIGFkZGl0aW9uYWwgSU9DT05URVhUX05PUk1BTCB3cml0ZXMKKy0tIGFuZCBmc3lu Y3MuCistLSBUaGUgc2Vjb25kIGNoZWNrcG9pbnQgZW5zdXJlcyB0aGF0IHN0YXRzIGZyb20gdGhl IGZpcnN0IGNoZWNrcG9pbnQgaGF2ZSBiZWVuCistLSByZXBvcnRlZCBhbmQgcHJvdGVjdHMgYWdh aW5zdCBhbnkgcG90ZW50aWFsIHJhY2VzIGFtb25nc3QgdGhlIHRhYmxlCistLSBjcmVhdGlvbiwg YSBwb3NzaWJsZSB0aW1pbmctdHJpZ2dlcmVkIGNoZWNrcG9pbnQsIGFuZCB0aGUgZXhwbGljaXQK Ky0tIGNoZWNrcG9pbnQgaW4gdGhlIHRlc3QuCitTRUxFQ1Qgc3VtKHdyaXR0ZW4pIEFTIGlvX3N1 bV9zaGFyZWRfd3JpdGVzX2JlZm9yZQorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29udGV4 dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAncmVsYXRpb24nIFxnc2V0CitTRUxFQ1Qgc3Vt KGZpbGVzX3N5bmNlZCkgQVMgaW9fc3VtX3NoYXJlZF9mc3luY3NfYmVmb3JlCisgIEZST00gcGdf c3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5EIGlvX29iamVjdCA9ICdyZWxh dGlvbicgXGdzZXQKK0NIRUNLUE9JTlQ7CitDSEVDS1BPSU5UOworU0VMRUNUIHN1bSh3cml0dGVu KSBBUyBpb19zdW1fc2hhcmVkX3dyaXRlc19hZnRlcgorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUg aW9fY29udGV4dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAncmVsYXRpb24nICBcZ3NldAor U0VMRUNUIHN1bShmaWxlc19zeW5jZWQpIEFTIGlvX3N1bV9zaGFyZWRfZnN5bmNzX2FmdGVyCisg IEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5EIGlvX29iamVj dCA9ICdyZWxhdGlvbicgIFxnc2V0CisKK1NFTEVDVCA6aW9fc3VtX3NoYXJlZF93cml0ZXNfYWZ0 ZXIgPiA6aW9fc3VtX3NoYXJlZF93cml0ZXNfYmVmb3JlOworU0VMRUNUIGN1cnJlbnRfc2V0dGlu ZygnZnN5bmMnKSA9ICdvZmYnIE9SIDppb19zdW1fc2hhcmVkX2ZzeW5jc19hZnRlciA+IDppb19z dW1fc2hhcmVkX2ZzeW5jc19iZWZvcmU7CisKKy0tIENoYW5nZSB0aGUgdGFibGVzcGFjZSBzbyB0 aGF0IHRoZSB0YWJsZSBpcyByZXdyaXR0ZW4gZGlyZWN0bHksIHRoZW4gU0VMRUNUCistLSBmcm9t IGl0IHRvIGNhdXNlIGl0IHRvIGJlIHJlYWQgYmFjayBpbnRvIHNoYXJlZCBidWZmZXJzLgorU0VU IGFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZTsKK0NSRUFURSBUQUJMRVNQQUNFIHRl c3RfaW9fc2hhcmVkX3N0YXRzX3RibHNwYyBMT0NBVElPTiAnJzsKK1NFTEVDVCBzdW0ocmVhZCkg QVMgaW9fc3VtX3NoYXJlZF9yZWFkc19iZWZvcmUKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlv X2NvbnRleHQgPSAnbm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0gJ3JlbGF0aW9uJyBcZ3NldAorQUxU RVIgVEFCTEUgdGVzdF9pb19zaGFyZWQgU0VUIFRBQkxFU1BBQ0UgdGVzdF9pb19zaGFyZWRfc3Rh dHNfdGJsc3BjOworLS0gU0VMRUNUIGZyb20gdGhlIHRhYmxlIHNvIHRoYXQgaXQgaXMgcmVhZCBp bnRvIHNoYXJlZCBidWZmZXJzIGFuZCBpb19jb250ZXh0CistLSAnbm9ybWFsJywgaW9fb2JqZWN0 ICdyZWxhdGlvbicgcmVhZHMgYXJlIGNvdW50ZWQuCitTRUxFQ1QgQ09VTlQoKikgRlJPTSB0ZXN0 X2lvX3NoYXJlZDsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBz dW0ocmVhZCkgQVMgaW9fc3VtX3NoYXJlZF9yZWFkc19hZnRlcgorICBGUk9NIHBnX3N0YXRfaW8g V0hFUkUgaW9fY29udGV4dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAncmVsYXRpb24nICBc Z3NldAorU0VMRUNUIDppb19zdW1fc2hhcmVkX3JlYWRzX2FmdGVyID4gOmlvX3N1bV9zaGFyZWRf cmVhZHNfYmVmb3JlOworRFJPUCBUQUJMRSB0ZXN0X2lvX3NoYXJlZDsKK0RST1AgVEFCTEVTUEFD RSB0ZXN0X2lvX3NoYXJlZF9zdGF0c190YmxzcGM7CisKKy0tIFRlc3QgdGhhdCB0aGUgZm9sbG93 IElPQ09OVEVYVF9MT0NBTCBJT09wcyBhcmUgdHJhY2tlZCBpbiBwZ19zdGF0X2lvOgorLS0gLSBl dmljdGlvbiBvZiBsb2NhbCBidWZmZXJzIGluIG9yZGVyIHRvIHJldXNlIHRoZW0KKy0tIC0gcmVh ZHMgb2YgdGVtcG9yYXJ5IHRhYmxlIGJsb2NrcyBpbnRvIGxvY2FsIGJ1ZmZlcnMKKy0tIC0gd3Jp dGVzIG9mIGxvY2FsIGJ1ZmZlcnMgdG8gcGVybWFuZW50IHN0b3JhZ2UKKy0tIC0gZXh0ZW5kcyBv ZiB0ZW1wb3JhcnkgdGFibGVzCisKKy0tIFNldCB0ZW1wX2J1ZmZlcnMgdG8gYSBsb3cgdmFsdWUg c28gdGhhdCB3ZSBjYW4gdHJpZ2dlciB3cml0ZXMgd2l0aCBmZXdlcgorLS0gaW5zZXJ0ZWQgdHVw bGVzLiBEbyBzbyBpbiBhIG5ldyBzZXNzaW9uIGluIGNhc2UgdGVtcG9yYXJ5IHRhYmxlcyBoYXZl IGJlZW4KKy0tIGFjY2Vzc2VkIGJ5IHByZXZpb3VzIHRlc3RzIGluIHRoaXMgc2Vzc2lvbi4KK1xj CitTRVQgdGVtcF9idWZmZXJzIFRPICcxTUInOworQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0ZXN0 X2lvX2xvY2FsKGEgaW50LCBiIFRFWFQpOworU0VMRUNUIHN1bShleHRlbmRlZCkgQVMgaW9fc3Vt X2xvY2FsX2V4dGVuZHNfYmVmb3JlCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0 ID0gJ25vcm1hbCcgQU5EIGlvX29iamVjdCA9ICd0ZW1wIHJlbGF0aW9uJyBcZ3NldAorU0VMRUNU IHN1bShldmljdGVkKSBBUyBpb19zdW1fbG9jYWxfZXZpY3Rpb25zX2JlZm9yZQorICBGUk9NIHBn X3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdub3JtYWwnIEFORCBpb19vYmplY3QgPSAndGVt cCByZWxhdGlvbicgXGdzZXQKK1NFTEVDVCBzdW0od3JpdHRlbikgQVMgaW9fc3VtX2xvY2FsX3dy aXRlc19iZWZvcmUKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAnbm9ybWFs JyBBTkQgaW9fb2JqZWN0ID0gJ3RlbXAgcmVsYXRpb24nIFxnc2V0CistLSBJbnNlcnQgdHVwbGVz IGludG8gdGhlIHRlbXBvcmFyeSB0YWJsZSwgZ2VuZXJhdGluZyBleHRlbmRzIGluIHRoZSBzdGF0 cy4KKy0tIEluc2VydCBlbm91Z2ggdmFsdWVzIHRoYXQgd2UgbmVlZCB0byByZXVzZSBhbmQgd3Jp dGUgb3V0IGRpcnR5IGxvY2FsCistLSBidWZmZXJzLCBnZW5lcmF0aW5nIGV2aWN0aW9ucyBhbmQg d3JpdGVzLgorSU5TRVJUIElOVE8gdGVzdF9pb19sb2NhbCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEsIDgwMDApIGFzIGlkLCByZXBlYXQoJ2EnLCAxMDApOworCitTRUxFQ1Qgc3VtKHJlYWQpIEFT IGlvX3N1bV9sb2NhbF9yZWFkc19iZWZvcmUKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2Nv bnRleHQgPSAnbm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0gJ3RlbXAgcmVsYXRpb24nIFxnc2V0Cist LSBSZWFkIGluIGV2aWN0ZWQgYnVmZmVycywgZ2VuZXJhdGluZyByZWFkcy4KK1NFTEVDVCBDT1VO VCgqKSBGUk9NIHRlc3RfaW9fbG9jYWw7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CitTRUxFQ1Qgc3VtKGV2aWN0ZWQpIEFTIGlvX3N1bV9sb2NhbF9ldmljdGlvbnNfYWZ0ZXIK KyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAnbm9ybWFsJyBBTkQgaW9fb2Jq ZWN0ID0gJ3RlbXAgcmVsYXRpb24nICBcZ3NldAorU0VMRUNUIHN1bShyZWFkKSBBUyBpb19zdW1f bG9jYWxfcmVhZHNfYWZ0ZXIKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAn bm9ybWFsJyBBTkQgaW9fb2JqZWN0ID0gJ3RlbXAgcmVsYXRpb24nICBcZ3NldAorU0VMRUNUIHN1 bSh3cml0dGVuKSBBUyBpb19zdW1fbG9jYWxfd3JpdGVzX2FmdGVyCisgIEZST00gcGdfc3RhdF9p byBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5EIGlvX29iamVjdCA9ICd0ZW1wIHJlbGF0 aW9uJyAgXGdzZXQKK1NFTEVDVCBzdW0oZXh0ZW5kZWQpIEFTIGlvX3N1bV9sb2NhbF9leHRlbmRz X2FmdGVyCisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ25vcm1hbCcgQU5E IGlvX29iamVjdCA9ICd0ZW1wIHJlbGF0aW9uJyAgXGdzZXQKK1NFTEVDVCA6aW9fc3VtX2xvY2Fs X2V2aWN0aW9uc19hZnRlciA+IDppb19zdW1fbG9jYWxfZXZpY3Rpb25zX2JlZm9yZTsKK1NFTEVD VCA6aW9fc3VtX2xvY2FsX3JlYWRzX2FmdGVyID4gOmlvX3N1bV9sb2NhbF9yZWFkc19iZWZvcmU7 CitTRUxFQ1QgOmlvX3N1bV9sb2NhbF93cml0ZXNfYWZ0ZXIgPiA6aW9fc3VtX2xvY2FsX3dyaXRl c19iZWZvcmU7CitTRUxFQ1QgOmlvX3N1bV9sb2NhbF9leHRlbmRzX2FmdGVyID4gOmlvX3N1bV9s b2NhbF9leHRlbmRzX2JlZm9yZTsKK1JFU0VUIHRlbXBfYnVmZmVyczsKKworLS0gVGVzdCB0aGF0 IHJldXNlIG9mIHN0cmF0ZWd5IGJ1ZmZlcnMgYW5kIHJlYWRzIG9mIGJsb2NrcyBpbnRvIHRoZXNl IHJldXNlZAorLS0gYnVmZmVycyB3aGlsZSBWQUNVVU1pbmcgYXJlIHRyYWNrZWQgaW4gcGdfc3Rh dF9pby4KKworLS0gU2V0IHdhbF9za2lwX3RocmVzaG9sZCBzbWFsbGVyIHRoYW4gdGhlIGV4cGVj dGVkIHNpemUgb2YKKy0tIHRlc3RfaW9fdmFjX3N0cmF0ZWd5IHNvIHRoYXQsIGV2ZW4gaWYgd2Fs X2xldmVsIGlzIG1pbmltYWwsIFZBQ1VVTSBGVUxMIHdpbGwKKy0tIGZzeW5jIHRoZSBuZXdseSBy ZXdyaXR0ZW4gdGVzdF9pb192YWNfc3RyYXRlZ3kgaW5zdGVhZCBvZiB3cml0aW5nIGl0IHRvIFdB TC4KKy0tIFdyaXRpbmcgaXQgdG8gV0FMIHdpbGwgcmVzdWx0IGluIHRoZSBuZXdseSB3cml0dGVu IHJlbGF0aW9uIHBhZ2VzIGJlaW5nIGluCistLSBzaGFyZWQgYnVmZmVycyAtLSBwcmV2ZW50aW5n IHVzIGZyb20gdGVzdGluZyBCQVNfVkFDVVVNIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5CistLSByZWFk cy4KK1NFVCB3YWxfc2tpcF90aHJlc2hvbGQgPSAnMSBrQic7CitTRUxFQ1Qgc3VtKHJldXNlZCkg QVMgaW9fc3VtX3ZhY19zdHJhdGVneV9yZXVzZXNfYmVmb3JlIEZST00gcGdfc3RhdF9pbyBXSEVS RSBpb19jb250ZXh0ID0gJ3ZhY3V1bScgXGdzZXQKK1NFTEVDVCBzdW0ocmVhZCkgQVMgaW9fc3Vt X3ZhY19zdHJhdGVneV9yZWFkc19iZWZvcmUgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRl eHQgPSAndmFjdXVtJyBcZ3NldAorQ1JFQVRFIFRBQkxFIHRlc3RfaW9fdmFjX3N0cmF0ZWd5KGEg aW50LCBiIGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7CitJTlNFUlQg SU5UTyB0ZXN0X2lvX3ZhY19zdHJhdGVneSBTRUxFQ1QgaSwgaSBmcm9tIGdlbmVyYXRlX3Nlcmll cygxLCA4MDAwKWk7CistLSBFbnN1cmUgdGhhdCB0aGUgbmV4dCBWQUNVVU0gd2lsbCBuZWVkIHRv IHBlcmZvcm0gSU8gYnkgcmV3cml0aW5nIHRoZSB0YWJsZQorLS0gZmlyc3Qgd2l0aCBWQUNVVU0g KEZVTEwpLgorVkFDVVVNIChGVUxMKSB0ZXN0X2lvX3ZhY19zdHJhdGVneTsKK1ZBQ1VVTSAoUEFS QUxMRUwgMCkgdGVzdF9pb192YWNfc3RyYXRlZ3k7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1Qgc3VtKHJldXNlZCkgQVMgaW9fc3VtX3ZhY19zdHJhdGVneV9yZXVz ZXNfYWZ0ZXIgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGlvX2NvbnRleHQgPSAndmFjdXVtJyBcZ3Nl dAorU0VMRUNUIHN1bShyZWFkKSBBUyBpb19zdW1fdmFjX3N0cmF0ZWd5X3JlYWRzX2FmdGVyIEZS T00gcGdfc3RhdF9pbyBXSEVSRSBpb19jb250ZXh0ID0gJ3ZhY3V1bScgXGdzZXQKK1NFTEVDVCA6 aW9fc3VtX3ZhY19zdHJhdGVneV9yZWFkc19hZnRlciA+IDppb19zdW1fdmFjX3N0cmF0ZWd5X3Jl YWRzX2JlZm9yZTsKK1NFTEVDVCA6aW9fc3VtX3ZhY19zdHJhdGVneV9yZXVzZXNfYWZ0ZXIgPiA6 aW9fc3VtX3ZhY19zdHJhdGVneV9yZXVzZXNfYmVmb3JlOworUkVTRVQgd2FsX3NraXBfdGhyZXNo b2xkOworCistLSBUZXN0IHRoYXQgZXh0ZW5kcyBkb25lIGJ5IGEgQ1RBUywgd2hpY2ggdXNlcyBh IEJBU19CVUxLV1JJVEUKKy0tIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5LCBhcmUgdHJhY2tlZCBpbiBw Z19zdGF0X2lvLgorU0VMRUNUIHN1bShleHRlbmRlZCkgQVMgaW9fc3VtX2J1bGt3cml0ZV9zdHJh dGVneV9leHRlbmRzX2JlZm9yZSBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29udGV4dCA9ICdi dWxrd3JpdGUnIFxnc2V0CitDUkVBVEUgVEFCTEUgdGVzdF9pb19idWxrd3JpdGVfc3RyYXRlZ3kg QVMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApaTsKK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBzdW0oZXh0ZW5kZWQpIEFTIGlvX3N1bV9idWxr d3JpdGVfc3RyYXRlZ3lfZXh0ZW5kc19hZnRlciBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgaW9fY29u dGV4dCA9ICdidWxrd3JpdGUnIFxnc2V0CitTRUxFQ1QgOmlvX3N1bV9idWxrd3JpdGVfc3RyYXRl Z3lfZXh0ZW5kc19hZnRlciA+IDppb19zdW1fYnVsa3dyaXRlX3N0cmF0ZWd5X2V4dGVuZHNfYmVm b3JlOworCistLSBUZXN0IElPIHN0YXRzIHJlc2V0CitTRUxFQ1Qgc3VtKGV2aWN0ZWQpICsgc3Vt KHJldXNlZCkgKyBzdW0oZXh0ZW5kZWQpICsgc3VtKGZpbGVzX3N5bmNlZCkgKyBzdW0ocmVhZCkg KyBzdW0od3JpdHRlbikgQVMgaW9fc3RhdHNfcHJlX3Jlc2V0IEZST00gcGdfc3RhdF9pbyBcZ3Nl dAorU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCdpbycpOworU0VMRUNUIHN1bShldmljdGVk KSArIHN1bShyZXVzZWQpICsgc3VtKGV4dGVuZGVkKSArIHN1bShmaWxlc19zeW5jZWQpICsgc3Vt KHJlYWQpICsgc3VtKHdyaXR0ZW4pIEFTIGlvX3N0YXRzX3Bvc3RfcmVzZXQgRlJPTSBwZ19zdGF0 X2lvIFxnc2V0CitTRUxFQ1QgOmlvX3N0YXRzX3Bvc3RfcmVzZXQgPCA6aW9fc3RhdHNfcHJlX3Jl c2V0OworCiAtLSBFbmQgb2YgU3RhdHMgVGVzdApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRl eCA3YjY2YjFiYzg5Li5jNGVjZWYyYmY4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MzM3Nyw2ICszMzc3LDcgQEAgaW50c2V0X2ludGVybmFsX25vZGUKIGludHNldF9sZWFmX25vZGUK IGludHNldF9ub2RlCiBpbnR2S0VZCitpb19zdGF0X2NvbAogaXRlbUlkQ29tcGFjdAogaXRlbUlk Q29tcGFjdERhdGEKIGl0ZXJhdG9yCi0tIAoyLjM0LjEKCg== --00000000000032a58605f1db346f Content-Type: text/x-patch; charset="US-ASCII"; name="v45-0003-pgstat-Count-IO-for-relations.patch" Content-Disposition: attachment; filename="v45-0003-pgstat-Count-IO-for-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lcpaqb282 RnJvbSBlYjVhYWI1NjYyZWFhNDE5NGZkMTU5Y2YyMjdkMDA4MmQ0OGJkNTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRh dGU6IFdlZCwgNCBKYW4gMjAyMyAxNzoyMDo1MCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1IDMv NV0gcGdzdGF0OiBDb3VudCBJTyBmb3IgcmVsYXRpb25zCgpDb3VudCBJT09wcyBkb25lIG9uIElP T2JqZWN0cyBpbiBJT0NvbnRleHRzIGJ5IHZhcmlvdXMgQmFja2VuZFR5cGVzCnVzaW5nIHRoZSBJ TyBzdGF0cyBpbmZyYXN0cnVjdHVyZSBpbnRyb2R1Y2VkIGJ5IGEgcHJldmlvdXMgY29tbWl0LgoK VGhlIHByaW1hcnkgY29uY2VybiBvZiB0aGVzZSBzdGF0aXN0aWNzIGlzIElPIG9wZXJhdGlvbnMg b24gZGF0YSBibG9ja3MKZHVyaW5nIHRoZSBjb3Vyc2Ugb2Ygbm9ybWFsIGRhdGFiYXNlIG9wZXJh dGlvbnMuIElPIG9wZXJhdGlvbnMgZG9uZSBieSwKZm9yIGV4YW1wbGUsIHRoZSBhcmNoaXZlciBv ciBzeXNsb2dnZXIgYXJlIG5vdCBjb3VudGVkIGluIHRoZXNlCnN0YXRpc3RpY3MuIFdBTCBJTywg dGVtcG9yYXJ5IGZpbGUgSU8sIGFuZCBJTyBkb25lIGRpcmVjdGx5IHRob3VnaCBzbWdyKgpmdW5j dGlvbnMgKHN1Y2ggYXMgd2hlbiBidWlsZGluZyBhbiBpbmRleCkgYXJlIG5vdCB5ZXQgY291bnRl ZCBidXQgd291bGQKYmUgdXNlZnVsIGZ1dHVyZSBhZGRpdGlvbnMuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXMg RnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8yMDIwMDEyNDE5NTIyNi5sdGg1Mml5ZHEybjJ1aWxx JTQwYWxhcDMuYW5hcmF6ZWwuZGUKLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYyAgIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9mcmVlbGlzdC5jIHwgIDU4ICsrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jIHwgIDEzICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9z bWdyL21kLmMgICAgICAgICB8ICAyNSArKysrKysKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2lu dGVybmFscy5oICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggICAgICAg ICAgfCAgIDcgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMoKyksIDM2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggODA3NTgyOGU4YS4u ZDA2N2FmYjQyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTQ4MSw4ICs0 ODEsOSBAQCBzdGF0aWMgQnVmZmVyRGVzYyAqQnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3Is CiAJCQkJCQkJICAgRm9ya051bWJlciBmb3JrTnVtLAogCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJs b2NrTnVtLAogCQkJCQkJCSAgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAotCQkJCQkJ CSAgIGJvb2wgKmZvdW5kUHRyKTsKLXN0YXRpYyB2b2lkIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2Mg KmJ1ZiwgU01nclJlbGF0aW9uIHJlbG4pOworCQkJCQkJCSAgIGJvb2wgKmZvdW5kUHRyLCBJT0Nv bnRleHQgKmlvX2NvbnRleHQpOworc3RhdGljIHZvaWQgRmx1c2hCdWZmZXIoQnVmZmVyRGVzYyAq YnVmLCBTTWdyUmVsYXRpb24gcmVsbiwKKwkJCQkJCUlPQ29udGV4dCBpb19jb250ZXh0LCBJT09i amVjdCBpb19vYmplY3QpOwogc3RhdGljIHZvaWQgRmluZEFuZERyb3BSZWxhdGlvbkJ1ZmZlcnMo UmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsCiAJCQkJCQkJCQkgICBGb3JrTnVtYmVyIGZvcmtOdW0s CiAJCQkJCQkJCQkgICBCbG9ja051bWJlciBuRm9ya0Jsb2NrLApAQCAtODIzLDYgKzgyNCw4IEBA IFJlYWRCdWZmZXJfY29tbW9uKFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJlbHBlcnNpc3RlbmNl LCBGb3JrTnVtYmVyIGZvcmtOdW0sCiAJQnVmZmVyRGVzYyAqYnVmSGRyOwogCUJsb2NrCQlidWZC bG9jazsKIAlib29sCQlmb3VuZDsKKwlJT0NvbnRleHQJaW9fY29udGV4dDsKKwlJT09iamVjdAlp b19vYmplY3Q7CiAJYm9vbAkJaXNFeHRlbmQ7CiAJYm9vbAkJaXNMb2NhbEJ1ZiA9IFNtZ3JJc1Rl bXAoc21ncik7CiAKQEAgLTg1NSw3ICs4NTgsMTQgQEAgUmVhZEJ1ZmZlcl9jb21tb24oU01nclJl bGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZvcmtOdW1iZXIgZm9ya051bSwKIAog CWlmIChpc0xvY2FsQnVmKQogCXsKLQkJYnVmSGRyID0gTG9jYWxCdWZmZXJBbGxvYyhzbWdyLCBm b3JrTnVtLCBibG9ja051bSwgJmZvdW5kKTsKKwkJLyoKKwkJICogTG9jYWxCdWZmZXJBbGxvYygp IHdpbGwgc2V0IHRoZSBpb19jb250ZXh0IHRvIElPQ09OVEVYVF9OT1JNQUwuIFdlCisJCSAqIGRv IG5vdCB1c2UgYSBCdWZmZXJBY2Nlc3NTdHJhdGVneSBmb3IgSU8gb2YgdGVtcG9yYXJ5IHRhYmxl cy4KKwkJICogSG93ZXZlciwgaW4gc29tZSBjYXNlcywgdGhlICJzdHJhdGVneSIgbWF5IG5vdCBi ZSBOVUxMLCBzbyB3ZSBjYW4ndAorCQkgKiByZWx5IG9uIElPQ29udGV4dEZvclN0cmF0ZWd5KCkg dG8gc2V0IHRoZSByaWdodCBJT0NvbnRleHQgZm9yIHVzLgorCQkgKiBUaGlzIG1heSBoYXBwZW4g aW4gY2FzZXMgbGlrZSBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIEFTLi4uCisJCSAqLworCQlidWZI ZHIgPSBMb2NhbEJ1ZmZlckFsbG9jKHNtZ3IsIGZvcmtOdW0sIGJsb2NrTnVtLCAmZm91bmQsICZp b19jb250ZXh0KTsKIAkJaWYgKGZvdW5kKQogCQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX2hp dCsrOwogCQllbHNlIGlmIChpc0V4dGVuZCkKQEAgLTg3MSw3ICs4ODEsNyBAQCBSZWFkQnVmZmVy X2NvbW1vbihTTWdyUmVsYXRpb24gc21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJl ciBmb3JrTnVtLAogCQkgKiBub3QgY3VycmVudGx5IGluIG1lbW9yeS4KIAkJICovCiAJCWJ1Zkhk ciA9IEJ1ZmZlckFsbG9jKHNtZ3IsIHJlbHBlcnNpc3RlbmNlLCBmb3JrTnVtLCBibG9ja051bSwK LQkJCQkJCQkgc3RyYXRlZ3ksICZmb3VuZCk7CisJCQkJCQkJIHN0cmF0ZWd5LCAmZm91bmQsICZp b19jb250ZXh0KTsKIAkJaWYgKGZvdW5kKQogCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19o aXQrKzsKIAkJZWxzZSBpZiAoaXNFeHRlbmQpCkBAIC05ODYsNyArOTk2LDE2IEBAIFJlYWRCdWZm ZXJfY29tbW9uKFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJlbHBlcnNpc3RlbmNlLCBGb3JrTnVt YmVyIGZvcmtOdW0sCiAJICovCiAJQXNzZXJ0KCEocGdfYXRvbWljX3JlYWRfdTMyKCZidWZIZHIt PnN0YXRlKSAmIEJNX1ZBTElEKSk7CS8qIHNwaW5sb2NrIG5vdCBuZWVkZWQgKi8KIAotCWJ1ZkJs b2NrID0gaXNMb2NhbEJ1ZiA/IExvY2FsQnVmSGRyR2V0QmxvY2soYnVmSGRyKSA6IEJ1Zkhkckdl dEJsb2NrKGJ1Zkhkcik7CisJaWYgKGlzTG9jYWxCdWYpCisJeworCQlidWZCbG9jayA9IExvY2Fs QnVmSGRyR2V0QmxvY2soYnVmSGRyKTsKKwkJaW9fb2JqZWN0ID0gSU9PQkpFQ1RfVEVNUF9SRUxB VElPTjsKKwl9CisJZWxzZQorCXsKKwkJYnVmQmxvY2sgPSBCdWZIZHJHZXRCbG9jayhidWZIZHIp OworCQlpb19vYmplY3QgPSBJT09CSkVDVF9SRUxBVElPTjsKKwl9CiAKIAlpZiAoaXNFeHRlbmQp CiAJewpAQCAtOTk1LDYgKzEwMTQsOCBAQCBSZWFkQnVmZmVyX2NvbW1vbihTTWdyUmVsYXRpb24g c21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAogCQkvKiBkb24n dCBzZXQgY2hlY2tzdW0gZm9yIGFsbC16ZXJvIHBhZ2UgKi8KIAkJc21ncmV4dGVuZChzbWdyLCBm b3JrTnVtLCBibG9ja051bSwgKGNoYXIgKikgYnVmQmxvY2ssIGZhbHNlKTsKIAorCQlwZ3N0YXRf Y291bnRfaW9fb3AoSU9PUF9FWFRFTkQsIGlvX29iamVjdCwgaW9fY29udGV4dCk7CisKIAkJLyoK IAkJICogTkI6IHdlJ3JlICpub3QqIGRvaW5nIGEgU2NoZWR1bGVCdWZmZXJUYWdGb3JXcml0ZWJh Y2sgaGVyZTsKIAkJICogYWx0aG91Z2ggd2UncmUgZXNzZW50aWFsbHkgcGVyZm9ybWluZyBhIHdy aXRlLiBBdCBsZWFzdCBvbiBsaW51eApAQCAtMTAyMCw2ICsxMDQxLDggQEAgUmVhZEJ1ZmZlcl9j b21tb24oU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZvcmtOdW1iZXIg Zm9ya051bSwKIAogCQkJc21ncnJlYWQoc21nciwgZm9ya051bSwgYmxvY2tOdW0sIChjaGFyICop IGJ1ZkJsb2NrKTsKIAorCQkJcGdzdGF0X2NvdW50X2lvX29wKElPT1BfUkVBRCwgaW9fb2JqZWN0 LCBpb19jb250ZXh0KTsKKwogCQkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJCXsKIAkJCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKGlvX3RpbWUpOwpAQCAtMTExMywxNCArMTEzNiwxOSBAQCBSZWFk QnVmZmVyX2NvbW1vbihTTWdyUmVsYXRpb24gc21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9y a051bWJlciBmb3JrTnVtLAogICogKmZvdW5kUHRyIGlzIGFjdHVhbGx5IHJlZHVuZGFudCB3aXRo IHRoZSBidWZmZXIncyBCTV9WQUxJRCBmbGFnLCBidXQKICAqIHdlIGtlZXAgaXQgZm9yIHNpbXBs aWNpdHkgaW4gUmVhZEJ1ZmZlci4KICAqCisgKiBpb19jb250ZXh0IGlzIHBhc3NlZCBhcyBhbiBv dXRwdXQgcGFyYW1ldGVyIHRvIGF2b2lkIGNhbGxpbmcKKyAqIElPQ29udGV4dEZvclN0cmF0ZWd5 KCkgd2hlbiB0aGVyZSBpcyBhIHNoYXJlZCBidWZmZXJzIGhpdCBhbmQgbm8gSU8KKyAqIHN0YXRp c3RpY3MgbmVlZCBiZSBjYXB0dXJlZC4KKyAqCiAgKiBObyBsb2NrcyBhcmUgaGVsZCBlaXRoZXIg YXQgZW50cnkgb3IgZXhpdC4KICAqLwogc3RhdGljIEJ1ZmZlckRlc2MgKgogQnVmZmVyQWxsb2Mo U01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZvcmtOdW1iZXIgZm9ya051 bSwKIAkJCUJsb2NrTnVtYmVyIGJsb2NrTnVtLAogCQkJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksCi0JCQlib29sICpmb3VuZFB0cikKKwkJCWJvb2wgKmZvdW5kUHRyLCBJT0NvbnRleHQg KmlvX2NvbnRleHQpCiB7CisJYm9vbAkJZnJvbV9yaW5nOwogCUJ1ZmZlclRhZwluZXdUYWc7CQkJ LyogaWRlbnRpdHkgb2YgcmVxdWVzdGVkIGJsb2NrICovCiAJdWludDMyCQluZXdIYXNoOwkJLyog aGFzaCB2YWx1ZSBmb3IgbmV3VGFnICovCiAJTFdMb2NrCSAgICpuZXdQYXJ0aXRpb25Mb2NrOwkv KiBidWZmZXIgcGFydGl0aW9uIGxvY2sgZm9yIGl0ICovCkBAIC0xMTcyLDggKzEyMDAsMTEgQEAg QnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZvcmtO dW1iZXIgZm9ya051bSwKIAkJCXsKIAkJCQkvKgogCQkJCSAqIElmIHdlIGdldCBoZXJlLCBwcmV2 aW91cyBhdHRlbXB0cyB0byByZWFkIHRoZSBidWZmZXIgbXVzdAotCQkJCSAqIGhhdmUgZmFpbGVk IC4uLiBidXQgd2Ugc2hhbGwgYnJhdmVseSB0cnkgYWdhaW4uCisJCQkJICogaGF2ZSBmYWlsZWQg Li4uIGJ1dCB3ZSBzaGFsbCBicmF2ZWx5IHRyeSBhZ2Fpbi4gU2V0CisJCQkJICogaW9fY29udGV4 dCBzaW5jZSB3ZSB3aWxsIGluIGZhY3QgbmVlZCB0byBjb3VudCBhbiBJTworCQkJCSAqIE9wZXJh dGlvbi4KIAkJCQkgKi8KKwkJCQkqaW9fY29udGV4dCA9IElPQ29udGV4dEZvclN0cmF0ZWd5KHN0 cmF0ZWd5KTsKIAkJCQkqZm91bmRQdHIgPSBmYWxzZTsKIAkJCX0KIAkJfQpAQCAtMTE4Nyw2ICsx MjE4LDggQEAgQnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVu Y2UsIEZvcmtOdW1iZXIgZm9ya051bSwKIAkgKi8KIAlMV0xvY2tSZWxlYXNlKG5ld1BhcnRpdGlv bkxvY2spOwogCisJKmlvX2NvbnRleHQgPSBJT0NvbnRleHRGb3JTdHJhdGVneShzdHJhdGVneSk7 CisKIAkvKiBMb29wIGhlcmUgaW4gY2FzZSB3ZSBoYXZlIHRvIHRyeSBhbm90aGVyIHZpY3RpbSBi dWZmZXIgKi8KIAlmb3IgKDs7KQogCXsKQEAgLTEyMDAsNyArMTIzMyw3IEBAIEJ1ZmZlckFsbG9j KFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJlbHBlcnNpc3RlbmNlLCBGb3JrTnVtYmVyIGZvcmtO dW0sCiAJCSAqIFNlbGVjdCBhIHZpY3RpbSBidWZmZXIuICBUaGUgYnVmZmVyIGlzIHJldHVybmVk IHdpdGggaXRzIGhlYWRlcgogCQkgKiBzcGlubG9jayBzdGlsbCBoZWxkIQogCQkgKi8KLQkJYnVm ID0gU3RyYXRlZ3lHZXRCdWZmZXIoc3RyYXRlZ3ksICZidWZfc3RhdGUpOworCQlidWYgPSBTdHJh dGVneUdldEJ1ZmZlcihzdHJhdGVneSwgJmJ1Zl9zdGF0ZSwgJmZyb21fcmluZyk7CiAKIAkJQXNz ZXJ0KEJVRl9TVEFURV9HRVRfUkVGQ09VTlQoYnVmX3N0YXRlKSA9PSAwKTsKIApAQCAtMTI1NCw3 ICsxMjg3LDcgQEAgQnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lz dGVuY2UsIEZvcmtOdW1iZXIgZm9ya051bSwKIAkJCQkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0 YXRlKTsKIAogCQkJCQlpZiAoWExvZ05lZWRzRmx1c2gobHNuKSAmJgotCQkJCQkJU3RyYXRlZ3lS ZWplY3RCdWZmZXIoc3RyYXRlZ3ksIGJ1ZikpCisJCQkJCQlTdHJhdGVneVJlamVjdEJ1ZmZlcihz dHJhdGVneSwgYnVmLCBmcm9tX3JpbmcpKQogCQkJCQl7CiAJCQkJCQkvKiBEcm9wIGxvY2svcGlu IGFuZCBsb29wIGFyb3VuZCBmb3IgYW5vdGhlciBidWZmZXIgKi8KIAkJCQkJCUxXTG9ja1JlbGVh c2UoQnVmZmVyRGVzY3JpcHRvckdldENvbnRlbnRMb2NrKGJ1ZikpOwpAQCAtMTI2OSw3ICsxMzAy LDcgQEAgQnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2Us IEZvcmtOdW1iZXIgZm9ya051bSwKIAkJCQkJCQkJCQkJCQkJICBzbWdyLT5zbWdyX3Jsb2NhdG9y LmxvY2F0b3IuZGJPaWQsCiAJCQkJCQkJCQkJCQkJCSAgc21nci0+c21ncl9ybG9jYXRvci5sb2Nh dG9yLnJlbE51bWJlcik7CiAKLQkJCQlGbHVzaEJ1ZmZlcihidWYsIE5VTEwpOworCQkJCUZsdXNo QnVmZmVyKGJ1ZiwgTlVMTCwgKmlvX2NvbnRleHQsIElPT0JKRUNUX1JFTEFUSU9OKTsKIAkJCQlM V0xvY2tSZWxlYXNlKEJ1ZmZlckRlc2NyaXB0b3JHZXRDb250ZW50TG9jayhidWYpKTsKIAogCQkJ CVNjaGVkdWxlQnVmZmVyVGFnRm9yV3JpdGViYWNrKCZCYWNrZW5kV3JpdGViYWNrQ29udGV4dCwK QEAgLTE0NDEsNiArMTQ3NCwyOCBAQCBCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwgY2hh ciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAogCiAJVW5sb2NrQnVmSGRyKGJ1 ZiwgYnVmX3N0YXRlKTsKIAorCWlmIChvbGRGbGFncyAmIEJNX1ZBTElEKQorCXsKKwkJLyoKKwkJ ICogV2hlbiBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGlzIGluIHVzZSwgYmxvY2tzIGV2aWN0ZWQg ZnJvbSBzaGFyZWQKKwkJICogYnVmZmVycyBhcmUgY291bnRlZCBhcyBJT09QX0VWSUNUIGluIHRo ZSBjb3JyZXNwb25kaW5nIGNvbnRleHQKKwkJICogKGUuZy4gSU9DT05URVhUX0JVTEtXUklURSku IFNoYXJlZCBidWZmZXJzIGFyZSBldmljdGVkIGJ5IGEKKwkJICogc3RyYXRlZ3kgaW4gdHdvIGNh c2VzOiAxKSB3aGlsZSBpbml0aWFsbHkgY2xhaW1pbmcgYnVmZmVycyBmb3IgdGhlCisJCSAqIHN0 cmF0ZWd5IHJpbmcgMikgdG8gcmVwbGFjZSBhbiBleGlzdGluZyBzdHJhdGVneSByaW5nIGJ1ZmZl cgorCQkgKiBiZWNhdXNlIGl0IGlzIHBpbm5lZCBvciBpbiB1c2UgYW5kIGNhbm5vdCBiZSByZXVz ZWQuCisJCSAqCisJCSAqIEJsb2NrcyBldmljdGVkIGZyb20gYnVmZmVycyBhbHJlYWR5IGluIHRo ZSBzdHJhdGVneSByaW5nIGFyZQorCQkgKiBjb3VudGVkIGFzIElPT1BfUkVVU0UgaW4gdGhlIGNv cnJlc3BvbmRpbmcgc3RyYXRlZ3kgY29udGV4dC4KKwkJICoKKwkJICogQXQgdGhpcyBwb2ludCwg d2UgY2FuIGFjY3VyYXRlbHkgY291bnQgZXZpY3Rpb25zIGFuZCByZXVzZXMsCisJCSAqIGJlY2F1 c2Ugd2UgaGF2ZSBzdWNjZXNzZnVsbHkgY2xhaW1lZCB0aGUgdmFsaWQgYnVmZmVyLiBQcmV2aW91 c2x5LAorCQkgKiB3ZSBtYXkgaGF2ZSBiZWVuIGZvcmNlZCB0byByZWxlYXNlIHRoZSBidWZmZXIg ZHVlIHRvIGNvbmN1cnJlbnQKKwkJICogcGlubmVycyBvciBlcnJvcmluZyBvdXQuCisJCSAqLwor CQlwZ3N0YXRfY291bnRfaW9fb3AoZnJvbV9yaW5nID8gSU9PUF9SRVVTRSA6IElPT1BfRVZJQ1Qs CisJCQkJCQkgICBJT09CSkVDVF9SRUxBVElPTiwgKmlvX2NvbnRleHQpOworCX0KKwogCWlmIChv bGRQYXJ0aXRpb25Mb2NrICE9IE5VTEwpCiAJewogCQlCdWZUYWJsZURlbGV0ZSgmb2xkVGFnLCBv bGRIYXNoKTsKQEAgLTI1NzAsNyArMjYyNSw3IEBAIFN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwg Ym9vbCBza2lwX3JlY2VudGx5X3VzZWQsIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJ UGluQnVmZmVyX0xvY2tlZChidWZIZHIpOwogCUxXTG9ja0FjcXVpcmUoQnVmZmVyRGVzY3JpcHRv ckdldENvbnRlbnRMb2NrKGJ1ZkhkciksIExXX1NIQVJFRCk7CiAKLQlGbHVzaEJ1ZmZlcihidWZI ZHIsIE5VTEwpOworCUZsdXNoQnVmZmVyKGJ1ZkhkciwgTlVMTCwgSU9DT05URVhUX05PUk1BTCwg SU9PQkpFQ1RfUkVMQVRJT04pOwogCiAJTFdMb2NrUmVsZWFzZShCdWZmZXJEZXNjcmlwdG9yR2V0 Q29udGVudExvY2soYnVmSGRyKSk7CiAKQEAgLTI4MjAsNyArMjg3NSw3IEBAIEJ1ZmZlckdldFRh ZyhCdWZmZXIgYnVmZmVyLCBSZWxGaWxlTG9jYXRvciAqcmxvY2F0b3IsIEZvcmtOdW1iZXIgKmZv cmtudW0sCiAgKiBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlci4gIElmIG5vdCwgcGFzcyBOVUxMLgog ICovCiBzdGF0aWMgdm9pZAotRmx1c2hCdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBTTWdyUmVsYXRp b24gcmVsbikKK0ZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJlbG4s IElPQ29udGV4dCBpb19jb250ZXh0LCBJT09iamVjdCBpb19vYmplY3QpCiB7CiAJWExvZ1JlY1B0 cglyZWNwdHI7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CkBAIC0yOTEyLDYg KzI5NjcsMjYgQEAgRmx1c2hCdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBTTWdyUmVsYXRpb24gcmVs bikKIAkJCSAgYnVmVG9Xcml0ZSwKIAkJCSAgZmFsc2UpOwogCisJLyoKKwkgKiBXaGVuIGEgc3Ry YXRlZ3kgaXMgaW4gdXNlLCBvbmx5IGZsdXNoZXMgb2YgZGlydHkgYnVmZmVycyBhbHJlYWR5IGlu IHRoZQorCSAqIHN0cmF0ZWd5IHJpbmcgYXJlIGNvdW50ZWQgYXMgc3RyYXRlZ3kgd3JpdGVzIChJ T0NPTlRFWFQKKwkgKiBbQlVMS1JFQUR8QlVMS1dSSVRFfFZBQ1VVTV0gSU9PUF9XUklURSkgZm9y IHRoZSBwdXJwb3NlIG9mIElPCisJICogc3RhdGlzdGljcyB0cmFja2luZy4KKwkgKgorCSAqIElm IGEgc2hhcmVkIGJ1ZmZlciBpbml0aWFsbHkgYWRkZWQgdG8gdGhlIHJpbmcgbXVzdCBiZSBmbHVz aGVkIGJlZm9yZQorCSAqIGJlaW5nIHVzZWQsIHRoaXMgaXMgY291bnRlZCBhcyBhbiBJT0NPTlRF WFRfTk9STUFMIElPT1BfV1JJVEUuCisJICoKKwkgKiBJZiBhIHNoYXJlZCBidWZmZXIgd2hpY2gg d2FzIGFkZGVkIHRvIHRoZSByaW5nIGxhdGVyIGJlY2F1c2UgdGhlCisJICogY3VycmVudCBzdHJh dGVneSBidWZmZXIgaXMgcGlubmVkIG9yIGluIHVzZSBvciBiZWNhdXNlIGFsbCBzdHJhdGVneQor CSAqIGJ1ZmZlcnMgd2VyZSBkaXJ0eSBhbmQgcmVqZWN0ZWQgKGZvciBCQVNfQlVMS1JFQUQgb3Bl cmF0aW9ucyBvbmx5KQorCSAqIHJlcXVpcmVzIGZsdXNoaW5nLCB0aGlzIGlzIGNvdW50ZWQgYXMg YW4gSU9DT05URVhUX05PUk1BTCBJT09QX1dSSVRFCisJICogKGZyb21fcmluZyB3aWxsIGJlIGZh bHNlKS4KKwkgKgorCSAqIFdoZW4gYSBzdHJhdGVneSBpcyBub3QgaW4gdXNlLCB0aGUgd3JpdGUg Y2FuIG9ubHkgYmUgYSAicmVndWxhciIgd3JpdGUKKwkgKiBvZiBhIGRpcnR5IHNoYXJlZCBidWZm ZXIgKElPQ09OVEVYVF9OT1JNQUwgSU9PUF9XUklURSkuCisJICovCisJcGdzdGF0X2NvdW50X2lv X29wKElPT1BfV1JJVEUsIElPT0JKRUNUX1JFTEFUSU9OLCBpb19jb250ZXh0KTsKKwogCWlmICh0 cmFja19pb190aW1pbmcpCiAJewogCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGlvX3RpbWUpOwpA QCAtMzU1NCw2ICszNjI5LDggQEAgRmx1c2hSZWxhdGlvbkJ1ZmZlcnMoUmVsYXRpb24gcmVsKQog CQkJCWJ1Zl9zdGF0ZSAmPSB+KEJNX0RJUlRZIHwgQk1fSlVTVF9ESVJUSUVEKTsKIAkJCQlwZ19h dG9taWNfdW5sb2NrZWRfd3JpdGVfdTMyKCZidWZIZHItPnN0YXRlLCBidWZfc3RhdGUpOwogCisJ CQkJcGdzdGF0X2NvdW50X2lvX29wKElPT1BfV1JJVEUsIElPT0JKRUNUX1RFTVBfUkVMQVRJT04s IElPQ09OVEVYVF9OT1JNQUwpOworCiAJCQkJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNr ICovCiAJCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwogCQkJ fQpAQCAtMzU4Niw3ICszNjYzLDcgQEAgRmx1c2hSZWxhdGlvbkJ1ZmZlcnMoUmVsYXRpb24gcmVs KQogCQl7CiAJCQlQaW5CdWZmZXJfTG9ja2VkKGJ1Zkhkcik7CiAJCQlMV0xvY2tBY3F1aXJlKEJ1 ZmZlckRlc2NyaXB0b3JHZXRDb250ZW50TG9jayhidWZIZHIpLCBMV19TSEFSRUQpOwotCQkJRmx1 c2hCdWZmZXIoYnVmSGRyLCBSZWxhdGlvbkdldFNtZ3IocmVsKSk7CisJCQlGbHVzaEJ1ZmZlcihi dWZIZHIsIFJlbGF0aW9uR2V0U21ncihyZWwpLCBJT0NPTlRFWFRfTk9STUFMLCBJT09CSkVDVF9S RUxBVElPTik7CiAJCQlMV0xvY2tSZWxlYXNlKEJ1ZmZlckRlc2NyaXB0b3JHZXRDb250ZW50TG9j ayhidWZIZHIpKTsKIAkJCVVucGluQnVmZmVyKGJ1Zkhkcik7CiAJCX0KQEAgLTM2ODQsNyArMzc2 MSw3IEBAIEZsdXNoUmVsYXRpb25zQWxsQnVmZmVycyhTTWdyUmVsYXRpb24gKnNtZ3JzLCBpbnQg bnJlbHMpCiAJCXsKIAkJCVBpbkJ1ZmZlcl9Mb2NrZWQoYnVmSGRyKTsKIAkJCUxXTG9ja0FjcXVp cmUoQnVmZmVyRGVzY3JpcHRvckdldENvbnRlbnRMb2NrKGJ1ZkhkciksIExXX1NIQVJFRCk7Ci0J CQlGbHVzaEJ1ZmZlcihidWZIZHIsIHNyZWxlbnQtPnNyZWwpOworCQkJRmx1c2hCdWZmZXIoYnVm SGRyLCBzcmVsZW50LT5zcmVsLCBJT0NPTlRFWFRfTk9STUFMLCBJT09CSkVDVF9SRUxBVElPTik7 CiAJCQlMV0xvY2tSZWxlYXNlKEJ1ZmZlckRlc2NyaXB0b3JHZXRDb250ZW50TG9jayhidWZIZHIp KTsKIAkJCVVucGluQnVmZmVyKGJ1Zkhkcik7CiAJCX0KQEAgLTM4OTQsNyArMzk3MSw3IEBAIEZs dXNoRGF0YWJhc2VCdWZmZXJzKE9pZCBkYmlkKQogCQl7CiAJCQlQaW5CdWZmZXJfTG9ja2VkKGJ1 Zkhkcik7CiAJCQlMV0xvY2tBY3F1aXJlKEJ1ZmZlckRlc2NyaXB0b3JHZXRDb250ZW50TG9jayhi dWZIZHIpLCBMV19TSEFSRUQpOwotCQkJRmx1c2hCdWZmZXIoYnVmSGRyLCBOVUxMKTsKKwkJCUZs dXNoQnVmZmVyKGJ1ZkhkciwgTlVMTCwgSU9DT05URVhUX05PUk1BTCwgSU9PQkpFQ1RfUkVMQVRJ T04pOwogCQkJTFdMb2NrUmVsZWFzZShCdWZmZXJEZXNjcmlwdG9yR2V0Q29udGVudExvY2soYnVm SGRyKSk7CiAJCQlVbnBpbkJ1ZmZlcihidWZIZHIpOwogCQl9CkBAIC0zOTIxLDcgKzM5OTgsNyBA QCBGbHVzaE9uZUJ1ZmZlcihCdWZmZXIgYnVmZmVyKQogCiAJQXNzZXJ0KExXTG9ja0hlbGRCeU1l KEJ1ZmZlckRlc2NyaXB0b3JHZXRDb250ZW50TG9jayhidWZIZHIpKSk7CiAKLQlGbHVzaEJ1ZmZl cihidWZIZHIsIE5VTEwpOworCUZsdXNoQnVmZmVyKGJ1ZkhkciwgTlVMTCwgSU9DT05URVhUX05P Uk1BTCwgSU9PQkpFQ1RfUkVMQVRJT04pOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2ZyZWVsaXN0LmMKaW5kZXggN2RlYzM1ODAxYy4uYzY5MGQ1ZjE1ZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi8KICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9hdG9taWNz LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWZtZ3IuaCIKQEAgLTgxLDEyICs4Miw2IEBAIHR5cGVkZWYgc3RydWN0IEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5RGF0YQogCSAqLwogCWludAkJCWN1cnJlbnQ7CiAKLQkvKgotCSAqIFRydWUgaWYg dGhlIGJ1ZmZlciBqdXN0IHJldHVybmVkIGJ5IFN0cmF0ZWd5R2V0QnVmZmVyIGhhZCBiZWVuIGlu IHRoZQotCSAqIHJpbmcgYWxyZWFkeS4KLQkgKi8KLQlib29sCQljdXJyZW50X3dhc19pbl9yaW5n OwotCiAJLyoKIAkgKiBBcnJheSBvZiBidWZmZXIgbnVtYmVycy4gIEludmFsaWRCdWZmZXIgKHRo YXQgaXMsIHplcm8pIGluZGljYXRlcyB3ZQogCSAqIGhhdmUgbm90IHlldCBzZWxlY3RlZCBhIGJ1 ZmZlciBmb3IgdGhpcyByaW5nIHNsb3QuICBGb3IgYWxsb2NhdGlvbgpAQCAtMTk4LDEzICsxOTMs MTUgQEAgaGF2ZV9mcmVlX2J1ZmZlcih2b2lkKQogICoJcmV0dXJuIHRoZSBidWZmZXIgd2l0aCB0 aGUgYnVmZmVyIGhlYWRlciBzcGlubG9jayBzdGlsbCBoZWxkLgogICovCiBCdWZmZXJEZXNjICoK LVN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIg KmJ1Zl9zdGF0ZSkKK1N0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yaW5nKQogewogCUJ1ZmZlckRlc2Mg KmJ1ZjsKIAlpbnQJCQliZ3dwcm9jbm87CiAJaW50CQkJdHJ5Y291bnRlcjsKIAl1aW50MzIJCWxv Y2FsX2J1Zl9zdGF0ZTsJLyogdG8gYXZvaWQgcmVwZWF0ZWQgKGRlLSlyZWZlcmVuY2luZyAqLwog CisJKmZyb21fcmluZyA9IGZhbHNlOworCiAJLyoKIAkgKiBJZiBnaXZlbiBhIHN0cmF0ZWd5IG9i amVjdCwgc2VlIHdoZXRoZXIgaXQgY2FuIHNlbGVjdCBhIGJ1ZmZlci4gV2UKIAkgKiBhc3N1bWUg c3RyYXRlZ3kgb2JqZWN0cyBkb24ndCBuZWVkIGJ1ZmZlcl9zdHJhdGVneV9sb2NrLgpAQCAtMjEz LDcgKzIxMCwxMCBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJh dGVneSwgdWludDMyICpidWZfc3RhdGUpCiAJewogCQlidWYgPSBHZXRCdWZmZXJGcm9tUmluZyhz dHJhdGVneSwgYnVmX3N0YXRlKTsKIAkJaWYgKGJ1ZiAhPSBOVUxMKQorCQl7CisJCQkqZnJvbV9y aW5nID0gdHJ1ZTsKIAkJCXJldHVybiBidWY7CisJCX0KIAl9CiAKIAkvKgpAQCAtNjAyLDcgKzYw Miw3IEBAIEZyZWVBY2Nlc3NTdHJhdGVneShCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSkK IAogLyoKICAqIEdldEJ1ZmZlckZyb21SaW5nIC0tIHJldHVybnMgYSBidWZmZXIgZnJvbSB0aGUg cmluZywgb3IgTlVMTCBpZiB0aGUKLSAqCQlyaW5nIGlzIGVtcHR5LgorICoJCXJpbmcgaXMgZW1w dHkgLyBub3QgdXNhYmxlLgogICoKICAqIFRoZSBidWZoZHIgc3BpbiBsb2NrIGlzIGhlbGQgb24g dGhlIHJldHVybmVkIGJ1ZmZlci4KICAqLwpAQCAtNjI1LDEwICs2MjUsNyBAQCBHZXRCdWZmZXJG cm9tUmluZyhCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDMyICpidWZfc3RhdGUp CiAJICovCiAJYnVmbnVtID0gc3RyYXRlZ3ktPmJ1ZmZlcnNbc3RyYXRlZ3ktPmN1cnJlbnRdOwog CWlmIChidWZudW0gPT0gSW52YWxpZEJ1ZmZlcikKLQl7Ci0JCXN0cmF0ZWd5LT5jdXJyZW50X3dh c19pbl9yaW5nID0gZmFsc2U7CiAJCXJldHVybiBOVUxMOwotCX0KIAogCS8qCiAJICogSWYgdGhl IGJ1ZmZlciBpcyBwaW5uZWQgd2UgY2Fubm90IHVzZSBpdCB1bmRlciBhbnkgY2lyY3Vtc3RhbmNl cy4KQEAgLTY0NCw3ICs2NDEsNiBAQCBHZXRCdWZmZXJGcm9tUmluZyhCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwgdWludDMyICpidWZfc3RhdGUpCiAJaWYgKEJVRl9TVEFURV9HRVRfUkVG Q09VTlQobG9jYWxfYnVmX3N0YXRlKSA9PSAwCiAJCSYmIEJVRl9TVEFURV9HRVRfVVNBR0VDT1VO VChsb2NhbF9idWZfc3RhdGUpIDw9IDEpCiAJewotCQlzdHJhdGVneS0+Y3VycmVudF93YXNfaW5f cmluZyA9IHRydWU7CiAJCSpidWZfc3RhdGUgPSBsb2NhbF9idWZfc3RhdGU7CiAJCXJldHVybiBi dWY7CiAJfQpAQCAtNjU0LDcgKzY1MCw2IEBAIEdldEJ1ZmZlckZyb21SaW5nKEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSkKIAkgKiBUZWxsIGNhbGxlciB0 byBhbGxvY2F0ZSBhIG5ldyBidWZmZXIgd2l0aCB0aGUgbm9ybWFsIGFsbG9jYXRpb24KIAkgKiBz dHJhdGVneS4gIEhlJ2xsIHRoZW4gcmVwbGFjZSB0aGlzIHJpbmcgZWxlbWVudCB2aWEgQWRkQnVm ZmVyVG9SaW5nLgogCSAqLwotCXN0cmF0ZWd5LT5jdXJyZW50X3dhc19pbl9yaW5nID0gZmFsc2U7 CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTY3MCw2ICs2NjUsMzkgQEAgQWRkQnVmZmVyVG9SaW5n KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCBCdWZmZXJEZXNjICpidWYpCiAJc3RyYXRl Z3ktPmJ1ZmZlcnNbc3RyYXRlZ3ktPmN1cnJlbnRdID0gQnVmZmVyRGVzY3JpcHRvckdldEJ1ZmZl cihidWYpOwogfQogCisvKgorICogVXRpbGl0eSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIElPQ29u dGV4dCBvZiBhIGdpdmVuIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5J3MKKyAqIHN0cmF0ZWd5IHJpbmcu CisgKi8KK0lPQ29udGV4dAorSU9Db250ZXh0Rm9yU3RyYXRlZ3koQnVmZmVyQWNjZXNzU3RyYXRl Z3kgc3RyYXRlZ3kpCit7CisJaWYgKCFzdHJhdGVneSkKKwkJcmV0dXJuIElPQ09OVEVYVF9OT1JN QUw7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5LT5idHlwZSkKKwl7CisJCWNhc2UgQkFTX05PUk1BTDoK KworCQkJLyoKKwkJCSAqIEN1cnJlbnRseSwgR2V0QWNjZXNzU3RyYXRlZ3koKSByZXR1cm5zIE5V TEwgZm9yCisJCQkgKiBCdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGUgQkFTX05PUk1BTCwgc28gdGhp cyBjYXNlIGlzCisJCQkgKiB1bnJlYWNoYWJsZS4KKwkJCSAqLworCQkJcGdfdW5yZWFjaGFibGUo KTsKKwkJCXJldHVybiBJT0NPTlRFWFRfTk9STUFMOworCQljYXNlIEJBU19CVUxLUkVBRDoKKwkJ CXJldHVybiBJT0NPTlRFWFRfQlVMS1JFQUQ7CisJCWNhc2UgQkFTX0JVTEtXUklURToKKwkJCXJl dHVybiBJT0NPTlRFWFRfQlVMS1dSSVRFOworCQljYXNlIEJBU19WQUNVVU06CisJCQlyZXR1cm4g SU9DT05URVhUX1ZBQ1VVTTsKKwl9CisKKwllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5VHlwZTogJWQiLCBzdHJhdGVneS0+YnR5cGUpOworCXBnX3VucmVhY2hh YmxlKCk7Cit9CisKIC8qCiAgKiBTdHJhdGVneVJlamVjdEJ1ZmZlciAtLSBjb25zaWRlciByZWpl Y3RpbmcgYSBkaXJ0eSBidWZmZXIKICAqCkBAIC02ODIsMTQgKzcxMCwxNCBAQCBBZGRCdWZmZXJU b1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIEJ1ZmZlckRlc2MgKmJ1ZikKICAq IGlmIHRoaXMgYnVmZmVyIHNob3VsZCBiZSB3cml0dGVuIGFuZCByZS11c2VkLgogICovCiBib29s Ci1TdHJhdGVneVJlamVjdEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgQnVm ZmVyRGVzYyAqYnVmKQorU3RyYXRlZ3lSZWplY3RCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kg c3RyYXRlZ3ksIEJ1ZmZlckRlc2MgKmJ1ZiwgYm9vbCBmcm9tX3JpbmcpCiB7CiAJLyogV2Ugb25s eSBkbyB0aGlzIGluIGJ1bGtyZWFkIG1vZGUgKi8KIAlpZiAoc3RyYXRlZ3ktPmJ0eXBlICE9IEJB U19CVUxLUkVBRCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogRG9uJ3QgbXVjayB3aXRoIGJlaGF2 aW9yIG9mIG5vcm1hbCBidWZmZXItcmVwbGFjZW1lbnQgc3RyYXRlZ3kgKi8KLQlpZiAoIXN0cmF0 ZWd5LT5jdXJyZW50X3dhc19pbl9yaW5nIHx8CisJaWYgKCFmcm9tX3JpbmcgfHwKIAkJc3RyYXRl Z3ktPmJ1ZmZlcnNbc3RyYXRlZ3ktPmN1cnJlbnRdICE9IEJ1ZmZlckRlc2NyaXB0b3JHZXRCdWZm ZXIoYnVmKSkKIAkJcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9sb2NhbGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxi dWYuYwppbmRleCA4MzcyYWNjMzgzLi4yMTA4YmJlN2Q4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2xvY2FsYnVmLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxs ZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJleGVjdXRvci9p bnN0cnVtZW50LmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZf aW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9ndWNfaG9va3MuaCIKQEAgLTEwNyw3ICsxMDgsNyBAQCBQcmVmZXRjaExvY2FsQnVmZmVyKFNN Z3JSZWxhdGlvbiBzbWdyLCBGb3JrTnVtYmVyIGZvcmtOdW0sCiAgKi8KIEJ1ZmZlckRlc2MgKgog TG9jYWxCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwgRm9ya051bWJlciBmb3JrTnVtLCBC bG9ja051bWJlciBibG9ja051bSwKLQkJCQkgYm9vbCAqZm91bmRQdHIpCisJCQkJIGJvb2wgKmZv dW5kUHRyLCBJT0NvbnRleHQgKmlvX2NvbnRleHQpCiB7CiAJQnVmZmVyVGFnCW5ld1RhZzsJCQkv KiBpZGVudGl0eSBvZiByZXF1ZXN0ZWQgYmxvY2sgKi8KIAlMb2NhbEJ1ZmZlckxvb2t1cEVudCAq aHJlc3VsdDsKQEAgLTEyNyw2ICsxMjgsMTQgQEAgTG9jYWxCdWZmZXJBbGxvYyhTTWdyUmVsYXRp b24gc21nciwgRm9ya051bWJlciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja051bSwKIAlocmVz dWx0ID0gKExvY2FsQnVmZmVyTG9va3VwRW50ICopCiAJCWhhc2hfc2VhcmNoKExvY2FsQnVmSGFz aCwgKHZvaWQgKikgJm5ld1RhZywgSEFTSF9GSU5ELCBOVUxMKTsKIAorCS8qCisJICogSU8gT3Bl cmF0aW9ucyBvbiBsb2NhbCBidWZmZXJzIGFyZSBvbmx5IGRvbmUgaW4gSU9DT05URVhUX05PUk1B TC4gU2V0CisJICogaW9fY29udGV4dCBoZXJlIChpbnN0ZWFkIG9mIGFmdGVyIGEgYnVmZmVyIGhp dCB3b3VsZCBoYXZlIHJldHVybmVkKSBmb3IKKwkgKiBjb252ZW5pZW5jZSBzaW5jZSB3ZSBkb24n dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBvdmVyaGVhZCBvZiBjYWxsaW5nCisJICogSU9Db250 ZXh0Rm9yU3RyYXRlZ3koKS4KKwkgKi8KKwkqaW9fY29udGV4dCA9IElPQ09OVEVYVF9OT1JNQUw7 CisKIAlpZiAoaHJlc3VsdCkKIAl7CiAJCWIgPSBocmVzdWx0LT5pZDsKQEAgLTIzMCw2ICsyMzks NyBAQCBMb2NhbEJ1ZmZlckFsbG9jKFNNZ3JSZWxhdGlvbiBzbWdyLCBGb3JrTnVtYmVyIGZvcmtO dW0sIEJsb2NrTnVtYmVyIGJsb2NrTnVtLAogCQlidWZfc3RhdGUgJj0gfkJNX0RJUlRZOwogCQlw Z19hdG9taWNfdW5sb2NrZWRfd3JpdGVfdTMyKCZidWZIZHItPnN0YXRlLCBidWZfc3RhdGUpOwog CisJCXBnc3RhdF9jb3VudF9pb19vcChJT09QX1dSSVRFLCBJT09CSkVDVF9URU1QX1JFTEFUSU9O LCBJT0NPTlRFWFRfTk9STUFMKTsKIAkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3dyaXR0ZW4r KzsKIAl9CiAKQEAgLTI1Niw2ICsyNjYsNyBAQCBMb2NhbEJ1ZmZlckFsbG9jKFNNZ3JSZWxhdGlv biBzbWdyLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVyIGJsb2NrTnVtLAogCQlDbGVh ckJ1ZmZlclRhZygmYnVmSGRyLT50YWcpOwogCQlidWZfc3RhdGUgJj0gfihCTV9WQUxJRCB8IEJN X1RBR19WQUxJRCk7CiAJCXBnX2F0b21pY191bmxvY2tlZF93cml0ZV91MzIoJmJ1Zkhkci0+c3Rh dGUsIGJ1Zl9zdGF0ZSk7CisJCXBnc3RhdF9jb3VudF9pb19vcChJT09QX0VWSUNULCBJT09CSkVD VF9URU1QX1JFTEFUSU9OLCBJT0NPTlRFWFRfTk9STUFMKTsKIAl9CiAKIAlocmVzdWx0ID0gKExv Y2FsQnVmZmVyTG9va3VwRW50ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Nt Z3IvbWQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9tZC5jCmluZGV4IDYwYzk5MDVlZmYu LjM3YmFlNGJmNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9tZC5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9tZC5jCkBAIC05ODMsNiArOTgzLDE1IEBAIG1k aW1tZWRzeW5jKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtudW0pCiAJewogCQlN ZGZkVmVjICAgICp2ID0gJnJlbG4tPm1kX3NlZ19mZHNbZm9ya251bV1bc2Vnbm8gLSAxXTsKIAor CQkvKgorCQkgKiBmc3luY3MgZG9uZSB0aHJvdWdoIG1kaW1tZWRzeW5jKCkgc2hvdWxkIGJlIHRy YWNrZWQgaW4gYSBzZXBhcmF0ZQorCQkgKiBJT0NvbnRleHQgdGhhbiB0aG9zZSBkb25lIHRocm91 Z2ggbWRzeW5jZmlsZXRhZygpIHRvIGRpZmZlcmVudGlhdGUKKwkJICogYmV0d2VlbiB1bmF2b2lk YWJsZSBjbGllbnQgYmFja2VuZCBmc3luY3MgKGUuZy4gdGhvc2UgZG9uZSBkdXJpbmcKKwkJICog aW5kZXggYnVpbGQpIGFuZCB0aG9zZSB3aGljaCBpZGVhbGx5IHdvdWxkIGhhdmUgYmVlbiBkb25l IGJ5IHRoZQorCQkgKiBjaGVja3BvaW50ZXIuIFNpbmNlIG90aGVyIElPIG9wZXJhdGlvbnMgYnlw YXNzaW5nIHRoZSBidWZmZXIKKwkJICogbWFuYWdlciBjb3VsZCBhbHNvIGJlIHRyYWNrZWQgaW4g c3VjaCBhbiBJT0NvbnRleHQsIHdhaXQgdW50aWwKKwkJICogdGhlc2UgYXJlIGFsc28gdHJhY2tl ZCB0byB0cmFjayBpbW1lZGlhdGUgZnN5bmNzLgorCQkgKi8KIAkJaWYgKEZpbGVTeW5jKHYtPm1k ZmRfdmZkLCBXQUlUX0VWRU5UX0RBVEFfRklMRV9JTU1FRElBVEVfU1lOQykgPCAwKQogCQkJZXJl cG9ydChkYXRhX3N5bmNfZWxldmVsKEVSUk9SKSwKIAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNj ZXNzKCksCkBAIC0xMDIxLDYgKzEwMzAsMTkgQEAgcmVnaXN0ZXJfZGlydHlfc2VnbWVudChTTWdy UmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrbnVtLCBNZGZkVmVjICpzZWcpCiAKIAlpZiAo IVJlZ2lzdGVyU3luY1JlcXVlc3QoJnRhZywgU1lOQ19SRVFVRVNULCBmYWxzZSAvKiByZXRyeU9u RXJyb3IgKi8gKSkKIAl7CisJCS8qCisJCSAqIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgaWYg dGhlIGN1cnJlbnQgSU9Db250ZXh0IGlzCisJCSAqIElPQ09OVEVYVF9OT1JNQUwgb3IgSU9DT05U RVhUX1tCVUxLUkVBRCwgQlVMS1dSSVRFLCBWQUNVVU1dIGF0IHRoaXMKKwkJICogcG9pbnQsIHNv IGNvdW50IHRoZSBmc3luYyBhcyBiZWluZyBpbiB0aGUgSU9DT05URVhUX05PUk1BTAorCQkgKiBJ T0NvbnRleHQuIFRoaXMgaXMgcHJvYmFibHkgb2theSwgYmVjYXVzZSB0aGUgbnVtYmVyIG9mIGJh Y2tlbmQKKwkJICogZnN5bmNzIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHRoZSBlZmZpY2Fj eSBvZiB0aGUKKwkJICogQnVmZmVyQWNjZXNzU3RyYXRlZ3kuIEFuZCBjb3VudGluZyBib3RoIGZz eW5jcyBkb25lIGluCisJCSAqIElPQ09OVEVYVF9OT1JNQUwgYW5kIElPQ09OVEVYVF9bQlVMS1JF QUQsIEJVTEtXUklURSwgVkFDVVVNXSB1bmRlcgorCQkgKiBJT0NPTlRFWFRfTk9STUFMIGlzIGxp a2VseSBjbGVhcmVyIHdoZW4gaW52ZXN0aWdhdGluZyB0aGUgbnVtYmVyIG9mCisJCSAqIGJhY2tl bmQgZnN5bmNzLgorCQkgKi8KKwkJcGdzdGF0X2NvdW50X2lvX29wKElPT1BfRlNZTkMsIElPT0JK RUNUX1JFTEFUSU9OLCBJT0NPTlRFWFRfTk9STUFMKTsKKwogCQllcmVwb3J0KERFQlVHMSwKIAkJ CQkoZXJybXNnX2ludGVybmFsKCJjb3VsZCBub3QgZm9yd2FyZCBmc3luYyByZXF1ZXN0IGJlY2F1 c2UgcmVxdWVzdCBxdWV1ZSBpcyBmdWxsIikpKTsKIApAQCAtMTQxMCw2ICsxNDMyLDkgQEAgbWRz eW5jZmlsZXRhZyhjb25zdCBGaWxlVGFnICpmdGFnLCBjaGFyICpwYXRoKQogCWlmIChuZWVkX3Rv X2Nsb3NlKQogCQlGaWxlQ2xvc2UoZmlsZSk7CiAKKwlpZiAocmVzdWx0ID49IDApCisJCXBnc3Rh dF9jb3VudF9pb19vcChJT09QX0ZTWU5DLCBJT09CSkVDVF9SRUxBVElPTiwgSU9DT05URVhUX05P Uk1BTCk7CisKIAllcnJubyA9IHNhdmVfZXJybm87CiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggZWQ4YWEyNTE5Yy4uMGI0NDgxNDc0MCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpZm5kZWYg QlVGTUdSX0lOVEVSTkFMU19ICiAjZGVmaW5lIEJVRk1HUl9JTlRFUk5BTFNfSAogCisjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWYuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpAQCAtMzkxLDExICszOTIsMTIg QEAgZXh0ZXJuIHZvaWQgSXNzdWVQZW5kaW5nV3JpdGViYWNrcyhXcml0ZWJhY2tDb250ZXh0ICpj b250ZXh0KTsKIGV4dGVybiB2b2lkIFNjaGVkdWxlQnVmZmVyVGFnRm9yV3JpdGViYWNrKFdyaXRl YmFja0NvbnRleHQgKmNvbnRleHQsIEJ1ZmZlclRhZyAqdGFnKTsKIAogLyogZnJlZWxpc3QuYyAq LworZXh0ZXJuIElPQ29udGV4dCBJT0NvbnRleHRGb3JTdHJhdGVneShCdWZmZXJBY2Nlc3NTdHJh dGVneSBiYXMpOwogZXh0ZXJuIEJ1ZmZlckRlc2MgKlN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAotCQkJCQkJCQkJIHVpbnQzMiAqYnVmX3N0YXRlKTsKKwkJ CQkJCQkJCSB1aW50MzIgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yaW5nKTsKIGV4dGVybiB2b2lk IFN0cmF0ZWd5RnJlZUJ1ZmZlcihCdWZmZXJEZXNjICpidWYpOwogZXh0ZXJuIGJvb2wgU3RyYXRl Z3lSZWplY3RCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCi0JCQkJCQkJCSBC dWZmZXJEZXNjICpidWYpOworCQkJCQkJCQkgQnVmZmVyRGVzYyAqYnVmLCBib29sIGZyb21fcmlu Zyk7CiAKIGV4dGVybiBpbnQJU3RyYXRlZ3lTeW5jU3RhcnQodWludDMyICpjb21wbGV0ZV9wYXNz ZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxvYyk7CiBleHRlcm4gdm9pZCBTdHJhdGVneU5vdGlmeUJn V3JpdGVyKGludCBiZ3dwcm9jbm8pOwpAQCAtNDE3LDcgKzQxOSw3IEBAIGV4dGVybiBQcmVmZXRj aEJ1ZmZlclJlc3VsdCBQcmVmZXRjaExvY2FsQnVmZmVyKFNNZ3JSZWxhdGlvbiBzbWdyLAogCQkJ CQkJCQkJCQkJRm9ya051bWJlciBmb3JrTnVtLAogCQkJCQkJCQkJCQkJQmxvY2tOdW1iZXIgYmxv Y2tOdW0pOwogZXh0ZXJuIEJ1ZmZlckRlc2MgKkxvY2FsQnVmZmVyQWxsb2MoU01nclJlbGF0aW9u IHNtZ3IsIEZvcmtOdW1iZXIgZm9ya051bSwKLQkJCQkJCQkJCUJsb2NrTnVtYmVyIGJsb2NrTnVt LCBib29sICpmb3VuZFB0cik7CisJCQkJCQkJCQlCbG9ja051bWJlciBibG9ja051bSwgYm9vbCAq Zm91bmRQdHIsIElPQ29udGV4dCAqaW9fY29udGV4dCk7CiBleHRlcm4gdm9pZCBNYXJrTG9jYWxC dWZmZXJEaXJ0eShCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiB2b2lkIERyb3BSZWxhdGlvbkxvY2Fs QnVmZmVycyhSZWxGaWxlTG9jYXRvciBybG9jYXRvciwKIAkJCQkJCQkJCSBGb3JrTnVtYmVyIGZv cmtOdW0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAppbmRleCAzM2VhZGJjMTI5Li5iOGExOGI4MDgxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvYnVmbWdyLmgKQEAgLTIzLDcgKzIzLDEyIEBACiAKIHR5cGVkZWYgdm9pZCAqQmxvY2s7 CiAKLS8qIFBvc3NpYmxlIGFyZ3VtZW50cyBmb3IgR2V0QWNjZXNzU3RyYXRlZ3koKSAqLworLyoK KyAqIFBvc3NpYmxlIGFyZ3VtZW50cyBmb3IgR2V0QWNjZXNzU3RyYXRlZ3koKS4KKyAqCisgKiBJ ZiBhZGRpbmcgYSBuZXcgQnVmZmVyQWNjZXNzU3RyYXRlZ3lUeXBlLCBhbHNvIGFkZCBhIG5ldyBJ T0NvbnRleHQgc28KKyAqIElPIHN0YXRpc3RpY3MgdXNpbmcgdGhpcyBzdHJhdGVneSBhcmUgdHJh Y2tlZC4KKyAqLwogdHlwZWRlZiBlbnVtIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlwZQogewogCUJB U19OT1JNQUwsCQkJCQkvKiBOb3JtYWwgcmFuZG9tIGFjY2VzcyAqLwotLSAKMi4zNC4xCgo= --00000000000032a58605f1db346f Content-Type: text/x-patch; charset="US-ASCII"; name="v45-0005-pg_stat_io-documentation.patch" Content-Disposition: attachment; filename="v45-0005-pg_stat_io-documentation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lcpaqb2a4 RnJvbSBhMjM1MGFkZGRjZTUxZjU2NGE1ZjU3M2I4YjU3ZjExNWJmZDQ3ZmY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDkgSmFuIDIwMjMgMTQ6NDI6NTMgLTA1MDAKU3ViamVjdDogW1BB VENIIHY0NSA1LzVdIHBnX3N0YXRfaW8gZG9jdW1lbnRhdGlvbgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpBdXRob3I6IFNhbWF5IFNoYXJtYSA8 c21pbGluZ3NhbWF5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hY2llayBTYWtyZWpkYSA8bS5z YWtyZWpkYUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwu Y29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpEaXNj dXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvMjAyMDAx MjQxOTUyMjYubHRoNTJpeWRxMm4ydWlscSU0MGFsYXAzLmFuYXJhemVsLmRlCi0tLQogZG9jL3Ny Yy9zZ21sL21vbml0b3Jpbmcuc2dtbCB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogMSBmaWxlIGNoYW5nZWQsIDMwNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxNjkxMjQ2ZTc2Li4wZjRkNjY0NTE2IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKQEAgLTQ2OSw2ICs0NjksMTYgQEAgcG9zdGdyZXMgICAyNzA5MyAgMC4wICAw LjAgIDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAwOjAwIHBvc3RncmVzOiBzZXIK ICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PHN0cnVjdG5hbWU+cGdfc3RhdF9pbzwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmltYXJ5PnBn X3N0YXRfaW88L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAg ICAgICBPbmUgcm93IHBlciBiYWNrZW5kIHR5cGUsIGNvbnRleHQsIHRhcmdldCBvYmplY3QgY29t YmluYXRpb24gc2hvd2luZworICAgICAgIGNsdXN0ZXItd2lkZSBJL08gc3RhdGlzdGljcy4KKyAg ICAgICBTZWUgPGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWlvLXZpZXciPgorICAg ICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVjdG5hbWU+PC9saW5rPiBmb3IgZGV0YWls cy4KKyAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48c3RydWN0bmFtZT5wZ19zdGF0X3JlcGxpY2F0aW9uX3Nsb3RzPC9zdHJ1Y3RuYW1lPjxpbmRl eHRlcm0+PHByaW1hcnk+cGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90czwvcHJpbWFyeT48L2luZGV4 dGVybT48L2VudHJ5PgogICAgICAgPGVudHJ5Pk9uZSByb3cgcGVyIHJlcGxpY2F0aW9uIHNsb3Qs IHNob3dpbmcgc3RhdGlzdGljcyBhYm91dCB0aGUKQEAgLTY2NSwyMCArNjc1LDIwIEBAIHBvc3Rn cmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDExOjM0ICAg MDowMCBwb3N0Z3Jlczogc2VyCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSA8c3RydWN0 bmFtZT5wZ19zdGF0aW9fPC9zdHJ1Y3RuYW1lPiB2aWV3cyBhcmUgcHJpbWFyaWx5IHVzZWZ1bCB0 bwotICAgZGV0ZXJtaW5lIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBidWZmZXIgY2FjaGUuICBX aGVuIHRoZSBudW1iZXIKLSAgIG9mIGFjdHVhbCBkaXNrIHJlYWRzIGlzIG11Y2ggc21hbGxlciB0 aGFuIHRoZSBudW1iZXIgb2YgYnVmZmVyCi0gICBoaXRzLCB0aGVuIHRoZSBjYWNoZSBpcyBzYXRp c2Z5aW5nIG1vc3QgcmVhZCByZXF1ZXN0cyB3aXRob3V0Ci0gICBpbnZva2luZyBhIGtlcm5lbCBj YWxsLiBIb3dldmVyLCB0aGVzZSBzdGF0aXN0aWNzIGRvIG5vdCBnaXZlIHRoZQotICAgZW50aXJl IHN0b3J5OiBkdWUgdG8gdGhlIHdheSBpbiB3aGljaCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+Ci0gICBoYW5kbGVzIGRpc2sgSS9PLCBkYXRhIHRoYXQgaXMgbm90IGluIHRo ZQotICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBidWZmZXIgY2FjaGUg bWlnaHQgc3RpbGwgcmVzaWRlIGluIHRoZQotICAga2VybmVsJ3MgSS9PIGNhY2hlLCBhbmQgbWln aHQgdGhlcmVmb3JlIHN0aWxsIGJlIGZldGNoZWQgd2l0aG91dAotICAgcmVxdWlyaW5nIGEgcGh5 c2ljYWwgcmVhZC4gVXNlcnMgaW50ZXJlc3RlZCBpbiBvYnRhaW5pbmcgbW9yZQotICAgZGV0YWls ZWQgaW5mb3JtYXRpb24gb24gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBJ L08gYmVoYXZpb3IgYXJlCi0gICBhZHZpc2VkIHRvIHVzZSB0aGUgPHByb2R1Y3RuYW1lPlBvc3Rn cmVTUUw8L3Byb2R1Y3RuYW1lPiBzdGF0aXN0aWNzIHZpZXdzCi0gICBpbiBjb21iaW5hdGlvbiB3 aXRoIG9wZXJhdGluZyBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgYWxsb3cgaW5zaWdodAotICAgaW50 byB0aGUga2VybmVsJ3MgaGFuZGxpbmcgb2YgSS9PLgorICAgVGhlIDxzdHJ1Y3RuYW1lPnBnX3N0 YXRfaW88L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+cGdfc3RhdGlvXzwvc3RydWN0 bmFtZT4gc2V0IG9mIHZpZXdzIGFyZSBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKKyAgIGRldGVybWlu aW5nIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBidWZmZXIgY2FjaGUuICBXaGVuIHRoZSBudW1i ZXIgb2YgYWN0dWFsCisgICBkaXNrIHJlYWRzIGlzIG11Y2ggc21hbGxlciB0aGFuIHRoZSBudW1i ZXIgb2YgYnVmZmVyIGhpdHMsIHRoZW4gdGhlIGNhY2hlIGlzCisgICBzYXRpc2Z5aW5nIG1vc3Qg cmVhZCByZXF1ZXN0cyB3aXRob3V0IGludm9raW5nIGEga2VybmVsIGNhbGwuIEhvd2V2ZXIsIHRo ZXNlCisgICBzdGF0aXN0aWNzIGRvIG5vdCBnaXZlIHRoZSBlbnRpcmUgc3Rvcnk6IGR1ZSB0byB0 aGUgd2F5IGluIHdoaWNoCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGhhbmRsZXMgZGlzayBJL08sIGRhdGEgdGhhdCBpcyBub3QgaW4KKyAgIHRoZSA8cHJvZHVjdG5h bWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGJ1ZmZlciBjYWNoZSBtaWdodCBzdGlsbCByZXNp ZGUgaW4KKyAgIHRoZSBrZXJuZWwncyBJL08gY2FjaGUsIGFuZCBtaWdodCB0aGVyZWZvcmUgc3Rp bGwgYmUgZmV0Y2hlZCB3aXRob3V0CisgICByZXF1aXJpbmcgYSBwaHlzaWNhbCByZWFkLiBVc2Vy cyBpbnRlcmVzdGVkIGluIG9idGFpbmluZyBtb3JlIGRldGFpbGVkCisgICBpbmZvcm1hdGlvbiBv biA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IEkvTyBiZWhhdmlvciBhcmUK KyAgIGFkdmlzZWQgdG8gdXNlIHRoZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IHN0YXRpc3RpY3Mgdmlld3MgaW4KKyAgIGNvbWJpbmF0aW9uIHdpdGggb3BlcmF0aW5nIHN5 c3RlbSB1dGlsaXRpZXMgdGhhdCBhbGxvdyBpbnNpZ2h0IGludG8gdGhlCisgICBrZXJuZWwncyBo YW5kbGluZyBvZiBJL08uCiAgIDwvcGFyYT4KIAogIDwvc2VjdDI+CkBAIC0zNjMzLDYgKzM2NDMs Mjg5IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgPHN0cnVjdGZpZWxkPmxhc3RfYXJj aGl2ZWRfd2FsPC9zdHJ1Y3RmaWVsZD4gaGF2ZSBhbHNvIGJlZW4gc3VjY2Vzc2Z1bGx5CiAgICAg YXJjaGl2ZWQuCiAgIDwvcGFyYT4KKyA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJtb25pdG9yaW5n LXBnLXN0YXQtaW8tdmlldyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2lvPC9zdHJ1 Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnBnX3N0YXRfaW88 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIDxzdHJ1Y3RuYW1l PnBnX3N0YXRfaW88L3N0cnVjdG5hbWU+IHZpZXcgd2lsbCBjb250YWluIG9uZSByb3cgZm9yIGVh Y2gKKyAgIGJhY2tlbmQgdHlwZSwgSS9PIGNvbnRleHQsIGFuZCB0YXJnZXQgSS9PIG9iamVjdCBj b21iaW5hdGlvbiBzaG93aW5nCisgICBjbHVzdGVyLXdpZGUgSS9PIHN0YXRpc3RpY3MuIENvbWJp bmF0aW9ucyB3aGljaCBkbyBub3QgbWFrZSBzZW5zZSBhcmUKKyAgIG9taXR0ZWQuCisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIEN1cnJlbnRseSwgSS9PIG9uIHJlbGF0aW9ucyAoZS5nLiB0YWJs ZXMsIGluZGV4ZXMpIGlzIHRyYWNrZWQuIEhvd2V2ZXIsCisgICByZWxhdGlvbiBJL08gd2hpY2gg YnlwYXNzZXMgc2hhcmVkIGJ1ZmZlcnMgKGUuZy4gd2hlbiBtb3ZpbmcgYSB0YWJsZSBmcm9tIG9u ZQorICAgdGFibGVzcGFjZSB0byBhbm90aGVyKSBpcyBjdXJyZW50bHkgbm90IHRyYWNrZWQuCisg IDwvcGFyYT4KKworICA8dGFibGUgaWQ9InBnLXN0YXQtaW8tdmlldyIgeHJlZmxhYmVsPSJwZ19z dGF0X2lvIj4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2lvPC9zdHJ1Y3RuYW1lPiBW aWV3PC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgIDxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgICA8 L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgPC9wYXJh PgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAgICA8dGJvZHk+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+Cisg ICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICA8c3RydWN0Zmll bGQ+YmFja2VuZF90eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgICA8 L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFR5cGUgb2YgYmFja2VuZCAoZS5nLiBiYWNr Z3JvdW5kIHdvcmtlciwgYXV0b3ZhY3V1bSB3b3JrZXIpLiBTZWUgPGxpbmsKKyAgICAgICAgbGlu a2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWFjdGl2aXR5LXZpZXciPgorICAgICAgICA8c3RydWN0 bmFtZT5wZ19zdGF0X2FjdGl2aXR5PC9zdHJ1Y3RuYW1lPjwvbGluaz4gZm9yIG1vcmUgaW5mb3Jt YXRpb24KKyAgICAgICAgb24gPHZhcm5hbWU+YmFja2VuZF90eXBlPC92YXJuYW1lPnMuIFNvbWUK KyAgICAgICAgPHZhcm5hbWU+YmFja2VuZF90eXBlPC92YXJuYW1lPnMgZG8gbm90IGFjY3VtdWxh dGUgSS9PIG9wZXJhdGlvbgorICAgICAgICBzdGF0aXN0aWNzIGFuZCB3aWxsIG5vdCBiZSBpbmNs dWRlZCBpbiB0aGUgdmlldy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPgorICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgPHN0 cnVjdGZpZWxkPmlvX2NvbnRleHQ8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNvbnRleHQgb2YgYW4gSS9P IG9wZXJhdGlvbi4gUG9zc2libGUgdmFsdWVzIGFyZToKKyAgICAgICA8L3BhcmE+CisgICAgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgPGxpdGVyYWw+bm9ybWFsPC9saXRlcmFsPjogVGhlIGRlZmF1bHQgb3Igc3RhbmRhcmQK KyAgICAgICAgICA8dmFybmFtZT5pb19jb250ZXh0PC92YXJuYW1lPiBmb3IgYSB0eXBlIG9mIEkv TyBvcGVyYXRpb24uIEZvcgorICAgICAgICAgIGV4YW1wbGUsIGJ5IGRlZmF1bHQsIHJlbGF0aW9u IGRhdGEgaXMgcmVhZCBpbnRvIGFuZCB3cml0dGVuIG91dCBmcm9tCisgICAgICAgICAgc2hhcmVk IGJ1ZmZlcnMuIFRodXMsIHJlYWRzIGFuZCB3cml0ZXMgb2YgcmVsYXRpb24gZGF0YSB0byBhbmQg ZnJvbQorICAgICAgICAgIHNoYXJlZCBidWZmZXJzIGFyZSB0cmFja2VkIGluIDx2YXJuYW1lPmlv X2NvbnRleHQ8L3Zhcm5hbWU+CisgICAgICAgICAgPGxpdGVyYWw+bm9ybWFsPC9saXRlcmFsPi4K KyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+dmFjdXVtPC9saXRlcmFsPjog SS9PIG9wZXJhdGlvbnMgZG9uZSBvdXRzaWRlIG9mIHNoYXJlZAorICAgICAgICAgIGJ1ZmZlcnMg aW5jdXJyZWQgd2hpbGUgdmFjdXVtaW5nIGFuZCBhbmFseXppbmcgcGVybWFuZW50IHJlbGF0aW9u cy4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+YnVsa3JlYWQ8L2xpdGVy YWw+OiBRdWFsaWZ5aW5nIGxhcmdlIHJlYWQgSS9PIG9wZXJhdGlvbnMKKyAgICAgICAgICBkb25l IG91dHNpZGUgb2Ygc2hhcmVkIGJ1ZmZlcnMsIGZvciBleGFtcGxlLCBhIHNlcXVlbnRpYWwgc2Nh biBvZiBhCisgICAgICAgICAgbGFyZ2UgdGFibGUuCisgICAgICAgICA8L3BhcmE+CisgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIDxsaXRlcmFsPmJ1bGt3cml0ZTwvbGl0ZXJhbD46IFF1YWxpZnlpbmcgbGFyZ2Ugd3JpdGUg SS9PIG9wZXJhdGlvbnMKKyAgICAgICAgICBkb25lIG91dHNpZGUgb2Ygc2hhcmVkIGJ1ZmZlcnMs IHN1Y2ggYXMgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4uCisgICAgICAgICA8L3BhcmE+CisgICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPgorICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICAgPHN0cnVjdGZpZWxkPmlvX29iamVjdDwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+ CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUYXJnZXQgb2JqZWN0IG9m IGFuIEkvTyBvcGVyYXRpb24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisgICAgICAgPGl0ZW1pemVk bGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxp dGVyYWw+cmVsYXRpb248L2xpdGVyYWw+OiBUaGlzIGluY2x1ZGVzIHBlcm1hbmVudCByZWxhdGlv bnMuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPnRlbXAgcmVsYXRpb248 L2xpdGVyYWw+OiBUaGlzIGluY2x1ZGVzIHRlbXBvcmFyeSByZWxhdGlvbnMuCisgICAgICAgICA8 L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAg ICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWFkPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgTnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucyBpbiB1bml0cyBvZiA8dmFybmFtZT5v cF9ieXRlczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgIDxz dHJ1Y3RmaWVsZD53cml0dGVuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIHdyaXRlIG9wZXJh dGlvbnMgaW4gdW5pdHMgb2YgPHZhcm5hbWU+b3BfYnl0ZXM8L3Zhcm5hbWU+LgorICAgICAgIDwv cGFyYT4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+ZXh0ZW5kZWQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBOdW1iZXIgb2YgcmVsYXRpb24gZXh0ZW5kIG9wZXJhdGlvbnMgaW4gdW5pdHMgb2YK KyAgICAgICAgPHZhcm5hbWU+b3BfYnl0ZXM8L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+b3BfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlw ZT5iaWdpbnQ8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBU aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciB1bml0IG9mIEkvTyByZWFkLCB3cml0dGVuLCBvciBleHRl bmRlZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJlbGF0aW9uIGRh dGEgcmVhZHMsIHdyaXRlcywgYW5kIGV4dGVuZHMgYXJlIGRvbmUgaW4KKyAgICAgICAgPHZhcm5h bWU+YmxvY2tfc2l6ZTwvdmFybmFtZT4gdW5pdHMsIGRlcml2ZWQgZnJvbSB0aGUgYnVpbGQtdGlt ZQorICAgICAgICBwYXJhbWV0ZXIgPHN5bWJvbD5CTENLU1o8L3N5bWJvbD4sIHdoaWNoIGlzIDxs aXRlcmFsPjgxOTI8L2xpdGVyYWw+IGJ5CisgICAgICAgIGRlZmF1bHQuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5ldmljdGVkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAg ICAgTnVtYmVyIG9mIHRpbWVzIGEgYmxvY2sgaGFzIGJlZW4gZXZpY3RlZCBmcm9tIGEgc2hhcmVk IG9yIGxvY2FsIGJ1ZmZlci4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IEluIDx2YXJuYW1lPmlvX2NvbnRleHQ8L3Zhcm5hbWU+IDxsaXRlcmFsPm5vcm1hbDwvbGl0ZXJh bD4sIHRoaXMgY291bnRzCisgICAgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgYSBibG9jayB3YXMg ZXZpY3RlZCBmcm9tIGEgYnVmZmVyIGFuZCByZXBsYWNlZCB3aXRoCisgICAgICAgIGFub3RoZXIg YmxvY2suIEluIDx2YXJuYW1lPmlvX2NvbnRleHQ8L3Zhcm5hbWU+cworICAgICAgICA8bGl0ZXJh bD5idWxrd3JpdGU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5idWxrcmVhZDwvbGl0ZXJhbD4sIGFuZAor ICAgICAgICA8bGl0ZXJhbD52YWN1dW08L2xpdGVyYWw+LCB0aGlzIGNvdW50cyB0aGUgbnVtYmVy IG9mIHRpbWVzIGEgYmxvY2sgd2FzCisgICAgICAgIGV2aWN0ZWQgZnJvbSBzaGFyZWQgYnVmZmVy cyBpbiBvcmRlciB0byBhZGQgdGhlIHNoYXJlZCBidWZmZXIgdG8gYQorICAgICAgICBzZXBhcmF0 ZSBzaXplLWxpbWl0ZWQgcmluZyBidWZmZXIuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgICA8c3RydWN0ZmllbGQ+cmV1c2VkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90 eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG51bWJlciBv ZiB0aW1lcyBhbiBleGlzdGluZyBidWZmZXIgaW4gYSBzaXplLWxpbWl0ZWQgcmluZyBidWZmZXIK KyAgICAgICAgb3V0c2lkZSBvZiBzaGFyZWQgYnVmZmVycyB3YXMgcmV1c2VkIGFzIHBhcnQgb2Yg YW4gSS9PIG9wZXJhdGlvbiBpbiB0aGUKKyAgICAgICAgPGxpdGVyYWw+YnVsa3JlYWQ8L2xpdGVy YWw+LCA8bGl0ZXJhbD5idWxrd3JpdGU8L2xpdGVyYWw+LCBvcgorICAgICAgICA8bGl0ZXJhbD52 YWN1dW08L2xpdGVyYWw+IDx2YXJuYW1lPmlvX2NvbnRleHQ8L3Zhcm5hbWU+cy4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgIDxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgPHN0cnVjdGZpZWxkPmZpbGVzX3N5bmNlZDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBh cmE+CisgICAgICAgIE51bWJlciBvZiA8bGl0ZXJhbD5mc3luYzwvbGl0ZXJhbD4gY2FsbHMuIFRo ZXNlIGFyZSBvbmx5IHRyYWNrZWQgaW4KKyAgICAgICAgPHZhcm5hbWU+aW9fY29udGV4dDwvdmFy bmFtZT4gPGxpdGVyYWw+bm9ybWFsPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICAgPHN0cnVjdGZpZWxkPnN0YXRzX3Jlc2V0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgVGltZSBhdCB3aGljaCB0aGVzZSBzdGF0aXN0aWNzIHdlcmUgbGFzdCBy ZXNldC4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8 L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisKKyAgPHBhcmE+CisgICBTb21lIDx2 YXJuYW1lPmJhY2tlbmRfdHlwZTwvdmFybmFtZT5zIG5ldmVyIHBlcmZvcm0gSS9PIG9wZXJhdGlv bnMgaW4gc29tZQorICAgPHZhcm5hbWU+aW9fY29udGV4dDwvdmFybmFtZT5zIGFuZC9vciBvbiBz b21lIDx2YXJuYW1lPmlvX29iamVjdDwvdmFybmFtZT5zLgorICAgVGhlc2Ugcm93cyBhcmUgb21p dHRlZCBmcm9tIHRoZSB2aWV3LiBGb3IgZXhhbXBsZSwgdGhlIGNoZWNrcG9pbnRlciBkb2VzIG5v dAorICAgY2hlY2twb2ludCB0ZW1wb3JhcnkgdGFibGVzLCBzbyB0aGVyZSB3aWxsIGJlIG5vIHJv d3MgZm9yCisgICA8dmFybmFtZT5iYWNrZW5kX3R5cGU8L3Zhcm5hbWU+IDxsaXRlcmFsPmNoZWNr cG9pbnRlcjwvbGl0ZXJhbD4gYW5kCisgICA8dmFybmFtZT5pb19vYmplY3Q8L3Zhcm5hbWU+IDxs aXRlcmFsPnRlbXAgcmVsYXRpb248L2xpdGVyYWw+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBJbiBhZGRpdGlvbiwgc29tZSBJL08gb3BlcmF0aW9ucyB3aWxsIG5ldmVyIGJlIHBlcmZvcm1l ZCBlaXRoZXIgYnkgY2VydGFpbgorICAgPHZhcm5hbWU+YmFja2VuZF90eXBlPC92YXJuYW1lPnMg b3IgaW4gY2VydGFpbgorICAgPHZhcm5hbWU+aW9fY29udGV4dDwvdmFybmFtZT5zIG9yIG9uIGNl cnRhaW4gPHZhcm5hbWU+aW9fb2JqZWN0PC92YXJuYW1lPnMuCisgICBUaGVzZSBjZWxscyB3aWxs IGJlIE5VTEwuIEZvciBleGFtcGxlLCB0ZW1wb3JhcnkgdGFibGVzIGFyZSBub3QKKyAgIDxsaXRl cmFsPmZzeW5jPC9saXRlcmFsPmVkLCBzbyA8dmFybmFtZT5maWxlc19zeW5jZWQ8L3Zhcm5hbWU+ IHdpbGwgYmUgTlVMTAorICAgZm9yIDx2YXJuYW1lPmlvX29iamVjdDwvdmFybmFtZT4gPGxpdGVy YWw+dGVtcCByZWxhdGlvbjwvbGl0ZXJhbD4uIEFsc28sIHRoZQorICAgYmFja2dyb3VuZCB3cml0 ZXIgZG9lcyBub3QgcGVyZm9ybSByZWFkcywgc28gPHZhcm5hbWU+cmVhZDwvdmFybmFtZT4gd2ls bCBiZQorICAgTlVMTCBpbiByb3dzIGZvciA8dmFybmFtZT5iYWNrZW5kX3R5cGU8L3Zhcm5hbWU+ IDxsaXRlcmFsPmJhY2tncm91bmQKKyAgIHdyaXRlcjwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVjdG5hbWU+IGNhbiBiZSB1 c2VkIHRvIGluZm9ybSBkYXRhYmFzZSB0dW5pbmcuCisgICBGb3IgZXhhbXBsZToKKyAgIDxpdGVt aXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEEgaGlnaCA8dmFy bmFtZT5ldmljdGVkPC92YXJuYW1lPiBjb3VudCBjYW4gaW5kaWNhdGUgdGhhdCBzaGFyZWQgYnVm ZmVycworICAgICAgc2hvdWxkIGJlIGluY3JlYXNlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIENsaWVudCBiYWNrZW5k cyByZWx5IG9uIHRoZSBjaGVja3BvaW50ZXIgdG8gZW5zdXJlIGRhdGEgaXMgcGVyc2lzdGVkIHRv CisgICAgICBwZXJtYW5lbnQgc3RvcmFnZS4gTGFyZ2UgbnVtYmVycyBvZiA8dmFybmFtZT5maWxl c19zeW5jZWQ8L3Zhcm5hbWU+IGJ5CisgICAgICA8bGl0ZXJhbD5jbGllbnQgYmFja2VuZDwvbGl0 ZXJhbD5zIGNvdWxkIGluZGljYXRlIGEgbWlzY29uZmlndXJhdGlvbiBvZgorICAgICAgc2hhcmVk IGJ1ZmZlcnMgb3Igb2YgY2hlY2twb2ludGVyLiBNb3JlIGluZm9ybWF0aW9uIG9uIGNoZWNrcG9p bnRlcgorICAgICAgY29uZmlndXJhdGlvbiBjYW4gYmUgZm91bmQgaW4gPHhyZWYgbGlua2VuZD0i d2FsLWNvbmZpZ3VyYXRpb24iLz4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBOb3JtYWxseSwgY2xpZW50IGJhY2tlbmRz IHNob3VsZCBiZSBhYmxlIHRvIHJlbHkgb24gYXV4aWxpYXJ5IHByb2Nlc3NlcworICAgICAgbGlr ZSB0aGUgY2hlY2twb2ludGVyIGFuZCBiYWNrZ3JvdW5kIHdyaXRlciB0byB3cml0ZSBvdXQgZGly dHkgZGF0YSBhcworICAgICAgbXVjaCBhcyBwb3NzaWJsZS4gTGFyZ2UgbnVtYmVycyBvZiB3cml0 ZXMgYnkgY2xpZW50IGJhY2tlbmRzIGNvdWxkCisgICAgICBpbmRpY2F0ZSBhIG1pc2NvbmZpZ3Vy YXRpb24gb2Ygc2hhcmVkIGJ1ZmZlcnMgb3Igb2YgY2hlY2twb2ludGVyLiBNb3JlCisgICAgICBp bmZvcm1hdGlvbiBvbiBjaGVja3BvaW50ZXIgY29uZmlndXJhdGlvbiBjYW4gYmUgZm91bmQgaW4g PHhyZWYKKyAgICAgIGxpbmtlbmQ9IndhbC1jb25maWd1cmF0aW9uIi8+LgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+CisKIAogIDwv c2VjdDI+CiAKLS0gCjIuMzQuMQoK --00000000000032a58605f1db346f Content-Type: text/x-patch; charset="US-ASCII"; name="v45-0001-pgindent-and-some-manual-cleanup-in-pgstat-relat.patch" Content-Disposition: attachment; filename="v45-0001-pgindent-and-some-manual-cleanup-in-pgstat-relat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lcpaqb230 RnJvbSBjODI1Yjc2NGRmNThjZTYyMmZiMTBkMWI4NDZhNmU3ZGIxODQxODNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRh dGU6IEZyaSwgOSBEZWMgMjAyMiAxODoyMzoxOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1IDEv NV0gcGdpbmRlbnQgYW5kIHNvbWUgbWFudWFsIGNsZWFudXAgaW4gcGdzdGF0IHJlbGF0ZWQKIGNv ZGUKCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgfCAy MiArKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxi dWYuYyAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQu YyAgICAgICAgICB8ICAzICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3Jl bGF0aW9uLmMgfCAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAg ICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oICAgICAgICAgIHwg IDEgKwogNyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDNmYjM4YTI1Y2YuLjgwNzU4Mjhl OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC01MTYsNyArNTE2LDcgQEAg UHJlZmV0Y2hTaGFyZWRCdWZmZXIoU01nclJlbGF0aW9uIHNtZ3JfcmVsbiwKIAogCS8qIGNyZWF0 ZSBhIHRhZyBzbyB3ZSBjYW4gbG9va3VwIHRoZSBidWZmZXIgKi8KIAlJbml0QnVmZmVyVGFnKCZu ZXdUYWcsICZzbWdyX3JlbG4tPnNtZ3JfcmxvY2F0b3IubG9jYXRvciwKLQkJCQkgICBmb3JrTnVt LCBibG9ja051bSk7CisJCQkJICBmb3JrTnVtLCBibG9ja051bSk7CiAKIAkvKiBkZXRlcm1pbmUg aXRzIGhhc2ggY29kZSBhbmQgcGFydGl0aW9uIGxvY2sgSUQgKi8KIAluZXdIYXNoID0gQnVmVGFi bGVIYXNoQ29kZSgmbmV3VGFnKTsKQEAgLTMyOTcsOCArMzI5Nyw4IEBAIERyb3BSZWxhdGlvbnNB bGxCdWZmZXJzKFNNZ3JSZWxhdGlvbiAqc21ncl9yZWxuLCBpbnQgbmxvY2F0b3JzKQogCQl1aW50 MzIJCWJ1Zl9zdGF0ZTsKIAogCQkvKgotCQkgKiBBcyBpbiBEcm9wUmVsYXRpb25CdWZmZXJzLCBh biB1bmxvY2tlZCBwcmVjaGVjayBzaG91bGQgYmUKLQkJICogc2FmZSBhbmQgc2F2ZXMgc29tZSBj eWNsZXMuCisJCSAqIEFzIGluIERyb3BSZWxhdGlvbkJ1ZmZlcnMsIGFuIHVubG9ja2VkIHByZWNo ZWNrIHNob3VsZCBiZSBzYWZlIGFuZAorCQkgKiBzYXZlcyBzb21lIGN5Y2xlcy4KIAkJICovCiAK IAkJaWYgKCF1c2VfYnNlYXJjaCkKQEAgLTM0MjUsOCArMzQyNSw4IEBAIERyb3BEYXRhYmFzZUJ1 ZmZlcnMoT2lkIGRiaWQpCiAJCXVpbnQzMgkJYnVmX3N0YXRlOwogCiAJCS8qCi0JCSAqIEFzIGlu IERyb3BSZWxhdGlvbkJ1ZmZlcnMsIGFuIHVubG9ja2VkIHByZWNoZWNrIHNob3VsZCBiZQotCQkg KiBzYWZlIGFuZCBzYXZlcyBzb21lIGN5Y2xlcy4KKwkJICogQXMgaW4gRHJvcFJlbGF0aW9uQnVm ZmVycywgYW4gdW5sb2NrZWQgcHJlY2hlY2sgc2hvdWxkIGJlIHNhZmUgYW5kCisJCSAqIHNhdmVz IHNvbWUgY3ljbGVzLgogCQkgKi8KIAkJaWYgKGJ1Zkhkci0+dGFnLmRiT2lkICE9IGRiaWQpCiAJ CQljb250aW51ZTsKQEAgLTM1NzIsOCArMzU3Miw4IEBAIEZsdXNoUmVsYXRpb25CdWZmZXJzKFJl bGF0aW9uIHJlbCkKIAkJYnVmSGRyID0gR2V0QnVmZmVyRGVzY3JpcHRvcihpKTsKIAogCQkvKgot CQkgKiBBcyBpbiBEcm9wUmVsYXRpb25CdWZmZXJzLCBhbiB1bmxvY2tlZCBwcmVjaGVjayBzaG91 bGQgYmUKLQkJICogc2FmZSBhbmQgc2F2ZXMgc29tZSBjeWNsZXMuCisJCSAqIEFzIGluIERyb3BS ZWxhdGlvbkJ1ZmZlcnMsIGFuIHVubG9ja2VkIHByZWNoZWNrIHNob3VsZCBiZSBzYWZlIGFuZAor CQkgKiBzYXZlcyBzb21lIGN5Y2xlcy4KIAkJICovCiAJCWlmICghQnVmVGFnTWF0Y2hlc1JlbEZp bGVMb2NhdG9yKCZidWZIZHItPnRhZywgJnJlbC0+cmRfbG9jYXRvcikpCiAJCQljb250aW51ZTsK QEAgLTM2NDUsOCArMzY0NSw4IEBAIEZsdXNoUmVsYXRpb25zQWxsQnVmZmVycyhTTWdyUmVsYXRp b24gKnNtZ3JzLCBpbnQgbnJlbHMpCiAJCXVpbnQzMgkJYnVmX3N0YXRlOwogCiAJCS8qCi0JCSAq IEFzIGluIERyb3BSZWxhdGlvbkJ1ZmZlcnMsIGFuIHVubG9ja2VkIHByZWNoZWNrIHNob3VsZCBi ZQotCQkgKiBzYWZlIGFuZCBzYXZlcyBzb21lIGN5Y2xlcy4KKwkJICogQXMgaW4gRHJvcFJlbGF0 aW9uQnVmZmVycywgYW4gdW5sb2NrZWQgcHJlY2hlY2sgc2hvdWxkIGJlIHNhZmUgYW5kCisJCSAq IHNhdmVzIHNvbWUgY3ljbGVzLgogCQkgKi8KIAogCQlpZiAoIXVzZV9ic2VhcmNoKQpAQCAtMzg4 MCw4ICszODgwLDggQEAgRmx1c2hEYXRhYmFzZUJ1ZmZlcnMoT2lkIGRiaWQpCiAJCWJ1ZkhkciA9 IEdldEJ1ZmZlckRlc2NyaXB0b3IoaSk7CiAKIAkJLyoKLQkJICogQXMgaW4gRHJvcFJlbGF0aW9u QnVmZmVycywgYW4gdW5sb2NrZWQgcHJlY2hlY2sgc2hvdWxkIGJlCi0JCSAqIHNhZmUgYW5kIHNh dmVzIHNvbWUgY3ljbGVzLgorCQkgKiBBcyBpbiBEcm9wUmVsYXRpb25CdWZmZXJzLCBhbiB1bmxv Y2tlZCBwcmVjaGVjayBzaG91bGQgYmUgc2FmZSBhbmQKKwkJICogc2F2ZXMgc29tZSBjeWNsZXMu CiAJCSAqLwogCQlpZiAoYnVmSGRyLT50YWcuZGJPaWQgIT0gZGJpZCkKIAkJCWNvbnRpbnVlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKaW5kZXggYjI3MjBkZjZlYS4uODM3MmFj YzM4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC02MTAsOCArNjEw LDggQEAgQXRQcm9jRXhpdF9Mb2NhbEJ1ZmZlcnModm9pZCkKIHsKIAkvKgogCSAqIFdlIHNob3Vs ZG4ndCBiZSBob2xkaW5nIGFueSByZW1haW5pbmcgcGluczsgaWYgd2UgYXJlLCBhbmQgYXNzZXJ0 aW9ucwotCSAqIGFyZW4ndCBlbmFibGVkLCB3ZSdsbCBmYWlsIGxhdGVyIGluIERyb3BSZWxhdGlv bkJ1ZmZlcnMgd2hpbGUKLQkgKiB0cnlpbmcgdG8gZHJvcCB0aGUgdGVtcCByZWxzLgorCSAqIGFy ZW4ndCBlbmFibGVkLCB3ZSdsbCBmYWlsIGxhdGVyIGluIERyb3BSZWxhdGlvbkJ1ZmZlcnMgd2hp bGUgdHJ5aW5nIHRvCisJICogZHJvcCB0aGUgdGVtcCByZWxzLgogCSAqLwogCUNoZWNrRm9yTG9j YWxCdWZmZXJMZWFrcygpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwppbmRleCA3 ZTlkYzE3ZTY4Li4wZmE1MzcwYmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwpA QCAtNDI2LDcgKzQyNiw3IEBAIHBnc3RhdF9kaXNjYXJkX3N0YXRzKHZvaWQpCiAJCWVyZXBvcnQo REVCVUcyLAogCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCSBlcnJtc2dfaW50 ZXJuYWwoInVubGlua2VkIHBlcm1hbmVudCBzdGF0aXN0aWNzIGZpbGUgXCIlc1wiIiwKLQkJCQkJ CVBHU1RBVF9TVEFUX1BFUk1BTkVOVF9GSUxFTkFNRSkpKTsKKwkJCQkJCQkJIFBHU1RBVF9TVEFU X1BFUk1BTkVOVF9GSUxFTkFNRSkpKTsKIAl9CiAKIAkvKgpAQCAtOTg2LDYgKzk4Niw3IEBAIHBn c3RhdF9idWlsZF9zbmFwc2hvdCh2b2lkKQogCiAJCWVudHJ5LT5kYXRhID0gTWVtb3J5Q29udGV4 dEFsbG9jKHBnU3RhdExvY2FsLnNuYXBzaG90LmNvbnRleHQsCiAJCQkJCQkJCQkJIGtpbmRfaW5m by0+c2hhcmVkX3NpemUpOworCiAJCS8qCiAJCSAqIEFjcXVpcmUgdGhlIExXTG9jayBkaXJlY3Rs eSBpbnN0ZWFkIG9mIHVzaW5nCiAJCSAqIHBnX3N0YXRfbG9ja19lbnRyeV9zaGFyZWQoKSB3aGlj aCByZXF1aXJlcyBhIHJlZmVyZW5jZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMKaW5kZXggMTczMDQyNWRlMS4uMmUyMGI5M2MyMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTc4Myw2ICs3ODMsNyBA QCBwZ3N0YXRfcmVsYXRpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJv b2wgbm93YWl0KQogCWlmIChsc3RhdHMtPnRfY291bnRzLnRfbnVtc2NhbnMpCiAJewogCQlUaW1l c3RhbXBUeiB0ID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uU3RvcFRpbWVzdGFtcCgpOworCiAJCWlm ICh0ID4gdGFiZW50cnktPmxhc3RzY2FuKQogCQkJdGFiZW50cnktPmxhc3RzY2FuID0gdDsKIAl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDZjZGRkNzRhYTcuLjU4YmQxMzYw YjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC05MDYsNyArOTA2LDcgQEAg cGdfc3RhdF9nZXRfYmFja2VuZF9jbGllbnRfYWRkcihQR19GVU5DVElPTl9BUkdTKQogCWNsZWFu X2lwdjZfYWRkcihiZWVudHJ5LT5zdF9jbGllbnRhZGRyLmFkZHIuc3NfZmFtaWx5LCByZW1vdGVf aG9zdCk7CiAKIAlQR19SRVRVUk5fREFUVU0oRGlyZWN0RnVuY3Rpb25DYWxsMShpbmV0X2luLAot CQkJCQkJCQkJCSBDU3RyaW5nR2V0RGF0dW0ocmVtb3RlX2hvc3QpKSk7CisJCQkJCQkJCQkJQ1N0 cmluZ0dldERhdHVtKHJlbW90ZV9ob3N0KSkpOwogfQogCiBEYXR1bQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCBkM2U5NjVkNzQ0 Li41ZTMzMjZhM2I5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMv aW5jbHVkZS9wZ3N0YXQuaApAQCAtNDc2LDYgKzQ3Niw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9y ZXBvcnRfY29ubmVjdChPaWQgZGJvaWQpOwogCiBleHRlcm4gUGdTdGF0X1N0YXREQkVudHJ5ICpw Z3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5KE9pZCBkYm9pZCk7CiAKKwogLyoKICAqIEZ1bmN0aW9u cyBpbiBwZ3N0YXRfZnVuY3Rpb24uYwogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9wZ3N0YXRfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5o CmluZGV4IDA4NDEyZDY0MDQuLjEyZmQ1MWYxYWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3Bnc3RhdF9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRl cm5hbC5oCkBAIC02MjYsNiArNjI2LDcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3dhbF9zbmFwc2hv dF9jYih2b2lkKTsKIGV4dGVybiBib29sIHBnc3RhdF9zdWJzY3JpcHRpb25fZmx1c2hfY2IoUGdT dGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KTsKIGV4dGVybiB2b2lkIHBnc3Rh dF9zdWJzY3JpcHRpb25fcmVzZXRfdGltZXN0YW1wX2NiKFBnU3RhdFNoYXJlZF9Db21tb24gKmhl YWRlciwgVGltZXN0YW1wVHogdHMpOwogCisKIC8qCiAgKiBGdW5jdGlvbnMgaW4gcGdzdGF0X3hh Y3QuYwogICovCi0tIAoyLjM0LjEKCg== --00000000000032a58605f1db346f--