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 1w8jpM-000pVv-0A for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 19:05:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8jpK-00DJnI-2p for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 19:05:07 +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 1w8jpK-00DJn4-1M for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 19:05:06 +0000 Received: from mail-oo1-xc2e.google.com ([2607:f8b0:4864:20::c2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8jpI-00000000QAY-0G2d for pgsql-hackers@postgresql.org; Fri, 03 Apr 2026 19:05:06 +0000 Received: by mail-oo1-xc2e.google.com with SMTP id 006d021491bc7-68397b9840cso7742eaf.3 for ; Fri, 03 Apr 2026 12:05:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775243101; cv=none; d=google.com; s=arc-20240605; b=POT4vimST0vDwYUiMB2nbZPupMpTpl5IPcCCnk72Yzhzf0tUZAcQg3tD2ZWTluxvGZ EvuXo1mo3JIIJMYEyIYkeAHa9H1g+YtFiTyfO1nL3N/jFsBrsC20PtJpd0OF6yvBSgiw fs7V3VESiEArAp8t+tWwfv0QM9aqwlzE8+v2jy7hwI4dbb+NPhpYhKHof1kyb7URsVIX go7MjBZGiq8al+cWngMvopH88b6yRRZu8+1rjt2iYLpHqMwcd3mMr/5hiUyChvndHNVf 5q2PFZWFI/mBCMSpgq7dKXUT+5tRtq5ZQ+P3l78RlANnZfgv4ChjJemoa/6Qptu2hbUq qPaw== 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=0Q8ogry9EbC6Q4GpC1J5045X3IVkKIWH31uz3h+qZTQ=; fh=pkReQWpbtV7HXFM1PX48X11EOfDEH8aOJXXzxy9g4RQ=; b=UoX+APbJrBRHxsyGO5nJS/Ro8FYl+4flLPCJ6UXkerEzWd4vj7TGOKLtJP+1G2Q8sn 7vJxkU4GcoMV3Wm9HFoxJC2gQ0LcAfdCNi4xnV/F7AuQRNpkwDW59u3QYxWYhcllTkYj dbWsZBfKIHz6CCDLsurZ8nziP74lTwVCWnIAydh8zLl8/WbI42nLa7FZgPDw4YSKCA7R fflpL9oh5EKB1I9LUu4wZQrgbxA6USiBBql1iYJPcsaIY139zK7iLHjdcc0UupCYVR1K xLuqjlVQiN/4fNlXhmYQw889JGM8BfBGqm2KPCFYtHVLnDniVRmkbCDDsEID5lunRgLA LHPw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775243101; x=1775847901; darn=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=0Q8ogry9EbC6Q4GpC1J5045X3IVkKIWH31uz3h+qZTQ=; b=FHE1jHhruaPHbcDEhWJHCvJk3MzH07zcnQqvTNodEq/ffmJJOj5kGfZJZaOX15yv46 Cge0bU4HCroElLmd39gcX4p7xOmyMYBXxY2dEUabeYZiJhBjtRmmkSJFc7JgOU2t7zu9 8xAUC5ffIRIydqvfeKJnOSw0HscU11yTMFAVjqAlhMdXHH4CMGDfAbdfIzSnXFqD+asZ dQm1lK9b6w7AwjEDZkunUVwS6dL1aZsjSQiv768zNJT58Rn7Qsgq3sPodqK1nMHtP8vl zvslVa8CVdUiLeZj6Hi8IxRryeSehaSWuODejtEfMhwHCyp6o08TyrJDAS8IVl7AB0Ly SChQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775243101; x=1775847901; 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=0Q8ogry9EbC6Q4GpC1J5045X3IVkKIWH31uz3h+qZTQ=; b=AD6P3o/GRl6nrjEPUrmDCxg796INvWdmc7q61Mj+cVI8x1wMNuyukjjWLng0ltGelY /EM5eIhKUATcfoXPEbcmtAL1eG8pP63z/PeZwX5JEo1h5xVUydtEwb4m82ED7ZrIayTm kIDucrP2CwbOnEaz5zm/1N+dnQHgiaP85xnuX1L0TDmk/+n4VZIyy5zrdtj7rUdoZKtG v2bO799T0yZiemK7OnRNsei/9Rigj/wvQRjBmsG6nyXMeHHJ1m5tDqwdwpmHdIocNvQ7 BrisT+B5g9fCy9WzP1fwK+GrbnkB9lEfdT8lPYuizlxIwlgwAMQL6bTwAQwISAqmR/7S WHtg== X-Forwarded-Encrypted: i=1; AJvYcCV4luq4WpHKwX5gft/ww34heKV1X0UBWAGE8GI1j5La0EoO0rFGbNarG46YBIBg2x3fZzCyeKcXy08Ifoet@postgresql.org X-Gm-Message-State: AOJu0YwLS6GVquYig3mmb/SOo3g1QLwCACoVikCtSirvUQBF5aVoAvzB w7MJ/letROunURv4QTnrdoNStzBdxe6/WK5KzOnmpkRnOTVFhUJtOgCVlqcL9sRZowhdrHB7Zk4 dWkDsVttGsfcwn2nhjo7oWr+wjx88jw0= X-Gm-Gg: ATEYQzw5fOaNR/3XiABDHpJ1yqmjzS8zV2/5a/goMtUF6dCgnlx2pMVIayhkkwG5nuD E5r53ENcD6iZhS/Rhbt+byCordBSz2fACTez7gIL8UFfXksJYyK7kO+d4Z08m+bw3BGW8f5o8yl 1gr7/mJ6n+RCcQ7W77x4l5+yfFf7oqZXsEJElXAEu/TYVZQZeimwCLu577Gm0wPdP6KiV/n/BRY 8hBSHWwtGyUIgwKDQPRQII/h4ftx7JR9y2hZoROGDImHvbTavP/zvlF66L/6rKtUdAHKC+F3z49 JVoc5g== X-Received: by 2002:a4a:ee0b:0:b0:67b:b77d:70aa with SMTP id 006d021491bc7-6821d83caf1mr2113876eaf.15.1775243101471; Fri, 03 Apr 2026 12:05:01 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Fri, 3 Apr 2026 12:04:48 -0700 X-Gm-Features: AQROBzCmMB2om8naJCMYLzPGisarGgko2DFtGLqS3qgkkPyoy8Zn0KrdV1EqL4Y Message-ID: Subject: Re: Introduce XID age based replication slot invalidation To: Masahiko Sawada Cc: Srinath Reddy Sadipiralla , SATYANARAYANA NARLAPURAM , "Hayato Kuroda (Fujitsu)" , John H , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000747e37064e92fe3b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000747e37064e92fe3b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Wed, Apr 1, 2026 at 2:21=E2=80=AFPM Bharath Rupireddy wrote: > > On Wed, Apr 1, 2026 at 12:39=E2=80=AFPM Masahiko Sawada wrote: > > > > I've reviewed the v7 patch and have some review comments: > > Thank you for reviewing the patch. > > I took the above changes into v8 and fixed a typo in using xidLimit > instead of slotXidLimit. > > Please find the attached v8 patches for further review. Thank you! Thank you, Sawada-san, for reviewing and providing some offlist comments. 1/ Included a note in the docs to say that logical replication slots are also affected by XID age GUC (similar to idle_replication_slot_timeout). 2/ Added the code to disable the XID age invalidation in pg_createsubscriber similar to timeout invalidation. Commit 72e6c08fea ensured that none of the logical replication slots get invalidated during the upgrade. (I believe the work that pg_upgrade and pg_createsubscriber do is more important, and the slots created and used by them or slots in use during those processes must not interfere with the upgrade or creating a logical replica from a standby.) 3/ Changed the max value of XID age GUC to be equal to that of vacuum failsafe age. In my opinion, the best use of max_slot_xid_age would be to set it equal to or a little less than vacuum_failsafe_age. Also added a note in the docs about this. 4/ Changed variable names for consistency. 5/ Added code to MaybeInvalidateXIDAgedSlots() to skip the slot invalidation attempt (unnecessary work) when slots are not the reason for holding back the OldestXmin. Added an equality check to see if OldestXmin is either OldestSlotXmin or OldestSlotCatalogXmin (all these OldestXXXXmins are computed from the same ComputeXidHorizons() call). This should allow us to skip the slot invalidation attempt when a backend is holding the xmin back (a long-running transaction, for example). Please find the attached v9 patches for further review. Thank you! --=20 Bharath Rupireddy Amazon Web Services: https://aws.amazon.com --000000000000747e37064e92fe3b Content-Type: application/octet-stream; name="v9-0001-Add-XID-age-based-replication-slot-invalidation.patch" Content-Disposition: attachment; filename="v9-0001-Add-XID-age-based-replication-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnj9vtxq0 RnJvbSBjNjhhMTU1Mjc5OTliMWY1MmVkNjQ4ODczYjAzODc4YTZmMWFlZDMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8cnVwaXJlZGRAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAzIEFwciAyMDI2IDE4OjI3OjE1ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 OSAxLzJdIEFkZCBYSUQgYWdlIGJhc2VkIHJlcGxpY2F0aW9uIHNsb3QgaW52YWxpZGF0aW9uCgpJ bnRyb2R1Y2UgbWF4X3Nsb3RfeGlkX2FnZSwgYSBHVUMgdGhhdCBpbnZhbGlkYXRlcyByZXBsaWNh dGlvbgpzbG90cyB3aG9zZSB4bWluIG9yIGNhdGFsb2dfeG1pbiBleGNlZWRzIHRoZSBzcGVjaWZp ZWQgYWdlLgpEaXNhYmxlZCBieSBkZWZhdWx0LgoKSWRsZSBvciBmb3Jnb3R0ZW4gcmVwbGljYXRp b24gc2xvdHMgY2FuIGhvbGQgYmFjayB2YWN1dW0sIGxlYWRpbmcKdG8gYmxvYXQgYW5kIGV2ZW50 dWFsbHkgWElEIHdyYXBhcm91bmQuIEluIHRoZSB3b3JzdCBjYXNlIHRoaXMKcmVxdWlyZXMgZHJv cHBpbmcgdGhlIHNsb3QgYW5kIHNpbmdsZS11c2VyIG1vZGUgdmFjdXVtaW5nLiBUaGlzCnNldHRp bmcgYXZvaWRzIHRoYXQgYnkgcHJvYWN0aXZlbHkgaW52YWxpZGF0aW5nIHNsb3RzIHRoYXQgaGF2 ZQpmYWxsZW4gdG9vIGZhciBiZWhpbmQuCgpJbnZhbGlkYXRpb24gY2hlY2tzIGFyZSBwZXJmb3Jt ZWQgb25jZSBwZXIgcmVsYXRpb24gZHVyaW5nIHZhY3V1bQooYm90aCB2YWN1dW0gY29tbWFuZCBh bmQgYXV0b3ZhY3V1bSksIGFuZCBhbHNvIGJ5IHRoZSBjaGVja3BvaW50ZXIKZHVyaW5nIGNoZWNr cG9pbnRzIGFuZCByZXN0YXJ0cG9pbnRzLgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICA1NCArKysrKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgNCArLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyAgICAgICAgICB8ICAxNSArKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jICAgICAgICAgICAgIHwgIDM0ICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bS5jICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jICAgICAgICAgICAgICAgIHwgMTM2ICsrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jYXJyYXkuYyAgICAgICAgICAgfCAgNjEgKysrKy0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdC5oICAgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3By b2NhcnJheS5oICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlf cmVwbHNsb3RfbGltaXQucGwgICAgIHwgMTc1ICsrKysrKysrKysrKysrKysrKwogMTYgZmlsZXMg Y2hhbmdlZCwgNTAwIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRl eCBmZGI3N2RmMGZkYi4uZDUxYTEwNjBiZWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ3NjQsNiArNDc2NCw2 MCBAQCByZXN0b3JlX2NvbW1hbmQgPSAnY29weSAiQzpcXHNlcnZlclxcYXJjaGl2ZWRpclxcJWYi ICIlcCInICAjIFdpbmRvd3MKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtc2xvdC14aWQtYWdlIiB4cmVmbGFi ZWw9Im1heF9zbG90X3hpZF9hZ2UiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3Nsb3RfeGlk X2FnZTwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4K KyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfc2xvdF94aWRfYWdlPC92YXJuYW1lPiBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBJbnZhbGlk YXRlIHJlcGxpY2F0aW9uIHNsb3RzIHdob3NlIDxzdHJ1Y3RmaWVsZD54bWluPC9zdHJ1Y3RmaWVs ZD4gYWdlCisgICAgICAgIG9yIDxzdHJ1Y3RmaWVsZD5jYXRhbG9nX3htaW48L3N0cnVjdGZpZWxk PiBhZ2UgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctcmVwbGljYXRpb24t c2xvdHMiPnBnX3JlcGxpY2F0aW9uX3Nsb3RzPC9saW5rPgorICAgICAgICB2aWV3IGhhcyBleGNl ZWRlZCB0aGUgYWdlIHNwZWNpZmllZCBieSB0aGlzIHNldHRpbmcuIFNsb3QgaW52YWxpZGF0aW9u CisgICAgICAgIGR1ZSB0byB0aGlzIGxpbWl0IG9jY3VycyBkdXJpbmcgdmFjdXVtIChib3RoIDxj b21tYW5kPlZBQ1VVTTwvY29tbWFuZD4KKyAgICAgICAgY29tbWFuZCBhbmQgYXV0b3ZhY3V1bSkg YW5kIGR1cmluZyBjaGVja3BvaW50LgorICAgICAgICBBIHZhbHVlIG9mIHplcm8gKHRoZSBkZWZh dWx0KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFVzZXJzIGNhbiBzZXQKKyAgICAgICAgdGhpcyB2 YWx1ZSBhbnl3aGVyZSBmcm9tIHplcm8gdG8gdHdvIGJpbGxpb24gdHJhbnNhY3Rpb25zLiBUaGlz IHBhcmFtZXRlcgorICAgICAgICBjYW4gb25seSBiZSBzZXQgaW4gdGhlIDxmaWxlbmFtZT5wb3N0 Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9uCisgICAgICAgIHRoZSBzZXJ2ZXIgY29t bWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGUg Y3VycmVudCBhZ2Ugb2YgYSBzbG90J3MgPGxpdGVyYWw+eG1pbjwvbGl0ZXJhbD4gYW5kCisgICAg ICAgIDxsaXRlcmFsPmNhdGFsb2dfeG1pbjwvbGl0ZXJhbD4gY2FuIGJlIG1vbml0b3JlZCBieSBh cHBseWluZyB0aGUKKyAgICAgICAgPGZ1bmN0aW9uPmFnZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIHRv IHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbnMgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9 InZpZXctcGctcmVwbGljYXRpb24tc2xvdHMiPnBnX3JlcGxpY2F0aW9uX3Nsb3RzPC9saW5rPgor ICAgICAgICB2aWV3LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBJ ZGxlIG9yIGZvcmdvdHRlbiByZXBsaWNhdGlvbiBzbG90cyBjYW4gaG9sZCBiYWNrIHZhY3V1bSwg bGVhZGluZyB0bworICAgICAgICBibG9hdCBhbmQgZXZlbnR1YWxseSB0cmFuc2FjdGlvbiBJRCB3 cmFwYXJvdW5kLiBUaGlzIHNldHRpbmcgYXZvaWRzCisgICAgICAgIHRoYXQgYnkgaW52YWxpZGF0 aW5nIHNsb3RzIHRoYXQgaGF2ZSBmYWxsZW4gdG9vIGZhciBiZWhpbmQuCisgICAgICAgIFNlZSA8 eHJlZiBsaW5rZW5kPSJyb3V0aW5lLXZhY3V1bWluZyIvPiBmb3IgbW9yZSBkZXRhaWxzLgorICAg ICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0 byBzZXQgPHZhcm5hbWU+bWF4X3Nsb3RfeGlkX2FnZTwvdmFybmFtZT4KKyAgICAgICAgdG8gYSB2 YWx1ZSBlcXVhbCB0byBvciBzbGlnaHRseSBsZXNzIHRoYW4KKyAgICAgICAgPHhyZWYgbGlua2Vu ZD0iZ3VjLXZhY3V1bS1mYWlsc2FmZS1hZ2UiLz4sIHNvIHRoYXQgdGhlIHNsb3QgaG9sZGluZyB0 aGUKKyAgICAgICAgdmFjdXVtIGJhY2sgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIHZhY3V1bSBlbnRl cnMgZmFpbHNhZmUgbW9kZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAg ICAgTm90ZSB0aGF0IHRoaXMgaW52YWxpZGF0aW9uIG1lY2hhbmlzbSBpcyBub3QgYXBwbGljYWJs ZSBmb3Igc2xvdHMKKyAgICAgICAgb24gdGhlIHN0YW5kYnkgc2VydmVyIHRoYXQgYXJlIGJlaW5n IHN5bmNlZCBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlcgorICAgICAgICAoaS5lLiwgc3RhbmRieSBz bG90cyBoYXZpbmcKKyAgICAgICAgPGxpbmsgbGlua2VuZD0idmlldy1wZy1yZXBsaWNhdGlvbi1z bG90cyI+cGdfcmVwbGljYXRpb25fc2xvdHM8L2xpbms+LjxzdHJ1Y3RmaWVsZD5zeW5jZWQ8L3N0 cnVjdGZpZWxkPgorICAgICAgICB2YWx1ZSA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPikuIFN5bmNl ZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8KKyAgICAgICAgYmUgaW5hY3RpdmUgYmVj YXVzZSB0aGV5IGRvbid0IHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyB0byBwcm9kdWNlCisgICAg ICAgIGNoYW5nZXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92 YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXdhbC1zZW5kZXItdGlt ZW91dCIgeHJlZmxhYmVsPSJ3YWxfc2VuZGVyX3RpbWVvdXQiPgogICAgICAgPHRlcm0+PHZhcm5h bWU+d2FsX3NlbmRlcl90aW1lb3V0PC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAg ICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXgg MjNiMjY4MjczYjkuLmE4NjVhNWU2YzI4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTI2NDksNyArMjY0OSw5IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAg IDxwYXJhPgogICAgIExvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgYXJlIGFsc28gYWZmZWN0ZWQg YnkKLSAgICA8bGluayBsaW5rZW5kPSJndWMtaWRsZS1yZXBsaWNhdGlvbi1zbG90LXRpbWVvdXQi Pjx2YXJuYW1lPmlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4u CisgICAgPGxpbmsgbGlua2VuZD0iZ3VjLWlkbGUtcmVwbGljYXRpb24tc2xvdC10aW1lb3V0Ij48 dmFybmFtZT5pZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dDwvdmFybmFtZT48L2xpbms+Cisg ICAgYW5kCisgICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1zbG90LXhpZC1hZ2UiPjx2YXJuYW1l Pm1heF9zbG90X3hpZF9hZ2U8L3Zhcm5hbWU+PC9saW5rPi4KICAgIDwvcGFyYT4KIAogICAgPHBh cmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggOWVlMWEyYmZjNmEuLjFhNTA3YjQzMGY5IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0zMTAyLDYgKzMxMDIsMTQgQEAgU0VMRUNUICogRlJP TSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLWlkbGUtcmVwbGljYXRpb24tc2xvdC10aW1lb3V0Ii8+IGR1cmF0 aW9uLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8bGl0ZXJhbD54aWRfYWdlZDwvbGl0 ZXJhbD4gbWVhbnMgdGhhdCB0aGUgc2xvdCdzCisgICAgICAgICAgPGxpdGVyYWw+eG1pbjwvbGl0 ZXJhbD4gb3IgPGxpdGVyYWw+Y2F0YWxvZ194bWluPC9saXRlcmFsPgorICAgICAgICAgIGhhcyBy ZWFjaGVkIHRoZSBhZ2Ugc3BlY2lmaWVkIGJ5CisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3Vj LW1heC1zbG90LXhpZC1hZ2UiLz4gcGFyYW1ldGVyLgorICAgICAgICAgPC9wYXJhPgorICAgICAg ICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDg4 YzcxY2Q4NWI2Li5iZjA0ODE2NzY3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMTQ3LDYgKzE0Nyw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9y dGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZnJlZXNwYWNlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s YXRjaC5oIgpAQCAtNzk5LDYgKzgwMCwyMCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVs LCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkgKiB0byBpbmNyZWFzZSB0aGUgbnVtYmVy IG9mIGRlYWQgdHVwbGVzIGl0IGNhbiBwcnVuZSBhd2F5LikKIAkgKi8KIAl2YWNyZWwtPmFnZ3Jl c3NpdmUgPSB2YWN1dW1fZ2V0X2N1dG9mZnMocmVsLCBwYXJhbXMsICZ2YWNyZWwtPmN1dG9mZnMp OworCisJLyogVHJ5IHRvIGludmFsaWRhdGUgWElELWFnZWQgcmVwbGljYXRpb24gc2xvdHMgKi8K KwlpZiAoTWF5YmVJbnZhbGlkYXRlWElEQWdlZFNsb3RzKHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RY bWluLAorCQkJCQkJCQkJdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFNsb3RYbWluLAorCQkJCQkJCQkJ dmFjcmVsLT5jdXRvZmZzLk9sZGVzdFNsb3RDYXRhbG9nWG1pbikpCisJeworCQkvKgorCQkgKiBT b21lIHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZDsgcmUtY29tcHV0ZSB0aGUgdmFjdXVtIGN1 dG9mZnMgYW5kCisJCSAqIGFnZ3Jlc2l2ZW5lc3MuCisJCSAqLworCQl2YWNyZWwtPmFnZ3Jlc3Np dmUgPSB2YWN1dW1fZ2V0X2N1dG9mZnMocmVsLCBwYXJhbXMsCisJCQkJCQkJCQkJCQkmdmFjcmVs LT5jdXRvZmZzKTsKKwl9CisKIAl2YWNyZWwtPnJlbF9wYWdlcyA9IG9yaWdfcmVsX3BhZ2VzID0g UmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhyZWwpOwogCXZhY3JlbC0+dmlzdGVzdCA9IEdsb2Jh bFZpc1Rlc3RGb3IocmVsKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDJjMWM2 Zjg4Yjc0Li5lYWM3MzA5MTE3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNzAx OSw2ICs3MDE5LDggQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJVmlydHVhbFRyYW5z YWN0aW9uSWQgKnZ4aWRzOwogCWludAkJCW52eGlkczsKIAlpbnQJCQlvbGRYTG9nQWxsb3dlZCA9 IDA7CisJdWludDMyCQlzbG90SW52YWxpZGF0aW9uQ2F1c2VzOworCVRyYW5zYWN0aW9uSWQgc2xv dFhpZExpbWl0OwogCiAJLyoKIAkgKiBBbiBlbmQtb2YtcmVjb3ZlcnkgY2hlY2twb2ludCBpcyBy ZWFsbHkgYSBzaHV0ZG93biBjaGVja3BvaW50LCBqdXN0CkBAIC03NDQ3LDkgKzc0NDksMjAgQEAg Q3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJICovCiAJWExCeXRlVG9TZWcoUmVkb1JlY1B0 ciwgX2xvZ1NlZ05vLCB3YWxfc2VnbWVudF9zaXplKTsKIAlLZWVwTG9nU2VnKHJlY3B0ciwgJl9s b2dTZWdObyk7Ci0JaWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5W QUxfV0FMX1JFTU9WRUQgfCBSU19JTlZBTF9JRExFX1RJTUVPVVQsCisKKwlzbG90SW52YWxpZGF0 aW9uQ2F1c2VzID0gUlNfSU5WQUxfV0FMX1JFTU9WRUQgfCBSU19JTlZBTF9JRExFX1RJTUVPVVQ7 CisJc2xvdFhpZExpbWl0ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJaWYgKG1heF9zbG90X3hp ZF9hZ2UgPiAwKQorCXsKKwkJc2xvdEludmFsaWRhdGlvbkNhdXNlcyB8PSBSU19JTlZBTF9YSURf QUdFOworCQlzbG90WGlkTGltaXQgPSBUcmFuc2FjdGlvbklkUmV0cmVhdGVkQnkoUmVhZE5leHRU cmFuc2FjdGlvbklkKCksCisJCQkJCQkJCQkJCQltYXhfc2xvdF94aWRfYWdlKTsKKwl9CisKKwlp ZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhzbG90SW52YWxpZGF0aW9uQ2F1 c2VzLAogCQkJCQkJCQkJCSAgIF9sb2dTZWdObywgSW52YWxpZE9pZCwKLQkJCQkJCQkJCQkgICBJ bnZhbGlkVHJhbnNhY3Rpb25JZCkpCisJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQs CisJCQkJCQkJCQkJICAgc2xvdFhpZExpbWl0KSkKIAl7CiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMg aGF2ZSBiZWVuIGludmFsaWRhdGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKQEAgLTc3 MzAsNiArNzc0Myw4IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJWExvZ1JlY1B0 cgllbmRwdHI7CiAJWExvZ1NlZ05vCV9sb2dTZWdObzsKIAlUaW1lc3RhbXBUeiB4dGltZTsKKwl1 aW50MzIJCXNsb3RJbnZhbGlkYXRpb25DYXVzZXM7CisJVHJhbnNhY3Rpb25JZCBzbG90WGlkTGlt aXQ7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNrcG9pbnQvcmVzdGFydHBvaW50IGNhbm5vdCBoYXBw ZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8IE15QmFja2VuZFR5cGUgPT0gQl9D SEVDS1BPSU5URVIpOwpAQCAtNzkwNCw5ICs3OTE5LDE5IEBAIENyZWF0ZVJlc3RhcnRQb2ludChp bnQgZmxhZ3MpCiAKIAlJTkpFQ1RJT05fUE9JTlQoInJlc3RhcnRwb2ludC1iZWZvcmUtc2xvdC1p bnZhbGlkYXRpb24iLCBOVUxMKTsKIAotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlv blNsb3RzKFJTX0lOVkFMX1dBTF9SRU1PVkVEIHwgUlNfSU5WQUxfSURMRV9USU1FT1VULAorCXNs b3RJbnZhbGlkYXRpb25DYXVzZXMgPSBSU19JTlZBTF9XQUxfUkVNT1ZFRCB8IFJTX0lOVkFMX0lE TEVfVElNRU9VVDsKKwlzbG90WGlkTGltaXQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlpZiAo bWF4X3Nsb3RfeGlkX2FnZSA+IDApCisJeworCQlzbG90SW52YWxpZGF0aW9uQ2F1c2VzIHw9IFJT X0lOVkFMX1hJRF9BR0U7CisJCXNsb3RYaWRMaW1pdCA9IFRyYW5zYWN0aW9uSWRSZXRyZWF0ZWRC eShSZWFkTmV4dFRyYW5zYWN0aW9uSWQoKSwKKwkJCQkJCQkJCQkJCW1heF9zbG90X3hpZF9hZ2Up OworCX0KKworCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKHNsb3RJbnZh bGlkYXRpb25DYXVzZXMsCiAJCQkJCQkJCQkJICAgX2xvZ1NlZ05vLCBJbnZhbGlkT2lkLAotCQkJ CQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkKSkKKwkJCQkJCQkJCQkgICBJbnZhbGlkVHJh bnNhY3Rpb25JZCwKKwkJCQkJCQkJCQkgICBzbG90WGlkTGltaXQpKQogCXsKIAkJLyoKIAkJICog U29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2Vn bWVudApAQCAtODc3MCw2ICs4Nzk1LDcgQEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCQkJCSAqLwogCQkJCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNf SU5WQUxfV0FMX0xFVkVMLAogCQkJCQkJCQkJCQkJICAgMCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJ CQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkLAogCQkJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5z YWN0aW9uSWQpOwogCQkJfQogCQkJZWxzZSBpZiAoc3luY19yZXBsaWNhdGlvbl9zbG90cykKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMKaW5kZXggMGVkMzYzZDFjODUuLjIyNDNhN2RjYjgwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwpAQCAtMTEzMyw3ICsxMTMzLDEwIEBAIHZhY3V1bV9nZXRfY3V0b2ZmcyhSZWxh dGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCSAqIHRoYXQgb25seSBvbmUg dmFjdXVtIHByb2Nlc3MgY2FuIGJlIHdvcmtpbmcgb24gYSBwYXJ0aWN1bGFyIHRhYmxlIGF0CiAJ ICogYW55IHRpbWUsIGFuZCB0aGF0IGVhY2ggdmFjdXVtIGlzIGFsd2F5cyBhbiBpbmRlcGVuZGVu dCB0cmFuc2FjdGlvbi4KIAkgKi8KLQljdXRvZmZzLT5PbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9u UmVtb3ZhYmxlVHJhbnNhY3Rpb25JZChyZWwpOworCWN1dG9mZnMtPk9sZGVzdFhtaW4gPQorCQlH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkV2l0aFNsb3RYaWRzKHJlbCwKKwkJCQkJ CQkJCQkJCQkgICAmY3V0b2Zmcy0+T2xkZXN0U2xvdFhtaW4sCisJCQkJCQkJCQkJCQkJICAgJmN1 dG9mZnMtPk9sZGVzdFNsb3RDYXRhbG9nWG1pbik7CiAKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElz Tm9ybWFsKGN1dG9mZnMtPk9sZGVzdFhtaW4pKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4 IGE5MDkyZmMyMzgyLi43MTJmNTM1MDkwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMTE3 LDYgKzExNyw3IEBAIHN0YXRpYyBjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1c2VNYXAgU2xvdElu dmFsaWRhdGlvbkNhdXNlc1tdID0gewogCXtSU19JTlZBTF9IT1JJWk9OLCAicm93c19yZW1vdmVk In0sCiAJe1JTX0lOVkFMX1dBTF9MRVZFTCwgIndhbF9sZXZlbF9pbnN1ZmZpY2llbnQifSwKIAl7 UlNfSU5WQUxfSURMRV9USU1FT1VULCAiaWRsZV90aW1lb3V0In0sCisJe1JTX0lOVkFMX1hJRF9B R0UsICJ4aWRfYWdlZCJ9LAogfTsKIAogLyoKQEAgLTE1OCw2ICsxNTksMTIgQEAgaW50CQkJbWF4 X3JlcGxpY2F0aW9uX3Nsb3RzID0gMTA7IC8qIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZXBsaWNh dGlvbgogICovCiBpbnQJCQlpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dF9zZWNzID0gMDsK IAorLyoKKyAqIEludmFsaWRhdGUgcmVwbGljYXRpb24gc2xvdHMgdGhhdCBoYXZlIHhtaW4gb3Ig Y2F0YWxvZ194bWluIG9sZGVyCisgKiB0aGFuIHRoZSBzcGVjaWZpZWQgYWdlOyAnMCcgZGlzYWJs ZXMgaXQuCisgKi8KK2ludAkJCW1heF9zbG90X3hpZF9hZ2UgPSAwOworCiAvKgogICogVGhpcyBH VUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMg dGhhdAogICogbG9naWNhbCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yLgpAQCAt MTc4MCw3ICsxNzg3LDEwIEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90 SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCSAgIFhMb2dSZWNQdHIgcmVzdGFydF9sc24s CiAJCQkJCSAgIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJCQkgICBUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkgICBsb25nIHNsb3RfaWRsZV9zZWNvbmRzKQor CQkJCQkgICBsb25nIHNsb3RfaWRsZV9zZWNvbmRzLAorCQkJCQkgICBUcmFuc2FjdGlvbklkIHht aW4sCisJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY2F0YWxvZ194bWluLAorCQkJCQkgICBUcmFuc2Fj dGlvbklkIHhpZExpbWl0KQogewogCVN0cmluZ0luZm9EYXRhIGVycl9kZXRhaWw7CiAJU3RyaW5n SW5mb0RhdGEgZXJyX2hpbnQ7CkBAIC0xODI1LDYgKzE4MzUsMjkgQEAgUmVwb3J0U2xvdEludmFs aWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJCQkJ ICJpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCIpOwogCQkJCWJyZWFrOwogCQkJfQorCisJ CWNhc2UgUlNfSU5WQUxfWElEX0FHRToKKwkJCXsKKwkJCQlUcmFuc2FjdGlvbklkIHNsb3RfeGlk ID0gVHJhbnNhY3Rpb25JZElzVmFsaWQoeG1pbikgPyB4bWluIDogY2F0YWxvZ194bWluOworCQkJ CWludDMyCQlleGNlZWRlZF9ieSA9IChpbnQzMikgKHhpZExpbWl0IC0gc2xvdF94aWQpOworCQkJ CWludDMyCQlzbG90X2FnZSA9IChpbnQzMikgbWF4X3Nsb3RfeGlkX2FnZSArIGV4Y2VlZGVkX2J5 OworCisJCQkJLyogRWl0aGVyIHRoZSBzbG90J3MgeG1pbiBvciBjYXRhbG9nX3htaW4gbXVzdCBi ZSB2YWxpZCAqLworCQkJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X3hpZCkpOwor CisJCQkJLyogdHJhbnNsYXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLworCQkJCWFw cGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsCisJCQkJCQkJCSBUcmFuc2FjdGlvbklkSXNWYWxp ZCh4bWluKQorCQkJCQkJCQkgPyBfKCJUaGUgc2xvdCdzIHhtaW4gYWdlIG9mICVkIGV4Y2VlZHMg dGhlIGNvbmZpZ3VyZWQgXCIlc1wiIG9mICVkIGJ5ICVkIHRyYW5zYWN0aW9ucyIpCisJCQkJCQkJ CSA6IF8oIlRoZSBzbG90J3MgY2F0YWxvZyB4bWluIGFnZSBvZiAlZCBleGNlZWRzIHRoZSBjb25m aWd1cmVkIFwiJXNcIiBvZiAlZCBieSAlZCB0cmFuc2FjdGlvbnMiKSwKKwkJCQkJCQkJIHNsb3Rf YWdlLCAibWF4X3Nsb3RfeGlkX2FnZSIsIG1heF9zbG90X3hpZF9hZ2UsIGV4Y2VlZGVkX2J5KTsK KworCQkJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5hbWUgKi8KKwkJCQlh cHBlbmRTdHJpbmdJbmZvKCZlcnJfaGludCwgXygiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2Ug XCIlc1wiLiIpLAorCQkJCQkJCQkgIm1heF9zbG90X3hpZF9hZ2UiKTsKKwkJCQlicmVhazsKKwkJ CX0KKwogCQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQlwZ191bnJlYWNoYWJsZSgpOwogCX0KQEAg LTE4NjMsNiArMTg5NiwyNSBAQCBDYW5JbnZhbGlkYXRlSWRsZVNsb3QoUmVwbGljYXRpb25TbG90 ICpzKQogCQkJIShSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBzLT5kYXRhLnN5bmNlZCkpOwogfQog CisvKgorICogQ2FuIHdlIGludmFsaWRhdGUgYW4gWElELWFnZWQgcmVwbGljYXRpb24gc2xvdD8K KyAqCisgKiBYSUQtYWdlZCBiYXNlZCBpbnZhbGlkYXRpb24gaXMgYWxsb3dlZCB0byB0aGUgZ2l2 ZW4gc2xvdCB3aGVuOgorICoKKyAqIDEuIE1heCBYSUQtYWdlIGlzIHNldAorICogMi4gU2xvdCBo YXMgdmFsaWQgeG1pbiBvciBjYXRhbG9nX3htaW4KKyAqIDMuIFRoZSBzbG90IGlzIG5vdCBiZWlu ZyBzeW5jZWQgZnJvbSB0aGUgcHJpbWFyeSB3aGlsZSB0aGUgc2VydmVyIGlzIGluCisgKgkgIHJl Y292ZXJ5LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhbkludmFsaWRhdGVYaWRBZ2VkU2xv dChSZXBsaWNhdGlvblNsb3QgKnMpCit7CisJcmV0dXJuIChtYXhfc2xvdF94aWRfYWdlICE9IDAg JiYKKwkJCShUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLnhtaW4pIHx8CisJCQkgVHJhbnNh Y3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pKSAmJgorCQkJIShSZWNvdmVyeUlu UHJvZ3Jlc3MoKSAmJiBzLT5kYXRhLnN5bmNlZCkpOworfQorCiAvKgogICogRGV0ZXJtaW5lU2xv dEludmFsaWRhdGlvbkNhdXNlIC0gRGV0ZXJtaW5lIHRoZSBjYXVzZSBmb3Igd2hpY2ggYSBzbG90 CiAgKiBiZWNvbWVzIGludmFsaWQgYW1vbmcgdGhlIGdpdmVuIHBvc3NpYmxlIGNhdXNlcy4KQEAg LTE4NzQsNiArMTkyNiw3IEBAIHN0YXRpYyBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVz ZQogRGV0ZXJtaW5lU2xvdEludmFsaWRhdGlvbkNhdXNlKHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMs IFJlcGxpY2F0aW9uU2xvdCAqcywKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG9sZGVzdExTTiwgT2lk IGRib2lkLAogCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24s CisJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCB4aWRMaW1pdCwKIAkJCQkJCQkgICBUaW1lc3RhbXBU eiAqaW5hY3RpdmVfc2luY2UsIFRpbWVzdGFtcFR6IG5vdykKIHsKIAlBc3NlcnQocG9zc2libGVf Y2F1c2VzICE9IFJTX0lOVkFMX05PTkUpOwpAQCAtMTk0NSw2ICsxOTk4LDE4IEBAIERldGVybWlu ZVNsb3RJbnZhbGlkYXRpb25DYXVzZSh1aW50MzIgcG9zc2libGVfY2F1c2VzLCBSZXBsaWNhdGlv blNsb3QgKnMsCiAJCX0KIAl9CiAKKwkvKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBp bnZhbGlkYXRlZCBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMgKi8KKwlpZiAoKHBvc3NpYmxl X2NhdXNlcyAmIFJTX0lOVkFMX1hJRF9BR0UpICYmIENhbkludmFsaWRhdGVYaWRBZ2VkU2xvdChz KSkKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWRMaW1pdCkpOworCisJCWlm ICgoVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWluKSAmJgorCQkJIFRyYW5zYWN0aW9u SWRQcmVjZWRlcyhzLT5kYXRhLnhtaW4sIHhpZExpbWl0KSkgfHwKKwkJCShUcmFuc2FjdGlvbklk SXNWYWxpZChzLT5kYXRhLmNhdGFsb2dfeG1pbikgJiYKKwkJCSBUcmFuc2FjdGlvbklkUHJlY2Vk ZXMocy0+ZGF0YS5jYXRhbG9nX3htaW4sIHhpZExpbWl0KSkpCisJCQlyZXR1cm4gUlNfSU5WQUxf WElEX0FHRTsKKwl9CisKIAlyZXR1cm4gUlNfSU5WQUxfTk9ORTsKIH0KIApAQCAtMTk2Nyw2ICsy MDMyLDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9j YXVzZXMsCiAJCQkJCQkJICAgUmVwbGljYXRpb25TbG90ICpzLAogCQkJCQkJCSAgIFhMb2dSZWNQ dHIgb2xkZXN0TFNOLAogCQkJCQkJCSAgIE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHhpZExpbWl0LAogCQkJ CQkJCSAgIGJvb2wgKnJlbGVhc2VkX2xvY2tfb3V0KQogewogCWludAkJCWxhc3Rfc2lnbmFsZWRf cGlkID0gMDsKQEAgLTIwMTksNiArMjA4NSw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl U2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogCQkJCQkJCQkJCQkJCQkJCXMsIG9sZGVzdExT TiwKIAkJCQkJCQkJCQkJCQkJCQlkYm9pZCwKIAkJCQkJCQkJCQkJCQkJCQlzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCQkJCQl4aWRMaW1pdCwKIAkJCQkJCQkJCQkJCQkJCQkm aW5hY3RpdmVfc2luY2UsCiAJCQkJCQkJCQkJCQkJCQkJbm93KTsKIApAQCAtMjExMiw3ICsyMTc5 LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVz ZXMsCiAJCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUs IGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCiAJCQkJCQkJ CQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkJICAgc2xv dF9pZGxlX3NlY3MpOworCQkJCQkJCQkJICAgc2xvdF9pZGxlX3NlY3MsIHMtPmRhdGEueG1pbiwK KwkJCQkJCQkJCSAgIHMtPmRhdGEuY2F0YWxvZ194bWluLCB4aWRMaW1pdCk7CiAKIAkJCQlpZiAo TXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBTaWduYWxSZWNvdmVyeUNv bmZsaWN0KEdldFBHUHJvY0J5TnVtYmVyKGFjdGl2ZV9wcm9jKSwKQEAgLTIxNjUsNyArMjIzMyw4 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2Vz LAogCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLCBh Y3RpdmVfcGlkLAogCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCiAJCQkJCQkJCSAg IG9sZGVzdExTTiwgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAgIHNsb3RfaWRs ZV9zZWNzKTsKKwkJCQkJCQkJICAgc2xvdF9pZGxlX3NlY3MsIHMtPmRhdGEueG1pbiwKKwkJCQkJ CQkJICAgcy0+ZGF0YS5jYXRhbG9nX3htaW4sIHhpZExpbWl0KTsKIAogCQkJLyogZG9uZSB3aXRo IHRoaXMgc2xvdCBmb3Igbm93ICovCiAJCQlicmVhazsKQEAgLTIxOTIsNiArMjI2MSw4IEBAIElu dmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogICog ICBsb2dpY2FsLgogICogLSBSU19JTlZBTF9JRExFX1RJTUVPVVQ6IGhhcyBiZWVuIGlkbGUgbG9u Z2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQKICAqICAgImlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1l b3V0IiBkdXJhdGlvbi4KKyAqIC0gUlNfSU5WQUxfWElEX0FHRTogc2xvdCB4aWQgYWdlIGlzIG9s ZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQKKyAqICAgIm1heF9zbG90X3hpZF9hZ2UiIGFnZS4KICAq CiAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGludmFsaWRhdGUgdGhlIHNsb3Qg Zm9yIG11bHRpcGxlIHBvc3NpYmxlCiAgKiBjYXVzZXMgaW4gYSBzaW5nbGUgcGFzcywgbWluaW1p emluZyByZWR1bmRhbnQgaXRlcmF0aW9ucy4gVGhlICJjYXVzZSIKQEAgLTIyMDUsNyArMjI3Niw4 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2Vz LAogYm9vbAogSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyh1aW50MzIgcG9zc2li bGVfY2F1c2VzLAogCQkJCQkJCQkgICBYTG9nU2VnTm8gb2xkZXN0U2Vnbm8sIE9pZCBkYm9pZCwK LQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikKKwkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJICAg VHJhbnNhY3Rpb25JZCB4aWRMaW1pdCkKIHsKIAlYTG9nUmVjUHRyCW9sZGVzdExTTjsKIAlib29s CQlpbnZhbGlkYXRlZCA9IGZhbHNlOwpAQCAtMjI0NCw3ICsyMzE2LDcgQEAgcmVzdGFydDoKIAog CQlpZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHBvc3NpYmxlX2NhdXNlcywgcywg b2xkZXN0TFNOLAogCQkJCQkJCQkJCSAgIGRib2lkLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK LQkJCQkJCQkJCQkgICAmcmVsZWFzZWRfbG9jaykpCisJCQkJCQkJCQkJICAgeGlkTGltaXQsICZy ZWxlYXNlZF9sb2NrKSkKIAkJewogCQkJQXNzZXJ0KHJlbGVhc2VkX2xvY2spOwogCkBAIC0zMjc1 LDMgKzMzNDcsNTcgQEAgV2FpdEZvclN0YW5kYnlDb25maXJtYXRpb24oWExvZ1JlY1B0ciB3YWl0 X2Zvcl9sc24pCiAKIAlDb25kaXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7CiB9CisKKy8qCisg KiBJbnZhbGlkYXRlIHJlcGxpY2F0aW9uIHNsb3RzIHdob3NlIFhJRCBhZ2UgZXhjZWVkcyBtYXhf c2xvdF94aWRfYWdlLgorICoKKyAqIFRoZSBjYWxsZXIgc3VwcGxpZXMgb2xkZXN0IHhtaW4gYWxv bmcgd2l0aCB0aGUgb2xkZXN0IHNsb3QgeG1pbiBhbmQgb2xkZXN0CisgKiBjYXRhbG9nIHhtaW4s IGFsbCBvYnRhaW5lZCBmcm9tIHRoZSBzYW1lIENvbXB1dGVYaWRIb3Jpem9ucygpIGNhbGwuIFdl IHVzZSB0aGVtCisgKiB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3b3JrOiBpZiBhIHJlcGxpY2F0aW9u IHNsb3QgaXMgbm90IHdoYXQncyBob2xkaW5nIGJhY2sKKyAqIE9sZGVzdFhtaW4gKGUuZy4sIGEg bG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9uIGlzKSwgaW52YWxpZGF0aW5nIHNsb3RzIHdvdWxkCisg KiBub3QgaGVscC4gIEV2ZW4gd2hlbiBhIHNsb3QgaXMgaG9sZGluZyBiYWNrIE9sZGVzdFhtaW4s IHdlIHN0aWxsIHNraXAgdGhlCisgKiBpbnZhbGlkYXRpb24gY2FsbCBpZiBPbGRlc3RYbWluIGhh cyBub3QgeWV0IGV4Y2VlZGVkIG1heF9zbG90X3hpZF9hZ2UuCisgKgorICogUmV0dXJucyB0cnVl IGlmIGF0IGxlYXN0IG9uZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4KKyAqLworYm9vbAorTWF5YmVJ bnZhbGlkYXRlWElEQWdlZFNsb3RzKFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQlU cmFuc2FjdGlvbklkIE9sZGVzdFNsb3RYbWluLAorCQkJCQkJCVRyYW5zYWN0aW9uSWQgT2xkZXN0 U2xvdENhdGFsb2dYbWluKQoreworCVRyYW5zYWN0aW9uSWQgeGlkTGltaXQ7CisJYm9vbAkJc2xv dEhvbGRzT2xkZXN0WG1pbkJhY2s7CisKKwlpZiAobWF4X3Nsb3RfeGlkX2FnZSA9PSAwKQorCQly ZXR1cm4gZmFsc2U7CisKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzTm9ybWFsKE9sZGVzdFhtaW4p KTsKKworCS8qCisJICogQ2hlY2sgaWYgYSByZXBsaWNhdGlvbiBzbG90J3MgeG1pbiBvciBjYXRh bG9nX3htaW4gaXMgd2hhdCdzIGhvbGRpbmcKKwkgKiBiYWNrIE9sZGVzdFhtaW4uIElmIG5vdCwg c2tpcCB0aGUgdW5uZWNlc3Nhcnkgd29yay4KKwkgKi8KKwlzbG90SG9sZHNPbGRlc3RYbWluQmFj ayA9CisJCShUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RTbG90WG1pbikgJiYKKwkJIFRyYW5z YWN0aW9uSWRFcXVhbHMoT2xkZXN0WG1pbiwgT2xkZXN0U2xvdFhtaW4pKSB8fAorCQkoVHJhbnNh Y3Rpb25JZElzVmFsaWQoT2xkZXN0U2xvdENhdGFsb2dYbWluKSAmJgorCQkgVHJhbnNhY3Rpb25J ZEVxdWFscyhPbGRlc3RYbWluLCBPbGRlc3RTbG90Q2F0YWxvZ1htaW4pKTsKKworCWlmICghc2xv dEhvbGRzT2xkZXN0WG1pbkJhY2spCisJCXJldHVybiBmYWxzZTsKKworCXhpZExpbWl0ID0gVHJh bnNhY3Rpb25JZFJldHJlYXRlZEJ5KFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpLAorCQkJCQkJCQkJ CW1heF9zbG90X3hpZF9hZ2UpOworCisJLyoKKwkgKiBBIHJlcGxpY2F0aW9uIHNsb3QgaXMgaG9s ZGluZyBiYWNrIE9sZGVzdFhtaW4uIE5vdyBjaGVjayB3aGV0aGVyIHRoZQorCSAqIHNsb3QgaG9s ZGluZyBpdCBiYWNrIGhhcyBhbHNvIGV4Y2VlZGVkIHRoZSBYSUQgYWdlLgorCSAqLworCWlmIChU cmFuc2FjdGlvbklkUHJlY2VkZXMoT2xkZXN0WG1pbiwgeGlkTGltaXQpKQorCQlyZXR1cm4gSW52 YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhSU19JTlZBTF9YSURfQUdFLAorCQkJCQkJ CQkJCQkJICAwLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKKwkJCQkJCQkJCQkJCSAgeGlkTGltaXQpOworCisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCBjYzIwN2NiNTZlMy4uODk4ZWY0YTA4MzMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0xOTM3LDYgKzE5MzcsMzEgQEAgR2xv YmFsVmlzSG9yaXpvbktpbmRGb3JSZWwoUmVsYXRpb24gcmVsKQogCQlyZXR1cm4gVklTSE9SSVpP Tl9URU1QOwogfQogCisvKgorICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBhcHBy b3ByaWF0ZSBvbGRlc3Qgbm9uLXJlbW92YWJsZQorICogVHJhbnNhY3Rpb25JZCBmcm9tIHRoZSBw cmUtY29tcHV0ZWQgaG9yaXpvbnMsIGJhc2VkIG9uIHRoZSByZWxhdGlvbgorICogdHlwZS4KKyAq Lworc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIFRyYW5zYWN0aW9uSWQKK0dldE9s ZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWRGcm9tSG9yaXpvbnMoQ29tcHV0ZVhpZEhvcml6 b25zUmVzdWx0ICpob3Jpem9ucywKKwkJCQkJCQkJCQkJICAgUmVsYXRpb24gcmVsKQoreworCXN3 aXRjaCAoR2xvYmFsVmlzSG9yaXpvbktpbmRGb3JSZWwocmVsKSkKKwl7CisJCWNhc2UgVklTSE9S SVpPTl9TSEFSRUQ6CisJCQlyZXR1cm4gaG9yaXpvbnMtPnNoYXJlZF9vbGRlc3Rfbm9ucmVtb3Zh YmxlOworCQljYXNlIFZJU0hPUklaT05fQ0FUQUxPRzoKKwkJCXJldHVybiBob3Jpem9ucy0+Y2F0 YWxvZ19vbGRlc3Rfbm9ucmVtb3ZhYmxlOworCQljYXNlIFZJU0hPUklaT05fREFUQToKKwkJCXJl dHVybiBob3Jpem9ucy0+ZGF0YV9vbGRlc3Rfbm9ucmVtb3ZhYmxlOworCQljYXNlIFZJU0hPUkla T05fVEVNUDoKKwkJCXJldHVybiBob3Jpem9ucy0+dGVtcF9vbGRlc3Rfbm9ucmVtb3ZhYmxlOwor CX0KKworCS8qIGp1c3QgdG8gcHJldmVudCBjb21waWxlciB3YXJuaW5ncyAqLworCXJldHVybiBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKK30KKwogLyoKICAqIFJldHVybiB0aGUgb2xkZXN0IFhJRCBm b3Igd2hpY2ggZGVsZXRlZCB0dXBsZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgaW4gdGhlCiAgKiBwYXNz ZWQgdGFibGUuCkBAIC0xOTU1LDIwICsxOTgwLDMwIEBAIEdldE9sZGVzdE5vblJlbW92YWJsZVRy YW5zYWN0aW9uSWQoUmVsYXRpb24gcmVsKQogCiAJQ29tcHV0ZVhpZEhvcml6b25zKCZob3Jpem9u cyk7CiAKLQlzd2l0Y2ggKEdsb2JhbFZpc0hvcml6b25LaW5kRm9yUmVsKHJlbCkpCi0JewotCQlj YXNlIFZJU0hPUklaT05fU0hBUkVEOgotCQkJcmV0dXJuIGhvcml6b25zLnNoYXJlZF9vbGRlc3Rf bm9ucmVtb3ZhYmxlOwotCQljYXNlIFZJU0hPUklaT05fQ0FUQUxPRzoKLQkJCXJldHVybiBob3Jp em9ucy5jYXRhbG9nX29sZGVzdF9ub25yZW1vdmFibGU7Ci0JCWNhc2UgVklTSE9SSVpPTl9EQVRB OgotCQkJcmV0dXJuIGhvcml6b25zLmRhdGFfb2xkZXN0X25vbnJlbW92YWJsZTsKLQkJY2FzZSBW SVNIT1JJWk9OX1RFTVA6Ci0JCQlyZXR1cm4gaG9yaXpvbnMudGVtcF9vbGRlc3Rfbm9ucmVtb3Zh YmxlOwotCX0KKwlyZXR1cm4gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZEZyb21I b3Jpem9ucygmaG9yaXpvbnMsIHJlbCk7Cit9CiAKLQkvKiBqdXN0IHRvIHByZXZlbnQgY29tcGls ZXIgd2FybmluZ3MgKi8KLQlyZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisvKgorICogU2Ft ZSBhcyBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCksIGJ1dCBhbHNvIHJldHVy bnMgdGhlCisgKiByZXBsaWNhdGlvbiBzbG90IHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBmcm9tIHRo ZSBzYW1lIENvbXB1dGVYaWRIb3Jpem9ucygpCisgKiBjYWxsLiAgVGhpcyBhdm9pZHMgYSBzZXBh cmF0ZSBQcm9jQXJyYXlMb2NrIGFjcXVpc2l0aW9uIHdoZW4gdGhlIGNhbGxlcgorICogbmVlZHMg Ym90aCB2YWx1ZXMuCisgKi8KK1RyYW5zYWN0aW9uSWQKK0dldE9sZGVzdE5vblJlbW92YWJsZVRy YW5zYWN0aW9uSWRXaXRoU2xvdFhpZHMoUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJCQkgICBUcmFu c2FjdGlvbklkICpzbG90X3htaW4sCisJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnNsb3Rf Y2F0YWxvZ194bWluKQoreworCUNvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCBob3Jpem9uczsKKwor CUNvbXB1dGVYaWRIb3Jpem9ucygmaG9yaXpvbnMpOworCisJaWYgKHNsb3RfeG1pbikKKwkJKnNs b3RfeG1pbiA9IGhvcml6b25zLnNsb3RfeG1pbjsKKwlpZiAoc2xvdF9jYXRhbG9nX3htaW4pCisJ CSpzbG90X2NhdGFsb2dfeG1pbiA9IGhvcml6b25zLnNsb3RfY2F0YWxvZ194bWluOworCisJcmV0 dXJuIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWRGcm9tSG9yaXpvbnMoJmhvcml6 b25zLCByZWwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IGRlOTA5 MmZkZjViLi5kNjBmMzllYzA4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNTA0 LDcgKzUwNCw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0 aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICovCiAJaWYgKElzTG9naWNhbERlY29k aW5nRW5hYmxlZCgpICYmIGlzQ2F0YWxvZ1JlbCkKIAkJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyhSU19JTlZBTF9IT1JJWk9OLCAwLCBsb2NhdG9yLmRiT2lkLAotCQkJCQkJCQkJ CSAgIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJCQkgICBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IGU1NTZiODg0 NGQ4Li44NDRmZjhiNWRlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf cGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQKQEAgLTIwODksNiArMjA4OSwxNCBAQAogICBtYXggPT4gJ01BWF9LSUxPQllURVMnLAog fSwKIAoreyBuYW1lID0+ICdtYXhfc2xvdF94aWRfYWdlJywgdHlwZSA9PiAnaW50JywgY29udGV4 dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdSRVBMSUNBVElPTl9TRU5ESU5HJywKKyAgc2hv cnRfZGVzYyA9PiAnQWdlIG9mIHRoZSB0cmFuc2FjdGlvbiBJRCBhdCB3aGljaCBhIHJlcGxpY2F0 aW9uIHNsb3QgZ2V0cyBpbnZhbGlkYXRlZC4nLAorICB2YXJpYWJsZSA9PiAnbWF4X3Nsb3RfeGlk X2FnZScsCisgIGJvb3RfdmFsID0+ICcwJywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ICcyMTAw MDAwMDAwJywKK30sCisKICMgV2UgdXNlIHRoZSBob3BlZnVsbHktc2FmZWx5LXNtYWxsIHZhbHVl IG9mIDEwMGtCIGFzIHRoZSBjb21waWxlZC1pbgogIyBkZWZhdWx0IGZvciBtYXhfc3RhY2tfZGVw dGguICBJbml0aWFsaXplR1VDT3B0aW9ucyB3aWxsIGluY3JlYXNlIGl0CiAjIGlmIHBvc3NpYmxl LCBkZXBlbmRpbmcgb24gdGhlIGFjdHVhbCBwbGF0Zm9ybS1zcGVjaWZpYyBzdGFjayBsaW1pdC4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAy YzVlOThkMWQ0ZC4uMDAzODAyNmE1NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM1MSw2ICszNTEsOCBAQAogI3dhbF9rZWVwX3NpemUg PSAwICAgICAgICAgICAgICAjIGluIG1lZ2FieXRlczsgMCBkaXNhYmxlcwogI21heF9zbG90X3dh bF9rZWVwX3NpemUgPSAtMSAgICAjIGluIG1lZ2FieXRlczsgLTEgZGlzYWJsZXMKICNpZGxlX3Jl cGxpY2F0aW9uX3Nsb3RfdGltZW91dCA9IDAgICAgICAjIGluIHNlY29uZHM7IDAgZGlzYWJsZXMK KyNtYXhfc2xvdF94aWRfYWdlID0gMCAgICAgICAgICAgIyBtYXhpbXVtIFhJRCBhZ2UgYmVmb3Jl IGEgcmVwbGljYXRpb24gc2xvdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGdl dHMgaW52YWxpZGF0ZWQ7IDAgZGlzYWJsZXMKICN3YWxfc2VuZGVyX3RpbWVvdXQgPSA2MHMgICAg ICAgIyBpbiBtaWxsaXNlY29uZHM7IDAgZGlzYWJsZXMKICN0cmFja19jb21taXRfdGltZXN0YW1w ID0gb2ZmICAgIyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21taXQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jIGIv c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwppbmRleCAzNzYzMWY3 MDBhZi4uOWViYzcxZmNhYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19j cmVhdGVzdWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1 YnNjcmliZXIuYwpAQCAtMTkwMSw3ICsxOTAxLDcgQEAgc3RhcnRfc3RhbmRieV9zZXJ2ZXIoY29u c3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQsIGJvb2wgcmVzdHJpY3RlZF8K IAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwZ19jdGxfY21kLCAiIC1zIC1vIFwiLWMgc3luY19yZXBs aWNhdGlvbl9zbG90cz1vZmZcIiIpOwogCiAJLyogUHJldmVudCB1bmludGVuZGVkIHNsb3QgaW52 YWxpZGF0aW9uICovCi0JYXBwZW5kUFFFeHBCdWZmZXJTdHIocGdfY3RsX2NtZCwgIiAtbyBcIi1j IGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0PTBcIiIpOworCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHBnX2N0bF9jbWQsICIgLW8gXCItYyBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dD0w IC1jIG1heF9zbG90X3hpZF9hZ2U9MFwiIik7CiAKIAlpZiAocmVzdHJpY3RlZF9hY2Nlc3MpCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaAppbmRleCA1YjgwMjM2MTZjMC4uMWEwMzMzNmQ2YzAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCkBAIC0yODcsNiArMjg3LDEzIEBAIHN0cnVjdCBWYWN1dW1DdXRvZmZz CiAJICovCiAJVHJhbnNhY3Rpb25JZCBGcmVlemVMaW1pdDsKIAlNdWx0aVhhY3RJZCBNdWx0aVhh Y3RDdXRvZmY7CisKKwkvKgorCSAqIE9sZGVzdCB4bWluIGFuZCBjYXRhbG9nIHhtaW4gb2YgYW55 IHJlcGxpY2F0aW9uIHNsb3Qgb2J0YWluZWQgZnJvbSB0aGUKKwkgKiBzYW1lIENvbXB1dGVYaWRI b3Jpem9ucygpIGNhbGwgdGhhdCBjb21wdXRlZCBPbGRlc3RYbWluLgorCSAqLworCVRyYW5zYWN0 aW9uSWQgT2xkZXN0U2xvdFhtaW47CisJVHJhbnNhY3Rpb25JZCBPbGRlc3RTbG90Q2F0YWxvZ1ht aW47CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDRiNDcwOWY2ZTJjLi45MWY0 ODMwMjRjZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtNjYsMTAgKzY2LDEyIEBAIHR5cGVk ZWYgZW51bSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQogCVJTX0lOVkFMX1dBTF9M RVZFTCA9ICgxIDw8IDIpLAogCS8qIGlkbGUgc2xvdCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLwog CVJTX0lOVkFMX0lETEVfVElNRU9VVCA9ICgxIDw8IDMpLAorCS8qIHNsb3QncyB4bWluIG9yIGNh dGFsb2dfeG1pbiBoYXMgcmVhY2hlZCBtYXggeGlkIGFnZSAqLworCVJTX0lOVkFMX1hJRF9BR0Ug PSAoMSA8PCA0KSwKIH0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2U7CiAKIC8qIE1h eGltdW0gbnVtYmVyIG9mIGludmFsaWRhdGlvbiBjYXVzZXMgKi8KLSNkZWZpbmUJUlNfSU5WQUxf TUFYX0NBVVNFUyA0CisjZGVmaW5lCVJTX0lOVkFMX01BWF9DQVVTRVMgNQogCiAvKgogICogV2hl biB0aGUgc2xvdCBzeW5jaHJvbml6YXRpb24gd29ya2VyIGlzIHJ1bm5pbmcsIG9yIHdoZW4KQEAg LTMyNiw2ICszMjgsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUmVwbGljYXRpb25TbG90ICpNeVJl cGxpY2F0aW9uU2xvdDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Ns b3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dF9z ZWNzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc2xvdF94aWRfYWdlOwogCiAvKiBzaG1l bSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKi8KIGV4dGVybiBTaXplIFJlcGxpY2F0aW9uU2xv dHNTaG1lbVNpemUodm9pZCk7CkBAIC0zNjcsNyArMzcwLDExIEBAIGV4dGVybiB2b2lkIFJlcGxp Y2F0aW9uU2xvdHNEcm9wREJTbG90cyhPaWQgZGJvaWQpOwogZXh0ZXJuIGJvb2wgSW52YWxpZGF0 ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogCQkJCQkJ CQkJCQkgICBYTG9nU2VnTm8gb2xkZXN0U2Vnbm8sCiAJCQkJCQkJCQkJCSAgIE9pZCBkYm9pZCwK LQkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7CisJ CQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJ CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgeGlkTGltaXQpOworZXh0ZXJuIGJvb2wgTWF5YmVJbnZh bGlkYXRlWElEQWdlZFNsb3RzKFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQlU cmFuc2FjdGlvbklkIE9sZGVzdFNsb3RYbWluLAorCQkJCQkJCQkJCVRyYW5zYWN0aW9uSWQgT2xk ZXN0U2xvdENhdGFsb2dYbWluKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3QgKlNlYXJjaE5hbWVk UmVwbGljYXRpb25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVlZF9sb2NrKTsKIGV4dGVy biBpbnQJUmVwbGljYXRpb25TbG90SW5kZXgoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIGV4dGVy biBib29sIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5hbWUpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY2FycmF5LmgKaW5kZXggYWJkZjAyMWU2NmUuLmE5NDA5MWNlN2ZkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY2FycmF5LmgKQEAgLTUzLDYgKzUzLDkgQEAgZXh0ZXJuIFJ1bm5pbmdUcmFuc2FjdGlv bnMgR2V0UnVubmluZ1RyYW5zYWN0aW9uRGF0YSh2b2lkKTsKIAogZXh0ZXJuIGJvb2wgVHJhbnNh Y3Rpb25JZElzSW5Qcm9ncmVzcyhUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gVHJhbnNhY3Rp b25JZCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKFJlbGF0aW9uIHJlbCk7Citl eHRlcm4gVHJhbnNhY3Rpb25JZCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkV2l0 aFNsb3RYaWRzKFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAq c2xvdF94bWluLAorCQkJCQkJCQkJCQkJCQkJCQlUcmFuc2FjdGlvbklkICpzbG90X2NhdGFsb2df eG1pbik7CiBleHRlcm4gVHJhbnNhY3Rpb25JZCBHZXRPbGRlc3RUcmFuc2FjdGlvbklkQ29uc2lk ZXJlZFJ1bm5pbmcodm9pZCk7CiBleHRlcm4gVHJhbnNhY3Rpb25JZCBHZXRPbGRlc3RBY3RpdmVU cmFuc2FjdGlvbklkKGJvb2wgaW5Db21taXRPbmx5LAogCQkJCQkJCQkJCQkJICBib29sIGFsbERi cyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5w bCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCmluZGV4IDdiMjUz ZTY0ZDljLi44ZjA1NDBhM2M4YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlf cmVwbHNsb3RfbGltaXQucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3Rf bGltaXQucGwKQEAgLTU0MCw0ICs1NDAsMTc5IEBAIGlzKCAkcHVibGlzaGVyNC0+c2FmZV9wc3Fs KAogJHB1Ymxpc2hlcjQtPnN0b3A7CiAkc3Vic2NyaWJlcjQtPnN0b3A7CiAKKyMgV2FpdCBmb3Ig dGhlIGdpdmVuIHNsb3QgdG8gYmUgaW52YWxpZGF0ZWQgd2l0aCByZWFzb24gJ3hpZF9hZ2VkJwor c3ViIHdhaXRfZm9yX3hpZF9hZ2VkX2ludmFsaWRhdGlvbgoreworCW15ICgkbm9kZSwgJHNsb3Rf bmFtZSkgPSBAXzsKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFb CisJCVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz CisJCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RfbmFtZScgQU5ECisJCQlhY3RpdmUgPSBmYWxz ZSBBTkQKKwkJCWludmFsaWRhdGlvbl9yZWFzb24gPSAneGlkX2FnZWQnOworCV0pIG9yIGRpZSAi VGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgJHNsb3RfbmFtZSB0byBiZSBpbnZhbGlkYXRlZCI7 Cit9CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3RjYXNlIHN0YXJ0OiBJbnZhbGlkYXRlIHBoeXNp Y2FsIHNsb3QgZHVlIHRvIG1heF9zbG90X3hpZF9hZ2UgR1VDCisKKyMgSW5pdGlhbGl6ZSBwcmlt YXJ5IG5vZGUgZm9yIFhJRCBhZ2UgdGVzdHMKK215ICRwcmltYXJ5NSA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeTUnKTsKKyRwcmltYXJ5NS0+aW5pdChhbGxvd3Nfc3Ry ZWFtaW5nID0+ICdsb2dpY2FsJyk7CisKKyMgRGlzYWJsZSBhdXRvdmFjdXVtIHNvIGNoZWNrcG9p bnRlciB0cmlnZ2VycyB0aGUgaW52YWxpZGF0aW9uCitteSAkbWF4X3Nsb3RfeGlkX2FnZSA9IDEw MDsKKyRwcmltYXJ5NS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworbWF4 X3Nsb3RfeGlkX2FnZSA9ICRtYXhfc2xvdF94aWRfYWdlCithdXRvdmFjdXVtID0gb2ZmCit9KTsK KworJHByaW1hcnk1LT5zdGFydDsKKworIyBDcmVhdGUgYSBwcm9jZWR1cmUgdG8gY29uc3VtZSBY SURzCiskcHJpbWFyeTUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgUFJP Q0VEVVJFIGNvbnN1bWVfeGlkKGNudCBpbnQpCisJQVMgXCRcJAorCURFQ0xBUkUKKwkgICAgaSBp bnQ7CisJQkVHSU4KKwkgICAgRk9SIGkgSU4gMS4uY250IExPT1AKKwkgICAgICAgIEVYRUNVVEUg J1NFTEVDVCBwZ19jdXJyZW50X3hhY3RfaWQoKSc7CisJICAgICAgICBDT01NSVQ7CisJICAgIEVO RCBMT09QOworCUVORDsKKwlcJFwkIExBTkdVQUdFIHBscGdzcWw7Cit9KTsKKworIyBUYWtlIGEg YmFja3VwIGZvciBjcmVhdGluZyBzdGFuZGJ5CiskYmFja3VwX25hbWUgPSAnYmFja3VwNSc7Cisk cHJpbWFyeTUtPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBzdGFuZGJ5IHdpdGgg SFMgZmVlZGJhY2sgc28gdGhlIHNsb3QgZ2FpbnMgYW4geG1pbgorbXkgJHN0YW5kYnk1ID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5NScpOworJHN0YW5kYnk1LT5pbml0 X2Zyb21fYmFja3VwKCRwcmltYXJ5NSwgJGJhY2t1cF9uYW1lLCBoYXNfc3RyZWFtaW5nID0+IDEp OworJHN0YW5kYnk1LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXsKK3ByaW1h cnlfc2xvdF9uYW1lID0gJ3NiNV9zbG90JworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgord2Fs X3JlY2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKK30pOworJHByaW1hcnk1LT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNh dGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2I1X3Nsb3QnLCBpbW1lZGlhdGVseV9yZXNlcnZlIDo9 IHRydWUpOworXSk7Ciskc3RhbmRieTUtPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIGNvbnRlbnQg b24gcHJpbWFyeSB0byBtb3ZlIHhtaW4KKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBUQUJMRSB0YWJfaW50NSBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTAp IEFTIGEiKTsKKyRwcmltYXJ5NS0+d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRieTUpOworCisjIFdh aXQgZm9yIHRoZSBwaHlzaWNhbCBzbG90IHRvIGdldCB4bWluIHZpYSBob3Rfc3RhbmRieV9mZWVk YmFjaworJHByaW1hcnk1LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNF TEVDVCB4bWluIElTIE5PVCBOVUxMCisJCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9z bG90cworCQlXSEVSRSBzbG90X25hbWUgPSAnc2I1X3Nsb3QnOworXSkgb3IgZGllICJUaW1lZCBv dXQgd2FpdGluZyBmb3Igc2xvdCBzYjVfc2xvdCB4bWluIGZyb20gSFMgZmVlZGJhY2siOworCisj IFN0b3Agc3RhbmRieSBzbyB0aGUgc2xvdCBiZWNvbWVzIGluYWN0aXZlIHdpdGggaXRzIHhtaW4g ZnJvemVuCiskc3RhbmRieTUtPnN0b3A7CisKKyMgQWR2YW5jZSBYSURzIHBhc3QgMnggbWF4X3Ns b3RfeGlkX2FnZSBzbyB0aGUgc2xvdCdzIHhtaW4gaXMgc3RhbGUgZW5vdWdoCiskcHJpbWFyeTUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXtDQUxMIGNvbnN1bWVfeGlkKDIgKiAkbWF4X3Nsb3Rf eGlkX2FnZSl9KTsKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDSEVDS1BPSU5U Iik7Cit3YWl0X2Zvcl94aWRfYWdlZF9pbnZhbGlkYXRpb24oJHByaW1hcnk1LCAnc2I1X3Nsb3Qn KTsKK29rKDEsICJwaHlzaWNhbCBzbG90IGludmFsaWRhdGVkIGR1ZSB0byBYSUQgYWdlICh2aWEg Y2hlY2twb2ludCkiKTsKKworIyBUZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgcGh5c2ljYWwgc2xv dCBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisjIFRlc3RjYXNlIHN0YXJ0OiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdCBkdWUgdG8gbWF4 X3Nsb3RfeGlkX2FnZSBHVUMKKworIyBDcmVhdGUgYSBsb2dpY2FsIHNsb3QgZGlyZWN0bHkgb24g dGhlIHByaW1hcnkgKG5vIHN1YnNjcmliZXIgbmVlZGVkKS4KKyMgVGhlIHNsb3QgZ2V0cyBhIGNh dGFsb2dfeG1pbiBpbW1lZGlhdGVseSB1cG9uIGNyZWF0aW9uLgorJHByaW1hcnk1LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Ns b3QoJ2xzdWI1X3Nsb3QnLCAncGdvdXRwdXQnKSIpOworCiskcHJpbWFyeTUtPnBvbGxfcXVlcnlf dW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJU0VMRUNUIGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVM TAorCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cworCVdIRVJFIHNsb3RfbmFt ZSA9ICdsc3ViNV9zbG90JzsKK10pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3Qg bHN1YjVfc2xvdCBjYXRhbG9nX3htaW4iOworCisjIEFkdmFuY2UgWElEcyBwYXN0IDJ4IG1heF9z bG90X3hpZF9hZ2Ugc28gdGhlIHNsb3QncyBjYXRhbG9nX3htaW4gaXMgc3RhbGUgZW5vdWdoCisk cHJpbWFyeTUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXtDQUxMIGNvbnN1bWVfeGlkKDIgKiAk bWF4X3Nsb3RfeGlkX2FnZSl9KTsKKworIyBWYWN1dW1lIGEgdXNlciB0YWJsZSBzbyBPbGRlc3RY bWluIGRvZXMgbm90IGluY2x1ZGUgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4sCisjIHNraXBwaW5n IHRoZSBpbnZhbGlkYXRpb24gb2YgdGhlIHNsb3QuCiskcHJpbWFyeTUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiVkFDVVVNIHRhYl9pbnQ1Iik7CitpcyggJHByaW1hcnk1LT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsCisJCXFxW1NFTEVDVCBpbnZhbGlkYXRpb25fcmVhc29uIElTIE5VTEwgRlJP TSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjVfc2xvdCc7XQor CSksCisJJ3QnLAorCSdsb2dpY2FsIHNsb3Qgbm90IGludmFsaWRhdGVkIGFmdGVyIHZhY3V1bWlu ZyBhIGRhdGEgdGFibGUnKTsKKworIyBWYWN1dW0gYSBjYXRhbG9nIHRhYmxlIHNvIE9sZGVzdFht aW4gaW5jbHVkZXMgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4sCisjIHRyaWdnZXJpbmcgaW52YWxp ZGF0aW9uIG9mIHRoZSBzbG90LgorJHByaW1hcnk1LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlZB Q1VVTSBwZ19jbGFzcyIpOword2FpdF9mb3JfeGlkX2FnZWRfaW52YWxpZGF0aW9uKCRwcmltYXJ5 NSwgJ2xzdWI1X3Nsb3QnKTsKK29rKDEsICJsb2dpY2FsIHNsb3QgaW52YWxpZGF0ZWQgZHVlIHRv IFhJRCBhZ2UgKHZpYSB2YWN1dW0pIik7CisKKyMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIGxv Z2ljYWwgc2xvdCBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMKKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBsb2dp Y2FsIHNsb3Qgb24gc3RhbmRieSBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMKKworIyBEaXNh YmxlIG1heF9zbG90X3hpZF9hZ2Ugb24gcHJpbWFyeSBhbmQgcmVjcmVhdGUgdGhlIHN0cmVhbWlu ZyBzbG90CiskcHJpbWFyeTUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCXF7CitBTFRFUiBT WVNURU0gU0VUIG1heF9zbG90X3hpZF9hZ2UgPSAwOworU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7 Cit9KTsKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19kcm9w X3JlcGxpY2F0aW9uX3Nsb3QoJ3NiNV9zbG90JykiKTsKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgn c2I1X3Nsb3QnLCB0cnVlKSIpOworJHN0YW5kYnk1LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNx bC5jb25mJywgcXF7CittYXhfc2xvdF94aWRfYWdlID0gJG1heF9zbG90X3hpZF9hZ2UKK2F1dG92 YWN1dW0gPSBvZmYKK30pOworJHN0YW5kYnk1LT5zdGFydDsKKworJHByaW1hcnk1LT53YWl0X2Zv cl9jYXRjaHVwKCRzdGFuZGJ5NSk7CisKKyRzdGFuZGJ5NS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9v bl9zdGFuZGJ5KCRwcmltYXJ5NSwgJ3NiNV9sb2dpY2FsX3Nsb3QnLAorCSdwb3N0Z3JlcycpOwor Ciskc3RhbmRieTUtPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJU0VMRUNU IGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTAorCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlv bl9zbG90cworCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjVfbG9naWNhbF9zbG90JzsKK10pIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNiNV9sb2dpY2FsX3Nsb3QgY2F0YWxvZ194bWluIjsK KworIyBBZHZhbmNlIFhJRHMgb24gcHJpbWFyeSwgcmVwbGF5IG9uIHN0YW5kYnksIHRoZW4gcmVz dGFydHBvaW50IHRvIGludmFsaWRhdGUKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxe0NBTEwgY29uc3VtZV94aWQoMiAqICRtYXhfc2xvdF94aWRfYWdlKX0pOworJHByaW1hcnk1 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKKyRwcmltYXJ5NS0+d2FpdF9m b3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnk1KTsKKyRzdGFuZGJ5NS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDSEVDS1BPSU5UIik7CisKK3dhaXRfZm9yX3hpZF9hZ2VkX2ludmFsaWRhdGlvbigk c3RhbmRieTUsICdzYjVfbG9naWNhbF9zbG90Jyk7CitvaygxLCAibG9naWNhbCAoc3RhbmRieSkg c2xvdCBpbnZhbGlkYXRlZCBkdWUgdG8gWElEIGFnZSAodmlhIHJlc3RhcnRwb2ludCkiKTsKKwor JHN0YW5kYnk1LT5zdG9wOworJHByaW1hcnk1LT5zdG9wOworCisjIFRlc3RjYXNlIGVuZDogSW52 YWxpZGF0ZSBsb2dpY2FsIHNsb3Qgb24gc3RhbmRieSBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBH VUMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ3LjMK Cg== --000000000000747e37064e92fe3b Content-Type: application/octet-stream; name="v9-0002-Add-more-tests-for-XID-age-slot-invalidation.patch" Content-Disposition: attachment; filename="v9-0002-Add-more-tests-for-XID-age-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnj9vty41 RnJvbSAzOTQzZDc1MGE4ODgzYTJkMjBhZTM5Y2E4Y2FhODdmZTViZjA3OTcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8cnVwaXJlZGRAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAzIEFwciAyMDI2IDE4OjU1OjQ1ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 OSAyLzJdIEFkZCBtb3JlIHRlc3RzIGZvciBYSUQgYWdlIHNsb3QgaW52YWxpZGF0aW9uCgpDb25z dW1lIFhJRHMgdXAgdG8gd3JhcGFyb3VuZCBXQVJOSU5HIGxpbWl0cyB3aXRoCm1heF9zbG90X3hp ZF9hZ2UgbWF0Y2hpbmcgdmFjdXVtX2ZhaWxzYWZlX2FnZSAoMS42QikuIFZlcmlmeSB0aGF0CmF1 dG92YWN1dW0gaW52YWxpZGF0ZXMgdGhlIGluYWN0aXZlIHJlcGxpY2F0aW9uIHNsb3QKKFhJRC1h Z2UtYmFzZWQgaW52YWxpZGF0aW9uKSwgdW5ibG9ja3MgZGF0ZnJvemVueGlkIGFkdmFuY2VtZW50 LAphbmQgcHJldmVudHMgd3JhcGFyb3VuZCB3aXRob3V0IGFueSBpbnRlcnZlbnRpb24uCi0tLQog c3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy90 ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsIHwgMTMwICsrKysrKysrKysrKysr KysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSBiL3NyYy90ZXN0L3Jl Y292ZXJ5L01ha2VmaWxlCmluZGV4IGQ0MWFhYWY4YWUxLi41YzNkMmM4OTk0MSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFr ZWZpbGUKQEAgLTEyLDcgKzEyLDggQEAKIEVYVFJBX0lOU1RBTEw9Y29udHJpYi9wZ19wcmV3YXJt IFwKIAljb250cmliL3BnX3N0YXRfc3RhdGVtZW50cyBcCiAJY29udHJpYi90ZXN0X2RlY29kaW5n IFwKLQlzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMKKwlzcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMgXAorCXNyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQKIAog c3ViZGlyID0gc3JjL3Rlc3QvcmVjb3ZlcnkKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCmluZGV4IDhmMDU0MGEzYzhiLi44 YWM1ZjFmNjk5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3Rf bGltaXQucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwK QEAgLTcxNSw0ICs3MTUsMTM0IEBAICRwcmltYXJ5NS0+c3RvcDsKICMgVGVzdGNhc2UgZW5kOiBJ bnZhbGlkYXRlIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IGR1ZSB0byBtYXhfc2xvdF94aWRfYWdl IEdVQwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorIyBUZXN0Y2FzZSBzdGFydDogWElELWFnZS1iYXNlZCBzbG90IGludmFsaWRhdGlvbiB3aXRo IGF1dG92YWN1dW0gKHByb2R1Y3Rpb24tbGlrZSkKKworIyBTdGFuZGJ5IHNldHMgc2xvdCB4bWlu IHZpYSBIUyBmZWVkYmFjaywgZGlzY29ubmVjdHMsIFhJRHMgYXJlIGNvbnN1bWVkLgorIyBtYXhf c2xvdF94aWRfYWdlIGlzIHNldCB0byB2YWN1dW1fZmFpbHNhZmVfYWdlICgxLjZCKSBzbyBhdXRv dmFjdXVtCisjIGludmFsaWRhdGVzIHRoZSBzbG90IGJlZm9yZSBlbnRlcmluZyBmYWlsc2FmZSBt b2RlLCB1bmJsb2NraW5nCisjIGRhdGZyb3plbnhpZCBhZHZhbmNlbWVudCBhbmQgYXZvaWRpbmcg WElEIHdyYXBhcm91bmQgd2l0aG91dCBtYW51YWwKKyMgVkFDVVVNIG9yIGRvd250aW1lLgorCisj IFZlcmlmeSBzZXJ2ZXIgbG9nIHNob3dzIHNsb3QgaW52YWxpZGF0aW9uIGJ5IGF1dG92YWN1dW0g d29ya2VyCitzdWIgdmVyaWZ5X3Nsb3RfeGlkX2FnZWRfaW52YWxpZGF0aW9uX2luX3NlcnZlcl9s b2cKK3sKKwlteSAoJG5vZGUsICRzbG90X25hbWUsICRtYXhfYWdlLCAkY29uc3VtZWRfeGlkcykg PSBAXzsKKworCW15ICRsb2cgPSBzbHVycF9maWxlKCRub2RlLT5sb2dmaWxlKTsKKworCSMgVmVy aWZ5IHRoZSBpbnZhbGlkYXRpb24gd2FzIHBlcmZvcm1lZCBieSBhbiBhdXRvdmFjdXVtIHdvcmtl cgorCWxpa2UoJGxvZywKKwkJcXIvYXV0b3ZhY3V1bSB3b3JrZXJcW1xkK1xdIExPRzpccytpbnZh bGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCAiJHNsb3RfbmFtZSIvLAorCQkic2Vy dmVyIGxvZzogJHNsb3RfbmFtZSBpbnZhbGlkYXRlZCBieSBhdXRvdmFjdXVtIHdvcmtlciIpOwor CisJIyBWZXJpZnkgREVUQUlMIHNob3dzIHRoZSB4bWluIGFnZSBleGNlZWRpbmcgbWF4X3Nsb3Rf eGlkX2FnZQorCWxpa2UoJGxvZywKKwkJcXIvYXV0b3ZhY3V1bSB3b3JrZXJcW1xkK1xdIERFVEFJ TDpccytUaGUgc2xvdCdzICg/OmNhdGFsb2cgKT94bWluIGFnZSBvZiAoXGQrKSBleGNlZWRzIHRo ZSBjb25maWd1cmVkICJtYXhfc2xvdF94aWRfYWdlIiBvZiAkbWF4X2FnZSBieSAoXGQrKSB0cmFu c2FjdGlvbnMvLAorCQkic2VydmVyIGxvZzogREVUQUlMIHNob3dzIHhtaW4gYWdlIGV4Y2VlZHMg bWF4X3Nsb3RfeGlkX2FnZSAkbWF4X2FnZSIpOworCisJIyBFeHRyYWN0IHhpZCBhZ2UgZnJvbSB0 aGUgbG9nIGFuZCByZXBvcnQgZm9yIGRpYWdub3N0aWNzCisJJGxvZyA9fgorCSAgL1RoZSBzbG90 J3MgKD86Y2F0YWxvZyApP3htaW4gYWdlIG9mIChcZCspIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQg Im1heF9zbG90X3hpZF9hZ2UiIG9mICRtYXhfYWdlIGJ5IChcZCspLzsKKwlteSAkbG9nX3hpZF9h Z2UgPSAkMSAvLyAnTi9BJzsKKwlteSAkZXhjZWVkZWRfYnkgPSAkMiAvLyAnTi9BJzsKKwlkaWFn ICJ4aWRfYWdlIGZyb20gc2VydmVyIGxvZz0kbG9nX3hpZF9hZ2UsIGV4Y2VlZGVkX2J5PSRleGNl ZWRlZF9ieSwgbWF4X3Nsb3RfeGlkX2FnZT0kbWF4X2FnZSwgY29uc3VtZWQ9JGNvbnN1bWVkX3hp ZHMgWElEcyI7Cit9CisKKyMgVmVyaWZ5IHNsb3QgaW52YWxpZGF0aW9uIGFuZCB3YWl0IGZvciBh dXRvdmFjdXVtIHRvIGFkdmFuY2UgZGF0ZnJvemVueGlkCitzdWIgdmVyaWZ5X2ludmFsaWRhdGlv bl9hbmRfcmVjb3ZlcnkKK3sKKwlteSAoJG5vZGUsICRzbG90X25hbWUsICRtYXhfYWdlLCAkY29u c3VtZWRfeGlkcykgPSBAXzsKKworCXJldHVybiBpZiAkbWF4X2FnZSA9PSAwOworCisJd2FpdF9m b3JfeGlkX2FnZWRfaW52YWxpZGF0aW9uKCRub2RlLCAkc2xvdF9uYW1lKTsKKwlvaygxLCAnYXV0 b3ZhY3V1bSBpbnZhbGlkYXRlZCBzbG90IGR1ZSB0byB4aWRfYWdlZCcpOworCisJdmVyaWZ5X3Ns b3RfeGlkX2FnZWRfaW52YWxpZGF0aW9uX2luX3NlcnZlcl9sb2coJG5vZGUsICRzbG90X25hbWUs CisJCSRtYXhfYWdlLCAkY29uc3VtZWRfeGlkcyk7CisKKwkjIFdhaXQgZm9yIGF1dG92YWN1dW0g dG8gYWR2YW5jZSBkYXRmcm96ZW54aWQgaW4gYWxsIGRhdGFiYXNlcyBwYXN0IHRoZQorCSMgd3Jh cGFyb3VuZCB0aHJlc2hvbGQuCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3Jl cycsIHFxWworCQlTRUxFQ1QgTk9UIEVYSVNUUyAoCisJCQlTRUxFQ1QgMSBGUk9NIHBnX2RhdGFi YXNlCisJCQlXSEVSRSBhZ2UoZGF0ZnJvemVueGlkKSA+IDIwMDAwMDAwMDAKKwkJKTsKKwldKSBv ciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBhdXRvdmFjdXVtIHRvIGFkdmFuY2UgZGF0ZnJv emVueGlkIGluIGFsbCBkYXRhYmFzZXMiOworfQorCitteSAkcHJpbWFyeTYgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnk2Jyk7CiskcHJpbWFyeTYtPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworCiskbWF4X3Nsb3RfeGlkX2FnZSA9IDE2MDAwMDAw MDA7ICAgICMgbWF0Y2hlcyB2YWN1dW1fZmFpbHNhZmVfYWdlIGRlZmF1bHQKKyRwcmltYXJ5Ni0+ YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworbWF4X3Nsb3RfeGlkX2FnZSA9 ICRtYXhfc2xvdF94aWRfYWdlCithdXRvdmFjdXVtX25hcHRpbWUgPSAxcworfSk7CisKKyRwcmlt YXJ5Ni0+c3RhcnQ7CiskcHJpbWFyeTYtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIEVY VEVOU0lPTiB4aWRfd3JhcGFyb3VuZCIpOworCiskYmFja3VwX25hbWUgPSAnYmFja3VwNic7Cisk cHJpbWFyeTYtPmJhY2t1cCgkYmFja3VwX25hbWUpOworCitteSAkc3RhbmRieTYgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnk2Jyk7Ciskc3RhbmRieTYtPmluaXRfZnJv bV9iYWNrdXAoJHByaW1hcnk2LCAkYmFja3VwX25hbWUsIGhhc19zdHJlYW1pbmcgPT4gMSk7Cisk c3RhbmRieTYtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworcHJpbWFyeV9z bG90X25hbWUgPSAnc2I2X3Nsb3QnCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCit3YWxfcmVj ZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorfSk7CisKKyRwcmltYXJ5Ni0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgn c2I2X3Nsb3QnLCB0cnVlKSIpOworCiskc3RhbmRieTYtPnN0YXJ0OworCiskcHJpbWFyeTYtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX2ludDYgQVMgU0VMRUNUIGdl bmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7CiskcHJpbWFyeTYtPndhaXRfZm9yX2NhdGNodXAo JHN0YW5kYnk2KTsKKworJHByaW1hcnk2LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jlcycs IHFxWworCVNFTEVDVCB4bWluIElTIE5PVCBOVUxMIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMK KwkJV0hFUkUgc2xvdF9uYW1lID0gJ3NiNl9zbG90JzsKK10pIG9yIGRpZSAiVGltZWQgb3V0IHdh aXRpbmcgZm9yIHNiNl9zbG90IHhtaW4gZnJvbSBIUyBmZWVkYmFjayI7CisKKyMgU3RvcCBzdGFu ZGJ5OyBzbG90IHhtaW4gcGVyc2lzdHMgYW5kIGhvbGRzIGJhY2sgZGF0ZnJvemVueGlkCiskc3Rh bmRieTYtPnN0b3A7CisKKyMgQ29uc3VtZSBYSURzIGluIDUwTSBjaHVua3M7IGF1dG92YWN1dW0g KG5hcHRpbWU9MXMpIHdpbGwgaW52YWxpZGF0ZSB0aGUKKyMgc2xvdCBvbmNlIHhtaW4gYWdlIGV4 Y2VlZHMgbWF4X3Nsb3RfeGlkX2FnZS4KK215ICRsb2dzdGFydDYgPSAtcyAkcHJpbWFyeTYtPmxv Z2ZpbGU7CitteSAkY2h1bmsgPSA1MF8wMDBfMDAwOworbXkgJG1heF94aWRzID0gMl8yMDBfMDAw XzAwMDsKK215ICRjb25zdW1lZCA9IDA7CisKK3doaWxlICgkY29uc3VtZWQgPCAkbWF4X3hpZHMp Cit7CisJJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb25zdW1lX3hp ZHMoJGNodW5rKSIpOworCSRjb25zdW1lZCArPSAkY2h1bms7CisJbXkgJHJlbWFpbmluZyA9ICRt YXhfeGlkcyAtICRjb25zdW1lZDsKKwlkaWFnICJjb25zdW1lZCAkY29uc3VtZWQgLyAkbWF4X3hp ZHMgWElEcyAoJHJlbWFpbmluZyByZW1haW5pbmcpIjsKK30KKwordmVyaWZ5X2ludmFsaWRhdGlv bl9hbmRfcmVjb3ZlcnkoJHByaW1hcnk2LCAnc2I2X3Nsb3QnLAorCSRtYXhfc2xvdF94aWRfYWdl LCAkY29uc3VtZWQpOworCisjIENvbnN1bWUgMUIgbW9yZSBYSURzIOKAlCBjb21iaW5pbmcgd2l0 aCB0aGUgMi4yQiBjb25zdW1lZCBhYm92ZSwgdGhlIHRvdGFsCisjIG9mIDMuMkIgZXhjZWVkcyB0 aGUgMl4zMSAofjIuMUIpIHVzYWJsZSBYSUQgc3BhY2UgKHhpZFN0b3BMaW1pdCksIGkuZS4KKyMg bW9yZSB0aGFuIG9uZSBmdWxsIHdyYXBhcm91bmQgY3ljbGUsIHByb3ZpbmcgdGhlIHN5c3RlbSBp cyBoZWFsdGh5LgorJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb25z dW1lX3hpZHMoMTAwMDAwMDAwMCkiKTsKK29rKDEsICd3cml0ZXMgc3VjY2VlZCBhZnRlciBhdXRv dmFjdXVtIGludmFsaWRhdGVkIHRoZSBzbG90Jyk7CisKKyRwcmltYXJ5Ni0+c3RvcDsKKworIyBU ZXN0Y2FzZSBlbmQ6IFhJRC1hZ2UtYmFzZWQgc2xvdCBpbnZhbGlkYXRpb24gd2l0aCBhdXRvdmFj dXVtIChwcm9kdWN0aW9uLWxpa2UpCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKIGRvbmVf dGVzdGluZygpOwotLSAKMi40Ny4zCgo= --000000000000747e37064e92fe3b--