Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tB9i5-002CbL-5V for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Nov 2024 09:30:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tB9i1-00ClBI-Eq for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Nov 2024 09:30:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tB9i0-00ClBA-OT for pgsql-hackers@lists.postgresql.org; Wed, 13 Nov 2024 09:30:45 +0000 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tB9hy-001dwh-DW for pgsql-hackers@lists.postgresql.org; Wed, 13 Nov 2024 09:30:44 +0000 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-2fb57f97d75so64231371fa.2 for ; Wed, 13 Nov 2024 01:30:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731490241; x=1732095041; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5xU07gXIhyCVdsLp//o8E6zOe6TJZsz4HOqsm9yua/Q=; b=TplMx8lLZ8/Wvibmt4gfgx0uipPN5SGsbvFfdw7uGXFNQjvvXcz/Y2bkLk2zMQCYEJ bEANsqYUCE5b8kZjriaRC0GDtXZhsj2Dc05Y1Pjrx7ynZbzkDIyrkO/ryHzwsxsayCAv eDFcJKannPV4U7Q5GmB76aTLpqKsigIkxOZ04JwZ61Oes4E1lZq2ALcwkkL04bTAXmmR niuR8KBoNXsws9zUz4obwVLgXwPmyVcqycP7U7agCKSgzpBq8zbnmlEyYEfJl+9WSFdn 6TLXCTFN85sTjaJzHeM/1qjQHWZJCtEmQ+Qn3R7ujhc5C4nZfws+7sQAg9IHCm1A0FG6 ZiBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731490241; x=1732095041; 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=5xU07gXIhyCVdsLp//o8E6zOe6TJZsz4HOqsm9yua/Q=; b=eNVUOB+FzXXU6KsyM1JzrEVOzUfTqcKLvinDVvx0fTESg4aIgaT5Ya01qdaZ6B5AAG AwWBH8JdjW8OJeo0nJTCYj9QIQvK2dC/PW8QtSMOatK55J80djIpZIi7eP/lz1hnjqJL 0qEsUHNMIBp3N8CmN3VTC7qnAEHlU/UI8ccVwjAaPKPwvYhkPcpV5iRbdkqeFCFVI4dh Kzh4ZKHj90WpoPUw7TLud+OgR/C9Em4dnIfi/PNFxs88Z6IhksrOj21C/BP2ZCOePuFU sp3IaOvp2xh0IC8sj6yII/5QTP5U5o8t2JMibNIqJ3XluRIBUHI97miUAR43PYG3g9oh 0REQ== X-Forwarded-Encrypted: i=1; AJvYcCV7QxevjNUSm/qKwl2QKq0/ohFLGTwbQNgwWZZOunPPq0dSP8q4U3ywcqRaT2h+J3atmTkq7nPrYVSnvlgX@lists.postgresql.org X-Gm-Message-State: AOJu0YwMwGYlxoPXev300fWuz06AiDXOskXQqXrN8fHReUKv14OlUxnY G0ddviBIgwmukjSvvIqIhg3HDZqkCKaZ8VUBm1HdeXm8DCWEf2ApJ3p5+HAAvnwYqpA2vH90PHg W0D8yMP5SOhG8AN1F+LwBE7G893zw/C/A2k2o X-Google-Smtp-Source: AGHT+IEh/mVhOGmCEOfSEzj3FBJVihh9uv04c+cpEpL4n2AVF8FF8wUiNb93fPMETnlJJqz/K41++Gf9JccjQJvQWQA= X-Received: by 2002:a05:651c:150c:b0:2fb:5d8a:4cd3 with SMTP id 38308e7fff4ca-2ff2006084fmr104735541fa.0.1731490240339; Wed, 13 Nov 2024 01:30:40 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Wed, 13 Nov 2024 15:00:28 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: shveta malik Cc: Bharath Rupireddy , Peter Smith , Amit Kapila , Ajin Cherian , Bertrand Drouvot , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b539070626c7fc1b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b539070626c7fc1b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Please find the v48 patch attached. On Thu, Sep 19, 2024 at 9:40=E2=80=AFAM shveta malik wrote: > > When we promote hot standby with synced logical slots to become new > primary, the logical slots are never invalidated with > 'inactive_timeout' on new primary. It seems the check in > SlotInactiveTimeoutCheckAllowed() is wrong. We should allow > invalidation of slots on primary even if they are marked as 'synced'. fixed. > I have raised 4 issues so far on v46, the first 3 are in [1],[2],[3]. > Once all these are addressed, I can continue reviewing further. > Fixed issues reported in [1], [2]. [1]: https://www.postgresql.org/message-id/CAJpy0uAwxc49Dz6t%3D-y_-z-MU%2BA= 4RWX4BR3Zri_jj2qgGMq_8g%40mail.gmail.com [2]: https://www.postgresql.org/message-id/CAJpy0uC6nN3SLbEuCvz7-CpaPdNdXxH= %3DfeW5MhYQch-JWV0tLg%40mail.gmail.com --000000000000b539070626c7fc1b Content-Type: application/octet-stream; name="v48-0001-Introduce-inactive_timeout-based-replication-slo.patch" Content-Disposition: attachment; filename="v48-0001-Introduce-inactive_timeout-based-replication-slo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3fodsia0 RnJvbSA1YzkzM2U1MjMxYmIyMGU5ZWIzYjAwODk2NjVkZTc2YWRiODk2Y2NhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUaHUsIDcgTm92IDIwMjQgMTI6MDk6NDcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0 OF0gSW50cm9kdWNlIGluYWN0aXZlX3RpbWVvdXQgYmFzZWQgcmVwbGljYXRpb24gc2xvdAogaW52 YWxpZGF0aW9uCgpUaWxsIG5vdywgcG9zdGdyZXMgaGFzIHRoZSBhYmlsaXR5IHRvIGludmFsaWRh dGUgaW5hY3RpdmUKcmVwbGljYXRpb24gc2xvdHMgYmFzZWQgb24gdGhlIGFtb3VudCBvZiBXQUwg KHNldCB2aWEKbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSBHVUMpIHRoYXQgd2lsbCBiZSBuZWVkZWQg Zm9yIHRoZSBzbG90cyBpbgpjYXNlIHRoZXkgYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgY2hvb3Np bmcgYSBkZWZhdWx0IHZhbHVlIGZvcgp0aGlzIEdVQyBpcyBhIGJpdCB0cmlja3kuIEJlY2F1c2Ug dGhlIGFtb3VudCBvZiBXQUwgYSBkYXRhYmFzZQpnZW5lcmF0ZXMsIGFuZCB0aGUgYWxsb2NhdGVk IHN0b3JhZ2UgZm9yIGluc3RhbmNlIHdpbGwgdmFyeQpncmVhdGx5IGluIHByb2R1Y3Rpb24sIG1h a2luZyBpdCBkaWZmaWN1bHQgdG8gcGluIGRvd24gYQpvbmUtc2l6ZS1maXRzLWFsbCB2YWx1ZS4K Ckl0IGlzIG9mdGVuIGVhc3kgZm9yIHVzZXJzIHRvIHNldCBhIHRpbWVvdXQgb2Ygc2F5IDEgb3Ig MiBvciBuCmRheXMsIGFmdGVyIHdoaWNoIGFsbCB0aGUgaW5hY3RpdmUgc2xvdHMgZ2V0IGludmFs aWRhdGVkLiBUaGlzCmNvbW1pdCBpbnRyb2R1Y2VzIGEgR1VDIG5hbWVkIHJlcGxpY2F0aW9uX3Ns b3RfaW5hY3RpdmVfdGltZW91dC4KV2hlbiBzZXQsIHBvc3RncmVzIGludmFsaWRhdGVzIHNsb3Rz IChkdXJpbmcgbm9uLXNodXRkb3duCmNoZWNrcG9pbnRzKSB0aGF0IGFyZSBpbmFjdGl2ZSBmb3Ig bG9uZ2VyIHRoYW4gdGhpcyBhbW91bnQgb2YKdGltZS4KCk5vdGUgdGhhdCB0aGUgaW5hY3RpdmUg dGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIGlzIG5vdAphcHBsaWNhYmxlIGZvciBzbG90 cyBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgdGhhdCBhcmUgYmVpbmcgc3luY2VkCmZyb20gdGhlIHBy aW1hcnkgc2VydmVyIChpLmUuLCBzdGFuZGJ5IHNsb3RzIGhhdmluZyAnc3luY2VkJyBmaWVsZAon dHJ1ZScpLiBTeW5jZWQgc2xvdHMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGluYWN0aXZl IGJlY2F1c2UKdGhleSBkb24ndCBwZXJmb3JtIGxvZ2ljYWwgZGVjb2RpbmcgdG8gcHJvZHVjZSBj aGFuZ2VzLgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAg ICB8ICAzNSArKysKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAg ICB8ICAxMiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAg fCAgMTcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8 IDE2MiArKysrKysrKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQu YyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg ICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAg fCAgMjUgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRlX3Nsb3RzLnBsICAgfCAy NjcgKysrKysrKysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA1MDUgaW5zZXJ0aW9ucygr KSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBhODRlNjBjMDliLi4yNWNh MjMyYTAyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NTg1LDYgKzQ1ODUsNDEgQEAgcmVzdG9yZV9jb21tYW5k ID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJcXCVmIiAiJXAiJyAgIyBXaW5kb3dzCiAg ICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVu dHJ5IGlkPSJndWMtcmVwbGljYXRpb24tc2xvdC1pbmFjdGl2ZS10aW1lb3V0IiB4cmVmbGFiZWw9 InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCI+CisgICAgICA8dGVybT48dmFybmFt ZT5yZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRl Z2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+ cmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0PC92YXJuYW1lPiBjb25maWd1cmF0aW9u IHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgor ICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBJbnZhbGlkYXRlIHJlcGxp Y2F0aW9uIHNsb3RzIHRoYXQgYXJlIGluYWN0aXZlIGZvciBsb25nZXIgdGhhbiB0aGlzCisgICAg ICAgIGFtb3VudCBvZiB0aW1lLiBJZiB0aGlzIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRob3V0IHVu aXRzLAorICAgICAgICBpdCBpcyB0YWtlbiBhcyBzZWNvbmRzLiBBIHZhbHVlIG9mIHplcm8gKHdo aWNoIGlzIGRlZmF1bHQpIGRpc2FibGVzCisgICAgICAgIHRoZSBpbmFjdGl2ZSB0aW1lb3V0IGlu dmFsaWRhdGlvbiBtZWNoYW5pc20uIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5CisgICAgICAgIGJl IHNldCBpbiB0aGUgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Ig b24gdGhlCisgICAgICAgIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorCisg ICAgICAgPHBhcmE+CisgICAgICAgIFNsb3QgaW52YWxpZGF0aW9uIGR1ZSB0byBpbmFjdGl2ZSB0 aW1lb3V0IG9jY3VycyBkdXJpbmcgY2hlY2twb2ludC4KKyAgICAgICAgVGhlIGR1cmF0aW9uIG9m IHNsb3QgaW5hY3Rpdml0eSBpcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBzbG90J3MKKyAgICAgICAg PGxpbmsgbGlua2VuZD0idmlldy1wZy1yZXBsaWNhdGlvbi1zbG90cyI+cGdfcmVwbGljYXRpb25f c2xvdHM8L2xpbms+LjxzdHJ1Y3RmaWVsZD5pbmFjdGl2ZV9zaW5jZTwvc3RydWN0ZmllbGQ+Cisg ICAgICAgIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBO b3RlIHRoYXQgdGhlIGluYWN0aXZlIHRpbWVvdXQgaW52YWxpZGF0aW9uIG1lY2hhbmlzbSBpcyBu b3QKKyAgICAgICAgYXBwbGljYWJsZSBmb3Igc2xvdHMgb24gdGhlIHN0YW5kYnkgc2VydmVyIHRo YXQgYXJlIGJlaW5nIHN5bmNlZAorICAgICAgICBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlciAoaS5l Liwgc3RhbmRieSBzbG90cyBoYXZpbmcKKyAgICAgICAgPGxpbmsgbGlua2VuZD0idmlldy1wZy1y ZXBsaWNhdGlvbi1zbG90cyI+cGdfcmVwbGljYXRpb25fc2xvdHM8L2xpbms+LjxzdHJ1Y3RmaWVs ZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPgorICAgICAgICB2YWx1ZSA8bGl0ZXJhbD50cnVlPC9saXRl cmFsPikuCisgICAgICAgIFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUg aW5hY3RpdmUgYmVjYXVzZSB0aGV5IGRvbid0CisgICAgICAgIHBlcmZvcm0gbG9naWNhbCBkZWNv ZGluZyB0byBwcm9kdWNlIGNoYW5nZXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXRy YWNrLWNvbW1pdC10aW1lc3RhbXAiIHhyZWZsYWJlbD0idHJhY2tfY29tbWl0X3RpbWVzdGFtcCI+ CiAgICAgICA8dGVybT48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJuYW1lPiAo PHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5z Z21sCmluZGV4IDYxZDI4ZTcwMWYuLmQxNjQ5NmE5NDEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK QEAgLTI1NjcsOCArMjU2Nyw5IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lO IHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAg ICAgIFRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUgaW5hY3RpdmUuCi0gICAgICAg IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGlmIHRoZSBzbG90IGlzIGN1cnJlbnRseSBiZWluZyB1 c2VkLgotICAgICAgICBOb3RlIHRoYXQgZm9yIHNsb3RzIG9uIHRoZSBzdGFuZGJ5IHRoYXQgYXJl IGJlaW5nIHN5bmNlZCBmcm9tIGEKKyAgICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYg dGhlIHNsb3QgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQuIE9uY2UgdGhlCisgICAgICAgIHNsb3Qg aXMgaW52YWxpZGF0ZWQsIHRoaXMgdmFsdWUgd2lsbCByZW1haW4gdW5jaGFuZ2VkIHVudGlsIHdl IHNodXRkb3duCisgICAgICAgIHRoZSBzZXJ2ZXIuIE5vdGUgdGhhdCBmb3Igc2xvdHMgb24gdGhl IHN0YW5kYnkgdGhhdCBhcmUgYmVpbmcgc3luY2VkIGZyb20gYQogICAgICAgICBwcmltYXJ5IHNl cnZlciAod2hvc2UgPHN0cnVjdGZpZWxkPnN5bmNlZDwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzCiAg ICAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+KSwgdGhlCiAgICAgICAgIDxzdHJ1Y3RmaWVs ZD5pbmFjdGl2ZV9zaW5jZTwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB0aGUgbGFzdApAQCAtMjYx OCw2ICsyNjE5LDEzIEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3By ZXBhcmVkX3hhY3RzIHBweAogICAgICAgICAgIHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZy4gIEl0 IGlzIHNldCBvbmx5IGZvciBsb2dpY2FsIHNsb3RzLgogICAgICAgICAgPC9wYXJhPgogICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICA8bGl0ZXJhbD5pbmFjdGl2ZV90aW1lb3V0PC9saXRlcmFsPiBtZWFucyB0aGF0IHRoZSBz bG90IGhhcyBiZWVuCisgICAgICAgICAgaW5hY3RpdmUgZm9yIGxvbmdlciB0aGFuIHRoZSBhbW91 bnQgb2YgdGltZSBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3Vj LXJlcGxpY2F0aW9uLXNsb3QtaW5hY3RpdmUtdGltZW91dCIvPiBwYXJhbWV0ZXIuCisgICAgICAg ICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCBiNGRkNWNjZTc1Li41NmZjMWE0NWE5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMK QEAgLTE5Nyw3ICsxOTcsNyBAQCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25maXJtLCBib29sIGJpbgogCWVsc2UKIAkJZW5k X29mX3dhbCA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5h bWVTdHIoKm5hbWUpLCB0cnVlLCB0cnVlKTsKIAogCVBHX1RSWSgpOwogCXsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwppbmRleCBkNjIxODZhNTEwLi40NDQzYmQ1 M2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC00 NDYsNyArNDQ2LDcgQEAgZHJvcF9sb2NhbF9vYnNvbGV0ZV9zbG90cyhMaXN0ICpyZW1vdGVfc2xv dF9saXN0KQogCiAJCQlpZiAoc3luY2VkX3Nsb3QpCiAJCQl7Ci0JCQkJUmVwbGljYXRpb25TbG90 QWNxdWlyZShOYW1lU3RyKGxvY2FsX3Nsb3QtPmRhdGEubmFtZSksIHRydWUpOworCQkJCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cihsb2NhbF9zbG90LT5kYXRhLm5hbWUpLCB0cnVlLCBm YWxzZSk7CiAJCQkJUmVwbGljYXRpb25TbG90RHJvcEFjcXVpcmVkKCk7CiAJCQl9CiAKQEAgLTY2 NSw3ICs2NjUsNyBAQCBzeW5jaHJvbml6ZV9vbmVfc2xvdChSZW1vdGVTbG90ICpyZW1vdGVfc2xv dCwgT2lkIHJlbW90ZV9kYmlkKQogCQkgKiBwcmUtY2hlY2sgdG8gZW5zdXJlIHRoYXQgYXQgbGVh c3Qgb25lIG9mIHRoZSBzbG90IHByb3BlcnRpZXMgaXMKIAkJICogY2hhbmdlZCBiZWZvcmUgYWNx dWlyaW5nIHRoZSBzbG90LgogCQkgKi8KLQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShyZW1vdGVf c2xvdC0+bmFtZSwgdHJ1ZSk7CisJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUocmVtb3RlX3Nsb3Qt Pm5hbWUsIHRydWUsIGZhbHNlKTsKIAogCQlBc3NlcnQoc2xvdCA9PSBNeVJlcGxpY2F0aW9uU2xv dCk7CiAKQEAgLTE1MDgsNyArMTUwOCw3IEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oY2hhciAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIHN0YXRpYyB2b2lkCiB1cGRh dGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpCiB7Ci0JVGltZXN0YW1wVHogbm93 ID0gMDsKKwlUaW1lc3RhbXBUeiBub3c7CiAKIAkvKgogCSAqIFdlIG5lZWQgdG8gdXBkYXRlIGlu YWN0aXZlX3NpbmNlIG9ubHkgd2hlbiB3ZSBhcmUgcHJvbW90aW5nIHN0YW5kYnkgdG8KQEAgLTE1 MjMsNiArMTUyMyw5IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uodm9pZCkK IAkvKiBUaGUgc2xvdCBzeW5jIHdvcmtlciBvciBTUUwgZnVuY3Rpb24gbXVzdG4ndCBiZSBydW5u aW5nIGJ5IG5vdyAqLwogCUFzc2VydCgoU2xvdFN5bmNDdHgtPnBpZCA9PSBJbnZhbGlkUGlkKSAm JiAhU2xvdFN5bmNDdHgtPnN5bmNpbmcpOwogCisJLyogVXNlIHNhbWUgaW5hY3RpdmVfc2luY2Ug dGltZSBmb3IgYWxsIHNsb3RzICovCisJbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCiAJ TFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKIAog CWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCkBAIC0xNTM3 LDEzICsxNTQwLDcgQEAgdXBkYXRlX3N5bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lkKQog CQkJLyogVGhlIHNsb3QgbXVzdCBub3QgYmUgYWNxdWlyZWQgYnkgYW55IHByb2Nlc3MgKi8KIAkJ CUFzc2VydChzLT5hY3RpdmVfcGlkID09IDApOwogCi0JCQkvKiBVc2UgdGhlIHNhbWUgaW5hY3Rp dmVfc2luY2UgdGltZSBmb3IgYWxsIHRoZSBzbG90cy4gKi8KLQkJCWlmIChub3cgPT0gMCkKLQkJ CQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+ bXV0ZXgpOwotCQkJcy0+aW5hY3RpdmVfc2luY2UgPSBub3c7Ci0JCQlTcGluTG9ja1JlbGVhc2Uo JnMtPm11dGV4KTsKKwkJCVJlcGxpY2F0aW9uU2xvdFNldEluYWN0aXZlU2luY2UocywgJm5vdywg dHJ1ZSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA2ODI4MTAwY2YxLi5k Zjc2MjkxYjdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMDcsMTAgKzEwNywxMSBAQCBj b25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1c2VzW10gPSB7CiAJW1JTX0lOVkFM X1dBTF9SRU1PVkVEXSA9ICJ3YWxfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX0hPUklaT05dID0gInJv d3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9MRVZFTF0gPSAid2FsX2xldmVsX2luc3VmZmlj aWVudCIsCisJW1JTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVRdID0gImluYWN0aXZlX3RpbWVvdXQi LAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZGF0aW9uIGNhdXNlcyAqLwotI2Rl ZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX1dBTF9MRVZFTAorI2RlZmluZQlSU19J TlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQKIAogU3RhdGljQXNzZXJ0 RGVjbChsZW5ndGhvZihTbG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5WQUxfTUFYX0NB VVNFUyArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CkBAIC0xNDAsNiArMTQx LDcgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7CiAvKiBHVUMg dmFyaWFibGVzICovCiBpbnQJCQltYXhfcmVwbGljYXRpb25fc2xvdHMgPSAxMDsgLyogdGhlIG1h eGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJCQkJICogc2xvdHMgKi8KK2ludAkJ CXJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCA9IDA7CiAKIC8qCiAgKiBUaGlzIEdV QyBsaXN0cyBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRieSBzZXJ2ZXIgc2xvdCBuYW1lcyB0 aGF0CkBAIC01MzUsOSArNTM3LDEyIEBAIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBO YW1lIG5hbWUpCiAgKgogICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIG5vd2FpdCBpcyB0cnVlIGFu ZCB0aGUgc2xvdCBpcyBjdXJyZW50bHkgaW4gdXNlLiBJZgogICogbm93YWl0IGlzIGZhbHNlLCB3 ZSBzbGVlcCB1bnRpbCB0aGUgc2xvdCBpcyByZWxlYXNlZCBieSB0aGUgb3duaW5nIHByb2Nlc3Mu CisgKgorICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIGVycm9yX2lmX2ludmFsaWQgaXMgdHJ1ZSBh bmQgdGhlIHNsb3QgaGFzIGJlZW4KKyAqIGludmFsaWRhdGVkIHByZXZpb3VzbHkuCiAgKi8KIHZv aWQKLVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQp CitSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0LCBi b29sIGVycm9yX2lmX2ludmFsaWQpCiB7CiAJUmVwbGljYXRpb25TbG90ICpzOwogCWludAkJCWFj dGl2ZV9waWQ7CkBAIC02MTUsNiArNjIwLDIyIEBAIHJldHJ5OgogCS8qIFdlIG1hZGUgdGhpcyBz bG90IGFjdGl2ZSwgc28gaXQncyBvdXJzIG5vdy4gKi8KIAlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7 CiAKKwkvKgorCSAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBlcnJvcl9pZl9pbnZhbGlkIGlzIHRy dWUgYW5kIHRoZSBzbG90IGhhcyBiZWVuCisJICogcHJldmlvdXNseSBpbnZhbGlkYXRlZCBkdWUg dG8gaW5hY3RpdmUgdGltZW91dC4KKwkgKi8KKwlpZiAoZXJyb3JfaWZfaW52YWxpZCAmJgorCQlz LT5kYXRhLmludmFsaWRhdGVkID09IFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQpCisJeworCQlB c3NlcnQocy0+aW5hY3RpdmVfc2luY2UgPiAwKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJjYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcIiVz XCIiLAorCQkJCQkJTmFtZVN0cihzLT5kYXRhLm5hbWUpKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGlz IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMgaW5hY3RpdmUgZm9yIGxv bmdlciB0aGFuIHRoZSBhbW91bnQgb2YgdGltZSBzcGVjaWZpZWQgYnkgXCIlc1wiLiIsCisJCQkJ CQkgICAicmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IikpKTsKKwl9CisKIAkvKgog CSAqIFRoZSBjYWxsIHRvIHBnc3RhdF9hY3F1aXJlX3JlcGxzbG90KCkgcHJvdGVjdHMgYWdhaW5z dCBzdGF0cyBmb3IgYQogCSAqIGRpZmZlcmVudCBzbG90LCBmcm9tIGJlZm9yZSBhIHJlc3RhcnQg b3Igc3VjaCwgYmVpbmcgcHJlc2VudCBkdXJpbmcKQEAgLTcwMywxNiArNzI0LDEyIEBAIFJlcGxp Y2F0aW9uU2xvdFJlbGVhc2Uodm9pZCkKIAkJICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+ bXV0ZXgpOwogCQlzbG90LT5hY3RpdmVfcGlkID0gMDsKLQkJc2xvdC0+aW5hY3RpdmVfc2luY2Ug PSBub3c7CisJCVJlcGxpY2F0aW9uU2xvdFNldEluYWN0aXZlU2luY2Uoc2xvdCwgJm5vdywgZmFs c2UpOwogCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAkJQ29uZGl0aW9uVmFyaWFi bGVCcm9hZGNhc3QoJnNsb3QtPmFjdGl2ZV9jdik7CiAJfQogCWVsc2UKLQl7Ci0JCVNwaW5Mb2Nr QWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsKLQkJ U3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0JfQorCQlSZXBsaWNhdGlvblNsb3RTZXRJ bmFjdGl2ZVNpbmNlKHNsb3QsICZub3csIHRydWUpOwogCiAJTXlSZXBsaWNhdGlvblNsb3QgPSBO VUxMOwogCkBAIC03ODUsNyArODAyLDcgQEAgUmVwbGljYXRpb25TbG90RHJvcChjb25zdCBjaGFy ICpuYW1lLCBib29sIG5vd2FpdCkKIHsKIAlBc3NlcnQoTXlSZXBsaWNhdGlvblNsb3QgPT0gTlVM TCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIG5vd2FpdCk7CisJUmVwbGljYXRp b25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQsIGZhbHNlKTsKIAogCS8qCiAJICogRG8gbm90IGFs bG93IHVzZXJzIHRvIGRyb3AgdGhlIHNsb3RzIHdoaWNoIGFyZSBjdXJyZW50bHkgYmVpbmcgc3lu Y2VkCkBAIC04MTIsNyArODI5LDcgQEAgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgYm9vbCAqZmFpbG92ZXIsCiAJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90ID09 IE5VTEwpOwogCUFzc2VydChmYWlsb3ZlciB8fCB0d29fcGhhc2UpOwogCi0JUmVwbGljYXRpb25T bG90QWNxdWlyZShuYW1lLCBmYWxzZSk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBm YWxzZSwgZmFsc2UpOwogCiAJaWYgKFNsb3RJc1BoeXNpY2FsKE15UmVwbGljYXRpb25TbG90KSkK IAkJZXJlcG9ydChFUlJPUiwKQEAgLTE1MDgsNyArMTUyNSw4IEBAIFJlcG9ydFNsb3RJbnZhbGlk YXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCSAgIE5h bWVEYXRhIHNsb3RuYW1lLAogCQkJCQkgICBYTG9nUmVjUHRyIHJlc3RhcnRfbHNuLAogCQkJCQkg ICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKLQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbikKKwkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKKwkJCQkJICAgVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UpCiB7CiAJU3RyaW5nSW5m b0RhdGEgZXJyX2RldGFpbDsKIAlib29sCQloaW50ID0gZmFsc2U7CkBAIC0xNTM4LDYgKzE1NTYs MTUgQEAgUmVwb3J0U2xvdEludmFsaWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25D YXVzZSBjYXVzZSwKIAkJY2FzZSBSU19JTlZBTF9XQUxfTEVWRUw6CiAJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZlcnJfZGV0YWlsLCBfKCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVx dWlyZXMgXCJ3YWxfbGV2ZWxcIiA+PSBcImxvZ2ljYWxcIiBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIu IikpOwogCQkJYnJlYWs7CisKKwkJY2FzZSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOgorCQkJ QXNzZXJ0KGluYWN0aXZlX3NpbmNlID4gMCk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0 YWlsLAorCQkJCQkJCSBfKCJUaGUgc2xvdCBoYXMgYmVlbiBpbmFjdGl2ZSBzaW5jZSAlcyBmb3Ig bG9uZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiB0aW1lIHNwZWNpZmllZCBieSBcIiVzXCIuIiksCisJ CQkJCQkJIHRpbWVzdGFtcHR6X3RvX3N0cihpbmFjdGl2ZV9zaW5jZSksCisJCQkJCQkJICJyZXBs aWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQiKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgUlNf SU5WQUxfTk9ORToKIAkJCXBnX3VucmVhY2hhYmxlKCk7CiAJfQpAQCAtMTU1NCw2ICsxNTgxLDI5 IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1 c2UgY2F1c2UsCiAJcGZyZWUoZXJyX2RldGFpbC5kYXRhKTsKIH0KIAorLyoKKyAqIElzIHRoaXMg cmVwbGljYXRpb24gc2xvdCBhbGxvd2VkIGZvciBpbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlv biBjaGVjaz8KKyAqCisgKiBJbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBpcyBhbGxvd2Vk IG9ubHkgd2hlbjoKKyAqCisgKiAxLiBJbmFjdGl2ZSB0aW1lb3V0IGlzIHNldAorICogMi4gU2xv dCBpcyBpbmFjdGl2ZQorICogMy4gU2VydmVyIGlzIGluIHJlY292ZXJ5IGFuZCBzbG90IGlzIG5v dCBiZWluZyBzeW5jZWQgZnJvbSB0aGUgcHJpbWFyeQorICoKKyAqIE5vdGUgdGhhdCB0aGUgaW5h Y3RpdmUgdGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIGlzIG5vdAorICogYXBwbGljYWJs ZSBmb3Igc2xvdHMgb24gdGhlIHN0YW5kYnkgc2VydmVyIHRoYXQgYXJlIGJlaW5nIHN5bmNlZAor ICogZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIgKGkuZS4sIHN0YW5kYnkgc2xvdHMgaGF2aW5nICdz eW5jZWQnIGZpZWxkICd0cnVlJykuCisgKiBTeW5jZWQgc2xvdHMgYXJlIGFsd2F5cyBjb25zaWRl cmVkIHRvIGJlIGluYWN0aXZlIGJlY2F1c2UgdGhleSBkb24ndAorICogcGVyZm9ybSBsb2dpY2Fs IGRlY29kaW5nIHRvIHByb2R1Y2UgY2hhbmdlcy4KKyAqLworc3RhdGljIGlubGluZSBib29sCitT bG90SW5hY3RpdmVUaW1lb3V0Q2hlY2tBbGxvd2VkKFJlcGxpY2F0aW9uU2xvdCAqcykKK3sKKwly ZXR1cm4gKHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCA+IDAgJiYKKwkJCXMtPmlu YWN0aXZlX3NpbmNlID4gMCAmJgorCQkJIShSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBzLT5kYXRh LnN5bmNlZCkpOworfQorCiAvKgogICogSGVscGVyIGZvciBJbnZhbGlkYXRlT2Jzb2xldGVSZXBs aWNhdGlvblNsb3RzCiAgKgpAQCAtMTU4MSw2ICsxNjMxLDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5 T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCVRy YW5zYWN0aW9uSWQgaW5pdGlhbF9jYXRhbG9nX2VmZmVjdGl2ZV94bWluID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAJWExvZ1JlY1B0cglpbml0aWFsX3Jlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CiAJUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2Nh dXNlX3ByZXYgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUlNfSU5WQUxfTk9ORTsKKwlUaW1l c3RhbXBUeiBpbmFjdGl2ZV9zaW5jZSA9IDA7CiAKIAlmb3IgKDs7KQogCXsKQEAgLTE1ODgsNiAr MTYzOSw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJ bnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJTmFtZURhdGEJc2xvdG5hbWU7CiAJCWludAkJCWFj dGl2ZV9waWQgPSAwOwogCQlSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBpbnZhbGlk YXRpb25fY2F1c2UgPSBSU19JTlZBTF9OT05FOworCQlUaW1lc3RhbXBUeiBub3cgPSAwOwogCiAJ CUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9kZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywg TFdfU0hBUkVEKSk7CiAKQEAgLTE1OTgsNiArMTY1MCwxNiBAQCBJbnZhbGlkYXRlUG9zc2libHlP YnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQli cmVhazsKIAkJfQogCisJCWlmIChjYXVzZSA9PSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUICYm CisJCQlTbG90SW5hY3RpdmVUaW1lb3V0Q2hlY2tBbGxvd2VkKHMpKQorCQl7CisJCQkvKgorCQkJ ICogV2UgZ2V0IHRoZSBjdXJyZW50IHRpbWUgYmVmb3JlaGFuZCB0byBhdm9pZCBzeXN0ZW0gY2Fs bCB3aGlsZQorCQkJICogaG9sZGluZyB0aGUgc3BpbmxvY2suCisJCQkgKi8KKwkJCW5vdyA9IEdl dEN1cnJlbnRUaW1lc3RhbXAoKTsKKwkJfQorCiAJCS8qCiAJCSAqIENoZWNrIGlmIHRoZSBzbG90 IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBuZWVkcyB0byBiZQogCQkgKiBpbnZhbGlk YXRlZCwgYW5kIGlzIG5vdCBjdXJyZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsg aXQKQEAgLTE2NTEsNiArMTcxMywyNiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3Qo UmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCWlmIChTbG90SXNM b2dpY2FsKHMpKQogCQkJCQkJaW52YWxpZGF0aW9uX2NhdXNlID0gY2F1c2U7CiAJCQkJCWJyZWFr OworCQkJCWNhc2UgUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVDoKKworCQkJCQkvKgorCQkJCQkg KiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZCBkdWUgdG8KKwkJCQkJ ICogcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IEdVQy4KKwkJCQkJICovCisJCQkJ CWlmIChTbG90SW5hY3RpdmVUaW1lb3V0Q2hlY2tBbGxvd2VkKHMpICYmCisJCQkJCQlUaW1lc3Rh bXBEaWZmZXJlbmNlRXhjZWVkcyhzLT5pbmFjdGl2ZV9zaW5jZSwgbm93LAorCQkJCQkJCQkJCQkJ ICAgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0ICogMTAwMCkpCisJCQkJCXsKKwkJ CQkJCWludmFsaWRhdGlvbl9jYXVzZSA9IGNhdXNlOworCQkJCQkJaW5hY3RpdmVfc2luY2UgPSBz LT5pbmFjdGl2ZV9zaW5jZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIEludmFsaWRhdGlvbiBkdWUg dG8gaW5hY3RpdmUgdGltZW91dCBpbXBsaWVzIHRoYXQKKwkJCQkJCSAqIG5vIG9uZSBpcyB1c2lu ZyB0aGUgc2xvdC4KKwkJCQkJCSAqLworCQkJCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0gMCk7 CisJCQkJCX0KKwkJCQkJYnJlYWs7CiAJCQkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJCQlwZ191 bnJlYWNoYWJsZSgpOwogCQkJfQpAQCAtMTY3NiwxMSArMTc1OCwxMyBAQCBJbnZhbGlkYXRlUG9z c2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2Us CiAJCWFjdGl2ZV9waWQgPSBzLT5hY3RpdmVfcGlkOwogCiAJCS8qCi0JCSAqIElmIHRoZSBzbG90 IGNhbiBiZSBhY3F1aXJlZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKLQkJICogaW1t ZWRpYXRlbHkuICBPdGhlcndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVs b3csIGFuZAotCQkgKiByZXRyeS4KKwkJICogSWYgdGhlIHNsb3QgY2FuIGJlIGFjcXVpcmVkLCBk byBzbyBhbmQgbWFyayBpdCBhcyBpbnZhbGlkYXRlZC4gSWYKKwkJICogdGhlIHNsb3QgaXMgYWxy ZWFkeSBvdXJzLCBtYXJrIGl0IGFzIGludmFsaWRhdGVkLiBPdGhlcndpc2UsIHdlJ2xsCisJCSAq IHNpZ25hbCB0aGUgb3duaW5nIHByb2Nlc3MgYmVsb3cgYW5kIHJldHJ5LgogCQkgKi8KLQkJaWYg KGFjdGl2ZV9waWQgPT0gMCkKKwkJaWYgKGFjdGl2ZV9waWQgPT0gMCB8fAorCQkJKE15UmVwbGlj YXRpb25TbG90ID09IHMgJiYKKwkJCSBhY3RpdmVfcGlkID09IE15UHJvY1BpZCkpCiAJCXsKIAkJ CU15UmVwbGljYXRpb25TbG90ID0gczsKIAkJCXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CkBA IC0xNzM1LDcgKzE4MTksOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGlj YXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQl7CiAJCQkJUmVwb3J0U2xvdElu dmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUsIGFjdGl2ZV9waWQsCiAJCQkJCQkJ CQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCi0JCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5jZSk7CiAKIAkJCQlpZiAoTXlC YWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3Rp dmVfcGlkLApAQCAtMTc4MSw3ICsxODY2LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVT bG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCiAJCQlSZXBvcnRT bG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgZmFsc2UsIGFjdGl2ZV9waWQsCiAJ CQkJCQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xzbiwKLQkJCQkJCQkJICAgb2xkZXN0TFNOLCBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RD b25mbGljdEhvcml6b24sCisJCQkJCQkJCSAgIGluYWN0aXZlX3NpbmNlKTsKIAogCQkJLyogZG9u ZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCiAJCQlicmVhazsKQEAgLTE4MDQsNiArMTg5MCw3 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlk YXRpb25DYXVzZSBjYXVzZSwKICAqIC0gUlNfSU5WQUxfSE9SSVpPTjogcmVxdWlyZXMgYSBzbmFw c2hvdCA8PSB0aGUgZ2l2ZW4gaG9yaXpvbiBpbiB0aGUgZ2l2ZW4KICAqICAgZGI7IGRib2lkIG1h eSBiZSBJbnZhbGlkT2lkIGZvciBzaGFyZWQgcmVsYXRpb25zCiAgKiAtIFJTX0lOVkFMX1dBTF9M RVZFTDogaXMgbG9naWNhbAorICogLSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOiBpbmFjdGl2 ZSBzbG90IHRpbWVvdXQgaGFzIG9jY3VycmVkCiAgKgogICogTkIgLSB0aGlzIHJ1bnMgYXMgcGFy dCBvZiBjaGVja3BvaW50LCBzbyBhdm9pZCByYWlzaW5nIGVycm9ycyBpZiBwb3NzaWJsZS4KICAq LwpAQCAtMTg1Niw3ICsxOTQzLDggQEAgcmVzdGFydDoKIH0KIAogLyoKLSAqIEZsdXNoIGFsbCBy ZXBsaWNhdGlvbiBzbG90cyB0byBkaXNrLgorICogRmx1c2ggYWxsIHJlcGxpY2F0aW9uIHNsb3Rz IHRvIGRpc2suIEFsc28sIGludmFsaWRhdGUgb2Jzb2xldGUgc2xvdHMgZHVyaW5nCisgKiBub24t c2h1dGRvd24gY2hlY2twb2ludC4KICAqCiAgKiBJdCBpcyBjb252ZW5pZW50IHRvIGZsdXNoIGRp cnR5IHJlcGxpY2F0aW9uIHNsb3RzIGF0IHRoZSB0aW1lIG9mIGNoZWNrcG9pbnQuCiAgKiBBZGRp dGlvbmFsbHksIGluIGNhc2Ugb2YgYSBzaHV0ZG93biBjaGVja3BvaW50LCB3ZSBhbHNvIGlkZW50 aWZ5IHRoZSBzbG90cwpAQCAtMTkxNCw2ICsyMDAyLDM4IEBAIENoZWNrUG9pbnRSZXBsaWNhdGlv blNsb3RzKGJvb2wgaXNfc2h1dGRvd24pCiAJCVNhdmVTbG90VG9QYXRoKHMsIHBhdGgsIExPRyk7 CiAJfQogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90QWxsb2NhdGlvbkxvY2spOworCisJ aWYgKCFpc19zaHV0ZG93bikKKwl7CisJCWVsb2coREVCVUcxLCAicGVyZm9ybWluZyByZXBsaWNh dGlvbiBzbG90IGludmFsaWRhdGlvbiBjaGVja3MiKTsKKworCQkvKgorCQkgKiBOQjogV2Ugd2ls bCBtYWtlIGFub3RoZXIgcGFzcyBvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIGZvcgorCQkgKiBpbnZh bGlkYXRpb24gY2hlY2tzIHRvIGtlZXAgdGhlIGNvZGUgc2ltcGxlLiBUZXN0aW5nIHNob3dzIHRo YXQKKwkJICogdGhlcmUgaXMgbm8gbm90aWNlYWJsZSBvdmVyaGVhZCAod2hlbiBjb21wYXJlZCB3 aXRoIHdhbF9yZW1vdmVkCisJCSAqIGludmFsaWRhdGlvbikgZXZlbiBpZiB3ZSB3ZXJlIHRvIGRv IGluYWN0aXZlX3RpbWVvdXQgaW52YWxpZGF0aW9uCisJCSAqIG9mIHRob3VzYW5kcyBvZiByZXBs aWNhdGlvbiBzbG90cyBoZXJlLiBJZiBpdCBpcyBldmVyIHByb3ZlbiB0aGF0CisJCSAqIHRoaXMg YXNzdW1wdGlvbiBpcyB3cm9uZywgd2Ugd2lsbCBoYXZlIHRvIHBlcmZvcm0gdGhlIGludmFsaWRh dGlvbgorCQkgKiBjaGVja3MgaW4gdGhlIGFib3ZlIGZvciBsb29wIHdpdGggdGhlIGZvbGxvd2lu ZyBjaGFuZ2VzOgorCQkgKgorCQkgKiAtIEFjcXVpcmUgQ29udHJvbExvY2sgbG9jayBvbmNlIGJl Zm9yZSB0aGUgbG9vcC4KKwkJICoKKwkJICogLSBDYWxsIEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdCBmb3IgZWFjaCBzbG90LgorCQkgKgorCQkgKiAtIEhhbmRsZSB0aGUgY2FzZXMgaW4g d2hpY2ggQ29udHJvbExvY2sgZ2V0cyByZWxlYXNlZCBqdXN0IGxpa2UKKwkJICogSW52YWxpZGF0 ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyBkb2VzLgorCQkgKgorCQkgKiAtIEF2b2lkIHNhdmlu ZyBzbG90IGluZm8gdG8gZGlzayB0d28gdGltZXMgZm9yIGVhY2ggaW52YWxpZGF0ZWQKKwkJICog c2xvdC4KKwkJICoKKwkJICogWFhYOiBTaG91bGQgd2UgbW92ZSBpbmFjdGl2ZV90aW1lb3V0IGlu dmFsaWRhdGlvbiBjaGVjayBjbG9zZXIgdG8KKwkJICogd2FsX3JlbW92ZWQgaW4gQ3JlYXRlQ2hl Y2tQb2ludCBhbmQgQ3JlYXRlUmVzdGFydFBvaW50PworCQkgKi8KKwkJSW52YWxpZGF0ZU9ic29s ZXRlUmVwbGljYXRpb25TbG90cyhSU19JTlZBTF9JTkFDVElWRV9USU1FT1VULAorCQkJCQkJCQkJ CSAgIDAsCisJCQkJCQkJCQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkgICBJbnZhbGlkVHJh bnNhY3Rpb25JZCk7CisJfQogfQogCiAvKgpAQCAtMjIwOCw2ICsyMzI4LDcgQEAgUmVzdG9yZVNs b3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKQogCWJvb2wJCXJlc3RvcmVkID0gZmFsc2U7CiAJ aW50CQkJcmVhZEJ5dGVzOwogCXBnX2NyYzMyYwljaGVja3N1bTsKKwlUaW1lc3RhbXBUeiBub3c7 CiAKIAkvKiBubyBuZWVkIHRvIGxvY2sgaGVyZSwgbm8gY29uY3VycmVudCBhY2Nlc3MgYWxsb3dl ZCB5ZXQgKi8KIApAQCAtMjM2OCw2ICsyNDg5LDkgQEAgUmVzdG9yZVNsb3RGcm9tRGlzayhjb25z dCBjaGFyICpuYW1lKQogCQkJCQkJTmFtZVN0cihjcC5zbG90ZGF0YS5uYW1lKSksCiAJCQkJIGVy cmhpbnQoIkNoYW5nZSBcIndhbF9sZXZlbFwiIHRvIGJlIFwicmVwbGljYVwiIG9yIGhpZ2hlci4i KSkpOwogCisJLyogVXNlIHNhbWUgaW5hY3RpdmVfc2luY2UgdGltZSBmb3IgYWxsIHNsb3RzICov CisJbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCiAJLyogbm90aGluZyBjYW4gYmUgYWN0 aXZlIHlldCwgZG9uJ3QgbG9jayBhbnl0aGluZyAqLwogCWZvciAoaSA9IDA7IGkgPCBtYXhfcmVw bGljYXRpb25fc2xvdHM7IGkrKykKIAl7CkBAIC0yNDAwLDcgKzI1MjQsNyBAQCBSZXN0b3JlU2xv dEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJCSAqIHNsb3QgZnJvbSB0aGUgZGlzayBpbnRv IG1lbW9yeS4gV2hvZXZlciBhY3F1aXJlcyB0aGUgc2xvdCBpLmUuCiAJCSAqIG1ha2VzIHRoZSBz bG90IGFjdGl2ZSB3aWxsIHJlc2V0IGl0LgogCQkgKi8KLQkJc2xvdC0+aW5hY3RpdmVfc2luY2Ug PSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCXNsb3QtPmluYWN0aXZlX3NpbmNlID0gbm93Owog CiAJCXJlc3RvcmVkID0gdHJ1ZTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5j cy5jCmluZGV4IDQ4OGExNjFiM2UuLjU3OGNmZjY0YzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3RmdW5jcy5jCkBAIC01MzYsNyArNTM2LDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNl KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW1vdmV0byA9IE1pbihtb3ZldG8sIEdldFhMb2dSZXBsYXlS ZWNQdHIoTlVMTCkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBpdCAqLwot CVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVlKTsKKwlSZXBs aWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAkv KiBBIHNsb3Qgd2hvc2UgcmVzdGFydF9sc24gaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQgY2Fubm90 IGJlIGFkdmFuY2VkICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlvblNs b3QtPmRhdGEucmVzdGFydF9sc24pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRl eCAzNzFlZWYzZGRkLi5iMzZhZTkwYjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIu YwpAQCAtODE2LDcgKzgxNiw3IEBAIFN0YXJ0UmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlvbkNt ZCAqY21kKQogCiAJaWYgKGNtZC0+c2xvdG5hbWUpCiAJewotCQlSZXBsaWNhdGlvblNsb3RBY3F1 aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+ c2xvdG5hbWUsIHRydWUsIHRydWUpOwogCQlpZiAoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9u U2xvdCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE0MzQsNyArMTQzNCw3IEBAIFN0YXJ0TG9n aWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCUFzc2VydCghTXlS ZXBsaWNhdGlvblNsb3QpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1l LCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUsIHRy dWUpOwogCiAJLyoKIAkgKiBGb3JjZSBhIGRpc2Nvbm5lY3QsIHNvIHRoYXQgdGhlIGRlY29kaW5n IGNvZGUgZG9lc24ndCBuZWVkIHRvIGNhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdy YWRlX3N1cHBvcnQuYwppbmRleCA4YTQ1YjU4MjdlLi4zMzIyODQ4ZTAzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0yOTgsNyArMjk4LDcgQEAgYmlu YXJ5X3VwZ3JhZGVfbG9naWNhbF9zbG90X2hhc19jYXVnaHRfdXAoUEdfRlVOQ1RJT05fQVJHUykK IAlzbG90X25hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAogCS8qIEFjcXVpcmUgdGhlIGdpdmVu IHNsb3QgKi8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFtZSksIHRy dWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdF9uYW1lKSwgdHJ1ZSwg ZmFsc2UpOwogCiAJQXNzZXJ0KFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA4YTY3ZjAxMjAwLi4zNjdmNTEwMTE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzAyOCw2ICszMDI4LDE4IEBA IHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBO VUxMCiAJfSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQiLCBQ R0NfU0lHSFVQLCBSRVBMSUNBVElPTl9TRU5ESU5HLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRo ZSBhbW91bnQgb2YgdGltZSBhIHJlcGxpY2F0aW9uIHNsb3QgY2FuIHJlbWFpbiBpbmFjdGl2ZSBi ZWZvcmUgIgorCQkJCQkJICJpdCB3aWxsIGJlIGludmFsaWRhdGVkLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19VTklUX1MKKwkJfSwKKwkJJnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCwK KwkJMCwgMCwgSU5UX01BWCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsiY29t bWl0X2RlbGF5IiwgUEdDX1NVU0VULCBXQUxfU0VUVElOR1MsCiAJCQlnZXR0ZXh0X25vb3AoIlNl dHMgdGhlIGRlbGF5IGluIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBh bmQgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmlu ZGV4IDM5YTNhYzIzMTIuLjdjNmFlMWJhYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTMzNiw2ICszMzYsNyBAQAogI3dhbF9zZW5kZXJf dGltZW91dCA9IDYwcwkjIGluIG1pbGxpc2Vjb25kczsgMCBkaXNhYmxlcwogI3RyYWNrX2NvbW1p dF90aW1lc3RhbXAgPSBvZmYJIyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21t aXQKIAkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKKyNyZXBsaWNhdGlvbl9zbG90X2lu YWN0aXZlX3RpbWVvdXQgPSAwCSMgaW4gc2Vjb25kczsgMCBkaXNhYmxlcwogCiAjIC0gUHJpbWFy eSBTZXJ2ZXIgLQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggNDU1ODJjZjlkOC4uOGZmZDA2 ZGQ5ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtNTYsNiArNTYsOCBAQCB0eXBlZGVmIGVu dW0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9IT1JJWk9OLAog CS8qIHdhbF9sZXZlbCBpbnN1ZmZpY2llbnQgZm9yIHNsb3QgKi8KIAlSU19JTlZBTF9XQUxfTEVW RUwsCisJLyogaW5hY3RpdmUgc2xvdCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLworCVJTX0lOVkFM X0lOQUNUSVZFX1RJTUVPVVQsCiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwog CiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNh dXNlc1tdOwpAQCAtMjI0LDYgKzIyNiwyNSBAQCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblNs b3RDdGxEYXRhCiAJUmVwbGljYXRpb25TbG90IHJlcGxpY2F0aW9uX3Nsb3RzWzFdOwogfSBSZXBs aWNhdGlvblNsb3RDdGxEYXRhOwogCisvKgorICogU2V0IHNsb3QncyBpbmFjdGl2ZV9zaW5jZSBw cm9wZXJ0eSB1bmxlc3MgaXQgd2FzIHByZXZpb3VzbHkgaW52YWxpZGF0ZWQuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorUmVwbGljYXRpb25TbG90U2V0SW5hY3RpdmVTaW5jZShSZXBsaWNhdGlv blNsb3QgKnMsIFRpbWVzdGFtcFR6ICpub3csCisJCQkJCQkJCWJvb2wgYWNxdWlyZV9sb2NrKQor eworCWlmIChzLT5kYXRhLmludmFsaWRhdGVkICE9IFJTX0lOVkFMX05PTkUpCisJCXJldHVybjsK KworCWlmIChhY3F1aXJlX2xvY2spCisJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCisJ cy0+aW5hY3RpdmVfc2luY2UgPSAqbm93OworCisJaWYgKGFjcXVpcmVfbG9jaykKKwkJU3Bpbkxv Y2tSZWxlYXNlKCZzLT5tdXRleCk7Cit9CisKIC8qCiAgKiBQb2ludGVycyB0byBzaGFyZWQgbWVt b3J5CiAgKi8KQEAgLTIzMyw2ICsyNTQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUmVwbGljYXRp b25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdDsKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN5 bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNh dGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ7CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1 bmN0aW9ucyAqLwogZXh0ZXJuIFNpemUgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsK QEAgLTI0OSw3ICsyNzEsOCBAQCBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wQWNxdWly ZWQodm9pZCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBbHRlcihjb25zdCBjaGFyICpu YW1lLCBjb25zdCBib29sICpmYWlsb3ZlciwKIAkJCQkJCQkJIGNvbnN0IGJvb2wgKnR3b19waGFz ZSk7CiAKLWV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3QgY2hhciAqbmFt ZSwgYm9vbCBub3dhaXQpOworZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25z dCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCwKKwkJCQkJCQkJICAgYm9vbCBlcnJvcl9pZl9pbnZh bGlkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdFJlbGVhc2Uodm9pZCk7CiBleHRlcm4g dm9pZCBSZXBsaWNhdGlvblNsb3RDbGVhbnVwKGJvb2wgc3luY2VkX29ubHkpOwogZXh0ZXJuIHZv aWQgUmVwbGljYXRpb25TbG90U2F2ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292 ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYjFl Yjc3YjFlYy4uNzA4YTJhMzc5OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAgLTUxLDYgKzUxLDcg QEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5w bCcsCiAgICAgICAndC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3RlLnBsJywKICAgICAgICd0LzA0 Ml9sb3dfbGV2ZWxfYmFja3VwLnBsJywKKyAgICAgICd0LzA1MF9pbnZhbGlkYXRlX3Nsb3RzLnBs JywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBf aW52YWxpZGF0ZV9zbG90cy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVf c2xvdHMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjcwZjg3YzEw YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVf c2xvdHMucGwKQEAgLTAsMCArMSwyNjcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgZm9yIHJlcGxpY2F0aW9uIHNs b3RzIGludmFsaWRhdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwor CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3RjYXNlIHN0YXJ0CisjCisjIFRlc3QgaW52 YWxpZGF0aW9uIG9mIHN0cmVhbWluZyBzdGFuZGJ5IHNsb3QgYW5kIGxvZ2ljYWwgZmFpbG92ZXIg c2xvdCBvbiB0aGUKKyMgcHJpbWFyeSBkdWUgdG8gaW5hY3RpdmUgdGltZW91dC4gQWxzbywgdGVz dCBsb2dpY2FsIGZhaWxvdmVyIHNsb3Qgc3luY2VkIHRvCisjIHRoZSBzdGFuZGJ5IGZyb20gdGhl IHByaW1hcnkgZG9lc24ndCBnZXQgaW52YWxpZGF0ZWQgb24gaXRzIG93biwgYnV0IGdldHMgdGhl CisjIGludmFsaWRhdGVkIHN0YXRlIGZyb20gdGhlIHByaW1hcnkuCisKKyMgSW5pdGlhbGl6ZSBw cmltYXJ5CitteSAkcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJp bWFyeScpOworJHByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwor CisjIEF2b2lkIHVucHJlZGljdGFiaWxpdHkKKyRwcmltYXJ5LT5hcHBlbmRfY29uZigKKwkncG9z dGdyZXNxbC5jb25mJywgcXF7CitjaGVja3BvaW50X3RpbWVvdXQgPSAxaAorYXV0b3ZhY3V1bSA9 IG9mZgorfSk7CiskcHJpbWFyeS0+c3RhcnQ7CisKKyMgVGFrZSBiYWNrdXAKK215ICRiYWNrdXBf bmFtZSA9ICdteV9iYWNrdXAnOworJHByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisj IENyZWF0ZSBzdGFuZGJ5CitteSAkc3RhbmRieTEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3N0YW5kYnkxJyk7Ciskc3RhbmRieTEtPmluaXRfZnJvbV9iYWNrdXAoJHByaW1hcnks ICRiYWNrdXBfbmFtZSwgaGFzX3N0cmVhbWluZyA9PiAxKTsKKworbXkgJGNvbm5zdHIgPSAkcHJp bWFyeS0+Y29ubnN0cjsKKyRzdGFuZGJ5MS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29u ZicsIHFxKAoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorcHJpbWFyeV9zbG90X25hbWUgPSAn c2Jfc2xvdDEnCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyIGRibmFtZT1wb3N0Z3JlcycK KykpOworCisjIENyZWF0ZSBzeW5jIHNsb3Qgb24gdGhlIHByaW1hcnkKKyRwcmltYXJ5LT5wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xv dCgnc3luY19zbG90MScsICd0ZXN0X2RlY29kaW5nJywgZmFsc2UsIGZhbHNlLCB0cnVlKTt9Cisp OworCisjIENyZWF0ZSBzdGFuZGJ5IHNsb3Qgb24gdGhlIHByaW1hcnkKKyRwcmltYXJ5LT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9y ZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2Jfc2xvdDEnLCBpbW1lZGlhdGVseV9yZXNl cnZlIDo9IHRydWUpOworXSk7CisKKyRzdGFuZGJ5MS0+c3RhcnQ7CisKKyMgV2FpdCB1bnRpbCB0 aGUgc3RhbmRieSBoYXMgcmVwbGF5ZWQgZW5vdWdoIGRhdGEKKyRwcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRzdGFuZGJ5MSk7CisKK215ICRsb2dzdGFydCA9IC1zICRzdGFuZGJ5MS0+bG9nZmls ZTsKKworIyBTZXQgdGltZW91dCBHVUMgb24gdGhlIHN0YW5kYnkgdG8gdmVyaWZ5IHRoYXQgdGhl IG5leHQgY2hlY2twb2ludCB3aWxsIG5vdAorIyBpbnZhbGlkYXRlIHN5bmNlZCBzbG90cy4KK215 ICRpbmFjdGl2ZV90aW1lb3V0ID0gMTsKKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxWworICAgIEFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90 aW1lb3V0IFRPICcke2luYWN0aXZlX3RpbWVvdXR9cyc7CitdKTsKKyRzdGFuZGJ5MS0+cmVsb2Fk OworCisjIFN5bmMgdGhlIHByaW1hcnkgc2xvdHMgdG8gdGhlIHN0YW5kYnkKKyRzdGFuZGJ5MS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygp OyIpOworCisjIENvbmZpcm0gdGhhdCB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IGlzIGNyZWF0 ZWQgb24gdGhlIHN0YW5kYnkKK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywKKwkJcXtTRUxFQ1QgY291bnQoKikgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJ ICBXSEVSRSBzbG90X25hbWUgPSAnc3luY19zbG90MScgQU5EIHN5bmNlZAorCQkJQU5EIE5PVCB0 ZW1wb3JhcnkKKwkJCUFORCBpbnZhbGlkYXRpb25fcmVhc29uIElTIE5VTEw7fQorCSksCisJInQi LAorCSdsb2dpY2FsIHNsb3Qgc3luY19zbG90MSBpcyBzeW5jZWQgdG8gc3RhbmRieScpOworCisj IEdpdmUgZW5vdWdoIHRpbWUKK3NsZWVwKCRpbmFjdGl2ZV90aW1lb3V0ICsgMSk7CisKKyMgRGVz cGl0ZSBpbmFjdGl2ZSB0aW1lb3V0IGJlaW5nIHNldCwgdGhlIHN5bmNlZCBzbG90IHdvbid0IGdl dCBpbnZhbGlkYXRlZCBvbgorIyBpdHMgb3duIG9uIHRoZSBzdGFuZGJ5LiBTbywgd2UgbXVzdCBu b3Qgc2VlIGludmFsaWRhdGlvbiBtZXNzYWdlIGluIHNlcnZlcgorIyBsb2cuCiskc3RhbmRieTEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOworaXMoICRzdGFuZGJ5MS0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSA9IDEgRlJPTSBwZ19y ZXBsaWNhdGlvbl9zbG90cworCQkgIFdIRVJFIHNsb3RfbmFtZSA9ICdzeW5jX3Nsb3QxJworCQkJ QU5EIGludmFsaWRhdGlvbl9yZWFzb24gSVMgTlVMTDt9CisJKSwKKwkidCIsCisJJ2NoZWNrIHRo YXQgc3luY2VkIHNsb3Qgc3luY19zbG90MSBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQgb24gc3Rh bmRieScpOworCiskbG9nc3RhcnQgPSAtcyAkcHJpbWFyeS0+bG9nZmlsZTsKKworIyBTZXQgdGlt ZW91dCBHVUMgc28gdGhhdCB0aGUgbmV4dCBjaGVja3BvaW50IHdpbGwgaW52YWxpZGF0ZSBpbmFj dGl2ZSBzbG90cworJHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBB TFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAnJHtp bmFjdGl2ZV90aW1lb3V0fXMnOworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIFdhaXQgZm9y IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUgb24gdGhlIHByaW1hcnku IE5vdGUgdGhhdAorIyBub2JvZHkgaGFzIGFjcXVpcmVkIHRoZSBzbG90IHlldCwgc28gaXQgbXVz dCBnZXQgaW52YWxpZGF0ZWQgZHVlIHRvCisjIGluYWN0aXZlIHRpbWVvdXQuCit3YWl0X2Zvcl9z bG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ3N5bmNfc2xvdDEnLCAkbG9nc3RhcnQsCisJJGlu YWN0aXZlX3RpbWVvdXQpOworCisjIFJlLXN5bmMgdGhlIHByaW1hcnkgc2xvdHMgdG8gdGhlIHN0 YW5kYnkuIE5vdGUgdGhhdCB0aGUgcHJpbWFyeSBzbG90IHdhcworIyBhbHJlYWR5IGludmFsaWRh dGVkIChhYm92ZSkgZHVlIHRvIGluYWN0aXZlIHRpbWVvdXQuIFRoZSBzdGFuZGJ5IG11c3QganVz dAorIyBzeW5jIHRoZSBpbnZhbGlkYXRlZCBzdGF0ZS4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpOyIpOworJHN0YW5k YnkxLT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBDT1VOVChz bG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFt ZSA9ICdzeW5jX3Nsb3QxJyBBTkQKKwkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICdpbmFjdGl2ZV90 aW1lb3V0JzsKK10pCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN5 bmNfc2xvdDEgaW52YWxpZGF0aW9uIHRvIGJlIHN5bmNlZCBvbiBzdGFuZGJ5IjsKKworIyBNYWtl IHRoZSBzdGFuZGJ5IHNsb3Qgb24gdGhlIHByaW1hcnkgaW5hY3RpdmUgYW5kIGNoZWNrIGZvciBp bnZhbGlkYXRpb24KKyRzdGFuZGJ5MS0+c3RvcDsKK3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9u KCRwcmltYXJ5LCAnc2Jfc2xvdDEnLCAkbG9nc3RhcnQsCisJJGluYWN0aXZlX3RpbWVvdXQpOwor CisjIFRlc3RjYXNlIGVuZAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisjIFRlc3RjYXNlIHN0YXJ0CisjIEludmFsaWRhdGUgbG9naWNhbCBzdWJzY3Jp YmVyIHNsb3QgZHVlIHRvIGluYWN0aXZlIHRpbWVvdXQuCisKK215ICRwdWJsaXNoZXIgPSAkcHJp bWFyeTsKKworIyBQcmVwYXJlIGZvciB0ZXN0CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X2luYWN0 aXZlX3RpbWVvdXQgVE8gJzAnOworXSk7CiskcHVibGlzaGVyLT5yZWxvYWQ7CisKKyMgQ3JlYXRl IHN1YnNjcmliZXIKK215ICRzdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWInKTsKKyRzdWJzY3JpYmVyLT5pbml0OworJHN1YnNjcmliZXItPnN0YXJ0OworCisj IENyZWF0ZSB0YWJsZXMKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IFRBQkxFIHRlc3RfdGJsIChpZCBpbnQpIik7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YmwgKGlkIGludCkiKTsKKworIyBJbnNlcnQgc29t ZSBkYXRhCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8g dGVzdF90YmwgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwgNSkpOyIpOworCisjIFNldHVwIGxv Z2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRwdWJsaXNoZXItPmNv bm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIEFMTCBUQUJMRVMiKTsKKyRwdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgcGdfY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdChzbG90X25hbWUgOj0gJ2xzdWIxX3Nsb3QnLCBwbHVnaW4g Oj0gJ3Bnb3V0cHV0Jyk7CitdKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHInIFBVQkxJQ0FUSU9OIHB1YiBXSVRIIChzbG90X25hbWUgPSAnbHN1YjFfc2xvdCcsIGNyZWF0 ZV9zbG90ID0gZmFsc2UpIgorKTsKKyRzdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkcHVibGlzaGVyLCAnc3ViJyk7CitteSAkcmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YmwiKTsKK2lz KCRyZXN1bHQsIHFxKDUpLCAiY2hlY2sgaW5pdGlhbCBjb3B5IHdhcyBkb25lIik7CisKKyMgU2V0 IHRpbWVvdXQgR1VDIHNvIHRoYXQgdGhlIG5leHQgY2hlY2twb2ludCB3aWxsIGludmFsaWRhdGUg aW5hY3RpdmUgc2xvdHMKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsK KyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBU TyAnICR7aW5hY3RpdmVfdGltZW91dH1zJzsKK10pOworJHB1Ymxpc2hlci0+cmVsb2FkOworCisk bG9nc3RhcnQgPSAtcyAkcHVibGlzaGVyLT5sb2dmaWxlOworCisjIE1ha2Ugc3Vic2NyaWJlciBz bG90IG9uIHB1Ymxpc2hlciBpbmFjdGl2ZSBhbmQgY2hlY2sgZm9yIGludmFsaWRhdGlvbgorJHN1 YnNjcmliZXItPnN0b3A7Cit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigkcHVibGlzaGVyLCAn bHN1YjFfc2xvdCcsICRsb2dzdGFydCwKKwkkaW5hY3RpdmVfdGltZW91dCk7CisKKyMgVGVzdGNh c2UgZW5kCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgV2FpdCBmb3Igc2xvdCB0byBmaXJz dCBiZWNvbWUgaW5hY3RpdmUgYW5kIHRoZW4gZ2V0IGludmFsaWRhdGVkCitzdWIgd2FpdF9mb3Jf c2xvdF9pbnZhbGlkYXRpb24KK3sKKwlteSAoJG5vZGUsICRzbG90LCAkb2Zmc2V0LCAkaW5hY3Rp dmVfdGltZW91dCkgPSBAXzsKKwlteSAkbm9kZV9uYW1lID0gJG5vZGUtPm5hbWU7CisKKwkjIFdh aXQgZm9yIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwo CisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBw Z19yZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90JyBBTkQgYWN0 aXZlID0gJ2YnIEFORAorCQkJCSAgaW5hY3RpdmVfc2luY2UgSVMgTk9UIE5VTEw7CisJXSkKKwkg IG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzbG90ICRzbG90IHRvIGJl Y29tZSBpbmFjdGl2ZSBvbiBub2RlICRub2RlX25hbWUiOworCisJdHJpZ2dlcl9zbG90X2ludmFs aWRhdGlvbigkbm9kZSwgJHNsb3QsICRvZmZzZXQsICRpbmFjdGl2ZV90aW1lb3V0KTsKKworCSMg Q2hlY2sgdGhhdCBhbiBpbnZhbGlkYXRlZCBzbG90IGNhbm5vdCBiZSBhY3F1aXJlZAorCW15ICgk cmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKTsKKwkoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikg PSAkbm9kZS0+cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCQlTRUxFQ1QgcGdfcmVwbGljYXRp b25fc2xvdF9hZHZhbmNlKCckc2xvdCcsICcwLzEnKTsKKwldKTsKKwlvayggJHN0ZGVyciA9fiAv Y2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgIiRzbG90Ii8s CisJCSJkZXRlY3RlZCBlcnJvciB1cG9uIHRyeWluZyB0byBhY3F1aXJlIGludmFsaWRhdGVkIHNs b3QgJHNsb3Qgb24gbm9kZSAkbm9kZV9uYW1lIgorCSAgKQorCSAgb3IgZGllCisJICAiY291bGQg bm90IGRldGVjdCBlcnJvciB1cG9uIHRyeWluZyB0byBhY3F1aXJlIGludmFsaWRhdGVkIHNsb3Qg JHNsb3Qgb24gbm9kZSAkbm9kZV9uYW1lIjsKK30KKworIyBUcmlnZ2VyIHNsb3QgaW52YWxpZGF0 aW9uIGFuZCBjb25maXJtIGl0IGluIHRoZSBzZXJ2ZXIgbG9nCitzdWIgdHJpZ2dlcl9zbG90X2lu dmFsaWRhdGlvbgoreworCW15ICgkbm9kZSwgJHNsb3QsICRvZmZzZXQsICRpbmFjdGl2ZV90aW1l b3V0KSA9IEBfOworCW15ICRub2RlX25hbWUgPSAkbm9kZS0+bmFtZTsKKwlteSAkaW52YWxpZGF0 ZWQgPSAwOworCisJIyBHaXZlIGVub3VnaCB0aW1lIHRvIGF2b2lkIG11bHRpcGxlIGNoZWNrcG9p bnRzCisJc2xlZXAoJGluYWN0aXZlX3RpbWVvdXQgKyAxKTsKKworCWZvciAobXkgJGkgPSAwOyAk aSA8IDEwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7ICRpKysp CisJeworCQkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDSEVDS1BPSU5UIik7CisJCWlm ICgkbm9kZS0+bG9nX2NvbnRhaW5zKAorCQkJCSJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGlj YXRpb24gc2xvdCBcIiRzbG90XCIiLCAkb2Zmc2V0KSkKKwkJeworCQkJJGludmFsaWRhdGVkID0g MTsKKwkJCWxhc3Q7CisJCX0KKwkJdXNsZWVwKDEwMF8wMDApOworCX0KKwlvaygkaW52YWxpZGF0 ZWQsCisJCSJjaGVjayB0aGF0IHNsb3QgJHNsb3QgaW52YWxpZGF0aW9uIGhhcyBiZWVuIGxvZ2dl ZCBvbiBub2RlICRub2RlX25hbWUiCisJKTsKKworCSMgQ2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0 aW9uIHJlYXNvbiBpcyAnaW5hY3RpdmVfdGltZW91dCcKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRp bCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBGUk9N IHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3QnIEFORAor CQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICdpbmFjdGl2ZV90aW1lb3V0JzsKKwldKQorCSAgb3Ig ZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGludmFsaWRhdGlvbiByZWFzb24g b2Ygc2xvdCAkc2xvdCB0byBiZSBzZXQgb24gbm9kZSAkbm9kZV9uYW1lIjsKK30KKworZG9uZV90 ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000b539070626c7fc1b--