Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1voNjm-002U07-2m for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 15:27:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1voNjl-004TcU-2o for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 15:27:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1voNjl-004TcM-1W for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 15:27:13 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1voNji-00000001Nkf-3IOr for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 15:27:12 +0000 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-b884a84e622so396399066b.1 for ; Fri, 06 Feb 2026 07:27:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770391628; cv=none; d=google.com; s=arc-20240605; b=hH0o7l2FrHi+pjnChAYvDH5W3qrFS8eMRfn4aAQ/0zxlGDvusmG805MoPNGS+kC1RM xNEto0Cwkzenxs7+41nb4hCcimF353xbQA2nWv1sQIe8B2iC/T96sQVNj27mJ9+GWB+H upXr7B/MfxxRuxtBLx0NouSlTzWh6U3uPDyfEhscqQnOe2gylpY9bgKN8hNe37ybMRQ8 Qqrpr4iql7pT/IvfnEYuOhBnsJDJEAsoW3Qw4LCDNvitkUshgbJChpRVsiVXo6BA3Tzo Fh5etnVVlKi6M7QUuB1yYGbaG80B6d32gf5oB6b2Nm1ccOvUv6d71zhhzk4H0MKKNIQf 3R0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=PFgpp//NPWa8r3bJHwo3PBx0h8otq0++mwCp1diQQ4s=; fh=heKI/muaWpYyZhdPRQXqDojd/YJ3y7/fjcSQj0X+3SQ=; b=dpnGpXLczUzU7uNLdOi2FvRyjtRqqL9gNHXZqj9PavMNPkKMJRCDLlGFPFKRigTTiI snUVb2xyapU8sUCwY1v2Y0FvR7oJQ+UxEpmnFGZGCghjyARjYAq17ZnpgmNNG8tliQHA m3JS6ydaGL9Ajne5a5YO2ebK4PCOk31i4r6lOH+DAY96gCTgbvEIQrAEuNnrxOtCCaU6 82btkW+FjPHmljI+9fia7Ji3qvXtIVhCBeR2tLjRrHJP+/PJYuA0xWAx9tmlnsP+su0S 2+b/QGoL4YXeacio8KCtskd5yZl+k+tNpsvoi3AY2AVK9YFhhQeuVRTzGnCR5lGFtdYs ZfnA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec.at; s=google; t=1770391628; x=1770996428; 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=PFgpp//NPWa8r3bJHwo3PBx0h8otq0++mwCp1diQQ4s=; b=imaDpb/hV1VVxor9eTewM7e6Ni/CykMM++uqm/EfHHh0JuPrNg3RScJwh1dI9A7LfR WpbfO4HhPMs9Kre34DPL/blzb2J/dYN/ktg3HqFmJCuEX6nt5jrA0nVSHzWVA0Buqz/L snnf+w5zbn6AbW2TkJDBQFIhIMjEPdOQFlAGvrDEOCfI9KFNM/fIRmLuvNRQfD1Uqzhz NPDpy9KSs/JP0MUlbqndiFHBKAAaAX73BVLSWN50MzvH+RtxjuHlobElaOwPvb3HXM/v oRyxOOHou9utPOgUB7R3gl5zQ5b3A6oLVXe+f9+Ed0B4yD0IMRWlrlqURnjryOxYHiMg JJ4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770391628; x=1770996428; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=PFgpp//NPWa8r3bJHwo3PBx0h8otq0++mwCp1diQQ4s=; b=DJo9ZI+DFSPeqiCvFpK0zvugWJgWgr6OKXhloVbe96SRuU70GnyxzFzzXtKLLDLKVx 4r0BQxVzpeuKwZlAz8Lo8M99d1PqdFjhk2GdVFXQ+1p1WF65cy88y28xt6ZbS0v92Fb9 GuYmznS7Dj4QNcrkizS5RHM/h69pabjeQhyHl3loPq7bcS5N/QCq+83OoRZnZTGP5ZhY J6LXaeVDjraiRbCUBWlsI1IPp1T0HsgSeyUmgREex9Nm7J7Muyf+u2UQP4SYYNIwAAb2 od39XoTLu4H5Quywc/NeMAJ4xsqPEDC5zxMRGGjVG66pT8F5vbNZwSt7dYLwbgta2sbQ TcIg== X-Forwarded-Encrypted: i=1; AJvYcCWIVdwiyLwGDM3Y5Jy3vEgtZMtzY+0dvMbCV2exSbI4g/Zpo9jLnl1hIAa0L4PjP3eLorjVCKNgliU0trqI@lists.postgresql.org X-Gm-Message-State: AOJu0YyUK3c7xtyFKGo5HLNkw0tAsr+ZAqZD5Xy6XqhVkuHM1tpehEch WPVISIbkeF1kY/0ZDZEAsycS0UCHa+7LFLB51sTBkU+dPe6r9tdQFROqAX+QoRlQCIEb/nFgyRp ScbA4VaIqGwVIweMCglo4JkRvYB6sJcIVh7CpCqCU5A== X-Gm-Gg: AZuq6aKri/Sc3K7IapWm5SXLTGuB8eeEuVvkgvJviwCxJzMtdcOdyyKKMJ61OusduES JfR3vtI2GhOM6NQt5UdudMHlW6elamD13zYeBfsVRPZvcpdkBz8BbQyowz7PGrAePPrxQZuBTQ7 9uLd8gKmVy4Kj5CBTJb2rstiZkBQ9YOiFYDrtM3LaE8SuEkVHKiEVCW+m814mLHWdWj5rUo7AoP hLo3/0bYPk/xkcL1ORxJE7/MQf0KDMNdUDUGs0hhJWnscqJvffLUtCusrVhT1rFoOe5FpY= X-Received: by 2002:a17:907:7f8a:b0:b83:1433:78de with SMTP id a640c23a62f3a-b8edf11f5e8mr195405966b.12.1770391628372; Fri, 06 Feb 2026 07:27:08 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Pavlo Golub Date: Fri, 6 Feb 2026 16:27:00 +0100 X-Gm-Features: AZwV_Qi5SRy0K16SdJoAU2x2xWUskfoPqthVu-F1R0uH-G4QIoeT-m-m1lJy3kU Message-ID: Subject: Re: [PATCH] Add last_executed timestamp to pg_stat_statements To: Christoph Berg Cc: Sami Imseih , Bertrand Drouvot , "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="0000000000001f8c95064a296c94" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001f8c95064a296c94 Content-Type: text/plain; charset="UTF-8" OK, here is one more try. I discovered the `total_time` argument to the `pgss_store()` function! So we can calculate the finish time without calling `GetCurrentTimestamp()`. This is version 3 of the patch adding a `stats_last_updated` column (yes, again) to pg_stat_statements. Based on feedback, this version improves the implementation with better performance and correctness. The main improvement uses `statement_start + execution_duration` with `rint(total_time * 1000.0)` to convert milliseconds to microseconds with proper rounding. The calculation performed BEFORE acquiring spinlock and assigned within locked scope. I'm wondering how we all missed this trick from the very beginning and started to argue if `GetCurrentTimestamp()` is heavy or not. :) Best regards, Pavlo --0000000000001f8c95064a296c94 Content-Type: application/octet-stream; name="v3-0001-pg_stat_statements-Add-stats_last_updated-column.patch" Content-Disposition: attachment; filename="v3-0001-pg_stat_statements-Add-stats_last_updated-column.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlb1g1jr0 RnJvbSBjZmNjOWM2MTI3ZWRhNWYzYTgwM2Q5Y2YwMDEyZDgwOWM0MDcxNmZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXZsbyBHb2x1YiA8cGF2bG8uZ29sdWJAY3liZXJ0ZWMuYXQ+ CkRhdGU6IFRodSwgNSBGZWIgMjAyNiAxNjo1OTo1NiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjNd IHBnX3N0YXRfc3RhdGVtZW50czogQWRkIHN0YXRzX2xhc3RfdXBkYXRlZCBjb2x1bW4gKHYyKQoK VGhpcyBwYXRjaCBhZGRzIGEgc3RhdHNfbGFzdF91cGRhdGVkIHRpbWVzdGFtcHR6IGNvbHVtbiB0 bwpwZ19zdGF0X3N0YXRlbWVudHMsIHJlY29yZGluZyB3aGVuIGVhY2ggdHJhY2tlZCBzdGF0ZW1l bnQgd2FzCm1vc3QgcmVjZW50bHkgZXhlY3V0ZWQuCgpUaGUgbW90aXZhdGlvbiBjb21lcyBmcm9t IG1vbml0b3JpbmcgdG9vbHMgdGhhdCBwb2xsCnBnX3N0YXRfc3RhdGVtZW50cyByZWd1bGFybHku IFdpdGggdGhpcyB0aW1lc3RhbXAsIHRvb2xzIGNhbgpmaWx0ZXIgYnkgJ3N0YXRzX2xhc3RfdXBk YXRlZCA+IGxhc3RfcG9sbF90aW1lJyB0byBmZXRjaCBvbmx5CnN0YXRlbWVudHMgZXhlY3V0ZWQg c2luY2UgdGhlIGxhc3QgcG9sbCwgc2lnbmlmaWNhbnRseSByZWR1Y2luZwpzdG9yYWdlIG92ZXJo ZWFkLgoKQ2hhbmdlcyBmcm9tIHYxOgotIFVzZSBHZXRDdXJyZW50U3RhdGVtZW50U3RhcnRUaW1l c3RhbXAoKSBpbnN0ZWFkIG9mIEdldEN1cnJlbnRUaW1lc3RhbXAoKQogIHRvIGF2b2lkIGtlcm5l bCBjYWxsIHVuZGVyIHNwaW5sb2NrIChhZGRyZXNzZXMgU2FtaSBJbXNlaWgncyBjb25jZXJuKQot IFJlbmFtZSBjb2x1bW4gZnJvbSBsYXN0X2V4ZWN1dGVkIHRvIHN0YXRzX2xhc3RfdXBkYXRlZCAo Q2hyaXN0b3BoIEJlcmcncyBzdWdnZXN0aW9uKQotIE1vdmUgdGltZXN0YW1wIGZyb20gQ291bnRl cnMgc3RydWN0IHRvIHBnc3NFbnRyeSBmb3IgYmV0dGVyIHNlbWFudGljcwotIFBsYWNlIGNvbHVt biBhdCBlbmQgb2YgdmlldyB0byBtYXRjaCBzdGF0c19zaW5jZSBuYW1pbmcgY29udmVudGlvbgot IEZpeGVkIHdoaXRlc3BhY2UgZXJyb3JzCi0gTW92ZWQgdGVzdHMgdG8gZW50cnlfdGltZXN0YW1w LnNxbCBhcyBzdWdnZXN0ZWQgYnkgU2FtaSBJbXNlaWgKLSBVcGRhdGVkIFBHU1NfRklMRV9IRUFE RVIgdG8gaGFuZGxlIHN0cnVjdHVyZSBjaGFuZ2UKClRoZSB0aW1lc3RhbXAgaXMgc3RvcmVkIGRp cmVjdGx5IGluIHBnc3NFbnRyeSAobm90IGluIENvdW50ZXJzKQpmb3IgYmV0dGVyIHNlbWFudGlj IGNvcnJlY3RuZXNzLCBhbmQgdGhlIGNvbHVtbiBpcyBwbGFjZWQgYXQgdGhlCmVuZCBvZiB0aGUg dmlldyB0byBtYXRjaCAnc3RhdHNfc2luY2UnIG5hbWluZyBjb252ZW50aW9ucy4KCkFkZHJlc3Nl cyBmZWVkYmFjayBmcm9tIFNhbWkgSW1zZWloLCBDaHJpc3RvcGggQmVyZywgYW5kIEJlcnRyYW5k CkRyb3V2b3Qgb24gdGhlIHBnc3FsLWhhY2tlcnMgbGlzdC4KLS0tCiBjb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9NYWtlZmlsZSAgICAgICAgICAgfCAgMSArCiAuLi4vZXhwZWN0ZWQvZW50cnlf dGltZXN0YW1wLm91dCAgICAgICAgICAgICAgfCA4MyArKysrKysrKysrKysrKysrKysrCiBjb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9tZXNvbi5idWlsZCAgICAgICAgfCAgMSArCiAuLi4vcGdf c3RhdF9zdGF0ZW1lbnRzLS0xLjEzLS0xLjE0LnNxbCAgICAgICAgfCA3OSArKysrKysrKysrKysr KysrKysKIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8IDQ1 ICsrKysrKysrKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMuY29udHJvbCAgICAgICAgICAgICAg ICB8ICAyICstCiAuLi4vc3FsL2VudHJ5X3RpbWVzdGFtcC5zcWwgICAgICAgICAgICAgICAgICAg fCA0OCArKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbCAgICAg ICAgICAgIHwgMTMgKysrCiA4IGZpbGVzIGNoYW5nZWQsIDI2OCBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy0tMS4xMy0tMS4xNC5zcWwKCmRpZmYgLS1naXQgYS9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L01ha2VmaWxlCmluZGV4IGMyN2U5NTI5YmI2Li5kNzE0MmY3MWNmNyAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0 YXRlbWVudHMvTWFrZWZpbGUKQEAgLTcsNiArNyw3IEBAIE9CSlMgPSBcCiAKIEVYVEVOU0lPTiA9 IHBnX3N0YXRfc3RhdGVtZW50cwogREFUQSA9IHBnX3N0YXRfc3RhdGVtZW50cy0tMS40LnNxbCBc CisJcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjEzLS0xLjE0LnNxbCBcCiAJcGdfc3RhdF9zdGF0ZW1l bnRzLS0xLjEyLS0xLjEzLnNxbCBcCiAJcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjExLS0xLjEyLnNx bCBwZ19zdGF0X3N0YXRlbWVudHMtLTEuMTAtLTEuMTEuc3FsIFwKIAlwZ19zdGF0X3N0YXRlbWVu dHMtLTEuOS0tMS4xMC5zcWwgcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjgtLTEuOS5zcWwgXApkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvZW50cnlfdGltZXN0 YW1wLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL2VudHJ5X3RpbWVz dGFtcC5vdXQKaW5kZXggYTEwYzRiZTZiYWMuLmU5MGZhNGYzNWU0IDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9lbnRyeV90aW1lc3RhbXAub3V0CisrKyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL2VudHJ5X3RpbWVzdGFtcC5vdXQK QEAgLTE1MCw2ICsxNTAsODkgQEAgV0hFUkUgcXVlcnkgTElLRSAnJVNUTVRUUyUnOwogICAgICAy IHwgICAgICAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICAgIDIgfCAgICAgICAgICAgICAg ICAgICAgIDAKICgxIHJvdykKIAorLS0KKy0tIHN0YXRzX2xhc3RfdXBkYXRlZCB0aW1lc3RhbXAg dGVzdHMKKy0tCitTRUxFQ1QgMSBBUyAiU1RBVFNfVVBEMSI7CisgU1RBVFNfVVBEMSAKKy0tLS0t LS0tLS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIG5vdygpIEFTIHJlZl90c191 cGQxIFxnc2V0CitTRUxFQ1QgcGdfc2xlZXAoMC4xKTsKKyBwZ19zbGVlcCAKKy0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIDIgQVMgIlNUQVRTX1VQRDIiOworIFNUQVRTX1VQRDIgCist LS0tLS0tLS0tLS0KKyAgICAgICAgICAyCisoMSByb3cpCisKK1NFTEVDVCBub3coKSBBUyByZWZf dHNfdXBkMiBcZ3NldAorLS0gdmVyaWZ5IHN0YXRzX2xhc3RfdXBkYXRlZCBpcyBzZXQgYW5kIHVw ZGF0ZWQKK1NFTEVDVAorICAgIHF1ZXJ5LAorICAgIHN0YXRzX2xhc3RfdXBkYXRlZCBJUyBOT1Qg TlVMTCBhcyBoYXNfdHMsCisgICAgc3RhdHNfbGFzdF91cGRhdGVkID49IDoncmVmX3RzX3VwZDEn IGFzIGFmdGVyX3JlZjEsCisgICAgc3RhdHNfc2luY2UgPD0gc3RhdHNfbGFzdF91cGRhdGVkIGFz IGFmdGVyX3N0YXRzX3NpbmNlCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkg TElLRSAnJVNUQVRTX1VQRCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyBxdWVyeSB8 IGhhc190cyB8IGFmdGVyX3JlZjEgfCBhZnRlcl9zdGF0c19zaW5jZSAKKy0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIGV4ZWN1 dGUgYWdhaW4gYW5kIHZlcmlmeSB1cGRhdGUKK1NFTEVDVCBwZ19zbGVlcCgwLjEpOworIHBnX3Ns ZWVwIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgMSBBUyAiU1RBVFNfVVBEMSI7 CisgU1RBVFNfVVBEMSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VM RUNUIG5vdygpIEFTIHJlZl90c191cGQzIFxnc2V0CitTRUxFQ1QKKyAgICBxdWVyeSwKKyAgICBz dGF0c19sYXN0X3VwZGF0ZWQgPj0gOidyZWZfdHNfdXBkMycgYXMgdXBkYXRlZAorRlJPTSBwZ19z dGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVTVEFUU19VUEQxJSc7CisgcXVlcnkg fCB1cGRhdGVkIAorLS0tLS0tLSstLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIHRlc3QgZmlsdGVy aW5nIChtb25pdG9yaW5nIHVzZSBjYXNlKQorU0VMRUNUIGNvdW50KCopIGFzIGZpbHRlcmVkX2Nv dW50CitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgc3RhdHNfbGFzdF91cGRhdGVkID49 IDoncmVmX3RzX3VwZDInCisgIEFORCBxdWVyeSBMSUtFICclU1RBVFNfVVBEJSc7CisgZmlsdGVy ZWRfY291bnQgCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDAKKygxIHJvdykKKwor LS0gbWlubWF4IHJlc2V0IHNob3VsZCBub3QgYWZmZWN0IHN0YXRzX2xhc3RfdXBkYXRlZAorU0VM RUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgwLCAwLCBxdWVyeWlkLCB0cnVlKQorRlJPTSBw Z19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVTVEFUU19VUEQxJScgXGdzZXQK K25vIHJvd3MgcmV0dXJuZWQgZm9yIFxnc2V0CitTRUxFQ1QKKyAgICBxdWVyeSwKKyAgICBzdGF0 c19sYXN0X3VwZGF0ZWQgPj0gOidyZWZfdHNfdXBkMycgYXMgdHNfcHJlc2VydmVkCitGUk9NIHBn X3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJVNUQVRTX1VQRDElJzsKKyBxdWVy eSB8IHRzX3ByZXNlcnZlZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKIC0t IENsZWFudXAKIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBB UyB0OwogIHQgCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9tZXNvbi5i dWlsZCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL21lc29uLmJ1aWxkCmluZGV4IDlkNzhj Yjg4YjdkLi43NzE0ODk0OWMwZCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvbWVzb24uYnVp bGQKQEAgLTIxLDYgKzIxLDcgQEAgY29udHJpYl90YXJnZXRzICs9IHBnX3N0YXRfc3RhdGVtZW50 cwogaW5zdGFsbF9kYXRhKAogICAncGdfc3RhdF9zdGF0ZW1lbnRzLmNvbnRyb2wnLAogICAncGdf c3RhdF9zdGF0ZW1lbnRzLS0xLjQuc3FsJywKKyAgJ3BnX3N0YXRfc3RhdGVtZW50cy0tMS4xMy0t MS4xNC5zcWwnLAogICAncGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjEyLS0xLjEzLnNxbCcsCiAgICdw Z19zdGF0X3N0YXRlbWVudHMtLTEuMTEtLTEuMTIuc3FsJywKICAgJ3BnX3N0YXRfc3RhdGVtZW50 cy0tMS4xMC0tMS4xMS5zcWwnLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjEzLS0xLjE0LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy0tMS4xMy0tMS4xNC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVhYWQ5YmY0YTBiCi0tLSAvZGV2L251bGwKKysr IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjEzLS0x LjE0LnNxbApAQCAtMCwwICsxLDc5IEBACisvKiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMtLTEuMTMtLTEuMTQuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNj cmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBBTFRFUiBFWFRFTlNJT04K K1xlY2hvIFVzZSAiQUxURVIgRVhURU5TSU9OIHBnX3N0YXRfc3RhdGVtZW50cyBVUERBVEUgVE8g JzEuMTQnIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLyogRmlyc3Qgd2UgaGF2ZSB0byBy ZW1vdmUgdGhlbSBmcm9tIHRoZSBleHRlbnNpb24gKi8KK0FMVEVSIEVYVEVOU0lPTiBwZ19zdGF0 X3N0YXRlbWVudHMgRFJPUCBWSUVXIHBnX3N0YXRfc3RhdGVtZW50czsKK0FMVEVSIEVYVEVOU0lP TiBwZ19zdGF0X3N0YXRlbWVudHMgRFJPUCBGVU5DVElPTiBwZ19zdGF0X3N0YXRlbWVudHMoYm9v bGVhbik7CisKKy8qIFRoZW4gd2UgY2FuIGRyb3AgdGhlbSAqLworRFJPUCBWSUVXIHBnX3N0YXRf c3RhdGVtZW50czsKK0RST1AgRlVOQ1RJT04gcGdfc3RhdF9zdGF0ZW1lbnRzKGJvb2xlYW4pOwor CisvKiBOb3cgcmVkZWZpbmUgKi8KK0NSRUFURSBGVU5DVElPTiBwZ19zdGF0X3N0YXRlbWVudHMo SU4gc2hvd3RleHQgYm9vbGVhbiwKKyAgICBPVVQgdXNlcmlkIG9pZCwKKyAgICBPVVQgZGJpZCBv aWQsCisgICAgT1VUIHRvcGxldmVsIGJvb2wsCisgICAgT1VUIHF1ZXJ5aWQgYmlnaW50LAorICAg IE9VVCBxdWVyeSB0ZXh0LAorICAgIE9VVCBwbGFucyBpbnQ4LAorICAgIE9VVCB0b3RhbF9wbGFu X3RpbWUgZmxvYXQ4LAorICAgIE9VVCBtaW5fcGxhbl90aW1lIGZsb2F0OCwKKyAgICBPVVQgbWF4 X3BsYW5fdGltZSBmbG9hdDgsCisgICAgT1VUIG1lYW5fcGxhbl90aW1lIGZsb2F0OCwKKyAgICBP VVQgc3RkZGV2X3BsYW5fdGltZSBmbG9hdDgsCisgICAgT1VUIGNhbGxzIGludDgsCisgICAgT1VU IHRvdGFsX2V4ZWNfdGltZSBmbG9hdDgsCisgICAgT1VUIG1pbl9leGVjX3RpbWUgZmxvYXQ4LAor ICAgIE9VVCBtYXhfZXhlY190aW1lIGZsb2F0OCwKKyAgICBPVVQgbWVhbl9leGVjX3RpbWUgZmxv YXQ4LAorICAgIE9VVCBzdGRkZXZfZXhlY190aW1lIGZsb2F0OCwKKyAgICBPVVQgcm93cyBpbnQ4 LAorICAgIE9VVCBzaGFyZWRfYmxrc19oaXQgaW50OCwKKyAgICBPVVQgc2hhcmVkX2Jsa3NfcmVh ZCBpbnQ4LAorICAgIE9VVCBzaGFyZWRfYmxrc19kaXJ0aWVkIGludDgsCisgICAgT1VUIHNoYXJl ZF9ibGtzX3dyaXR0ZW4gaW50OCwKKyAgICBPVVQgbG9jYWxfYmxrc19oaXQgaW50OCwKKyAgICBP VVQgbG9jYWxfYmxrc19yZWFkIGludDgsCisgICAgT1VUIGxvY2FsX2Jsa3NfZGlydGllZCBpbnQ4 LAorICAgIE9VVCBsb2NhbF9ibGtzX3dyaXR0ZW4gaW50OCwKKyAgICBPVVQgdGVtcF9ibGtzX3Jl YWQgaW50OCwKKyAgICBPVVQgdGVtcF9ibGtzX3dyaXR0ZW4gaW50OCwKKyAgICBPVVQgc2hhcmVk X2Jsa19yZWFkX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgZmxv YXQ4LAorICAgIE9VVCBsb2NhbF9ibGtfcmVhZF90aW1lIGZsb2F0OCwKKyAgICBPVVQgbG9jYWxf YmxrX3dyaXRlX3RpbWUgZmxvYXQ4LAorICAgIE9VVCB0ZW1wX2Jsa19yZWFkX3RpbWUgZmxvYXQ4 LAorICAgIE9VVCB0ZW1wX2Jsa193cml0ZV90aW1lIGZsb2F0OCwKKyAgICBPVVQgd2FsX3JlY29y ZHMgaW50OCwKKyAgICBPVVQgd2FsX2ZwaSBpbnQ4LAorICAgIE9VVCB3YWxfYnl0ZXMgbnVtZXJp YywKKyAgICBPVVQgd2FsX2J1ZmZlcnNfZnVsbCBpbnQ4LAorICAgIE9VVCBqaXRfZnVuY3Rpb25z IGludDgsCisgICAgT1VUIGppdF9nZW5lcmF0aW9uX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBqaXRf aW5saW5pbmdfY291bnQgaW50OCwKKyAgICBPVVQgaml0X2lubGluaW5nX3RpbWUgZmxvYXQ4LAor ICAgIE9VVCBqaXRfb3B0aW1pemF0aW9uX2NvdW50IGludDgsCisgICAgT1VUIGppdF9vcHRpbWl6 YXRpb25fdGltZSBmbG9hdDgsCisgICAgT1VUIGppdF9lbWlzc2lvbl9jb3VudCBpbnQ4LAorICAg IE9VVCBqaXRfZW1pc3Npb25fdGltZSBmbG9hdDgsCisgICAgT1VUIGppdF9kZWZvcm1fY291bnQg aW50OCwKKyAgICBPVVQgaml0X2RlZm9ybV90aW1lIGZsb2F0OCwKKyAgICBPVVQgcGFyYWxsZWxf d29ya2Vyc190b19sYXVuY2ggaW50OCwKKyAgICBPVVQgcGFyYWxsZWxfd29ya2Vyc19sYXVuY2hl ZCBpbnQ4LAorICAgIE9VVCBnZW5lcmljX3BsYW5fY2FsbHMgaW50OCwKKyAgICBPVVQgY3VzdG9t X3BsYW5fY2FsbHMgaW50OCwKKyAgICBPVVQgc3RhdHNfc2luY2UgdGltZXN0YW1wIHdpdGggdGlt ZSB6b25lLAorICAgIE9VVCBtaW5tYXhfc3RhdHNfc2luY2UgdGltZXN0YW1wIHdpdGggdGltZSB6 b25lLAorICAgIE9VVCBzdGF0c19sYXN0X3VwZGF0ZWQgdGltZXN0YW1wIHdpdGggdGltZSB6b25l CispCitSRVRVUk5TIFNFVE9GIHJlY29yZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19zdGF0 X3N0YXRlbWVudHNfMV8xNCcKK0xBTkdVQUdFIEMgU1RSSUNUIFZPTEFUSUxFIFBBUkFMTEVMIFNB RkU7CisKK0NSRUFURSBWSUVXIHBnX3N0YXRfc3RhdGVtZW50cyBBUworICBTRUxFQ1QgKiBGUk9N IHBnX3N0YXRfc3RhdGVtZW50cyh0cnVlKTsKKworR1JBTlQgU0VMRUNUIE9OIHBnX3N0YXRfc3Rh dGVtZW50cyBUTyBQVUJMSUM7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0 YXRfc3RhdGVtZW50cy5jCmluZGV4IDRhNDI3NTMzYmQ4Li4yMTNlNDQ5MjhkYyAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTg2LDcg Kzg2LDcgQEAgUEdfTU9EVUxFX01BR0lDX0VYVCgKICNkZWZpbmUgUEdTU19URVhUX0ZJTEUJUEdf U1RBVF9UTVBfRElSICIvcGdzc19xdWVyeV90ZXh0cy5zdGF0IgogCiAvKiBNYWdpYyBudW1iZXIg aWRlbnRpZnlpbmcgdGhlIHN0YXRzIGZpbGUgZm9ybWF0ICovCi1zdGF0aWMgY29uc3QgdWludDMy IFBHU1NfRklMRV9IRUFERVIgPSAweDIwMjUwNzMxOworc3RhdGljIGNvbnN0IHVpbnQzMiBQR1NT X0ZJTEVfSEVBREVSID0gMHgyMDI2MDIwNTsKIAogLyogUG9zdGdyZVNRTCBtYWpvciB2ZXJzaW9u IG51bWJlciwgY2hhbmdlcyBpbiB3aGljaCBpbnZhbGlkYXRlIGFsbCBlbnRyaWVzICovCiBzdGF0 aWMgY29uc3QgdWludDMyIFBHU1NfUEdfTUFKT1JfVkVSU0lPTiA9IFBHX1ZFUlNJT05fTlVNIC8g MTAwOwpAQCAtMTE2LDYgKzExNiw3IEBAIHR5cGVkZWYgZW51bSBwZ3NzVmVyc2lvbgogCVBHU1Nf VjFfMTEsCiAJUEdTU19WMV8xMiwKIAlQR1NTX1YxXzEzLAorCVBHU1NfVjFfMTQsCiB9IHBnc3NW ZXJzaW9uOwogCiB0eXBlZGVmIGVudW0gcGdzc1N0b3JlS2luZApAQCAtMjQwLDYgKzI0MSw3IEBA IHR5cGVkZWYgc3RydWN0IHBnc3NFbnRyeQogCWludAkJCWVuY29kaW5nOwkJLyogcXVlcnkgdGV4 dCBlbmNvZGluZyAqLwogCVRpbWVzdGFtcFR6IHN0YXRzX3NpbmNlOwkvKiB0aW1lc3RhbXAgb2Yg ZW50cnkgYWxsb2NhdGlvbiAqLwogCVRpbWVzdGFtcFR6IG1pbm1heF9zdGF0c19zaW5jZTsgLyog dGltZXN0YW1wIG9mIGxhc3QgbWluL21heCB2YWx1ZXMgcmVzZXQgKi8KKwlUaW1lc3RhbXBUeiBz dGF0c19sYXN0X3VwZGF0ZWQ7IC8qIHRpbWVzdGFtcCBvZiBsYXN0IHN0YXRzIHVwZGF0ZSAoc3Rh dGVtZW50IGVuZCkgKi8KIAlzbG9ja190CQltdXRleDsJCQkvKiBwcm90ZWN0cyB0aGUgY291bnRl cnMgb25seSAqLwogfSBwZ3NzRW50cnk7CiAKQEAgLTMyNyw2ICszMjksNyBAQCBQR19GVU5DVElP Tl9JTkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50c18xXzEwKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo cGdfc3RhdF9zdGF0ZW1lbnRzXzFfMTEpOwogUEdfRlVOQ1RJT05fSU5GT19WMShwZ19zdGF0X3N0 YXRlbWVudHNfMV8xMik7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50c18x XzEzKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdF9zdGF0ZW1lbnRzXzFfMTQpOwogUEdf RlVOQ1RJT05fSU5GT19WMShwZ19zdGF0X3N0YXRlbWVudHMpOwogUEdfRlVOQ1RJT05fSU5GT19W MShwZ19zdGF0X3N0YXRlbWVudHNfaW5mbyk7CiAKQEAgLTY3Myw2ICs2NzYsNyBAQCBwZ3NzX3No bWVtX3N0YXJ0dXAodm9pZCkKIAkJZW50cnktPmNvdW50ZXJzID0gdGVtcC5jb3VudGVyczsKIAkJ ZW50cnktPnN0YXRzX3NpbmNlID0gdGVtcC5zdGF0c19zaW5jZTsKIAkJZW50cnktPm1pbm1heF9z dGF0c19zaW5jZSA9IHRlbXAubWlubWF4X3N0YXRzX3NpbmNlOworCQllbnRyeS0+c3RhdHNfbGFz dF91cGRhdGVkID0gdGVtcC5zdGF0c19sYXN0X3VwZGF0ZWQ7CiAJfQogCiAJLyogUmVhZCBnbG9i YWwgc3RhdGlzdGljcyBmb3IgcGdfc3RhdF9zdGF0ZW1lbnRzICovCkBAIC0xNDA3LDggKzE0MTEs MTcgQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwKIAkvKiBJ bmNyZW1lbnQgdGhlIGNvdW50cywgZXhjZXB0IHdoZW4ganN0YXRlIGlzIG5vdCBOVUxMICovCiAJ aWYgKCFqc3RhdGUpCiAJeworCQlUaW1lc3RhbXBUeiBzdGF0c191cGRhdGVkX2F0OworCiAJCUFz c2VydChraW5kID09IFBHU1NfUExBTiB8fCBraW5kID09IFBHU1NfRVhFQyk7CiAKKwkJLyoKKwkJ ICogQ2FsY3VsYXRlIHN0YXRlbWVudCBlbmQgdGltZSBiZWZvcmUgYWNxdWlyaW5nIHNwaW5sb2Nr LgorCQkgKiBUaGlzIGF2b2lkcyBoZWF2eSBHZXRDdXJyZW50VGltZXN0YW1wKCkgY2FsbCB3aGls ZSBob2xkaW5nIHRoZSBsb2NrLgorCQkgKi8KKwkJc3RhdHNfdXBkYXRlZF9hdCA9IEdldEN1cnJl bnRTdGF0ZW1lbnRTdGFydFRpbWVzdGFtcCgpICsgCisJCQkoVGltZXN0YW1wVHopIHJpbnQodG90 YWxfdGltZSAqIDEwMDAuMCk7CisKIAkJLyoKIAkJICogR3JhYiB0aGUgc3BpbmxvY2sgd2hpbGUg dXBkYXRpbmcgdGhlIGNvdW50ZXJzIChzZWUgY29tbWVudCBhYm91dAogCQkgKiBsb2NraW5nIHJ1 bGVzIGF0IHRoZSBoZWFkIG9mIHRoZSBmaWxlKQpAQCAtMTUxMyw2ICsxNTI2LDkgQEAgcGdzc19z dG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwKIAkJZWxzZSBpZiAocGxhbk9y aWdpbiA9PSBQTEFOX1NUTVRfQ0FDSEVfQ1VTVE9NKQogCQkJZW50cnktPmNvdW50ZXJzLmN1c3Rv bV9wbGFuX2NhbGxzKys7CiAKKwkJLyogVXBkYXRlIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3Qg c3RhdHMgdXBkYXRlICovCisJCWVudHJ5LT5zdGF0c19sYXN0X3VwZGF0ZWQgPSBzdGF0c191cGRh dGVkX2F0OworCiAJCVNwaW5Mb2NrUmVsZWFzZSgmZW50cnktPm11dGV4KTsKIAl9CiAKQEAgLTE1 ODEsNyArMTU5Nyw4IEBAIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldChQR19GVU5DVElPTl9BUkdT KQogI2RlZmluZSBQR19TVEFUX1NUQVRFTUVOVFNfQ09MU19WMV8xMQk0OQogI2RlZmluZSBQR19T VEFUX1NUQVRFTUVOVFNfQ09MU19WMV8xMgk1MgogI2RlZmluZSBQR19TVEFUX1NUQVRFTUVOVFNf Q09MU19WMV8xMwk1NAotI2RlZmluZSBQR19TVEFUX1NUQVRFTUVOVFNfQ09MUwkJCTU0CS8qIG1h eGltdW0gb2YgYWJvdmUgKi8KKyNkZWZpbmUgUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNfVjFfMTQJ NTUKKyNkZWZpbmUgUEdfU1RBVF9TVEFURU1FTlRTX0NPTFMJCQk1NQkvKiBtYXhpbXVtIG9mIGFi b3ZlICovCiAKIC8qCiAgKiBSZXRyaWV2ZSBzdGF0ZW1lbnQgc3RhdGlzdGljcy4KQEAgLTE1OTMs NiArMTYxMCwxNiBAQCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykK ICAqIGV4cGVjdGVkIEFQSSB2ZXJzaW9uIGlzIGlkZW50aWZpZWQgYnkgZW1iZWRkaW5nIGl0IGlu IHRoZSBDIG5hbWUgb2YgdGhlCiAgKiBmdW5jdGlvbi4gIFVuZm9ydHVuYXRlbHkgd2Ugd2VyZW4n dCBicmlnaHQgZW5vdWdoIHRvIGRvIHRoYXQgZm9yIDEuMS4KICAqLworRGF0dW0KK3BnX3N0YXRf c3RhdGVtZW50c18xXzE0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJYm9vbAkJc2hvd3RleHQgPSBQ R19HRVRBUkdfQk9PTCgwKTsKKworCXBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChmY2luZm8s IFBHU1NfVjFfMTQsIHNob3d0ZXh0KTsKKworCXJldHVybiAoRGF0dW0pIDA7Cit9CisKIERhdHVt CiBwZ19zdGF0X3N0YXRlbWVudHNfMV8xMyhQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTc2NSw2 ICsxNzkyLDEwIEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZv IGZjaW5mbywKIAkJCWlmIChhcGlfdmVyc2lvbiAhPSBQR1NTX1YxXzEzKQogCQkJCWVsb2coRVJS T1IsICJpbmNvcnJlY3QgbnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMiKTsKIAkJCWJyZWFrOwor CQljYXNlIFBHX1NUQVRfU1RBVEVNRU5UU19DT0xTX1YxXzE0OgorCQkJaWYgKGFwaV92ZXJzaW9u ICE9IFBHU1NfVjFfMTQpCisJCQkJZWxvZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIgb2Ygb3V0 cHV0IGFyZ3VtZW50cyIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi aW5jb3JyZWN0IG51bWJlciBvZiBvdXRwdXQgYXJndW1lbnRzIik7CiAJfQpAQCAtMTg0MCw2ICsx ODcxLDcgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvLAogCQlpbnQ2NAkJcXVlcnlpZCA9IGVudHJ5LT5rZXkucXVlcnlpZDsKIAkJVGltZXN0YW1w VHogc3RhdHNfc2luY2U7CiAJCVRpbWVzdGFtcFR6IG1pbm1heF9zdGF0c19zaW5jZTsKKwkJVGlt ZXN0YW1wVHogc3RhdHNfbGFzdF91cGRhdGVkOwogCiAJCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVv Zih2YWx1ZXMpKTsKIAkJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKQEAgLTE5MDgs MTEgKzE5NDAsMTIgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLAogCQlTcGluTG9ja1JlbGVhc2UoJmVudHJ5LT5tdXRleCk7CiAKIAkJLyoKLQkJ ICogVGhlIHNwaW5sb2NrIGlzIG5vdCByZXF1aXJlZCB3aGVuIHJlYWRpbmcgdGhlc2UgdHdvIGFz IHRoZXkgYXJlCisJCSAqIFRoZSBzcGlubG9jayBpcyBub3QgcmVxdWlyZWQgd2hlbiByZWFkaW5n IHRoZXNlIHRocmVlIGFzIHRoZXkgYXJlCiAJCSAqIGFsd2F5cyB1cGRhdGVkIHdoZW4gaG9sZGlu ZyBwZ3NzLT5sb2NrIGV4Y2x1c2l2ZWx5LgogCQkgKi8KIAkJc3RhdHNfc2luY2UgPSBlbnRyeS0+ c3RhdHNfc2luY2U7CiAJCW1pbm1heF9zdGF0c19zaW5jZSA9IGVudHJ5LT5taW5tYXhfc3RhdHNf c2luY2U7CisJCXN0YXRzX2xhc3RfdXBkYXRlZCA9IGVudHJ5LT5zdGF0c19sYXN0X3VwZGF0ZWQ7 CiAKIAkJLyogU2tpcCBlbnRyeSBpZiB1bmV4ZWN1dGVkIChpZSwgaXQncyBhIHBlbmRpbmcgInN0 aWNreSIgZW50cnkpICovCiAJCWlmIChJU19TVElDS1kodG1wKSkKQEAgLTIwMjcsNiArMjA2MCwx MCBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s CiAJCQl2YWx1ZXNbaSsrXSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0oc3RhdHNfc2luY2UpOwogCQkJ dmFsdWVzW2krK10gPSBUaW1lc3RhbXBUekdldERhdHVtKG1pbm1heF9zdGF0c19zaW5jZSk7CiAJ CX0KKwkJaWYgKGFwaV92ZXJzaW9uID49IFBHU1NfVjFfMTQpCisJCXsKKwkJCXZhbHVlc1tpKytd ID0gVGltZXN0YW1wVHpHZXREYXR1bShzdGF0c19sYXN0X3VwZGF0ZWQpOworCQl9CiAKIAkJQXNz ZXJ0KGkgPT0gKGFwaV92ZXJzaW9uID09IFBHU1NfVjFfMCA/IFBHX1NUQVRfU1RBVEVNRU5UU19D T0xTX1YxXzAgOgogCQkJCQkgYXBpX3ZlcnNpb24gPT0gUEdTU19WMV8xID8gUEdfU1RBVF9TVEFU RU1FTlRTX0NPTFNfVjFfMSA6CkBAIC0yMDM4LDYgKzIwNzUsNyBAQCBwZ19zdGF0X3N0YXRlbWVu dHNfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJCQkJCSBhcGlfdmVyc2lvbiA9 PSBQR1NTX1YxXzExID8gUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNfVjFfMTEgOgogCQkJCQkgYXBp X3ZlcnNpb24gPT0gUEdTU19WMV8xMiA/IFBHX1NUQVRfU1RBVEVNRU5UU19DT0xTX1YxXzEyIDoK IAkJCQkJIGFwaV92ZXJzaW9uID09IFBHU1NfVjFfMTMgPyBQR19TVEFUX1NUQVRFTUVOVFNfQ09M U19WMV8xMyA6CisJCQkJCSBhcGlfdmVyc2lvbiA9PSBQR1NTX1YxXzE0ID8gUEdfU1RBVF9TVEFU RU1FTlRTX0NPTFNfVjFfMTQgOgogCQkJCQkgLTEgLyogZmFpbCBpZiB5b3UgZm9yZ2V0IHRvIHVw ZGF0ZSB0aGlzIGFzc2VydCAqLyApKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8t PnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLCB2YWx1ZXMsIG51bGxzKTsKQEAgLTIxNDQsNiAr MjE4Miw3IEBAIGVudHJ5X2FsbG9jKHBnc3NIYXNoS2V5ICprZXksIFNpemUgcXVlcnlfb2Zmc2V0 LCBpbnQgcXVlcnlfbGVuLCBpbnQgZW5jb2RpbmcsCiAJCWVudHJ5LT5lbmNvZGluZyA9IGVuY29k aW5nOwogCQllbnRyeS0+c3RhdHNfc2luY2UgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAJCWVu dHJ5LT5taW5tYXhfc3RhdHNfc2luY2UgPSBlbnRyeS0+c3RhdHNfc2luY2U7CisJCWVudHJ5LT5z dGF0c19sYXN0X3VwZGF0ZWQgPSBlbnRyeS0+c3RhdHNfc2luY2U7CiAJfQogCiAJcmV0dXJuIGVu dHJ5OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0 ZW1lbnRzLmNvbnRyb2wgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuY29udHJvbAppbmRleCAyZWVlMGNlZmZhOC4uNjFhZTQxZWZjMTQgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jb250cm9sCisr KyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jb250cm9s CkBAIC0xLDUgKzEsNSBAQAogIyBwZ19zdGF0X3N0YXRlbWVudHMgZXh0ZW5zaW9uCiBjb21tZW50 ID0gJ3RyYWNrIHBsYW5uaW5nIGFuZCBleGVjdXRpb24gc3RhdGlzdGljcyBvZiBhbGwgU1FMIHN0 YXRlbWVudHMgZXhlY3V0ZWQnCi1kZWZhdWx0X3ZlcnNpb24gPSAnMS4xMycKK2RlZmF1bHRfdmVy c2lvbiA9ICcxLjE0JwogbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvcGdfc3RhdF9zdGF0ZW1l bnRzJwogcmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3Rh dGVtZW50cy9zcWwvZW50cnlfdGltZXN0YW1wLnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3NxbC9lbnRyeV90aW1lc3RhbXAuc3FsCmluZGV4IGQ2ZDMwMjdhYjRmLi5iYWU1NWZhN2Uy MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL2VudHJ5X3RpbWVz dGFtcC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL2VudHJ5X3RpbWVz dGFtcC5zcWwKQEAgLTExMCw1ICsxMTAsNTMgQEAgU0VMRUNUCiBGUk9NIHBnX3N0YXRfc3RhdGVt ZW50cwogV0hFUkUgcXVlcnkgTElLRSAnJVNUTVRUUyUnOwogCistLQorLS0gc3RhdHNfbGFzdF91 cGRhdGVkIHRpbWVzdGFtcCB0ZXN0cworLS0KKworU0VMRUNUIDEgQVMgIlNUQVRTX1VQRDEiOwor U0VMRUNUIG5vdygpIEFTIHJlZl90c191cGQxIFxnc2V0CitTRUxFQ1QgcGdfc2xlZXAoMC4xKTsK K1NFTEVDVCAyIEFTICJTVEFUU19VUEQyIjsKK1NFTEVDVCBub3coKSBBUyByZWZfdHNfdXBkMiBc Z3NldAorCistLSB2ZXJpZnkgc3RhdHNfbGFzdF91cGRhdGVkIGlzIHNldCBhbmQgdXBkYXRlZAor U0VMRUNUCisgICAgcXVlcnksCisgICAgc3RhdHNfbGFzdF91cGRhdGVkIElTIE5PVCBOVUxMIGFz IGhhc190cywKKyAgICBzdGF0c19sYXN0X3VwZGF0ZWQgPj0gOidyZWZfdHNfdXBkMScgYXMgYWZ0 ZXJfcmVmMSwKKyAgICBzdGF0c19zaW5jZSA8PSBzdGF0c19sYXN0X3VwZGF0ZWQgYXMgYWZ0ZXJf c3RhdHNfc2luY2UKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICcl U1RBVFNfVVBEJScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCistLSBleGVjdXRlIGFn YWluIGFuZCB2ZXJpZnkgdXBkYXRlCitTRUxFQ1QgcGdfc2xlZXAoMC4xKTsKK1NFTEVDVCAxIEFT ICJTVEFUU19VUEQxIjsKK1NFTEVDVCBub3coKSBBUyByZWZfdHNfdXBkMyBcZ3NldAorCitTRUxF Q1QKKyAgICBxdWVyeSwKKyAgICBzdGF0c19sYXN0X3VwZGF0ZWQgPj0gOidyZWZfdHNfdXBkMycg YXMgdXBkYXRlZAorRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVT VEFUU19VUEQxJSc7CisKKy0tIHRlc3QgZmlsdGVyaW5nIChtb25pdG9yaW5nIHVzZSBjYXNlKQor U0VMRUNUIGNvdW50KCopIGFzIGZpbHRlcmVkX2NvdW50CitGUk9NIHBnX3N0YXRfc3RhdGVtZW50 cworV0hFUkUgc3RhdHNfbGFzdF91cGRhdGVkID49IDoncmVmX3RzX3VwZDInCisgIEFORCBxdWVy eSBMSUtFICclU1RBVFNfVVBEJSc7CisKKy0tIG1pbm1heCByZXNldCBzaG91bGQgbm90IGFmZmVj dCBzdGF0c19sYXN0X3VwZGF0ZWQKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoMCwg MCwgcXVlcnlpZCwgdHJ1ZSkKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBM SUtFICclU1RBVFNfVVBEMSUnIFxnc2V0CisKK1NFTEVDVAorICAgIHF1ZXJ5LAorICAgIHN0YXRz X2xhc3RfdXBkYXRlZCA+PSA6J3JlZl90c191cGQzJyBhcyB0c19wcmVzZXJ2ZWQKK0ZST00gcGdf c3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclU1RBVFNfVVBEMSUnOworCiAtLSBD bGVhbnVwCiBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wZ3N0YXRzdGF0ZW1lbnRzLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21sCmluZGV4IGQ3NTNkZTU4MzZlLi44MzVlNWZh ZGMwOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21sCkBAIC01OTMsNiArNTkzLDE5IEBA CiAgICAgICAgPHN0cnVjdGZpZWxkPm1heF9leGVjX3RpbWU8L3N0cnVjdGZpZWxkPikKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3RhdHNfbGFzdF91cGRhdGVkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVGltZSB3aGVuIHN0YXRpc3RpY3Mgd2VyZSBsYXN0IHVwZGF0ZWQg Zm9yIHRoaXMgc3RhdGVtZW50LiBUaGlzIHJlcHJlc2VudHMKKyAgICAgICB0aGUgZW5kIHRpbWUg b2YgdGhlIG1vc3QgcmVjZW50IGV4ZWN1dGlvbiB0aGF0IGNvbXBsZXRlZC4gRm9yIG5lc3RlZAor ICAgICAgIHN0YXRlbWVudHMgKGlmIDxzdHJ1Y3RmaWVsZD50b3BsZXZlbDwvc3RydWN0ZmllbGQ+ IGlzCisgICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+KSwgdGhpcyByZWZsZWN0cyB3aGVu IHRoZSB0b3AtbGV2ZWwgc3RhdGVtZW50CisgICAgICAgY29tcGxldGVkLgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90 YWJsZT4KLS0gCjIuNTIuMAoK --0000000000001f8c95064a296c94--