<?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>228140</bug_id>
          
          <creation_ts>2021-07-21 00:49:41 -0700</creation_ts>
          <short_desc>[WebAudio] webm; properly trim frames according to the codec delay information</short_desc>
          <delta_ts>2021-08-02 21:21:57 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778373</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-07-21 00:49:41 -0700</bug_when>
    <thetext>The webm metadata contains codec delay information, that specify how many audio frames should be trimmed at the start. This is used to properly deal with the Opus and Vorbis encoder delay behaviour that make them output silence for the first few packets.

Opus encoder delay is typically 45ms so we must drop that much from the start; otherwise that silence is audible and quite noticeable when you play the sound repeatedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778374</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-21 00:50:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/80883882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780318</commentid>
    <comment_count>2</comment_count>
      <attachid>434497</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-07-28 22:56:32 -0700</bug_when>
    <thetext>Created attachment 434497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780733</commentid>
    <comment_count>3</comment_count>
      <attachid>434614</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-07-30 03:31:44 -0700</bug_when>
    <thetext>Created attachment 434614
Patch

For the proper amount of frames to be returned, we need to explicitly tell the AudioConverter that we&apos;ve reached EOS; this is done by returning noErr and set the number of decoded frames to 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780738</commentid>
    <comment_count>4</comment_count>
      <attachid>434615</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-07-30 04:53:02 -0700</bug_when>
    <thetext>Created attachment 434615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781187</commentid>
    <comment_count>5</comment_count>
      <attachid>434733</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-08-01 20:53:45 -0700</bug_when>
    <thetext>Created attachment 434733
Patch

Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781260</commentid>
    <comment_count>6</comment_count>
      <attachid>434733</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-02 09:13:34 -0700</bug_when>
    <thetext>Comment on attachment 434733
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        vorbis decoding return the right number of frames.

s/return/returns/

&gt; Source/WebCore/platform/audio/cocoa/AudioFileReaderCocoa.cpp:266
&gt; +    if (static_cast&lt;char*&gt;(data-&gt;mBuffers[0].mData) + data-&gt;mBuffers[0].mDataByteSize &gt; userData-&gt;m_data + userData-&gt;m_dataSize)
&gt; +        return kAudioConverterErr_UnspecifiedError;

This is serious enough that it might be worth logging an error.

&gt; Source/WebCore/platform/audio/cocoa/AudioFileReaderCocoa.cpp:322
&gt; +    PAL::AudioConverterSetProperty(converter, kAudioConverterPrimeInfo, sizeof(AudioConverterPrimeInfo), &amp;primeInfo);

Nit: sizeof(primeInfo)

&gt; Source/WebCore/platform/audio/cocoa/AudioFileReaderCocoa.cpp:377
&gt; +        } while (status != kNoMoreDataErr &amp;&amp; status != noErr);

It seems a little weird to use &quot;noErr&quot; to signal eos, why not define a specific error like we did for kNoMoreDataErr?

&gt; Source/WebCore/platform/graphics/cocoa/AudioTrackPrivateWebM.cpp:93
&gt; +    return MediaTime(m_track.codec_delay.value(), 1000000000);

It would be helpful to people that don&apos;t know about WebM who read this to use a named constant for 1000000000.

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:1036
&gt; +            m_callOnClientThreadCallback([this, protectedThis = makeRef(*this), trackID = trackData-&gt;track().track_uid.value(), padding = MediaTime(blockGroup.discard_padding.value(), 1000000000)]() {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781526</commentid>
    <comment_count>7</comment_count>
      <attachid>434814</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-08-02 20:43:49 -0700</bug_when>
    <thetext>Created attachment 434814
Patch

Apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781528</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-02 20:47:55 -0700</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781529</commentid>
    <comment_count>9</comment_count>
      <attachid>434733</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-08-02 20:47:57 -0700</bug_when>
    <thetext>Comment on attachment 434733
Patch

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

&gt; Source/WebCore/platform/audio/cocoa/AudioFileReaderCocoa.cpp:378
&gt;      }

Unfortunately, this is required for the AudioConverter to work properly. We must return a number of packet of 0 and noErr for it to detect EOS. If we don&apos;t, any pending frames in the opus decoder will not be output and we&apos;ll be one packet (960 frames) short. This is an undocumented behaviour unfortunately and I only found out once I could check their code.
The AudioConverter will return the error the callback method returned. So we have to deal with noErr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781530</commentid>
    <comment_count>10</comment_count>
      <attachid>434816</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-08-02 20:51:30 -0700</bug_when>
    <thetext>Created attachment 434816
Patch

Add reviewer to Changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781537</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-02 21:21:54 -0700</bug_when>
    <thetext>Committed r280584 (240206@main): &lt;https://commits.webkit.org/240206@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434816.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434497</attachid>
            <date>2021-07-28 22:56:32 -0700</date>
            <delta_ts>2021-07-30 03:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228140-20210729155630.patch</filename>
            <type>text/plain</type>
            <size>11902</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjljNGVhZWEwY2U1ZmZh
YWUzNjZlN2U1NjA0MzlkZGM0NmQ0Mjg1NS4uNjJkMDIwNjkwMWJjZTVjMmE2NjMzNzUxMjA3ZDAz
OTIxYzYzNDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA3LTI4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSB3ZWJt
OyBwcm9wZXJseSB0cmltIGZyYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGNvZGVjIGRlbGF5IGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgxNDAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODA4ODM4ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZnJhbWUtcGVyZmVjdCBkZWNvZGlu
ZyBmb3IgT3B1cyBhbmQgVm9yYmlzIGluIFdlYk0gY29udGFpbmVyLgorICAgICAgICBVbmZvcnR1
bmF0ZWx5LCB0ZXN0aW5nIHRoYXQgdGhlIHJpZ2h0IGFtb3VudCBvZiBmcmFtZXMgaXMgcmV0dXJu
ZWQgaXMgbWFkZSBpbXBvc3NpYmxlCisgICAgICAgIGR1ZSB0byByZGFyOi8vODEwMDI5ODkgd2hl
cmUgYSBmdWxsIHBhY2tldCBjb250ZW50IGlzIGRyb3BwZWQgYnkgdGhlIGRlY29kZXIuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJN
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWNEZWxh
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnNldERp
c2NhcmRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
ZGlzY2FyZFBhZGRpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisKIDIwMjEtMDctMjEgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXVkaW9dIEFk
ZCB3ZWJtL29wdXMgY29udGFpbmVyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRl
eCA5YjY5YTgxMjU4ZjIyZTZiMmU5ZjJiYzUxOTYxYmE0NzdjYjMzYzczLi5hM2FkODcwNDNhODdk
ZTNhY2EwYTJlZTE1Y2Y5NTQ5OTQ1MDgzYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Zp
bGVSZWFkZXIuaCIKICNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKLSNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlV2ViTS5o
IgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFj
a1ByaXZhdGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xh
c3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogCiBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKLSAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpJbml0aWFsaXphdGlvblNlZ21l
bnQgbV9pbml0U2VnbWVudDsKKyAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3RyYWNr
OwogI2VuZGlmCiAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CiAgICAgVmVjdG9yPFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+PiBtX3NhbXBsZXM7CkBAIC0xODQsNyArMTg0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2Vi
TURhdGEoY29uc3QgdWkKICAgICBib29sIGVycm9yID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gYXVkaW9UcmFja0lkOwogICAgIE1lZGlhVGltZSBkdXJhdGlvbjsKLSAgICBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpJbml0aWFsaXphdGlvblNlZ21lbnQgaW5pdFNlZ21lbnQ7
CisgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gdHJhY2s7CiAgICAgVmVjdG9yPFJl
ZjxNZWRpYVNhbXBsZUFWRk9iakM+PiBzYW1wbGVzOwogICAgIHBhcnNlci0+c2V0RGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soWyZdKHVpbnQ2NF90KSB7CiAgICAgICAgIGVy
cm9yID0gdHJ1ZTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxl
UmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQog
ICAgICAgICAgICAgaWYgKGF1ZGlvVHJhY2sudHJhY2sgJiYgYXVkaW9UcmFjay50cmFjay0+dHJh
Y2tVSUQoKSkgewogICAgICAgICAgICAgICAgIGR1cmF0aW9uID0gaW5pdC5kdXJhdGlvbjsKICAg
ICAgICAgICAgICAgICBhdWRpb1RyYWNrSWQgPSBhdWRpb1RyYWNrLnRyYWNrLT50cmFja1VJRCgp
OwotICAgICAgICAgICAgICAgIGluaXRTZWdtZW50ID0gV1RGTW92ZShpbml0KTsKKyAgICAgICAg
ICAgICAgICB0cmFjayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8QXVkaW9UcmFja1ByaXZhdGVXZWJN
PihhdWRpb1RyYWNrLnRyYWNrKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTIwNywxMiArMjA3LDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0
IHVpCiAgICAgcGFyc2VyLT5zZXRDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbXShhdXRvJiYg
ZnVuY3Rpb24pIHsKICAgICAgICAgZnVuY3Rpb24oKTsKICAgICB9KTsKKyAgICBwYXJzZXItPnNl
dERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2soWyZdKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0
IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpIHsKKyAgICAgICAgaWYgKCFhdWRpb1RyYWNrSWQg
fHwgIXRyYWNrIHx8IHRyYWNrSUQgIT0gKmF1ZGlvVHJhY2tJZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdHJhY2stPnNldERpc2NhcmRQYWRkaW5nKGRpc2NhcmRQYWRkaW5nKTsKKyAg
ICB9KTsKICAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVudCh7IGRhdGEsIGRh
dGFTaXplIH0pOwogICAgIHBhcnNlci0+YXBwZW5kRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsKLSAg
ICBpZiAoIWF1ZGlvVHJhY2tJZCkKKyAgICBpZiAoIXRyYWNrKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBwYXJzZXItPmZsdXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwotICAgIHJldHVy
biBtYWtlVW5pcXVlPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJN
RGF0YSB7IFdURk1vdmUoaW5pdFNlZ21lbnQpLCBXVEZNb3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShz
YW1wbGVzKSB9KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YT4oQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgeyB0cmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKGR1cmF0aW9uKSwgV1RGTW92ZShzYW1wbGVzKSB9KTsKIH0KIAogc3RydWN0IFBhc3N0aHJv
dWdoVXNlckRhdGEgewpAQCAtMzAzLDYgKzMwOCwxMiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
QXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxp
cwogICAgIGlmIChtYWdpY0Nvb2tpZSAmJiBtYWdpY0Nvb2tpZVNpemUpCiAgICAgICAgIFBBTDo6
QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckRlY29t
cHJlc3Npb25NYWdpY0Nvb2tpZSwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSk7CiAKKyAg
ICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8gPSB7IFVJbnQzMihtX3dlYm1EYXRh
LT5tX3RyYWNrLT5jb2RlY0RlbGF5KCkudmFsdWVfb3IoTWVkaWFUaW1lKCkpLnRvRG91YmxlKCkg
KiBvdXRGb3JtYXQubVNhbXBsZVJhdGUpLCAwIH07CisgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgIldpbGwgZHJvcCAldSBsZWFkaW5nIGZyYW1lcyBvdXQgb2YgJWxsdSIsIHByaW1lSW5mby5s
ZWFkaW5nRnJhbWVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgUEFMOjpBdWRpb0NvbnZlcnRlclNl
dFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZvLCBzaXplb2YoQXVk
aW9Db252ZXJ0ZXJQcmltZUluZm8pLCAmcHJpbWVJbmZvKTsKKyAgICBVSW50MzIgcHJpbWVNZXRo
b2QgPSBrQ29udmVydGVyUHJpbWVNZXRob2RfTm9uZTsKKyAgICBQQUw6OkF1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHkoY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJQcmltZU1ldGhvZCwgc2l6ZW9m
KHByaW1lTWV0aG9kKSwgJnByaW1lTWV0aG9kKTsKKwogICAgIEF1ZGlvQnVmZmVyTGlzdEhvbGRl
ciBkZWNvZGVkQnVmZmVyTGlzdChpbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSk7CiAgICAgaWYg
KCFkZWNvZGVkQnVmZmVyTGlzdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRp
bywgIlVuYWJsZSB0byBjcmVhdGUgZGVjb2RlciIpOwpAQCAtMzU1LDcgKzM2NiwxMCBAQCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1
ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICAgICAgZGVjb2RlZEZyYW1lcyArPSBudW1GcmFt
ZXM7CiAgICAgICAgIH0gd2hpbGUgKHN0YXR1cyAhPSBrTm9Nb3JlRGF0YUVycik7CiAgICAgfQot
ICAgIHJldHVybiBkZWNvZGVkRnJhbWVzOworICAgIHNpemVfdCBwYWRkaW5nRnJhbWVzID0gbV93
ZWJtRGF0YS0+bV90cmFjay0+ZGlzY2FyZFBhZGRpbmcoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSku
dG9Eb3VibGUoKSAqIG91dEZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBpZiAoZGVjb2RlZEZyYW1l
cyA+IHBhZGRpbmdGcmFtZXMpCisgICAgICAgIHJldHVybiBkZWNvZGVkRnJhbWVzIC0gcGFkZGlu
Z0ZyYW1lczsKKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZh
dGVXZWJNLmNwcAppbmRleCBkZGRjYWNhN2ZlOTAwOTkwYjg4NGM1MTRlYzAyODE3YzdhZmEwOTJi
Li40NzFhZTgwZWVmMWE0MDBmZDA5NmU0YWQ4ZmY4Yzc0Njk0OTQ5YzA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTg2LDYgKzg2LDI1IEBAIGludCBBdWRpb1RyYWNrUHJp
dmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitzdGQ6Om9w
dGlvbmFsPE1lZGlhVGltZT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjb2RlY0RlbGF5KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fdHJhY2suY29kZWNfZGVsYXkuaXNfcHJlc2VudCgpKQorICAgICAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiBNZWRpYVRpbWUobV90cmFjay5jb2RlY19kZWxheS52
YWx1ZSgpLCAxMDAwMDAwMDAwKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnNl
dERpc2NhcmRQYWRkaW5nKGNvbnN0IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpCit7CisgICAg
bV9kaXNjYXJkUGFkZGluZyA9IGRpc2NhcmRQYWRkaW5nOworfQorCitzdGQ6Om9wdGlvbmFsPE1l
ZGlhVGltZT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpkaXNjYXJkUGFkZGluZygpIGNvbnN0Cit7
CisgICAgaWYgKG1fZGlzY2FyZFBhZGRpbmcuaXNJbnZhbGlkKCkgfHwgbV9kaXNjYXJkUGFkZGlu
ZyA8IE1lZGlhVGltZSgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX2Rpc2Nh
cmRQYWRkaW5nOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFj
a1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9B
dWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAppbmRleCBiM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5
MmQxYzdjNGJiNzQyLi4zYTgyNzFhNjM3ZDFiMTAxZjhiZWRkMzdiOGVhYzViOWNkMzU4YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtNDMsMTAgKzQzLDE0IEBAIHB1YmxpYzoK
ICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHRyYWNrVUlEKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBk
ZWZhdWx0RW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1l
PiBjb2RlY0RlbGF5KCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXNjYXJkUGFkZGluZyhjb25zdCBN
ZWRpYVRpbWUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gZGlzY2FyZFBhZGRpbmco
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJh
Y2tFbnRyeSYmKTsKICAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgTWVkaWFUaW1l
IG1fZGlzY2FyZFBhZGRpbmcgeyBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgfTsKICAgICBtdXRh
YmxlIEF0b21TdHJpbmcgbV90cmFja0lEOwogICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVs
OwogICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcAppbmRleCAwNDM4MTkwYTBkNmE1ZjhmMjFlODE3MWEyYzU0MWJlNGM2ZDNi
NDJjLi5jYjE0M2YzY2E1YzNkNGNlMTNkMDU2MjQ1NjE3MWI1NDA3OWNhZGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMTAyMyw4ICsxMDIzLDE3IEBAIHdlYm06OlN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbihjb25zdCB3ZWJt
OjpFbGVtZW50TWV0YWRhCiB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25C
bG9ja0dyb3VwRW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0
IHdlYm06OkJsb2NrR3JvdXAmIGJsb2NrR3JvdXApCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oYmxvY2tHcm91cCk7CiAgICAgSU5GT19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUik7CisgICAgaWYgKGJsb2NrR3JvdXAuYmxvY2suaXNfcHJlc2Vu
dCgpICYmIGJsb2NrR3JvdXAuZGlzY2FyZF9wYWRkaW5nLmlzX3ByZXNlbnQoKSkgeworICAgICAg
ICBhdXRvIHRyYWNrTnVtYmVyID0gYmxvY2tHcm91cC5ibG9jay52YWx1ZSgpLnRyYWNrX251bWJl
cjsKKyAgICAgICAgYXV0byogdHJhY2tEYXRhID0gdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodHJh
Y2tOdW1iZXIpOworICAgICAgICBpZiAoIXRyYWNrRGF0YSkgeworICAgICAgICAgICAgRVJST1Jf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJJZ25vcmluZyB1bmtub3duIHRyYWNrIG51
bWJlciAiLCB0cmFja051bWJlcik7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHJhY2tEYXRhLT50cmFjaygp
LnRyYWNrX3VpZC5pc19wcmVzZW50KCkgJiYgYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRpbmcudmFs
dWUoKSA+IDApCisgICAgICAgICAgICBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sodHJh
Y2tEYXRhLT50cmFjaygpLnRyYWNrX3VpZC52YWx1ZSgpLCBNZWRpYVRpbWUoYmxvY2tHcm91cC5k
aXNjYXJkX3BhZGRpbmcudmFsdWUoKSwgMTAwMDAwMDAwMCkpOworICAgIH0KICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5oCmluZGV4IDkzNDFjOTVkMjhlMDc5ZjZiYzU3YmRhN2VkZGFkZGNiNTc2NmZiYWIuLjk1
Mjk3NmIyNzJmNzExODViYjc4N2Y1YWEzNDIzYzRmODdkNmM0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmgKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06
OkNhbGxiYWNrIHsKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNl
QnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dlYk1Gb3JtYXRSZWFk
ZXJBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
IGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKICAgICBzdGF0aWMg
Y29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHdlYm1NSU1F
VHlwZXMoKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IGNyZWF0
ZShjb25zdCBDb250ZW50VHlwZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
U291cmNlQnVmZmVyUGFyc2VyV2ViTT4gY3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CiAKICAg
ICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCk7CiAgICAgflNvdXJjZUJ1ZmZlclBhcnNlcldlYk0o
KTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06OlN0YXR1cyYgc3Rh
dHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZsYWdzID0gQXBwZW5k
RmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShT
ZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsgfSwgQXBwZW5kRmxh
Z3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKSBmaW5hbDsKICAgICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKGJvb2wsIHVpbnQ2NF90KSBmaW5hbDsKICAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRh
dGFGb3JUcmFja0lEKHVpbnQ2NF90KSBmaW5hbDsKQEAgLTgzLDkgKzgzLDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZsdXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwogICAgIHZvaWQgc2V0TWluaW11
bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpOwogICAgIAotICAgIHZvaWQgc2V0TG9nZ2VyKGNv
bnN0IFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lk
KiBpZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5
dGVSYW5nZU9mZnNldCk7CisgICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmIGRp
c2NhcmRQYWRkaW5nKT47CisgICAgdm9pZCBzZXREaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNr
KERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAg
IH0KIAogICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CiAgICAgICAgIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCkBAIC0yODcsNiArMjkyLDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAg
IGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAgICB1aW50NjRfdCBt
X25leHRDaGlsZElkZW50aWZpZXIgeyAwIH07CisgICAgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxs
YmFjayBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2s7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434614</attachid>
            <date>2021-07-30 03:31:44 -0700</date>
            <delta_ts>2021-07-30 04:52:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228140-20210730203142.patch</filename>
            <type>text/plain</type>
            <size>18215</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlNDQzNjU0NTljYmFh
ODRlMDIwMTliNTI3ZWE2MmM1ZGNlMDkwNi4uOTRiNTc0YTJjMmEwN2Q1ODcxN2M0ODk0YTgyMmRl
ZjVjYWY0NGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTA3LTI4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSB3ZWJt
OyBwcm9wZXJseSB0cmltIGZyYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGNvZGVjIGRlbGF5IGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgxNDAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODA4ODM4ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZnJhbWUtcGVyZmVjdCBkZWNvZGlu
ZyBmb3IgT3B1cyBhbmQgVm9yYmlzIGluIFdlYk0gY29udGFpbmVyLgorICAgICAgICBVbmZvcnR1
bmF0ZWx5LCBkdWUgdG8gYSB2b3JiaXMgZGVjb2RlciBidWcsIGl0IGlzIG5vdCBwb3NzaWJsZSB0
byB0ZXN0IHRoYXQKKyAgICAgICAgdm9yYmlzIGRlY29kaW5nIHJldHVybiB0aGUgcmlnaHQgbnVt
YmVyIG9mIGZyYW1lcy4KKyAgICAgICAgQW1lbmQgT3B1cyB0ZXN0IHRvIGVuc3VyZSB0aGUgcmln
aHQgYW1vdW50IG9mIGZyYW1lcyBhcmUgcmV0dXJuZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
cGFzc3Rocm91Z2hJbnB1dERhdGFDYWxsYmFjayk6IEF1ZGlvVG9vbGJveCBpbnRlcm5hbCBsb2dn
aW5nIGNvdWxkIG92ZXJmbG93CisgICAgICAgIGlmIHdlIHVzZWQgcGFja2V0IGRlc2NyaXB0aW9u
cyB3aXRoIG9mZnNldHMsIHNvIHdlIHRha2UgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBzY2VuYXJp
bworICAgICAgICB3aGVyZSB3ZSBoYXZlIGEgc2luZ2xlIHBhY2tldCB0byBkZWNvZGUgYXQgYSB0
aW1lLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZh
dGVXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y29k
ZWNEZWxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06
OnNldERpc2NhcmRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
V2ViTTo6ZGlzY2FyZFBhZGRpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6IEFkZCB0cmltbWlu
ZyBkYXRhIGNhbGxiYWNrLgorICAgICAgICBPbmx5IG1hcmsgV0VCQ09SRV9FWFBPUlQgdGhlIG1l
dGhvZHMgdGhhdCBuZWVkIGl0LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzZXREaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrKToKKworCiAyMDIxLTA3LTI5ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBi
dWlsZGluZyBXZWJHUFUgYW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkg
c2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4IDliNjlhODEyNThmMjJlNmIyZTlmMmJj
NTE5NjFiYTQ3N2NiMzNjNzMuLmZjMDM0ZmFjOWQ3ZWRjYzE4OWZmZWUzZjhkMjVmNmFiNzU1MmYx
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
ICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkF1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisj
aW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YSB7CiAKIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OkluaXRpYWxpemF0aW9uU2VnbWVudCBtX2luaXRTZWdtZW50OworICAgIFJl
ZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKICAgICBNZWRpYVRpbWUg
bV9kdXJhdGlvbjsKICAgICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IG1fc2FtcGxl
czsKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2Vi
TURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgIGJvb2wg
ZXJyb3IgPSBmYWxzZTsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdWRpb1RyYWNrSWQ7
CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uOwotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Oklu
aXRpYWxpemF0aW9uU2VnbWVudCBpbml0U2VnbWVudDsKKyAgICBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVXZWJNPiB0cmFjazsKICAgICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IHNh
bXBsZXM7CiAgICAgcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxs
YmFjayhbJl0odWludDY0X3QpIHsKICAgICAgICAgZXJyb3IgPSB0cnVlOwpAQCAtMTk0LDcgKzE5
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9GaWxl
UmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICBpZiAoYXVkaW9UcmFj
ay50cmFjayAmJiBhdWRpb1RyYWNrLnRyYWNrLT50cmFja1VJRCgpKSB7CiAgICAgICAgICAgICAg
ICAgZHVyYXRpb24gPSBpbml0LmR1cmF0aW9uOwogICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tJ
ZCA9IGF1ZGlvVHJhY2sudHJhY2stPnRyYWNrVUlEKCk7Ci0gICAgICAgICAgICAgICAgaW5pdFNl
Z21lbnQgPSBXVEZNb3ZlKGluaXQpOworICAgICAgICAgICAgICAgIHRyYWNrID0gc3RhdGljX3Bv
aW50ZXJfY2FzdDxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+KGF1ZGlvVHJhY2sudHJhY2spOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjA3LDIw
ICsyMDcsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRp
b0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICBwYXJzZXItPnNldENhbGxP
bkNsaWVudFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5j
dGlvbigpOwogICAgIH0pOworICAgIHBhcnNlci0+c2V0RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxs
YmFjayhbJl0odWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJkUGFkZGlu
ZykgeworICAgICAgICBpZiAoIWF1ZGlvVHJhY2tJZCB8fCAhdHJhY2sgfHwgdHJhY2tJRCAhPSAq
YXVkaW9UcmFja0lkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0cmFjay0+c2V0RGlz
Y2FyZFBhZGRpbmcoZGlzY2FyZFBhZGRpbmcpOworICAgIH0pOwogICAgIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudCBzZWdtZW50KHsgZGF0YSwgZGF0YVNpemUgfSk7CiAgICAgcGFyc2VyLT5h
cHBlbmREYXRhKFdURk1vdmUoc2VnbWVudCkpOwotICAgIGlmICghYXVkaW9UcmFja0lkKQorICAg
IGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHBhcnNlci0+Zmx1c2hQ
ZW5kaW5nQXVkaW9CdWZmZXJzKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVh
ZGVyV2ViTURhdGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShpbml0U2VnbWVu
dCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YSB7IHRyYWNrLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNh
bXBsZXMpIH0pOwogfQogCiBzdHJ1Y3QgUGFzc3Rocm91Z2hVc2VyRGF0YSB7Ci0gICAgVUludDMy
IG1fY2hhbm5lbHM7Ci0gICAgVUludDMyIG1fZGF0YVNpemU7Ci0gICAgY29uc3Qgdm9pZCogbV9k
YXRhOworICAgIGNvbnN0IFVJbnQzMiBtX2NoYW5uZWxzOworICAgIGNvbnN0IFVJbnQzMiBtX2Rh
dGFTaXplOworICAgIGNvbnN0IGNoYXIqIG1fZGF0YTsKKyAgICBjb25zdCBib29sIG1fZW9zOwor
ICAgIGNvbnN0IFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYgbV9wYWNrZXRz
OwogICAgIFVJbnQzMiBtX2luZGV4OwotICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2Ny
aXB0aW9uPiYgbV9wYWNrZXRzOworICAgIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gbV9w
YWNrZXQ7CiB9OwogCiAvLyBFcnJvciB2YWx1ZSB3ZSBwYXNzIHRocm91Z2ggdGhlIGRlY29kZXIg
dG8gc2lnbmFsIHRoYXQgbm90aGluZwpAQCAtMjM2LDIwICsyNDMsMjcgQEAgc3RhdGljIE9TU3Rh
dHVzIHBhc3N0aHJvdWdoSW5wdXREYXRhQ2FsbGJhY2soQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQz
MiogbnVtRGF0YVAKICAgICBhdXRvKiB1c2VyRGF0YSA9IHN0YXRpY19jYXN0PFBhc3N0aHJvdWdo
VXNlckRhdGEqPihpblVzZXJEYXRhKTsKICAgICBpZiAodXNlckRhdGEtPm1faW5kZXggPT0gdXNl
ckRhdGEtPm1fcGFja2V0cy5zaXplKCkpIHsKICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsK
LSAgICAgICAgcmV0dXJuIGtOb01vcmVEYXRhRXJyOworICAgICAgICByZXR1cm4gdXNlckRhdGEt
Pm1fZW9zID8gbm9FcnIgOiBrTm9Nb3JlRGF0YUVycjsKKyAgICB9CisKKyAgICBpZiAodXNlckRh
dGEtPm1faW5kZXggPj0gdXNlckRhdGEtPm1fcGFja2V0cy5zaXplKCkpIHsKKyAgICAgICAgKm51
bURhdGFQYWNrZXRzID0gMDsKKyAgICAgICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9SZXF1
aXJlc1BhY2tldERlc2NyaXB0aW9uc0Vycm9yOwogICAgIH0KIAogICAgIGlmIChwYWNrZXREZXNj
KSB7Ci0gICAgICAgIGlmICh1c2VyRGF0YS0+bV9pbmRleCA+PSB1c2VyRGF0YS0+bV9wYWNrZXRz
LnNpemUoKSkgewotICAgICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAgICAg
IHJldHVybiBrQXVkaW9Db252ZXJ0ZXJFcnJfUmVxdWlyZXNQYWNrZXREZXNjcmlwdGlvbnNFcnJv
cjsKLSAgICAgICAgfQotICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXRz
W3VzZXJEYXRhLT5tX2luZGV4XTsKKyAgICAgICAgdXNlckRhdGEtPm1fcGFja2V0ID0gdXNlckRh
dGEtPm1fcGFja2V0c1t1c2VyRGF0YS0+bV9pbmRleF07CisgICAgICAgIHVzZXJEYXRhLT5tX3Bh
Y2tldC5tU3RhcnRPZmZzZXQgPSAwOworICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+
bV9wYWNrZXQ7CiAgICAgfQogCiAgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxz
ID0gdXNlckRhdGEtPm1fY2hhbm5lbHM7Ci0gICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSA9IHVzZXJEYXRhLT5tX2RhdGFTaXplOwotICAgIGRhdGEtPm1CdWZmZXJzWzBdLm1EYXRh
ID0gY29uc3RfY2FzdDx2b2lkKj4odXNlckRhdGEtPm1fZGF0YSk7CisgICAgZGF0YS0+bUJ1ZmZl
cnNbMF0ubURhdGFCeXRlU2l6ZSA9IHVzZXJEYXRhLT5tX3BhY2tldHNbdXNlckRhdGEtPm1faW5k
ZXhdLm1EYXRhQnl0ZVNpemU7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBjb25zdF9j
YXN0PGNoYXIqPih1c2VyRGF0YS0+bV9kYXRhICsgdXNlckRhdGEtPm1fcGFja2V0c1t1c2VyRGF0
YS0+bV9pbmRleF0ubVN0YXJ0T2Zmc2V0KTsKKworICAgIC8vIFNhbml0eSBjaGVjaworICAgIGlm
IChzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEpICsgZGF0YS0+bUJ1
ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA+IHVzZXJEYXRhLT5tX2RhdGEgKyB1c2VyRGF0YS0+bV9k
YXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9VbnNwZWNpZmllZEVy
cm9yOwogCiAgICAgKm51bURhdGFQYWNrZXRzID0gMTsKICAgICB1c2VyRGF0YS0+bV9pbmRleCsr
OwpAQCAtMzAzLDYgKzMxNywxMiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVh
ZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgIGlmICht
YWdpY0Nvb2tpZSAmJiBtYWdpY0Nvb2tpZVNpemUpCiAgICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0
ZXJTZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdp
Y0Nvb2tpZSwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSk7CiAKKyAgICBBdWRpb0NvbnZl
cnRlclByaW1lSW5mbyBwcmltZUluZm8gPSB7IFVJbnQzMihtX3dlYm1EYXRhLT5tX3RyYWNrLT5j
b2RlY0RlbGF5KCkudmFsdWVfb3IoTWVkaWFUaW1lKCkpLnRvRG91YmxlKCkgKiBvdXRGb3JtYXQu
bVNhbXBsZVJhdGUpLCAwIH07CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIldpbGwgZHJv
cCAldSBsZWFkaW5nIGZyYW1lcyBvdXQgb2YgJWxsdSIsIHByaW1lSW5mby5sZWFkaW5nRnJhbWVz
LCBudW1iZXJPZkZyYW1lcyk7CisgICAgUEFMOjpBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KGNv
bnZlcnRlciwga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZvLCBzaXplb2YoQXVkaW9Db252ZXJ0ZXJQ
cmltZUluZm8pLCAmcHJpbWVJbmZvKTsKKyAgICBVSW50MzIgcHJpbWVNZXRob2QgPSBrQ29udmVy
dGVyUHJpbWVNZXRob2RfTm9uZTsKKyAgICBQQUw6OkF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHko
Y29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJQcmltZU1ldGhvZCwgc2l6ZW9mKHByaW1lTWV0aG9k
KSwgJnByaW1lTWV0aG9kKTsKKwogICAgIEF1ZGlvQnVmZmVyTGlzdEhvbGRlciBkZWNvZGVkQnVm
ZmVyTGlzdChpbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSk7CiAgICAgaWYgKCFkZWNvZGVkQnVm
ZmVyTGlzdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0
byBjcmVhdGUgZGVjb2RlciIpOwpAQCAtMzExLDcgKzMzMSw4IEBAIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlzdCYgYnVm
ZmVyTGlzCiAKICAgICBzaXplX3QgZGVjb2RlZEZyYW1lcyA9IDA7CiAgICAgT1NTdGF0dXMgc3Rh
dHVzOwotICAgIGZvciAoYXV0byYgc2FtcGxlIDogbV93ZWJtRGF0YS0+bV9zYW1wbGVzKSB7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5tX3NhbXBsZXMuc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgYXV0byYgc2FtcGxlID0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzW2ldOwog
ICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUtPnNhbXBsZUJ1
ZmZlcigpOwogICAgICAgICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyKHNhbXBsZUJ1ZmZlcik7CiAgICAgICAgIEFTU0VSVChQQUw6OkNNQmxvY2tCdWZmZXJJ
c1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKTsKQEAgLTMzMSw3ICszNTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1
ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICBpZiAoZGVzY3JpcHRpb25zLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgUGFzc3Rocm91Z2hVc2VyRGF0YSB1
c2VyRGF0YSA9IHsgaW5Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUsIFVJbnQzMihzcmNTaXplKSwg
c3JjRGF0YSwgMCwgZGVzY3JpcHRpb25zIH07CisgICAgICAgIFBhc3N0aHJvdWdoVXNlckRhdGEg
dXNlckRhdGEgPSB7IGluRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lLCBVSW50MzIoc3JjU2l6ZSks
IHNyY0RhdGEsIGkgPT0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzLnNpemUoKSAtIDEsIGRlc2NyaXB0
aW9ucywgMCwgeyB9IH07CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgaWYgKG51bWJlck9m
RnJhbWVzIDwgZGVjb2RlZEZyYW1lcykgewpAQCAtMzUzLDkgKzM3NCwxMiBAQCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxp
c3QmIGJ1ZmZlckxpcwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBkZWNvZGVkRnJhbWVzICs9IG51bUZyYW1lczsKLSAgICAgICAgfSB3aGls
ZSAoc3RhdHVzICE9IGtOb01vcmVEYXRhRXJyKTsKKyAgICAgICAgfSB3aGlsZSAoc3RhdHVzICE9
IGtOb01vcmVEYXRhRXJyICYmIHN0YXR1cyAhPSBub0Vycik7CiAgICAgfQotICAgIHJldHVybiBk
ZWNvZGVkRnJhbWVzOworICAgIHNpemVfdCBwYWRkaW5nRnJhbWVzID0gbV93ZWJtRGF0YS0+bV90
cmFjay0+ZGlzY2FyZFBhZGRpbmcoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSkudG9Eb3VibGUoKSAq
IG91dEZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBpZiAoZGVjb2RlZEZyYW1lcyA+IHBhZGRpbmdG
cmFtZXMpCisgICAgICAgIHJldHVybiBkZWNvZGVkRnJhbWVzIC0gcGFkZGluZ0ZyYW1lczsKKyAg
ICByZXR1cm4gMDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcApp
bmRleCBkZGRjYWNhN2ZlOTAwOTkwYjg4NGM1MTRlYzAyODE3YzdhZmEwOTJiLi40NzFhZTgwZWVm
MWE0MDBmZDA5NmU0YWQ4ZmY4Yzc0Njk0OTQ5YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRl
V2ViTS5jcHAKQEAgLTg2LDYgKzg2LDI1IEBAIGludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRy
YWNrSW5kZXgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitzdGQ6Om9wdGlvbmFsPE1lZGlh
VGltZT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjb2RlY0RlbGF5KCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fdHJhY2suY29kZWNfZGVsYXkuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4geyB9
OworICAgIHJldHVybiBNZWRpYVRpbWUobV90cmFjay5jb2RlY19kZWxheS52YWx1ZSgpLCAxMDAw
MDAwMDAwKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnNldERpc2NhcmRQYWRk
aW5nKGNvbnN0IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpCit7CisgICAgbV9kaXNjYXJkUGFk
ZGluZyA9IGRpc2NhcmRQYWRkaW5nOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gQXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpkaXNjYXJkUGFkZGluZygpIGNvbnN0Cit7CisgICAgaWYgKG1f
ZGlzY2FyZFBhZGRpbmcuaXNJbnZhbGlkKCkgfHwgbV9kaXNjYXJkUGFkZGluZyA8IE1lZGlhVGlt
ZSgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX2Rpc2NhcmRQYWRkaW5nOwor
fQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJN
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJp
dmF0ZVdlYk0uaAppbmRleCBiM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5MmQxYzdjNGJiNzQy
Li4zYTgyNzFhNjM3ZDFiMTAxZjhiZWRkMzdiOGVhYzViOWNkMzU4YjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0uaApAQCAtNDMsMTAgKzQzLDE0IEBAIHB1YmxpYzoKICAgICBpbnQgdHJh
Y2tJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRyYWNr
VUlEKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0RW5hYmxl
ZCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBjb2RlY0RlbGF5
KCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXNjYXJkUGFkZGluZyhjb25zdCBNZWRpYVRpbWUmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gZGlzY2FyZFBhZGRpbmcoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsK
ICAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgTWVkaWFUaW1lIG1fZGlzY2FyZFBh
ZGRpbmcgeyBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgfTsKICAgICBtdXRhYmxlIEF0b21TdHJp
bmcgbV90cmFja0lEOwogICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOwogICAgIG11dGFi
bGUgQXRvbVN0cmluZyBtX2xhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cAppbmRleCAwNDM4MTkwYTBkNmE1ZjhmMjFlODE3MWEyYzU0MWJlNGM2ZDNiNDJjLi5jYjE0M2Yz
Y2E1YzNkNGNlMTNkMDU2MjQ1NjE3MWI1NDA3OWNhZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcApAQCAtMTAyMyw4ICsxMDIzLDE3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0
YWRhCiB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5k
KGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IHdlYm06OkJsb2Nr
R3JvdXAmIGJsb2NrR3JvdXApCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oYmxvY2tHcm91cCk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUik7CisgICAgaWYgKGJsb2NrR3JvdXAuYmxvY2suaXNfcHJlc2VudCgpICYmIGJsb2Nr
R3JvdXAuZGlzY2FyZF9wYWRkaW5nLmlzX3ByZXNlbnQoKSkgeworICAgICAgICBhdXRvIHRyYWNr
TnVtYmVyID0gYmxvY2tHcm91cC5ibG9jay52YWx1ZSgpLnRyYWNrX251bWJlcjsKKyAgICAgICAg
YXV0byogdHJhY2tEYXRhID0gdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodHJhY2tOdW1iZXIpOwor
ICAgICAgICBpZiAoIXRyYWNrRGF0YSkgeworICAgICAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICJJZ25vcmluZyB1bmtub3duIHRyYWNrIG51bWJlciAiLCB0cmFj
a051bWJlcik7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVk
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHJhY2tEYXRhLT50cmFjaygpLnRyYWNrX3VpZC5p
c19wcmVzZW50KCkgJiYgYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRpbmcudmFsdWUoKSA+IDApCisg
ICAgICAgICAgICBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sodHJhY2tEYXRhLT50cmFj
aygpLnRyYWNrX3VpZC52YWx1ZSgpLCBNZWRpYVRpbWUoYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRp
bmcudmFsdWUoKSwgMTAwMDAwMDAwMCkpOworICAgIH0KICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4
IDkzNDFjOTVkMjhlMDc5ZjZiYzU3YmRhN2VkZGFkZGNiNTc2NmZiYWIuLjk1Mjk3NmIyNzJmNzEx
ODViYjc4N2Y1YWEzNDIzYzRmODdkNmM0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVNh
bXBsZUFWRk9iakM7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsK
K2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2Vy
LCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dlYk1Gb3JtYXRSZWFkZXJBdmFpbGFibGUo
KTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5
cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKICAgICBzdGF0aWMgY29uc3QgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHdlYm1NSU1FVHlwZXMoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IGNyZWF0ZShjb25zdCBDb250
ZW50VHlwZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U291cmNlQnVmZmVy
UGFyc2VyV2ViTT4gY3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CiAKICAgICBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNKCk7CiAgICAgflNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKQEAgLTczLDcg
KzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06OlN0YXR1cyYgc3RhdHVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0dXM7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5
cGU6OldlYk07IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsgfSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRG
bGFnczo6Tm9uZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5h
bDsKICAgICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVp
bnQ2NF90KSBmaW5hbDsKICAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KHVpbnQ2NF90KSBmaW5hbDsKQEAgLTgzLDkgKzgzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGZs
dXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwogICAgIHZvaWQgc2V0TWluaW11bUF1ZGlvU2FtcGxl
RHVyYXRpb24oZmxvYXQpOwogICAgIAotICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFdURjo6TG9n
Z2VyJiwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBpZGVudGlmaWVy
KSBmaW5hbDsKIAogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNl
dCk7CisgICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dm9pZCh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmIGRpc2NhcmRQYWRkaW5n
KT47CisgICAgdm9pZCBzZXREaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrKERpZFBhcnNlVHJp
bW1pbmdEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUGFyc2VU
cmltbWluZ0RhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KIAogICAgIGVu
dW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCkBAIC0yODcsNiArMjkyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQq
IG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAgICB1aW50NjRfdCBtX25leHRDaGlsZElk
ZW50aWZpZXIgeyAwIH07CisgICAgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayBtX2RpZFBh
cnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjJjN2RiMWRhY2Y1MjU4
YjBiMTU0MjFiZTU1Yzg5MjcwM2EzMzZmYy4uN2EzZTgzN2MyZjU1NWRjNzBkM2MzYjAwNjYwOWFl
NzMwNDg2NjY5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA3LTMwICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODE0MAorICAgICAgICByZGFyOi8vcHJvYmxlbS84MDg4Mzg4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNDAKKworICAgICAgICAqIHdl
YmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLmh0bWw6CisKIDIwMjEtMDct
MjYgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXVk
aW9dIEFkZCB3ZWJtL3ZvcmJpcyBjb250YWluZXIgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy1leHBlY3Rl
ZC50eHQKaW5kZXggNDRiYzAxMDhkNDRjZDVmNDc0NmY2OTk3ZTYwYzVlNDczNTZmYTRlNC4uMzdi
ZTllNWU5YWVmOGI0M2NhNmRiYTlhMDRhY2U0NGZkMGQwYzBjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhw
ZWN0ZWQudHh0CkBAIC00LDYgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBB
U1MgU3VjY2Vzc2Z1bGx5IGRlY29kZWQgY29udGVudAorUEFTUyBEZWNvZGluZyByZXR1cm5lZCB0
aGUgcmlnaHQgbnVtYmVyIG9mIGZyYW1lcy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVj
b2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNv
ZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbAppbmRleCA2NTc3MjgwMTI3MDBhZjNkNjgyNGUy
MDkwODVmNGRjZWUzNzhjNzBkLi4wZWUxYTdiMzdlMDAyNzNlYTY3ODA2ZmEyZmNjYzE1OTYxZWQ5
M2Q4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13
ZWJtLW9wdXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0
YS13ZWJtLW9wdXMuaHRtbApAQCAtMTAsNyArMTAsNyBAQCBkZXNjcmlwdGlvbigiVGVzdCB0aGF0
IGRlY29kaW5nIGFuIG9wdXMgd2VibSBmaWxlIHN1Y2NlZWRzIik7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKIAotdmFyIGNvbnRleHQgPSBuZXcgd2luZG93LkF1ZGlvQ29udGV4dCgp
OwordmFyIGNvbnRleHQgPSBuZXcgd2luZG93LkF1ZGlvQ29udGV4dCh7IHNhbXBsZVJhdGU6IDQ4
MDAwIH0pOwogdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIHJlcXVlc3Qub3Bl
bigiR0VUIiwgJ3Jlc291cmNlcy9tZWRpYS9vcHVzLndlYm0nLCB0cnVlKTsKIHJlcXVlc3QucmVz
cG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKQEAgLTE4LDYgKzE4LDExIEBAIHJlcXVlc3QucmVz
cG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKIHJlcXVlc3Qub25sb2FkID0gZnVuY3Rpb24oKSB7
CiAgICAgY29udGV4dC5kZWNvZGVBdWRpb0RhdGEocmVxdWVzdC5yZXNwb25zZSwgKGJ1ZmZlcikg
PT4gewogICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZGVjb2RlZCBjb250ZW50Iik7
CisgICAgICAgIC8vIEZpbGUgaXMgZXhhY3RseSAxLTAuMDA2NXMgbG9uZyBAIDQ4MDAwSHosIHNv
IDQ3Njg4IGZyYW1lcy4KKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDQ3Njg4KQorICAg
ICAgICAgIHRlc3RQYXNzZWQoIkRlY29kaW5nIHJldHVybmVkIHRoZSByaWdodCBudW1iZXIgb2Yg
ZnJhbWVzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgdGVzdEZhaWxlZCgiRGVjb2Rpbmcg
cmV0dXJuZWQgdGhlIHdyb25nIG51bWJlciBvZiBmcmFtZXM6ICIgKyBidWZmZXIubGVuZ3RoKTsK
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICB9LCAoKSA9PiB7CiAgICAgICAgIHRlc3RG
YWlsZWQoIkZhaWxlZCB0byBkZWNvZGUgZmlsZSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434615</attachid>
            <date>2021-07-30 04:53:02 -0700</date>
            <delta_ts>2021-08-01 20:53:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228140-20210730215301.patch</filename>
            <type>text/plain</type>
            <size>19366</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlNDQzNjU0NTljYmFh
ODRlMDIwMTliNTI3ZWE2MmM1ZGNlMDkwNi4uODM3NjdlMDIzYmE1YzQ4NGRjZjU1MGJlN2ZjZGY2
MGM1NjA0NGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTI4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSB3ZWJt
OyBwcm9wZXJseSB0cmltIGZyYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGNvZGVjIGRlbGF5IGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgxNDAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODA4ODM4ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZnJhbWUtcGVyZmVjdCBkZWNvZGlu
ZyBmb3IgT3B1cyBhbmQgVm9yYmlzIGluIFdlYk0gY29udGFpbmVyLgorICAgICAgICBVbmZvcnR1
bmF0ZWx5LCBkdWUgdG8gYSB2b3JiaXMgZGVjb2RlciBidWcsIGl0IGlzIG5vdCBwb3NzaWJsZSB0
byB0ZXN0IHRoYXQKKyAgICAgICAgdm9yYmlzIGRlY29kaW5nIHJldHVybiB0aGUgcmlnaHQgbnVt
YmVyIG9mIGZyYW1lcy4KKyAgICAgICAgQW1lbmQgT3B1cyB0ZXN0IHRvIGVuc3VyZSB0aGUgcmln
aHQgYW1vdW50IG9mIGZyYW1lcyBhcmUgcmV0dXJuZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
cGFzc3Rocm91Z2hJbnB1dERhdGFDYWxsYmFjayk6IEF1ZGlvVG9vbGJveCBpbnRlcm5hbCBsb2dn
aW5nIGNvdWxkIG92ZXJmbG93CisgICAgICAgIGlmIHdlIHVzZWQgcGFja2V0IGRlc2NyaXB0aW9u
cyB3aXRoIG9mZnNldHMsIHNvIHdlIHRha2UgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBzY2VuYXJp
bworICAgICAgICB3aGVyZSB3ZSBoYXZlIGEgc2luZ2xlIHBhY2tldCB0byBkZWNvZGUgYXQgYSB0
aW1lLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZh
dGVXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y29k
ZWNEZWxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06
OnNldERpc2NhcmRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
V2ViTTo6ZGlzY2FyZFBhZGRpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKTogRmx5LWJ5LCBlbnN1cmUgbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrCisgICAgICAgIG9ubHkgZXZlciBhY2Nl
c3NlZCBvbiBjbGllbnQgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6IEFkZCB0cmltbWluZyBkYXRhIGNhbGxiYWNr
LgorICAgICAgICBPbmx5IG1hcmsgV0VCQ09SRV9FWFBPUlQgdGhlIG1ldGhvZHMgdGhhdCBuZWVk
IGl0LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXREaWRQYXJz
ZVRyaW1taW5nRGF0YUNhbGxiYWNrKToKKworCiAyMDIxLTA3LTI5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBidWlsZGluZyBXZWJHUFUg
YW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwCmluZGV4IDliNjlhODEyNThmMjJlNmIyZTlmMmJjNTE5NjFiYTQ3N2NiMzNj
NzMuLmZjMDM0ZmFjOWQ3ZWRjYzE4OWZmZWUzZjhkMjVmNmFiNzU1MmYxYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgog
I2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5oIgotI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEz
MCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAKIHB1YmxpYzoK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Oklu
aXRpYWxpemF0aW9uU2VnbWVudCBtX2luaXRTZWdtZW50OworICAgIFJlZjxBdWRpb1RyYWNrUHJp
dmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKICAg
ICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IG1fc2FtcGxlczsKQEAgLTE4NCw3ICsx
ODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmls
ZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdWRpb1RyYWNrSWQ7CiAgICAgTWVkaWFUaW1l
IGR1cmF0aW9uOwotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkluaXRpYWxpemF0aW9uU2Vn
bWVudCBpbml0U2VnbWVudDsKKyAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiB0cmFj
azsKICAgICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IHNhbXBsZXM7CiAgICAgcGFy
c2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbJl0odWludDY0
X3QpIHsKICAgICAgICAgZXJyb3IgPSB0cnVlOwpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdl
Yk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICBpZiAoYXVkaW9UcmFjay50cmFjayAmJiBhdWRp
b1RyYWNrLnRyYWNrLT50cmFja1VJRCgpKSB7CiAgICAgICAgICAgICAgICAgZHVyYXRpb24gPSBp
bml0LmR1cmF0aW9uOwogICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tJZCA9IGF1ZGlvVHJhY2su
dHJhY2stPnRyYWNrVUlEKCk7Ci0gICAgICAgICAgICAgICAgaW5pdFNlZ21lbnQgPSBXVEZNb3Zl
KGluaXQpOworICAgICAgICAgICAgICAgIHRyYWNrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxBdWRp
b1RyYWNrUHJpdmF0ZVdlYk0+KGF1ZGlvVHJhY2sudHJhY2spOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjA3LDIwICsyMDcsMjcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRl
bXV4V2ViTURhdGEoY29uc3QgdWkKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENh
bGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0p
OworICAgIHBhcnNlci0+c2V0RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayhbJl0odWludDY0
X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJkUGFkZGluZykgeworICAgICAgICBp
ZiAoIWF1ZGlvVHJhY2tJZCB8fCAhdHJhY2sgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFja0lkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0cmFjay0+c2V0RGlzY2FyZFBhZGRpbmcoZGlz
Y2FyZFBhZGRpbmcpOworICAgIH0pOwogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudCBz
ZWdtZW50KHsgZGF0YSwgZGF0YVNpemUgfSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1v
dmUoc2VnbWVudCkpOwotICAgIGlmICghYXVkaW9UcmFja0lkKQorICAgIGlmICghdHJhY2spCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVkaW9CdWZm
ZXJzKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1
ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShpbml0U2VnbWVudCksIFdURk1vdmUoZHVy
YXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlv
RmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7IHRyYWNrLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOwogfQog
CiBzdHJ1Y3QgUGFzc3Rocm91Z2hVc2VyRGF0YSB7Ci0gICAgVUludDMyIG1fY2hhbm5lbHM7Ci0g
ICAgVUludDMyIG1fZGF0YVNpemU7Ci0gICAgY29uc3Qgdm9pZCogbV9kYXRhOworICAgIGNvbnN0
IFVJbnQzMiBtX2NoYW5uZWxzOworICAgIGNvbnN0IFVJbnQzMiBtX2RhdGFTaXplOworICAgIGNv
bnN0IGNoYXIqIG1fZGF0YTsKKyAgICBjb25zdCBib29sIG1fZW9zOworICAgIGNvbnN0IFZlY3Rv
cjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYgbV9wYWNrZXRzOwogICAgIFVJbnQzMiBt
X2luZGV4OwotICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYgbV9wYWNr
ZXRzOworICAgIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gbV9wYWNrZXQ7CiB9OwogCiAv
LyBFcnJvciB2YWx1ZSB3ZSBwYXNzIHRocm91Z2ggdGhlIGRlY29kZXIgdG8gc2lnbmFsIHRoYXQg
bm90aGluZwpAQCAtMjM2LDIwICsyNDMsMjcgQEAgc3RhdGljIE9TU3RhdHVzIHBhc3N0aHJvdWdo
SW5wdXREYXRhQ2FsbGJhY2soQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiogbnVtRGF0YVAKICAg
ICBhdXRvKiB1c2VyRGF0YSA9IHN0YXRpY19jYXN0PFBhc3N0aHJvdWdoVXNlckRhdGEqPihpblVz
ZXJEYXRhKTsKICAgICBpZiAodXNlckRhdGEtPm1faW5kZXggPT0gdXNlckRhdGEtPm1fcGFja2V0
cy5zaXplKCkpIHsKICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAgcmV0dXJu
IGtOb01vcmVEYXRhRXJyOworICAgICAgICByZXR1cm4gdXNlckRhdGEtPm1fZW9zID8gbm9FcnIg
OiBrTm9Nb3JlRGF0YUVycjsKKyAgICB9CisKKyAgICBpZiAodXNlckRhdGEtPm1faW5kZXggPj0g
dXNlckRhdGEtPm1fcGFja2V0cy5zaXplKCkpIHsKKyAgICAgICAgKm51bURhdGFQYWNrZXRzID0g
MDsKKyAgICAgICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9SZXF1aXJlc1BhY2tldERlc2Ny
aXB0aW9uc0Vycm9yOwogICAgIH0KIAogICAgIGlmIChwYWNrZXREZXNjKSB7Ci0gICAgICAgIGlm
ICh1c2VyRGF0YS0+bV9pbmRleCA+PSB1c2VyRGF0YS0+bV9wYWNrZXRzLnNpemUoKSkgewotICAg
ICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAgICAgIHJldHVybiBrQXVkaW9D
b252ZXJ0ZXJFcnJfUmVxdWlyZXNQYWNrZXREZXNjcmlwdGlvbnNFcnJvcjsKLSAgICAgICAgfQot
ICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXRzW3VzZXJEYXRhLT5tX2lu
ZGV4XTsKKyAgICAgICAgdXNlckRhdGEtPm1fcGFja2V0ID0gdXNlckRhdGEtPm1fcGFja2V0c1t1
c2VyRGF0YS0+bV9pbmRleF07CisgICAgICAgIHVzZXJEYXRhLT5tX3BhY2tldC5tU3RhcnRPZmZz
ZXQgPSAwOworICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXQ7CiAgICAg
fQogCiAgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gdXNlckRhdGEtPm1f
Y2hhbm5lbHM7Ci0gICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IHVzZXJEYXRh
LT5tX2RhdGFTaXplOwotICAgIGRhdGEtPm1CdWZmZXJzWzBdLm1EYXRhID0gY29uc3RfY2FzdDx2
b2lkKj4odXNlckRhdGEtPm1fZGF0YSk7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSA9IHVzZXJEYXRhLT5tX3BhY2tldHNbdXNlckRhdGEtPm1faW5kZXhdLm1EYXRhQnl0ZVNp
emU7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBjb25zdF9jYXN0PGNoYXIqPih1c2Vy
RGF0YS0+bV9kYXRhICsgdXNlckRhdGEtPm1fcGFja2V0c1t1c2VyRGF0YS0+bV9pbmRleF0ubVN0
YXJ0T2Zmc2V0KTsKKworICAgIC8vIFNhbml0eSBjaGVjaworICAgIGlmIChzdGF0aWNfY2FzdDxj
aGFyKj4oZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEpICsgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA+IHVzZXJEYXRhLT5tX2RhdGEgKyB1c2VyRGF0YS0+bV9kYXRhU2l6ZSkKKyAgICAg
ICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9VbnNwZWNpZmllZEVycm9yOwogCiAgICAgKm51
bURhdGFQYWNrZXRzID0gMTsKICAgICB1c2VyRGF0YS0+bV9pbmRleCsrOwpAQCAtMzAzLDYgKzMx
NywxMiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJN
RGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgIGlmIChtYWdpY0Nvb2tpZSAmJiBt
YWdpY0Nvb2tpZVNpemUpCiAgICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShj
b252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgbWFnaWND
b29raWVTaXplLCBtYWdpY0Nvb2tpZSk7CiAKKyAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBw
cmltZUluZm8gPSB7IFVJbnQzMihtX3dlYm1EYXRhLT5tX3RyYWNrLT5jb2RlY0RlbGF5KCkudmFs
dWVfb3IoTWVkaWFUaW1lKCkpLnRvRG91YmxlKCkgKiBvdXRGb3JtYXQubVNhbXBsZVJhdGUpLCAw
IH07CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIldpbGwgZHJvcCAldSBsZWFkaW5nIGZy
YW1lcyBvdXQgb2YgJWxsdSIsIHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBudW1iZXJPZkZyYW1l
cyk7CisgICAgUEFMOjpBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlv
Q29udmVydGVyUHJpbWVJbmZvLCBzaXplb2YoQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8pLCAmcHJp
bWVJbmZvKTsKKyAgICBVSW50MzIgcHJpbWVNZXRob2QgPSBrQ29udmVydGVyUHJpbWVNZXRob2Rf
Tm9uZTsKKyAgICBQQUw6OkF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkoY29udmVydGVyLCBrQXVk
aW9Db252ZXJ0ZXJQcmltZU1ldGhvZCwgc2l6ZW9mKHByaW1lTWV0aG9kKSwgJnByaW1lTWV0aG9k
KTsKKwogICAgIEF1ZGlvQnVmZmVyTGlzdEhvbGRlciBkZWNvZGVkQnVmZmVyTGlzdChpbkZvcm1h
dC5tQ2hhbm5lbHNQZXJGcmFtZSk7CiAgICAgaWYgKCFkZWNvZGVkQnVmZmVyTGlzdCkgewogICAg
ICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byBjcmVhdGUgZGVjb2Rl
ciIpOwpAQCAtMzExLDcgKzMzMSw4IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBBdWRpb0ZpbGVS
ZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzCiAKICAgICBz
aXplX3QgZGVjb2RlZEZyYW1lcyA9IDA7CiAgICAgT1NTdGF0dXMgc3RhdHVzOwotICAgIGZvciAo
YXV0byYgc2FtcGxlIDogbV93ZWJtRGF0YS0+bV9zYW1wbGVzKSB7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5tX3NhbXBsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
YXV0byYgc2FtcGxlID0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzW2ldOwogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUtPnNhbXBsZUJ1ZmZlcigpOwogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1
ZmZlcik7CiAgICAgICAgIEFTU0VSVChQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91
cyhidWZmZXIsIDAsIDApKTsKQEAgLTMzMSw3ICszNTIsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
ckxpcwogICAgICAgICBpZiAoZGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICAgICAgUGFzc3Rocm91Z2hVc2VyRGF0YSB1c2VyRGF0YSA9IHsgaW5G
b3JtYXQubUNoYW5uZWxzUGVyRnJhbWUsIFVJbnQzMihzcmNTaXplKSwgc3JjRGF0YSwgMCwgZGVz
Y3JpcHRpb25zIH07CisgICAgICAgIFBhc3N0aHJvdWdoVXNlckRhdGEgdXNlckRhdGEgPSB7IGlu
Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lLCBVSW50MzIoc3JjU2l6ZSksIHNyY0RhdGEsIGkgPT0g
bV93ZWJtRGF0YS0+bV9zYW1wbGVzLnNpemUoKSAtIDEsIGRlc2NyaXB0aW9ucywgMCwgeyB9IH07
CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgaWYgKG51bWJlck9mRnJhbWVzIDwgZGVjb2Rl
ZEZyYW1lcykgewpAQCAtMzUzLDkgKzM3NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVk
aW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwog
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBk
ZWNvZGVkRnJhbWVzICs9IG51bUZyYW1lczsKLSAgICAgICAgfSB3aGlsZSAoc3RhdHVzICE9IGtO
b01vcmVEYXRhRXJyKTsKKyAgICAgICAgfSB3aGlsZSAoc3RhdHVzICE9IGtOb01vcmVEYXRhRXJy
ICYmIHN0YXR1cyAhPSBub0Vycik7CiAgICAgfQotICAgIHJldHVybiBkZWNvZGVkRnJhbWVzOwor
ICAgIHNpemVfdCBwYWRkaW5nRnJhbWVzID0gbV93ZWJtRGF0YS0+bV90cmFjay0+ZGlzY2FyZFBh
ZGRpbmcoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSkudG9Eb3VibGUoKSAqIG91dEZvcm1hdC5tU2Ft
cGxlUmF0ZTsKKyAgICBpZiAoZGVjb2RlZEZyYW1lcyA+IHBhZGRpbmdGcmFtZXMpCisgICAgICAg
IHJldHVybiBkZWNvZGVkRnJhbWVzIC0gcGFkZGluZ0ZyYW1lczsKKyAgICByZXR1cm4gMDsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCBkZGRjYWNhN2Zl
OTAwOTkwYjg4NGM1MTRlYzAyODE3YzdhZmEwOTJiLi40NzFhZTgwZWVmMWE0MDBmZDA5NmU0YWQ4
ZmY4Yzc0Njk0OTQ5YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTg2
LDYgKzg2LDI1IEBAIGludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gQXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpjb2RlY0RlbGF5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdHJhY2suY29k
ZWNfZGVsYXkuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBN
ZWRpYVRpbWUobV90cmFjay5jb2RlY19kZWxheS52YWx1ZSgpLCAxMDAwMDAwMDAwKTsKK30KKwor
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnNldERpc2NhcmRQYWRkaW5nKGNvbnN0IE1lZGlh
VGltZSYgZGlzY2FyZFBhZGRpbmcpCit7CisgICAgbV9kaXNjYXJkUGFkZGluZyA9IGRpc2NhcmRQ
YWRkaW5nOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gQXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpkaXNjYXJkUGFkZGluZygpIGNvbnN0Cit7CisgICAgaWYgKG1fZGlzY2FyZFBhZGRpbmcu
aXNJbnZhbGlkKCkgfHwgbV9kaXNjYXJkUGFkZGluZyA8IE1lZGlhVGltZSgpKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIHJldHVybiBtX2Rpc2NhcmRQYWRkaW5nOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAppbmRl
eCBiM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5MmQxYzdjNGJiNzQyLi4zYTgyNzFhNjM3ZDFi
MTAxZjhiZWRkMzdiOGVhYzViOWNkMzU4YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
aApAQCAtNDMsMTAgKzQzLDE0IEBAIHB1YmxpYzoKICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRyYWNrVUlEKCkgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0RW5hYmxlZCgpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBjb2RlY0RlbGF5KCkgY29uc3Q7CisgICAg
dm9pZCBzZXREaXNjYXJkUGFkZGluZyhjb25zdCBNZWRpYVRpbWUmKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1lZGlhVGltZT4gZGlzY2FyZFBhZGRpbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKICAgICB3ZWJtOjpUcmFj
a0VudHJ5IG1fdHJhY2s7CisgICAgTWVkaWFUaW1lIG1fZGlzY2FyZFBhZGRpbmcgeyBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkgfTsKICAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFja0lEOwog
ICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOwogICAgIG11dGFibGUgQXRvbVN0cmluZyBt
X2xhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAwNDM4MTkw
YTBkNmE1ZjhmMjFlODE3MWEyYzU0MWJlNGM2ZDNiNDJjLi41NjVjMDQxNDA1OGU2MzMyMzBjZjE1
NGU4MThiYWVhMTA5MDZiYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApA
QCAtNzc5LDkgKzc3OSwxMCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkNvbnRlbnRFbmNyeXB0ZWQpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
ICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBpZiAo
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCkgewogICAgICAgICAgICAgbV9jYWxs
T25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2Vn
bWVudCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykKKyAgICAg
ICAgICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1v
dmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CkBAIC0x
MDIzLDggKzEwMjQsMjAgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
QmxvY2tHcm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGEKIHdlYm06OlN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3Qgd2VibTo6QmxvY2tHcm91cCYgYmxvY2tHcm91cCkK
IHsKICAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShibG9ja0dy
b3VwKTsKICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKKyAgICBpZiAo
YmxvY2tHcm91cC5ibG9jay5pc19wcmVzZW50KCkgJiYgYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRp
bmcuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1dG8gdHJhY2tOdW1iZXIgPSBibG9ja0dyb3Vw
LmJsb2NrLnZhbHVlKCkudHJhY2tfbnVtYmVyOworICAgICAgICBhdXRvKiB0cmFja0RhdGEgPSB0
cmFja0RhdGFGb3JUcmFja051bWJlcih0cmFja051bWJlcik7CisgICAgICAgIGlmICghdHJhY2tE
YXRhKSB7CisgICAgICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
Iklnbm9yaW5nIHVua25vd24gdHJhY2sgbnVtYmVyICIsIHRyYWNrTnVtYmVyKTsKKyAgICAgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgICAgICB9CisgICAg
ICAgIGlmICh0cmFja0RhdGEtPnRyYWNrKCkudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSAmJiBibG9j
a0dyb3VwLmRpc2NhcmRfcGFkZGluZy52YWx1ZSgpID4gMCkKKyAgICAgICAgICAgIG1fY2FsbE9u
Q2xpZW50VGhyZWFkQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdHJhY2tJRCA9IHRyYWNrRGF0YS0+dHJhY2soKS50cmFja191aWQudmFsdWUoKSwgcGFkZGlu
ZyA9IE1lZGlhVGltZShibG9ja0dyb3VwLmRpc2NhcmRfcGFkZGluZy52YWx1ZSgpLCAxMDAwMDAw
MDAwKV0oKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxs
YmFjaykKKyAgICAgICAgICAgICAgICAgICAgbV9kaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNr
KHRyYWNrSUQsIHBhZGRpbmcpOworICAgICAgICAgICAgfSk7CisgICAgfQogICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgKaW5kZXggOTM0MWM5NWQyOGUwNzlmNmJjNTdiZGE3ZWRkYWRkY2I1NzY2ZmJhYi4uOTUy
OTc2YjI3MmY3MTE4NWJiNzg3ZjVhYTM0MjNjNGY4N2Q2YzRhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1lZGlhU2FtcGxlQVZGT2JqQzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTSA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6
Q2FsbGJhY2sgeworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTSA6IHB1YmxpYyBTb3VyY2VC
dWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2FsbGJhY2sgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFN0cmVhbWluZ1ZlY3RvclJlYWRlcjsKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRl
ckF2YWlsYWJsZSgpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUg
aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwogICAgIHN0YXRpYyBj
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgd2VibU1JTUVU
eXBlcygpOwotICAgIHN0YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyV2ViTT4gY3JlYXRl
KGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNPiBjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmKTsKIAogICAg
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKICAgICB+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgp
OwpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qgd2VibTo6U3RhdHVzJiBzdGF0
dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gVHlwZTo6V2ViTTsgfQotICAgIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsgfSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRG
bGFnczo6Tm9uZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmREYXRhKFNl
Z21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9LCBBcHBlbmRGbGFn
cyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlh
RGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SUQoYm9vbCwgdWludDY0X3QpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0
YUZvclRyYWNrSUQodWludDY0X3QpIGZpbmFsOwpAQCAtODMsOSArODMsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgZmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7CiAgICAgdm9pZCBzZXRNaW5pbXVt
QXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCk7CiAgICAgCi0gICAgdm9pZCBzZXRMb2dnZXIoY29u
c3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQq
IGlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4sIHVpbnQ2NF90LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0
ZVJhbmdlT2Zmc2V0KTsKKyAgICB1c2luZyBEaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhVGltZSYgZGlz
Y2FyZFBhZGRpbmcpPjsKKyAgICB2b2lkIHNldERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2so
RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
bV9kaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAg
fQogCiAgICAgZW51bSBjbGFzcyBFcnJvckNvZGUgOiBpbnQzMl90IHsKICAgICAgICAgU291cmNl
QnVmZmVyUGFyc2VyV2ViTUVycm9yQ29kZVN0YXJ0ID0gMjAwMCwKQEAgLTI4Nyw2ICsyOTIsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAg
Y29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2NF90IG1f
bmV4dENoaWxkSWRlbnRpZmllciB7IDAgfTsKKyAgICBEaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxi
YWNrIG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjazsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MmM3
ZGIxZGFjZjUyNThiMGIxNTQyMWJlNTVjODkyNzAzYTMzNmZjLi43YTNlODM3YzJmNTU1ZGM3MGQz
YzNiMDA2NjA5YWU3MzA0ODY2NjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDctMzAg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQwCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzgwODgzODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MAorCisg
ICAgICAgICogd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbDoK
KwogMjAyMS0wNy0yNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWJBdWRpb10gQWRkIHdlYm0vdm9yYmlzIGNvbnRhaW5lciBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1v
cHVzLWV4cGVjdGVkLnR4dAppbmRleCA0NGJjMDEwOGQ0NGNkNWY0NzQ2ZjY5OTdlNjBjNWU0NzM1
NmZhNGU0Li4zN2JlOWU1ZTlhZWY4YjQzY2E2ZGJhOWEwNGFjZTQ0ZmQwZDBjMGNlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdl
Ym0tb3B1cy1leHBlY3RlZC50eHQKQEAgLTQsNiArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFCiAKIAogUEFTUyBTdWNjZXNzZnVsbHkgZGVjb2RlZCBjb250ZW50CitQQVNTIERlY29kaW5n
IHJldHVybmVkIHRoZSByaWdodCBudW1iZXIgb2YgZnJhbWVzLgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy5odG1sCmluZGV4IDY1NzcyODAxMjcw
MGFmM2Q2ODI0ZTIwOTA4NWY0ZGNlZTM3OGM3MGQuLjBlZTFhN2IzN2UwMDI3M2VhNjc4MDZmYTJm
Y2NjMTU5NjFlZDkzZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1h
dWRpby1kYXRhLXdlYm0tb3B1cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29k
ZS1hdWRpby1kYXRhLXdlYm0tb3B1cy5odG1sCkBAIC0xMCw3ICsxMCw3IEBAIGRlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgZGVjb2RpbmcgYW4gb3B1cyB3ZWJtIGZpbGUgc3VjY2VlZHMiKTsKIAogd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi12YXIgY29udGV4dCA9IG5ldyB3aW5kb3cuQXVk
aW9Db250ZXh0KCk7Cit2YXIgY29udGV4dCA9IG5ldyB3aW5kb3cuQXVkaW9Db250ZXh0KHsgc2Ft
cGxlUmF0ZTogNDgwMDAgfSk7CiB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwog
cmVxdWVzdC5vcGVuKCJHRVQiLCAncmVzb3VyY2VzL21lZGlhL29wdXMud2VibScsIHRydWUpOwog
cmVxdWVzdC5yZXNwb25zZVR5cGUgPSAiYXJyYXlidWZmZXIiOwpAQCAtMTgsNiArMTgsMTEgQEAg
cmVxdWVzdC5yZXNwb25zZVR5cGUgPSAiYXJyYXlidWZmZXIiOwogcmVxdWVzdC5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKICAgICBjb250ZXh0LmRlY29kZUF1ZGlvRGF0YShyZXF1ZXN0LnJlc3BvbnNl
LCAoYnVmZmVyKSA9PiB7CiAgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBkZWNvZGVk
IGNvbnRlbnQiKTsKKyAgICAgICAgLy8gRmlsZSBpcyBleGFjdGx5IDEtMC4wMDY1cyBsb25nIEAg
NDgwMDBIeiwgc28gNDc2ODggZnJhbWVzLgorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0g
NDc2ODgpCisgICAgICAgICAgdGVzdFBhc3NlZCgiRGVjb2RpbmcgcmV0dXJuZWQgdGhlIHJpZ2h0
IG51bWJlciBvZiBmcmFtZXMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICB0ZXN0RmFpbGVk
KCJEZWNvZGluZyByZXR1cm5lZCB0aGUgd3JvbmcgbnVtYmVyIG9mIGZyYW1lczogIiArIGJ1ZmZl
ci5sZW5ndGgpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgIH0sICgpID0+IHsKICAg
ICAgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIGRlY29kZSBmaWxlIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434733</attachid>
            <date>2021-08-01 20:53:45 -0700</date>
            <delta_ts>2021-08-02 20:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228140-20210802135343.patch</filename>
            <type>text/plain</type>
            <size>19379</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlNDQzNjU0NTljYmFh
ODRlMDIwMTliNTI3ZWE2MmM1ZGNlMDkwNi4uODM3NjdlMDIzYmE1YzQ4NGRjZjU1MGJlN2ZjZGY2
MGM1NjA0NGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTI4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSB3ZWJt
OyBwcm9wZXJseSB0cmltIGZyYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGNvZGVjIGRlbGF5IGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgxNDAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODA4ODM4ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZnJhbWUtcGVyZmVjdCBkZWNvZGlu
ZyBmb3IgT3B1cyBhbmQgVm9yYmlzIGluIFdlYk0gY29udGFpbmVyLgorICAgICAgICBVbmZvcnR1
bmF0ZWx5LCBkdWUgdG8gYSB2b3JiaXMgZGVjb2RlciBidWcsIGl0IGlzIG5vdCBwb3NzaWJsZSB0
byB0ZXN0IHRoYXQKKyAgICAgICAgdm9yYmlzIGRlY29kaW5nIHJldHVybiB0aGUgcmlnaHQgbnVt
YmVyIG9mIGZyYW1lcy4KKyAgICAgICAgQW1lbmQgT3B1cyB0ZXN0IHRvIGVuc3VyZSB0aGUgcmln
aHQgYW1vdW50IG9mIGZyYW1lcyBhcmUgcmV0dXJuZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
cGFzc3Rocm91Z2hJbnB1dERhdGFDYWxsYmFjayk6IEF1ZGlvVG9vbGJveCBpbnRlcm5hbCBsb2dn
aW5nIGNvdWxkIG92ZXJmbG93CisgICAgICAgIGlmIHdlIHVzZWQgcGFja2V0IGRlc2NyaXB0aW9u
cyB3aXRoIG9mZnNldHMsIHNvIHdlIHRha2UgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBzY2VuYXJp
bworICAgICAgICB3aGVyZSB3ZSBoYXZlIGEgc2luZ2xlIHBhY2tldCB0byBkZWNvZGUgYXQgYSB0
aW1lLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZh
dGVXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y29k
ZWNEZWxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06
OnNldERpc2NhcmRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
V2ViTTo6ZGlzY2FyZFBhZGRpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKTogRmx5LWJ5LCBlbnN1cmUgbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrCisgICAgICAgIG9ubHkgZXZlciBhY2Nl
c3NlZCBvbiBjbGllbnQgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6IEFkZCB0cmltbWluZyBkYXRhIGNhbGxiYWNr
LgorICAgICAgICBPbmx5IG1hcmsgV0VCQ09SRV9FWFBPUlQgdGhlIG1ldGhvZHMgdGhhdCBuZWVk
IGl0LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXREaWRQYXJz
ZVRyaW1taW5nRGF0YUNhbGxiYWNrKToKKworCiAyMDIxLTA3LTI5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBidWlsZGluZyBXZWJHUFUg
YW5kIHRoZSBXSExTTCBjb21waWxlciB0byBkZWNyZWFzZSBiaW5hcnkgc2l6ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwCmluZGV4IDliNjlhODEyNThmMjJlNmIyZTlmMmJjNTE5NjFiYTQ3N2NiMzNj
NzMuLmZjMDM0ZmFjOWQ3ZWRjYzE4OWZmZWUzZjhkMjVmNmFiNzU1MmYxYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgog
I2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5oIgotI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEz
MCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAKIHB1YmxpYzoK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Oklu
aXRpYWxpemF0aW9uU2VnbWVudCBtX2luaXRTZWdtZW50OworICAgIFJlZjxBdWRpb1RyYWNrUHJp
dmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKICAg
ICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IG1fc2FtcGxlczsKQEAgLTE4NCw3ICsx
ODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmls
ZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdWRpb1RyYWNrSWQ7CiAgICAgTWVkaWFUaW1l
IGR1cmF0aW9uOwotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkluaXRpYWxpemF0aW9uU2Vn
bWVudCBpbml0U2VnbWVudDsKKyAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiB0cmFj
azsKICAgICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IHNhbXBsZXM7CiAgICAgcGFy
c2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbJl0odWludDY0
X3QpIHsKICAgICAgICAgZXJyb3IgPSB0cnVlOwpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdl
Yk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICBpZiAoYXVkaW9UcmFjay50cmFjayAmJiBhdWRp
b1RyYWNrLnRyYWNrLT50cmFja1VJRCgpKSB7CiAgICAgICAgICAgICAgICAgZHVyYXRpb24gPSBp
bml0LmR1cmF0aW9uOwogICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tJZCA9IGF1ZGlvVHJhY2su
dHJhY2stPnRyYWNrVUlEKCk7Ci0gICAgICAgICAgICAgICAgaW5pdFNlZ21lbnQgPSBXVEZNb3Zl
KGluaXQpOworICAgICAgICAgICAgICAgIHRyYWNrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxBdWRp
b1RyYWNrUHJpdmF0ZVdlYk0+KGF1ZGlvVHJhY2sudHJhY2spOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjA3LDIwICsyMDcsMjcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRl
bXV4V2ViTURhdGEoY29uc3QgdWkKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENh
bGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0p
OworICAgIHBhcnNlci0+c2V0RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayhbJl0odWludDY0
X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJkUGFkZGluZykgeworICAgICAgICBp
ZiAoIWF1ZGlvVHJhY2tJZCB8fCAhdHJhY2sgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFja0lkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0cmFjay0+c2V0RGlzY2FyZFBhZGRpbmcoZGlz
Y2FyZFBhZGRpbmcpOworICAgIH0pOwogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudCBz
ZWdtZW50KHsgZGF0YSwgZGF0YVNpemUgfSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1v
dmUoc2VnbWVudCkpOwotICAgIGlmICghYXVkaW9UcmFja0lkKQorICAgIGlmICghdHJhY2spCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVkaW9CdWZm
ZXJzKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1
ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShpbml0U2VnbWVudCksIFdURk1vdmUoZHVy
YXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlv
RmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7IHRyYWNrLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOwogfQog
CiBzdHJ1Y3QgUGFzc3Rocm91Z2hVc2VyRGF0YSB7Ci0gICAgVUludDMyIG1fY2hhbm5lbHM7Ci0g
ICAgVUludDMyIG1fZGF0YVNpemU7Ci0gICAgY29uc3Qgdm9pZCogbV9kYXRhOworICAgIGNvbnN0
IFVJbnQzMiBtX2NoYW5uZWxzOworICAgIGNvbnN0IFVJbnQzMiBtX2RhdGFTaXplOworICAgIGNv
bnN0IGNoYXIqIG1fZGF0YTsKKyAgICBjb25zdCBib29sIG1fZW9zOworICAgIGNvbnN0IFZlY3Rv
cjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYgbV9wYWNrZXRzOwogICAgIFVJbnQzMiBt
X2luZGV4OwotICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYgbV9wYWNr
ZXRzOworICAgIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gbV9wYWNrZXQ7CiB9OwogCiAv
LyBFcnJvciB2YWx1ZSB3ZSBwYXNzIHRocm91Z2ggdGhlIGRlY29kZXIgdG8gc2lnbmFsIHRoYXQg
bm90aGluZwpAQCAtMjM2LDIwICsyNDMsMjcgQEAgc3RhdGljIE9TU3RhdHVzIHBhc3N0aHJvdWdo
SW5wdXREYXRhQ2FsbGJhY2soQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiogbnVtRGF0YVAKICAg
ICBhdXRvKiB1c2VyRGF0YSA9IHN0YXRpY19jYXN0PFBhc3N0aHJvdWdoVXNlckRhdGEqPihpblVz
ZXJEYXRhKTsKICAgICBpZiAodXNlckRhdGEtPm1faW5kZXggPT0gdXNlckRhdGEtPm1fcGFja2V0
cy5zaXplKCkpIHsKICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAgcmV0dXJu
IGtOb01vcmVEYXRhRXJyOworICAgICAgICByZXR1cm4gdXNlckRhdGEtPm1fZW9zID8gbm9FcnIg
OiBrTm9Nb3JlRGF0YUVycjsKKyAgICB9CisKKyAgICBpZiAodXNlckRhdGEtPm1faW5kZXggPj0g
dXNlckRhdGEtPm1fcGFja2V0cy5zaXplKCkpIHsKKyAgICAgICAgKm51bURhdGFQYWNrZXRzID0g
MDsKKyAgICAgICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9SZXF1aXJlc1BhY2tldERlc2Ny
aXB0aW9uc0Vycm9yOwogICAgIH0KIAogICAgIGlmIChwYWNrZXREZXNjKSB7Ci0gICAgICAgIGlm
ICh1c2VyRGF0YS0+bV9pbmRleCA+PSB1c2VyRGF0YS0+bV9wYWNrZXRzLnNpemUoKSkgewotICAg
ICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAgICAgIHJldHVybiBrQXVkaW9D
b252ZXJ0ZXJFcnJfUmVxdWlyZXNQYWNrZXREZXNjcmlwdGlvbnNFcnJvcjsKLSAgICAgICAgfQot
ICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXRzW3VzZXJEYXRhLT5tX2lu
ZGV4XTsKKyAgICAgICAgdXNlckRhdGEtPm1fcGFja2V0ID0gdXNlckRhdGEtPm1fcGFja2V0c1t1
c2VyRGF0YS0+bV9pbmRleF07CisgICAgICAgIHVzZXJEYXRhLT5tX3BhY2tldC5tU3RhcnRPZmZz
ZXQgPSAwOworICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXQ7CiAgICAg
fQogCiAgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gdXNlckRhdGEtPm1f
Y2hhbm5lbHM7Ci0gICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IHVzZXJEYXRh
LT5tX2RhdGFTaXplOwotICAgIGRhdGEtPm1CdWZmZXJzWzBdLm1EYXRhID0gY29uc3RfY2FzdDx2
b2lkKj4odXNlckRhdGEtPm1fZGF0YSk7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSA9IHVzZXJEYXRhLT5tX3BhY2tldHNbdXNlckRhdGEtPm1faW5kZXhdLm1EYXRhQnl0ZVNp
emU7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBjb25zdF9jYXN0PGNoYXIqPih1c2Vy
RGF0YS0+bV9kYXRhICsgdXNlckRhdGEtPm1fcGFja2V0c1t1c2VyRGF0YS0+bV9pbmRleF0ubVN0
YXJ0T2Zmc2V0KTsKKworICAgIC8vIFNhbml0eSBjaGVjaworICAgIGlmIChzdGF0aWNfY2FzdDxj
aGFyKj4oZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEpICsgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA+IHVzZXJEYXRhLT5tX2RhdGEgKyB1c2VyRGF0YS0+bV9kYXRhU2l6ZSkKKyAgICAg
ICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9VbnNwZWNpZmllZEVycm9yOwogCiAgICAgKm51
bURhdGFQYWNrZXRzID0gMTsKICAgICB1c2VyRGF0YS0+bV9pbmRleCsrOwpAQCAtMzAzLDYgKzMx
NywxMiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJN
RGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgIGlmIChtYWdpY0Nvb2tpZSAmJiBt
YWdpY0Nvb2tpZVNpemUpCiAgICAgICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShj
b252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgbWFnaWND
b29raWVTaXplLCBtYWdpY0Nvb2tpZSk7CiAKKyAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBw
cmltZUluZm8gPSB7IFVJbnQzMihtX3dlYm1EYXRhLT5tX3RyYWNrLT5jb2RlY0RlbGF5KCkudmFs
dWVfb3IoTWVkaWFUaW1lKCkpLnRvRG91YmxlKCkgKiBvdXRGb3JtYXQubVNhbXBsZVJhdGUpLCAw
IH07CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIldpbGwgZHJvcCAldSBsZWFkaW5nIGZy
YW1lcyBvdXQgb2YgJWxsdSIsIHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBudW1iZXJPZkZyYW1l
cyk7CisgICAgUEFMOjpBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlv
Q29udmVydGVyUHJpbWVJbmZvLCBzaXplb2YoQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8pLCAmcHJp
bWVJbmZvKTsKKyAgICBVSW50MzIgcHJpbWVNZXRob2QgPSBrQ29udmVydGVyUHJpbWVNZXRob2Rf
Tm9uZTsKKyAgICBQQUw6OkF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkoY29udmVydGVyLCBrQXVk
aW9Db252ZXJ0ZXJQcmltZU1ldGhvZCwgc2l6ZW9mKHByaW1lTWV0aG9kKSwgJnByaW1lTWV0aG9k
KTsKKwogICAgIEF1ZGlvQnVmZmVyTGlzdEhvbGRlciBkZWNvZGVkQnVmZmVyTGlzdChpbkZvcm1h
dC5tQ2hhbm5lbHNQZXJGcmFtZSk7CiAgICAgaWYgKCFkZWNvZGVkQnVmZmVyTGlzdCkgewogICAg
ICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIlVuYWJsZSB0byBjcmVhdGUgZGVjb2Rl
ciIpOwpAQCAtMzExLDcgKzMzMSw4IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBBdWRpb0ZpbGVS
ZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzCiAKICAgICBz
aXplX3QgZGVjb2RlZEZyYW1lcyA9IDA7CiAgICAgT1NTdGF0dXMgc3RhdHVzOwotICAgIGZvciAo
YXV0byYgc2FtcGxlIDogbV93ZWJtRGF0YS0+bV9zYW1wbGVzKSB7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5tX3NhbXBsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
YXV0byYgc2FtcGxlID0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzW2ldOwogICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUtPnNhbXBsZUJ1ZmZlcigpOwogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1
ZmZlcik7CiAgICAgICAgIEFTU0VSVChQQUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91
cyhidWZmZXIsIDAsIDApKTsKQEAgLTMzMSw3ICszNTIsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
ckxpcwogICAgICAgICBpZiAoZGVzY3JpcHRpb25zLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICAgICAgUGFzc3Rocm91Z2hVc2VyRGF0YSB1c2VyRGF0YSA9IHsgaW5G
b3JtYXQubUNoYW5uZWxzUGVyRnJhbWUsIFVJbnQzMihzcmNTaXplKSwgc3JjRGF0YSwgMCwgZGVz
Y3JpcHRpb25zIH07CisgICAgICAgIFBhc3N0aHJvdWdoVXNlckRhdGEgdXNlckRhdGEgPSB7IGlu
Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lLCBVSW50MzIoc3JjU2l6ZSksIHNyY0RhdGEsIGkgPT0g
bV93ZWJtRGF0YS0+bV9zYW1wbGVzLnNpemUoKSAtIDEsIGRlc2NyaXB0aW9ucywgMCwgeyB9IH07
CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgaWYgKG51bWJlck9mRnJhbWVzIDwgZGVjb2Rl
ZEZyYW1lcykgewpAQCAtMzUzLDkgKzM3NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVk
aW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwog
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBk
ZWNvZGVkRnJhbWVzICs9IG51bUZyYW1lczsKLSAgICAgICAgfSB3aGlsZSAoc3RhdHVzICE9IGtO
b01vcmVEYXRhRXJyKTsKKyAgICAgICAgfSB3aGlsZSAoc3RhdHVzICE9IGtOb01vcmVEYXRhRXJy
ICYmIHN0YXR1cyAhPSBub0Vycik7CiAgICAgfQotICAgIHJldHVybiBkZWNvZGVkRnJhbWVzOwor
ICAgIHNpemVfdCBwYWRkaW5nRnJhbWVzID0gbV93ZWJtRGF0YS0+bV90cmFjay0+ZGlzY2FyZFBh
ZGRpbmcoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSkudG9Eb3VibGUoKSAqIG91dEZvcm1hdC5tU2Ft
cGxlUmF0ZTsKKyAgICBpZiAoZGVjb2RlZEZyYW1lcyA+IHBhZGRpbmdGcmFtZXMpCisgICAgICAg
IHJldHVybiBkZWNvZGVkRnJhbWVzIC0gcGFkZGluZ0ZyYW1lczsKKyAgICByZXR1cm4gMDsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCBkZGRjYWNhN2Zl
OTAwOTkwYjg4NGM1MTRlYzAyODE3YzdhZmEwOTJiLi40NzFhZTgwZWVmMWE0MDBmZDA5NmU0YWQ4
ZmY4Yzc0Njk0OTQ5YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTg2
LDYgKzg2LDI1IEBAIGludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gQXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpjb2RlY0RlbGF5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdHJhY2suY29k
ZWNfZGVsYXkuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBN
ZWRpYVRpbWUobV90cmFjay5jb2RlY19kZWxheS52YWx1ZSgpLCAxMDAwMDAwMDAwKTsKK30KKwor
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnNldERpc2NhcmRQYWRkaW5nKGNvbnN0IE1lZGlh
VGltZSYgZGlzY2FyZFBhZGRpbmcpCit7CisgICAgbV9kaXNjYXJkUGFkZGluZyA9IGRpc2NhcmRQ
YWRkaW5nOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gQXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpkaXNjYXJkUGFkZGluZygpIGNvbnN0Cit7CisgICAgaWYgKG1fZGlzY2FyZFBhZGRpbmcu
aXNJbnZhbGlkKCkgfHwgbV9kaXNjYXJkUGFkZGluZyA8IE1lZGlhVGltZSgpKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIHJldHVybiBtX2Rpc2NhcmRQYWRkaW5nOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAppbmRl
eCBiM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5MmQxYzdjNGJiNzQyLi4zYTgyNzFhNjM3ZDFi
MTAxZjhiZWRkMzdiOGVhYzViOWNkMzU4YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
aApAQCAtNDMsMTAgKzQzLDE0IEBAIHB1YmxpYzoKICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRyYWNrVUlEKCkgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0RW5hYmxlZCgpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBjb2RlY0RlbGF5KCkgY29uc3Q7CisgICAg
dm9pZCBzZXREaXNjYXJkUGFkZGluZyhjb25zdCBNZWRpYVRpbWUmKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1lZGlhVGltZT4gZGlzY2FyZFBhZGRpbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKICAgICB3ZWJtOjpUcmFj
a0VudHJ5IG1fdHJhY2s7CisgICAgTWVkaWFUaW1lIG1fZGlzY2FyZFBhZGRpbmcgeyBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkgfTsKICAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFja0lEOwog
ICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOwogICAgIG11dGFibGUgQXRvbVN0cmluZyBt
X2xhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAwNDM4MTkw
YTBkNmE1ZjhmMjFlODE3MWEyYzU0MWJlNGM2ZDNiNDJjLi5hNDA1MmEzM2EyYzVkMTAyMjJhMWQz
MzM3MWYwMDk3MWVkMTkwYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApA
QCAtNzc5LDkgKzc3OSwxMCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkNvbnRlbnRFbmNyeXB0ZWQpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
ICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBpZiAo
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCkgewogICAgICAgICAgICAgbV9jYWxs
T25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2Vn
bWVudCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykKKyAgICAg
ICAgICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1v
dmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CkBAIC0x
MDIzLDggKzEwMjQsMjEgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
QmxvY2tHcm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGEKIHdlYm06OlN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3Qgd2VibTo6QmxvY2tHcm91cCYgYmxvY2tHcm91cCkK
IHsKICAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShibG9ja0dy
b3VwKTsKICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKKyAgICBpZiAo
YmxvY2tHcm91cC5ibG9jay5pc19wcmVzZW50KCkgJiYgYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRp
bmcuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1dG8gdHJhY2tOdW1iZXIgPSBibG9ja0dyb3Vw
LmJsb2NrLnZhbHVlKCkudHJhY2tfbnVtYmVyOworICAgICAgICBhdXRvKiB0cmFja0RhdGEgPSB0
cmFja0RhdGFGb3JUcmFja051bWJlcih0cmFja051bWJlcik7CisgICAgICAgIGlmICghdHJhY2tE
YXRhKSB7CisgICAgICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
Iklnbm9yaW5nIHVua25vd24gdHJhY2sgbnVtYmVyICIsIHRyYWNrTnVtYmVyKTsKKyAgICAgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgICAgICB9CisgICAg
ICAgIGlmICh0cmFja0RhdGEtPnRyYWNrKCkudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSAmJiBibG9j
a0dyb3VwLmRpc2NhcmRfcGFkZGluZy52YWx1ZSgpID4gMCkgeworICAgICAgICAgICAgbV9jYWxs
T25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0cmFja0lEID0gdHJhY2tEYXRhLT50cmFjaygpLnRyYWNrX3VpZC52YWx1ZSgpLCBwYWRk
aW5nID0gTWVkaWFUaW1lKGJsb2NrR3JvdXAuZGlzY2FyZF9wYWRkaW5nLnZhbHVlKCksIDEwMDAw
MDAwMDApXSgpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9kaWRQYXJzZVRyaW1taW5nRGF0YUNh
bGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJh
Y2sodHJhY2tJRCwgcGFkZGluZyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0K
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDkzNDFjOTVkMjhlMDc5ZjZiYzU3YmRhN2VkZGFkZGNi
NTc2NmZiYWIuLjk1Mjk3NmIyNzJmNzExODViYjc4N2Y1YWEzNDIzYzRmODdkNmM0YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBw
cml2YXRlIHdlYm06OkNhbGxiYWNrIHsKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBw
dWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBjbGFzcyBTdHJlYW1pbmdWZWN0
b3JSZWFkZXI7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dl
Yk1Gb3JtYXRSZWFkZXJBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsK
ICAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHdlYm1NSU1FVHlwZXMoKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0+IGNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyV2ViTT4gY3JlYXRlKGNvbnN0IENvbnRlbnRU
eXBlJik7CiAKICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCk7CiAgICAgflNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0oKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06
OlN0YXR1cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KIAogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KLSAgICB2b2lkIGFwcGVuZERhdGEo
U2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZs
YWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kRGF0YShTZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsg
fSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7CiAgICAgdm9pZCBmbHVz
aFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKICAgICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KSBmaW5hbDsKICAgICBib29sIHNob3VsZFBy
b3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90KSBmaW5hbDsKQEAgLTgzLDkgKzgzLDE0
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZsdXNoUGVuZGluZ0F1ZGlvQnVmZmVycygpOwogICAgIHZv
aWQgc2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpOwogICAgIAotICAgIHZvaWQg
c2V0TG9nZ2VyKGNvbnN0IFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXIm
LCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcHJvdmlkZU1lZGlh
RGF0YShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+LCB1aW50NjRfdCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCk7CisgICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0Rh
dGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lELCBjb25zdCBN
ZWRpYVRpbWUmIGRpc2NhcmRQYWRkaW5nKT47CisgICAgdm9pZCBzZXREaWRQYXJzZVRyaW1taW5n
RGF0YUNhbGxiYWNrKERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOworICAgIH0KIAogICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CiAg
ICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCkBAIC0y
ODcsNiArMjkyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1f
bG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAg
ICB1aW50NjRfdCBtX25leHRDaGlsZElkZW50aWZpZXIgeyAwIH07CisgICAgRGlkUGFyc2VUcmlt
bWluZ0RhdGFDYWxsYmFjayBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2s7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjJjN2RiMWRhY2Y1MjU4YjBiMTU0MjFiZTU1Yzg5MjcwM2EzMzZmYy4uN2EzZTgz
N2MyZjU1NWRjNzBkM2MzYjAwNjYwOWFlNzMwNDg2NjY5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTA3LTMwICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MAorICAgICAg
ICByZGFyOi8vcHJvYmxlbS84MDg4Mzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjgxNDAKKworICAgICAgICAqIHdlYmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2Vi
bS1vcHVzLmh0bWw6CisKIDIwMjEtMDctMjYgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViQXVkaW9dIEFkZCB3ZWJtL3ZvcmJpcyBjb250YWluZXIgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEt
d2VibS1vcHVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRp
by1kYXRhLXdlYm0tb3B1cy1leHBlY3RlZC50eHQKaW5kZXggNDRiYzAxMDhkNDRjZDVmNDc0NmY2
OTk3ZTYwYzVlNDczNTZmYTRlNC4uMzdiZTllNWU5YWVmOGI0M2NhNmRiYTlhMDRhY2U0NGZkMGQw
YzBjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEt
d2VibS1vcHVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUt
YXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsNyBAQCBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgU3VjY2Vzc2Z1bGx5IGRlY29kZWQgY29udGVudAor
UEFTUyBEZWNvZGluZyByZXR1cm5lZCB0aGUgcmlnaHQgbnVtYmVyIG9mIGZyYW1lcy4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbAppbmRl
eCA2NTc3MjgwMTI3MDBhZjNkNjgyNGUyMDkwODVmNGRjZWUzNzhjNzBkLi4wZWUxYTdiMzdlMDAy
NzNlYTY3ODA2ZmEyZmNjYzE1OTYxZWQ5M2Q4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbApAQCAtMTAsNyArMTAsNyBA
QCBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGRlY29kaW5nIGFuIG9wdXMgd2VibSBmaWxlIHN1Y2Nl
ZWRzIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFyIGNvbnRleHQgPSBu
ZXcgd2luZG93LkF1ZGlvQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBuZXcgd2luZG93LkF1ZGlv
Q29udGV4dCh7IHNhbXBsZVJhdGU6IDQ4MDAwIH0pOwogdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKIHJlcXVlc3Qub3BlbigiR0VUIiwgJ3Jlc291cmNlcy9tZWRpYS9vcHVzLndl
Ym0nLCB0cnVlKTsKIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKQEAgLTE4
LDYgKzE4LDExIEBAIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKIHJlcXVl
c3Qub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgY29udGV4dC5kZWNvZGVBdWRpb0RhdGEocmVx
dWVzdC5yZXNwb25zZSwgKGJ1ZmZlcikgPT4gewogICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNz
ZnVsbHkgZGVjb2RlZCBjb250ZW50Iik7CisgICAgICAgIC8vIEZpbGUgaXMgZXhhY3RseSAxLTAu
MDA2NXMgbG9uZyBAIDQ4MDAwSHosIHNvIDQ3Njg4IGZyYW1lcy4KKyAgICAgICAgaWYgKGJ1ZmZl
ci5sZW5ndGggPT09IDQ3Njg4KQorICAgICAgICAgIHRlc3RQYXNzZWQoIkRlY29kaW5nIHJldHVy
bmVkIHRoZSByaWdodCBudW1iZXIgb2YgZnJhbWVzLiIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgdGVzdEZhaWxlZCgiRGVjb2RpbmcgcmV0dXJuZWQgdGhlIHdyb25nIG51bWJlciBvZiBmcmFt
ZXM6ICIgKyBidWZmZXIubGVuZ3RoKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICB9
LCAoKSA9PiB7CiAgICAgICAgIHRlc3RGYWlsZWQoIkZhaWxlZCB0byBkZWNvZGUgZmlsZSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434814</attachid>
            <date>2021-08-02 20:43:49 -0700</date>
            <delta_ts>2021-08-02 20:51:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228140-20210803134347.patch</filename>
            <type>text/plain</type>
            <size>22030</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJlMmVhNzZmMGEyOTFj
NzkwNjgzM2YwZGQ3YmEwMTNhMTkxMzdkZS4uODdhNTYyOWZjNzM3Mzc4NmMwYTQ2MWY4ZGQ1MGY4
ZDg0YmEyNmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTA3LTI4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSB3ZWJt
OyBwcm9wZXJseSB0cmltIGZyYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGNvZGVjIGRlbGF5IGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgxNDAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODA4ODM4ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZnJhbWUtcGVyZmVjdCBkZWNvZGlu
ZyBmb3IgT3B1cyBhbmQgVm9yYmlzIGluIFdlYk0gY29udGFpbmVyLgorICAgICAgICBVbmZvcnR1
bmF0ZWx5LCBkdWUgdG8gYSB2b3JiaXMgZGVjb2RlciBidWcsIGl0IGlzIG5vdCBwb3NzaWJsZSB0
byB0ZXN0IHRoYXQKKyAgICAgICAgdm9yYmlzIGRlY29kaW5nIHJldHVybnMgdGhlIHJpZ2h0IG51
bWJlciBvZiBmcmFtZXMuCisgICAgICAgIEFtZW5kIE9wdXMgdGVzdCB0byBlbnN1cmUgdGhlIHJp
Z2h0IGFtb3VudCBvZiBmcmFtZXMgYXJlIHJldHVybmVkLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhc3N0aHJvdWdoSW5wdXREYXRhQ2FsbGJhY2spOiBBdWRpb1Rvb2xib3ggaW50ZXJuYWwgbG9n
Z2luZyBjb3VsZCBvdmVyZmxvdworICAgICAgICBpZiB3ZSB1c2VkIHBhY2tldCBkZXNjcmlwdGlv
bnMgd2l0aCBvZmZzZXRzLCBzbyB3ZSB0YWtlIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgc2NlbmFy
aW8KKyAgICAgICAgd2hlcmUgd2UgaGF2ZSBhIHNpbmdsZSBwYWNrZXQgdG8gZGVjb2RlIGF0IGEg
dGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2
YXRlV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNv
ZGVjRGVsYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJN
OjpzZXREaXNjYXJkUGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZVdlYk06OmRpc2NhcmRQYWRkaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEVuZCk6IEZseS1ieSwgZW5zdXJlIG1f
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaworICAgICAgICBvbmx5IGV2ZXIgYWNj
ZXNzZWQgb24gY2xpZW50IHRocmVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06Ok9uQmxvY2tHcm91cEVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOiBBZGQgdHJpbW1pbmcgZGF0YSBjYWxsYmFj
ay4KKyAgICAgICAgT25seSBtYXJrIFdFQkNPUkVfRVhQT1JUIHRoZSBtZXRob2RzIHRoYXQgbmVl
ZCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0RGlkUGFy
c2VUcmltbWluZ0RhdGFDYWxsYmFjayk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlIGNv
bnN0KTogTWFrZSBjYW5QbGF5VHlwZSh3ZWJtL2F1ZGlvOyBjb2RlY3M9dm9yYmlzKQorICAgICAg
ICByZXR1cm5zIG1heWJlIGlmIGZlYXR1cmUgZmxhZyBzZXQuCisKKwogMjAyMS0wOC0wMSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgR2x5cGhPdmVyZmxv
dyB0byBMYXlvdXRVbml0cyBpbnN0ZWFkIG9mIGludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBhNDNmZWNkMWVlY2ViNjJkZTkxODg2ODY2ZDk1MDhjNzVl
NmU3ZGEuLmZlMDJkOTIyNzQ5OGU5NmU0MTNjMmY5MTU3ZDY0Y2ExOWFmZmQ1MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTA2OCw3ICsxMDY4LDcgQEAg
U3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0CiAgICAgLy8gVGVtcG9yYXJpbHkgd29yayBhcm91bmQgYnVnIDIyNjkyMi4gRm9y
IG5vdyBjbGFpbSB0aGF0IHRoZSBvcHVzIGFuZCB2b3JiaXMgY29kZWNzIGFyZW4ndCBzdXBwb3J0
ZWQKICAgICAvLyBzbyB0aGF0IHNpdGVzIHJlbHlpbmcgb24gdGhpcyB0ZXN0IHRvIGRldGVybWlu
ZSBpZiB3ZWJhdWRpbyB1c2Ugb2Ygb3B1cyBvciB2b3JiaXMgd29uJ3QgZXJyb3IuCiAgICAgYXV0
byBjb2RlY3MgPSBjb250ZW50VHlwZS5jb2RlY3MoKTsKLSAgICBpZiAoc3VwcG9ydCA9PSBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCAmJiAoKGNvZGVjcy5jb250YWlucygi
b3B1cyIpICYmICF3ZWJNV2ViQXVkaW9FbmFibGVkKCkpIHx8IGNvZGVjcy5jb250YWlucygidm9y
YmlzIikpKQorICAgIGlmIChzdXBwb3J0ID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Oklz
U3VwcG9ydGVkICYmICgoY29kZWNzLmNvbnRhaW5zKCJvcHVzIikgfHwgY29kZWNzLmNvbnRhaW5z
KCJ2b3JiaXMiKSkgJiYgIXdlYk1XZWJBdWRpb0VuYWJsZWQoKSkpCiAgICAgICAgIHN1cHBvcnQg
PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggOWI2OWE4MTI1OGYyMmU2YjJlOWYyYmM1MTk2MWJh
NDc3Y2IzM2M3My4uZTc5MWI2ZmJjN2M0MTQ0MWNmMTgwZjg3ZjExNzBkNmEwY2U3MDIxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCiAjaW5jbHVkZSAiQXVkaW9TYW1w
bGVEYXRhU291cmNlLmgiCi0jaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgpAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNzIEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKIAog
cHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6SW5pdGlhbGl6YXRpb25TZWdtZW50IG1faW5pdFNlZ21lbnQ7CisgICAgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgogICAgIE1lZGlhVGltZSBtX2R1cmF0
aW9uOwogICAgIFZlY3RvcjxSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4gbV9zYW1wbGVzOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4g
QXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgYm9vbCBlcnJvciA9
IGZhbHNlOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF1ZGlvVHJhY2tJZDsKICAgICBN
ZWRpYVRpbWUgZHVyYXRpb247Ci0gICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6SW5pdGlhbGl6
YXRpb25TZWdtZW50IGluaXRTZWdtZW50OworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0+IHRyYWNrOwogICAgIFZlY3RvcjxSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4gc2FtcGxlczsK
ICAgICBwYXJzZXItPnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKFsm
XSh1aW50NjRfdCkgewogICAgICAgICBlcnJvciA9IHRydWU7CkBAIC0xOTQsNyArMTk0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6
OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICAgICAgICAgIGlmIChhdWRpb1RyYWNrLnRyYWNr
ICYmIGF1ZGlvVHJhY2sudHJhY2stPnRyYWNrVUlEKCkpIHsKICAgICAgICAgICAgICAgICBkdXJh
dGlvbiA9IGluaXQuZHVyYXRpb247CiAgICAgICAgICAgICAgICAgYXVkaW9UcmFja0lkID0gYXVk
aW9UcmFjay50cmFjay0+dHJhY2tVSUQoKTsKLSAgICAgICAgICAgICAgICBpbml0U2VnbWVudCA9
IFdURk1vdmUoaW5pdCk7CisgICAgICAgICAgICAgICAgdHJhY2sgPSBzdGF0aWNfcG9pbnRlcl9j
YXN0PEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4oYXVkaW9UcmFjay50cmFjayk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDcsMjAgKzIwNywy
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJl
YWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgIHBhcnNlci0+c2V0Q2FsbE9uQ2xpZW50
VGhyZWFkQ2FsbGJhY2soW10oYXV0byYmIGZ1bmN0aW9uKSB7CiAgICAgICAgIGZ1bmN0aW9uKCk7
CiAgICAgfSk7CisgICAgcGFyc2VyLT5zZXREaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrKFsm
XSh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmIGRpc2NhcmRQYWRkaW5nKSB7Cisg
ICAgICAgIGlmICghYXVkaW9UcmFja0lkIHx8ICF0cmFjayB8fCB0cmFja0lEICE9ICphdWRpb1Ry
YWNrSWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRyYWNrLT5zZXREaXNjYXJkUGFk
ZGluZyhkaXNjYXJkUGFkZGluZyk7CisgICAgfSk7CiAgICAgU291cmNlQnVmZmVyUGFyc2VyOjpT
ZWdtZW50IHNlZ21lbnQoeyBkYXRhLCBkYXRhU2l6ZSB9KTsKICAgICBwYXJzZXItPmFwcGVuZERh
dGEoV1RGTW92ZShzZWdtZW50KSk7Ci0gICAgaWYgKCFhdWRpb1RyYWNrSWQpCisgICAgaWYgKCF0
cmFjaykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcGFyc2VyLT5mbHVzaFBlbmRpbmdB
dWRpb0J1ZmZlcnMoKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0ZpbGVSZWFkZXJXZWJN
RGF0YT4oQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgeyBXVEZNb3ZlKGluaXRTZWdtZW50KSwgV1RG
TW92ZShkdXJhdGlvbiksIFdURk1vdmUoc2FtcGxlcykgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgdHJh
Y2sucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkdXJhdGlvbiksIFdURk1vdmUoc2FtcGxlcykg
fSk7CiB9CiAKIHN0cnVjdCBQYXNzdGhyb3VnaFVzZXJEYXRhIHsKLSAgICBVSW50MzIgbV9jaGFu
bmVsczsKLSAgICBVSW50MzIgbV9kYXRhU2l6ZTsKLSAgICBjb25zdCB2b2lkKiBtX2RhdGE7Cisg
ICAgY29uc3QgVUludDMyIG1fY2hhbm5lbHM7CisgICAgY29uc3QgVUludDMyIG1fZGF0YVNpemU7
CisgICAgY29uc3QgY2hhciogbV9kYXRhOworICAgIGNvbnN0IGJvb2wgbV9lb3M7CisgICAgY29u
c3QgVmVjdG9yPEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24+JiBtX3BhY2tldHM7CiAgICAg
VUludDMyIG1faW5kZXg7Ci0gICAgVmVjdG9yPEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24+
JiBtX3BhY2tldHM7CisgICAgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiBtX3BhY2tldDsK
IH07CiAKIC8vIEVycm9yIHZhbHVlIHdlIHBhc3MgdGhyb3VnaCB0aGUgZGVjb2RlciB0byBzaWdu
YWwgdGhhdCBub3RoaW5nCkBAIC0yMzYsMjEgKzI0MywyOSBAQCBzdGF0aWMgT1NTdGF0dXMgcGFz
c3Rocm91Z2hJbnB1dERhdGFDYWxsYmFjayhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyKiBudW1E
YXRhUAogICAgIGF1dG8qIHVzZXJEYXRhID0gc3RhdGljX2Nhc3Q8UGFzc3Rocm91Z2hVc2VyRGF0
YSo+KGluVXNlckRhdGEpOwogICAgIGlmICh1c2VyRGF0YS0+bV9pbmRleCA9PSB1c2VyRGF0YS0+
bV9wYWNrZXRzLnNpemUoKSkgewogICAgICAgICAqbnVtRGF0YVBhY2tldHMgPSAwOwotICAgICAg
ICByZXR1cm4ga05vTW9yZURhdGFFcnI7CisgICAgICAgIHJldHVybiB1c2VyRGF0YS0+bV9lb3Mg
PyBub0VyciA6IGtOb01vcmVEYXRhRXJyOworICAgIH0KKworICAgIGlmICh1c2VyRGF0YS0+bV9p
bmRleCA+PSB1c2VyRGF0YS0+bV9wYWNrZXRzLnNpemUoKSkgeworICAgICAgICAqbnVtRGF0YVBh
Y2tldHMgPSAwOworICAgICAgICByZXR1cm4ga0F1ZGlvQ29udmVydGVyRXJyX1JlcXVpcmVzUGFj
a2V0RGVzY3JpcHRpb25zRXJyb3I7CiAgICAgfQogCiAgICAgaWYgKHBhY2tldERlc2MpIHsKLSAg
ICAgICAgaWYgKHVzZXJEYXRhLT5tX2luZGV4ID49IHVzZXJEYXRhLT5tX3BhY2tldHMuc2l6ZSgp
KSB7Ci0gICAgICAgICAgICAqbnVtRGF0YVBhY2tldHMgPSAwOwotICAgICAgICAgICAgcmV0dXJu
IGtBdWRpb0NvbnZlcnRlckVycl9SZXF1aXJlc1BhY2tldERlc2NyaXB0aW9uc0Vycm9yOwotICAg
ICAgICB9Ci0gICAgICAgICpwYWNrZXREZXNjID0gJnVzZXJEYXRhLT5tX3BhY2tldHNbdXNlckRh
dGEtPm1faW5kZXhdOworICAgICAgICB1c2VyRGF0YS0+bV9wYWNrZXQgPSB1c2VyRGF0YS0+bV9w
YWNrZXRzW3VzZXJEYXRhLT5tX2luZGV4XTsKKyAgICAgICAgdXNlckRhdGEtPm1fcGFja2V0Lm1T
dGFydE9mZnNldCA9IDA7CisgICAgICAgICpwYWNrZXREZXNjID0gJnVzZXJEYXRhLT5tX3BhY2tl
dDsKICAgICB9CiAKICAgICBkYXRhLT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSB1c2Vy
RGF0YS0+bV9jaGFubmVsczsKLSAgICBkYXRhLT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0g
dXNlckRhdGEtPm1fZGF0YVNpemU7Ci0gICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBjb25z
dF9jYXN0PHZvaWQqPih1c2VyRGF0YS0+bV9kYXRhKTsKKyAgICBkYXRhLT5tQnVmZmVyc1swXS5t
RGF0YUJ5dGVTaXplID0gdXNlckRhdGEtPm1fcGFja2V0c1t1c2VyRGF0YS0+bV9pbmRleF0ubURh
dGFCeXRlU2l6ZTsKKyAgICBkYXRhLT5tQnVmZmVyc1swXS5tRGF0YSA9IGNvbnN0X2Nhc3Q8Y2hh
cio+KHVzZXJEYXRhLT5tX2RhdGEgKyB1c2VyRGF0YS0+bV9wYWNrZXRzW3VzZXJEYXRhLT5tX2lu
ZGV4XS5tU3RhcnRPZmZzZXQpOwogCisgICAgLy8gU2FuaXR5IGNoZWNrCisgICAgaWYgKHN0YXRp
Y19jYXN0PGNoYXIqPihkYXRhLT5tQnVmZmVyc1swXS5tRGF0YSkgKyBkYXRhLT5tQnVmZmVyc1sw
XS5tRGF0YUJ5dGVTaXplID4gdXNlckRhdGEtPm1fZGF0YSArIHVzZXJEYXRhLT5tX2RhdGFTaXpl
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFdlYkF1ZGlvLCAiTm9uc2Vuc2ljYWwgZGF0
YSBzdHJ1Y3R1cmUsIGFib3J0aW5nIik7CisgICAgICAgIHJldHVybiBrQXVkaW9Db252ZXJ0ZXJF
cnJfVW5zcGVjaWZpZWRFcnJvcjsKKyAgICB9CiAgICAgKm51bURhdGFQYWNrZXRzID0gMTsKICAg
ICB1c2VyRGF0YS0+bV9pbmRleCsrOwogCkBAIC0zMDMsNiArMzE4LDEyIEBAIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlz
dCYgYnVmZmVyTGlzCiAgICAgaWYgKG1hZ2ljQ29va2llICYmIG1hZ2ljQ29va2llU2l6ZSkKICAg
ICAgICAgUEFMOjpBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlvQ29u
dmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llLCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29v
a2llKTsKIAorICAgIEF1ZGlvQ29udmVydGVyUHJpbWVJbmZvIHByaW1lSW5mbyA9IHsgVUludDMy
KG1fd2VibURhdGEtPm1fdHJhY2stPmNvZGVjRGVsYXkoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSku
dG9Eb3VibGUoKSAqIG91dEZvcm1hdC5tU2FtcGxlUmF0ZSksIDAgfTsKKyAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAiV2lsbCBkcm9wICV1IGxlYWRpbmcgZnJhbWVzIG91dCBvZiAlbGx1Iiwg
cHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMsIG51bWJlck9mRnJhbWVzKTsKKyAgICBQQUw6OkF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkoY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8s
IHNpemVvZihwcmltZUluZm8pLCAmcHJpbWVJbmZvKTsKKyAgICBVSW50MzIgcHJpbWVNZXRob2Qg
PSBrQ29udmVydGVyUHJpbWVNZXRob2RfTm9uZTsKKyAgICBQQUw6OkF1ZGlvQ29udmVydGVyU2V0
UHJvcGVydHkoY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJQcmltZU1ldGhvZCwgc2l6ZW9mKHBy
aW1lTWV0aG9kKSwgJnByaW1lTWV0aG9kKTsKKwogICAgIEF1ZGlvQnVmZmVyTGlzdEhvbGRlciBk
ZWNvZGVkQnVmZmVyTGlzdChpbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSk7CiAgICAgaWYgKCFk
ZWNvZGVkQnVmZmVyTGlzdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywg
IlVuYWJsZSB0byBjcmVhdGUgZGVjb2RlciIpOwpAQCAtMzExLDcgKzMzMiw4IEBAIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVy
TGlzdCYgYnVmZmVyTGlzCiAKICAgICBzaXplX3QgZGVjb2RlZEZyYW1lcyA9IDA7CiAgICAgT1NT
dGF0dXMgc3RhdHVzOwotICAgIGZvciAoYXV0byYgc2FtcGxlIDogbV93ZWJtRGF0YS0+bV9zYW1w
bGVzKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3dlYm1EYXRhLT5tX3NhbXBsZXMu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgYXV0byYgc2FtcGxlID0gbV93ZWJtRGF0YS0+bV9zYW1w
bGVzW2ldOwogICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUt
PnNhbXBsZUJ1ZmZlcigpOwogICAgICAgICBhdXRvIGJ1ZmZlciA9IFBBTDo6Q01TYW1wbGVCdWZm
ZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlcik7CiAgICAgICAgIEFTU0VSVChQQUw6OkNNQmxv
Y2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhidWZmZXIsIDAsIDApKTsKQEAgLTMzMSw3ICszNTMs
NyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0
YShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICBpZiAoZGVzY3JpcHRpb25zLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgUGFzc3Rocm91Z2hV
c2VyRGF0YSB1c2VyRGF0YSA9IHsgaW5Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUsIFVJbnQzMihz
cmNTaXplKSwgc3JjRGF0YSwgMCwgZGVzY3JpcHRpb25zIH07CisgICAgICAgIFBhc3N0aHJvdWdo
VXNlckRhdGEgdXNlckRhdGEgPSB7IGluRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lLCBVSW50MzIo
c3JjU2l6ZSksIHNyY0RhdGEsIGkgPT0gbV93ZWJtRGF0YS0+bV9zYW1wbGVzLnNpemUoKSAtIDEs
IGRlc2NyaXB0aW9ucywgMCwgeyB9IH07CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgaWYg
KG51bWJlck9mRnJhbWVzIDwgZGVjb2RlZEZyYW1lcykgewpAQCAtMzUzLDkgKzM3NSwxMiBAQCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlckxpcwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBkZWNvZGVkRnJhbWVzICs9IG51bUZyYW1lczsKLSAgICAg
ICAgfSB3aGlsZSAoc3RhdHVzICE9IGtOb01vcmVEYXRhRXJyKTsKKyAgICAgICAgfSB3aGlsZSAo
c3RhdHVzICE9IGtOb01vcmVEYXRhRXJyICYmIHN0YXR1cyAhPSBub0Vycik7CiAgICAgfQotICAg
IHJldHVybiBkZWNvZGVkRnJhbWVzOworICAgIHNpemVfdCBwYWRkaW5nRnJhbWVzID0gbV93ZWJt
RGF0YS0+bV90cmFjay0+ZGlzY2FyZFBhZGRpbmcoKS52YWx1ZV9vcihNZWRpYVRpbWUoKSkudG9E
b3VibGUoKSAqIG91dEZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBpZiAoZGVjb2RlZEZyYW1lcyA+
IHBhZGRpbmdGcmFtZXMpCisgICAgICAgIHJldHVybiBkZWNvZGVkRnJhbWVzIC0gcGFkZGluZ0Zy
YW1lczsKKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmNwcAppbmRleCBkZGRjYWNhN2ZlOTAwOTkwYjg4NGM1MTRlYzAyODE3YzdhZmEwOTJiLi4y
YjFkYWViMzY5YTk0N2VkNWVkZTkyNmNjNTQ4ZTJhNmJjZTg0OTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJh
Y2tQcml2YXRlV2ViTS5jcHAKQEAgLTg2LDYgKzg2LDI2IEBAIGludCBBdWRpb1RyYWNrUHJpdmF0
ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitzdGQ6Om9wdGlv
bmFsPE1lZGlhVGltZT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjb2RlY0RlbGF5KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fdHJhY2suY29kZWNfZGVsYXkuaXNfcHJlc2VudCgpKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBrX3VzX2luX3NlY29uZHMgPSAxMDAw
MDAwMDAwOworICAgIHJldHVybiBNZWRpYVRpbWUobV90cmFjay5jb2RlY19kZWxheS52YWx1ZSgp
LCBrX3VzX2luX3NlY29uZHMpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6c2V0
RGlzY2FyZFBhZGRpbmcoY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJkUGFkZGluZykKK3sKKyAgICBt
X2Rpc2NhcmRQYWRkaW5nID0gZGlzY2FyZFBhZGRpbmc7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVk
aWFUaW1lPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmRpc2NhcmRQYWRkaW5nKCkgY29uc3QKK3sK
KyAgICBpZiAobV9kaXNjYXJkUGFkZGluZy5pc0ludmFsaWQoKSB8fCBtX2Rpc2NhcmRQYWRkaW5n
IDwgTWVkaWFUaW1lKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fZGlzY2Fy
ZFBhZGRpbmc7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNr
UHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1
ZGlvVHJhY2tQcml2YXRlV2ViTS5oCmluZGV4IGIzYTJjYTM5NjQ2YTViNjExZjZlMjY2MTkzZTky
ZDFjN2M0YmI3NDIuLjNhODI3MWE2MzdkMWIxMDFmOGJlZGQzN2I4ZWFjNWI5Y2QzNThiNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJh
Y2tQcml2YXRlV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC00MywxMCArNDMsMTQgQEAgcHVibGljOgog
ICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gdHJhY2tVSUQoKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRl
ZmF1bHRFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+
IGNvZGVjRGVsYXkoKSBjb25zdDsKKyAgICB2b2lkIHNldERpc2NhcmRQYWRkaW5nKGNvbnN0IE1l
ZGlhVGltZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBkaXNjYXJkUGFkZGluZygp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFj
a0VudHJ5JiYpOwogICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKKyAgICBNZWRpYVRpbWUg
bV9kaXNjYXJkUGFkZGluZyB7IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OwogICAgIG11dGFi
bGUgQXRvbVN0cmluZyBtX3RyYWNrSUQ7CiAgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7
CiAgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IDA0MzgxOTBhMGQ2YTVmOGYyMWU4MTcxYTJjNTQxYmU0YzZkM2I0
MmMuLmVlZDZlMjAyODk4Yzc0ODBjMGU0OWNkNTRjZDMzOTFhYmJhNTQ3MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0yNjQsNiArMjY0LDggQEAgc3RhdGljIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIHsgcmV0dXJuICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIjsg
fQogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Uga0NNVmlkZW9Db2RlY1R5cGVfVlA5IGlzIGFk
ZGVkIHRvIENNRm9ybWF0RGVzY3JpcHRpb24uaAogY29uc3RleHByIENNVmlkZW9Db2RlY1R5cGUg
a0NNVmlkZW9Db2RlY1R5cGVfVlA5IHsgJ3ZwMDknIH07CiAKK2NvbnN0ZXhwciB1aW50MzJfdCBr
X3VzX2luX3NlY29uZHMgPSAxMDAwMDAwMDAwOworCiBzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJB
dmFpbGFibGUoKQogewogICAgIHJldHVybiAhIXdlYm06OnN3YXA7CkBAIC03NzksOSArNzgxLDEw
IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRFbmQoY29uc3QgRWxl
bWVudE1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjpDb2RlKEVycm9yQ29kZTo6Q29udGVudEVuY3J5cHRlZCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgJiYgbV9kaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7CisgICAgICAgIGlmIChtX2luaXRpYWxpemF0aW9u
U2VnbWVudEVuY291bnRlcmVkKSB7CiAgICAgICAgICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENh
bGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0
aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2so
V1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBt
X2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlv
blNlZ21lbnQpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIG1faW5pdGlh
bGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKQEAgLTg0Nyw3ICs4NTAsNyBAQCBT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIGNvbnN0IEluZgogICAgIH0KIAogICAgIGF1dG8gdGltZWNvZGVTY2FsZSA9
IGluZm8udGltZWNvZGVfc2NhbGUuaXNfcHJlc2VudCgpID8gaW5mby50aW1lY29kZV9zY2FsZS52
YWx1ZSgpIDogMTAwMDAwMDsKLSAgICBtX3RpbWVzY2FsZSA9IDEwMDAwMDAwMDAgLyB0aW1lY29k
ZVNjYWxlOworICAgIG1fdGltZXNjYWxlID0ga191c19pbl9zZWNvbmRzIC8gdGltZWNvZGVTY2Fs
ZTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+ZHVyYXRpb24gPSBpbmZvLmR1cmF0aW9u
LmlzX3ByZXNlbnQoKSA/IE1lZGlhVGltZShpbmZvLmR1cmF0aW9uLnZhbHVlKCksIG1fdGltZXNj
YWxlKSA6IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKTsKIAogICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprT2tDb21wbGV0ZWQpOwpAQCAtMTAyMyw4ICsxMDI2LDIxIEBAIHdlYm06OlN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpF
bGVtZW50TWV0YWRhCiB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9j
a0dyb3VwRW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IHdl
Ym06OkJsb2NrR3JvdXAmIGJsb2NrR3JvdXApCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oYmxvY2tHcm91cCk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUik7CisgICAgaWYgKGJsb2NrR3JvdXAuYmxvY2suaXNfcHJlc2VudCgp
ICYmIGJsb2NrR3JvdXAuZGlzY2FyZF9wYWRkaW5nLmlzX3ByZXNlbnQoKSkgeworICAgICAgICBh
dXRvIHRyYWNrTnVtYmVyID0gYmxvY2tHcm91cC5ibG9jay52YWx1ZSgpLnRyYWNrX251bWJlcjsK
KyAgICAgICAgYXV0byogdHJhY2tEYXRhID0gdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodHJhY2tO
dW1iZXIpOworICAgICAgICBpZiAoIXRyYWNrRGF0YSkgeworICAgICAgICAgICAgRVJST1JfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJJZ25vcmluZyB1bmtub3duIHRyYWNrIG51bWJl
ciAiLCB0cmFja051bWJlcik7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09r
Q29tcGxldGVkKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHJhY2tEYXRhLT50cmFjaygpLnRy
YWNrX3VpZC5pc19wcmVzZW50KCkgJiYgYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRpbmcudmFsdWUo
KSA+IDApIHsKKyAgICAgICAgICAgIG1fY2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhY2tJRCA9IHRyYWNrRGF0YS0+dHJh
Y2soKS50cmFja191aWQudmFsdWUoKSwgcGFkZGluZyA9IE1lZGlhVGltZShibG9ja0dyb3VwLmRp
c2NhcmRfcGFkZGluZy52YWx1ZSgpLCBrX3VzX2luX3NlY29uZHMpXSgpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9kaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgICAg
ICAgICBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sodHJhY2tJRCwgcGFkZGluZyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKIH0KIApAQCAtMTIxMiw3ICsxMjI4LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0
IENNVGltZSYgcHIKIAogICAgIHVpbnQ2NF90IGR1cmF0aW9uID0gMDsKICAgICBpZiAodHJhY2su
ZGVmYXVsdF9kdXJhdGlvbi5pc19wcmVzZW50KCkpCi0gICAgICAgIGR1cmF0aW9uID0gdHJhY2su
ZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICogcHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUgLyAx
MDAwMDAwMDAwOworICAgICAgICBkdXJhdGlvbiA9IHRyYWNrLmRlZmF1bHRfZHVyYXRpb24udmFs
dWUoKSAqIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlIC8ga191c19pbl9zZWNvbmRzOwogCiAg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgcmF3U2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKICAgICBzaXpl
X3QgZnJhbWVTaXplID0gUEFMOjpDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX2N1cnJlbnRC
bG9ja0J1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggOTM0
MWM5NWQyOGUwNzlmNmJjNTdiZGE3ZWRkYWRkY2I1NzY2ZmJhYi4uOTUyOTc2YjI3MmY3MTE4NWJi
Nzg3ZjVhYTM0MjNjNGY4N2Q2YzRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApA
QCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU2FtcGxl
QVZGT2JqQzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyV2ViTSA6
IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2FsbGJhY2sgeworY2xh
c3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTSA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHBy
aXZhdGUgd2VibTo6Q2FsbGJhY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGNsYXNzIFN0cmVhbWluZ1ZlY3RvclJlYWRlcjsKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJsZSgpOwog
ICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1
cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwogICAgIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgd2VibU1JTUVUeXBlcygpOwotICAgIHN0
YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyV2ViTT4gY3JlYXRlKGNvbnN0IENvbnRlbnRU
eXBlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNPiBjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmKTsKIAogICAgIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0oKTsKICAgICB+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpOwpAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3Qgd2VibTo6U3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXR1czsgfQogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6
V2ViTTsgfQotICAgIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiA9IFtdIHsgfSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmREYXRhKFNlZ21lbnQmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdz
OjpOb25lKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZpbmFsOwog
ICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgdWludDY0
X3QpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQodWlu
dDY0X3QpIGZpbmFsOwpAQCAtODMsOSArODMsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZmx1c2hQ
ZW5kaW5nQXVkaW9CdWZmZXJzKCk7CiAgICAgdm9pZCBzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJh
dGlvbihmbG9hdCk7CiAgICAgCi0gICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXIm
LCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpIGZp
bmFsOwogCiAgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4sIHVpbnQ2NF90LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZVJhbmdlT2Zmc2V0KTsK
KyAgICB1c2luZyBEaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpPjsK
KyAgICB2b2lkIHNldERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2soRGlkUGFyc2VUcmltbWlu
Z0RhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQYXJzZVRyaW1t
aW5nRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQogCiAgICAgZW51bSBj
bGFzcyBFcnJvckNvZGUgOiBpbnQzMl90IHsKICAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TUVycm9yQ29kZVN0YXJ0ID0gMjAwMCwKQEAgLTI4Nyw2ICsyOTIsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9s
b2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2NF90IG1fbmV4dENoaWxkSWRlbnRp
ZmllciB7IDAgfTsKKyAgICBEaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrIG1fZGlkUGFyc2VU
cmltbWluZ0RhdGFDYWxsYmFjazsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MmVkYTE5MDg3M2ZkODMyYTI5
MDU4ZTM3YTVlYTg5YzA1Mjg5ZWI0Li5jNjBjNTU5MTQxNDZlMTE1MzhmNWNmYWM2ZTU2YTQxYjU4
MWU2NjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDctMzAgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI4MTQwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgwODgzODgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE0MAorCisgICAgICAgICogd2ViYXVk
aW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbDoKKwogMjAyMS0wNy0yNiAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdWRpb10g
QWRkIHdlYm0vdm9yYmlzIGNvbnRhaW5lciBzdXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLWV4cGVjdGVkLnR4
dAppbmRleCA0NGJjMDEwOGQ0NGNkNWY0NzQ2ZjY5OTdlNjBjNWU0NzM1NmZhNGU0Li4zN2JlOWU1
ZTlhZWY4YjQzY2E2ZGJhOWEwNGFjZTQ0ZmQwZDBjMGNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy1leHBlY3Rl
ZC50eHQKQEAgLTQsNiArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBT
dWNjZXNzZnVsbHkgZGVjb2RlZCBjb250ZW50CitQQVNTIERlY29kaW5nIHJldHVybmVkIHRoZSBy
aWdodCBudW1iZXIgb2YgZnJhbWVzLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWNvZGUt
YXVkaW8tZGF0YS13ZWJtLW9wdXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1h
dWRpby1kYXRhLXdlYm0tb3B1cy5odG1sCmluZGV4IDY1NzcyODAxMjcwMGFmM2Q2ODI0ZTIwOTA4
NWY0ZGNlZTM3OGM3MGQuLjBlZTFhN2IzN2UwMDI3M2VhNjc4MDZmYTJmY2NjMTU5NjFlZDkzZDgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0t
b3B1cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdl
Ym0tb3B1cy5odG1sCkBAIC0xMCw3ICsxMCw3IEBAIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgZGVj
b2RpbmcgYW4gb3B1cyB3ZWJtIGZpbGUgc3VjY2VlZHMiKTsKIAogd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwogCi12YXIgY29udGV4dCA9IG5ldyB3aW5kb3cuQXVkaW9Db250ZXh0KCk7Cit2
YXIgY29udGV4dCA9IG5ldyB3aW5kb3cuQXVkaW9Db250ZXh0KHsgc2FtcGxlUmF0ZTogNDgwMDAg
fSk7CiB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogcmVxdWVzdC5vcGVuKCJH
RVQiLCAncmVzb3VyY2VzL21lZGlhL29wdXMud2VibScsIHRydWUpOwogcmVxdWVzdC5yZXNwb25z
ZVR5cGUgPSAiYXJyYXlidWZmZXIiOwpAQCAtMTgsNiArMTgsMTEgQEAgcmVxdWVzdC5yZXNwb25z
ZVR5cGUgPSAiYXJyYXlidWZmZXIiOwogcmVxdWVzdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAg
ICBjb250ZXh0LmRlY29kZUF1ZGlvRGF0YShyZXF1ZXN0LnJlc3BvbnNlLCAoYnVmZmVyKSA9PiB7
CiAgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBkZWNvZGVkIGNvbnRlbnQiKTsKKyAg
ICAgICAgLy8gRmlsZSBpcyBleGFjdGx5IDEtMC4wMDY1cyBsb25nIEAgNDgwMDBIeiwgc28gNDc2
ODggZnJhbWVzLgorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gNDc2ODgpCisgICAgICAg
ICAgdGVzdFBhc3NlZCgiRGVjb2RpbmcgcmV0dXJuZWQgdGhlIHJpZ2h0IG51bWJlciBvZiBmcmFt
ZXMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICB0ZXN0RmFpbGVkKCJEZWNvZGluZyByZXR1
cm5lZCB0aGUgd3JvbmcgbnVtYmVyIG9mIGZyYW1lczogIiArIGJ1ZmZlci5sZW5ndGgpOwogICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgIH0sICgpID0+IHsKICAgICAgICAgdGVzdEZhaWxl
ZCgiRmFpbGVkIHRvIGRlY29kZSBmaWxlIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434816</attachid>
            <date>2021-08-02 20:51:30 -0700</date>
            <delta_ts>2021-08-02 21:21:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228140-20210803135128.patch</filename>
            <type>text/plain</type>
            <size>22026</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJlMmVhNzZmMGEyOTFj
NzkwNjgzM2YwZGQ3YmEwMTNhMTkxMzdkZS4uYTlhMGU2MTkwYTk0MmJhOWIxZTk2ZjI2MWY2OWUw
MTNiNWVjYzI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTA3LTI4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSB3ZWJt
OyBwcm9wZXJseSB0cmltIGZyYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGNvZGVjIGRlbGF5IGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgxNDAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODA4ODM4ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGZyYW1lLXBlcmZlY3QgZGVjb2Rpbmcg
Zm9yIE9wdXMgYW5kIFZvcmJpcyBpbiBXZWJNIGNvbnRhaW5lci4KKyAgICAgICAgVW5mb3J0dW5h
dGVseSwgZHVlIHRvIGEgdm9yYmlzIGRlY29kZXIgYnVnLCBpdCBpcyBub3QgcG9zc2libGUgdG8g
dGVzdCB0aGF0CisgICAgICAgIHZvcmJpcyBkZWNvZGluZyByZXR1cm5zIHRoZSByaWdodCBudW1i
ZXIgb2YgZnJhbWVzLgorICAgICAgICBBbWVuZCBPcHVzIHRlc3QgdG8gZW5zdXJlIHRoZSByaWdo
dCBhbW91bnQgb2YgZnJhbWVzIGFyZSByZXR1cm5lZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpw
YXNzdGhyb3VnaElucHV0RGF0YUNhbGxiYWNrKTogQXVkaW9Ub29sYm94IGludGVybmFsIGxvZ2dp
bmcgY291bGQgb3ZlcmZsb3cKKyAgICAgICAgaWYgd2UgdXNlZCBwYWNrZXQgZGVzY3JpcHRpb25z
IHdpdGggb2Zmc2V0cywgc28gd2UgdGFrZSB0aGUgbW9zdCBjb21tb25seSB1c2VkIHNjZW5hcmlv
CisgICAgICAgIHdoZXJlIHdlIGhhdmUgYSBzaW5nbGUgcGFja2V0IHRvIGRlY29kZSBhdCBhIHRp
bWUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZVdlYk1EYXRhIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0
ZVdlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjb2Rl
Y0RlbGF5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
c2V0RGlzY2FyZFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpkaXNjYXJkUGFkZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRFbmQpOiBGbHktYnksIGVuc3VyZSBtX2Rp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sKKyAgICAgICAgb25seSBldmVyIGFjY2Vz
c2VkIG9uIGNsaWVudCB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDogQWRkIHRyaW1taW5nIGRhdGEgY2FsbGJhY2su
CisgICAgICAgIE9ubHkgbWFyayBXRUJDT1JFX0VYUE9SVCB0aGUgbWV0aG9kcyB0aGF0IG5lZWQg
aXQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldERpZFBhcnNl
VHJpbW1pbmdEYXRhQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSBjb25z
dCk6IE1ha2UgY2FuUGxheVR5cGUod2VibS9hdWRpbzsgY29kZWNzPXZvcmJpcykKKyAgICAgICAg
cmV0dXJucyBtYXliZSBpZiBmZWF0dXJlIGZsYWcgc2V0LgorCisKIDIwMjEtMDgtMDEgIFJvYiBC
dWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBNaWdyYXRlIEdseXBoT3ZlcmZsb3cg
dG8gTGF5b3V0VW5pdHMgaW5zdGVhZCBvZiBpbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAwYTQzZmVjZDFlZWNlYjYyZGU5MTg4Njg2NmQ5NTA4Yzc1ZTZl
N2RhLi5mZTAyZDkyMjc0OThlOTZlNDEzYzJmOTE1N2Q2NGNhMTlhZmZkNTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEwNjgsNyArMTA2OCw3IEBAIFN0
cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KSBjb25zdAogICAgIC8vIFRlbXBvcmFyaWx5IHdvcmsgYXJvdW5kIGJ1ZyAyMjY5MjIuIEZvciBu
b3cgY2xhaW0gdGhhdCB0aGUgb3B1cyBhbmQgdm9yYmlzIGNvZGVjcyBhcmVuJ3Qgc3VwcG9ydGVk
CiAgICAgLy8gc28gdGhhdCBzaXRlcyByZWx5aW5nIG9uIHRoaXMgdGVzdCB0byBkZXRlcm1pbmUg
aWYgd2ViYXVkaW8gdXNlIG9mIG9wdXMgb3Igdm9yYmlzIHdvbid0IGVycm9yLgogICAgIGF1dG8g
Y29kZWNzID0gY29udGVudFR5cGUuY29kZWNzKCk7Ci0gICAgaWYgKHN1cHBvcnQgPT0gTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgJiYgKChjb2RlY3MuY29udGFpbnMoIm9w
dXMiKSAmJiAhd2ViTVdlYkF1ZGlvRW5hYmxlZCgpKSB8fCBjb2RlY3MuY29udGFpbnMoInZvcmJp
cyIpKSkKKyAgICBpZiAoc3VwcG9ydCA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1
cHBvcnRlZCAmJiAoKGNvZGVjcy5jb250YWlucygib3B1cyIpIHx8IGNvZGVjcy5jb250YWlucygi
dm9yYmlzIikpICYmICF3ZWJNV2ViQXVkaW9FbmFibGVkKCkpKQogICAgICAgICBzdXBwb3J0ID0g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9G
aWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4IDliNjlhODEyNThmMjJlNmIyZTlmMmJjNTE5NjFiYTQ3
N2NiMzNjNzMuLmU3OTFiNmZiYzdjNDE0NDFjZjE4MGY4N2YxMTcwZDZhMGNlNzAyMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBdWRpb0J1
cy5oIgogI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkF1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGVXZWJNLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
QEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAKIHB1
YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OkluaXRpYWxpemF0aW9uU2VnbWVudCBtX2luaXRTZWdtZW50OworICAgIFJlZjxBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKICAgICBNZWRpYVRpbWUgbV9kdXJhdGlv
bjsKICAgICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IG1fc2FtcGxlczsKQEAgLTE4
NCw3ICsxODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1
ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgIGJvb2wgZXJyb3IgPSBm
YWxzZTsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdWRpb1RyYWNrSWQ7CiAgICAgTWVk
aWFUaW1lIGR1cmF0aW9uOwotICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkluaXRpYWxpemF0
aW9uU2VnbWVudCBpbml0U2VnbWVudDsKKyAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVXZWJN
PiB0cmFjazsKICAgICBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+IHNhbXBsZXM7CiAg
ICAgcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbJl0o
dWludDY0X3QpIHsKICAgICAgICAgZXJyb3IgPSB0cnVlOwpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpk
ZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICBpZiAoYXVkaW9UcmFjay50cmFjayAm
JiBhdWRpb1RyYWNrLnRyYWNrLT50cmFja1VJRCgpKSB7CiAgICAgICAgICAgICAgICAgZHVyYXRp
b24gPSBpbml0LmR1cmF0aW9uOwogICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tJZCA9IGF1ZGlv
VHJhY2sudHJhY2stPnRyYWNrVUlEKCk7Ci0gICAgICAgICAgICAgICAgaW5pdFNlZ21lbnQgPSBX
VEZNb3ZlKGluaXQpOworICAgICAgICAgICAgICAgIHRyYWNrID0gc3RhdGljX3BvaW50ZXJfY2Fz
dDxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+KGF1ZGlvVHJhY2sudHJhY2spOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjA3LDIwICsyMDcsMjcg
QEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFk
ZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVudFRo
cmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigpOwog
ICAgIH0pOworICAgIHBhcnNlci0+c2V0RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayhbJl0o
dWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJkUGFkZGluZykgeworICAg
ICAgICBpZiAoIWF1ZGlvVHJhY2tJZCB8fCAhdHJhY2sgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFj
a0lkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0cmFjay0+c2V0RGlzY2FyZFBhZGRp
bmcoZGlzY2FyZFBhZGRpbmcpOworICAgIH0pOwogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudCBzZWdtZW50KHsgZGF0YSwgZGF0YVNpemUgfSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRh
KFdURk1vdmUoc2VnbWVudCkpOwotICAgIGlmICghYXVkaW9UcmFja0lkKQorICAgIGlmICghdHJh
Y2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHBhcnNlci0+Zmx1c2hQZW5kaW5nQXVk
aW9CdWZmZXJzKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9GaWxlUmVhZGVyV2ViTURh
dGE+KEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsgV1RGTW92ZShpbml0U2VnbWVudCksIFdURk1v
dmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0pOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPihBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7IHRyYWNr
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZHVyYXRpb24pLCBXVEZNb3ZlKHNhbXBsZXMpIH0p
OwogfQogCiBzdHJ1Y3QgUGFzc3Rocm91Z2hVc2VyRGF0YSB7Ci0gICAgVUludDMyIG1fY2hhbm5l
bHM7Ci0gICAgVUludDMyIG1fZGF0YVNpemU7Ci0gICAgY29uc3Qgdm9pZCogbV9kYXRhOworICAg
IGNvbnN0IFVJbnQzMiBtX2NoYW5uZWxzOworICAgIGNvbnN0IFVJbnQzMiBtX2RhdGFTaXplOwor
ICAgIGNvbnN0IGNoYXIqIG1fZGF0YTsKKyAgICBjb25zdCBib29sIG1fZW9zOworICAgIGNvbnN0
IFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYgbV9wYWNrZXRzOwogICAgIFVJ
bnQzMiBtX2luZGV4OwotICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiYg
bV9wYWNrZXRzOworICAgIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gbV9wYWNrZXQ7CiB9
OwogCiAvLyBFcnJvciB2YWx1ZSB3ZSBwYXNzIHRocm91Z2ggdGhlIGRlY29kZXIgdG8gc2lnbmFs
IHRoYXQgbm90aGluZwpAQCAtMjM2LDIxICsyNDMsMjkgQEAgc3RhdGljIE9TU3RhdHVzIHBhc3N0
aHJvdWdoSW5wdXREYXRhQ2FsbGJhY2soQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiogbnVtRGF0
YVAKICAgICBhdXRvKiB1c2VyRGF0YSA9IHN0YXRpY19jYXN0PFBhc3N0aHJvdWdoVXNlckRhdGEq
PihpblVzZXJEYXRhKTsKICAgICBpZiAodXNlckRhdGEtPm1faW5kZXggPT0gdXNlckRhdGEtPm1f
cGFja2V0cy5zaXplKCkpIHsKICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAg
cmV0dXJuIGtOb01vcmVEYXRhRXJyOworICAgICAgICByZXR1cm4gdXNlckRhdGEtPm1fZW9zID8g
bm9FcnIgOiBrTm9Nb3JlRGF0YUVycjsKKyAgICB9CisKKyAgICBpZiAodXNlckRhdGEtPm1faW5k
ZXggPj0gdXNlckRhdGEtPm1fcGFja2V0cy5zaXplKCkpIHsKKyAgICAgICAgKm51bURhdGFQYWNr
ZXRzID0gMDsKKyAgICAgICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9SZXF1aXJlc1BhY2tl
dERlc2NyaXB0aW9uc0Vycm9yOwogICAgIH0KIAogICAgIGlmIChwYWNrZXREZXNjKSB7Ci0gICAg
ICAgIGlmICh1c2VyRGF0YS0+bV9pbmRleCA+PSB1c2VyRGF0YS0+bV9wYWNrZXRzLnNpemUoKSkg
ewotICAgICAgICAgICAgKm51bURhdGFQYWNrZXRzID0gMDsKLSAgICAgICAgICAgIHJldHVybiBr
QXVkaW9Db252ZXJ0ZXJFcnJfUmVxdWlyZXNQYWNrZXREZXNjcmlwdGlvbnNFcnJvcjsKLSAgICAg
ICAgfQotICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXRzW3VzZXJEYXRh
LT5tX2luZGV4XTsKKyAgICAgICAgdXNlckRhdGEtPm1fcGFja2V0ID0gdXNlckRhdGEtPm1fcGFj
a2V0c1t1c2VyRGF0YS0+bV9pbmRleF07CisgICAgICAgIHVzZXJEYXRhLT5tX3BhY2tldC5tU3Rh
cnRPZmZzZXQgPSAwOworICAgICAgICAqcGFja2V0RGVzYyA9ICZ1c2VyRGF0YS0+bV9wYWNrZXQ7
CiAgICAgfQogCiAgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gdXNlckRh
dGEtPm1fY2hhbm5lbHM7Ci0gICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IHVz
ZXJEYXRhLT5tX2RhdGFTaXplOwotICAgIGRhdGEtPm1CdWZmZXJzWzBdLm1EYXRhID0gY29uc3Rf
Y2FzdDx2b2lkKj4odXNlckRhdGEtPm1fZGF0YSk7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURh
dGFCeXRlU2l6ZSA9IHVzZXJEYXRhLT5tX3BhY2tldHNbdXNlckRhdGEtPm1faW5kZXhdLm1EYXRh
Qnl0ZVNpemU7CisgICAgZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBjb25zdF9jYXN0PGNoYXIq
Pih1c2VyRGF0YS0+bV9kYXRhICsgdXNlckRhdGEtPm1fcGFja2V0c1t1c2VyRGF0YS0+bV9pbmRl
eF0ubVN0YXJ0T2Zmc2V0KTsKIAorICAgIC8vIFNhbml0eSBjaGVjaworICAgIGlmIChzdGF0aWNf
Y2FzdDxjaGFyKj4oZGF0YS0+bUJ1ZmZlcnNbMF0ubURhdGEpICsgZGF0YS0+bUJ1ZmZlcnNbMF0u
bURhdGFCeXRlU2l6ZSA+IHVzZXJEYXRhLT5tX2RhdGEgKyB1c2VyRGF0YS0+bV9kYXRhU2l6ZSkg
eworICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJBdWRpbywgIk5vbnNlbnNpY2FsIGRhdGEg
c3RydWN0dXJlLCBhYm9ydGluZyIpOworICAgICAgICByZXR1cm4ga0F1ZGlvQ29udmVydGVyRXJy
X1Vuc3BlY2lmaWVkRXJyb3I7CisgICAgfQogICAgICpudW1EYXRhUGFja2V0cyA9IDE7CiAgICAg
dXNlckRhdGEtPm1faW5kZXgrKzsKIApAQCAtMzAzLDYgKzMxOCwxMiBAQCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxpc3Qm
IGJ1ZmZlckxpcwogICAgIGlmIChtYWdpY0Nvb2tpZSAmJiBtYWdpY0Nvb2tpZVNpemUpCiAgICAg
ICAgIFBBTDo6QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZl
cnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tp
ZSk7CiAKKyAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8gPSB7IFVJbnQzMiht
X3dlYm1EYXRhLT5tX3RyYWNrLT5jb2RlY0RlbGF5KCkudmFsdWVfb3IoTWVkaWFUaW1lKCkpLnRv
RG91YmxlKCkgKiBvdXRGb3JtYXQubVNhbXBsZVJhdGUpLCAwIH07CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgIldpbGwgZHJvcCAldSBsZWFkaW5nIGZyYW1lcyBvdXQgb2YgJWxsdSIsIHBy
aW1lSW5mby5sZWFkaW5nRnJhbWVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgUEFMOjpBdWRpb0Nv
bnZlcnRlclNldFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZvLCBz
aXplb2YocHJpbWVJbmZvKSwgJnByaW1lSW5mbyk7CisgICAgVUludDMyIHByaW1lTWV0aG9kID0g
a0NvbnZlcnRlclByaW1lTWV0aG9kX05vbmU7CisgICAgUEFMOjpBdWRpb0NvbnZlcnRlclNldFBy
b3BlcnR5KGNvbnZlcnRlciwga0F1ZGlvQ29udmVydGVyUHJpbWVNZXRob2QsIHNpemVvZihwcmlt
ZU1ldGhvZCksICZwcmltZU1ldGhvZCk7CisKICAgICBBdWRpb0J1ZmZlckxpc3RIb2xkZXIgZGVj
b2RlZEJ1ZmZlckxpc3QoaW5Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUpOwogICAgIGlmICghZGVj
b2RlZEJ1ZmZlckxpc3QpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJV
bmFibGUgdG8gY3JlYXRlIGRlY29kZXIiKTsKQEAgLTMxMSw3ICszMzIsOCBAQCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVXZWJNRGF0YShBdWRpb0J1ZmZlckxp
c3QmIGJ1ZmZlckxpcwogCiAgICAgc2l6ZV90IGRlY29kZWRGcmFtZXMgPSAwOwogICAgIE9TU3Rh
dHVzIHN0YXR1czsKLSAgICBmb3IgKGF1dG8mIHNhbXBsZSA6IG1fd2VibURhdGEtPm1fc2FtcGxl
cykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV93ZWJtRGF0YS0+bV9zYW1wbGVzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgIGF1dG8mIHNhbXBsZSA9IG1fd2VibURhdGEtPm1fc2FtcGxl
c1tpXTsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxlLT5z
YW1wbGVCdWZmZXIoKTsKICAgICAgICAgYXV0byBidWZmZXIgPSBQQUw6OkNNU2FtcGxlQnVmZmVy
R2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOwogICAgICAgICBBU1NFUlQoUEFMOjpDTUJsb2Nr
QnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoYnVmZmVyLCAwLCAwKSk7CkBAIC0zMzEsNyArMzUzLDcg
QEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEo
QXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXMKICAgICAgICAgaWYgKGRlc2NyaXB0aW9ucy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIFBhc3N0aHJvdWdoVXNl
ckRhdGEgdXNlckRhdGEgPSB7IGluRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lLCBVSW50MzIoc3Jj
U2l6ZSksIHNyY0RhdGEsIDAsIGRlc2NyaXB0aW9ucyB9OworICAgICAgICBQYXNzdGhyb3VnaFVz
ZXJEYXRhIHVzZXJEYXRhID0geyBpbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSwgVUludDMyKHNy
Y1NpemUpLCBzcmNEYXRhLCBpID09IG1fd2VibURhdGEtPm1fc2FtcGxlcy5zaXplKCkgLSAxLCBk
ZXNjcmlwdGlvbnMsIDAsIHsgfSB9OwogCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGlmIChu
dW1iZXJPZkZyYW1lcyA8IGRlY29kZWRGcmFtZXMpIHsKQEAgLTM1Myw5ICszNzUsMTIgQEAgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURhdGEoQXVkaW9C
dWZmZXJMaXN0JiBidWZmZXJMaXMKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZGVjb2RlZEZyYW1lcyArPSBudW1GcmFtZXM7Ci0gICAgICAg
IH0gd2hpbGUgKHN0YXR1cyAhPSBrTm9Nb3JlRGF0YUVycik7CisgICAgICAgIH0gd2hpbGUgKHN0
YXR1cyAhPSBrTm9Nb3JlRGF0YUVyciAmJiBzdGF0dXMgIT0gbm9FcnIpOwogICAgIH0KLSAgICBy
ZXR1cm4gZGVjb2RlZEZyYW1lczsKKyAgICBzaXplX3QgcGFkZGluZ0ZyYW1lcyA9IG1fd2VibURh
dGEtPm1fdHJhY2stPmRpc2NhcmRQYWRkaW5nKCkudmFsdWVfb3IoTWVkaWFUaW1lKCkpLnRvRG91
YmxlKCkgKiBvdXRGb3JtYXQubVNhbXBsZVJhdGU7CisgICAgaWYgKGRlY29kZWRGcmFtZXMgPiBw
YWRkaW5nRnJhbWVzKQorICAgICAgICByZXR1cm4gZGVjb2RlZEZyYW1lcyAtIHBhZGRpbmdGcmFt
ZXM7CisgICAgcmV0dXJuIDA7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5jcHAKaW5kZXggZGRkY2FjYTdmZTkwMDk5MGI4ODRjNTE0ZWMwMjgxN2M3YWZhMDkyYi4uMmIx
ZGFlYjM2OWE5NDdlZDVlZGU5MjZjYzU0OGUyYTZiY2U4NDk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNr
UHJpdmF0ZVdlYk0uY3BwCkBAIC04Niw2ICs4NiwyNiBAQCBpbnQgQXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjp0cmFja0luZGV4KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorc3RkOjpvcHRpb25h
bDxNZWRpYVRpbWU+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWNEZWxheSgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3RyYWNrLmNvZGVjX2RlbGF5LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICBjb25zdGV4cHIgdWludDMyX3Qga191c19pbl9zZWNvbmRzID0gMTAwMDAw
MDAwMDsKKyAgICByZXR1cm4gTWVkaWFUaW1lKG1fdHJhY2suY29kZWNfZGVsYXkudmFsdWUoKSwg
a191c19pbl9zZWNvbmRzKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnNldERp
c2NhcmRQYWRkaW5nKGNvbnN0IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpCit7CisgICAgbV9k
aXNjYXJkUGFkZGluZyA9IGRpc2NhcmRQYWRkaW5nOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlh
VGltZT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpkaXNjYXJkUGFkZGluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fZGlzY2FyZFBhZGRpbmcuaXNJbnZhbGlkKCkgfHwgbV9kaXNjYXJkUGFkZGluZyA8
IE1lZGlhVGltZSgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX2Rpc2NhcmRQ
YWRkaW5nOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1By
aXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRp
b1RyYWNrUHJpdmF0ZVdlYk0uaAppbmRleCBiM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5MmQx
YzdjNGJiNzQyLi4zYTgyNzFhNjM3ZDFiMTAxZjhiZWRkMzdiOGVhYzViOWNkMzU4YjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNr
UHJpdmF0ZVdlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtNDMsMTAgKzQzLDE0IEBAIHB1YmxpYzoKICAg
ICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHRyYWNrVUlEKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZWZh
dWx0RW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBj
b2RlY0RlbGF5KCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXNjYXJkUGFkZGluZyhjb25zdCBNZWRp
YVRpbWUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gZGlzY2FyZFBhZGRpbmcoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tF
bnRyeSYmKTsKICAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgTWVkaWFUaW1lIG1f
ZGlzY2FyZFBhZGRpbmcgeyBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgfTsKICAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV90cmFja0lEOwogICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOwog
ICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAppbmRleCAwNDM4MTkwYTBkNmE1ZjhmMjFlODE3MWEyYzU0MWJlNGM2ZDNiNDJj
Li5lZWQ2ZTIwMjg5OGM3NDgwYzBlNDljZDU0Y2QzMzkxYWJiYTU0NzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMjY0LDYgKzI2NCw4IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSB7IHJldHVybiAiU291cmNlQnVmZmVyUGFyc2VyV2ViTSI7IH0K
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSBpcyBhZGRl
ZCB0byBDTUZvcm1hdERlc2NyaXB0aW9uLmgKIGNvbnN0ZXhwciBDTVZpZGVvQ29kZWNUeXBlIGtD
TVZpZGVvQ29kZWNUeXBlX1ZQOSB7ICd2cDA5JyB9OwogCitjb25zdGV4cHIgdWludDMyX3Qga191
c19pbl9zZWNvbmRzID0gMTAwMDAwMDAwMDsKKwogc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZh
aWxhYmxlKCkKIHsKICAgICByZXR1cm4gISF3ZWJtOjpzd2FwOwpAQCAtNzc5LDkgKzc4MSwxMCBA
QCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKGNvbnN0IEVsZW1l
bnRNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
Q29kZShFcnJvckNvZGU6OkNvbnRlbnRFbmNyeXB0ZWQpKTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBpZiAobV9pbml0aWFsaXphdGlvblNl
Z21lbnRFbmNvdW50ZXJlZCkgewogICAgICAgICAgICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxs
YmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlv
blNlZ21lbnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdU
Rk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25T
ZWdtZW50KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBtX2luaXRpYWxp
emF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CkBAIC04NDcsNyArODUwLDcgQEAgU3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBFbGVtZW50TWV0YWRhdGEm
IG1ldGFkYXRhLCBjb25zdCBJbmYKICAgICB9CiAKICAgICBhdXRvIHRpbWVjb2RlU2NhbGUgPSBp
bmZvLnRpbWVjb2RlX3NjYWxlLmlzX3ByZXNlbnQoKSA/IGluZm8udGltZWNvZGVfc2NhbGUudmFs
dWUoKSA6IDEwMDAwMDA7Ci0gICAgbV90aW1lc2NhbGUgPSAxMDAwMDAwMDAwIC8gdGltZWNvZGVT
Y2FsZTsKKyAgICBtX3RpbWVzY2FsZSA9IGtfdXNfaW5fc2Vjb25kcyAvIHRpbWVjb2RlU2NhbGU7
CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmR1cmF0aW9uID0gaW5mby5kdXJhdGlvbi5p
c19wcmVzZW50KCkgPyBNZWRpYVRpbWUoaW5mby5kdXJhdGlvbi52YWx1ZSgpLCBtX3RpbWVzY2Fs
ZSkgOiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCk7CiAKICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKQEAgLTEwMjMsOCArMTAyNiwyMSBAQCB3ZWJtOjpTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwQmVnaW4oY29uc3Qgd2VibTo6RWxl
bWVudE1ldGFkYQogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tH
cm91cEVuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCB3ZWJt
OjpCbG9ja0dyb3VwJiBibG9ja0dyb3VwKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGJsb2NrR3JvdXApOwogICAgIElORk9fTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIpOworICAgIGlmIChibG9ja0dyb3VwLmJsb2NrLmlzX3ByZXNlbnQoKSAm
JiBibG9ja0dyb3VwLmRpc2NhcmRfcGFkZGluZy5pc19wcmVzZW50KCkpIHsKKyAgICAgICAgYXV0
byB0cmFja051bWJlciA9IGJsb2NrR3JvdXAuYmxvY2sudmFsdWUoKS50cmFja19udW1iZXI7Cisg
ICAgICAgIGF1dG8qIHRyYWNrRGF0YSA9IHRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHRyYWNrTnVt
YmVyKTsKKyAgICAgICAgaWYgKCF0cmFja0RhdGEpIHsKKyAgICAgICAgICAgIEVSUk9SX0xPR19J
Rl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiSWdub3JpbmcgdW5rbm93biB0cmFjayBudW1iZXIg
IiwgdHJhY2tOdW1iZXIpOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRyYWNrRGF0YS0+dHJhY2soKS50cmFj
a191aWQuaXNfcHJlc2VudCgpICYmIGJsb2NrR3JvdXAuZGlzY2FyZF9wYWRkaW5nLnZhbHVlKCkg
PiAwKSB7CisgICAgICAgICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYWNrSUQgPSB0cmFja0RhdGEtPnRyYWNr
KCkudHJhY2tfdWlkLnZhbHVlKCksIHBhZGRpbmcgPSBNZWRpYVRpbWUoYmxvY2tHcm91cC5kaXNj
YXJkX3BhZGRpbmcudmFsdWUoKSwga191c19pbl9zZWNvbmRzKV0oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAg
ICAgbV9kaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrKHRyYWNrSUQsIHBhZGRpbmcpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7CiB9CiAKQEAgLTEyMTIsNyArMTIyOCw3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBD
TVRpbWUmIHByCiAKICAgICB1aW50NjRfdCBkdXJhdGlvbiA9IDA7CiAgICAgaWYgKHRyYWNrLmRl
ZmF1bHRfZHVyYXRpb24uaXNfcHJlc2VudCgpKQotICAgICAgICBkdXJhdGlvbiA9IHRyYWNrLmRl
ZmF1bHRfZHVyYXRpb24udmFsdWUoKSAqIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlIC8gMTAw
MDAwMDAwMDsKKyAgICAgICAgZHVyYXRpb24gPSB0cmFjay5kZWZhdWx0X2R1cmF0aW9uLnZhbHVl
KCkgKiBwcmVzZW50YXRpb25UaW1lLnRpbWVzY2FsZSAvIGtfdXNfaW5fc2Vjb25kczsKIAogICAg
IENNU2FtcGxlQnVmZmVyUmVmIHJhd1NhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgc2l6ZV90
IGZyYW1lU2l6ZSA9IFBBTDo6Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9jdXJyZW50Qmxv
Y2tCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDkzNDFj
OTVkMjhlMDc5ZjZiYzU3YmRhN2VkZGFkZGNiNTc2NmZiYWIuLjk1Mjk3NmIyNzJmNzExODViYjc4
N2Y1YWEzNDIzYzRmODdkNmM0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAg
LTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVNhbXBsZUFW
Rk9iakM7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBw
dWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKK2NsYXNz
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2
YXRlIHdlYm06OkNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dlYk1Gb3JtYXRSZWFkZXJBdmFpbGFibGUoKTsKICAg
ICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBw
b3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKICAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHdlYm1NSU1FVHlwZXMoKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IGNyZWF0ZShjb25zdCBDb250ZW50VHlw
ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2Vy
V2ViTT4gY3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CiAKICAgICBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNKCk7CiAgICAgflNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKQEAgLTczLDcgKzczLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06OlN0YXR1cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0dXM7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6Oldl
Yk07IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsgfSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6
Tm9uZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKICAg
ICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90
KSBmaW5hbDsKICAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2
NF90KSBmaW5hbDsKQEAgLTgzLDkgKzgzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGZsdXNoUGVu
ZGluZ0F1ZGlvQnVmZmVycygpOwogICAgIHZvaWQgc2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRp
b24oZmxvYXQpOwogICAgIAotICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFdURjo6TG9nZ2VyJiwg
Y29uc3Qgdm9pZCogaWRlbnRpZmllcikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKSBmaW5h
bDsKIAogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCk7Cisg
ICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZCh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmIGRpc2NhcmRQYWRkaW5nKT47Cisg
ICAgdm9pZCBzZXREaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrKERpZFBhcnNlVHJpbW1pbmdE
YXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUGFyc2VUcmltbWlu
Z0RhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KIAogICAgIGVudW0gY2xh
c3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1F
cnJvckNvZGVTdGFydCA9IDIwMDAsCkBAIC0yODcsNiArMjkyLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9n
SWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAgICB1aW50NjRfdCBtX25leHRDaGlsZElkZW50aWZp
ZXIgeyAwIH07CisgICAgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayBtX2RpZFBhcnNlVHJp
bW1pbmdEYXRhQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDJlZGExOTA4NzNmZDgzMmEyOTA1
OGUzN2E1ZWE4OWMwNTI4OWViNC4uYmUwMmRhYTE4MDZhMWE4ZWJmMmZlOTdhZDA3YjdhNmM0N2Y5
Zjk2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA3LTMwICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyODE0MAorICAgICAgICByZGFyOi8vcHJvYmxlbS84MDg4Mzg4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQwCisKKyAgICAgICAgKiB3ZWJhdWRpby9k
ZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1
ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy5odG1sOgorCiAyMDIxLTA3LTI2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1ZGlvXSBBZGQg
d2VibS92b3JiaXMgY29udGFpbmVyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9kZWNvZGUtYXVkaW8tZGF0YS13ZWJtLW9wdXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDQ0YmMwMTA4ZDQ0Y2Q1ZjQ3NDZmNjk5N2U2MGM1ZTQ3MzU2ZmE0ZTQuLjM3YmU5ZTVlOWFl
ZjhiNDNjYTZkYmE5YTA0YWNlNDRmZDBkMGMwY2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2RlY29kZS1hdWRpby1kYXRhLXdlYm0tb3B1cy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVzLWV4cGVjdGVkLnR4
dApAQCAtNCw2ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIFN1Y2Nl
c3NmdWxseSBkZWNvZGVkIGNvbnRlbnQKK1BBU1MgRGVjb2RpbmcgcmV0dXJuZWQgdGhlIHJpZ2h0
IG51bWJlciBvZiBmcmFtZXMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlY29kZS1hdWRp
by1kYXRhLXdlYm0tb3B1cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlv
LWRhdGEtd2VibS1vcHVzLmh0bWwKaW5kZXggNjU3NzI4MDEyNzAwYWYzZDY4MjRlMjA5MDg1ZjRk
Y2VlMzc4YzcwZC4uMGVlMWE3YjM3ZTAwMjczZWE2NzgwNmZhMmZjY2MxNTk2MWVkOTNkOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1vcHVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVjb2RlLWF1ZGlvLWRhdGEtd2VibS1v
cHVzLmh0bWwKQEAgLTEwLDcgKzEwLDcgQEAgZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBkZWNvZGlu
ZyBhbiBvcHVzIHdlYm0gZmlsZSBzdWNjZWVkcyIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CiAKLXZhciBjb250ZXh0ID0gbmV3IHdpbmRvdy5BdWRpb0NvbnRleHQoKTsKK3ZhciBj
b250ZXh0ID0gbmV3IHdpbmRvdy5BdWRpb0NvbnRleHQoeyBzYW1wbGVSYXRlOiA0ODAwMCB9KTsK
IHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiByZXF1ZXN0Lm9wZW4oIkdFVCIs
ICdyZXNvdXJjZXMvbWVkaWEvb3B1cy53ZWJtJywgdHJ1ZSk7CiByZXF1ZXN0LnJlc3BvbnNlVHlw
ZSA9ICJhcnJheWJ1ZmZlciI7CkBAIC0xOCw2ICsxOCwxMSBAQCByZXF1ZXN0LnJlc3BvbnNlVHlw
ZSA9ICJhcnJheWJ1ZmZlciI7CiByZXF1ZXN0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGNv
bnRleHQuZGVjb2RlQXVkaW9EYXRhKHJlcXVlc3QucmVzcG9uc2UsIChidWZmZXIpID0+IHsKICAg
ICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGRlY29kZWQgY29udGVudCIpOworICAgICAg
ICAvLyBGaWxlIGlzIGV4YWN0bHkgMS0wLjAwNjVzIGxvbmcgQCA0ODAwMEh6LCBzbyA0NzY4OCBm
cmFtZXMuCisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoID09PSA0NzY4OCkKKyAgICAgICAgICB0
ZXN0UGFzc2VkKCJEZWNvZGluZyByZXR1cm5lZCB0aGUgcmlnaHQgbnVtYmVyIG9mIGZyYW1lcy4i
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHRlc3RGYWlsZWQoIkRlY29kaW5nIHJldHVybmVk
IHRoZSB3cm9uZyBudW1iZXIgb2YgZnJhbWVzOiAiICsgYnVmZmVyLmxlbmd0aCk7CiAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwogICAgICAgfSwgKCkgPT4gewogICAgICAgICB0ZXN0RmFpbGVkKCJG
YWlsZWQgdG8gZGVjb2RlIGZpbGUiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>