<?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>226219</bug_id>
          
          <creation_ts>2021-05-25 05:51:00 -0700</creation_ts>
          <short_desc>Support H264 profiles in MediaRecorder</short_desc>
          <delta_ts>2021-05-27 03:19:27 -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>WebRTC</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763485</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-25 05:51:00 -0700</bug_when>
    <thetext>Support H264 profiles in MediaRecorder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763486</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-25 05:51:14 -0700</bug_when>
    <thetext>&lt;rdar://78027944&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763488</commentid>
    <comment_count>2</comment_count>
      <attachid>429649</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-25 05:56:42 -0700</bug_when>
    <thetext>Created attachment 429649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763502</commentid>
    <comment_count>3</comment_count>
      <attachid>429652</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-25 07:08:10 -0700</bug_when>
    <thetext>Created attachment 429652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763534</commentid>
    <comment_count>4</comment_count>
      <attachid>429652</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-25 09:21:13 -0700</bug_when>
    <thetext>Comment on attachment 429652
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        By default, use baseline profile, which is not VideoToolbox profile but has wider decoding support.

I&apos;m not sure what you mean by &quot;which is not VideoToolbox profile but has wider decoding support&quot;, it sounds like you are saying that VideoToolbox doesn&apos;t support baseline.

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:52
&gt; +        if (startsWithLettersIgnoringASCIICase(codec, &quot;avc1.&quot;) &amp;&amp; codec.length() &gt;= 11) {
&gt; +            if (codec[5] == &apos;6&apos; &amp;&amp; codec[6] == &apos;4&apos;)
&gt; +                profile = Profile::High;
&gt; +            else if (codec[5] == &apos;4&apos; &amp;&amp; (codec[6] == &apos;d&apos; || codec[6] == &apos;D&apos;))
&gt; +                profile = Profile::Main;
&gt; +            break;

Do we want to use Baseline if the configuration is not supported or invalid? It is probably worth logging in that case whatever we do.

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:165
&gt; +    RELEASE_LOG_ERROR_IF(error, MediaStream, &quot;VideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_ProfileLevel failed with %d&quot;, error);

Probably with logging what profile failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763596</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-25 11:57:58 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #4)
&gt; Comment on attachment 429652 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429652&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        By default, use baseline profile, which is not VideoToolbox profile but has wider decoding support.
&gt; 
&gt; I&apos;m not sure what you mean by &quot;which is not VideoToolbox profile but has
&gt; wider decoding support&quot;, it sounds like you are saying that VideoToolbox
&gt; doesn&apos;t support baseline.

It is not VideoToolbox default apparently.

&gt; 
&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:52
&gt; &gt; +        if (startsWithLettersIgnoringASCIICase(codec, &quot;avc1.&quot;) &amp;&amp; codec.length() &gt;= 11) {
&gt; &gt; +            if (codec[5] == &apos;6&apos; &amp;&amp; codec[6] == &apos;4&apos;)
&gt; &gt; +                profile = Profile::High;
&gt; &gt; +            else if (codec[5] == &apos;4&apos; &amp;&amp; (codec[6] == &apos;d&apos; || codec[6] == &apos;D&apos;))
&gt; &gt; +                profile = Profile::Main;
&gt; &gt; +            break;
&gt; 
&gt; Do we want to use Baseline if the configuration is not supported or invalid?
&gt; It is probably worth logging in that case whatever we do.

I&apos;ll check whether we have cases where baseline, main or high are not supported.
If it fails, then we use the OS default, which is not too bad.

&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:165
&gt; &gt; +    RELEASE_LOG_ERROR_IF(error, MediaStream, &quot;VideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_ProfileLevel failed with %d&quot;, error);
&gt; 
&gt; Probably with logging what profile failed.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763605</commentid>
    <comment_count>6</comment_count>
      <attachid>429652</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-25 12:11:51 -0700</bug_when>
    <thetext>Comment on attachment 429652
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:52
&gt;&gt;&gt; +            break;
&gt;&gt; 
&gt;&gt; Do we want to use Baseline if the configuration is not supported or invalid? It is probably worth logging in that case whatever we do.
&gt; 
&gt; I&apos;ll check whether we have cases where baseline, main or high are not supported.
&gt; If it fails, then we use the OS default, which is not too bad.

I meant should we use baseline if the specified profile isn&apos;t supported or is invalid but now that I look, the spec says we should throw if we don&apos;t support the MIME type:

3. If invoking `is type supported` with options’ mimeType member as its argument returns false, throw a NotSupportedError DOMException and abort these steps.

so this isn&apos;t correct.

This means the logic should also be used by MediaRecorderProvider::isSupported so a page can find out what we support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764242</commentid>
    <comment_count>7</comment_count>
      <attachid>429853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-27 00:37:06 -0700</bug_when>
    <thetext>Created attachment 429853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764262</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-27 02:39:15 -0700</bug_when>
    <thetext>I changed the patch to use baseline as a default if mime type profile does not stick.

&gt; This means the logic should also be used by
&gt; MediaRecorderProvider::isSupported so a page can find out what we support.

Right but this logic is in GPUProcess so we do not have it synchronously.
In any case, I believe baseline is supported everywhere.
If other profiles are not supported, we will use baseline which is not too bad.
We can try to improve feature detection as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764281</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-27 03:19:26 -0700</bug_when>
    <thetext>Committed r278158 (238202@main): &lt;https://commits.webkit.org/238202@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429853.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429649</attachid>
            <date>2021-05-25 05:56:42 -0700</date>
            <delta_ts>2021-05-25 07:08:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226219-20210525145640.patch</filename>
            <type>text/plain</type>
            <size>15416</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uYjJjZWNmN2MyNzNhYTFkZTUwOWYwY2I2NTE5ODI5
ZWEwYzA0N2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA1LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEgyNjQgcHJv
ZmlsZXMgaW4gTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2MjE5CisgICAgICAgIDxyZGFyOi8vNzgwMjc5NDQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1pbWVUeXBlIG9w
dGlvbiBnaXZlbiBpbiBNZWRpYVJlY29yZGVyIG9wdGlvbnMgdG8gZGV0ZWN0IHdoaWNoIEgyNjQg
cHJvZmlsZSB0byB1c2UuCisgICAgICAgIEltcGxlbWVudCB0aGlzIGJ5IHBhcnNpbmcgdGhlIG1p
bWUgdHlwZSBjb2RlYyBwYXJhbWV0ZXIgYW5kIHVzZSB0aGUgYXZjMS5XWFlaIHN0cmluZyB0byBj
b21wdXRlIHRoZSBwcm9maWxlLgorICAgICAgICBCeSBkZWZhdWx0LCB1c2UgYmFzZWxpbmUgcHJv
ZmlsZSwgd2hpY2ggaXMgbm90IFZpZGVvVG9vbGJveCBwcm9maWxlIGJ1dCBoYXMgd2lkZXIgZGVj
b2Rpbmcgc3VwcG9ydC4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXItdmlkZW8taDI2NC1wcm9maWxlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnNldE9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnZ0UHJvZmlsZUxldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6
CisKIDIwMjEtMDUtMjUgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYmFzaWMgPGRpYWxvZz4gZWxlbWVudCBVQSBzdHlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5jcHAKaW5kZXggNjk5ZmNmMzU5NjVkMWVjZTg1YjVkZDMzN2VkNmJkZWZlZjIzMGUwMS4uNmE1
YzRjYjM0NWY5YzA2OTlmNmY2NTVjOWU0MGMxMDlmNjQ3NDhiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJvdmlkZXI6
OmlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKICAgICBmb3IgKGF1dG8mIGl0ZW0g
OiBtaW1lVHlwZS5jb2RlY3MoKSkgewogICAgICAgICBhdXRvIGNvZGVjID0gU3RyaW5nVmlldyhp
dGVtKS5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzSFRNTFNwYWNl
PFVDaGFyPik7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZnVydGhlciB2YWxpZGF0ZSBw
YXJhbXRlcnMuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZnVydGhlciB2YWxpZGF0ZSBw
YXJhbWV0ZXJzLgogICAgICAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29kZWMsICJhdmMxIikgJiYgIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y29kZWMsICJtcDRhIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAy
ZTM4N2ViZjcyYmRiY2Q3ZWFlYzc1ODVkMjJhNGYxZjQ0OGVhNDA3Li4yMWI5ODUwYWVhNDI1MjZk
YmY1YjY2YTA4NWU4NTk5Yjc2NmMxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtODUsOCArODUsNyBAQCBwcml2YXRlOgog
ICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8pOwogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwotICAgIHZv
aWQgc2V0T3B0aW9ucyhjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKTsKKyAgICBi
b29sIGluaXRpYWxpemUoY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwg
Q01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CiAgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1
ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IDY0ZDc4Yjc5ZDViODE1YzhkODM1YzUzYTYyMTIwNTZjNDg0ZjgxZjcuLjFkNDc1
NTNkZDI2NDdjNTY4ZmRkZjk1OTllYzFhYTIwZmU0MzBiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTk4LDkgKzk4LDgg
QEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBib29s
IGhhc1ZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKGhhc0F1ZGlvLCBoYXNWaWRlbykpOwotICAgIGlmICghd3JpdGVyLT5pbml0aWFsaXplKCkp
CisgICAgaWYgKCF3cml0ZXItPmluaXRpYWxpemUob3B0aW9ucykpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHdyaXRlci0+c2V0T3B0aW9ucyhvcHRpb25zKTsKICAgICByZXR1cm4gd3Jp
dGVyOwogfQogCkBAIC0xMzEsNyArMTMwLDcgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgY2xlYXIoKTsKIH0KIAotYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCitib29sIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpAQCAtMTQ5LDIxICsxNDgsMTggQEAgYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fYXVkaW9D
b21wcmVzc29yID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoY29tcHJlc3Nl
ZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOwogICAgICAgICBpZiAoIW1fYXVkaW9D
b21wcmVzc29yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAob3B0aW9u
cy5hdWRpb0JpdHNQZXJTZWNvbmQpCisgICAgICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+c2V0
Qml0c1BlclNlY29uZCgqb3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQpOwogICAgIH0KICAgICBp
ZiAobV9oYXNWaWRlbykgewotICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXByZXNz
ZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgbV92aWRlb0NvbXBy
ZXNzb3IgPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShvcHRpb25zLm1pbWVU
eXBlLCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CiAgICAgICAg
IGlmICghbV92aWRlb0NvbXByZXNzb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCkKKyAgICAgICAgICAgIG1fdmlkZW9D
b21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCk7
CiAgICAgfQotICAgIHJldHVybiB0cnVlOwotfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzZXRPcHRpb25zKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0
aW9ucykKLXsKLSAgICBpZiAob3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQgJiYgbV9hdWRpb0Nv
bXByZXNzb3IpCi0gICAgICAgIG1fYXVkaW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpv
cHRpb25zLmF1ZGlvQml0c1BlclNlY29uZCk7Ci0gICAgaWYgKG9wdGlvbnMudmlkZW9CaXRzUGVy
U2Vjb25kICYmIG1fdmlkZW9Db21wcmVzc29yKQotICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+
c2V0Qml0c1BlclNlY29uZCgqb3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQpOworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA5Mjg4N2ZmOWNjMjI2MmY1ZWY0ZDdjNzlmNWNl
ZDUxYmU5MTBkZmVhLi5lYmM2OTM4NTU4Mjc5Mzg4Yzk3ODMzMTM3YzU1OTljODIzNTY5NDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRl
KENNVmlkZW9Db2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKFN0cmluZyBtaW1lVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogICAgIH5WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IoKTsKIAogICAgIHZvaWQgc2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCk7CkBA
IC01MCwxMiArNTAsMTQgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGJpdFJhdGUoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01W
aWRlb0NvZGVjVHlwZSk7CisgICAgZW51bSBjbGFzcyBQcm9maWxlIHsgQmFzZWxpbmUsIE1haW4s
IEhpZ2ggfTsKKyAgICBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlw
ZSwgUHJvZmlsZSk7CiAKICAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJD
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogCiAgICAgdm9pZCBwcm9jZXNzU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Np
b24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKKyAgICBDRlN0cmluZ1JlZiB2dFByb2Zp
bGVMZXZlbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxi
YWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01T
YW1wbGVCdWZmZXJSZWYpOwogCkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQg
bV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsKICAgICB1bnNpZ25lZCBtX2V4
cGVjdGVkRnJhbWVSYXRlIHsgMzAgfTsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRC
aXRSYXRlOworICAgIFByb2ZpbGUgbV9wcm9maWxlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAyMDAxODViYmNiNzY1NDA2
M2JhMDFkMTE4OGZlNzk0ZjZhOWUzODc3Li45YWE0ZmQ2ZDEzYTY2MDRjYjg4MjQ5ZDFhNGFkZmEz
ODA2M2I2YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKIAorI2ltcG9ydCAiQ29udGVudFR5cGUuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgpAQCAtMzksMTcgKzQwLDI5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01W
aWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQorc3RkOjp1bmlxdWVfcHRyPFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVh
dGUoU3RyaW5nIG1pbWVUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja09iamVjdCkKIHsKLSAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKG91dHB1dENvZGVjVHlwZSkpOworICAgIGF1dG8gcHJvZmlsZSA9IFByb2Zp
bGU6OkJhc2VsaW5lOworICAgIGZvciAoYXV0byBjb2RlYyA6IENvbnRlbnRUeXBlKG1pbWVUeXBl
KS5jb2RlY3MoKSkgeworICAgICAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb2RlYywgImF2YzEuIikgJiYgY29kZWMubGVuZ3RoKCkgPj0gMTEpIHsKKyAgICAgICAg
ICAgIGlmIChjb2RlY1s1XSA9PSAnNicgJiYgY29kZWNbNl0gPT0gJzQnKQorICAgICAgICAgICAg
ICAgIHByb2ZpbGUgPSBQcm9maWxlOjpIaWdoOworICAgICAgICAgICAgZWxzZSBpZiAoY29kZWNb
NV0gPT0gJzQnICYmIChjb2RlY1s2XSA9PSAnZCcgfHwgY29kZWNbNl0gPT0gJ0QnKSkKKyAgICAg
ICAgICAgICAgICBwcm9maWxlID0gUHJvZmlsZTo6TWFpbjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRy
PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcihrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBwcm9maWxlKSk7CiAgICAgaWYgKCFjb21wcmVz
c29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJldHVybiBjb21wcmVzc29yOwogfQogCi1WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBl
IG91dHB1dENvZGVjVHlwZSkKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBQcm9m
aWxlIHByb2ZpbGUpCiAgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBXb3JrUXVldWU6OmNy
ZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIpIH0KICAgICAsIG1f
b3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KKyAgICAsIG1fcHJvZmlsZSB7IHBy
b2ZpbGUgfQogewogfQogCkBAIC0xMTMsNiArMTI2LDE4IEBAIHN0YXRpYyBpbmxpbmUgT1NTdGF0
dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVzc2lvblNlc3Npb25SZWYg
dnRTCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAorQ0ZTdHJpbmdSZWYgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp2dFByb2ZpbGVMZXZlbCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3By
b2ZpbGUpIHsKKyAgICBjYXNlIFByb2ZpbGU6OkJhc2VsaW5lOgorICAgICAgICByZXR1cm4ga1ZU
UHJvZmlsZUxldmVsX0gyNjRfQmFzZWxpbmVfQXV0b0xldmVsOworICAgIGNhc2UgUHJvZmlsZTo6
SGlnaDoKKyAgICAgICAgcmV0dXJuIGtWVFByb2ZpbGVMZXZlbF9IMjY0X0hpZ2hfQXV0b0xldmVs
OworICAgIGNhc2UgUHJvZmlsZTo6TWFpbjoKKyAgICAgICAgcmV0dXJuIGtWVFByb2ZpbGVMZXZl
bF9IMjY0X01haW5fQXV0b0xldmVsOworICAgIH0KK30KKwogYm9vbCBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogewogICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVu
c2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2Ny
aXB0aW9uKTsKQEAgLTEzNiw2ICsxNjEsOCBAQCBib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpbwogICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
ICAgICBlcnJvciA9IHNldENvbXByZXNzaW9uU2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdl
dCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBtX2V4cGVj
dGVkRnJhbWVSYXRlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZU
Q29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdl
dCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1Byb2ZpbGVMZXZlbCwgdnRQcm9maWxlTGV2
ZWwoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfUHJvZmlsZUxldmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogCiAg
ICAgaWYgKG1fb3V0cHV0Qml0UmF0ZSkgewogICAgICAgICBlcnJvciA9IHNldENvbXByZXNzaW9u
U2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X0F2ZXJhZ2VCaXRSYXRlLCAqbV9vdXRwdXRCaXRSYXRlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NTdhMjYzMzEy
MDc1YzNiMzZiYzgzMTE1NjQyZjI2M2M3YjE0OTMxLi5mZDcyNDI4YmJjOTE3ODQ3YzkxOGZmYzcw
MDk4NDhiNjkyNGMzNTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjUgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSDI2NCBwcm9m
aWxlcyBpbiBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYyMTkKKyAgICAgICAgPHJkYXI6Ly83ODAyNzk0ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZp
ZGVvLWgyNjQtcHJvZmlsZXMuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMjUgIFRpbSBOZ3V5ZW4g
IDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFzaWMgPGRpYWxvZz4gZWxlbWVudCBV
QSBzdHlsZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2Zp
bGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGE0ZTAwZTJjNTQ4YjRiNmE0NGRkZDZjYTZm
OTQxOTk1OWRlYWU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWgyNjQtcHJvZmlsZXMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFZhbGlkYXRlIEgyNjQgYmFzZWxpbmUgYXMgZGVmYXVs
dAorUEFTUyBWYWxpZGF0ZSBIMjY0IGJhc2VsaW5lIHN1cHBvcnQKK1BBU1MgVmFsaWRhdGUgSDI2
NCBtYWluIHN1cHBvcnQKK1BBU1MgVmFsaWRhdGUgSDI2NCBoaWdoIHN1cHBvcnQKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZp
ZGVvLWgyNjQtcHJvZmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEw
ODA4NjJlNmMxZjBkZWU4ZDhlNzg0OWQxYTNiMTBiNGRkMTYxYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1o
MjY0LXByb2ZpbGVzLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDx0aXRsZT5NZWRpYVJlY29yZGVyIEgyNjQgcHJvZmlsZTwvdGl0bGU+
CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2xldCBzdHJlYW07Cithc3luYyBmdW5jdGlv
biByZWNvcmQobWltZVR5cGUpCit7CisgICAgaWYgKCFzdHJlYW0pCisgICAgICAgIHN0cmVhbSA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW8gOiB7IHdp
ZHRoIDogNjQwIH0gfSk7CisKKyAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVy
KHN0cmVhbSwgeyBtaW1lVHlwZSA6IG1pbWVUeXBlIH0pOworICAgIGNvbnN0IHByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlY29yZGVyLm9uZGF0
YWF2YWlsYWJsZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSk7CisgICAgICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVqZWN0KCJkYXRhdmFpbGFibGUgZXZlbnQgdGltZWQgb3V0IiksIDE1MDAwKTsKKyAg
ICB9KTsKKyAgICByZWNvcmRlci5zdGFydCgpOworICAgIHNldFRpbWVvdXQoKCkgPT4gcmVjb3Jk
ZXIuc3RvcCgpLCAxMDAwKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworZnVuY3Rpb24gcGFy
c2VBVlZDQm94KGRhdGEpCit7CisgICAgY29uc3QgbGVuZ3RoQWZ0ZXJBVkMxID0gMjAwOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggLSBsZW5ndGhBZnRlckFWQzEgLSA0OyAr
K2kpIHsKKyAgICAgICAgaWYgKGRhdGFbaV0gPT09IDk3ICYmIGRhdGFbaSArIDFdID09PSAxMTgg
JiYgZGF0YVtpICsgMl0gPT09IDk5ICYmIGRhdGFbaSArIDNdID09PSA0OSkKKyAgICAgICAgICAg
IHJldHVybiBkYXRhLnNsaWNlKGkgKyA0LCBpICsgNCArIGxlbmd0aEFmdGVyQVZDMSk7CisgICAg
fQorICAgIHJldHVybiBuZXcgVWludDhBcnJheSgpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMg
KHQpID0+IHsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVjb3JkKCJ2aWRlby9tcDQiKTsKKyAg
ICBjb25zdCBjb250ZW50ID0gcGFyc2VBVlZDQm94KG5ldyBVaW50OEFycmF5KGF3YWl0IGRhdGEu
YXJyYXlCdWZmZXIoKSkpLmpvaW4oIiwiKTsKKyAgICBhc3NlcnRfdHJ1ZShjb250ZW50LmluY2x1
ZGVzKCIxLDY2LDAiKSk7Cit9LCAiVmFsaWRhdGUgSDI2NCBiYXNlbGluZSBhcyBkZWZhdWx0Iik7
CisKK3Byb21pc2VfdGVzdChhc3luYyAodCkgPT4geworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBy
ZWNvcmQoInZpZGVvL21wNDtjb2RlY3M9YXZjMS40MkUwMUYiKTsKKyAgICBjb25zdCBjb250ZW50
ID0gcGFyc2VBVlZDQm94KG5ldyBVaW50OEFycmF5KGF3YWl0IGRhdGEuYXJyYXlCdWZmZXIoKSkp
LmpvaW4oIiwiKTsKKyAgICBhc3NlcnRfdHJ1ZShjb250ZW50LmluY2x1ZGVzKCIxLDY2LDAiKSk7
Cit9LCAiVmFsaWRhdGUgSDI2NCBiYXNlbGluZSBzdXBwb3J0Iik7CisKK3Byb21pc2VfdGVzdChh
c3luYyAodCkgPT4geworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWNvcmQoInZpZGVvL21wNDtj
b2RlY3M9YXZjMS40RDAwMUYiKTsKKyAgICBjb25zdCBjb250ZW50ID0gcGFyc2VBVlZDQm94KG5l
dyBVaW50OEFycmF5KGF3YWl0IGRhdGEuYXJyYXlCdWZmZXIoKSkpLmpvaW4oIiwiKTsKKyAgICBh
c3NlcnRfdHJ1ZShjb250ZW50LmluY2x1ZGVzKCIxLDc3LDAiKSk7Cit9LCAiVmFsaWRhdGUgSDI2
NCBtYWluIHN1cHBvcnQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgY29u
c3QgZGF0YSA9IGF3YWl0IHJlY29yZCgidmlkZW8vbXA0O2NvZGVjcz1hdmMxLjY0MDAyOSIpOwor
ICAgIGNvbnN0IGNvbnRlbnQgPSBwYXJzZUFWVkNCb3gobmV3IFVpbnQ4QXJyYXkoYXdhaXQgZGF0
YS5hcnJheUJ1ZmZlcigpKSkuam9pbigiLCIpOworICAgIGFzc2VydF90cnVlKGNvbnRlbnQuaW5j
bHVkZXMoIjEsMTAwLDAiKSk7Cit9LCAiVmFsaWRhdGUgSDI2NCBoaWdoIHN1cHBvcnQiKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429652</attachid>
            <date>2021-05-25 07:08:10 -0700</date>
            <delta_ts>2021-05-27 00:37:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226219-20210525160808.patch</filename>
            <type>text/plain</type>
            <size>15540</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uYjJjZWNmN2MyNzNhYTFkZTUwOWYwY2I2NTE5ODI5
ZWEwYzA0N2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA1LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEgyNjQgcHJv
ZmlsZXMgaW4gTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2MjE5CisgICAgICAgIDxyZGFyOi8vNzgwMjc5NDQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1pbWVUeXBlIG9w
dGlvbiBnaXZlbiBpbiBNZWRpYVJlY29yZGVyIG9wdGlvbnMgdG8gZGV0ZWN0IHdoaWNoIEgyNjQg
cHJvZmlsZSB0byB1c2UuCisgICAgICAgIEltcGxlbWVudCB0aGlzIGJ5IHBhcnNpbmcgdGhlIG1p
bWUgdHlwZSBjb2RlYyBwYXJhbWV0ZXIgYW5kIHVzZSB0aGUgYXZjMS5XWFlaIHN0cmluZyB0byBj
b21wdXRlIHRoZSBwcm9maWxlLgorICAgICAgICBCeSBkZWZhdWx0LCB1c2UgYmFzZWxpbmUgcHJv
ZmlsZSwgd2hpY2ggaXMgbm90IFZpZGVvVG9vbGJveCBwcm9maWxlIGJ1dCBoYXMgd2lkZXIgZGVj
b2Rpbmcgc3VwcG9ydC4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXItdmlkZW8taDI2NC1wcm9maWxlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnNldE9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnZ0UHJvZmlsZUxldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6
CisKIDIwMjEtMDUtMjUgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYmFzaWMgPGRpYWxvZz4gZWxlbWVudCBVQSBzdHlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5jcHAKaW5kZXggNjk5ZmNmMzU5NjVkMWVjZTg1YjVkZDMzN2VkNmJkZWZlZjIzMGUwMS4uNmE1
YzRjYjM0NWY5YzA2OTlmNmY2NTVjOWU0MGMxMDlmNjQ3NDhiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJvdmlkZXI6
OmlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKICAgICBmb3IgKGF1dG8mIGl0ZW0g
OiBtaW1lVHlwZS5jb2RlY3MoKSkgewogICAgICAgICBhdXRvIGNvZGVjID0gU3RyaW5nVmlldyhp
dGVtKS5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzSFRNTFNwYWNl
PFVDaGFyPik7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZnVydGhlciB2YWxpZGF0ZSBw
YXJhbXRlcnMuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZnVydGhlciB2YWxpZGF0ZSBw
YXJhbWV0ZXJzLgogICAgICAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29kZWMsICJhdmMxIikgJiYgIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y29kZWMsICJtcDRhIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAy
ZTM4N2ViZjcyYmRiY2Q3ZWFlYzc1ODVkMjJhNGYxZjQ0OGVhNDA3Li4yMWI5ODUwYWVhNDI1MjZk
YmY1YjY2YTA4NWU4NTk5Yjc2NmMxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtODUsOCArODUsNyBAQCBwcml2YXRlOgog
ICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8pOwogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwotICAgIHZv
aWQgc2V0T3B0aW9ucyhjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKTsKKyAgICBi
b29sIGluaXRpYWxpemUoY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwg
Q01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CiAgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1
ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IDY0ZDc4Yjc5ZDViODE1YzhkODM1YzUzYTYyMTIwNTZjNDg0ZjgxZjcuLjFkNDc1
NTNkZDI2NDdjNTY4ZmRkZjk1OTllYzFhYTIwZmU0MzBiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTk4LDkgKzk4LDgg
QEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBib29s
IGhhc1ZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKGhhc0F1ZGlvLCBoYXNWaWRlbykpOwotICAgIGlmICghd3JpdGVyLT5pbml0aWFsaXplKCkp
CisgICAgaWYgKCF3cml0ZXItPmluaXRpYWxpemUob3B0aW9ucykpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHdyaXRlci0+c2V0T3B0aW9ucyhvcHRpb25zKTsKICAgICByZXR1cm4gd3Jp
dGVyOwogfQogCkBAIC0xMzEsNyArMTMwLDcgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgY2xlYXIoKTsKIH0KIAotYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCitib29sIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpAQCAtMTQ5LDIxICsxNDgsMTggQEAgYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fYXVkaW9D
b21wcmVzc29yID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoY29tcHJlc3Nl
ZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOwogICAgICAgICBpZiAoIW1fYXVkaW9D
b21wcmVzc29yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAob3B0aW9u
cy5hdWRpb0JpdHNQZXJTZWNvbmQpCisgICAgICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+c2V0
Qml0c1BlclNlY29uZCgqb3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQpOwogICAgIH0KICAgICBp
ZiAobV9oYXNWaWRlbykgewotICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXByZXNz
ZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgbV92aWRlb0NvbXBy
ZXNzb3IgPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShvcHRpb25zLm1pbWVU
eXBlLCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CiAgICAgICAg
IGlmICghbV92aWRlb0NvbXByZXNzb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCkKKyAgICAgICAgICAgIG1fdmlkZW9D
b21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZCk7
CiAgICAgfQotICAgIHJldHVybiB0cnVlOwotfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzZXRPcHRpb25zKGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0
aW9ucykKLXsKLSAgICBpZiAob3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQgJiYgbV9hdWRpb0Nv
bXByZXNzb3IpCi0gICAgICAgIG1fYXVkaW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpv
cHRpb25zLmF1ZGlvQml0c1BlclNlY29uZCk7Ci0gICAgaWYgKG9wdGlvbnMudmlkZW9CaXRzUGVy
U2Vjb25kICYmIG1fdmlkZW9Db21wcmVzc29yKQotICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+
c2V0Qml0c1BlclNlY29uZCgqb3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQpOworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA5Mjg4N2ZmOWNjMjI2MmY1ZWY0ZDdjNzlmNWNl
ZDUxYmU5MTBkZmVhLi5lYmM2OTM4NTU4Mjc5Mzg4Yzk3ODMzMTM3YzU1OTljODIzNTY5NDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRl
KENNVmlkZW9Db2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKFN0cmluZyBtaW1lVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogICAgIH5WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IoKTsKIAogICAgIHZvaWQgc2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCk7CkBA
IC01MCwxMiArNTAsMTQgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGJpdFJhdGUoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01W
aWRlb0NvZGVjVHlwZSk7CisgICAgZW51bSBjbGFzcyBQcm9maWxlIHsgQmFzZWxpbmUsIE1haW4s
IEhpZ2ggfTsKKyAgICBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlw
ZSwgUHJvZmlsZSk7CiAKICAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJD
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwogCiAgICAgdm9pZCBwcm9jZXNzU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Np
b24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKKyAgICBDRlN0cmluZ1JlZiB2dFByb2Zp
bGVMZXZlbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxi
YWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01T
YW1wbGVCdWZmZXJSZWYpOwogCkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQg
bV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsKICAgICB1bnNpZ25lZCBtX2V4
cGVjdGVkRnJhbWVSYXRlIHsgMzAgfTsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRC
aXRSYXRlOworICAgIFByb2ZpbGUgbV9wcm9maWxlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAyMDAxODViYmNiNzY1NDA2
M2JhMDFkMTE4OGZlNzk0ZjZhOWUzODc3Li45YWE0ZmQ2ZDEzYTY2MDRjYjg4MjQ5ZDFhNGFkZmEz
ODA2M2I2YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKIAorI2ltcG9ydCAiQ29udGVudFR5cGUuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgpAQCAtMzksMTcgKzQwLDI5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01W
aWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQorc3RkOjp1bmlxdWVfcHRyPFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVh
dGUoU3RyaW5nIG1pbWVUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja09iamVjdCkKIHsKLSAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKG91dHB1dENvZGVjVHlwZSkpOworICAgIGF1dG8gcHJvZmlsZSA9IFByb2Zp
bGU6OkJhc2VsaW5lOworICAgIGZvciAoYXV0byBjb2RlYyA6IENvbnRlbnRUeXBlKG1pbWVUeXBl
KS5jb2RlY3MoKSkgeworICAgICAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb2RlYywgImF2YzEuIikgJiYgY29kZWMubGVuZ3RoKCkgPj0gMTEpIHsKKyAgICAgICAg
ICAgIGlmIChjb2RlY1s1XSA9PSAnNicgJiYgY29kZWNbNl0gPT0gJzQnKQorICAgICAgICAgICAg
ICAgIHByb2ZpbGUgPSBQcm9maWxlOjpIaWdoOworICAgICAgICAgICAgZWxzZSBpZiAoY29kZWNb
NV0gPT0gJzQnICYmIChjb2RlY1s2XSA9PSAnZCcgfHwgY29kZWNbNl0gPT0gJ0QnKSkKKyAgICAg
ICAgICAgICAgICBwcm9maWxlID0gUHJvZmlsZTo6TWFpbjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRy
PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcihrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBwcm9maWxlKSk7CiAgICAgaWYgKCFjb21wcmVz
c29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJldHVybiBjb21wcmVzc29yOwogfQogCi1WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBl
IG91dHB1dENvZGVjVHlwZSkKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBQcm9m
aWxlIHByb2ZpbGUpCiAgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBXb3JrUXVldWU6OmNy
ZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIpIH0KICAgICAsIG1f
b3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KKyAgICAsIG1fcHJvZmlsZSB7IHBy
b2ZpbGUgfQogewogfQogCkBAIC0xMTMsNiArMTI2LDE4IEBAIHN0YXRpYyBpbmxpbmUgT1NTdGF0
dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVzc2lvblNlc3Npb25SZWYg
dnRTCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAorQ0ZTdHJpbmdSZWYgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp2dFByb2ZpbGVMZXZlbCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3By
b2ZpbGUpIHsKKyAgICBjYXNlIFByb2ZpbGU6OkJhc2VsaW5lOgorICAgICAgICByZXR1cm4ga1ZU
UHJvZmlsZUxldmVsX0gyNjRfQmFzZWxpbmVfQXV0b0xldmVsOworICAgIGNhc2UgUHJvZmlsZTo6
SGlnaDoKKyAgICAgICAgcmV0dXJuIGtWVFByb2ZpbGVMZXZlbF9IMjY0X0hpZ2hfQXV0b0xldmVs
OworICAgIGNhc2UgUHJvZmlsZTo6TWFpbjoKKyAgICAgICAgcmV0dXJuIGtWVFByb2ZpbGVMZXZl
bF9IMjY0X01haW5fQXV0b0xldmVsOworICAgIH0KK30KKwogYm9vbCBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogewogICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVu
c2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2Ny
aXB0aW9uKTsKQEAgLTEzNiw2ICsxNjEsOCBAQCBib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpbwogICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
ICAgICBlcnJvciA9IHNldENvbXByZXNzaW9uU2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdl
dCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBtX2V4cGVj
dGVkRnJhbWVSYXRlKTsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZU
Q29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdl
dCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1Byb2ZpbGVMZXZlbCwgdnRQcm9maWxlTGV2
ZWwoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfUHJvZmlsZUxldmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogCiAg
ICAgaWYgKG1fb3V0cHV0Qml0UmF0ZSkgewogICAgICAgICBlcnJvciA9IHNldENvbXByZXNzaW9u
U2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X0F2ZXJhZ2VCaXRSYXRlLCAqbV9vdXRwdXRCaXRSYXRlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NTdhMjYzMzEy
MDc1YzNiMzZiYzgzMTE1NjQyZjI2M2M3YjE0OTMxLi5mZDcyNDI4YmJjOTE3ODQ3YzkxOGZmYzcw
MDk4NDhiNjkyNGMzNTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjUgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSDI2NCBwcm9m
aWxlcyBpbiBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYyMTkKKyAgICAgICAgPHJkYXI6Ly83ODAyNzk0ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZp
ZGVvLWgyNjQtcHJvZmlsZXMuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMjUgIFRpbSBOZ3V5ZW4g
IDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFzaWMgPGRpYWxvZz4gZWxlbWVudCBV
QSBzdHlsZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2Zp
bGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGE0ZTAwZTJjNTQ4YjRiNmE0NGRkZDZjYTZm
OTQxOTk1OWRlYWU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWgyNjQtcHJvZmlsZXMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFZhbGlkYXRlIEgyNjQgYmFzZWxpbmUgYXMgZGVmYXVs
dAorUEFTUyBWYWxpZGF0ZSBIMjY0IGJhc2VsaW5lIHN1cHBvcnQKK1BBU1MgVmFsaWRhdGUgSDI2
NCBtYWluIHN1cHBvcnQKK1BBU1MgVmFsaWRhdGUgSDI2NCBoaWdoIHN1cHBvcnQKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZp
ZGVvLWgyNjQtcHJvZmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5
ZjI3M2E1NjY4NjI2NDY3YmUyM2M4ZWE1NzJjOGM5NjFmZDAzYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1o
MjY0LXByb2ZpbGVzLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDx0aXRsZT5NZWRpYVJlY29yZGVyIEgyNjQgcHJvZmlsZTwvdGl0bGU+
CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2xldCBzdHJlYW07Cithc3luYyBmdW5jdGlv
biByZWNvcmQobWltZVR5cGUpCit7CisgICAgaWYgKCFzdHJlYW0pCisgICAgICAgIHN0cmVhbSA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW8gOiB7IHdp
ZHRoIDogNjQwIH0gfSk7CisKKyAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVy
KHN0cmVhbSwgeyBtaW1lVHlwZSA6IG1pbWVUeXBlIH0pOworICAgIGNvbnN0IHByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlY29yZGVyLm9uZGF0
YWF2YWlsYWJsZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSk7CisgICAgICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVqZWN0KCJkYXRhdmFpbGFibGUgZXZlbnQgdGltZWQgb3V0IiksIDE1MDAwKTsKKyAg
ICB9KTsKKyAgICByZWNvcmRlci5zdGFydCgpOworICAgIHNldFRpbWVvdXQoKCkgPT4gcmVjb3Jk
ZXIuc3RvcCgpLCAxMDAwKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworZnVuY3Rpb24gcGFy
c2VBVkNDQm94KGRhdGEpCit7CityZXR1cm4gZGF0YTsKKyAgICBjb25zdCBsZW5ndGhBZnRlckFW
QzEgPSAxMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoIC0gbGVuZ3RoQWZ0
ZXJBVkMxIC0gNDsgKytpKSB7CisgICAgICAgIGlmIChkYXRhW2ldID09PSA5NyAmJiBkYXRhW2kg
KyAxXSA9PT0gMTE4ICYmIGRhdGFbaSArIDJdID09PSA5OSAmJiBkYXRhW2kgKyAzXSA9PT0gNjcp
CisgICAgICAgICAgICByZXR1cm4gZGF0YS5zbGljZShpICsgNCwgaSArIDQgKyBsZW5ndGhBZnRl
ckFWQzEpOworICAgIH0KKyAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoKTsKK30KKworcHJvbWlz
ZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlY29yZCgidmlk
ZW8vbXA0Iik7CisgICAgY29uc3QgY29udGVudCA9IHBhcnNlQVZDQ0JveChuZXcgVWludDhBcnJh
eShhd2FpdCBkYXRhLmFycmF5QnVmZmVyKCkpKS5qb2luKCIsIik7CisgICAgaWYgKGNvbnRlbnQu
bGVuZ3RoKQorICAgICAgICBhc3NlcnRfdHJ1ZShjb250ZW50LmluY2x1ZGVzKCIsNjYsIikpOwor
fSwgIlZhbGlkYXRlIEgyNjQgYmFzZWxpbmUgYXMgZGVmYXVsdCIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgKHQpID0+IHsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVjb3JkKCJ2aWRlby9tcDQ7
Y29kZWNzPWF2YzEuNDJFMDFGIik7CisgICAgY29uc3QgY29udGVudCA9IHBhcnNlQVZDQ0JveChu
ZXcgVWludDhBcnJheShhd2FpdCBkYXRhLmFycmF5QnVmZmVyKCkpKS5qb2luKCIsIik7CisgICAg
aWYgKGNvbnRlbnQubGVuZ3RoKQorICAgICAgICAgYXNzZXJ0X3RydWUoY29udGVudC5pbmNsdWRl
cygiLDY2LCIpKTsKK30sICJWYWxpZGF0ZSBIMjY0IGJhc2VsaW5lIHN1cHBvcnQiKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlY29yZCgi
dmlkZW8vbXA0O2NvZGVjcz1hdmMxLjREMDAxRiIpOworICAgIGNvbnN0IGNvbnRlbnQgPSBwYXJz
ZUFWQ0NCb3gobmV3IFVpbnQ4QXJyYXkoYXdhaXQgZGF0YS5hcnJheUJ1ZmZlcigpKSkuam9pbigi
LCIpOworICAgIGlmIChjb250ZW50Lmxlbmd0aCkKKyAgICAgICAgIGFzc2VydF90cnVlKGNvbnRl
bnQuaW5jbHVkZXMoIiw3NywiKSk7Cit9LCAiVmFsaWRhdGUgSDI2NCBtYWluIHN1cHBvcnQiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJl
Y29yZCgidmlkZW8vbXA0O2NvZGVjcz1hdmMxLjY0MDAyOSIpOworICAgIGNvbnN0IGNvbnRlbnQg
PSBwYXJzZUFWQ0NCb3gobmV3IFVpbnQ4QXJyYXkoYXdhaXQgZGF0YS5hcnJheUJ1ZmZlcigpKSku
am9pbigiLCIpOworICAgIGlmIChjb250ZW50Lmxlbmd0aCkKKyAgICAgICAgIGFzc2VydF90cnVl
KGNvbnRlbnQuaW5jbHVkZXMoIiwxMDAsIikpOworfSwgIlZhbGlkYXRlIEgyNjQgaGlnaCBzdXBw
b3J0Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429853</attachid>
            <date>2021-05-27 00:37:06 -0700</date>
            <delta_ts>2021-05-27 03:19:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226219-20210527093705.patch</filename>
            <type>text/plain</type>
            <size>16046</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uNDY5Y2E5ZTVmNjM4MDE4Y2M1NDVlNjA3MmJmZjM0
YzQzMzVlNjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA1LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEgyNjQgcHJv
ZmlsZXMgaW4gTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2MjE5CisgICAgICAgIDxyZGFyOi8vNzgwMjc5NDQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFVzZSBtaW1lVHlwZSBvcHRp
b24gZ2l2ZW4gaW4gTWVkaWFSZWNvcmRlciBvcHRpb25zIHRvIGRldGVjdCB3aGljaCBIMjY0IHBy
b2ZpbGUgdG8gdXNlLgorICAgICAgICBJbXBsZW1lbnQgdGhpcyBieSBwYXJzaW5nIHRoZSBtaW1l
IHR5cGUgY29kZWMgcGFyYW1ldGVyIGFuZCB1c2UgdGhlIGF2YzEuV1hZWiBzdHJpbmcgdG8gY29t
cHV0ZSB0aGUgcHJvZmlsZS4KKyAgICAgICAgQnkgZGVmYXVsdCwgdXNlIGJhc2VsaW5lIHByb2Zp
bGUsIHdoaWNoIGlzIG5vdCBWaWRlb1Rvb2xib3ggcHJvZmlsZSBidXQgaGFzIHdpZGVyIGRlY29k
aW5nIHN1cHBvcnQuCisgICAgICAgIElmIHByb2ZpbGUgc3BlY2lmaWVkIGJ5IHRoZSBhcHBsaWNh
dGlvbiBmYWlscywgd2UgZG93bmdyYWRlIHRvIGJhc2VsaW5lLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci12aWRlby1oMjY0LXByb2ZpbGVzLmh0
bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjppc1N1cHBv
cnRlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0T3B0aW9ucyk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dnRQcm9maWxlTGV2ZWwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0Q29tcHJlc3Npb25TZXNzaW9uKToKKwogMjAyMS0wNS0yNSAgVGltIE5ndXllbiAgPG50aW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYXNpYyA8ZGlhbG9nPiBlbGVtZW50IFVBIHN0eWxl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA2OTlmY2YzNTk2NWQxZWNlODViNWRk
MzM3ZWQ2YmRlZmVmMjMwZTAxLi42YTVjNGNiMzQ1ZjljMDY5OWY2ZjY1NWM5ZTQwYzEwOWY2NDc0
OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29s
IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IAogICAgIGZvciAoYXV0byYgaXRlbSA6IG1pbWVUeXBlLmNvZGVjcygpKSB7CiAgICAgICAgIGF1
dG8gY29kZWMgPSBTdHJpbmdWaWV3KGl0ZW0pLnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hl
ZENoYXJhY3RlcnMoaXNIVE1MU3BhY2U8VUNoYXI+KTsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBmdXJ0aGVyIHZhbGlkYXRlIHBhcmFtdGVycy4KKyAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBmdXJ0aGVyIHZhbGlkYXRlIHBhcmFtZXRlcnMuCiAgICAgICAgIGlmICghc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb2RlYywgImF2YzEiKSAmJiAhc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb2RlYywgIm1wNGEiKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCmluZGV4IDJlMzg3ZWJmNzJiZGJjZDdlYWVjNzU4NWQyMmE0ZjFmNDQ4
ZWE0MDcuLjIxYjk4NTBhZWE0MjUyNmRiZjViNjZhMDg1ZTg1OTliNzY2YzE3MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC04
NSw4ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9v
bCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9v
bCBpbml0aWFsaXplKCk7Ci0gICAgdm9pZCBzZXRPcHRpb25zKGNvbnN0IE1lZGlhUmVjb3JkZXJQ
cml2YXRlT3B0aW9ucyYpOworICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnMmKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRWaWRlb091dHB1
dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKTsKICAgICBz
dGF0aWMgdm9pZCBjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01C
dWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggNjRkNzhiNzlkNWI4MTVjOGQ4MzVjNTNh
NjIxMjA1NmM0ODRmODFmNy4uMWQ0NzU1M2RkMjY0N2M1NjhmZGRmOTU5OWVjMWFhMjBmZTQzMGJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQpAQCAtOTgsOSArOTgsOCBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3Jl
YXRlKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8sIGhhc1ZpZGVvKSk7Ci0gICAgaWYg
KCF3cml0ZXItPmluaXRpYWxpemUoKSkKKyAgICBpZiAoIXdyaXRlci0+aW5pdGlhbGl6ZShvcHRp
b25zKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd3JpdGVyLT5zZXRPcHRpb25zKG9w
dGlvbnMpOwogICAgIHJldHVybiB3cml0ZXI7CiB9CiAKQEAgLTEzMSw3ICsxMzAsNyBAQCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAg
ICBjbGVhcigpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFs
aXplKCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoY29uc3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewogICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC0x
NDksMjEgKzE0OCwxOCBAQCBib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFs
aXplKCkKICAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmNyZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7
CiAgICAgICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChvcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZCkKKyAgICAgICAgICAg
IG1fYXVkaW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpvcHRpb25zLmF1ZGlvQml0c1Bl
clNlY29uZCk7CiAgICAgfQogICAgIGlmIChtX2hhc1ZpZGVvKSB7Ci0gICAgICAgIG1fdmlkZW9D
b21wcmVzc29yID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoa0NNVmlkZW9D
b2RlY1R5cGVfSDI2NCwgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMp
OworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6Y3JlYXRlKG9wdGlvbnMubWltZVR5cGUsIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNh
bGxiYWNrLCB0aGlzKTsKICAgICAgICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG9wdGlvbnMudmlkZW9CaXRzUGVyU2Vjb25k
KQorICAgICAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPnNldEJpdHNQZXJTZWNvbmQoKm9wdGlv
bnMudmlkZW9CaXRzUGVyU2Vjb25kKTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldE9wdGlvbnMoY29uc3QgTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmIChvcHRpb25zLmF1ZGlvQml0
c1BlclNlY29uZCAmJiBtX2F1ZGlvQ29tcHJlc3NvcikKLSAgICAgICAgbV9hdWRpb0NvbXByZXNz
b3ItPnNldEJpdHNQZXJTZWNvbmQoKm9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kKTsKLSAgICBp
ZiAob3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQgJiYgbV92aWRlb0NvbXByZXNzb3IpCi0gICAg
ICAgIG1fdmlkZW9Db21wcmVzc29yLT5zZXRCaXRzUGVyU2Vjb25kKCpvcHRpb25zLnZpZGVvQml0
c1BlclNlY29uZCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDkyODg3
ZmY5Y2MyMjYyZjVlZjRkN2M3OWY1Y2VkNTFiZTkxMGRmZWEuLmViYzY5Mzg1NTgyNzkzODhjOTc4
MzMxMzdjNTU5OWM4MjM1Njk0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoU3RyaW5nIG1pbWVU
eXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7
CiAgICAgflZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOwogCiAgICAgdm9pZCBzZXRCaXRz
UGVyU2Vjb25kKHVuc2lnbmVkKTsKQEAgLTUwLDEyICs1MCwxNCBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgYml0UmF0ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlKTsKKyAgICBlbnVtIGNsYXNzIFBy
b2ZpbGUgeyBCYXNlbGluZSwgTWFpbiwgSGlnaCB9OworICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlLCBQcm9maWxlKTsKIAogICAgIGJvb2wgaW5pdGlhbGl6
ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CiAK
ICAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAgIGJv
b2wgaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYpOwor
ICAgIENGU3RyaW5nUmVmIHZ0UHJvZmlsZUxldmVsKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9p
ZCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMs
IFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZik7CiAKQEAgLTY5LDYgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiB7IDIu
MCB9OwogICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJhdGUgeyAzMCB9OwogICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBtX291dHB1dEJpdFJhdGU7CisgICAgUHJvZmlsZSBtX3Byb2ZpbGU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
CmluZGV4IDIwMDE4NWJiY2I3NjU0MDYzYmEwMWQxMTg4ZmU3OTRmNmE5ZTM4NzcuLmM3ZDY5NWEw
MTViZjdlY2VhYmJkMGQyMGJmODM1NTI0MWE5NWFlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW1wb3J0ICJDb250
ZW50VHlwZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVN
ZWRpYS5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CkBAIC0zOSwxNyArNDAs
MjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCi1zdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSwgQ01C
dWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
CitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShTdHJpbmcgbWltZVR5cGUsIENNQnVmZmVyUXVldWVU
cmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQogewotICAgIGF1
dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iob3V0cHV0Q29kZWNUeXBlKSk7Cisg
ICAgYXV0byBwcm9maWxlID0gUHJvZmlsZTo6QmFzZWxpbmU7CisgICAgZm9yIChhdXRvIGNvZGVj
IDogQ29udGVudFR5cGUobWltZVR5cGUpLmNvZGVjcygpKSB7CisgICAgICAgIGlmIChzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvZGVjLCAiYXZjMS4iKSAmJiBjb2RlYy5sZW5n
dGgoKSA+PSAxMSkgeworICAgICAgICAgICAgaWYgKGNvZGVjWzVdID09ICc2JyAmJiBjb2RlY1s2
XSA9PSAnNCcpCisgICAgICAgICAgICAgICAgcHJvZmlsZSA9IFByb2ZpbGU6OkhpZ2g7CisgICAg
ICAgICAgICBlbHNlIGlmIChjb2RlY1s1XSA9PSAnNCcgJiYgKGNvZGVjWzZdID09ICdkJyB8fCBj
b2RlY1s2XSA9PSAnRCcpKQorICAgICAgICAgICAgICAgIHByb2ZpbGUgPSBQcm9maWxlOjpNYWlu
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGNvbXBy
ZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIHByb2Zp
bGUpKTsKICAgICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNr
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNvbXByZXNzb3I7
CiB9CiAKLVZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQorVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlw
ZSBvdXRwdXRDb2RlY1R5cGUsIFByb2ZpbGUgcHJvZmlsZSkKICAgICA6IG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSB7IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIikgfQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUg
fQorICAgICwgbV9wcm9maWxlIHsgcHJvZmlsZSB9CiB7CiB9CiAKQEAgLTExMyw2ICsxMjYsMTgg
QEAgc3RhdGljIGlubGluZSBPU1N0YXR1cyBzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eShW
VENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFMKICAgICByZXR1cm4gc3RhdHVzOwogfQogCitDRlN0
cmluZ1JlZiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZ0UHJvZmlsZUxldmVsKCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fcHJvZmlsZSkgeworICAgIGNhc2UgUHJvZmlsZTo6QmFzZWxp
bmU6CisgICAgICAgIHJldHVybiBrVlRQcm9maWxlTGV2ZWxfSDI2NF9CYXNlbGluZV9BdXRvTGV2
ZWw7CisgICAgY2FzZSBQcm9maWxlOjpIaWdoOgorICAgICAgICByZXR1cm4ga1ZUUHJvZmlsZUxl
dmVsX0gyNjRfSGlnaF9BdXRvTGV2ZWw7CisgICAgY2FzZSBQcm9maWxlOjpNYWluOgorICAgICAg
ICByZXR1cm4ga1ZUUHJvZmlsZUxldmVsX0gyNjRfTWFpbl9BdXRvTGV2ZWw7CisgICAgfQorfQor
CiBib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lv
bihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiB7CiAgICAg
Q01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdl
dERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTM3LDYgKzE2MiwxNSBAQCBib29s
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpbwogICAgIGVycm9yID0gc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJv
cGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0
ZWRGcmFtZVJhdGUsIG1fZXhwZWN0ZWRGcmFtZVJhdGUpOwogICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNl
c3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVS
YXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQ
cm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Qcm9m
aWxlTGV2ZWwsIHZ0UHJvZmlsZUxldmVsKCkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1Byb2ZpbGVM
ZXZlbCBmYWlsZWQgd2l0aCAlZCBmb3IgcHJvZmlsZSAlZCIsIGVycm9yLCBtX3Byb2ZpbGUpOwor
ICAgICAgICBpZiAobV9wcm9maWxlICE9IFByb2ZpbGU6OkJhc2VsaW5lKSB7CisgICAgICAgICAg
ICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21w
cmVzc2lvblByb3BlcnR5S2V5X1Byb2ZpbGVMZXZlbCwga1ZUUHJvZmlsZUxldmVsX0gyNjRfQmFz
ZWxpbmVfQXV0b0xldmVsKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9y
LCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQ
cm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1Byb2ZpbGVMZXZlbCBmYWlsZWQgd2l0
aCAlZCBmb3IgZGVmYXVsdCBwcm9maWxlIiwgZXJyb3IpOworICAgICAgICB9CisgICAgfQorCiAg
ICAgaWYgKG1fb3V0cHV0Qml0UmF0ZSkgewogICAgICAgICBlcnJvciA9IHNldENvbXByZXNzaW9u
U2Vzc2lvblByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X0F2ZXJhZ2VCaXRSYXRlLCAqbV9vdXRwdXRCaXRSYXRlKTsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfQXZlcmFn
ZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTU3YTI2MzMxMjA3NWMz
YjM2YmM4MzExNTY0MmYyNjNjN2IxNDkzMS4uYzE2NjY1M2E2NTc5ZTM0MzJjMzU2ZWFjZmZmZDJi
ZjY4OTNiNWJkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI1ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEgyNjQgcHJvZmlsZXMg
aW4gTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MjE5CisgICAgICAgIDxyZGFyOi8vNzgwMjc5NDQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLXZpZGVvLWgyNjQtcHJvZmlsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8taDI2
NC1wcm9maWxlcy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNS0yNSAgVGltIE5ndXllbiAgPG50aW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYXNpYyA8ZGlhbG9nPiBlbGVtZW50IFVBIHN0eWxl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLXZpZGVvLWgyNjQtcHJvZmlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWgyNjQtcHJvZmlsZXMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkYTRlMDBlMmM1NDhiNGI2YTQ0ZGRkNmNhNmY5NDE5OTU5
ZGVhZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXItdmlkZW8taDI2NC1wcm9maWxlcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2IEBACisKK1BBU1MgVmFsaWRhdGUgSDI2NCBiYXNlbGluZSBhcyBkZWZhdWx0CitQQVNT
IFZhbGlkYXRlIEgyNjQgYmFzZWxpbmUgc3VwcG9ydAorUEFTUyBWYWxpZGF0ZSBIMjY0IG1haW4g
c3VwcG9ydAorUEFTUyBWYWxpZGF0ZSBIMjY0IGhpZ2ggc3VwcG9ydAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8taDI2
NC1wcm9maWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLXZpZGVvLWgyNjQtcHJvZmlsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDlmMjczYTU2
Njg2MjY0NjdiZTIzYzhlYTU3MmM4Yzk2MWZkMDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWgyNjQtcHJv
ZmlsZXMuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHRpdGxlPk1lZGlhUmVjb3JkZXIgSDI2NCBwcm9maWxlPC90aXRsZT4KKyAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorbGV0IHN0cmVhbTsKK2FzeW5jIGZ1bmN0aW9uIHJlY29y
ZChtaW1lVHlwZSkKK3sKKyAgICBpZiAoIXN0cmVhbSkKKyAgICAgICAgc3RyZWFtID0gYXdhaXQg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbyA6IHsgd2lkdGggOiA2
NDAgfSB9KTsKKworICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFt
LCB7IG1pbWVUeXBlIDogbWltZVR5cGUgfSk7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxh
YmxlID0gKGUpID0+IHJlc29sdmUoZS5kYXRhKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiBy
ZWplY3QoImRhdGF2YWlsYWJsZSBldmVudCB0aW1lZCBvdXQiKSwgMTUwMDApOworICAgIH0pOwor
ICAgIHJlY29yZGVyLnN0YXJ0KCk7CisgICAgc2V0VGltZW91dCgoKSA9PiByZWNvcmRlci5zdG9w
KCksIDEwMDApOworICAgIHJldHVybiBwcm9taXNlOworfQorCitmdW5jdGlvbiBwYXJzZUFWQ0NC
b3goZGF0YSkKK3sKK3JldHVybiBkYXRhOworICAgIGNvbnN0IGxlbmd0aEFmdGVyQVZDMSA9IDEw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggLSBsZW5ndGhBZnRlckFWQzEg
LSA0OyArK2kpIHsKKyAgICAgICAgaWYgKGRhdGFbaV0gPT09IDk3ICYmIGRhdGFbaSArIDFdID09
PSAxMTggJiYgZGF0YVtpICsgMl0gPT09IDk5ICYmIGRhdGFbaSArIDNdID09PSA2NykKKyAgICAg
ICAgICAgIHJldHVybiBkYXRhLnNsaWNlKGkgKyA0LCBpICsgNCArIGxlbmd0aEFmdGVyQVZDMSk7
CisgICAgfQorICAgIHJldHVybiBuZXcgVWludDhBcnJheSgpOworfQorCitwcm9taXNlX3Rlc3Qo
YXN5bmMgKHQpID0+IHsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVjb3JkKCJ2aWRlby9tcDQi
KTsKKyAgICBjb25zdCBjb250ZW50ID0gcGFyc2VBVkNDQm94KG5ldyBVaW50OEFycmF5KGF3YWl0
IGRhdGEuYXJyYXlCdWZmZXIoKSkpLmpvaW4oIiwiKTsKKyAgICBpZiAoY29udGVudC5sZW5ndGgp
CisgICAgICAgIGFzc2VydF90cnVlKGNvbnRlbnQuaW5jbHVkZXMoIiw2NiwiKSk7Cit9LCAiVmFs
aWRhdGUgSDI2NCBiYXNlbGluZSBhcyBkZWZhdWx0Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dCkgPT4geworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWNvcmQoInZpZGVvL21wNDtjb2RlY3M9
YXZjMS40MkUwMUYiKTsKKyAgICBjb25zdCBjb250ZW50ID0gcGFyc2VBVkNDQm94KG5ldyBVaW50
OEFycmF5KGF3YWl0IGRhdGEuYXJyYXlCdWZmZXIoKSkpLmpvaW4oIiwiKTsKKyAgICBpZiAoY29u
dGVudC5sZW5ndGgpCisgICAgICAgICBhc3NlcnRfdHJ1ZShjb250ZW50LmluY2x1ZGVzKCIsNjYs
IikpOworfSwgIlZhbGlkYXRlIEgyNjQgYmFzZWxpbmUgc3VwcG9ydCIpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKHQpID0+IHsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVjb3JkKCJ2aWRlby9t
cDQ7Y29kZWNzPWF2YzEuNEQwMDFGIik7CisgICAgY29uc3QgY29udGVudCA9IHBhcnNlQVZDQ0Jv
eChuZXcgVWludDhBcnJheShhd2FpdCBkYXRhLmFycmF5QnVmZmVyKCkpKS5qb2luKCIsIik7Cisg
ICAgaWYgKGNvbnRlbnQubGVuZ3RoKQorICAgICAgICAgYXNzZXJ0X3RydWUoY29udGVudC5pbmNs
dWRlcygiLDc3LCIpKTsKK30sICJWYWxpZGF0ZSBIMjY0IG1haW4gc3VwcG9ydCIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHQpID0+IHsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVjb3JkKCJ2
aWRlby9tcDQ7Y29kZWNzPWF2YzEuNjQwMDI5Iik7CisgICAgY29uc3QgY29udGVudCA9IHBhcnNl
QVZDQ0JveChuZXcgVWludDhBcnJheShhd2FpdCBkYXRhLmFycmF5QnVmZmVyKCkpKS5qb2luKCIs
Iik7CisgICAgaWYgKGNvbnRlbnQubGVuZ3RoKQorICAgICAgICAgYXNzZXJ0X3RydWUoY29udGVu
dC5pbmNsdWRlcygiLDEwMCwiKSk7Cit9LCAiVmFsaWRhdGUgSDI2NCBoaWdoIHN1cHBvcnQiKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>