<?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>238726</bug_id>
          
          <creation_ts>2022-04-04 00:52:02 -0700</creation_ts>
          <short_desc>[Unix] Add UnixFileDescriptor, use it in IPC::Semaphore</short_desc>
          <delta_ts>2022-04-05 06:09:23 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238801</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>238593</blocked>
    
    <blocked>238733</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857761</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-04 00:52:02 -0700</bug_when>
    <thetext>[Unix] Add UnixFileDescriptor, use it in IPC::Semaphore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857763</commentid>
    <comment_count>1</comment_count>
      <attachid>456544</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-04 00:53:13 -0700</bug_when>
    <thetext>Created attachment 456544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858062</commentid>
    <comment_count>2</comment_count>
      <attachid>456544</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-04-04 14:18:59 -0700</bug_when>
    <thetext>Comment on attachment 456544
Patch

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

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:51
&gt; +    UnixFileDescriptor&amp; operator=(const UnixFileDescriptor&amp;) = delete;

You could replace these two with WTF_MAKE_NONCOPYABLE(UnixFileDescriptor)

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:56
&gt; +        o.value = -1;

These two lines could be replaced with:

  value = std::exchange(o.value, -1);

&gt; Source/WebKit/Platform/IPC/unix/IPCSemaphoreUnix.cpp:129
&gt; +    encoder &lt;&lt; m_fd.duplicate();

I think this is duplicating the UnixFileDescriptor twice unneedlessly,
because the ArgumentCoder&lt;…&gt;::encode() function below will take another
duplicate itself.

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3298
&gt; +    auto duplicate = fd.duplicate();

…here is where the second duplicate is made during encoding.
I think this one here should be the only one needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858273</commentid>
    <comment_count>3</comment_count>
      <attachid>456544</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-05 00:24:34 -0700</bug_when>
    <thetext>Comment on attachment 456544
Patch

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

&gt;&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:51
&gt;&gt; +    UnixFileDescriptor&amp; operator=(const UnixFileDescriptor&amp;) = delete;
&gt; 
&gt; You could replace these two with WTF_MAKE_NONCOPYABLE(UnixFileDescriptor)

They are manually deleted just like the move constructor and assignment operators are manually defined. No need to reach out for additional macros.

&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3298
&gt;&gt; +    auto duplicate = fd.duplicate();
&gt; 
&gt; …here is where the second duplicate is made during encoding.
&gt; I think this one here should be the only one needed.

No, cause the `m_fd.duplicate()` in Semaphore::encode() returns an rvalue that&apos;s then passed to ArgumentCoder&lt;&gt;::encode(Encoder&amp;, WTF::UnixFileDescriptor&amp;&amp;), which handles the object like the temporary that it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858282</commentid>
    <comment_count>4</comment_count>
      <attachid>456544</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 00:45:15 -0700</bug_when>
    <thetext>Comment on attachment 456544
Patch

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

I like the idea, but since the destructor is closing the fd, it&apos;s somehow like a smart pointer class, so I would follow the same patterns we are already familiar with. I would make it a class instead of a struct with get method

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:35
&gt; +struct UnixFileDescriptor {

WTF_MAKE_NONCOPYABLE

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:44
&gt; +    enum AdoptionTag { Adopt };
&gt; +    UnixFileDescriptor(int fd, AdoptionTag)
&gt; +        : value(fd)
&gt; +    { }
&gt; +
&gt; +    enum DuplicationTag { Duplicate };
&gt; +    UnixFileDescriptor(int fd, DuplicationTag)

Why not using a single enum and the same constructor that adopts or duplicates depending on the enum value. We could also make them private and add adoptFileDescriptor/duplicateFileDescritor.

&gt;&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:56
&gt;&gt; +        o.value = -1;
&gt; 
&gt; These two lines could be replaced with:
&gt; 
&gt;   value = std::exchange(o.value, -1);

that&apos;s release()

value = o.release();

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:82
&gt; +    int value { -1 };

Being this a public member of the struct you can do foo.value = fd and mess it up.

&gt; Source/WebKit/Platform/IPC/IPCSemaphore.h:84
&gt; +    WTF::UnixFileDescriptor m_fd { };

We don&apos;t need the initialization now.

&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3298
&gt;&gt; +    auto duplicate = fd.duplicate();
&gt; 
&gt; …here is where the second duplicate is made during encoding.
&gt; I think this one here should be the only one needed.

I think it would be easier of IPC::Attachment used UnixFileDescriptor instead of int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858284</commentid>
    <comment_count>5</comment_count>
      <attachid>456544</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-05 00:56:35 -0700</bug_when>
    <thetext>Comment on attachment 456544
Patch

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

&gt;&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:44
&gt;&gt; +    UnixFileDescriptor(int fd, DuplicationTag)
&gt; 
&gt; Why not using a single enum and the same constructor that adopts or duplicates depending on the enum value. We could also make them private and add adoptFileDescriptor/duplicateFileDescritor.

Because that means generated branches from testing the enum value.

&gt;&gt;&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3298
&gt;&gt;&gt;&gt; +    auto duplicate = fd.duplicate();
&gt;&gt;&gt; 
&gt;&gt;&gt; …here is where the second duplicate is made during encoding.
&gt;&gt;&gt; I think this one here should be the only one needed.
&gt;&gt; 
&gt;&gt; No, cause the `m_fd.duplicate()` in Semaphore::encode() returns an rvalue that&apos;s then passed to ArgumentCoder&lt;&gt;::encode(Encoder&amp;, WTF::UnixFileDescriptor&amp;&amp;), which handles the object like the temporary that it is.
&gt; 
&gt; I think it would be easier of IPC::Attachment used UnixFileDescriptor instead of int.

In a different patch, cause it will require additional changes in ConnectionUnix.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858288</commentid>
    <comment_count>6</comment_count>
      <attachid>456681</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-05 01:10:47 -0700</bug_when>
    <thetext>Created attachment 456681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858305</commentid>
    <comment_count>7</comment_count>
      <attachid>456681</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 02:03:29 -0700</bug_when>
    <thetext>Comment on attachment 456681
Patch

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

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:51
&gt; +    enum DuplicationTag { Duplicate };
&gt; +    UnixFileDescriptor(int fd, DuplicationTag)
&gt; +    {
&gt; +        if (fd &gt;= 0)
&gt; +            m_value = dupCloseOnExec(fd);
&gt; +    }

I think we can keep this private for now, since it&apos;s always used from ::duplicate().

&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:88
&gt; +

using WTF::UnixFileDescriptor

&gt; Source/WebKit/Platform/IPC/unix/IPCSemaphoreUnix.cpp:44
&gt; +    m_fd = { eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK | EFD_SEMAPHORE), WTF::UnixFileDescriptor::Adopt };

I still prefer m_fd = adoptFileDescriptor(eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK | EFD_SEMAPHORE)); but no strong opinion if you really want to expose WTF::UnixFileDescriptor::Adopt and WTF::UnixFileDescriptor::Duplicate

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.h:854
&gt; +#if USE(UNIX_DOMAIN_SOCKETS)
&gt; +
&gt; +template&lt;&gt; struct ArgumentCoder&lt;WTF::UnixFileDescriptor&gt; {
&gt; +    static void encode(Encoder&amp;, const WTF::UnixFileDescriptor&amp;);
&gt; +    static void encode(Encoder&amp;, WTF::UnixFileDescriptor&amp;&amp;);
&gt; +    static std::optional&lt;WTF::UnixFileDescriptor&gt; decode(Decoder&amp;);
&gt; +};
&gt; +
&gt; +#endif

This doesn&apos;t really belong here, since UnixFileDescriptor is not a WebCore class. Why don&apos;t you add the encode/decode methods to UnixFileDescriptor class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858320</commentid>
    <comment_count>8</comment_count>
      <attachid>456681</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-05 03:21:25 -0700</bug_when>
    <thetext>Comment on attachment 456681
Patch

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

&gt;&gt; Source/WTF/wtf/unix/UnixFileDescriptor.h:51
&gt;&gt; +    }
&gt; 
&gt; I think we can keep this private for now, since it&apos;s always used from ::duplicate().

I need it in the next patches.

&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.h:854
&gt;&gt; +#endif
&gt; 
&gt; This doesn&apos;t really belong here, since UnixFileDescriptor is not a WebCore class. Why don&apos;t you add the encode/decode methods to UnixFileDescriptor class?

I don&apos;t have IPC::Attachment in WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858321</commentid>
    <comment_count>9</comment_count>
      <attachid>456681</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-05 03:23:22 -0700</bug_when>
    <thetext>Comment on attachment 456681
Patch

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

&gt;&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.h:854
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; This doesn&apos;t really belong here, since UnixFileDescriptor is not a WebCore class. Why don&apos;t you add the encode/decode methods to UnixFileDescriptor class?
&gt; 
&gt; I don&apos;t have IPC::Attachment in WTF.

There&apos;s also WTF::MachSendRight in this file, even when the definitions are kept somewhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858326</commentid>
    <comment_count>10</comment_count>
      <attachid>456688</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-05 03:45:15 -0700</bug_when>
    <thetext>Created attachment 456688
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858327</commentid>
    <comment_count>11</comment_count>
      <attachid>456688</attachid>
    <who name="Zan Dobersek (Reviews)">zdobersek</who>
    <bug_when>2022-04-05 03:48:57 -0700</bug_when>
    <thetext>Comment on attachment 456688
Patch for landing

Clearing flags on attachment: 456688

Committed r292389 (249254@trunk): &lt;https://commits.webkit.org/249254@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858328</commentid>
    <comment_count>12</comment_count>
    <who name="Zan Dobersek (Reviews)">zdobersek</who>
    <bug_when>2022-04-05 03:49:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858329</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-05 03:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/91286018&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456544</attachid>
            <date>2022-04-04 00:53:13 -0700</date>
            <delta_ts>2022-04-05 01:10:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238726-20220404095312.patch</filename>
            <type>text/plain</type>
            <size>14080</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhM2M3NzU0NWY5MTcxZWMwYzViOTMw
MGRjNzg3Y2Q2ZThlNGM4NjcuLmJkMmMyODM2NjU5N2VlOWZiNWQ2OWU2YTA4YWI5ZDljOGRjOGU4
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjItMDQtMDQgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtVbml4XSBBZGQgVW5peEZpbGVEZXNjcmlwdG9y
LCB1c2UgaXQgaW4gSVBDOjpTZW1hcGhvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgVW5peEZpbGVEZXNjcmlwdG9yIHN0cnVjdCwgaW50
ZW5kZWQgYXMgYSB3cmFwcGVyIGZvciBhIGZpbGUKKyAgICAgICAgZGVzY3JpcHRvciBpbnRlZ2Vy
LiBDb25zdHJ1Y3Rpb24gaXMgYSBtYXR0ZXIgb2YgYWRvcHRpbmcgb3IgZHVwbGljYXRpbmcKKyAg
ICAgICAgdGhlIHBhc3NlZC1pbiBmaWxlIGRlc2NyaXB0b3IgdmFsdWUuIFVuaXhGaWxlRGVzY3Jp
cHRvciBvYmplY3RzIGNhbiBiZQorICAgICAgICBtb3ZlZCBhcm91bmQgYW5kIGV4cGxpY2l0bHkg
ZHVwbGljYXRlZCwgYW5kIHRoZSBjb250YWluZWQgZmQgdmFsdWUgY2FuCisgICAgICAgIGJlIHJl
bGVhc2VkLgorCisgICAgICAgIFRoZSB3cmFwcGVyIGNsYXNzIG1ha2VzIGl0IGVhc2llciB0byBo
YW5kbGUgZmlsZSBkZXNjcmlwdG9yIHZhbHVlcyB3aGVuCisgICAgICAgIGVtYmVkZGVkIGludG8g
b3RoZXIgdHlwZXMgYXMgbWVtYmVyIHZhcmlhYmxlcy4gSXQgYWxzbyBhbGxvd3MgdG8gc3BlY2lm
eQorICAgICAgICBjdXN0b20gZW5jb2RpbmcgYW5kIGRlY29kaW5nIGluIHRoZSBXZWJLaXQgSVBD
IGluZnJhc3RydWN0dXJlLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiB3dGYvdW5peC9Vbml4Rmls
ZURlc2NyaXB0b3IuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6
VW5peEZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdURjo6VW5peEZpbGVEZXNjcmlwdG9yOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpVbml4RmlsZURlc2NyaXB0b3I6On5Vbml4RmlsZURl
c2NyaXB0b3IpOgorICAgICAgICAoV1RGOjpVbml4RmlsZURlc2NyaXB0b3I6OmR1cGxpY2F0ZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6cmVsZWFzZSk6CisKIDIw
MjItMDQtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgX1dLRGF0YVRhc2sgZG9lc24ndCB3b3JrIGluIG1hY0NhdGFseXN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1
ZWQ2OTk2NjBkZDAyMThlMTNhY2UxOGVjMjM4Y2RiNmZhMzg4NGYuLjQzYWY2MTg1MmI1ZGU5NjM4
ZGEwMTIyNTZlZmNhMTVlMzkzYTBkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjIt
MDQtMDQgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtV
bml4XSBBZGQgVW5peEZpbGVEZXNjcmlwdG9yLCB1c2UgaXQgaW4gSVBDOjpTZW1hcGhvcmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6OlVu
aXhGaWxlRGVzY3JpcHRvciBpbiBJUEM6OlNlbWFwaG9yZSBpbiBwbGFjZSBvZiBhIHJhdyBpbnRl
Z2VyCisgICAgICAgIHZhbHVlLiBUaGlzIGFsc28gc2ltcGxpZmllcyBvdGhlciB0aGluZ3MsIGUu
Zy4gdGhlIG1vdmUgY29uc3RydWN0b3IgYW5kCisgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3Ig
Y2FuIG5vdyBib3RoIGJlIGRlZmF1bHRlZC4KKworICAgICAgICBUaGUgSVBDIGVuY29kaW5nIGFu
ZCBkZWNvZGluZyBvZiB0aGUgc2VtYXBob3JlIG9iamVjdCBpcyBhbHNvIHNpbXBsZXIsCisgICAg
ICAgIGxlYW5pbmcgaW50byB0aGUgY3VzdG9tIEFyZ3VtZW50Q29kZXIgc3BlY2lhbGl6YXRpb24g
Zm9yIG9iamVjdHMgb2YgdGhlCisgICAgICAgIFdURjo6VW5peEZpbGVEZXNjcmlwdG9yIHR5cGUu
IFRoZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgaXMgZG9uZSBieQorICAgICAgICBjaGFwZXJvbmlu
ZyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRocm91Z2ggSVBDOjpBdHRhY2htZW50LgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6
Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0lQQ1Nl
bWFwaG9yZVVuaXguY3BwOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OlNlbWFwaG9yZSk6Cisg
ICAgICAgIChJUEM6OlNlbWFwaG9yZTo6c2lnbmFsKToKKyAgICAgICAgKElQQzo6U2VtYXBob3Jl
Ojp3YWl0KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjp3YWl0Rm9yKToKKyAgICAgICAgKElQ
Qzo6U2VtYXBob3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVzdHJveSk6CisgICAgICAgIChJUEM6
OlNlbWFwaG9yZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6OlVu
aXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V1RGOjpVbml4RmlsZURlc2NyaXB0b3I+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMi0wNC0wMyAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBfV0tEYXRhVGFzayBkb2Vzbid0IHdvcmsgaW4g
bWFjQ2F0YWx5c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzkwMWJmYjBmNTQ3OTA2
NGY0ZTdiNjdjOTA2MjFmZjI2ZDc0YjU4MC4uYmIwMWJmZWVhYzYzZjg1NGZhNjU2ZWM2YjhkMjYy
ZmFmYzRjOWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEzLDYgKzEzLDggQEAg
bGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKICAg
ICBsaW51eC9SZWFsVGltZVRocmVhZHMuaAorCisgICAgdW5peC9Vbml4RmlsZURlc2NyaXB0b3Iu
aAogKQogCiBpZiAoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiTGludXgiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdQRS5jbWFrZQppbmRleCBmOGJlZGYxYWY1ZDIwZDljOTNhOTZhZjU2NWU0MTZiZmIwZGY2
ZmFhLi4wOWQ0YWY2MDRhODM1YzdjNmJlMWU0M2MyNDk1NjViZDEwNTNhZmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTMsNiArMTMsOCBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElD
X0hFQURFUlMKICAgICBsaW51eC9Qcm9jZXNzTWVtb3J5Rm9vdHByaW50LmgKICAgICBsaW51eC9D
dXJyZW50UHJvY2Vzc01lbW9yeVN0YXR1cy5oCiAgICAgbGludXgvUmVhbFRpbWVUaHJlYWRzLmgK
KworICAgIHVuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmgKICkKIAogbGlzdChBUFBFTkQgV1RGX1NP
VVJDRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvVW5peEZpbGVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi91bml4L1VuaXhGaWxlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2OWQ2OGFkMGE1MGU5OWU3MjBlMTlmNmUxZWNkYjQ3ZDY2NzQ2OTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L1VuaXhGaWxlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEs
ODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitzdHJ1Y3QgVW5peEZpbGVEZXNjcmlwdG9yIHsKKyAgICBVbml4RmlsZURlc2NyaXB0
b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIEFkb3B0aW9uVGFnIHsgQWRvcHQgfTsKKyAgICBV
bml4RmlsZURlc2NyaXB0b3IoaW50IGZkLCBBZG9wdGlvblRhZykKKyAgICAgICAgOiB2YWx1ZShm
ZCkKKyAgICB7IH0KKworICAgIGVudW0gRHVwbGljYXRpb25UYWcgeyBEdXBsaWNhdGUgfTsKKyAg
ICBVbml4RmlsZURlc2NyaXB0b3IoaW50IGZkLCBEdXBsaWNhdGlvblRhZykKKyAgICB7CisgICAg
ICAgIGlmIChmZCAhPSAtMSkKKyAgICAgICAgICAgIHZhbHVlID0gZHVwQ2xvc2VPbkV4ZWMoZmQp
OworICAgIH0KKworICAgIFVuaXhGaWxlRGVzY3JpcHRvcihjb25zdCBVbml4RmlsZURlc2NyaXB0
b3ImKSA9IGRlbGV0ZTsKKyAgICBVbml4RmlsZURlc2NyaXB0b3ImIG9wZXJhdG9yPShjb25zdCBV
bml4RmlsZURlc2NyaXB0b3ImKSA9IGRlbGV0ZTsKKworICAgIFVuaXhGaWxlRGVzY3JpcHRvcihV
bml4RmlsZURlc2NyaXB0b3ImJiBvKQorICAgIHsKKyAgICAgICAgdmFsdWUgPSBvLnZhbHVlOwor
ICAgICAgICBvLnZhbHVlID0gLTE7CisgICAgfQorCisgICAgVW5peEZpbGVEZXNjcmlwdG9yJiBv
cGVyYXRvcj0oVW5peEZpbGVEZXNjcmlwdG9yJiYgbykKKyAgICB7CisgICAgICAgIGlmICgmbyA9
PSB0aGlzKQorICAgICAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgICAgIHRoaXMtPn5Vbml4
RmlsZURlc2NyaXB0b3IoKTsKKyAgICAgICAgbmV3ICh0aGlzKSBVbml4RmlsZURlc2NyaXB0b3Io
V1RGTW92ZShvKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB+VW5peEZp
bGVEZXNjcmlwdG9yKCkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSAhPSAtMSkKKyAgICAgICAg
ICAgIGNsb3NlV2l0aFJldHJ5KHZhbHVlKTsKKyAgICB9CisKKyAgICBVbml4RmlsZURlc2NyaXB0
b3IgZHVwbGljYXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBVbml4RmlsZURlc2Ny
aXB0b3IgeyB2YWx1ZSwgRHVwbGljYXRlIH07CisgICAgfQorCisgICAgaW50IHJlbGVhc2UoKSBX
QVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4gc3RkOjpleGNoYW5nZSh2YWx1ZSwgLTEpOyB9CisK
KyAgICBpbnQgdmFsdWUgeyAtMSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oCmluZGV4IDJkMzc3ZWM2ODQ4YTczNTNh
ZTc4NWI4YzA4OTc2YzM4ZThhYmJhNWEuLjFkY2Q2Y2IxMjA4MGRjZTY4MTY0YzAzNjMzYjQ5MDQy
YWRkYjZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFw
aG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oCkBA
IC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbGlmIE9T
KFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCisjaW5jbHVkZSA8d3RmL3VuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmg+CiAjZW5kaWYK
IAogbmFtZXNwYWNlIElQQyB7CkBAIC02NSw5ICs2Nyw4IEBAIHB1YmxpYzoKICNlbGlmIE9TKFdJ
TkRPV1MpCiAgICAgZXhwbGljaXQgU2VtYXBob3JlKEhBTkRMRSk7CiAjZWxpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKLSAgICBleHBsaWNpdCBTZW1hcGhvcmUoaW50IGZkKTsKLQotICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2ZkICE9IC0xOyB9CisgICAg
ZXhwbGljaXQgU2VtYXBob3JlKFdURjo6VW5peEZpbGVEZXNjcmlwdG9yJiYpOworICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2ZkLnZhbHVlICE9IC0xOyB9CiAj
ZWxzZQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAjZW5kaWYKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICNlbGlmIE9TKFdJTkRPV1MpCiAg
ICAgSEFORExFIG1fc2VtYXBob3JlSGFuZGxlIHsgbnVsbHB0ciB9OwogI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IG1fZmQgeyAtMSB9OworICAgIFdURjo6VW5peEZpbGVE
ZXNjcmlwdG9yIG1fZmQgeyB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVVbml4LmNwcAppbmRleCBhMzRkYzVhZjIy
NTMxZDVmODNkNTA0MTVjMzZmYmM4Y2RkMDkxOGQ5Li44NDA1MTk1Yjc2NGMzZDZlMGE3YTE4Mjkx
YWYxZjlkYjcyYWI4YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91
bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L3VuaXgvSVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTI0LDEwICsyNCwxMSBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rl
ci5oIgogI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogCisjaW5jbHVkZSAiRGVjb2Rlci5oIgor
I2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAKICNpZiBPUyhMSU5VWCkKQEAgLTQwLDQ1
ICs0MSwzMSBAQCBuYW1lc3BhY2UgSVBDIHsKIFNlbWFwaG9yZTo6U2VtYXBob3JlKCkKIHsKICNp
ZiBPUyhMSU5VWCkKLSAgICBtX2ZkID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyB8IEVGRF9OT05C
TE9DSyB8IEVGRF9TRU1BUEhPUkUpOworICAgIG1fZmQgPSB7IGV2ZW50ZmQoMCwgRUZEX0NMT0VY
RUMgfCBFRkRfTk9OQkxPQ0sgfCBFRkRfU0VNQVBIT1JFKSwgV1RGOjpVbml4RmlsZURlc2NyaXB0
b3I6OkFkb3B0IH07CiAjZW5kaWYKIH0KIAotU2VtYXBob3JlOjpTZW1hcGhvcmUoaW50IGZkKQot
ICAgIDogbV9mZChmZCkKK1NlbWFwaG9yZTo6U2VtYXBob3JlKFdURjo6VW5peEZpbGVEZXNjcmlw
dG9yJiYgZmQpCisgICAgOiBtX2ZkKFdURk1vdmUoZmQpKQogeyB9CiAKLVNlbWFwaG9yZTo6U2Vt
YXBob3JlKFNlbWFwaG9yZSYmIG8pCi17Ci0gICAgbV9mZCA9IG8ubV9mZDsKLSAgICBvLm1fZmQg
PSAtMTsKLX0KK1NlbWFwaG9yZTo6U2VtYXBob3JlKFNlbWFwaG9yZSYmKSA9IGRlZmF1bHQ7CitT
ZW1hcGhvcmUmIFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNlbWFwaG9yZSYmKSA9IGRlZmF1bHQ7CiAK
IFNlbWFwaG9yZTo6flNlbWFwaG9yZSgpCiB7CiAgICAgZGVzdHJveSgpOwogfQogCi1TZW1hcGhv
cmUmIFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNlbWFwaG9yZSYmIG8pCi17Ci0gICAgaWYgKCZvID09
IHRoaXMpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIGRlc3Ryb3koKTsKLSAgICBtX2Zk
ID0gby5tX2ZkOwotICAgIG8ubV9mZCA9IC0xOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogdm9p
ZCBTZW1hcGhvcmU6OnNpZ25hbCgpCiB7CiAjaWYgT1MoTElOVVgpCi0gICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX2ZkID49IDAsICJTaWduYWxsaW5nIG9uIGFuIGludmFsaWQgc2VtYXBob3JlIG9i
amVjdCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mZC52YWx1ZSA+PSAwLCAiU2lnbmFs
bGluZyBvbiBhbiBpbnZhbGlkIHNlbWFwaG9yZSBvYmplY3QiKTsKIAogICAgIC8vIE1hdGNoaW5n
IHdhaXRJbXBsKCkgYW5kIEVGRF9TRU1BUEhPUkUgc2VtYW50aWNzLCBpbmNyZW1lbnQgdGhlIHNl
bWFwaG9yZSB2YWx1ZSBieSAxLgogICAgIHVpbnQ2NF90IHZhbHVlID0gMTsKICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICBpbnQgcmV0ID0gd3JpdGUobV9mZCwgJnZhbHVlLCBzaXplb2YodWlu
dDY0X3QpKTsKKyAgICAgICAgaW50IHJldCA9IHdyaXRlKG1fZmQudmFsdWUsICZ2YWx1ZSwgc2l6
ZW9mKHVpbnQ2NF90KSk7CiAgICAgICAgIGlmIChMSUtFTFkocmV0ICE9IC0xIHx8IGVycm5vICE9
IEVJTlRSKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExNSw5ICsxMDIsOSBAQCBz
dGF0aWMgYm9vbCB3YWl0SW1wbChpbnQgZmQsIGludCB0aW1lb3V0KQogYm9vbCBTZW1hcGhvcmU6
OndhaXQoKQogewogI2lmIE9TKExJTlVYKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mZCA+
PSAwLCAiV2FpdGluZyBvbiBhbiBpbnZhbGlkIHNlbWFwaG9yZSBvYmplY3QiKTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1fZmQudmFsdWUgPj0gMCwgIldhaXRpbmcgb24gYW4gaW52YWxpZCBz
ZW1hcGhvcmUgb2JqZWN0Iik7CiAKLSAgICByZXR1cm4gd2FpdEltcGwobV9mZCwgLTEpOworICAg
IHJldHVybiB3YWl0SW1wbChtX2ZkLnZhbHVlLCAtMSk7CiAjZWxzZQogICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgpAQCAtMTI2LDEyICsxMTMsMTIgQEAgYm9vbCBTZW1hcGhvcmU6OndhaXQoKQog
Ym9vbCBTZW1hcGhvcmU6OndhaXRGb3IoVGltZW91dCB0aW1lb3V0KQogewogI2lmIE9TKExJTlVY
KQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mZCA+PSAwLCAiV2FpdGluZyBvbiBhbiBpbnZh
bGlkIHNlbWFwaG9yZSBvYmplY3QiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fZmQudmFs
dWUgPj0gMCwgIldhaXRpbmcgb24gYW4gaW52YWxpZCBzZW1hcGhvcmUgb2JqZWN0Iik7CiAKICAg
ICBpbnQgdGltZW91dFZhbHVlID0gLTE7CiAgICAgaWYgKCF0aW1lb3V0LmlzSW5maW5pdHkoKSkK
ICAgICAgICAgdGltZW91dFZhbHVlID0gaW50KHRpbWVvdXQuc2Vjb25kc1VudGlsRGVhZGxpbmUo
KS5taWxsaXNlY29uZHMoKSk7Ci0gICAgcmV0dXJuIHdhaXRJbXBsKG1fZmQsIHRpbWVvdXRWYWx1
ZSk7CisgICAgcmV0dXJuIHdhaXRJbXBsKG1fZmQudmFsdWUsIHRpbWVvdXRWYWx1ZSk7CiAjZWxz
ZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMTM5LDI1ICsxMjYsMjEgQEAgYm9vbCBT
ZW1hcGhvcmU6OndhaXRGb3IoVGltZW91dCB0aW1lb3V0KQogCiB2b2lkIFNlbWFwaG9yZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgaW50IGR1cGxpY2F0ZSA9IC0xOwot
ICAgIGlmIChtX2ZkICE9IC0xKQotICAgICAgICBkdXBsaWNhdGUgPSBkdXBDbG9zZU9uRXhlYyht
X2ZkKTsKLQotICAgIGVuY29kZXIuYWRkQXR0YWNobWVudChBdHRhY2htZW50KGR1cGxpY2F0ZSkp
OworICAgIGVuY29kZXIgPDwgbV9mZC5kdXBsaWNhdGUoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxT
ZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgYXV0
byBhdHRhY2htZW50ID0gZGVjb2Rlci50YWtlTGFzdEF0dGFjaG1lbnQoKTsKLSAgICBpZiAoIWF0
dGFjaG1lbnQpCisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj4gZmQ7
CisgICAgZGVjb2RlciA+PiBmZDsKKyAgICBpZiAoIWZkKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3Bs
YWNlLCBhdHRhY2htZW50LT5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSB9OworICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKCpmZCkgfTsK
IH0KIAogdm9pZCBTZW1hcGhvcmU6OmRlc3Ryb3koKQogewotICAgIGlmIChtX2ZkID49IDApCi0g
ICAgICAgIGNsb3NlV2l0aFJldHJ5KG1fZmQpOworICAgIG1fZmQgPSB7IH07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggNTE2YmRiNDU3ZTNjNDU2MzNkNjNlMWY3YWE4YzIzZmQ2NjQyYmU0NS4u
OWVjNDNlZjc5YTU0MDNkZGRmZWVmNDExZGRjNmU5MDQwMTU5ODI0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjkxLDQgKzMyOTEs
MjcgQEAgc3RkOjpvcHRpb25hbDxUZXh0UmVjb2duaXRpb25EYXRhRGV0ZWN0b3I+IEFyZ3VtZW50
Q29kZXI8VGV4dFJlY29nbml0aW9uRGF0YURldGUKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9B
TkFMWVNJUykgJiYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCisjaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciYg
ZmQpCit7CisgICAgYXV0byBkdXBsaWNhdGUgPSBmZC5kdXBsaWNhdGUoKTsKKyAgICBlbmNvZGVy
LmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudChkdXBsaWNhdGUucmVsZWFzZSgpKSk7Cit9CisKK3Zv
aWQgQXJndW1lbnRDb2RlcjxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciYmIGZkKQoreworICAgIGVuY29kZXIu
YWRkQXR0YWNobWVudChBdHRhY2htZW50KGZkLnJlbGVhc2UoKSkpOworfQorCitzdGQ6Om9wdGlv
bmFsPFdURjo6VW5peEZpbGVEZXNjcmlwdG9yPiBBcmd1bWVudENvZGVyPFdURjo6VW5peEZpbGVE
ZXNjcmlwdG9yPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBhdHRhY2ht
ZW50ID0gZGVjb2Rlci50YWtlTGFzdEF0dGFjaG1lbnQoKTsKKyAgICBpZiAoIWF0dGFjaG1lbnQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
V1RGOjpVbml4RmlsZURlc2NyaXB0b3I+IHsgc3RkOjppbl9wbGFjZSwgYXR0YWNobWVudC0+cmVs
ZWFzZUZpbGVEZXNjcmlwdG9yKCksIFdURjo6VW5peEZpbGVEZXNjcmlwdG9yOjpBZG9wdCB9Owor
fQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDVlZjNlNjM0ZmMwOGEyODlmMjUyMTkzNzdh
ODM5Y2VlMzk3MmNlNTEuLjc4MzZmODlkMGIyZDM0MzljMDY5ZjJkMzk3ODM2OWIwMjIxNDdmYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0x
MDYsNiArMTA2LDEwIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CiAjZW5kaWYKIAorI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQorI2luY2x1ZGUgPHd0Zi91bml4L1VuaXhGaWxlRGVzY3Jp
cHRvci5oPgorI2VuZGlmCisKIE9CSkNfQ0xBU1MgVktDSW1hZ2VBbmFseXNpczsKIAogI2lmIFVT
RShBVkZPVU5EQVRJT04pCkBAIC04MzksNiArODQzLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PiB7CiAKICNlbmRpZgogCisj
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V1RGOjpVbml4RmlsZURlc2NyaXB0b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdURjo6VW5peEZpbGVEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciYmKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456681</attachid>
            <date>2022-04-05 01:10:47 -0700</date>
            <delta_ts>2022-04-05 03:45:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238726-20220405101045.patch</filename>
            <type>text/plain</type>
            <size>14236</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxMDIwNGEwMThhMDA4NTU3MWE4YjE0
NDU2MjU3NzI4YjgyZDNhOTIuLjE4M2YzMmM4OTI3ZTIyMzA0NTVmY2MxOTkyNzIxNDQwY2NkOWYw
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDQtMDUgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtVbml4XSBBZGQgVW5peEZpbGVEZXNjcmlwdG9y
LCB1c2UgaXQgaW4gSVBDOjpTZW1hcGhvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgVW5peEZpbGVEZXNjcmlwdG9yIGNsYXNzLCBpbnRl
bmRlZCBhcyBhIHdyYXBwZXIgZm9yIGEgZmlsZQorICAgICAgICBkZXNjcmlwdG9yIGludGVnZXIu
IENvbnN0cnVjdGlvbiBpcyBhIG1hdHRlciBvZiBhZG9wdGluZyBvciBkdXBsaWNhdGluZworICAg
ICAgICB0aGUgcGFzc2VkLWluIGZpbGUgZGVzY3JpcHRvciB2YWx1ZS4gVW5peEZpbGVEZXNjcmlw
dG9yIG9iamVjdHMgY2FuIGJlCisgICAgICAgIG1vdmVkIGFyb3VuZCBhbmQgZXhwbGljaXRseSBk
dXBsaWNhdGVkLCBhbmQgdGhlIGNvbnRhaW5lZCBmZCB2YWx1ZSBjYW4KKyAgICAgICAgYmUgcmVs
ZWFzZWQuCisKKyAgICAgICAgVGhlIHdyYXBwZXIgY2xhc3MgbWFrZXMgaXQgZWFzaWVyIHRvIGhh
bmRsZSBmaWxlIGRlc2NyaXB0b3IgdmFsdWVzIHdoZW4KKyAgICAgICAgZW1iZWRkZWQgaW50byBv
dGhlciB0eXBlcyBhcyBtZW1iZXIgdmFyaWFibGVzLiBJdCBhbHNvIGFsbG93cyB0byBzcGVjaWZ5
CisgICAgICAgIGN1c3RvbSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgaW4gdGhlIFdlYktpdCBJUEMg
aW5mcmFzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogd3RmL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi91bml4L1VuaXhGaWxl
RGVzY3JpcHRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VW5peEZpbGVEZXNjcmlwdG9yOjpV
bml4RmlsZURlc2NyaXB0b3IpOgorICAgICAgICAoV1RGOjpVbml4RmlsZURlc2NyaXB0b3I6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6flVuaXhGaWxlRGVz
Y3JpcHRvcik6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6dmFsdWUgY29uc3Qp
OgorICAgICAgICAoV1RGOjpVbml4RmlsZURlc2NyaXB0b3I6OmR1cGxpY2F0ZSBjb25zdCk6CisK
IDIwMjItMDQtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEdQVSBwcm9jZXNzIHN5c3RlbSBmZWF0dXJlIGZsYWdzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDNjNDdlYzMxN2Q5ZWYzMDBmNjMyYmFlOTI2YzljMzhkNWY4ZmYwYzYuLmVhMzQyYzhlMzZhYmEy
OGJkZWNkOWZkNWIwNGFjOGI1Y2U3OGIyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MjItMDQtMDUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAg
IFtVbml4XSBBZGQgVW5peEZpbGVEZXNjcmlwdG9yLCB1c2UgaXQgaW4gSVBDOjpTZW1hcGhvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODcyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6
OlVuaXhGaWxlRGVzY3JpcHRvciBpbiBJUEM6OlNlbWFwaG9yZSBpbiBwbGFjZSBvZiBhIHJhdyBp
bnRlZ2VyCisgICAgICAgIHZhbHVlLiBUaGlzIGFsc28gc2ltcGxpZmllcyBvdGhlciB0aGluZ3Ms
IGUuZy4gdGhlIG1vdmUgY29uc3RydWN0b3IgYW5kCisgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0
b3IgY2FuIG5vdyBib3RoIGJlIGRlZmF1bHRlZC4KKworICAgICAgICBUaGUgSVBDIGVuY29kaW5n
IGFuZCBkZWNvZGluZyBvZiB0aGUgc2VtYXBob3JlIG9iamVjdCBpcyBhbHNvIHNpbXBsZXIsCisg
ICAgICAgIGxlYW5pbmcgaW50byB0aGUgY3VzdG9tIEFyZ3VtZW50Q29kZXIgc3BlY2lhbGl6YXRp
b24gZm9yIG9iamVjdHMgb2YgdGhlCisgICAgICAgIFdURjo6VW5peEZpbGVEZXNjcmlwdG9yIHR5
cGUuIFRoZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgaXMgZG9uZSBieQorICAgICAgICBjaGFwZXJv
bmluZyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRocm91Z2ggSVBDOjpBdHRhY2htZW50LgorCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oOgorICAgICAgICAoSVBDOjpTZW1hcGhv
cmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0lQ
Q1NlbWFwaG9yZVVuaXguY3BwOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OlNlbWFwaG9yZSk6
CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6c2lnbmFsKToKKyAgICAgICAgKElQQzo6U2VtYXBo
b3JlOjp3YWl0KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjp3YWl0Rm9yKToKKyAgICAgICAg
KElQQzo6U2VtYXBob3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6
OmRlY29kZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVzdHJveSk6CisgICAgICAgIChJ
UEM6OlNlbWFwaG9yZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6
OlVuaXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V1RGOjpVbml4RmlsZURlc2NyaXB0b3I+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMi0wNC0wNSAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIE1hcmsgImJhY2tlbmQi
IHBhcmFtZXRlcnMgb2Ygd2ViIHZpZXcgY29uc3RydWN0b3JzIG5vdCBudWxsYWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCAzOTAxYmZiMGY1NDc5MDY0ZjRlN2I2N2M5MDYyMWZmMjZk
NzRiNTgwLi5iYjAxYmZlZWFjNjNmODU0ZmE2NTZlYzZiOGQyNjJmYWZjNGM5ZGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTMsNiArMTMsOCBAQCBsaXN0KEFQUEVORCBXVEZfUFVC
TElDX0hFQURFUlMKICAgICBnbGliL1dURkdUeXBlLmgKIAogICAgIGxpbnV4L1JlYWxUaW1lVGhy
ZWFkcy5oCisKKyAgICB1bml4L1VuaXhGaWxlRGVzY3JpcHRvci5oCiApCiAKIGlmIChDTUFLRV9T
WVNURU1fTkFNRSBNQVRDSEVTICJMaW51eCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4
IGY4YmVkZjFhZjVkMjBkOWM5M2E5NmFmNTY1ZTQxNmJmYjBkZjZmYWEuLjA5ZDRhZjYwNGE4MzVj
N2M2YmUxZTQzYzI0OTU2NWJkMTA1M2FmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC0xMyw2ICsxMyw4IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgIGxpbnV4
L1Byb2Nlc3NNZW1vcnlGb290cHJpbnQuaAogICAgIGxpbnV4L0N1cnJlbnRQcm9jZXNzTWVtb3J5
U3RhdHVzLmgKICAgICBsaW51eC9SZWFsVGltZVRocmVhZHMuaAorCisgICAgdW5peC9Vbml4Rmls
ZURlc2NyaXB0b3IuaAogKQogCiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdW5peC9Vbml4RmlsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRjMGFiNTMzOTExMmIwN2Yw
MDE0MGY4YjYyYTExODY5ZDJmOWM0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVk
ZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFVuaXhGaWxlRGVzY3JpcHRvciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVW5peEZpbGVEZXNjcmlwdG9yKTsKK3B1YmxpYzoKKyAgICBVbml4Rmls
ZURlc2NyaXB0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIEFkb3B0aW9uVGFnIHsgQWRvcHQg
fTsKKyAgICBVbml4RmlsZURlc2NyaXB0b3IoaW50IGZkLCBBZG9wdGlvblRhZykKKyAgICAgICAg
OiBtX3ZhbHVlKGZkKQorICAgIHsgfQorCisgICAgZW51bSBEdXBsaWNhdGlvblRhZyB7IER1cGxp
Y2F0ZSB9OworICAgIFVuaXhGaWxlRGVzY3JpcHRvcihpbnQgZmQsIER1cGxpY2F0aW9uVGFnKQor
ICAgIHsKKyAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgICAgICBtX3ZhbHVlID0gZHVwQ2xv
c2VPbkV4ZWMoZmQpOworICAgIH0KKworICAgIFVuaXhGaWxlRGVzY3JpcHRvcihVbml4RmlsZURl
c2NyaXB0b3ImJiBvKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IG8ucmVsZWFzZSgpOworICAg
IH0KKworICAgIFVuaXhGaWxlRGVzY3JpcHRvciYgb3BlcmF0b3I9KFVuaXhGaWxlRGVzY3JpcHRv
ciYmIG8pCisgICAgeworICAgICAgICBpZiAoJm8gPT0gdGhpcykKKyAgICAgICAgICAgIHJldHVy
biAqdGhpczsKKworICAgICAgICB0aGlzLT5+VW5peEZpbGVEZXNjcmlwdG9yKCk7CisgICAgICAg
IG5ldyAodGhpcykgVW5peEZpbGVEZXNjcmlwdG9yKFdURk1vdmUobykpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgflVuaXhGaWxlRGVzY3JpcHRvcigpCisgICAgeworICAg
ICAgICBpZiAobV92YWx1ZSA+PSAwKQorICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkobV92YWx1
ZSk7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgPj0gMDsgfQorCisgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQorCisgICAgVW5peEZpbGVEZXNjcmlwdG9yIGR1cGxpY2F0ZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gVW5peEZpbGVEZXNjcmlwdG9yIHsgbV92YWx1ZSwgRHVwbGljYXRlIH07
CisgICAgfQorCisgICAgaW50IHJlbGVhc2UoKSBXQVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4g
c3RkOjpleGNoYW5nZShtX3ZhbHVlLCAtMSk7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV92YWx1
ZSB7IC0xIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSVBDU2VtYXBob3JlLmgKaW5kZXggMmQzNzdlYzY4NDhhNzM1M2FlNzg1YjhjMDg5NzZj
MzhlOGFiYmE1YS4uYzAxNzcyYzY1NTk5NTg5YzNjNGQyODQyYjYzZjU3M2MzZDIxMDg5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmgKQEAgLTM0LDYgKzM0LDgg
QEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VsaWYgT1MoV0lORE9XUykKICNp
bmNsdWRlIDx3aW5kb3dzLmg+CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyNpbmNs
dWRlIDx3dGYvdW5peC9Vbml4RmlsZURlc2NyaXB0b3IuaD4KICNlbmRpZgogCiBuYW1lc3BhY2Ug
SVBDIHsKQEAgLTY1LDkgKzY3LDggQEAgcHVibGljOgogI2VsaWYgT1MoV0lORE9XUykKICAgICBl
eHBsaWNpdCBTZW1hcGhvcmUoSEFORExFKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQotICAgIGV4cGxpY2l0IFNlbWFwaG9yZShpbnQgZmQpOwotCi0gICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQgIT0gLTE7IH0KKyAgICBleHBsaWNpdCBTZW1h
cGhvcmUoV1RGOjpVbml4RmlsZURlc2NyaXB0b3ImJik7CisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mZDsgfQogI2Vsc2UKICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkBAIC04MCw3ICs4MSw3
IEBAIHByaXZhdGU6CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIEhBTkRMRSBtX3NlbWFwaG9yZUhh
bmRsZSB7IG51bGxwdHIgfTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGlu
dCBtX2ZkIHsgLTEgfTsKKyAgICBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciBtX2ZkOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1Nl
bWFwaG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9JUENTZW1h
cGhvcmVVbml4LmNwcAppbmRleCBhMzRkYzVhZjIyNTMxZDVmODNkNTA0MTVjMzZmYmM4Y2RkMDkx
OGQ5Li5jZTYyN2JmNDNmOTg3MzA5Mzg1NjdhYWJjMzk3NGM5ZGI2NTM4Mzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvSVBDU2VtYXBob3JlVW5peC5jcHAK
QEAgLTI0LDEwICsyNCwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgIklQQ1NlbWFwaG9y
ZS5oIgogCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFz
Lmg+CiAKICNpZiBPUyhMSU5VWCkKQEAgLTQwLDQ1ICs0MSwzMSBAQCBuYW1lc3BhY2UgSVBDIHsK
IFNlbWFwaG9yZTo6U2VtYXBob3JlKCkKIHsKICNpZiBPUyhMSU5VWCkKLSAgICBtX2ZkID0gZXZl
bnRmZCgwLCBFRkRfQ0xPRVhFQyB8IEVGRF9OT05CTE9DSyB8IEVGRF9TRU1BUEhPUkUpOworICAg
IG1fZmQgPSB7IGV2ZW50ZmQoMCwgRUZEX0NMT0VYRUMgfCBFRkRfTk9OQkxPQ0sgfCBFRkRfU0VN
QVBIT1JFKSwgV1RGOjpVbml4RmlsZURlc2NyaXB0b3I6OkFkb3B0IH07CiAjZW5kaWYKIH0KIAot
U2VtYXBob3JlOjpTZW1hcGhvcmUoaW50IGZkKQotICAgIDogbV9mZChmZCkKK1NlbWFwaG9yZTo6
U2VtYXBob3JlKFdURjo6VW5peEZpbGVEZXNjcmlwdG9yJiYgZmQpCisgICAgOiBtX2ZkKFdURk1v
dmUoZmQpKQogeyB9CiAKLVNlbWFwaG9yZTo6U2VtYXBob3JlKFNlbWFwaG9yZSYmIG8pCi17Ci0g
ICAgbV9mZCA9IG8ubV9mZDsKLSAgICBvLm1fZmQgPSAtMTsKLX0KK1NlbWFwaG9yZTo6U2VtYXBo
b3JlKFNlbWFwaG9yZSYmKSA9IGRlZmF1bHQ7CitTZW1hcGhvcmUmIFNlbWFwaG9yZTo6b3BlcmF0
b3I9KFNlbWFwaG9yZSYmKSA9IGRlZmF1bHQ7CiAKIFNlbWFwaG9yZTo6flNlbWFwaG9yZSgpCiB7
CiAgICAgZGVzdHJveSgpOwogfQogCi1TZW1hcGhvcmUmIFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNl
bWFwaG9yZSYmIG8pCi17Ci0gICAgaWYgKCZvID09IHRoaXMpCi0gICAgICAgIHJldHVybiAqdGhp
czsKLQotICAgIGRlc3Ryb3koKTsKLSAgICBtX2ZkID0gby5tX2ZkOwotICAgIG8ubV9mZCA9IC0x
OwotICAgIHJldHVybiAqdGhpczsKLX0KLQogdm9pZCBTZW1hcGhvcmU6OnNpZ25hbCgpCiB7CiAj
aWYgT1MoTElOVVgpCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZkID49IDAsICJTaWduYWxs
aW5nIG9uIGFuIGludmFsaWQgc2VtYXBob3JlIG9iamVjdCIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV9mZC52YWx1ZSgpID49IDAsICJTaWduYWxsaW5nIG9uIGFuIGludmFsaWQgc2VtYXBo
b3JlIG9iamVjdCIpOwogCiAgICAgLy8gTWF0Y2hpbmcgd2FpdEltcGwoKSBhbmQgRUZEX1NFTUFQ
SE9SRSBzZW1hbnRpY3MsIGluY3JlbWVudCB0aGUgc2VtYXBob3JlIHZhbHVlIGJ5IDEuCiAgICAg
dWludDY0X3QgdmFsdWUgPSAxOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGludCByZXQg
PSB3cml0ZShtX2ZkLCAmdmFsdWUsIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBpbnQgcmV0
ID0gd3JpdGUobV9mZC52YWx1ZSgpLCAmdmFsdWUsIHNpemVvZih1aW50NjRfdCkpOwogICAgICAg
ICBpZiAoTElLRUxZKHJldCAhPSAtMSB8fCBlcnJubyAhPSBFSU5UUikpCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMTUsOSArMTAyLDkgQEAgc3RhdGljIGJvb2wgd2FpdEltcGwoaW50
IGZkLCBpbnQgdGltZW91dCkKIGJvb2wgU2VtYXBob3JlOjp3YWl0KCkKIHsKICNpZiBPUyhMSU5V
WCkKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fZmQgPj0gMCwgIldhaXRpbmcgb24gYW4gaW52
YWxpZCBzZW1hcGhvcmUgb2JqZWN0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZkLnZh
bHVlKCkgPj0gMCwgIldhaXRpbmcgb24gYW4gaW52YWxpZCBzZW1hcGhvcmUgb2JqZWN0Iik7CiAK
LSAgICByZXR1cm4gd2FpdEltcGwobV9mZCwgLTEpOworICAgIHJldHVybiB3YWl0SW1wbChtX2Zk
LnZhbHVlKCksIC0xKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0xMjYs
MTIgKzExMywxMiBAQCBib29sIFNlbWFwaG9yZTo6d2FpdCgpCiBib29sIFNlbWFwaG9yZTo6d2Fp
dEZvcihUaW1lb3V0IHRpbWVvdXQpCiB7CiAjaWYgT1MoTElOVVgpCi0gICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX2ZkID49IDAsICJXYWl0aW5nIG9uIGFuIGludmFsaWQgc2VtYXBob3JlIG9iamVj
dCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mZC52YWx1ZSgpID49IDAsICJXYWl0aW5n
IG9uIGFuIGludmFsaWQgc2VtYXBob3JlIG9iamVjdCIpOwogCiAgICAgaW50IHRpbWVvdXRWYWx1
ZSA9IC0xOwogICAgIGlmICghdGltZW91dC5pc0luZmluaXR5KCkpCiAgICAgICAgIHRpbWVvdXRW
YWx1ZSA9IGludCh0aW1lb3V0LnNlY29uZHNVbnRpbERlYWRsaW5lKCkubWlsbGlzZWNvbmRzKCkp
OwotICAgIHJldHVybiB3YWl0SW1wbChtX2ZkLCB0aW1lb3V0VmFsdWUpOworICAgIHJldHVybiB3
YWl0SW1wbChtX2ZkLnZhbHVlKCksIHRpbWVvdXRWYWx1ZSk7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtMTM5LDI1ICsxMjYsMjEgQEAgYm9vbCBTZW1hcGhvcmU6OndhaXRG
b3IoVGltZW91dCB0aW1lb3V0KQogCiB2b2lkIFNlbWFwaG9yZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7Ci0gICAgaW50IGR1cGxpY2F0ZSA9IC0xOwotICAgIGlmIChtX2ZkICE9
IC0xKQotICAgICAgICBkdXBsaWNhdGUgPSBkdXBDbG9zZU9uRXhlYyhtX2ZkKTsKLQotICAgIGVu
Y29kZXIuYWRkQXR0YWNobWVudChBdHRhY2htZW50KGR1cGxpY2F0ZSkpOworICAgIGVuY29kZXIg
PDwgbV9mZC5kdXBsaWNhdGUoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxTZW1hcGhvcmU+IFNlbWFw
aG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgYXV0byBhdHRhY2htZW50ID0g
ZGVjb2Rlci50YWtlTGFzdEF0dGFjaG1lbnQoKTsKLSAgICBpZiAoIWF0dGFjaG1lbnQpCisgICAg
c3RkOjpvcHRpb25hbDxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj4gZmQ7CisgICAgZGVjb2RlciA+
PiBmZDsKKyAgICBpZiAoIWZkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBhdHRhY2htZW50
LT5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSB9OworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFNl
bWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKCpmZCkgfTsKIH0KIAogdm9pZCBTZW1h
cGhvcmU6OmRlc3Ryb3koKQogewotICAgIGlmIChtX2ZkID49IDApCi0gICAgICAgIGNsb3NlV2l0
aFJldHJ5KG1fZmQpOworICAgIG1fZmQgPSB7IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
NTE2YmRiNDU3ZTNjNDU2MzNkNjNlMWY3YWE4YzIzZmQ2NjQyYmU0NS4uOWVjNDNlZjc5YTU0MDNk
ZGRmZWVmNDExZGRjNmU5MDQwMTU5ODI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjkxLDQgKzMyOTEsMjcgQEAgc3RkOjpvcHRp
b25hbDxUZXh0UmVjb2duaXRpb25EYXRhRGV0ZWN0b3I+IEFyZ3VtZW50Q29kZXI8VGV4dFJlY29n
bml0aW9uRGF0YURldGUKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykgJiYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQogCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisKK3Zv
aWQgQXJndW1lbnRDb2RlcjxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciYgZmQpCit7CisgICAgYXV0
byBkdXBsaWNhdGUgPSBmZC5kdXBsaWNhdGUoKTsKKyAgICBlbmNvZGVyLmFkZEF0dGFjaG1lbnQo
QXR0YWNobWVudChkdXBsaWNhdGUucmVsZWFzZSgpKSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBXVEY6
OlVuaXhGaWxlRGVzY3JpcHRvciYmIGZkKQoreworICAgIGVuY29kZXIuYWRkQXR0YWNobWVudChB
dHRhY2htZW50KGZkLnJlbGVhc2UoKSkpOworfQorCitzdGQ6Om9wdGlvbmFsPFdURjo6VW5peEZp
bGVEZXNjcmlwdG9yPiBBcmd1bWVudENvZGVyPFdURjo6VW5peEZpbGVEZXNjcmlwdG9yPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBhdHRhY2htZW50ID0gZGVjb2Rlci50
YWtlTGFzdEF0dGFjaG1lbnQoKTsKKyAgICBpZiAoIWF0dGFjaG1lbnQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8V1RGOjpVbml4RmlsZURl
c2NyaXB0b3I+IHsgc3RkOjppbl9wbGFjZSwgYXR0YWNobWVudC0+cmVsZWFzZUZpbGVEZXNjcmlw
dG9yKCksIFdURjo6VW5peEZpbGVEZXNjcmlwdG9yOjpBZG9wdCB9OworfQorCisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDVlZjNlNjM0ZmMwOGEyODlmMjUyMTkzNzdhODM5Y2VlMzk3MmNlNTEu
Ljc4MzZmODlkMGIyZDM0MzljMDY5ZjJkMzk3ODM2OWIwMjIxNDdmYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMDYsNiArMTA2LDEwIEBA
IGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CiAjZW5kaWYKIAorI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQorI2luY2x1ZGUgPHd0Zi91bml4L1VuaXhGaWxlRGVzY3JpcHRvci5oPgorI2VuZGlm
CisKIE9CSkNfQ0xBU1MgVktDSW1hZ2VBbmFseXNpczsKIAogI2lmIFVTRShBVkZPVU5EQVRJT04p
CkBAIC04MzksNiArODQzLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PiB7CiAKICNlbmRpZgogCisjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpVbml4
RmlsZURlc2NyaXB0b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdURjo6VW5peEZpbGVEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456688</attachid>
            <date>2022-04-05 03:45:15 -0700</date>
            <delta_ts>2022-04-05 03:45:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238726-20220405124513.patch</filename>
            <type>text/plain</type>
            <size>14197</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxMDIwNGEwMThhMDA4NTU3MWE4YjE0
NDU2MjU3NzI4YjgyZDNhOTIuLjJjZDk3MWJmNTMwOTIwNDQwNDBhOGVkNmU1OWQ4YmU1NTY0NGQ0
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDQtMDUgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtVbml4XSBBZGQgVW5peEZpbGVEZXNjcmlwdG9y
LCB1c2UgaXQgaW4gSVBDOjpTZW1hcGhvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBH
YXJjaWEgQ2FtcG9zLgorCisgICAgICAgIEFkZCB0aGUgVW5peEZpbGVEZXNjcmlwdG9yIGNsYXNz
LCBpbnRlbmRlZCBhcyBhIHdyYXBwZXIgZm9yIGEgZmlsZQorICAgICAgICBkZXNjcmlwdG9yIGlu
dGVnZXIuIENvbnN0cnVjdGlvbiBpcyBhIG1hdHRlciBvZiBhZG9wdGluZyBvciBkdXBsaWNhdGlu
ZworICAgICAgICB0aGUgcGFzc2VkLWluIGZpbGUgZGVzY3JpcHRvciB2YWx1ZS4gVW5peEZpbGVE
ZXNjcmlwdG9yIG9iamVjdHMgY2FuIGJlCisgICAgICAgIG1vdmVkIGFyb3VuZCBhbmQgZXhwbGlj
aXRseSBkdXBsaWNhdGVkLCBhbmQgdGhlIGNvbnRhaW5lZCBmZCB2YWx1ZSBjYW4KKyAgICAgICAg
YmUgcmVsZWFzZWQuCisKKyAgICAgICAgVGhlIHdyYXBwZXIgY2xhc3MgbWFrZXMgaXQgZWFzaWVy
IHRvIGhhbmRsZSBmaWxlIGRlc2NyaXB0b3IgdmFsdWVzIHdoZW4KKyAgICAgICAgZW1iZWRkZWQg
aW50byBvdGhlciB0eXBlcyBhcyBtZW1iZXIgdmFyaWFibGVzLiBJdCBhbHNvIGFsbG93cyB0byBz
cGVjaWZ5CisgICAgICAgIGN1c3RvbSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgaW4gdGhlIFdlYktp
dCBJUEMgaW5mcmFzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6
CisgICAgICAgICogd3RmL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi91bml4L1Vu
aXhGaWxlRGVzY3JpcHRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VW5peEZpbGVEZXNjcmlw
dG9yOjpVbml4RmlsZURlc2NyaXB0b3IpOgorICAgICAgICAoV1RGOjpVbml4RmlsZURlc2NyaXB0
b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6flVuaXhG
aWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcjo6dmFsdWUg
Y29uc3QpOgorICAgICAgICAoV1RGOjpVbml4RmlsZURlc2NyaXB0b3I6OmR1cGxpY2F0ZSBjb25z
dCk6CisKIDIwMjItMDQtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIEdQVSBwcm9jZXNzIHN5c3RlbSBmZWF0dXJlIGZsYWdzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDNjNDdlYzMxN2Q5ZWYzMDBmNjMyYmFlOTI2YzljMzhkNWY4ZmYwYzYuLjc4NDU0YzA4
YzhkM2FlM2FhODNhYjExZmU3OThhNTE1ZDA5YTZhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMjItMDQtMDUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtVbml4XSBBZGQgVW5peEZpbGVEZXNjcmlwdG9yLCB1c2UgaXQgaW4gSVBDOjpTZW1h
cGhvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAg
ICAgIFVzZSBXVEY6OlVuaXhGaWxlRGVzY3JpcHRvciBpbiBJUEM6OlNlbWFwaG9yZSBpbiBwbGFj
ZSBvZiBhIHJhdyBpbnRlZ2VyCisgICAgICAgIHZhbHVlLiBUaGlzIGFsc28gc2ltcGxpZmllcyBv
dGhlciB0aGluZ3MsIGUuZy4gdGhlIG1vdmUgY29uc3RydWN0b3IgYW5kCisgICAgICAgIGFzc2ln
bm1lbnQgb3BlcmF0b3IgY2FuIG5vdyBib3RoIGJlIGRlZmF1bHRlZC4KKworICAgICAgICBUaGUg
SVBDIGVuY29kaW5nIGFuZCBkZWNvZGluZyBvZiB0aGUgc2VtYXBob3JlIG9iamVjdCBpcyBhbHNv
IHNpbXBsZXIsCisgICAgICAgIGxlYW5pbmcgaW50byB0aGUgY3VzdG9tIEFyZ3VtZW50Q29kZXIg
c3BlY2lhbGl6YXRpb24gZm9yIG9iamVjdHMgb2YgdGhlCisgICAgICAgIFdURjo6VW5peEZpbGVE
ZXNjcmlwdG9yIHR5cGUuIFRoZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgaXMgZG9uZSBieQorICAg
ICAgICBjaGFwZXJvbmluZyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRocm91Z2ggSVBDOjpBdHRhY2ht
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oOgorICAgICAgICAo
SVBDOjpTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6
OlNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6c2lnbmFsKToKKyAgICAgICAg
KElQQzo6U2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjp3YWl0Rm9y
KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTZW1hcGhvcmU6OmRlY29kZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVzdHJveSk6
CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXVEY6OlVuaXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V1RGOjpVbml4RmlsZURlc2NyaXB0b3I+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMi0wNC0wNSAgQWRyaWFu
IFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIE1h
cmsgImJhY2tlbmQiIHBhcmFtZXRlcnMgb2Ygd2ViIHZpZXcgY29uc3RydWN0b3JzIG5vdCBudWxs
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAzOTAxYmZiMGY1NDc5MDY0ZjRlN2I2
N2M5MDYyMWZmMjZkNzRiNTgwLi5iYjAxYmZlZWFjNjNmODU0ZmE2NTZlYzZiOGQyNjJmYWZjNGM5
ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTMsNiArMTMsOCBAQCBsaXN0KEFQ
UEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL1dURkdUeXBlLmgKIAogICAgIGxpbnV4
L1JlYWxUaW1lVGhyZWFkcy5oCisKKyAgICB1bml4L1VuaXhGaWxlRGVzY3JpcHRvci5oCiApCiAK
IGlmIChDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJMaW51eCIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BF
LmNtYWtlCmluZGV4IGY4YmVkZjFhZjVkMjBkOWM5M2E5NmFmNTY1ZTQxNmJmYjBkZjZmYWEuLjA5
ZDRhZjYwNGE4MzVjN2M2YmUxZTQzYzI0OTU2NWJkMTA1M2FmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
V1BFLmNtYWtlCkBAIC0xMyw2ICsxMyw4IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVS
UwogICAgIGxpbnV4L1Byb2Nlc3NNZW1vcnlGb290cHJpbnQuaAogICAgIGxpbnV4L0N1cnJlbnRQ
cm9jZXNzTWVtb3J5U3RhdHVzLmgKICAgICBsaW51eC9SZWFsVGltZVRocmVhZHMuaAorCisgICAg
dW5peC9Vbml4RmlsZURlc2NyaXB0b3IuaAogKQogCiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5peC9Vbml4RmlsZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgwOWZm
N2YzNzE5Y2ZjYmZiODM5MmU2YmVhY2JmOWRjZmJlZjIwZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw5MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlTdGRF
eHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFVuaXhGaWxlRGVzY3JpcHRvciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5peEZpbGVEZXNjcmlwdG9yKTsKK3B1YmxpYzoK
KyAgICBVbml4RmlsZURlc2NyaXB0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIEFkb3B0aW9u
VGFnIHsgQWRvcHQgfTsKKyAgICBVbml4RmlsZURlc2NyaXB0b3IoaW50IGZkLCBBZG9wdGlvblRh
ZykKKyAgICAgICAgOiBtX3ZhbHVlKGZkKQorICAgIHsgfQorCisgICAgZW51bSBEdXBsaWNhdGlv
blRhZyB7IER1cGxpY2F0ZSB9OworICAgIFVuaXhGaWxlRGVzY3JpcHRvcihpbnQgZmQsIER1cGxp
Y2F0aW9uVGFnKQorICAgIHsKKyAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgICAgICBtX3Zh
bHVlID0gZHVwQ2xvc2VPbkV4ZWMoZmQpOworICAgIH0KKworICAgIFVuaXhGaWxlRGVzY3JpcHRv
cihVbml4RmlsZURlc2NyaXB0b3ImJiBvKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IG8ucmVs
ZWFzZSgpOworICAgIH0KKworICAgIFVuaXhGaWxlRGVzY3JpcHRvciYgb3BlcmF0b3I9KFVuaXhG
aWxlRGVzY3JpcHRvciYmIG8pCisgICAgeworICAgICAgICBpZiAoJm8gPT0gdGhpcykKKyAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKKworICAgICAgICB0aGlzLT5+VW5peEZpbGVEZXNjcmlwdG9y
KCk7CisgICAgICAgIG5ldyAodGhpcykgVW5peEZpbGVEZXNjcmlwdG9yKFdURk1vdmUobykpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgflVuaXhGaWxlRGVzY3JpcHRvcigp
CisgICAgeworICAgICAgICBpZiAobV92YWx1ZSA+PSAwKQorICAgICAgICAgICAgY2xvc2VXaXRo
UmV0cnkobV92YWx1ZSk7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWUgPj0gMDsgfQorCisgICAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorCisgICAgVW5peEZpbGVEZXNjcmlwdG9yIGR1cGxpY2F0ZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gVW5peEZpbGVEZXNjcmlwdG9yIHsgbV92YWx1ZSwg
RHVwbGljYXRlIH07CisgICAgfQorCisgICAgaW50IHJlbGVhc2UoKSBXQVJOX1VOVVNFRF9SRVRV
Uk4geyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZhbHVlLCAtMSk7IH0KKworcHJpdmF0ZToKKyAg
ICBpbnQgbV92YWx1ZSB7IC0xIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpVbml4RmlsZURlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9JUENTZW1hcGhvcmUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1Nl
bWFwaG9yZS5oCmluZGV4IDJkMzc3ZWM2ODQ4YTczNTNhZTc4NWI4YzA4OTc2YzM4ZThhYmJhNWEu
LmMzMTQyNmNkNDg4YzViNGQ3ODk5N2EwYjFlNTRmYjBjYzIwNTEwZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVk
ZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisjaW5jbHVkZSA8d3RmL3Vu
aXgvVW5peEZpbGVEZXNjcmlwdG9yLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02
NSw5ICs2Nyw4IEBAIHB1YmxpYzoKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgZXhwbGljaXQgU2Vt
YXBob3JlKEhBTkRMRSk7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBleHBs
aWNpdCBTZW1hcGhvcmUoaW50IGZkKTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBtX2ZkICE9IC0xOyB9CisgICAgZXhwbGljaXQgU2VtYXBob3JlKFVuaXhG
aWxlRGVzY3JpcHRvciYmKTsKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2ZkOyB9CiAjZWxzZQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKICNl
bGlmIE9TKFdJTkRPV1MpCiAgICAgSEFORExFIG1fc2VtYXBob3JlSGFuZGxlIHsgbnVsbHB0ciB9
OwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IG1fZmQgeyAtMSB9Owor
ICAgIFVuaXhGaWxlRGVzY3JpcHRvciBtX2ZkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVVbml4LmNwcAppbmRleCBh
MzRkYzVhZjIyNTMxZDVmODNkNTA0MTVjMzZmYmM4Y2RkMDkxOGQ5Li5iYTQ4M2QzYWQ5Y2UyZWE2
OTE2YjRhNzA2YWU0NzRjYjU5NTRiMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3VuaXgvSVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTI0LDEwICsyNCwxMSBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVk
ZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAKICNpZiBPUyhMSU5VWCkK
QEAgLTQwLDQ1ICs0MSwzMSBAQCBuYW1lc3BhY2UgSVBDIHsKIFNlbWFwaG9yZTo6U2VtYXBob3Jl
KCkKIHsKICNpZiBPUyhMSU5VWCkKLSAgICBtX2ZkID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyB8
IEVGRF9OT05CTE9DSyB8IEVGRF9TRU1BUEhPUkUpOworICAgIG1fZmQgPSB7IGV2ZW50ZmQoMCwg
RUZEX0NMT0VYRUMgfCBFRkRfTk9OQkxPQ0sgfCBFRkRfU0VNQVBIT1JFKSwgVW5peEZpbGVEZXNj
cmlwdG9yOjpBZG9wdCB9OwogI2VuZGlmCiB9CiAKLVNlbWFwaG9yZTo6U2VtYXBob3JlKGludCBm
ZCkKLSAgICA6IG1fZmQoZmQpCitTZW1hcGhvcmU6OlNlbWFwaG9yZShVbml4RmlsZURlc2NyaXB0
b3ImJiBmZCkKKyAgICA6IG1fZmQoV1RGTW92ZShmZCkpCiB7IH0KIAotU2VtYXBob3JlOjpTZW1h
cGhvcmUoU2VtYXBob3JlJiYgbykKLXsKLSAgICBtX2ZkID0gby5tX2ZkOwotICAgIG8ubV9mZCA9
IC0xOwotfQorU2VtYXBob3JlOjpTZW1hcGhvcmUoU2VtYXBob3JlJiYpID0gZGVmYXVsdDsKK1Nl
bWFwaG9yZSYgU2VtYXBob3JlOjpvcGVyYXRvcj0oU2VtYXBob3JlJiYpID0gZGVmYXVsdDsKIAog
U2VtYXBob3JlOjp+U2VtYXBob3JlKCkKIHsKICAgICBkZXN0cm95KCk7CiB9CiAKLVNlbWFwaG9y
ZSYgU2VtYXBob3JlOjpvcGVyYXRvcj0oU2VtYXBob3JlJiYgbykKLXsKLSAgICBpZiAoJm8gPT0g
dGhpcykKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgZGVzdHJveSgpOwotICAgIG1fZmQg
PSBvLm1fZmQ7Ci0gICAgby5tX2ZkID0gLTE7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB2b2lk
IFNlbWFwaG9yZTo6c2lnbmFsKCkKIHsKICNpZiBPUyhMSU5VWCkKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG1fZmQgPj0gMCwgIlNpZ25hbGxpbmcgb24gYW4gaW52YWxpZCBzZW1hcGhvcmUgb2Jq
ZWN0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZkLnZhbHVlKCkgPj0gMCwgIlNpZ25h
bGxpbmcgb24gYW4gaW52YWxpZCBzZW1hcGhvcmUgb2JqZWN0Iik7CiAKICAgICAvLyBNYXRjaGlu
ZyB3YWl0SW1wbCgpIGFuZCBFRkRfU0VNQVBIT1JFIHNlbWFudGljcywgaW5jcmVtZW50IHRoZSBz
ZW1hcGhvcmUgdmFsdWUgYnkgMS4KICAgICB1aW50NjRfdCB2YWx1ZSA9IDE7CiAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgaW50IHJldCA9IHdyaXRlKG1fZmQsICZ2YWx1ZSwgc2l6ZW9mKHVp
bnQ2NF90KSk7CisgICAgICAgIGludCByZXQgPSB3cml0ZShtX2ZkLnZhbHVlKCksICZ2YWx1ZSwg
c2l6ZW9mKHVpbnQ2NF90KSk7CiAgICAgICAgIGlmIChMSUtFTFkocmV0ICE9IC0xIHx8IGVycm5v
ICE9IEVJTlRSKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExNSw5ICsxMDIsOSBA
QCBzdGF0aWMgYm9vbCB3YWl0SW1wbChpbnQgZmQsIGludCB0aW1lb3V0KQogYm9vbCBTZW1hcGhv
cmU6OndhaXQoKQogewogI2lmIE9TKExJTlVYKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9m
ZCA+PSAwLCAiV2FpdGluZyBvbiBhbiBpbnZhbGlkIHNlbWFwaG9yZSBvYmplY3QiKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fZmQudmFsdWUoKSA+PSAwLCAiV2FpdGluZyBvbiBhbiBpbnZh
bGlkIHNlbWFwaG9yZSBvYmplY3QiKTsKIAotICAgIHJldHVybiB3YWl0SW1wbChtX2ZkLCAtMSk7
CisgICAgcmV0dXJuIHdhaXRJbXBsKG1fZmQudmFsdWUoKSwgLTEpOwogI2Vsc2UKICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTEyNiwxMiArMTEzLDEyIEBAIGJvb2wgU2VtYXBob3JlOjp3
YWl0KCkKIGJvb2wgU2VtYXBob3JlOjp3YWl0Rm9yKFRpbWVvdXQgdGltZW91dCkKIHsKICNpZiBP
UyhMSU5VWCkKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fZmQgPj0gMCwgIldhaXRpbmcgb24g
YW4gaW52YWxpZCBzZW1hcGhvcmUgb2JqZWN0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSht
X2ZkLnZhbHVlKCkgPj0gMCwgIldhaXRpbmcgb24gYW4gaW52YWxpZCBzZW1hcGhvcmUgb2JqZWN0
Iik7CiAKICAgICBpbnQgdGltZW91dFZhbHVlID0gLTE7CiAgICAgaWYgKCF0aW1lb3V0LmlzSW5m
aW5pdHkoKSkKICAgICAgICAgdGltZW91dFZhbHVlID0gaW50KHRpbWVvdXQuc2Vjb25kc1VudGls
RGVhZGxpbmUoKS5taWxsaXNlY29uZHMoKSk7Ci0gICAgcmV0dXJuIHdhaXRJbXBsKG1fZmQsIHRp
bWVvdXRWYWx1ZSk7CisgICAgcmV0dXJuIHdhaXRJbXBsKG1fZmQudmFsdWUoKSwgdGltZW91dFZh
bHVlKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0xMzksMjUgKzEyNiwy
MSBAQCBib29sIFNlbWFwaG9yZTo6d2FpdEZvcihUaW1lb3V0IHRpbWVvdXQpCiAKIHZvaWQgU2Vt
YXBob3JlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBpbnQgZHVwbGlj
YXRlID0gLTE7Ci0gICAgaWYgKG1fZmQgIT0gLTEpCi0gICAgICAgIGR1cGxpY2F0ZSA9IGR1cENs
b3NlT25FeGVjKG1fZmQpOwotCi0gICAgZW5jb2Rlci5hZGRBdHRhY2htZW50KEF0dGFjaG1lbnQo
ZHVwbGljYXRlKSk7CisgICAgZW5jb2RlciA8PCBtX2ZkLmR1cGxpY2F0ZSgpOwogfQogCiBzdGQ6
Om9wdGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBhdXRvIGF0dGFjaG1lbnQgPSBkZWNvZGVyLnRha2VMYXN0QXR0YWNobWVudCgpOwot
ICAgIGlmICghYXR0YWNobWVudCkKKyAgICBzdGQ6Om9wdGlvbmFsPFVuaXhGaWxlRGVzY3JpcHRv
cj4gZmQ7CisgICAgZGVjb2RlciA+PiBmZDsKKyAgICBpZiAoIWZkKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6
OmluX3BsYWNlLCBhdHRhY2htZW50LT5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSB9OworICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKCpm
ZCkgfTsKIH0KIAogdm9pZCBTZW1hcGhvcmU6OmRlc3Ryb3koKQogewotICAgIGlmIChtX2ZkID49
IDApCi0gICAgICAgIGNsb3NlV2l0aFJldHJ5KG1fZmQpOworICAgIG1fZmQgPSB7IH07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggNTE2YmRiNDU3ZTNjNDU2MzNkNjNlMWY3YWE4YzIzZmQ2NjQy
YmU0NS4uNDA5ZTk4MTA1ZTdlMTI1OTNhYTM0MDJkNWQ5N2ZiODEzZDEwY2U3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjkxLDQg
KzMyOTEsMjcgQEAgc3RkOjpvcHRpb25hbDxUZXh0UmVjb2duaXRpb25EYXRhRGV0ZWN0b3I+IEFy
Z3VtZW50Q29kZXI8VGV4dFJlY29nbml0aW9uRGF0YURldGUKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TUFHRV9BTkFMWVNJUykgJiYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCisjaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCisKK3ZvaWQgQXJndW1lbnRDb2RlcjxVbml4RmlsZURlc2NyaXB0b3I+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5peEZpbGVEZXNjcmlwdG9yJiBmZCkK
K3sKKyAgICBhdXRvIGR1cGxpY2F0ZSA9IGZkLmR1cGxpY2F0ZSgpOworICAgIGVuY29kZXIuYWRk
QXR0YWNobWVudChBdHRhY2htZW50KGR1cGxpY2F0ZS5yZWxlYXNlKCkpKTsKK30KKwordm9pZCBB
cmd1bWVudENvZGVyPFVuaXhGaWxlRGVzY3JpcHRvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBVbml4RmlsZURlc2NyaXB0b3ImJiBmZCkKK3sKKyAgICBlbmNvZGVyLmFkZEF0dGFjaG1lbnQo
QXR0YWNobWVudChmZC5yZWxlYXNlKCkpKTsKK30KKworc3RkOjpvcHRpb25hbDxVbml4RmlsZURl
c2NyaXB0b3I+IEFyZ3VtZW50Q29kZXI8VW5peEZpbGVEZXNjcmlwdG9yPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgYXV0byBhdHRhY2htZW50ID0gZGVjb2Rlci50YWtlTGFzdEF0
dGFjaG1lbnQoKTsKKyAgICBpZiAoIWF0dGFjaG1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VW5peEZpbGVEZXNjcmlwdG9yPiB7IHN0
ZDo6aW5fcGxhY2UsIGF0dGFjaG1lbnQtPnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpLCBVbml4Rmls
ZURlc2NyaXB0b3I6OkFkb3B0IH07Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNWVm
M2U2MzRmYzA4YTI4OWYyNTIxOTM3N2E4MzljZWUzOTcyY2U1MS4uOWJmNGVjYTUzNDc1YmJhOGFm
Y2RiNGQ0ZWIzNzI0YmQzOGM3MDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEwNiw2ICsxMDYsMTAgQEAgY2xhc3MgTWFjaFNlbmRSaWdo
dDsKIH0KICNlbmRpZgogCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisjaW5jbHVkZSA8
d3RmL3VuaXgvVW5peEZpbGVEZXNjcmlwdG9yLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBWS0NJ
bWFnZUFuYWx5c2lzOwogCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKQEAgLTgzOSw2ICs4NDMsMTYg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4+IHsKIAogI2VuZGlmCiAKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxVbml4RmlsZURlc2NyaXB0b3I+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFVuaXhGaWxlRGVzY3JpcHRvciYpOwor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgVW5peEZpbGVEZXNjcmlwdG9yJiYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVuaXhGaWxlRGVzY3JpcHRvcj4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdU
RiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>