<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>220641</bug_id>
          
          <creation_ts>2021-01-14 16:44:21 -0800</creation_ts>
          <short_desc>Add JSC API configuring GC signals in Linux</short_desc>
          <delta_ts>2021-03-17 02:51:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223069</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221081</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="George Pittarelli">gjp</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1719748</commentid>
    <comment_count>0</comment_count>
    <who name="George Pittarelli">gjp</who>
    <bug_when>2021-01-14 16:44:21 -0800</bug_when>
    <thetext>JSC uses SIGUSR1 to suspend/resume threads on Linux. However, this signal handler can segfault if a process using JSC receives a SIGUSR1 at a very particular time: after JSC initialization (i.e. when the signal handler is installed), but before the first time that JSC actually does a Thread suspend.

I believe (from stack traces) that this is coming from this line: https://trac.webkit.org/browser/webkit/trunk/Source/WTF/wtf/posix/ThreadingPOSIX.cpp?rev=270806#L121

Specifically, the `targetThread` global is still nullptr in this situation. Perhaps a null check will suffice as a fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719926</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 11:00:29 -0800</bug_when>
    <thetext>This is a nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719927</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 11:04:53 -0800</bug_when>
    <thetext>I think JSC is not considering about the pattern emitting SIGUSR1 without interacting with JSC code, but just adding nullptr check is free, and if it can fix some usage, let&apos;s just add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719930</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 11:28:46 -0800</bug_when>
    <thetext>(In reply to George Pittarelli from comment #0)
&gt; JSC uses SIGUSR1 to suspend/resume threads on Linux. However, this signal
&gt; handler can segfault if a process using JSC receives a SIGUSR1 at a very
&gt; particular time: after JSC initialization (i.e. when the signal handler is
&gt; installed), but before the first time that JSC actually does a Thread
&gt; suspend.
&gt; 
&gt; I believe (from stack traces) that this is coming from this line:
&gt; https://trac.webkit.org/browser/webkit/trunk/Source/WTF/wtf/posix/
&gt; ThreadingPOSIX.cpp?rev=270806#L121
&gt; 
&gt; Specifically, the `targetThread` global is still nullptr in this situation.
&gt; Perhaps a null check will suffice as a fix?

I looked into it deeply, and I have some thoughts.

Can you share your story about why emitting SIGUSR1?
To handle your use case better, we need know how you are using SIGUSR1.

In JSC on Linux, JSC is not assuming SIGUSR1 is emitted outside of JSC.
JSC strongly assumes that targetThread is filled with argument thread before the signal is invoked, and this invariant is kept in JSC code. So, JSC will never see nullptr in targetThread without emitting SIGUSR1 outside of JSC.

Even though we insert null check against targetThread, it is still possible that,

1. targetThread is filled with already-freed Thread pointer (since JSC does not clear it after using, and it is still possible)
2. Conflict with JSC&apos;s suspension mechanism (like, sending this signal while JSC is about to sending this signal to suspend).

Several ways can be considered.

1. If you are using Linux, and if you are not using pthread_sigqueue to emit SIGUSR1, then JSC can switch to use pthread_sigqueue to emit signal in Linux, and check `if (info-&gt;si_code == SI_QUEUE)` to make signal sender narrower.
2. If you are sending a signal outside of the process using JSC, JSC can use si_pid to check wether the signal is sent by own process, and exclude handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720051</commentid>
    <comment_count>4</comment_count>
    <who name="George Pittarelli">gjp</who>
    <bug_when>2021-01-15 15:10:26 -0800</bug_when>
    <thetext>Hi Yusuke, thank you for the investigation!

&gt; Can you share your story about why emitting SIGUSR1?
&gt; To handle your use case better, we need know how you are using SIGUSR1.

We have a binary that uses JSC, among other libraries. One of those other libraries also sets a SIGUSR1 handler, but that handler is effectively a no-op when triggered unintentionally. That handler is triggered from another process at arbitrary times. (Yes, there&apos;s a performance question here of JSC&apos;s SIGUSR1 triggering that other handler repeatedly, but we&apos;re addressing that separately.)

&gt; 1. If you are using Linux, and if you are not using pthread_sigqueue to emit SIGUSR1, then JSC can switch to use pthread_sigqueue to emit signal in Linux, and check `if (info-&gt;si_code == SI_QUEUE)` to make signal sender narrower.
&gt; 2. If you are sending a signal outside of the process using JSC, JSC can use si_pid to check wether the signal is sent by own process, and exclude handling.

Option 2 would solve our particular use case.

I worry about the other case: in general, what if someone tries to use JSC alongside another library that uses SIGUSR1 in the same way that JSC does? That said, I also don&apos;t see a 100% perfect fix. Is there any reason not to do both options? And if sigqueue is used, perhaps you could narrow even further with si_value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720062</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 15:50:01 -0800</bug_when>
    <thetext>(In reply to George Pittarelli from comment #4)
&gt; Hi Yusuke, thank you for the investigation!
&gt; 
&gt; &gt; Can you share your story about why emitting SIGUSR1?
&gt; &gt; To handle your use case better, we need know how you are using SIGUSR1.
&gt; 
&gt; We have a binary that uses JSC, among other libraries. One of those other
&gt; libraries also sets a SIGUSR1 handler, but that handler is effectively a
&gt; no-op when triggered unintentionally. That handler is triggered from another
&gt; process at arbitrary times. (Yes, there&apos;s a performance question here of
&gt; JSC&apos;s SIGUSR1 triggering that other handler repeatedly, but we&apos;re addressing
&gt; that separately.)
&gt; 
&gt; &gt; 1. If you are using Linux, and if you are not using pthread_sigqueue to emit SIGUSR1, then JSC can switch to use pthread_sigqueue to emit signal in Linux, and check `if (info-&gt;si_code == SI_QUEUE)` to make signal sender narrower.
&gt; &gt; 2. If you are sending a signal outside of the process using JSC, JSC can use si_pid to check wether the signal is sent by own process, and exclude handling.
&gt; 
&gt; Option 2 would solve our particular use case.
&gt; 
&gt; I worry about the other case: in general, what if someone tries to use JSC
&gt; alongside another library that uses SIGUSR1 in the same way that JSC does?
&gt; That said, I also don&apos;t see a 100% perfect fix. Is there any reason not to
&gt; do both options? And if sigqueue is used, perhaps you could narrow even
&gt; further with si_value?

Unfortunately, in Linux, signaling is the most reliable way to suspend and resume the thread, and it is used in many concurrent GCes. So, I think no perfect solution exists unfortunately.
JSC uses suspend and resume mechanism to drive concurrent GC. So, at least one signal is required in Linux and BSD (IIRC, BSD has a way to suspend and resume threads, but they do not have a way to extract machine context of the suspended threads. Darwin and Windows have a way to suspend and resume threads, plus, extracting machine context of suspended threads).
Currently, we are using SIGUSR1. Possibly, we could offer a way to configure what signal will be used.
Or we can pick a signal that is more extremely rarely used one instead. For example, in Linux, realtime signals can be used for application purpose but they are not typically used in application.
Maybe, picking one of realtime signal would be better for application compatibility.

What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720063</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 15:55:14 -0800</bug_when>
    <thetext>Yeah, possibly, using one of real-time signal would be better for Linux.
Since real-time signals are not hardcoded, good application can search to find an appropriate signal for their purpose. So, JSC can also find one of real-time signal and use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720105</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 18:56:56 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; Yeah, possibly, using one of real-time signal would be better for Linux.
&gt; Since real-time signals are not hardcoded, good application can search to
&gt; find an appropriate signal for their purpose. So, JSC can also find one of
&gt; real-time signal and use it.

Ah, unfortunately, no. real-time signals are always queued even if we do not use pthread_sigqueue. It is not queued if we use `kill`, but (I think this is not great) if we use pthread_kill, then this is queued. And queue size is limited, so we could have a fun issue.

I think we should try using SIGPWR or SIGXCPU.
https://superuser.com/questions/1185603/what-can-trigger-a-sigpwr-signal-that-interrupts-a-sendmsg-system-call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720110</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 19:52:50 -0800</bug_when>
    <thetext>Any signals can potentially conflict. So let&apos;s just use SIGUSR1 for now, and putting a function that allows embedders can change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720111</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 19:53:10 -0800</bug_when>
    <thetext>Since there is no way in Linux, I think this is the best path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720116</commentid>
    <comment_count>10</comment_count>
      <attachid>417759</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 20:56:17 -0800</bug_when>
    <thetext>Created attachment 417759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720117</commentid>
    <comment_count>11</comment_count>
      <attachid>417760</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-15 21:10:27 -0800</bug_when>
    <thetext>Created attachment 417760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720149</commentid>
    <comment_count>12</comment_count>
      <attachid>417760</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-16 15:18:38 -0800</bug_when>
    <thetext>Comment on attachment 417760
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=417760&amp;action=review

r=me with suggested improvement.

&gt; Source/WTF/wtf/posix/ThreadingPOSIX.cpp:80
&gt; +int sigThreadSuspendResume { -1 };
&gt; +bool sigThreadSuspendResumeIsFrozen { false };

Why not store these as fields in WTFConfig where they can actually get frozen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720162</commentid>
    <comment_count>13</comment_count>
      <attachid>417760</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-16 22:49:39 -0800</bug_when>
    <thetext>Comment on attachment 417760
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=417760&amp;action=review

&gt;&gt; Source/WTF/wtf/posix/ThreadingPOSIX.cpp:80
&gt;&gt; +bool sigThreadSuspendResumeIsFrozen { false };
&gt; 
&gt; Why not store these as fields in WTFConfig where they can actually get frozen?

It makes initialization code a bit complicated (we need to insert WTF::initialize() in TLS initialization) and we need another two flags because WTFConfig cannot initialize field with -1, but changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720163</commentid>
    <comment_count>14</comment_count>
      <attachid>417775</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-16 22:51:28 -0800</bug_when>
    <thetext>Created attachment 417775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720164</commentid>
    <comment_count>15</comment_count>
      <attachid>417776</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-16 22:56:08 -0800</bug_when>
    <thetext>Created attachment 417776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720166</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-17 00:50:55 -0800</bug_when>
    <thetext>Committed r271560: &lt;https://trac.webkit.org/changeset/271560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720167</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-17 00:51:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73292189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720168</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-17 00:59:29 -0800</bug_when>
    <thetext>@George

Added `JSConfigureSignalForGC` SPI (not an API yet), so for now, you can use it by including `JSBasePrivate.h`. We could promote it to API later.
By default, JSC uses SIGUSR1. And embedder can select different signal if an embedder is using it e.g. SIGPWR, SIGXCPU etc. (for example, dotnet (mono), BoehmGC uses SIGPWR / SIGXCPU. Hotspot VM uses SIGUSR2.)
Call this function before initializing any part of JSC. After JSC initialization, JSConfigureSignalForGC fails (returning false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720169</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-17 01:23:28 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #18)
&gt; @George
&gt; 
&gt; Added `JSConfigureSignalForGC` SPI (not an API yet), so for now, you can use
&gt; it by including `JSBasePrivate.h`. We could promote it to API later.
&gt; By default, JSC uses SIGUSR1. And embedder can select different signal if an
&gt; embedder is using it e.g. SIGPWR, SIGXCPU etc. (for example, dotnet (mono),
&gt; BoehmGC uses SIGPWR / SIGXCPU. Hotspot VM uses SIGUSR2.)
&gt; Call this function before initializing any part of JSC. After JSC
&gt; initialization, JSConfigureSignalForGC fails (returning false).

Maybe, we also add environment variable thing too later.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417759</attachid>
            <date>2021-01-15 20:56:17 -0800</date>
            <delta_ts>2021-01-15 21:11:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220641-20210115205616.patch</filename>
            <type>text/plain</type>
            <size>11464</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmU2NTA2NTkyOTkyYmJjNTVkZmIwMWQyNDVmYTdlMmE2Mzk5NTk3Li43MDdhNmNmMmZiNGE4OTI0
MjIzZDZjMjQ4MGM3NjQ5OTIwYWZlMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBKU0MgQVBJIGNvbmZpZ3VyaW5nIEdDIHNpZ25hbHMgaW4gTGludXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBKU0Nv
bmZpZ3VyZVNpZ25hbEZvckdDIGZ1bmN0aW9uIGZvciBMaW51eCBhbmQgRnJlZUJTRCAobm9uIEFw
cGxlLCBub24gV2luZG93cyBwbGF0Zm9ybXMpLgorCisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6
CisgICAgICAgIChKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKToKKyAgICAgICAgKiBBUEkvSlNCYXNl
UHJpdmF0ZS5oOgorCiAyMDIxLTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gQ2xlYW4gdXAgREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZSB0
byBhdm9pZCBkdXBsaWNhdGUgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkMDFkMzc3N2FmNDUwMTRmYzBmODUxMGVhZTM0
M2FhZjE2ZjkwMmFmLi5lZmNmMzVhN2M2ZDAzYWFiNDNiZTI5ZDlmMTc2NDQxNmJlZTYwYjhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIEpTQyBBUEkgY29uZmlndXJpbmcgR0Mgc2lnbmFscyBp
biBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gTGludXggYW5kIEZyZWVCU0QsIHdlIG5lZWQgdG8gdXNlIHNpZ25hbHMgdG8gc3VzcGVuZCBh
bmQgcmVzdW1lIHRocmVhZHMuCisgICAgICAgIEJ5IGRlZmF1bHQsIHdlIGFyZSB1c2luZyBTSUdV
U1IxLCBidXQgaXQgaXMgcG9zc2libGUgdGhhdCBzb21lIGVtYmVkZGVycyB3YW50IHRvIHVzZQor
ICAgICAgICB0aGUgb3RoZXIgc2lnbmFscyBzaW5jZSB0aGV5IGFyZSB1c2luZyBTSUdVU1IxIGFs
cmVhZHkuIFRvIHdvcmstYXJvdW5kIHRoYXQsIHRoaXMKKyAgICAgICAgcGF0Y2ggb2ZmZXJzIHRo
ZSB3YXkgZm9yIGVtYmVkZGVycyB0byBjb25maWd1cmUgc2lnbmFscy4KKworICAgICAgICAqIHd0
Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwOgor
ICAgICAgICAoV1RGOjpUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKToKKyAgICAg
ICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcpOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
cmVzdW1lKToKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmNwcDoKKyAgICAgICAgKFdU
Rjo6YWRkU2lnbmFsSGFuZGxlcik6CisKIDIwMjEtMDEtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVu
ZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCAwOTYxYzY3ZDg5NDVlNzU2YWVkY2Q2ZWRmZDg2MjE0
N2M5MDhjMjMzLi5kMGM5MzMwN2MyZmE0ZmI2ODg0ZDY3MWIzYTY3MzQxYTVhYmRhMzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0xODIsNiArMTgyLDE2IEBAIHZvaWQg
SlNEaXNhYmxlR0NUaW1lcih2b2lkKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRD
cmVhdGVHQ1RpbWVyID0gZmFsc2U7CiB9CiAKKyNpZiAhT1MoREFSV0lOKSAmJiAhT1MoV0lORE9X
UykKK2Jvb2wgSlNDb25maWd1cmVTaWduYWxGb3JHQyhpbnQgc2lnbmFsKQoreworICAgIGlmIChX
VEY6OnNpZ1RocmVhZFN1c3BlbmRSZXN1bWVJc0Zyb3plbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFdURjo6c2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9IHNpZ25hbDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyNlbmRpZgorCiBKU09iamVjdFJlZiBKU0dldE1lbW9yeVVzYWdlU3RhdGlzdGlj
cyhKU0NvbnRleHRSZWYgY3R4KQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCmluZGV4IDE1MGY0NWUwNTgwZmNlMzk4NGE1MmJhZWFl
ZGM4NDU0YmZhOWQ0ZDIuLmYwN2Q3NmY5YTI1YzU0ZjM0M2MzMDQzMGI1NGI2Y2U3YzlhNmI4N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00Nyw2ICs0
NywxNiBAQCBKU19FWFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3Qgc2l6ZSkgSlNDX0FQSV9BVgogCiBKU19FWFBPUlQgdm9pZCBKU0Rpc2Fi
bGVHQ1RpbWVyKHZvaWQpOwogCisjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChX
SU4zMikgJiYgIWRlZmluZWQoX1dJTjMyKQorLyohCitAZnVuY3Rpb24gSlNDb25maWd1cmVTaWdu
YWxGb3JHQworQGFic3RyYWN0IENvbmZpZ3VyZSBzaWduYWxzIGZvciBHQyBpbiBub24tQXBwbGUg
YW5kIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KK0BwYXJhbSBzaWduYWwgVGhlIHNpZ25hbCBudW1i
ZXIgdG8gdXNlLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBzaWduYWwgaXMgc3VjY2Vzc2Z1bGx5IGNv
bmZpZ3VyZWQsIG90aGVyd2lzZSBmYWxzZS4KKyovCitKU19FWFBPUlQgYm9vbCBKU0NvbmZpZ3Vy
ZVNpZ25hbEZvckdDKGludCBzaWduYWwpOworI2VuZGlmCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJz
dHJhY3QgUHJvZHVjZXMgYW4gb2JqZWN0IHdpdGggdmFyaW91cyBzdGF0aXN0aWNzIGFib3V0IGN1
cnJlbnQgbWVtb3J5IHVzYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBjNWEyYWFlY2E3ZGI2YjczMzVh
MWY5NzAwNzNjMjI2YTQ4N2IzY2ZiLi40MzBkNDQxMjA0NWIyMmYwNTZmYjliYjAyNDY5ZDUzMTYy
NjI4YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtNzQsOCArNzQsOCBAQCBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplKCk7CiAKICNpZiBVU0UoUFRIUkVBRFMpCiAKLS8vIFdlIHVzZSBT
SUdVU1IxIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBtYWNoaW5lIHRocmVhZHMgaW4gSmF2YVNjcmlw
dENvcmUuCi1jb25zdGV4cHIgY29uc3QgaW50IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgPSBTSUdV
U1IxOworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgc2lnVGhyZWFkU3VzcGVuZFJlc3Vt
ZTsKK2V4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1l
SXNGcm96ZW47CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9U
aHJlYWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5j
cHAKaW5kZXggOTI1MzQ1MGQ4OTIxZjAwMTVlMDQ2ODRjNGM1ZjBiMDZkZmI4NTRkMi4uYTEwNThl
M2QwZjViOTczMzg3YTRiOWY3MTEyYjlmYWNhNzJjYjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtMTEzLDYgKzExMyw5IEBAIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8U2VtYXBob3JlPiBnbG9iYWxTZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lOwogCiBz
dGF0aWMgc3RkOjphdG9taWM8VGhyZWFkKj4gdGFyZ2V0VGhyZWFkIHsgbnVsbHB0ciB9OwogCitp
bnQgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSB7IC0xIH07Citib29sIHNpZ1RocmVhZFN1c3BlbmRS
ZXN1bWVJc0Zyb3plbiB7IGZhbHNlIH07CisKIHZvaWQgVGhyZWFkOjpzaWduYWxIYW5kbGVyU3Vz
cGVuZFJlc3VtZShpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVjb250ZXh0KQogewogICAgIC8vIFRv
dWNoaW5nIGEgZ2xvYmFsIHZhcmlhYmxlIGF0b21pYyB0eXBlcyBmcm9tIHNpZ25hbCBoYW5kbGVy
cyBpcyBhbGxvd2VkLgpAQCAtMTU4LDExICsxNjEsMTEgQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhh
bmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiAgICAg
Ly8gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvYmFzZWRl
ZnMvVjFfY2hhcDA0Lmh0bWwjdGFnXzA0XzExCiAgICAgZ2xvYmFsU2VtYXBob3JlRm9yU3VzcGVu
ZFJlc3VtZS0+cG9zdCgpOwogCi0gICAgLy8gUmVhY2hpbmcgaGVyZSwgU2lnVGhyZWFkU3VzcGVu
ZFJlc3VtZSBpcyBibG9ja2VkIGluIHRoaXMgaGFuZGxlciAodGhpcyBpcyBjb25maWd1cmVkIGJ5
IHNpZ2FjdGlvbidzIHNhX21hc2spLgotICAgIC8vIFNvIGJlZm9yZSBjYWxsaW5nIHNpZ3N1c3Bl
bmQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgdG8gdGhpcyB0aHJlYWQgaXMgZGVmZXJyZWQuIFRo
aXMgZW5zdXJlcyB0aGF0IHRoZSBoYW5kbGVyIGlzIG5vdCBleGVjdXRlZCByZWN1cnNpdmVseS4K
KyAgICAvLyBSZWFjaGluZyBoZXJlLCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGlzIGJsb2NrZWQg
aW4gdGhpcyBoYW5kbGVyICh0aGlzIGlzIGNvbmZpZ3VyZWQgYnkgc2lnYWN0aW9uJ3Mgc2FfbWFz
aykuCisgICAgLy8gU28gYmVmb3JlIGNhbGxpbmcgc2lnc3VzcGVuZCwgc2lnVGhyZWFkU3VzcGVu
ZFJlc3VtZSB0byB0aGlzIHRocmVhZCBpcyBkZWZlcnJlZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhl
IGhhbmRsZXIgaXMgbm90IGV4ZWN1dGVkIHJlY3Vyc2l2ZWx5LgogICAgIHNpZ3NldF90IGJsb2Nr
ZWRTaWduYWxTZXQ7CiAgICAgc2lnZmlsbHNldCgmYmxvY2tlZFNpZ25hbFNldCk7Ci0gICAgc2ln
ZGVsc2V0KCZibG9ja2VkU2lnbmFsU2V0LCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKKyAgICBz
aWdkZWxzZXQoJmJsb2NrZWRTaWduYWxTZXQsIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOwogICAg
IHNpZ3N1c3BlbmQoJmJsb2NrZWRTaWduYWxTZXQpOwogCiAgICAgdGhyZWFkLT5tX3BsYXRmb3Jt
UmVnaXN0ZXJzID0gbnVsbHB0cjsKQEAgLTE3OSwxNSArMTgyLDM1IEBAIHZvaWQgVGhyZWFkOjpp
bml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKQogICAgIGdsb2JhbFNlbWFwaG9yZUZvclN1c3Bl
bmRSZXN1bWUuY29uc3RydWN0KDApOwogCiAgICAgLy8gU2lnbmFsIGhhbmRsZXJzIGFyZSBwcm9j
ZXNzIGdsb2JhbCBjb25maWd1cmF0aW9uLgotICAgIC8vIEludGVudGlvbmFsbHkgYmxvY2sgU2ln
VGhyZWFkU3VzcGVuZFJlc3VtZSBpbiB0aGUgaGFuZGxlci4KLSAgICAvLyBTaWdUaHJlYWRTdXNw
ZW5kUmVzdW1lIHdpbGwgYmUgYWxsb3dlZCBpbiB0aGUgaGFuZGxlciBieSBzaWdzdXNwZW5kLgot
ICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2Ff
bWFzayk7Ci0gICAgc2lnYWRkc2V0KCZhY3Rpb24uc2FfbWFzaywgU2lnVGhyZWFkU3VzcGVuZFJl
c3VtZSk7Ci0KLSAgICBhY3Rpb24uc2Ffc2lnYWN0aW9uID0gJnNpZ25hbEhhbmRsZXJTdXNwZW5k
UmVzdW1lOwotICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOwot
ICAgIHNpZ2FjdGlvbihTaWdUaHJlYWRTdXNwZW5kUmVzdW1lLCAmYWN0aW9uLCAwKTsKKyAgICAv
LyBJbnRlbnRpb25hbGx5IGJsb2NrIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaW4gdGhlIGhhbmRs
ZXIuCisgICAgLy8gc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSB3aWxsIGJlIGFsbG93ZWQgaW4gdGhl
IGhhbmRsZXIgYnkgc2lnc3VzcGVuZC4KKyAgICBhdXRvIGF0dGVtcHRUb1NldFNpZ25hbCA9IFtd
KGludCBzaWduYWwpIC0+IGJvb2wgeworICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsK
KyAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgc2lnYWRkc2V0
KCZhY3Rpb24uc2FfbWFzaywgc2lnbmFsKTsKKworICAgICAgICBhY3Rpb24uc2Ffc2lnYWN0aW9u
ID0gJnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lOworICAgICAgICBhY3Rpb24uc2FfZmxhZ3Mg
PSBTQV9SRVNUQVJUIHwgU0FfU0lHSU5GTzsKKworICAgICAgICAvLyBUaGVvcmV0aWNhbGx5LCB0
aGlzIGNhbiBoYXZlIHJhY2UgY29uZGl0aW9ucyBidXQgY3VycmVudGx5LCB0aGVyZSBpcyBubyB3
YXkgdG8gZGVhbCB3aXRoIGl0LAorICAgICAgICAvLyBwbHVzLCB3ZSBkbyBub3QgZXhwZWN0IHRo
YXQgdGhpcyBpbml0aWFsaXphdGlvbiBpcyBleGVjdXRlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUg
b3RoZXIKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gd2hpY2ggYWxzbyBpbnN0YWxscyBzcGVj
aWZpYyBzaWduYWxzLiBJZiB0aGlzIGlzIHRoZSBwcm9ibGVtLCBhcHBsaWNhdGlvbnMgc2hvdWxk
CisgICAgICAgIC8vIGNoYW5nZSBob3cgdG8gaW5pdGlhbGl6ZSB0aGluZ3MuCisgICAgICAgIHN0
cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgICAgICBpZiAoc2lnYWN0aW9uKHNpZ25hbCwg
bnVsbHB0ciwgJm9sZEFjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IC8vIEl0IGhhcyBzaWduYWwgYWxyZWFkeS4KKyAgICAgICAgaWYgKG9sZEFjdGlvbi5zYV9oYW5k
bGVyICE9IFNJR19ERkwgfHwgYml0d2lzZV9jYXN0PHZvaWQqPihvbGRBY3Rpb24uc2Ffc2lnYWN0
aW9uKSAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KFNJR19ERkwpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gIXNpZ2FjdGlvbihzaWduYWwsICZhY3Rpb24sIDApOwor
ICAgIH07CisKKyAgICBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lSXNGcm96ZW4gPSB0cnVlOworICAg
IHN0b3JlU3RvcmVGZW5jZSgpOworICAgIGlmIChzaWdUaHJlYWRTdXNwZW5kUmVzdW1lID09IC0x
KQorICAgICAgICBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lID0gU0lHVVNSMTsKKyAgICBib29sIHNp
Z25hbElzSW5zdGFsbGVkID0gYXR0ZW1wdFRvU2V0U2lnbmFsKHNpZ1RocmVhZFN1c3BlbmRSZXN1
bWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25hbElzSW5zdGFsbGVkKTsKICNlbmRpZgogfQog
CkBAIC0yMDEsOSArMjI0LDEwIEBAIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQo
KQogdm9pZCBUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRl
ZCgpCiB7CiAjaWYgIU9TKERBUldJTikKKyAgICBSRUxFQVNFX0FTU0VSVChzaWdUaHJlYWRTdXNw
ZW5kUmVzdW1lICE9IC0xKTsKICAgICBzaWdzZXRfdCBtYXNrOwogICAgIHNpZ2VtcHR5c2V0KCZt
YXNrKTsKLSAgICBzaWdhZGRzZXQoJm1hc2ssIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAg
IHNpZ2FkZHNldCgmbWFzaywgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgcHRocmVhZF9z
aWdtYXNrKFNJR19VTkJMT0NLLCAmbWFzaywgMCk7CiAjZW5kaWYKIH0KQEAgLTM2MiwxMyArMzg2
LDExIEBAIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9pZCwgUGxhdGZvcm1T
dXNwZW5kRXJyb3I+CiAgICAgcmV0dXJuIHsgfTsKICNlbHNlCiAgICAgaWYgKCFtX3N1c3BlbmRD
b3VudCkgewotICAgICAgICAvLyBJZGVhbGx5LCB3ZSB3b3VsZCBsaWtlIHRvIHVzZSBwdGhyZWFk
X3NpZ3F1ZXVlLiBJdCBhbGxvd3MgdXMgdG8gcGFzcyB0aGUgYXJndW1lbnQgdG8gdGhlIHNpZ25h
bCBoYW5kbGVyLgotICAgICAgICAvLyBCdXQgaXQgY2FuIGJlIHVzZWQgaW4gYSBmZXcgcGxhdGZv
cm1zLCBsaWtlIExpbnV4LgotICAgICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgVGhyZWFkKiBzdG9y
ZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUgdG8gcGFzcyBpdCB0byB0aGUgc2lnbmFsIGhhbmRsZXIu
CiAgICAgICAgIHRhcmdldFRocmVhZC5zdG9yZSh0aGlzKTsKIAogICAgICAgICB3aGlsZSAodHJ1
ZSkgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfa2lsbChtX2hhbmRsZSwgU2ln
VGhyZWFkU3VzcGVuZFJlc3VtZSk7CisgICAgICAgICAgICAvLyBXZSBtdXN0IHVzZSBwdGhyZWFk
X2tpbGwgdG8gYXZvaWQgcXVldWUtb3ZlcmZsb3cgcHJvYmxlbSB3aXRoIHJlYWwtdGltZSBzaWdu
YWxzLgorICAgICAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfa2lsbChtX2hhbmRsZSwgc2ln
VGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQpOwogICAgICAgICAgICAgZ2xvYmFs
U2VtYXBob3JlRm9yU3VzcGVuZFJlc3VtZS0+d2FpdCgpOwpAQCAtMzkyLDE1ICs0MTQsMTYgQEAg
dm9pZCBUaHJlYWQ6OnJlc3VtZSgpCiAgICAgdGhyZWFkX3Jlc3VtZShtX3BsYXRmb3JtVGhyZWFk
KTsKICNlbHNlCiAgICAgaWYgKG1fc3VzcGVuZENvdW50ID09IDEpIHsKLSAgICAgICAgLy8gV2hl
biBhbGxvd2luZyBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGludGVycnVwdCBpbiB0aGUgc2lnbmFs
IGhhbmRsZXIgYnkgc2lnc3VzcGVuZCBhbmQgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpcyBhY3R1
YWxseSBpc3N1ZWQsCisgICAgICAgIC8vIFdoZW4gYWxsb3dpbmcgc2lnVGhyZWFkU3VzcGVuZFJl
c3VtZSBpbnRlcnJ1cHQgaW4gdGhlIHNpZ25hbCBoYW5kbGVyIGJ5IHNpZ3N1c3BlbmQgYW5kIFNp
Z1RocmVhZFN1c3BlbmRSZXN1bWUgaXMgYWN0dWFsbHkgaXNzdWVkLAogICAgICAgICAvLyB0aGUg
c2lnbmFsIGhhbmRsZXIgaXRzZWxmIHdpbGwgYmUgY2FsbGVkIG9uY2UgYWdhaW4uCiAgICAgICAg
IC8vIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZGlzdGluZ3Vpc2ggdGhlIGhhbmRsZXIgaW52
b2NhdGlvbiBmb3Igc3VzcGVuZCBhbmQgcmVzdW1lLgogICAgICAgICAvLyAxLiBVc2UgZGlmZmVy
ZW50IHNpZ25hbCBudW1iZXJzLiBBbmQgY2hlY2sgdGhlIHNpZ25hbCBudW1iZXIgaW4gdGhlIGhh
bmRsZXIuCi0gICAgICAgIC8vIDIuIFVzZSBzb21lIGFyZ3VtZW50cyB0byBkaXN0aW5ndWlzaCBz
dXNwZW5kIGFuZCByZXN1bWUgaW4gdGhlIGhhbmRsZXIuIElmIHB0aHJlYWRfc2lncXVldWUgY2Fu
IGJlIHVzZWQsIHdlIGNhbiB0YWtlIHRoaXMuCisgICAgICAgIC8vIDIuIFVzZSBzb21lIGFyZ3Vt
ZW50cyB0byBkaXN0aW5ndWlzaCBzdXNwZW5kIGFuZCByZXN1bWUgaW4gdGhlIGhhbmRsZXIuCiAg
ICAgICAgIC8vIDMuIFVzZSB0aHJlYWQncyBmbGFnLgogICAgICAgICAvLyBJbiB0aGlzIGltcGxl
bWVudGFpdG9uLCB3ZSB0YWtlICgzKS4gbV9zdXNwZW5kQ291bnQgaXMgdXNlZCB0byBkaXN0aW5n
dWlzaCBpdC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIG11c3QgdXNlIHB0aHJlYWRfa2lsbCB0
byBhdm9pZCBxdWV1ZS1vdmVyZmxvdyBwcm9ibGVtIHdpdGggcmVhbC10aW1lIHNpZ25hbHMuCiAg
ICAgICAgIHRhcmdldFRocmVhZC5zdG9yZSh0aGlzKTsKLSAgICAgICAgaWYgKHB0aHJlYWRfa2ls
bChtX2hhbmRsZSwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSkgPT0gRVNSQ0gpCisgICAgICAgIGlm
IChwdGhyZWFkX2tpbGwobV9oYW5kbGUsIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpID09IEVTUkNI
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBnbG9iYWxTZW1hcGhvcmVGb3JTdXNwZW5k
UmVzdW1lLT53YWl0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXgg
OTU2MjI2NjE1ZmQxMzc5NzliZDZiODc2MDlhYTFmOGEzNDI2NWUwZC4uM2ZhMzYwYzIwZWVjNWMz
YzNiNTRjNzE4ZWNmM2RhZGY3ZDExYmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3Bw
CkBAIC0zMDUsNyArMzA1LDggQEAgdm9pZCBhZGRTaWduYWxIYW5kbGVyKFNpZ25hbCBzaWduYWws
IFNpZ25hbEhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzaWdm
aWxsc2V0KCZhY3Rpb24uc2FfbWFzayk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVz
dWx0KTsKICAgICAgICAgICAgIC8vIERvIG5vdCBibG9jayB0aGlzIHNpZ25hbCBzaW5jZSBpdCBp
cyB1c2VkIG9uIG5vbi1EYXJ3aW4gc3lzdGVtcyB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhyZWFk
cy4KLSAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2RlbHNldCgmYWN0aW9uLnNhX21hc2ssIFNpZ1Ro
cmVhZFN1c3BlbmRSZXN1bWUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2lnVGhyZWFk
U3VzcGVuZFJlc3VtZSAhPSAtMSk7CisgICAgICAgICAgICByZXN1bHQgPSBzaWdkZWxzZXQoJmFj
dGlvbi5zYV9tYXNrLCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfU0lH
SU5GTzsKICAgICAgICAgICAgIGF1dG8gc3lzdGVtU2lnbmFscyA9IHRvU3lzdGVtU2lnbmFsKHNp
Z25hbCk7Cg==
</data>
<flag name="commit-queue"
          id="435541"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417760</attachid>
            <date>2021-01-15 21:10:27 -0800</date>
            <delta_ts>2021-01-16 15:18:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220641-20210115211026.patch</filename>
            <type>text/plain</type>
            <size>11353</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmU2NTA2NTkyOTkyYmJjNTVkZmIwMWQyNDVmYTdlMmE2Mzk5NTk3Li43MDdhNmNmMmZiNGE4OTI0
MjIzZDZjMjQ4MGM3NjQ5OTIwYWZlMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBKU0MgQVBJIGNvbmZpZ3VyaW5nIEdDIHNpZ25hbHMgaW4gTGludXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBKU0Nv
bmZpZ3VyZVNpZ25hbEZvckdDIGZ1bmN0aW9uIGZvciBMaW51eCBhbmQgRnJlZUJTRCAobm9uIEFw
cGxlLCBub24gV2luZG93cyBwbGF0Zm9ybXMpLgorCisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6
CisgICAgICAgIChKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKToKKyAgICAgICAgKiBBUEkvSlNCYXNl
UHJpdmF0ZS5oOgorCiAyMDIxLTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gQ2xlYW4gdXAgREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZSB0
byBhdm9pZCBkdXBsaWNhdGUgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkMDFkMzc3N2FmNDUwMTRmYzBmODUxMGVhZTM0
M2FhZjE2ZjkwMmFmLi5lZmNmMzVhN2M2ZDAzYWFiNDNiZTI5ZDlmMTc2NDQxNmJlZTYwYjhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIEpTQyBBUEkgY29uZmlndXJpbmcgR0Mgc2lnbmFscyBp
biBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gTGludXggYW5kIEZyZWVCU0QsIHdlIG5lZWQgdG8gdXNlIHNpZ25hbHMgdG8gc3VzcGVuZCBh
bmQgcmVzdW1lIHRocmVhZHMuCisgICAgICAgIEJ5IGRlZmF1bHQsIHdlIGFyZSB1c2luZyBTSUdV
U1IxLCBidXQgaXQgaXMgcG9zc2libGUgdGhhdCBzb21lIGVtYmVkZGVycyB3YW50IHRvIHVzZQor
ICAgICAgICB0aGUgb3RoZXIgc2lnbmFscyBzaW5jZSB0aGV5IGFyZSB1c2luZyBTSUdVU1IxIGFs
cmVhZHkuIFRvIHdvcmstYXJvdW5kIHRoYXQsIHRoaXMKKyAgICAgICAgcGF0Y2ggb2ZmZXJzIHRo
ZSB3YXkgZm9yIGVtYmVkZGVycyB0byBjb25maWd1cmUgc2lnbmFscy4KKworICAgICAgICAqIHd0
Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwOgor
ICAgICAgICAoV1RGOjpUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKToKKyAgICAg
ICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcpOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
cmVzdW1lKToKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmNwcDoKKyAgICAgICAgKFdU
Rjo6YWRkU2lnbmFsSGFuZGxlcik6CisKIDIwMjEtMDEtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVu
ZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCAwOTYxYzY3ZDg5NDVlNzU2YWVkY2Q2ZWRmZDg2MjE0
N2M5MDhjMjMzLi5kMGM5MzMwN2MyZmE0ZmI2ODg0ZDY3MWIzYTY3MzQxYTVhYmRhMzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0xODIsNiArMTgyLDE2IEBAIHZvaWQg
SlNEaXNhYmxlR0NUaW1lcih2b2lkKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRD
cmVhdGVHQ1RpbWVyID0gZmFsc2U7CiB9CiAKKyNpZiAhT1MoREFSV0lOKSAmJiAhT1MoV0lORE9X
UykKK2Jvb2wgSlNDb25maWd1cmVTaWduYWxGb3JHQyhpbnQgc2lnbmFsKQoreworICAgIGlmIChX
VEY6OnNpZ1RocmVhZFN1c3BlbmRSZXN1bWVJc0Zyb3plbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFdURjo6c2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9IHNpZ25hbDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyNlbmRpZgorCiBKU09iamVjdFJlZiBKU0dldE1lbW9yeVVzYWdlU3RhdGlzdGlj
cyhKU0NvbnRleHRSZWYgY3R4KQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCmluZGV4IDE1MGY0NWUwNTgwZmNlMzk4NGE1MmJhZWFl
ZGM4NDU0YmZhOWQ0ZDIuLmYwN2Q3NmY5YTI1YzU0ZjM0M2MzMDQzMGI1NGI2Y2U3YzlhNmI4N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00Nyw2ICs0
NywxNiBAQCBKU19FWFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3Qgc2l6ZSkgSlNDX0FQSV9BVgogCiBKU19FWFBPUlQgdm9pZCBKU0Rpc2Fi
bGVHQ1RpbWVyKHZvaWQpOwogCisjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChX
SU4zMikgJiYgIWRlZmluZWQoX1dJTjMyKQorLyohCitAZnVuY3Rpb24gSlNDb25maWd1cmVTaWdu
YWxGb3JHQworQGFic3RyYWN0IENvbmZpZ3VyZSBzaWduYWxzIGZvciBHQyBpbiBub24tQXBwbGUg
YW5kIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KK0BwYXJhbSBzaWduYWwgVGhlIHNpZ25hbCBudW1i
ZXIgdG8gdXNlLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBzaWduYWwgaXMgc3VjY2Vzc2Z1bGx5IGNv
bmZpZ3VyZWQsIG90aGVyd2lzZSBmYWxzZS4KKyovCitKU19FWFBPUlQgYm9vbCBKU0NvbmZpZ3Vy
ZVNpZ25hbEZvckdDKGludCBzaWduYWwpOworI2VuZGlmCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJz
dHJhY3QgUHJvZHVjZXMgYW4gb2JqZWN0IHdpdGggdmFyaW91cyBzdGF0aXN0aWNzIGFib3V0IGN1
cnJlbnQgbWVtb3J5IHVzYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBjNWEyYWFlY2E3ZGI2YjczMzVh
MWY5NzAwNzNjMjI2YTQ4N2IzY2ZiLi40MzBkNDQxMjA0NWIyMmYwNTZmYjliYjAyNDY5ZDUzMTYy
NjI4YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtNzQsOCArNzQsOCBAQCBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplKCk7CiAKICNpZiBVU0UoUFRIUkVBRFMpCiAKLS8vIFdlIHVzZSBT
SUdVU1IxIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBtYWNoaW5lIHRocmVhZHMgaW4gSmF2YVNjcmlw
dENvcmUuCi1jb25zdGV4cHIgY29uc3QgaW50IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgPSBTSUdV
U1IxOworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgc2lnVGhyZWFkU3VzcGVuZFJlc3Vt
ZTsKK2V4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1l
SXNGcm96ZW47CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9U
aHJlYWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5j
cHAKaW5kZXggOTI1MzQ1MGQ4OTIxZjAwMTVlMDQ2ODRjNGM1ZjBiMDZkZmI4NTRkMi4uZmMyNTkx
OGM5ZTI0NjZhNzNlMDZjZGQzZjQ1ZmU3ZjQ2YTY5Y2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtNzYsNiArNzYsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAK
IHN0YXRpYyBMb2NrIGdsb2JhbFN1c3BlbmRMb2NrOwogCitpbnQgc2lnVGhyZWFkU3VzcGVuZFJl
c3VtZSB7IC0xIH07Citib29sIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWVJc0Zyb3plbiB7IGZhbHNl
IH07CisKKwogVGhyZWFkOjp+VGhyZWFkKCkKIHsKIH0KQEAgLTE1OCwxMSArMTYyLDExIEBAIHZv
aWQgVGhyZWFkOjpzaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZShpbnQsIHNpZ2luZm9fdCosIHZv
aWQqIHVjb250ZXh0KQogICAgIC8vIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVi
cy85Njk5OTE5Nzk5L2Jhc2VkZWZzL1YxX2NoYXAwNC5odG1sI3RhZ18wNF8xMQogICAgIGdsb2Jh
bFNlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUtPnBvc3QoKTsKIAotICAgIC8vIFJlYWNoaW5nIGhl
cmUsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaXMgYmxvY2tlZCBpbiB0aGlzIGhhbmRsZXIgKHRo
aXMgaXMgY29uZmlndXJlZCBieSBzaWdhY3Rpb24ncyBzYV9tYXNrKS4KLSAgICAvLyBTbyBiZWZv
cmUgY2FsbGluZyBzaWdzdXNwZW5kLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIHRvIHRoaXMgdGhy
ZWFkIGlzIGRlZmVycmVkLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgaGFuZGxlciBpcyBub3QgZXhl
Y3V0ZWQgcmVjdXJzaXZlbHkuCisgICAgLy8gUmVhY2hpbmcgaGVyZSwgc2lnVGhyZWFkU3VzcGVu
ZFJlc3VtZSBpcyBibG9ja2VkIGluIHRoaXMgaGFuZGxlciAodGhpcyBpcyBjb25maWd1cmVkIGJ5
IHNpZ2FjdGlvbidzIHNhX21hc2spLgorICAgIC8vIFNvIGJlZm9yZSBjYWxsaW5nIHNpZ3N1c3Bl
bmQsIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgdG8gdGhpcyB0aHJlYWQgaXMgZGVmZXJyZWQuIFRo
aXMgZW5zdXJlcyB0aGF0IHRoZSBoYW5kbGVyIGlzIG5vdCBleGVjdXRlZCByZWN1cnNpdmVseS4K
ICAgICBzaWdzZXRfdCBibG9ja2VkU2lnbmFsU2V0OwogICAgIHNpZ2ZpbGxzZXQoJmJsb2NrZWRT
aWduYWxTZXQpOwotICAgIHNpZ2RlbHNldCgmYmxvY2tlZFNpZ25hbFNldCwgU2lnVGhyZWFkU3Vz
cGVuZFJlc3VtZSk7CisgICAgc2lnZGVsc2V0KCZibG9ja2VkU2lnbmFsU2V0LCBzaWdUaHJlYWRT
dXNwZW5kUmVzdW1lKTsKICAgICBzaWdzdXNwZW5kKCZibG9ja2VkU2lnbmFsU2V0KTsKIAogICAg
IHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IG51bGxwdHI7CkBAIC0xNzUsMTkgKzE3OSw0
MCBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZv
X3QqLCB2b2lkKiB1Y29udGV4dCkKIAogdm9pZCBUaHJlYWQ6OmluaXRpYWxpemVQbGF0Zm9ybVRo
cmVhZGluZygpCiB7CisgICAgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZUlzRnJvemVuID0gdHJ1ZTsK
KyAgICBzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICBpZiAoc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9
PSAtMSkKKyAgICAgICAgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9IFNJR1VTUjE7CisKICNpZiAh
T1MoREFSV0lOKQogICAgIGdsb2JhbFNlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUuY29uc3RydWN0
KDApOwogCiAgICAgLy8gU2lnbmFsIGhhbmRsZXJzIGFyZSBwcm9jZXNzIGdsb2JhbCBjb25maWd1
cmF0aW9uLgotICAgIC8vIEludGVudGlvbmFsbHkgYmxvY2sgU2lnVGhyZWFkU3VzcGVuZFJlc3Vt
ZSBpbiB0aGUgaGFuZGxlci4KLSAgICAvLyBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIHdpbGwgYmUg
YWxsb3dlZCBpbiB0aGUgaGFuZGxlciBieSBzaWdzdXNwZW5kLgotICAgIHN0cnVjdCBzaWdhY3Rp
b24gYWN0aW9uOwotICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7Ci0gICAgc2lnYWRk
c2V0KCZhY3Rpb24uc2FfbWFzaywgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7Ci0KLSAgICBhY3Rp
b24uc2Ffc2lnYWN0aW9uID0gJnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lOwotICAgIGFjdGlv
bi5zYV9mbGFncyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOwotICAgIHNpZ2FjdGlvbihTaWdU
aHJlYWRTdXNwZW5kUmVzdW1lLCAmYWN0aW9uLCAwKTsKKyAgICAvLyBJbnRlbnRpb25hbGx5IGJs
b2NrIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaW4gdGhlIGhhbmRsZXIuCisgICAgLy8gc2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSB3aWxsIGJlIGFsbG93ZWQgaW4gdGhlIGhhbmRsZXIgYnkgc2lnc3Vz
cGVuZC4KKyAgICBhdXRvIGF0dGVtcHRUb1NldFNpZ25hbCA9IFtdKGludCBzaWduYWwpIC0+IGJv
b2wgeworICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKKyAgICAgICAgc2lnZW1wdHlz
ZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgc2lnYWRkc2V0KCZhY3Rpb24uc2FfbWFzaywg
c2lnbmFsKTsKKworICAgICAgICBhY3Rpb24uc2Ffc2lnYWN0aW9uID0gJnNpZ25hbEhhbmRsZXJT
dXNwZW5kUmVzdW1lOworICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNUQVJUIHwgU0Ff
U0lHSU5GTzsKKworICAgICAgICAvLyBUaGVvcmV0aWNhbGx5LCB0aGlzIGNhbiBoYXZlIHJhY2Ug
Y29uZGl0aW9ucyBidXQgY3VycmVudGx5LCB0aGVyZSBpcyBubyB3YXkgdG8gZGVhbCB3aXRoIGl0
LAorICAgICAgICAvLyBwbHVzLCB3ZSBkbyBub3QgZXhwZWN0IHRoYXQgdGhpcyBpbml0aWFsaXph
dGlvbiBpcyBleGVjdXRlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgb3RoZXIKKyAgICAgICAgLy8g
aW5pdGlhbGl6YXRpb24gd2hpY2ggYWxzbyBpbnN0YWxscyBzcGVjaWZpYyBzaWduYWxzLiBJZiB0
aGlzIGlzIHRoZSBwcm9ibGVtLCBhcHBsaWNhdGlvbnMgc2hvdWxkCisgICAgICAgIC8vIGNoYW5n
ZSBob3cgdG8gaW5pdGlhbGl6ZSB0aGluZ3MuCisgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xk
QWN0aW9uOworICAgICAgICBpZiAoc2lnYWN0aW9uKHNpZ25hbCwgbnVsbHB0ciwgJm9sZEFjdGlv
bikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIEl0IGhhcyBzaWduYWwg
YWxyZWFkeS4KKyAgICAgICAgaWYgKG9sZEFjdGlvbi5zYV9oYW5kbGVyICE9IFNJR19ERkwgfHwg
Yml0d2lzZV9jYXN0PHZvaWQqPihvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKSAhPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KFNJR19ERkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gIXNpZ2FjdGlvbihzaWduYWwsICZhY3Rpb24sIDApOworICAgIH07CisKKyAgICBib29s
IHNpZ25hbElzSW5zdGFsbGVkID0gYXR0ZW1wdFRvU2V0U2lnbmFsKHNpZ1RocmVhZFN1c3BlbmRS
ZXN1bWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25hbElzSW5zdGFsbGVkKTsKICNlbmRpZgog
fQogCkBAIC0yMDEsOSArMjI2LDEwIEBAIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50
SUQoKQogdm9pZCBUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3Jl
YXRlZCgpCiB7CiAjaWYgIU9TKERBUldJTikKKyAgICBSRUxFQVNFX0FTU0VSVChzaWdUaHJlYWRT
dXNwZW5kUmVzdW1lICE9IC0xKTsKICAgICBzaWdzZXRfdCBtYXNrOwogICAgIHNpZ2VtcHR5c2V0
KCZtYXNrKTsKLSAgICBzaWdhZGRzZXQoJm1hc2ssIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOwor
ICAgIHNpZ2FkZHNldCgmbWFzaywgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgcHRocmVh
ZF9zaWdtYXNrKFNJR19VTkJMT0NLLCAmbWFzaywgMCk7CiAjZW5kaWYKIH0KQEAgLTM2MiwxMyAr
Mzg4LDExIEBAIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9pZCwgUGxhdGZv
cm1TdXNwZW5kRXJyb3I+CiAgICAgcmV0dXJuIHsgfTsKICNlbHNlCiAgICAgaWYgKCFtX3N1c3Bl
bmRDb3VudCkgewotICAgICAgICAvLyBJZGVhbGx5LCB3ZSB3b3VsZCBsaWtlIHRvIHVzZSBwdGhy
ZWFkX3NpZ3F1ZXVlLiBJdCBhbGxvd3MgdXMgdG8gcGFzcyB0aGUgYXJndW1lbnQgdG8gdGhlIHNp
Z25hbCBoYW5kbGVyLgotICAgICAgICAvLyBCdXQgaXQgY2FuIGJlIHVzZWQgaW4gYSBmZXcgcGxh
dGZvcm1zLCBsaWtlIExpbnV4LgotICAgICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgVGhyZWFkKiBz
dG9yZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUgdG8gcGFzcyBpdCB0byB0aGUgc2lnbmFsIGhhbmRs
ZXIuCiAgICAgICAgIHRhcmdldFRocmVhZC5zdG9yZSh0aGlzKTsKIAogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfa2lsbChtX2hhbmRsZSwg
U2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CisgICAgICAgICAgICAvLyBXZSBtdXN0IHVzZSBwdGhy
ZWFkX2tpbGwgdG8gYXZvaWQgcXVldWUtb3ZlcmZsb3cgcHJvYmxlbSB3aXRoIHJlYWwtdGltZSBz
aWduYWxzLgorICAgICAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfa2lsbChtX2hhbmRsZSwg
c2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQpOwogICAgICAgICAgICAgZ2xv
YmFsU2VtYXBob3JlRm9yU3VzcGVuZFJlc3VtZS0+d2FpdCgpOwpAQCAtMzkyLDE1ICs0MTYsMTYg
QEAgdm9pZCBUaHJlYWQ6OnJlc3VtZSgpCiAgICAgdGhyZWFkX3Jlc3VtZShtX3BsYXRmb3JtVGhy
ZWFkKTsKICNlbHNlCiAgICAgaWYgKG1fc3VzcGVuZENvdW50ID09IDEpIHsKLSAgICAgICAgLy8g
V2hlbiBhbGxvd2luZyBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGludGVycnVwdCBpbiB0aGUgc2ln
bmFsIGhhbmRsZXIgYnkgc2lnc3VzcGVuZCBhbmQgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpcyBh
Y3R1YWxseSBpc3N1ZWQsCisgICAgICAgIC8vIFdoZW4gYWxsb3dpbmcgc2lnVGhyZWFkU3VzcGVu
ZFJlc3VtZSBpbnRlcnJ1cHQgaW4gdGhlIHNpZ25hbCBoYW5kbGVyIGJ5IHNpZ3N1c3BlbmQgYW5k
IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaXMgYWN0dWFsbHkgaXNzdWVkLAogICAgICAgICAvLyB0
aGUgc2lnbmFsIGhhbmRsZXIgaXRzZWxmIHdpbGwgYmUgY2FsbGVkIG9uY2UgYWdhaW4uCiAgICAg
ICAgIC8vIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZGlzdGluZ3Vpc2ggdGhlIGhhbmRsZXIg
aW52b2NhdGlvbiBmb3Igc3VzcGVuZCBhbmQgcmVzdW1lLgogICAgICAgICAvLyAxLiBVc2UgZGlm
ZmVyZW50IHNpZ25hbCBudW1iZXJzLiBBbmQgY2hlY2sgdGhlIHNpZ25hbCBudW1iZXIgaW4gdGhl
IGhhbmRsZXIuCi0gICAgICAgIC8vIDIuIFVzZSBzb21lIGFyZ3VtZW50cyB0byBkaXN0aW5ndWlz
aCBzdXNwZW5kIGFuZCByZXN1bWUgaW4gdGhlIGhhbmRsZXIuIElmIHB0aHJlYWRfc2lncXVldWUg
Y2FuIGJlIHVzZWQsIHdlIGNhbiB0YWtlIHRoaXMuCisgICAgICAgIC8vIDIuIFVzZSBzb21lIGFy
Z3VtZW50cyB0byBkaXN0aW5ndWlzaCBzdXNwZW5kIGFuZCByZXN1bWUgaW4gdGhlIGhhbmRsZXIu
CiAgICAgICAgIC8vIDMuIFVzZSB0aHJlYWQncyBmbGFnLgogICAgICAgICAvLyBJbiB0aGlzIGlt
cGxlbWVudGFpdG9uLCB3ZSB0YWtlICgzKS4gbV9zdXNwZW5kQ291bnQgaXMgdXNlZCB0byBkaXN0
aW5ndWlzaCBpdC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIG11c3QgdXNlIHB0aHJlYWRfa2ls
bCB0byBhdm9pZCBxdWV1ZS1vdmVyZmxvdyBwcm9ibGVtIHdpdGggcmVhbC10aW1lIHNpZ25hbHMu
CiAgICAgICAgIHRhcmdldFRocmVhZC5zdG9yZSh0aGlzKTsKLSAgICAgICAgaWYgKHB0aHJlYWRf
a2lsbChtX2hhbmRsZSwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSkgPT0gRVNSQ0gpCisgICAgICAg
IGlmIChwdGhyZWFkX2tpbGwobV9oYW5kbGUsIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpID09IEVT
UkNIKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBnbG9iYWxTZW1hcGhvcmVGb3JTdXNw
ZW5kUmVzdW1lLT53YWl0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5k
ZXggOTU2MjI2NjE1ZmQxMzc5NzliZDZiODc2MDlhYTFmOGEzNDI2NWUwZC4uM2ZhMzYwYzIwZWVj
NWMzYzNiNTRjNzE4ZWNmM2RhZGY3ZDExYmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGhyZWFkcy9TaWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMu
Y3BwCkBAIC0zMDUsNyArMzA1LDggQEAgdm9pZCBhZGRTaWduYWxIYW5kbGVyKFNpZ25hbCBzaWdu
YWwsIFNpZ25hbEhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBz
aWdmaWxsc2V0KCZhY3Rpb24uc2FfbWFzayk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
cmVzdWx0KTsKICAgICAgICAgICAgIC8vIERvIG5vdCBibG9jayB0aGlzIHNpZ25hbCBzaW5jZSBp
dCBpcyB1c2VkIG9uIG5vbi1EYXJ3aW4gc3lzdGVtcyB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhy
ZWFkcy4KLSAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2RlbHNldCgmYWN0aW9uLnNhX21hc2ssIFNp
Z1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSAhPSAtMSk7CisgICAgICAgICAgICByZXN1bHQgPSBzaWdkZWxzZXQo
JmFjdGlvbi5zYV9tYXNrLCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0Ff
U0lHSU5GTzsKICAgICAgICAgICAgIGF1dG8gc3lzdGVtU2lnbmFscyA9IHRvU3lzdGVtU2lnbmFs
KHNpZ25hbCk7Cg==
</data>
<flag name="review"
          id="435540"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417775</attachid>
            <date>2021-01-16 22:51:28 -0800</date>
            <delta_ts>2021-01-16 22:54:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220641-20210116225127.patch</filename>
            <type>text/plain</type>
            <size>13090</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDFkNDlmMDQ5MGYwMjA2MWZiZGRmYjUzOTM3MTFhNDdhZDNiYjgxLi4zM2FmNTIyZTViNWNmM2I5
NDgwNWFhNTg1ZDI4ZTI0NDYzMWE2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wMS0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBKU0MgQVBJIGNvbmZpZ3VyaW5nIEdDIHNpZ25hbHMgaW4gTGludXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgIEFkZCBKU0NvbmZpZ3Vy
ZVNpZ25hbEZvckdDIGZ1bmN0aW9uIGZvciBMaW51eCBhbmQgRnJlZUJTRCAobm9uIEFwcGxlLCBu
b24gV2luZG93cyBwbGF0Zm9ybXMpLgorCisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAg
ICAgIChKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKToKKyAgICAgICAgKiBBUEkvSlNCYXNlUHJpdmF0
ZS5oOgorCiAyMDIxLTAxLTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIEJ1aWxkIGZpeGVzIHdpdGggbmV3ZXIgY2xhbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDAxZDM3NzdhZjQ1
MDE0ZmMwZjg1MTBlYWUzNDNhYWYxNmY5MDJhZi4uZWUyZGVjM2FhZGMyZmRmODk2N2MwMjU3NmY3
YzQ3ZWU4ZjgwYmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMS0xNiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBKU0MgQVBJIGNvbmZpZ3Vy
aW5nIEdDIHNpZ25hbHMgaW4gTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDY0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgor
CisgICAgICAgIEluIExpbnV4IGFuZCBGcmVlQlNELCB3ZSBuZWVkIHRvIHVzZSBzaWduYWxzIHRv
IHN1c3BlbmQgYW5kIHJlc3VtZSB0aHJlYWRzLgorICAgICAgICBCeSBkZWZhdWx0LCB3ZSBhcmUg
dXNpbmcgU0lHVVNSMSwgYnV0IGl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBlbWJlZGRlcnMgd2Fu
dCB0byB1c2UKKyAgICAgICAgdGhlIG90aGVyIHNpZ25hbHMgc2luY2UgdGhleSBhcmUgdXNpbmcg
U0lHVVNSMSBhbHJlYWR5LiBUbyB3b3JrLWFyb3VuZCB0aGF0LCB0aGlzCisgICAgICAgIHBhdGNo
IG9mZmVycyB0aGUgd2F5IGZvciBlbWJlZGRlcnMgdG8gY29uZmlndXJlIHNpZ25hbHMuCisKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5oOgorICAg
ICAgICAqIHd0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHA6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6Omlu
aXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKToKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjppbml0aWFsaXplQ3VycmVudFRMUyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVu
ZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYvdGhyZWFk
cy9TaWduYWxzLmNwcDoKKyAgICAgICAgKFdURjo6YWRkU2lnbmFsSGFuZGxlcik6CisgICAgICAg
ICogd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRp
YWxpemVDdXJyZW50VExTKToKKwogMjAyMS0wMS0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQcm9jZXNzXSBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJp
bmcgb2ZmIHRoZSBtYWluIHRocmVhZCBpbiB0aGUgR1BVUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwCmluZGV4IDA5NjFjNjdkODk0NWU3NTZhZWRjZDZlZGZkODYyMTQ3Yzkw
OGMyMzMuLmI3ZGIyZmY4YzRhODU0ZjVhNGFjN2MxNDNkYjdhYWJiMDgyODYwZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKQEAgLTE4Miw2ICsxODIsMTcgQEAgdm9pZCBKU0Rp
c2FibGVHQ1RpbWVyKHZvaWQpCiAgICAgR0NBY3Rpdml0eUNhbGxiYWNrOjpzX3Nob3VsZENyZWF0
ZUdDVGltZXIgPSBmYWxzZTsKIH0KIAorI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKQor
Ym9vbCBKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKGludCBzaWduYWwpCit7CisgICAgaWYgKGdfd3Rm
Q29uZmlnLmlzVGhyZWFkU3VzcGVuZFJlc3VtZVNpZ25hbENvbmZpZ3VyZWQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBnX3d0ZkNvbmZpZy5zaWdUaHJlYWRTdXNwZW5kUmVzdW1lID0gc2ln
bmFsOworICAgIGdfd3RmQ29uZmlnLmlzVXNlclNwZWNpZmllZFRocmVhZFN1c3BlbmRSZXN1bWVT
aWduYWxDb25maWd1cmVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBK
U09iamVjdFJlZiBKU0dldE1lbW9yeVVzYWdlU3RhdGlzdGljcyhKU0NvbnRleHRSZWYgY3R4KQog
ewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0
ZS5oCmluZGV4IDE1MGY0NWUwNTgwZmNlMzk4NGE1MmJhZWFlZGM4NDU0YmZhOWQ0ZDIuLmYwN2Q3
NmY5YTI1YzU0ZjM0M2MzMDQzMGI1NGI2Y2U3YzlhNmI4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00Nyw2ICs0NywxNiBAQCBKU19FWFBPUlQgdm9p
ZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkg
SlNDX0FQSV9BVgogCiBKU19FWFBPUlQgdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZvaWQpOwogCisj
aWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX1dJ
TjMyKQorLyohCitAZnVuY3Rpb24gSlNDb25maWd1cmVTaWduYWxGb3JHQworQGFic3RyYWN0IENv
bmZpZ3VyZSBzaWduYWxzIGZvciBHQyBpbiBub24tQXBwbGUgYW5kIG5vbi1XaW5kb3dzIHBsYXRm
b3Jtcy4KK0BwYXJhbSBzaWduYWwgVGhlIHNpZ25hbCBudW1iZXIgdG8gdXNlLgorQHJlc3VsdCB0
cnVlIGlmIHRoZSBzaWduYWwgaXMgc3VjY2Vzc2Z1bGx5IGNvbmZpZ3VyZWQsIG90aGVyd2lzZSBm
YWxzZS4KKyovCitKU19FWFBPUlQgYm9vbCBKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKGludCBzaWdu
YWwpOworI2VuZGlmCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgUHJvZHVjZXMgYW4gb2Jq
ZWN0IHdpdGggdmFyaW91cyBzdGF0aXN0aWNzIGFib3V0IGN1cnJlbnQgbWVtb3J5IHVzYWdlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaAppbmRleCBjNWEyYWFlY2E3ZGI2YjczMzVhMWY5NzAwNzNjMjI2YTQ4N2IzY2Zi
Li45NDk1ZDZjMWIwOGFhNGRjZmM1MGRkMTMwZWEzM2YxMzY0MmJjOTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aApAQCAtNzIsMTMgKzcyLDYgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGluaXRpYWxpemUoKTsKIAotI2lmIFVTRShQVEhSRUFEUykKLQotLy8gV2UgdXNl
IFNJR1VTUjEgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIG1hY2hpbmUgdGhyZWFkcyBpbiBKYXZhU2Ny
aXB0Q29yZS4KLWNvbnN0ZXhwciBjb25zdCBpbnQgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9IFNJ
R1VTUjE7Ci0KLSNlbmRpZgotCiBlbnVtIGNsYXNzIEdDVGhyZWFkVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIE5vbmUgPSAwLAogICAgIE1haW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZD
b25maWcuaCBiL1NvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCmluZGV4IDM3ZTZiYTk2MTI2MmM0
NmY4ZjdjZWQ0M2UyZmQ5YzA2YjAyMTE3ZGIuLmUxOTU3ZTdmZjA1MTYxZThlMjJjNWFiMjk0M2Rj
MTVhZmI4ZDAwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCkBAIC03MCw2ICs3MCwxMSBAQCBzdHJ1Y3QgQ29u
ZmlnIHsKIAogICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsKIAorI2lmIFVTRShQVEhSRUFE
UykKKyAgICBib29sIGlzVXNlclNwZWNpZmllZFRocmVhZFN1c3BlbmRSZXN1bWVTaWduYWxDb25m
aWd1cmVkOworICAgIGJvb2wgaXNUaHJlYWRTdXNwZW5kUmVzdW1lU2lnbmFsQ29uZmlndXJlZDsK
KyAgICBpbnQgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZTsKKyNlbmRpZgogI2lmIE9TKFVOSVgpCiAg
ICAgU2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bv
c2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA5MjUzNDUwZDg5MjFmMDAxNWUwNDY4NGM0YzVm
MGIwNmRmYjg1NGQyLi4yZmI5YTgxZmQzNGUwN2Q1YjY2MTUzZGIwZjM4NmI2MmEwOWI4MTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8
d3RmL1dURkNvbmZpZy5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JkTG9jay5oPgogCiAjaWYgT1MoTElO
VVgpCkBAIC0xNTgsMTEgKzE1OSwxMSBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1c3Bl
bmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICAvLyBodHRwOi8v
cHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9iYXNlZGVmcy9WMV9jaGFw
MDQuaHRtbCN0YWdfMDRfMTEKICAgICBnbG9iYWxTZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lLT5w
b3N0KCk7CiAKLSAgICAvLyBSZWFjaGluZyBoZXJlLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGlz
IGJsb2NrZWQgaW4gdGhpcyBoYW5kbGVyICh0aGlzIGlzIGNvbmZpZ3VyZWQgYnkgc2lnYWN0aW9u
J3Mgc2FfbWFzaykuCi0gICAgLy8gU28gYmVmb3JlIGNhbGxpbmcgc2lnc3VzcGVuZCwgU2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSB0byB0aGlzIHRocmVhZCBpcyBkZWZlcnJlZC4gVGhpcyBlbnN1cmVz
IHRoYXQgdGhlIGhhbmRsZXIgaXMgbm90IGV4ZWN1dGVkIHJlY3Vyc2l2ZWx5LgorICAgIC8vIFJl
YWNoaW5nIGhlcmUsIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaXMgYmxvY2tlZCBpbiB0aGlzIGhh
bmRsZXIgKHRoaXMgaXMgY29uZmlndXJlZCBieSBzaWdhY3Rpb24ncyBzYV9tYXNrKS4KKyAgICAv
LyBTbyBiZWZvcmUgY2FsbGluZyBzaWdzdXNwZW5kLCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lIHRv
IHRoaXMgdGhyZWFkIGlzIGRlZmVycmVkLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgaGFuZGxlciBp
cyBub3QgZXhlY3V0ZWQgcmVjdXJzaXZlbHkuCiAgICAgc2lnc2V0X3QgYmxvY2tlZFNpZ25hbFNl
dDsKICAgICBzaWdmaWxsc2V0KCZibG9ja2VkU2lnbmFsU2V0KTsKLSAgICBzaWdkZWxzZXQoJmJs
b2NrZWRTaWduYWxTZXQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIHNpZ2RlbHNldCgm
YmxvY2tlZFNpZ25hbFNldCwgZ193dGZDb25maWcuc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAg
ICAgc2lnc3VzcGVuZCgmYmxvY2tlZFNpZ25hbFNldCk7CiAKICAgICB0aHJlYWQtPm1fcGxhdGZv
cm1SZWdpc3RlcnMgPSBudWxscHRyOwpAQCAtMTc1LDE5ICsxNzYsMzkgQEAgdm9pZCBUaHJlYWQ6
OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRl
eHQpCiAKIHZvaWQgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKQogeworICAg
IGlmICghZ193dGZDb25maWcuaXNUaHJlYWRTdXNwZW5kUmVzdW1lU2lnbmFsQ29uZmlndXJlZCkK
KyAgICAgICAgZ193dGZDb25maWcuc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9IFNJR1VTUjE7Cisg
ICAgZ193dGZDb25maWcuaXNUaHJlYWRTdXNwZW5kUmVzdW1lU2lnbmFsQ29uZmlndXJlZCA9IHRy
dWU7CisKICNpZiAhT1MoREFSV0lOKQogICAgIGdsb2JhbFNlbWFwaG9yZUZvclN1c3BlbmRSZXN1
bWUuY29uc3RydWN0KDApOwogCiAgICAgLy8gU2lnbmFsIGhhbmRsZXJzIGFyZSBwcm9jZXNzIGds
b2JhbCBjb25maWd1cmF0aW9uLgotICAgIC8vIEludGVudGlvbmFsbHkgYmxvY2sgU2lnVGhyZWFk
U3VzcGVuZFJlc3VtZSBpbiB0aGUgaGFuZGxlci4KLSAgICAvLyBTaWdUaHJlYWRTdXNwZW5kUmVz
dW1lIHdpbGwgYmUgYWxsb3dlZCBpbiB0aGUgaGFuZGxlciBieSBzaWdzdXNwZW5kLgotICAgIHN0
cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7
Ci0gICAgc2lnYWRkc2V0KCZhY3Rpb24uc2FfbWFzaywgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7
Ci0KLSAgICBhY3Rpb24uc2Ffc2lnYWN0aW9uID0gJnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1l
OwotICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOwotICAgIHNp
Z2FjdGlvbihTaWdUaHJlYWRTdXNwZW5kUmVzdW1lLCAmYWN0aW9uLCAwKTsKKyAgICAvLyBJbnRl
bnRpb25hbGx5IGJsb2NrIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaW4gdGhlIGhhbmRsZXIuCisg
ICAgLy8gc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSB3aWxsIGJlIGFsbG93ZWQgaW4gdGhlIGhhbmRs
ZXIgYnkgc2lnc3VzcGVuZC4KKyAgICBhdXRvIGF0dGVtcHRUb1NldFNpZ25hbCA9IFtdKGludCBz
aWduYWwpIC0+IGJvb2wgeworICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKKyAgICAg
ICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgc2lnYWRkc2V0KCZhY3Rp
b24uc2FfbWFzaywgc2lnbmFsKTsKKworICAgICAgICBhY3Rpb24uc2Ffc2lnYWN0aW9uID0gJnNp
Z25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lOworICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9S
RVNUQVJUIHwgU0FfU0lHSU5GTzsKKworICAgICAgICAvLyBUaGVvcmV0aWNhbGx5LCB0aGlzIGNh
biBoYXZlIHJhY2UgY29uZGl0aW9ucyBidXQgY3VycmVudGx5LCB0aGVyZSBpcyBubyB3YXkgdG8g
ZGVhbCB3aXRoIGl0LAorICAgICAgICAvLyBwbHVzLCB3ZSBkbyBub3QgZXhwZWN0IHRoYXQgdGhp
cyBpbml0aWFsaXphdGlvbiBpcyBleGVjdXRlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgb3RoZXIK
KyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gd2hpY2ggYWxzbyBpbnN0YWxscyBzcGVjaWZpYyBz
aWduYWxzLiBJZiB0aGlzIGlzIHRoZSBwcm9ibGVtLCBhcHBsaWNhdGlvbnMgc2hvdWxkCisgICAg
ICAgIC8vIGNoYW5nZSBob3cgdG8gaW5pdGlhbGl6ZSB0aGluZ3MuCisgICAgICAgIHN0cnVjdCBz
aWdhY3Rpb24gb2xkQWN0aW9uOworICAgICAgICBpZiAoc2lnYWN0aW9uKHNpZ25hbCwgbnVsbHB0
ciwgJm9sZEFjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIEl0
IGhhcyBzaWduYWwgYWxyZWFkeS4KKyAgICAgICAgaWYgKG9sZEFjdGlvbi5zYV9oYW5kbGVyICE9
IFNJR19ERkwgfHwgYml0d2lzZV9jYXN0PHZvaWQqPihvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKSAh
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KFNJR19ERkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gIXNpZ2FjdGlvbihzaWduYWwsICZhY3Rpb24sIDApOworICAgIH07
CisKKyAgICBib29sIHNpZ25hbElzSW5zdGFsbGVkID0gYXR0ZW1wdFRvU2V0U2lnbmFsKGdfd3Rm
Q29uZmlnLnNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25h
bElzSW5zdGFsbGVkKTsKICNlbmRpZgogfQogCkBAIC0yMDEsOSArMjIyLDEwIEBAIFRocmVhZElk
ZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQogdm9pZCBUaHJlYWQ6OmluaXRpYWxpemVDdXJy
ZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgpCiB7CiAjaWYgIU9TKERBUldJTikKKyAgICBS
RUxFQVNFX0FTU0VSVChnX3d0ZkNvbmZpZy5pc1RocmVhZFN1c3BlbmRSZXN1bWVTaWduYWxDb25m
aWd1cmVkKTsKICAgICBzaWdzZXRfdCBtYXNrOwogICAgIHNpZ2VtcHR5c2V0KCZtYXNrKTsKLSAg
ICBzaWdhZGRzZXQoJm1hc2ssIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIHNpZ2FkZHNl
dCgmbWFzaywgZ193dGZDb25maWcuc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgcHRocmVh
ZF9zaWdtYXNrKFNJR19VTkJMT0NLLCAmbWFzaywgMCk7CiAjZW5kaWYKIH0KQEAgLTMyMyw2ICsz
NDUsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIFRocmVhZCYgVGhyZWFkOjppbml0aWFsaXpl
Q3VycmVudFRMUygpCiB7CiAgICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWQg
aXMgbm90IGVzdGFibGlzaGVkIHlldC4KKyAgICBXVEY6OmluaXRpYWxpemUoKTsKICAgICBSZWY8
VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAgICB0aHJlYWQtPmVz
dGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUocHRocmVhZF9zZWxmKCkpOwogICAgIHRocmVh
ZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CkBAIC0zNjIsMTMgKzM4NSwxMSBAQCBhdXRvIFRocmVh
ZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9yPgogICAg
IHJldHVybiB7IH07CiAjZWxzZQogICAgIGlmICghbV9zdXNwZW5kQ291bnQpIHsKLSAgICAgICAg
Ly8gSWRlYWxseSwgd2Ugd291bGQgbGlrZSB0byB1c2UgcHRocmVhZF9zaWdxdWV1ZS4gSXQgYWxs
b3dzIHVzIHRvIHBhc3MgdGhlIGFyZ3VtZW50IHRvIHRoZSBzaWduYWwgaGFuZGxlci4KLSAgICAg
ICAgLy8gQnV0IGl0IGNhbiBiZSB1c2VkIGluIGEgZmV3IHBsYXRmb3JtcywgbGlrZSBMaW51eC4K
LSAgICAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIFRocmVhZCogc3RvcmVkIGluIGEgZ2xvYmFsIHZh
cmlhYmxlIHRvIHBhc3MgaXQgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLgogICAgICAgICB0YXJnZXRU
aHJlYWQuc3RvcmUodGhpcyk7CiAKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAg
IGludCByZXN1bHQgPSBwdGhyZWFkX2tpbGwobV9oYW5kbGUsIFNpZ1RocmVhZFN1c3BlbmRSZXN1
bWUpOworICAgICAgICAgICAgLy8gV2UgbXVzdCB1c2UgcHRocmVhZF9raWxsIHRvIGF2b2lkIHF1
ZXVlLW92ZXJmbG93IHByb2JsZW0gd2l0aCByZWFsLXRpbWUgc2lnbmFscy4KKyAgICAgICAgICAg
IGludCByZXN1bHQgPSBwdGhyZWFkX2tpbGwobV9oYW5kbGUsIGdfd3RmQ29uZmlnLnNpZ1RocmVh
ZFN1c3BlbmRSZXN1bWUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzdWx0KTsKICAgICAgICAgICAgIGdsb2JhbFNlbWFw
aG9yZUZvclN1c3BlbmRSZXN1bWUtPndhaXQoKTsKQEAgLTM5MiwxNSArNDEzLDE2IEBAIHZvaWQg
VGhyZWFkOjpyZXN1bWUoKQogICAgIHRocmVhZF9yZXN1bWUobV9wbGF0Zm9ybVRocmVhZCk7CiAj
ZWxzZQogICAgIGlmIChtX3N1c3BlbmRDb3VudCA9PSAxKSB7Ci0gICAgICAgIC8vIFdoZW4gYWxs
b3dpbmcgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpbnRlcnJ1cHQgaW4gdGhlIHNpZ25hbCBoYW5k
bGVyIGJ5IHNpZ3N1c3BlbmQgYW5kIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaXMgYWN0dWFsbHkg
aXNzdWVkLAorICAgICAgICAvLyBXaGVuIGFsbG93aW5nIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUg
aW50ZXJydXB0IGluIHRoZSBzaWduYWwgaGFuZGxlciBieSBzaWdzdXNwZW5kIGFuZCBTaWdUaHJl
YWRTdXNwZW5kUmVzdW1lIGlzIGFjdHVhbGx5IGlzc3VlZCwKICAgICAgICAgLy8gdGhlIHNpZ25h
bCBoYW5kbGVyIGl0c2VsZiB3aWxsIGJlIGNhbGxlZCBvbmNlIGFnYWluLgogICAgICAgICAvLyBU
aGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRpc3Rpbmd1aXNoIHRoZSBoYW5kbGVyIGludm9jYXRp
b24gZm9yIHN1c3BlbmQgYW5kIHJlc3VtZS4KICAgICAgICAgLy8gMS4gVXNlIGRpZmZlcmVudCBz
aWduYWwgbnVtYmVycy4gQW5kIGNoZWNrIHRoZSBzaWduYWwgbnVtYmVyIGluIHRoZSBoYW5kbGVy
LgotICAgICAgICAvLyAyLiBVc2Ugc29tZSBhcmd1bWVudHMgdG8gZGlzdGluZ3Vpc2ggc3VzcGVu
ZCBhbmQgcmVzdW1lIGluIHRoZSBoYW5kbGVyLiBJZiBwdGhyZWFkX3NpZ3F1ZXVlIGNhbiBiZSB1
c2VkLCB3ZSBjYW4gdGFrZSB0aGlzLgorICAgICAgICAvLyAyLiBVc2Ugc29tZSBhcmd1bWVudHMg
dG8gZGlzdGluZ3Vpc2ggc3VzcGVuZCBhbmQgcmVzdW1lIGluIHRoZSBoYW5kbGVyLgogICAgICAg
ICAvLyAzLiBVc2UgdGhyZWFkJ3MgZmxhZy4KICAgICAgICAgLy8gSW4gdGhpcyBpbXBsZW1lbnRh
aXRvbiwgd2UgdGFrZSAoMykuIG1fc3VzcGVuZENvdW50IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2gg
aXQuCisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBtdXN0IHVzZSBwdGhyZWFkX2tpbGwgdG8gYXZv
aWQgcXVldWUtb3ZlcmZsb3cgcHJvYmxlbSB3aXRoIHJlYWwtdGltZSBzaWduYWxzLgogICAgICAg
ICB0YXJnZXRUaHJlYWQuc3RvcmUodGhpcyk7Ci0gICAgICAgIGlmIChwdGhyZWFkX2tpbGwobV9o
YW5kbGUsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpID09IEVTUkNIKQorICAgICAgICBpZiAocHRo
cmVhZF9raWxsKG1faGFuZGxlLCBnX3d0ZkNvbmZpZy5zaWdUaHJlYWRTdXNwZW5kUmVzdW1lKSA9
PSBFU1JDSCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZ2xvYmFsU2VtYXBob3JlRm9y
U3VzcGVuZFJlc3VtZS0+d2FpdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3Bw
CmluZGV4IDk1NjIyNjYxNWZkMTM3OTc5YmQ2Yjg3NjA5YWExZjhhMzQyNjVlMGQuLjVhNDBhZTFk
ODFiOTU1YWQ4YmM3MDk2NDE1NzU1OTRhODE1ZGI3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcApAQCAtMzA1LDcgKzMwNSw4IEBAIHZvaWQgYWRkU2lnbmFsSGFuZGxlcihTaWduYWwg
c2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxlcikKICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gc2lnZmlsbHNldCgmYWN0aW9uLnNhX21hc2spOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIXJlc3VsdCk7CiAgICAgICAgICAgICAvLyBEbyBub3QgYmxvY2sgdGhpcyBzaWduYWwgc2lu
Y2UgaXQgaXMgdXNlZCBvbiBub24tRGFyd2luIHN5c3RlbXMgdG8gc3VzcGVuZCBhbmQgcmVzdW1l
IHRocmVhZHMuCi0gICAgICAgICAgICByZXN1bHQgPSBzaWdkZWxzZXQoJmFjdGlvbi5zYV9tYXNr
LCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGdf
d3RmQ29uZmlnLmlzVGhyZWFkU3VzcGVuZFJlc3VtZVNpZ25hbENvbmZpZ3VyZWQpOworICAgICAg
ICAgICAgcmVzdWx0ID0gc2lnZGVsc2V0KCZhY3Rpb24uc2FfbWFzaywgZ193dGZDb25maWcuc2ln
VGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0
KTsKICAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87CiAgICAgICAgICAg
ICBhdXRvIHN5c3RlbVNpZ25hbHMgPSB0b1N5c3RlbVNpZ25hbChzaWduYWwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vVGhyZWFkaW5nV2luLmNwcAppbmRleCAyNjQ2OTAwMDgwMWU1Y2ZhYTYzMTY0NDk4ZjM2Nzcx
NTEzN2FhZjBjLi4yZTZhNTI0ZmM0YjE5NjkwOWVjNjEwZDViZmRlNTJkZjA0MTI2M2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcApAQCAtMjM5LDYgKzIzOSw3IEBAIHNpemVfdCBU
aHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogVGhyZWFk
JiBUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VExTKCkKIHsKICAgICAvLyBOb3QgYSBXVEYtY3Jl
YXRlZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KKyAg
ICBXVEY6OmluaXRpYWxpemUoKTsKICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigq
bmV3IFRocmVhZCgpKTsKIAogICAgIEhBTkRMRSBoYW5kbGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417776</attachid>
            <date>2021-01-16 22:56:08 -0800</date>
            <delta_ts>2021-01-16 22:56:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220641-20210116225607.patch</filename>
            <type>text/plain</type>
            <size>13103</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDFkNDlmMDQ5MGYwMjA2MWZiZGRmYjUzOTM3MTFhNDdhZDNiYjgxLi4zM2FmNTIyZTViNWNmM2I5
NDgwNWFhNTg1ZDI4ZTI0NDYzMWE2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wMS0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBKU0MgQVBJIGNvbmZpZ3VyaW5nIEdDIHNpZ25hbHMgaW4gTGludXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgIEFkZCBKU0NvbmZpZ3Vy
ZVNpZ25hbEZvckdDIGZ1bmN0aW9uIGZvciBMaW51eCBhbmQgRnJlZUJTRCAobm9uIEFwcGxlLCBu
b24gV2luZG93cyBwbGF0Zm9ybXMpLgorCisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAg
ICAgIChKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKToKKyAgICAgICAgKiBBUEkvSlNCYXNlUHJpdmF0
ZS5oOgorCiAyMDIxLTAxLTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIEJ1aWxkIGZpeGVzIHdpdGggbmV3ZXIgY2xhbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDAxZDM3NzdhZjQ1
MDE0ZmMwZjg1MTBlYWUzNDNhYWYxNmY5MDJhZi4uZWUyZGVjM2FhZGMyZmRmODk2N2MwMjU3NmY3
YzQ3ZWU4ZjgwYmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMS0xNiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBKU0MgQVBJIGNvbmZpZ3Vy
aW5nIEdDIHNpZ25hbHMgaW4gTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDY0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgor
CisgICAgICAgIEluIExpbnV4IGFuZCBGcmVlQlNELCB3ZSBuZWVkIHRvIHVzZSBzaWduYWxzIHRv
IHN1c3BlbmQgYW5kIHJlc3VtZSB0aHJlYWRzLgorICAgICAgICBCeSBkZWZhdWx0LCB3ZSBhcmUg
dXNpbmcgU0lHVVNSMSwgYnV0IGl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBlbWJlZGRlcnMgd2Fu
dCB0byB1c2UKKyAgICAgICAgdGhlIG90aGVyIHNpZ25hbHMgc2luY2UgdGhleSBhcmUgdXNpbmcg
U0lHVVNSMSBhbHJlYWR5LiBUbyB3b3JrLWFyb3VuZCB0aGF0LCB0aGlzCisgICAgICAgIHBhdGNo
IG9mZmVycyB0aGUgd2F5IGZvciBlbWJlZGRlcnMgdG8gY29uZmlndXJlIHNpZ25hbHMuCisKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5oOgorICAg
ICAgICAqIHd0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHA6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6Omlu
aXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKToKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjppbml0aWFsaXplQ3VycmVudFRMUyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVu
ZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYvdGhyZWFk
cy9TaWduYWxzLmNwcDoKKyAgICAgICAgKFdURjo6YWRkU2lnbmFsSGFuZGxlcik6CisgICAgICAg
ICogd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRp
YWxpemVDdXJyZW50VExTKToKKwogMjAyMS0wMS0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQcm9jZXNzXSBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJp
bmcgb2ZmIHRoZSBtYWluIHRocmVhZCBpbiB0aGUgR1BVUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwCmluZGV4IDA5NjFjNjdkODk0NWU3NTZhZWRjZDZlZGZkODYyMTQ3Yzkw
OGMyMzMuLmI3ZGIyZmY4YzRhODU0ZjVhNGFjN2MxNDNkYjdhYWJiMDgyODYwZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKQEAgLTE4Miw2ICsxODIsMTcgQEAgdm9pZCBKU0Rp
c2FibGVHQ1RpbWVyKHZvaWQpCiAgICAgR0NBY3Rpdml0eUNhbGxiYWNrOjpzX3Nob3VsZENyZWF0
ZUdDVGltZXIgPSBmYWxzZTsKIH0KIAorI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKQor
Ym9vbCBKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKGludCBzaWduYWwpCit7CisgICAgaWYgKGdfd3Rm
Q29uZmlnLmlzVGhyZWFkU3VzcGVuZFJlc3VtZVNpZ25hbENvbmZpZ3VyZWQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBnX3d0ZkNvbmZpZy5zaWdUaHJlYWRTdXNwZW5kUmVzdW1lID0gc2ln
bmFsOworICAgIGdfd3RmQ29uZmlnLmlzVXNlclNwZWNpZmllZFRocmVhZFN1c3BlbmRSZXN1bWVT
aWduYWxDb25maWd1cmVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBK
U09iamVjdFJlZiBKU0dldE1lbW9yeVVzYWdlU3RhdGlzdGljcyhKU0NvbnRleHRSZWYgY3R4KQog
ewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0
ZS5oCmluZGV4IDE1MGY0NWUwNTgwZmNlMzk4NGE1MmJhZWFlZGM4NDU0YmZhOWQ0ZDIuLmYwN2Q3
NmY5YTI1YzU0ZjM0M2MzMDQzMGI1NGI2Y2U3YzlhNmI4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00Nyw2ICs0NywxNiBAQCBKU19FWFBPUlQgdm9p
ZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkg
SlNDX0FQSV9BVgogCiBKU19FWFBPUlQgdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZvaWQpOwogCisj
aWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX1dJ
TjMyKQorLyohCitAZnVuY3Rpb24gSlNDb25maWd1cmVTaWduYWxGb3JHQworQGFic3RyYWN0IENv
bmZpZ3VyZSBzaWduYWxzIGZvciBHQyBpbiBub24tQXBwbGUgYW5kIG5vbi1XaW5kb3dzIHBsYXRm
b3Jtcy4KK0BwYXJhbSBzaWduYWwgVGhlIHNpZ25hbCBudW1iZXIgdG8gdXNlLgorQHJlc3VsdCB0
cnVlIGlmIHRoZSBzaWduYWwgaXMgc3VjY2Vzc2Z1bGx5IGNvbmZpZ3VyZWQsIG90aGVyd2lzZSBm
YWxzZS4KKyovCitKU19FWFBPUlQgYm9vbCBKU0NvbmZpZ3VyZVNpZ25hbEZvckdDKGludCBzaWdu
YWwpOworI2VuZGlmCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgUHJvZHVjZXMgYW4gb2Jq
ZWN0IHdpdGggdmFyaW91cyBzdGF0aXN0aWNzIGFib3V0IGN1cnJlbnQgbWVtb3J5IHVzYWdlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaAppbmRleCBjNWEyYWFlY2E3ZGI2YjczMzVhMWY5NzAwNzNjMjI2YTQ4N2IzY2Zi
Li45NDk1ZDZjMWIwOGFhNGRjZmM1MGRkMTMwZWEzM2YxMzY0MmJjOTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aApAQCAtNzIsMTMgKzcyLDYgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGluaXRpYWxpemUoKTsKIAotI2lmIFVTRShQVEhSRUFEUykKLQotLy8gV2UgdXNl
IFNJR1VTUjEgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIG1hY2hpbmUgdGhyZWFkcyBpbiBKYXZhU2Ny
aXB0Q29yZS4KLWNvbnN0ZXhwciBjb25zdCBpbnQgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9IFNJ
R1VTUjE7Ci0KLSNlbmRpZgotCiBlbnVtIGNsYXNzIEdDVGhyZWFkVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIE5vbmUgPSAwLAogICAgIE1haW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZD
b25maWcuaCBiL1NvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCmluZGV4IDM3ZTZiYTk2MTI2MmM0
NmY4ZjdjZWQ0M2UyZmQ5YzA2YjAyMTE3ZGIuLmUxOTU3ZTdmZjA1MTYxZThlMjJjNWFiMjk0M2Rj
MTVhZmI4ZDAwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCkBAIC03MCw2ICs3MCwxMSBAQCBzdHJ1Y3QgQ29u
ZmlnIHsKIAogICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsKIAorI2lmIFVTRShQVEhSRUFE
UykKKyAgICBib29sIGlzVXNlclNwZWNpZmllZFRocmVhZFN1c3BlbmRSZXN1bWVTaWduYWxDb25m
aWd1cmVkOworICAgIGJvb2wgaXNUaHJlYWRTdXNwZW5kUmVzdW1lU2lnbmFsQ29uZmlndXJlZDsK
KyAgICBpbnQgc2lnVGhyZWFkU3VzcGVuZFJlc3VtZTsKKyNlbmRpZgogI2lmIE9TKFVOSVgpCiAg
ICAgU2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bv
c2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA5MjUzNDUwZDg5MjFmMDAxNWUwNDY4NGM0YzVm
MGIwNmRmYjg1NGQyLi5iZTY4ZjNjOWUzY2E4ZjU1Mzk0NjBlYzBmZjE2M2NjMzNjY2Y3NzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8
d3RmL1dURkNvbmZpZy5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JkTG9jay5oPgogCiAjaWYgT1MoTElO
VVgpCkBAIC0xNTgsMTEgKzE1OSwxMSBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1c3Bl
bmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICAvLyBodHRwOi8v
cHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9iYXNlZGVmcy9WMV9jaGFw
MDQuaHRtbCN0YWdfMDRfMTEKICAgICBnbG9iYWxTZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lLT5w
b3N0KCk7CiAKLSAgICAvLyBSZWFjaGluZyBoZXJlLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGlz
IGJsb2NrZWQgaW4gdGhpcyBoYW5kbGVyICh0aGlzIGlzIGNvbmZpZ3VyZWQgYnkgc2lnYWN0aW9u
J3Mgc2FfbWFzaykuCi0gICAgLy8gU28gYmVmb3JlIGNhbGxpbmcgc2lnc3VzcGVuZCwgU2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSB0byB0aGlzIHRocmVhZCBpcyBkZWZlcnJlZC4gVGhpcyBlbnN1cmVz
IHRoYXQgdGhlIGhhbmRsZXIgaXMgbm90IGV4ZWN1dGVkIHJlY3Vyc2l2ZWx5LgorICAgIC8vIFJl
YWNoaW5nIGhlcmUsIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaXMgYmxvY2tlZCBpbiB0aGlzIGhh
bmRsZXIgKHRoaXMgaXMgY29uZmlndXJlZCBieSBzaWdhY3Rpb24ncyBzYV9tYXNrKS4KKyAgICAv
LyBTbyBiZWZvcmUgY2FsbGluZyBzaWdzdXNwZW5kLCBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lIHRv
IHRoaXMgdGhyZWFkIGlzIGRlZmVycmVkLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgaGFuZGxlciBp
cyBub3QgZXhlY3V0ZWQgcmVjdXJzaXZlbHkuCiAgICAgc2lnc2V0X3QgYmxvY2tlZFNpZ25hbFNl
dDsKICAgICBzaWdmaWxsc2V0KCZibG9ja2VkU2lnbmFsU2V0KTsKLSAgICBzaWdkZWxzZXQoJmJs
b2NrZWRTaWduYWxTZXQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIHNpZ2RlbHNldCgm
YmxvY2tlZFNpZ25hbFNldCwgZ193dGZDb25maWcuc2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAg
ICAgc2lnc3VzcGVuZCgmYmxvY2tlZFNpZ25hbFNldCk7CiAKICAgICB0aHJlYWQtPm1fcGxhdGZv
cm1SZWdpc3RlcnMgPSBudWxscHRyOwpAQCAtMTc1LDE5ICsxNzYsMzkgQEAgdm9pZCBUaHJlYWQ6
OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRl
eHQpCiAKIHZvaWQgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKQogeworICAg
IGlmICghZ193dGZDb25maWcuaXNVc2VyU3BlY2lmaWVkVGhyZWFkU3VzcGVuZFJlc3VtZVNpZ25h
bENvbmZpZ3VyZWQpCisgICAgICAgIGdfd3RmQ29uZmlnLnNpZ1RocmVhZFN1c3BlbmRSZXN1bWUg
PSBTSUdVU1IxOworICAgIGdfd3RmQ29uZmlnLmlzVGhyZWFkU3VzcGVuZFJlc3VtZVNpZ25hbENv
bmZpZ3VyZWQgPSB0cnVlOworCiAjaWYgIU9TKERBUldJTikKICAgICBnbG9iYWxTZW1hcGhvcmVG
b3JTdXNwZW5kUmVzdW1lLmNvbnN0cnVjdCgwKTsKIAogICAgIC8vIFNpZ25hbCBoYW5kbGVycyBh
cmUgcHJvY2VzcyBnbG9iYWwgY29uZmlndXJhdGlvbi4KLSAgICAvLyBJbnRlbnRpb25hbGx5IGJs
b2NrIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaW4gdGhlIGhhbmRsZXIuCi0gICAgLy8gU2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSB3aWxsIGJlIGFsbG93ZWQgaW4gdGhlIGhhbmRsZXIgYnkgc2lnc3Vz
cGVuZC4KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKLSAgICBzaWdlbXB0eXNldCgmYWN0
aW9uLnNhX21hc2spOwotICAgIHNpZ2FkZHNldCgmYWN0aW9uLnNhX21hc2ssIFNpZ1RocmVhZFN1
c3BlbmRSZXN1bWUpOwotCi0gICAgYWN0aW9uLnNhX3NpZ2FjdGlvbiA9ICZzaWduYWxIYW5kbGVy
U3VzcGVuZFJlc3VtZTsKLSAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNUQVJUIHwgU0FfU0lH
SU5GTzsKLSAgICBzaWdhY3Rpb24oU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSwgJmFjdGlvbiwgMCk7
CisgICAgLy8gSW50ZW50aW9uYWxseSBibG9jayBzaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGluIHRo
ZSBoYW5kbGVyLgorICAgIC8vIHNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgd2lsbCBiZSBhbGxvd2Vk
IGluIHRoZSBoYW5kbGVyIGJ5IHNpZ3N1c3BlbmQuCisgICAgYXV0byBhdHRlbXB0VG9TZXRTaWdu
YWwgPSBbXShpbnQgc2lnbmFsKSAtPiBib29sIHsKKyAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBh
Y3Rpb247CisgICAgICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7CisgICAgICAgIHNp
Z2FkZHNldCgmYWN0aW9uLnNhX21hc2ssIHNpZ25hbCk7CisKKyAgICAgICAgYWN0aW9uLnNhX3Np
Z2FjdGlvbiA9ICZzaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZTsKKyAgICAgICAgYWN0aW9uLnNh
X2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87CisKKyAgICAgICAgLy8gVGhlb3JldGlj
YWxseSwgdGhpcyBjYW4gaGF2ZSByYWNlIGNvbmRpdGlvbnMgYnV0IGN1cnJlbnRseSwgdGhlcmUg
aXMgbm8gd2F5IHRvIGRlYWwgd2l0aCBpdCwKKyAgICAgICAgLy8gcGx1cywgd2UgZG8gbm90IGV4
cGVjdCB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgZXhlY3V0ZWQgY29uY3VycmVudGx5IHdp
dGggdGhlIG90aGVyCisgICAgICAgIC8vIGluaXRpYWxpemF0aW9uIHdoaWNoIGFsc28gaW5zdGFs
bHMgc3BlY2lmaWMgc2lnbmFscy4gSWYgdGhpcyBpcyB0aGUgcHJvYmxlbSwgYXBwbGljYXRpb25z
IHNob3VsZAorICAgICAgICAvLyBjaGFuZ2UgaG93IHRvIGluaXRpYWxpemUgdGhpbmdzLgorICAg
ICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbjsKKyAgICAgICAgaWYgKHNpZ2FjdGlvbihz
aWduYWwsIG51bGxwdHIsICZvbGRBY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAvLyBJdCBoYXMgc2lnbmFsIGFscmVhZHkuCisgICAgICAgIGlmIChvbGRBY3Rpb24u
c2FfaGFuZGxlciAhPSBTSUdfREZMIHx8IGJpdHdpc2VfY2FzdDx2b2lkKj4ob2xkQWN0aW9uLnNh
X3NpZ2FjdGlvbikgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihTSUdfREZMKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuICFzaWdhY3Rpb24oc2lnbmFsLCAmYWN0aW9u
LCAwKTsKKyAgICB9OworCisgICAgYm9vbCBzaWduYWxJc0luc3RhbGxlZCA9IGF0dGVtcHRUb1Nl
dFNpZ25hbChnX3d0ZkNvbmZpZy5zaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzaWduYWxJc0luc3RhbGxlZCk7CiAjZW5kaWYKIH0KIApAQCAtMjAxLDkgKzIyMiwx
MCBAQCBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKIHZvaWQgVGhyZWFkOjpp
bml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNyZWF0ZWQoKQogewogI2lmICFPUyhE
QVJXSU4pCisgICAgUkVMRUFTRV9BU1NFUlQoZ193dGZDb25maWcuaXNUaHJlYWRTdXNwZW5kUmVz
dW1lU2lnbmFsQ29uZmlndXJlZCk7CiAgICAgc2lnc2V0X3QgbWFzazsKICAgICBzaWdlbXB0eXNl
dCgmbWFzayk7Ci0gICAgc2lnYWRkc2V0KCZtYXNrLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsK
KyAgICBzaWdhZGRzZXQoJm1hc2ssIGdfd3RmQ29uZmlnLnNpZ1RocmVhZFN1c3BlbmRSZXN1bWUp
OwogICAgIHB0aHJlYWRfc2lnbWFzayhTSUdfVU5CTE9DSywgJm1hc2ssIDApOwogI2VuZGlmCiB9
CkBAIC0zMjMsNiArMzQ1LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiBUaHJlYWQmIFRocmVh
ZDo6aW5pdGlhbGl6ZUN1cnJlbnRUTFMoKQogewogICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRo
cmVhZCwgVGhyZWFkIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCisgICAgV1RGOjppbml0aWFsaXpl
KCk7CiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAg
ICAgdGhyZWFkLT5lc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfc2VsZigp
KTsKICAgICB0aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwpAQCAtMzYyLDEzICszODUsMTEg
QEAgYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3Bl
bmRFcnJvcj4KICAgICByZXR1cm4geyB9OwogI2Vsc2UKICAgICBpZiAoIW1fc3VzcGVuZENvdW50
KSB7Ci0gICAgICAgIC8vIElkZWFsbHksIHdlIHdvdWxkIGxpa2UgdG8gdXNlIHB0aHJlYWRfc2ln
cXVldWUuIEl0IGFsbG93cyB1cyB0byBwYXNzIHRoZSBhcmd1bWVudCB0byB0aGUgc2lnbmFsIGhh
bmRsZXIuCi0gICAgICAgIC8vIEJ1dCBpdCBjYW4gYmUgdXNlZCBpbiBhIGZldyBwbGF0Zm9ybXMs
IGxpa2UgTGludXguCi0gICAgICAgIC8vIEluc3RlYWQsIHdlIHVzZSBUaHJlYWQqIHN0b3JlZCBp
biBhIGdsb2JhbCB2YXJpYWJsZSB0byBwYXNzIGl0IHRvIHRoZSBzaWduYWwgaGFuZGxlci4KICAg
ICAgICAgdGFyZ2V0VGhyZWFkLnN0b3JlKHRoaXMpOwogCiAgICAgICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9raWxsKG1faGFuZGxlLCBTaWdUaHJl
YWRTdXNwZW5kUmVzdW1lKTsKKyAgICAgICAgICAgIC8vIFdlIG11c3QgdXNlIHB0aHJlYWRfa2ls
bCB0byBhdm9pZCBxdWV1ZS1vdmVyZmxvdyBwcm9ibGVtIHdpdGggcmVhbC10aW1lIHNpZ25hbHMu
CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9raWxsKG1faGFuZGxlLCBnX3d0ZkNv
bmZpZy5zaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdCk7CiAgICAgICAgICAg
ICBnbG9iYWxTZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lLT53YWl0KCk7CkBAIC0zOTIsMTUgKzQx
MywxNiBAQCB2b2lkIFRocmVhZDo6cmVzdW1lKCkKICAgICB0aHJlYWRfcmVzdW1lKG1fcGxhdGZv
cm1UaHJlYWQpOwogI2Vsc2UKICAgICBpZiAobV9zdXNwZW5kQ291bnQgPT0gMSkgewotICAgICAg
ICAvLyBXaGVuIGFsbG93aW5nIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgaW50ZXJydXB0IGluIHRo
ZSBzaWduYWwgaGFuZGxlciBieSBzaWdzdXNwZW5kIGFuZCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1l
IGlzIGFjdHVhbGx5IGlzc3VlZCwKKyAgICAgICAgLy8gV2hlbiBhbGxvd2luZyBzaWdUaHJlYWRT
dXNwZW5kUmVzdW1lIGludGVycnVwdCBpbiB0aGUgc2lnbmFsIGhhbmRsZXIgYnkgc2lnc3VzcGVu
ZCBhbmQgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpcyBhY3R1YWxseSBpc3N1ZWQsCiAgICAgICAg
IC8vIHRoZSBzaWduYWwgaGFuZGxlciBpdHNlbGYgd2lsbCBiZSBjYWxsZWQgb25jZSBhZ2Fpbi4K
ICAgICAgICAgLy8gVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBkaXN0aW5ndWlzaCB0aGUgaGFu
ZGxlciBpbnZvY2F0aW9uIGZvciBzdXNwZW5kIGFuZCByZXN1bWUuCiAgICAgICAgIC8vIDEuIFVz
ZSBkaWZmZXJlbnQgc2lnbmFsIG51bWJlcnMuIEFuZCBjaGVjayB0aGUgc2lnbmFsIG51bWJlciBp
biB0aGUgaGFuZGxlci4KLSAgICAgICAgLy8gMi4gVXNlIHNvbWUgYXJndW1lbnRzIHRvIGRpc3Rp
bmd1aXNoIHN1c3BlbmQgYW5kIHJlc3VtZSBpbiB0aGUgaGFuZGxlci4gSWYgcHRocmVhZF9zaWdx
dWV1ZSBjYW4gYmUgdXNlZCwgd2UgY2FuIHRha2UgdGhpcy4KKyAgICAgICAgLy8gMi4gVXNlIHNv
bWUgYXJndW1lbnRzIHRvIGRpc3Rpbmd1aXNoIHN1c3BlbmQgYW5kIHJlc3VtZSBpbiB0aGUgaGFu
ZGxlci4KICAgICAgICAgLy8gMy4gVXNlIHRocmVhZCdzIGZsYWcuCiAgICAgICAgIC8vIEluIHRo
aXMgaW1wbGVtZW50YWl0b24sIHdlIHRha2UgKDMpLiBtX3N1c3BlbmRDb3VudCBpcyB1c2VkIHRv
IGRpc3Rpbmd1aXNoIGl0LgorICAgICAgICAvLyBOb3RlIHRoYXQgd2UgbXVzdCB1c2UgcHRocmVh
ZF9raWxsIHRvIGF2b2lkIHF1ZXVlLW92ZXJmbG93IHByb2JsZW0gd2l0aCByZWFsLXRpbWUgc2ln
bmFscy4KICAgICAgICAgdGFyZ2V0VGhyZWFkLnN0b3JlKHRoaXMpOwotICAgICAgICBpZiAocHRo
cmVhZF9raWxsKG1faGFuZGxlLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lKSA9PSBFU1JDSCkKKyAg
ICAgICAgaWYgKHB0aHJlYWRfa2lsbChtX2hhbmRsZSwgZ193dGZDb25maWcuc2lnVGhyZWFkU3Vz
cGVuZFJlc3VtZSkgPT0gRVNSQ0gpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGdsb2Jh
bFNlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUtPndhaXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmNwcAppbmRleCA5NTYyMjY2MTVmZDEzNzk3OWJkNmI4NzYwOWFhMWY4YTM0MjY1
ZTBkLi41YTQwYWUxZDgxYjk1NWFkOGJjNzA5NjQxNTc1NTk0YTgxNWRiN2ZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTMwNSw3ICszMDUsOCBAQCB2b2lkIGFkZFNpZ25hbEhh
bmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCiAgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICAgICAgLy8gRG8gbm90IGJsb2NrIHRo
aXMgc2lnbmFsIHNpbmNlIGl0IGlzIHVzZWQgb24gbm9uLURhcndpbiBzeXN0ZW1zIHRvIHN1c3Bl
bmQgYW5kIHJlc3VtZSB0aHJlYWRzLgotICAgICAgICAgICAgcmVzdWx0ID0gc2lnZGVsc2V0KCZh
Y3Rpb24uc2FfbWFzaywgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChnX3d0ZkNvbmZpZy5pc1RocmVhZFN1c3BlbmRSZXN1bWVTaWduYWxDb25maWd1
cmVkKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2RlbHNldCgmYWN0aW9uLnNhX21hc2ssIGdf
d3RmQ29uZmlnLnNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOwogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIXJlc3VsdCk7CiAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9TSUdJTkZP
OwogICAgICAgICAgICAgYXV0byBzeXN0ZW1TaWduYWxzID0gdG9TeXN0ZW1TaWduYWwoc2lnbmFs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggMjY0NjkwMDA4MDFlNWNmYWE2
MzE2NDQ5OGYzNjc3MTUxMzdhYWYwYy4uMmU2YTUyNGZjNGIxOTY5MDllYzYxMGQ1YmZkZTUyZGYw
NDEyNjNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKQEAgLTIzOSw2ICsyMzks
NyBAQCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lz
dGVycykKIFRocmVhZCYgVGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRMUygpCiB7CiAgICAgLy8g
Tm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxp
c2hlZCB5ZXQuCisgICAgV1RGOjppbml0aWFsaXplKCk7CiAgICAgUmVmPFRocmVhZD4gdGhyZWFk
ID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAKICAgICBIQU5ETEUgaGFuZGxlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>