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 1rsFUb-005o6h-6o for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Apr 2024 05:18:30 +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 1rsFUa-00F65C-Bl for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Apr 2024 05:18:28 +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 1rsFUZ-00F5xN-Od for pgsql-hackers@lists.postgresql.org; Thu, 04 Apr 2024 05:18:28 +0000 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rsFUW-000TZa-Q4 for pgsql-hackers@lists.postgresql.org; Thu, 04 Apr 2024 05:18:26 +0000 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-6e9ee593e76so26271a34.0 for ; Wed, 03 Apr 2024 22:18:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712207904; x=1712812704; 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=NuNJpzr6fjOPQrc3ut4xIhiL6LAKmV7I712W1MTSO6w=; b=AV6pL3N2l1pSxSlUddk0wLggNVWLJyVe+gSM9mzHB+O9ea167Pb+vlfUIHUEWPejXg R/Si4xwvEnfTH8csXFt3Z1yT/xbAqL/gUoKBTGdwleHE3u4uv5oY/kIRMqV7eshr/YDj k1dXGzJqW7PyrD5OcrE8/P0Xv79tJqpulbcIGlkG73Ew4nt3VgEht3nU4XHV1UcyoAz+ jXeHmfRRrzf3RCQFW87ZCmX5/5NhA3taJnmChw9q8xbGClbaPyJElauzk7FGnacu83D0 azj3GVkftajbThhdo3Uy8OQD+PE8pVT5Lir8h6iK9k4bWgCZ+NMxUxZEeAJxN9kGfAUn xHCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712207904; x=1712812704; 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=NuNJpzr6fjOPQrc3ut4xIhiL6LAKmV7I712W1MTSO6w=; b=qPki4a6iwisv2u4I4bpXL33qZwGQMQ5saxa934I3t5ciCY7Ib2zJllyJep1xbnIS9p UD3NzqXfV3J8FyX0RuFAsQf4ySGfSFAPXIijFv00j2RbpdQxzywPfOpPP6I7mixwaLnw z4wCstj8B3lQpSIZiwe+d81CLrN12Mw+AcRKawvo7AQMjo6wEIZ54AO8ZzWrPib69TyG TrjCPGLok8eMfkYDY2ReH1Ks4V072j/qlmI2KYhdtKxTwz5WwRtDE/aDq3KAJcDlilJy 5piZivrHrOWIVNTjH5avdQgF9+l9eDd1JjTUy4fW8iYb2LpvfHZq2Ob2xVy3GfUCKxKU 32Ig== X-Forwarded-Encrypted: i=1; AJvYcCVbibv8ht1QXpQsajuLA5J7eI8BA13Y9KipXmwDjPrSbHTBo+GH056iVMDxHvp7QsIP+nKbgRHKetvN/WrNMGo/9IGsJDAeq6omIQ2wX4JEiZpL X-Gm-Message-State: AOJu0YycIbR298deWwv1h+DFzvcow8b1/wql1wwtkxnz4CMqd3aw/KZ7 mDtL7QFj2OP0MwKgegtv159HAUt29BUW9PyHMDMhK9QRzCM7UDamXMBTsOXvL4eltevfFbq35jp TgcPBnimHB0JHW7yzr3l3vbtsRe8= X-Google-Smtp-Source: AGHT+IGrwx6yRxyfj1etvwsh2lR+BKp1Jwg3nww+u36HjpJcaf12YL8z2PnVxMxWHQMI2ES5HFu8C49E4SMmLACELcQ= X-Received: by 2002:a05:6870:56a3:b0:22e:9d40:93d9 with SMTP id p35-20020a05687056a300b0022e9d4093d9mr1426087oao.53.1712207903673; Wed, 03 Apr 2024 22:18:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Kapila Date: Thu, 4 Apr 2024 10:48:11 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Bharath Rupireddy Cc: Bertrand Drouvot , shveta malik , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e167d306153e7707" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e167d306153e7707 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 3, 2024 at 8:28=E2=80=AFPM Bharath Rupireddy wrote: > > On Wed, Apr 3, 2024 at 6:46=E2=80=AFPM Bertrand Drouvot > wrote: > > > > Just one comment on v32-0001: > > > > +# Synced slot on the standby must get its own inactive_since. > > +is( $standby1->safe_psql( > > + 'postgres', > > + "SELECT '$inactive_since_on_primary'::timestamptz <=3D = '$inactive_since_on_standby'::timestamptz AND > > + '$inactive_since_on_standby'::timestamptz <=3D = '$slot_sync_time'::timestamptz;" > > + ), > > + "t", > > + 'synchronized slot has got its own inactive_since'); > > + > > > > By using <=3D we are not testing that it must get its own inactive_sinc= e (as we > > allow them to be equal in the test). I think we should just add some us= leep() > > where appropriate and deny equality during the tests on inactive_since. > > Thanks. It looks like we can ignore the equality in all of the > inactive_since comparisons. IIUC, all the TAP tests do run with > primary and standbys on the single BF animals. And, it looks like > assigning the inactive_since timestamps to perl variables is giving > the microseconds precision level > (./tmp_check/log/regress_log_040_standby_failover_slots_sync:inactive_sin= ce > 2024-04-03 14:30:09.691648+00). FWIW, we already have some TAP and SQL > tests relying on stats_reset timestamps without equality. So, I've > left the equality for the inactive_since tests. > > > Except for the above, v32-0001 LGTM. > > Thanks. Please see the attached v33-0001 patch after removing equality > on inactive_since TAP tests. > The v33-0001 looks good to me. I have made minor changes in the comments/commit message and removed one part of the test which was a bit confusing and didn't seem to add much value. Let me know what you think of the attached? --=20 With Regards, Amit Kapila. --000000000000e167d306153e7707 Content-Type: application/octet-stream; name="v34-0001-Allow-synced-slots-to-have-their-inactive_since.patch" Content-Disposition: attachment; filename="v34-0001-Allow-synced-slots-to-have-their-inactive_since.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukscajt0 RnJvbSBmZDNhZWY1YzY3ZmIxYmEzNjFiOWQxYTcwYTQ3ZmZhZGYxMjViOGQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMyBBcHIgMjAyNCAxNDozODozOCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjM0XSBBbGxvdyBzeW5jZWQgc2xvdHMgdG8gaGF2ZSB0aGVpciBp bmFjdGl2ZV9zaW5jZS4KClRoaXMgY29tbWl0IGRvZXMgdHdvIHRoaW5nczoKMSkgTWFpbnRhaW5z IGluYWN0aXZlX3NpbmNlIGZvciBzeW5jIHNsb3RzIHdoZW5ldmVyIHRoZSBzbG90IGlzIHJlbGVh c2VkCmp1c3QgbGlrZSBhbnkgb3RoZXIgcmVndWxhciBzbG90LgoKMikgRW5zdXJlcyB0aGUgdmFs dWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IHRpbWVzdGFtcCBkdXJpbmcgdGhlIHByb21vdGlvbgpv ZiBzdGFuZGJ5IHRvIGhlbHAgY29ycmVjdGx5IGludGVycHJldCB0aGUgdGltZSBhZnRlciBwcm9t b3Rpb24uIFdob2V2ZXIKYWNxdWlyZXMgdGhlIHNsb3QgaS5lLiBtYWtlcyB0aGUgc2xvdCBhY3Rp dmUgd2lsbCByZXNldCBpdCB0byBOVUxMLgoKQXV0aG9yOiBCaGFyYXRoIFJ1cGlyZWRkeQpSZXZp ZXdlZC1ieTogQmVydHJhbmQgRHJvdXZvdCwgQW1pdCBLYXBpbGEsIFNodmV0YSBNYWxpaywgTWFz YWhpa28gU2F3YWRhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FBNGVLMUtyUEd3 ZlpWOUxZR2lkanhIZVcrcnhKPUUyVGhqWHZ3UkdMTz1pTE51bz1RQG1haWwuZ21haWwuY29tCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMajJBQ1c0YVVlLV91RlFPamRXQ0VOLXhY b0xHaG12UkZuTDhTTndfVFo1bkplK2F3QG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErVGdtb2JfVGEtdDJ0eThRcktIQkduTkxyZjRaWWN3aEdIR0ZzdVVv RnJBRUR3NHNBQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5z Z21sICAgICAgICAgICAgICAgIHwgIDcgKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Nsb3RzeW5jLmMgICAgfCA0OCArKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAyMiArKystLS0tLQogc3JjL3Rlc3QvcGVy bC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSAgICAgIHwgMzEgKysrKysrKysrKwogc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwgICAgIHwgMjYgKy0tLS0tLS0tCiAu Li4vdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsICAgICAgfCA1NiArKysrKysr KysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAzOSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9k b2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggM2M4ZGNhOGNhMy4uN2VkNjE3MTcw ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMjUzMCw2ICsyNTMwLDEzIEBAIFNFTEVDVCAq IEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAg PHBhcmE+CiAgICAgICAgIFRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUgaW5hY3Rp dmUuCiAgICAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGlmIHRoZSBzbG90IGlzIGN1cnJl bnRseSBiZWluZyB1c2VkLgorICAgICAgICBOb3RlIHRoYXQgZm9yIHNsb3RzIG9uIHRoZSBzdGFu ZGJ5IHRoYXQgYXJlIGJlaW5nIHN5bmNlZCBmcm9tIGEKKyAgICAgICAgcHJpbWFyeSBzZXJ2ZXIg KHdob3NlIDxzdHJ1Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcworICAgICAg ICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiksIHRoZQorICAgICAgICA8c3RydWN0ZmllbGQ+aW5h Y3RpdmVfc2luY2U8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgdGhlIGxhc3QKKyAgICAgICAgc3lu Y2hyb25pemF0aW9uIChzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbGRlY29kaW5n LXJlcGxpY2F0aW9uLXNsb3RzLXN5bmNocm9uaXphdGlvbiIvPikKKyAgICAgICAgdGltZS4KICAg ICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDlhYzg0N2I3ODAuLmVhNzcwOTQ0ZTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTE1MCw2ICsxNTAs NyBAQCB0eXBlZGVmIHN0cnVjdCBSZW1vdGVTbG90CiB9IFJlbW90ZVNsb3Q7CiAKIHN0YXRpYyB2 b2lkIHNsb3RzeW5jX2ZhaWx1cmVfY2FsbGJhY2soaW50IGNvZGUsIERhdHVtIGFyZyk7CitzdGF0 aWMgdm9pZCB1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpOwogCiAvKgog ICogSWYgbmVjZXNzYXJ5LCB1cGRhdGUgdGhlIGxvY2FsIHN5bmNlZCBzbG90J3MgbWV0YWRhdGEg YmFzZWQgb24gdGhlIGRhdGEKQEAgLTU4NCw2ICs1ODUsMTEgQEAgc3luY2hyb25pemVfb25lX3Ns b3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJICogb3Zlcndy aXRpbmcgJ2ludmFsaWRhdGVkJyBmbGFnIHRvIHJlbW90ZV9zbG90J3MgdmFsdWUuIFNlZQogCQkg KiBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoKSB3aGVyZSBpdCBpbnZhbGlkYXRlcyBz bG90IGRpcmVjdGx5CiAJCSAqIGlmIHRoZSBzbG90IGlzIG5vdCBhY3F1aXJlZCBieSBvdGhlciBw cm9jZXNzZXMuCisJCSAqCisJCSAqIFhYWDogSWYgaXQgZXZlciB0dXJucyBvdXQgdGhhdCBzbG90 IGFjcXVpcmUvcmVsZWFzZSBpcyBjb3N0bHkgZm9yCisJCSAqIGNhc2VzIHdoZW4gbm9uZSBvZiB0 aGUgc2xvdCBwcm9wZXJ0aWVzIGlzIGNoYW5nZWQgdGhlbiB3ZSBjYW4gZG8gYQorCQkgKiBwcmUt Y2hlY2sgdG8gZW5zdXJlIHRoYXQgYXQgbGVhc3Qgb25lIG9mIHRoZSBzbG90IHByb3BlcnRpZXMg aXMKKwkJICogY2hhbmdlZCBiZWZvcmUgYWNxdWlyaW5nIHRoZSBzbG90LgogCQkgKi8KIAkJUmVw bGljYXRpb25TbG90QWNxdWlyZShyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSk7CiAKQEAgLTEzNTUs NiArMTM2MSw0NSBAQCBSZXBsU2xvdFN5bmNXb3JrZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJQXNzZXJ0KGZhbHNlKTsKIH0KIAorLyoKKyAqIFVw ZGF0ZSB0aGUgaW5hY3RpdmVfc2luY2UgcHJvcGVydHkgZm9yIHN5bmNlZCBzbG90cy4KKyAqCisg KiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjdXJyZW50bHkgY2FsbGVkIHdoZW4gd2Ugc2h1 dGRvd24gdGhlIHNsb3Qgc3luYworICogbWFjaGluZXJ5LiBUaGlzIGhlbHBzIGNvcnJlY3RseSBp bnRlcnByZXQgdGhlIGluYWN0aXZlX3NpbmNlIGlmIHRoZSBzdGFuZGJ5CisgKiBnZXRzIHByb21v dGVkIHdpdGhvdXQgYSByZXN0YXJ0LgorICovCitzdGF0aWMgdm9pZAordXBkYXRlX3N5bmNlZF9z bG90c19pbmFjdGl2ZV9zaW5jZSh2b2lkKQoreworCVRpbWVzdGFtcFR6IG5vdyA9IDA7CisKKwkv KiBUaGUgc2xvdCBzeW5jIHdvcmtlciBtdXN0bid0IGJlIHJ1bm5pbmcgYnkgbm93ICovCisJQXNz ZXJ0KFNsb3RTeW5jQ3R4LT5waWQgPT0gSW52YWxpZFBpZCk7CisKKwlMV0xvY2tBY3F1aXJlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBtYXhfcmVwbGljYXRpb25fc2xvdHM7IGkrKykKKwl7CisJCVJlcGxpY2F0aW9uU2xvdCAq cyA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ldOworCisJCS8qIENo ZWNrIGlmIGl0IGlzIGEgc3luY2hyb25pemVkIHNsb3QgKi8KKwkJaWYgKHMtPmluX3VzZSAmJiBz LT5kYXRhLnN5bmNlZCkKKwkJeworCQkJQXNzZXJ0KFNsb3RJc0xvZ2ljYWwocykpOworCisJCQkv KiBVc2UgdGhlIHNhbWUgaW5hY3RpdmVfc2luY2UgdGltZSBmb3IgYWxsIHRoZSBzbG90cy4gKi8K KwkJCWlmIChub3cgPT0gMCkKKwkJCQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkJ CVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCQkJcy0+aW5hY3RpdmVfc2luY2UgPSBub3c7 CisJCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKwkJfQorCX0KKworCUxXTG9ja1JlbGVh c2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOworfQorCiAvKgogICogU2h1dCBkb3duIHRo ZSBzbG90IHN5bmMgd29ya2VyLgogICovCkBAIC0xMzY4LDYgKzE0MTMsNyBAQCBTaHV0RG93blNs b3RTeW5jKHZvaWQpCiAJaWYgKFNsb3RTeW5jQ3R4LT5waWQgPT0gSW52YWxpZFBpZCkKIAl7CiAJ CVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKKwkJdXBkYXRlX3N5bmNlZF9z bG90c19pbmFjdGl2ZV9zaW5jZSgpOwogCQlyZXR1cm47CiAJfQogCVNwaW5Mb2NrUmVsZWFzZSgm U2xvdFN5bmNDdHgtPm11dGV4KTsKQEAgLTE0MDAsNiArMTQ0Niw4IEBAIFNodXREb3duU2xvdFN5 bmModm9pZCkKIAl9CiAKIAlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CisK Kwl1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKCk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90LmMKaW5kZXggZDc3OGMwYjkyMS4uM2JkZGFhZTAyMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYwpAQCAtNjkwLDEzICs2OTAsMTAgQEAgUmVwbGljYXRpb25TbG90UmVsZWFzZSh2b2lk KQogCX0KIAogCS8qCi0JICogU2V0IHRoZSBsYXN0IGluYWN0aXZlIHRpbWUgYWZ0ZXIgbWFya2lu ZyB0aGUgc2xvdCBpbmFjdGl2ZS4gV2UgZG9uJ3QKLQkgKiBzZXQgaXQgZm9yIHRoZSBzbG90cyBj dXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1hcnkgdG8gdGhlCi0JICogc3RhbmRi eSBiZWNhdXNlIHN1Y2ggc2xvdHMgYXJlIHR5cGljYWxseSBpbmFjdGl2ZSBhcyBkZWNvZGluZyBp cyBub3QKLQkgKiBhbGxvd2VkIG9uIHRob3NlLgorCSAqIFNldCB0aGUgdGltZSBzaW5jZSB0aGUg c2xvdCBoYXMgYmVjb21lIGluYWN0aXZlLiBXZSBnZXQgdGhlIGN1cnJlbnQKKwkgKiB0aW1lIGJl Zm9yZWhhbmQgdG8gYXZvaWQgc3lzdGVtIGNhbGwgd2hpbGUgaG9sZGluZyB0aGUgc3BpbmxvY2su CiAJICovCi0JaWYgKCEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgc2xvdC0+ZGF0YS5zeW5jZWQp KQotCQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJbm93ID0gR2V0Q3VycmVudFRpbWVz dGFtcCgpOwogCiAJaWYgKHNsb3QtPmRhdGEucGVyc2lzdGVuY3kgPT0gUlNfUEVSU0lTVEVOVCkK IAl7CkBAIC0yMzY5LDE2ICsyMzY2LDExIEBAIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hh ciAqbmFtZSkKIAkJc2xvdC0+YWN0aXZlX3BpZCA9IDA7CiAKIAkJLyoKLQkJICogV2Ugc2V0IHRo ZSBsYXN0IGluYWN0aXZlIHRpbWUgYWZ0ZXIgbG9hZGluZyB0aGUgc2xvdCBmcm9tIHRoZSBkaXNr Ci0JCSAqIGludG8gbWVtb3J5LiBXaG9ldmVyIGFjcXVpcmVzIHRoZSBzbG90IGkuZS4gbWFrZXMg dGhlIHNsb3QgYWN0aXZlCi0JCSAqIHdpbGwgcmVzZXQgaXQuIFdlIGRvbid0IHNldCBpdCBmb3Ig dGhlIHNsb3RzIGN1cnJlbnRseSBiZWluZyBzeW5jZWQKLQkJICogZnJvbSB0aGUgcHJpbWFyeSB0 byB0aGUgc3RhbmRieSBiZWNhdXNlIHN1Y2ggc2xvdHMgYXJlIHR5cGljYWxseQotCQkgKiBpbmFj dGl2ZSBhcyBkZWNvZGluZyBpcyBub3QgYWxsb3dlZCBvbiB0aG9zZS4KKwkJICogU2V0IHRoZSB0 aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUgaW5hY3RpdmUgYWZ0ZXIgbG9hZGluZyB0aGUK KwkJICogc2xvdCBmcm9tIHRoZSBkaXNrIGludG8gbWVtb3J5LiBXaG9ldmVyIGFjcXVpcmVzIHRo ZSBzbG90IGkuZS4KKwkJICogbWFrZXMgdGhlIHNsb3QgYWN0aXZlIHdpbGwgcmVzZXQgaXQuCiAJ CSAqLwotCQlpZiAoIShSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBzbG90LT5kYXRhLnN5bmNlZCkp Ci0JCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKLQkJZWxz ZQotCQkJc2xvdC0+aW5hY3RpdmVfc2luY2UgPSAwOworCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9 IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAogCQlyZXN0b3JlZCA9IHRydWU7CiAJCWJyZWFrOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3Ny Yy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggYjA4Mjk2NjA1Yy4u NTRlMTAwOGFlNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1 c3Rlci5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCkBA IC0zMjc2LDYgKzMyNzYsMzcgQEAgc3ViIGNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieQog CiA9cG9kCiAKKz1pdGVtICRub2RlLT52YWxpZGF0ZV9zbG90X2luYWN0aXZlX3NpbmNlKHNlbGYs IHNsb3RfbmFtZSwgcmVmZXJlbmNlX3RpbWUpCisKK1ZhbGlkYXRlIGluYWN0aXZlX3NpbmNlIHZh bHVlIG9mIGEgZ2l2ZW4gcmVwbGljYXRpb24gc2xvdCBhZ2FpbnN0IHRoZSByZWZlcmVuY2UKK3Rp bWUgYW5kIHJldHVybiBpdC4KKworPWN1dAorCitzdWIgdmFsaWRhdGVfc2xvdF9pbmFjdGl2ZV9z aW5jZQoreworCW15ICgkc2VsZiwgJHNsb3RfbmFtZSwgJHJlZmVyZW5jZV90aW1lKSA9IEBfOwor CW15ICRuYW1lID0gJHNlbGYtPm5hbWU7CisKKwlteSAkaW5hY3RpdmVfc2luY2UgPSAkc2VsZi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXFxKFNFTEVDVCBpbmFjdGl2ZV9zaW5jZSBGUk9NIHBn X3JlcGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RfbmFtZScgQU5E IGluYWN0aXZlX3NpbmNlIElTIE5PVCBOVUxMOykKKwkJKTsKKworCSMgQ2hlY2sgdGhhdCB0aGUg aW5hY3RpdmVfc2luY2UgaXMgc2FuZQorCWlzKCRzZWxmLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJcXFbU0VMRUNUICckaW5hY3RpdmVfc2luY2UnOjp0aW1lc3RhbXB0eiA+IHRvX3RpbWVzdGFt cCgwKSBBTkQKKwkJCQknJGluYWN0aXZlX3NpbmNlJzo6dGltZXN0YW1wdHogPiAnJHJlZmVyZW5j ZV90aW1lJzo6dGltZXN0YW1wdHo7XQorCQkpLAorCQkndCcsCisJCSJsYXN0IGluYWN0aXZlIHRp bWUgZm9yIHNsb3QgJHNsb3RfbmFtZSBpcyB2YWxpZCBvbiBub2RlICRuYW1lIikKKwkJb3IgZGll ICJjb3VsZCBub3QgdmFsaWRhdGUgY2FwdHVyZWQgaW5hY3RpdmVfc2luY2UgZm9yIHNsb3QgJHNs b3RfbmFtZSI7CisKKwlyZXR1cm4gJGluYWN0aXZlX3NpbmNlOworfQorCis9cG9kCisKID1pdGVt ICRub2RlLT5hZHZhbmNlX3dhbChudW0pCiAKIEFkdmFuY2UgV0FMIG9mIG5vZGUgYnkgZ2l2ZW4g bnVtYmVyIG9mIHNlZ21lbnRzLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlf cmVwbHNsb3RfbGltaXQucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1p dC5wbAppbmRleCAzYjlhMzA2YThiLi45NmI2MGNlZGJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzAxOV9yZXBsc2xvdF9saW1pdC5wbApAQCAtNDQzLDcgKzQ0Myw3IEBAICRwcmltYXJ5NC0+c2Fm ZV9wc3FsKAogIyBHZXQgaW5hY3RpdmVfc2luY2UgdmFsdWUgYWZ0ZXIgdGhlIHNsb3QncyBjcmVh dGlvbi4gTm90ZSB0aGF0IHRoZSBzbG90IGlzCiAjIHN0aWxsIGluYWN0aXZlIHRpbGwgaXQncyB1 c2VkIGJ5IHRoZSBzdGFuZGJ5IGJlbG93LgogbXkgJGluYWN0aXZlX3NpbmNlID0KLQljYXB0dXJl X2FuZF92YWxpZGF0ZV9zbG90X2luYWN0aXZlX3NpbmNlKCRwcmltYXJ5NCwgJHNiNF9zbG90LCAk c2xvdF9jcmVhdGlvbl90aW1lKTsKKwkkcHJpbWFyeTQtPnZhbGlkYXRlX3Nsb3RfaW5hY3RpdmVf c2luY2UoJHNiNF9zbG90LCAkc2xvdF9jcmVhdGlvbl90aW1lKTsKIAogJHN0YW5kYnk0LT5zdGFy dDsKIApAQCAtNTAyLDcgKzUwMiw3IEBAICRwdWJsaXNoZXI0LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKICMgR2V0IGluYWN0aXZlX3NpbmNlIHZhbHVlIGFmdGVyIHRoZSBzbG90J3MgY3JlYXRpb24u IE5vdGUgdGhhdCB0aGUgc2xvdCBpcwogIyBzdGlsbCBpbmFjdGl2ZSB0aWxsIGl0J3MgdXNlZCBi eSB0aGUgc3Vic2NyaWJlciBiZWxvdy4KICRpbmFjdGl2ZV9zaW5jZSA9Ci0JY2FwdHVyZV9hbmRf dmFsaWRhdGVfc2xvdF9pbmFjdGl2ZV9zaW5jZSgkcHVibGlzaGVyNCwgJGxzdWI0X3Nsb3QsICRz bG90X2NyZWF0aW9uX3RpbWUpOworCSRwdWJsaXNoZXI0LT52YWxpZGF0ZV9zbG90X2luYWN0aXZl X3NpbmNlKCRsc3ViNF9zbG90LCAkc2xvdF9jcmVhdGlvbl90aW1lKTsKIAogJHN1YnNjcmliZXI0 LT5zdGFydDsKICRzdWJzY3JpYmVyNC0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC01NDAsMjYg KzU0MCw0IEBAIGlzKCAkcHVibGlzaGVyNC0+c2FmZV9wc3FsKAogJHB1Ymxpc2hlcjQtPnN0b3A7 CiAkc3Vic2NyaWJlcjQtPnN0b3A7CiAKLSMgQ2FwdHVyZSBhbmQgdmFsaWRhdGUgaW5hY3RpdmVf c2luY2Ugb2YgYSBnaXZlbiBzbG90Lgotc3ViIGNhcHR1cmVfYW5kX3ZhbGlkYXRlX3Nsb3RfaW5h Y3RpdmVfc2luY2UKLXsKLQlteSAoJG5vZGUsICRzbG90X25hbWUsICRzbG90X2NyZWF0aW9uX3Rp bWUpID0gQF87Ci0KLQlteSAkaW5hY3RpdmVfc2luY2UgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JCXFxKFNFTEVDVCBpbmFjdGl2ZV9zaW5jZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RzCi0JCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RfbmFtZScgQU5EIGluYWN0aXZlX3NpbmNl IElTIE5PVCBOVUxMOykKLQkJKTsKLQotCSMgQ2hlY2sgdGhhdCB0aGUgY2FwdHVyZWQgdGltZSBp cyBzYW5lCi0JaXMoICRub2RlLT5zYWZlX3BzcWwoCi0JCQkncG9zdGdyZXMnLAotCQkJcXFbU0VM RUNUICckaW5hY3RpdmVfc2luY2UnOjp0aW1lc3RhbXB0eiA+IHRvX3RpbWVzdGFtcCgwKSBBTkQK LQkJCQknJGluYWN0aXZlX3NpbmNlJzo6dGltZXN0YW1wdHogPj0gJyRzbG90X2NyZWF0aW9uX3Rp bWUnOjp0aW1lc3RhbXB0ejtdCi0JCSksCi0JCSd0JywKLQkJImxhc3QgaW5hY3RpdmUgdGltZSBm b3IgYW4gYWN0aXZlIHNsb3QgJHNsb3RfbmFtZSBpcyBzYW5lIik7Ci0KLQlyZXR1cm4gJGluYWN0 aXZlX3NpbmNlOwotfQotCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbAppbmRleCA4NjllM2Qy ZTkxLi5lYTA1ZWEyNzY5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFu ZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBf c3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCkBAIC0zNSw2ICszNSwxMyBAQCBteSAkc3Vi c2NyaWJlcjEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXIxJyk7 CiAkc3Vic2NyaWJlcjEtPmluaXQ7CiAkc3Vic2NyaWJlcjEtPnN0YXJ0OwogCisjIENhcHR1cmUg dGhlIHRpbWUgYmVmb3JlIHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0 aGUKKyMgcHJpbWFyeS4gV2UgbGF0ZXIgY2FsbCB0aGlzIHB1Ymxpc2hlciBhcyBwcmltYXJ5IGFu eXdheS4KK215ICRzbG90X2NyZWF0aW9uX3RpbWVfb25fcHJpbWFyeSA9ICRwdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgY3VycmVudF90aW1lc3RhbXA7 CitdKTsKKwogIyBDcmVhdGUgYSBzbG90IG9uIHRoZSBwdWJsaXNoZXIgd2l0aCBmYWlsb3ZlciBk aXNhYmxlZAogJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCAnaW5p dCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdsc3ViMV9zbG90Jywg J3Bnb3V0cHV0JywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7IgpAQCAtMTc0LDYgKzE4MSwxMSBAQCAk cHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKIAkiU0VMRUNUIENPVU5UKCopIEZST00gcGdfY2F0 YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCcg QU5EIGFjdGl2ZSA9ICdmJyIsCiAJMSk7CiAKKyMgQ2FwdHVyZSB0aGUgaW5hY3RpdmVfc2luY2Ug b2YgdGhlIHNsb3QgZnJvbSB0aGUgcHJpbWFyeS4gTm90ZSB0aGF0IHRoZSBzbG90CisjIHdpbGwg YmUgaW5hY3RpdmUgc2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgc3Vic2NyaXB0aW9uIGlzIGRpc2Fi bGVkLi4KK215ICRpbmFjdGl2ZV9zaW5jZV9vbl9wcmltYXJ5ID0KKwkkcHJpbWFyeS0+dmFsaWRh dGVfc2xvdF9pbmFjdGl2ZV9zaW5jZSgnbHN1YjFfc2xvdCcsICRzbG90X2NyZWF0aW9uX3RpbWVf b25fcHJpbWFyeSk7CisKICMgV2FpdCBmb3IgdGhlIHN0YW5kYnkgdG8gY2F0Y2ggdXAgc28gdGhh dCB0aGUgc3RhbmRieSBpcyBub3QgbGFnZ2luZyBiZWhpbmQKICMgdGhlIHN1YnNjcmliZXIuCiAk cHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKQEAgLTE5MCw2ICsy MDIsMTggQEAgaXMoICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAogCSJ0IiwKIAknbG9naWNhbCBzbG90 cyBoYXZlIHN5bmNlZCBhcyB0cnVlIG9uIHN0YW5kYnknKTsKIAorIyBDYXB0dXJlIHRoZSBpbmFj dGl2ZV9zaW5jZSBvZiB0aGUgc3luY2VkIHNsb3Qgb24gdGhlIHN0YW5kYnkKK215ICRpbmFjdGl2 ZV9zaW5jZV9vbl9zdGFuZGJ5ID0KKwkkc3RhbmRieTEtPnZhbGlkYXRlX3Nsb3RfaW5hY3RpdmVf c2luY2UoJ2xzdWIxX3Nsb3QnLCAkc2xvdF9jcmVhdGlvbl90aW1lX29uX3ByaW1hcnkpOworCisj IFN5bmNlZCBzbG90IG9uIHRoZSBzdGFuZGJ5IG11c3QgZ2V0IGl0cyBvd24gaW5hY3RpdmVfc2lu Y2UuCitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg JyRpbmFjdGl2ZV9zaW5jZV9vbl9wcmltYXJ5Jzo6dGltZXN0YW1wdHogPCAnJGluYWN0aXZlX3Np bmNlX29uX3N0YW5kYnknOjp0aW1lc3RhbXB0ejsiCisJKSwKKwkidCIsCisJJ3N5bmNocm9uaXpl ZCBzbG90IGhhcyBnb3QgaXRzIG93biBpbmFjdGl2ZV9zaW5jZScpOworCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHRoYXQgdGhlIHN5 bmNocm9uaXplZCBzbG90IHdpbGwgYmUgZHJvcHBlZCBpZiB0aGUgY29ycmVzcG9uZGluZyByZW1v dGUKICMgc2xvdCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIgaGFzIGJlZW4gZHJvcHBlZC4KQEAgLTIz Nyw2ICsyNjEsMTMgQEAgaXMoICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAogJHN0YW5kYnkxLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9zbG90X3dhbF9rZWVwX3NpemUgPSAtMScp OwogJHN0YW5kYnkxLT5yZWxvYWQ7CiAKKyMgQ2FwdHVyZSB0aGUgdGltZSBiZWZvcmUgdGhlIGxv Z2ljYWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVhdGVkIG9uIHRoZSBwcmltYXJ5LgorIyBOb3RlIHRo YXQgdGhlIHN1YnNjcmlwdGlvbiBjcmVhdGVzIHRoZSBzbG90IGFnYWluIG9uIHRoZSBwcmltYXJ5 LgorJHNsb3RfY3JlYXRpb25fdGltZV9vbl9wcmltYXJ5ID0gJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBjdXJyZW50X3RpbWVzdGFtcDsKK10pOwor CiAjIFRvIGVuc3VyZSB0aGF0IHJlc3RhcnRfbHNuIGhhcyBtb3ZlZCB0byBhIHJlY2VudCBXQUwg cG9zaXRpb24sIHdlIHJlLWNyZWF0ZQogIyB0aGUgc3Vic2NyaXB0aW9uIGFuZCB0aGUgbG9naWNh bCBzbG90LgogJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoCkBAIC0yNTcsNiArMjg4LDExIEBAICRw cmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAogCSJTRUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19jYXRh bG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zbG90JyBB TkQgYWN0aXZlID0gJ2YnIiwKIAkxKTsKIAorIyBDYXB0dXJlIHRoZSBpbmFjdGl2ZV9zaW5jZSBv ZiB0aGUgc2xvdCBmcm9tIHRoZSBwcmltYXJ5LiBOb3RlIHRoYXQgdGhlIHNsb3QKKyMgd2lsbCBi ZSBpbmFjdGl2ZSBzaW5jZSB0aGUgY29ycmVzcG9uZGluZyBzdWJzY3JpcHRpb24gaXMgZGlzYWJs ZWQuCiskaW5hY3RpdmVfc2luY2Vfb25fcHJpbWFyeSA9CisJJHByaW1hcnktPnZhbGlkYXRlX3Ns b3RfaW5hY3RpdmVfc2luY2UoJ2xzdWIxX3Nsb3QnLCAkc2xvdF9jcmVhdGlvbl90aW1lX29uX3By aW1hcnkpOworCiAjIFdhaXQgZm9yIHRoZSBzdGFuZGJ5IHRvIGNhdGNoIHVwIHNvIHRoYXQgdGhl IHN0YW5kYnkgaXMgbm90IGxhZ2dpbmcgYmVoaW5kCiAjIHRoZSBzdWJzY3JpYmVyLgogJHByaW1h cnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CkBAIC04MDgsOCArODQ0LDI4 IEBAICRwcmltYXJ5LT5yZWxvYWQ7CiAkc3RhbmRieTEtPnN0YXJ0OwogJHByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiAKKyMgQ2FwdHVyZSB0aGUgdGltZSBiZWZv cmUgdGhlIHN0YW5kYnkgaXMgcHJvbW90ZWQKK215ICRwcm9tb3Rpb25fdGltZV9vbl9wcmltYXJ5 ID0gJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIGN1 cnJlbnRfdGltZXN0YW1wOworXSk7CisKICRzdGFuZGJ5MS0+cHJvbW90ZTsKIAorIyBDYXB0dXJl IHRoZSBpbmFjdGl2ZV9zaW5jZSBvZiB0aGUgc3luY2VkIHNsb3QgYWZ0ZXIgdGhlIHByb21vdGlv bi4KKyMgVGhlIGV4cGVjdGF0aW9uIGhlcmUgaXMgdGhhdCB0aGUgc2xvdCBnZXRzIGl0cyBpbmFj dGl2ZV9zaW5jZSBhcyBwYXJ0IG9mIHRoZQorIyBwcm9tb3Rpb24uIFdlIGRvIHRoaXMgY2hlY2sg YmVmb3JlIHRoZSBzbG90IGlzIGVuYWJsZWQgb24gdGhlIG5ldyBwcmltYXJ5CisjIGJlbG93LCBv dGhlcndpc2UsIHRoZSBzbG90IGdldHMgYWN0aXZlIHNldHRpbmcgaW5hY3RpdmVfc2luY2UgdG8g TlVMTC4KK215ICRpbmFjdGl2ZV9zaW5jZV9vbl9uZXdfcHJpbWFyeSA9CisJJHN0YW5kYnkxLT52 YWxpZGF0ZV9zbG90X2luYWN0aXZlX3NpbmNlKCdsc3ViMV9zbG90JywgJHByb21vdGlvbl90aW1l X29uX3ByaW1hcnkpOworCitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgJyRpbmFjdGl2ZV9zaW5jZV9vbl9uZXdfcHJpbWFyeSc6OnRpbWVzdGFtcHR6 ID4gJyRpbmFjdGl2ZV9zaW5jZV9vbl9wcmltYXJ5Jzo6dGltZXN0YW1wdHoiCisJKSwKKwkidCIs CisJJ3N5bmNocm9uaXplZCBzbG90IGhhcyBnb3QgaXRzIG93biBpbmFjdGl2ZV9zaW5jZSBvbiB0 aGUgbmV3IHByaW1hcnkgYWZ0ZXIgcHJvbW90aW9uJyk7CisKICMgVXBkYXRlIHN1YnNjcmlwdGlv biB3aXRoIHRoZSBuZXcgcHJpbWFyeSdzIGNvbm5lY3Rpb24gaW5mbwogbXkgJHN0YW5kYnkxX2Nv bm5pbmZvID0gJHN0YW5kYnkxLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwogJHN1YnNj cmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLS0gCjIuMjguMC53aW5kb3dzLjEKCg== --000000000000e167d306153e7707--