<?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>237025</bug_id>
          
          <creation_ts>2022-02-22 01:23:36 -0800</creation_ts>
          <short_desc>RemoteSampleBufferDisplayLayer::enqueueSample should not change media samples owned by its object heap</short_desc>
          <delta_ts>2022-02-24 15:48:47 -0800</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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237164</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237027</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1844593</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-22 01:23:36 -0800</bug_when>
    <thetext>RemoteSampleBufferDisplayLayer::enqueueSample should not change media samples owned by its object heap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844602</commentid>
    <comment_count>1</comment_count>
      <attachid>452843</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-22 01:45:31 -0800</bug_when>
    <thetext>Created attachment 452843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844767</commentid>
    <comment_count>2</comment_count>
      <attachid>452843</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-22 09:58:46 -0800</bug_when>
    <thetext>Comment on attachment 452843
Patch

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:46
&gt; +    , m_sharedVideoFrameReader(nullptr)

This should be initialized in the header, not the .cpp file.

&gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.cpp:101
&gt; +        IOSurfaceRef surface = pixelBuffer ? CVPixelBufferGetIOSurface(pixelBuffer) : nullptr;
&gt; +        if (surface) {

This looks better to me:

    if (auto pixelBuffer = downcast&lt;MediaSampleAVFObjC&gt;(frame).pixelBuffer()) {
        if (auto surface = CVPixelBufferGetIOSurface(pixelBuffer)) {

&gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.h:127
&gt; +    switchOn(buffer,
&gt; +    [&amp;](std::nullptr_t representation) {
&gt; +        encoder &lt;&lt; (uint8_t)0;
&gt; +    }, [&amp;](const RemoteVideoFrameReadReference&amp; reference) {
&gt; +        encoder &lt;&lt; (uint8_t)1;
&gt; +        encoder &lt;&lt; reference;
&gt; +    } , [&amp;](const MachSendRight&amp; sendRight) {
&gt; +        encoder &lt;&lt; (uint8_t)2;
&gt; +        encoder &lt;&lt; sendRight;
&gt; +    });

Not sure the indentation here is right. But also, variant should have an encode overload that does this automatically. Why doesn’t this work?

    encoder &lt;&lt; buffer;

If it doesn&apos;t, we can fix that.

&gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.h:161
&gt; +    uint8_t bufferType;
&gt; +    if (!decoder.decode(bufferType))
&gt; +        return { };
&gt; +
&gt; +    if (bufferType &gt; 2)
&gt; +        return { };
&gt; +
&gt; +    if (bufferType == 1) {
&gt; +        std::optional&lt;RemoteVideoFrameReadReference&gt; reference;
&gt; +        decoder &gt;&gt; reference;
&gt; +        if (!reference)
&gt; +            return { };
&gt; +        frame.buffer = WTFMove(*reference);
&gt; +    } else if (bufferType == 2) {
&gt; +        MachSendRight sendRight;
&gt; +        if (!decoder.decode(sendRight))
&gt; +            return { };
&gt; +        frame.buffer = WTFMove(sendRight);
&gt; +    }
&gt; +    return frame;

This would be *so* much better in the Variant version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844769</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-22 10:03:29 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 452843 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452843&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:46
&gt; &gt; +    , m_sharedVideoFrameReader(nullptr)
&gt; 
&gt; This should be initialized in the header, not the .cpp file.

This requires including RemoteVideoFrameObjectHeap.h in SharedVideoFrame.h header file.
I guess I can change the constructor to take a RemoteVideoFrameObjectHeap* instead of a RefPtr&lt;RemoteVideoFrameObjectHeap&gt;&amp;&amp;.


&gt; Not sure the indentation here is right. But also, variant should have an
&gt; encode overload that does this automatically. Why doesn’t this work?
&gt; 
&gt;     encoder &lt;&lt; buffer;
&gt; 
&gt; If it doesn&apos;t, we can fix that.

I did not know about the encoder variant, will use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844770</commentid>
    <comment_count>4</comment_count>
      <attachid>452843</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-22 10:06:53 -0800</bug_when>
    <thetext>Comment on attachment 452843
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:46
&gt;&gt;&gt; +    , m_sharedVideoFrameReader(nullptr)
&gt;&gt; 
&gt;&gt; This should be initialized in the header, not the .cpp file.
&gt; 
&gt; This requires including RemoteVideoFrameObjectHeap.h in SharedVideoFrame.h header file.
&gt; I guess I can change the constructor to take a RemoteVideoFrameObjectHeap* instead of a RefPtr&lt;RemoteVideoFrameObjectHeap&gt;&amp;&amp;.

Or add a default constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845026</commentid>
    <comment_count>5</comment_count>
      <attachid>452943</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-22 23:48:58 -0800</bug_when>
    <thetext>Created attachment 452943
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845047</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-23 01:13:13 -0800</bug_when>
    <thetext>Committed r290358 (247676@main): &lt;https://commits.webkit.org/247676@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452943.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845048</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-23 01:14:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/89343447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845090</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-23 05:10:33 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Created attachment 452943 [details]
&gt; Patch for landing

I forgot to commit the changes to use variant encoder before landing the patch...
I will upload a follow-up patch to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845093</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-23 05:16:51 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845094</commentid>
    <comment_count>10</comment_count>
      <attachid>452965</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-23 05:16:53 -0800</bug_when>
    <thetext>Created attachment 452965
Post-commit changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845140</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-23 08:01:21 -0800</bug_when>
    <thetext>Committed r290373 (247689@main): &lt;https://commits.webkit.org/247689@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452965.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452843</attachid>
            <date>2022-02-22 01:45:31 -0800</date>
            <delta_ts>2022-02-22 23:48:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237025-20220222104528.patch</filename>
            <type>text/plain</type>
            <size>22318</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMzgyMDY5YzA4NTMzMGE5
OWJjNjI5Y2RhNTE0ZDNlYzlhYjMzYWEuLjI3OGI0NDkzYWFjYjBkZWQzMGRhMjk3NjZiOWZmZTRm
NzE4MmFkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMjIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSBzaG91bGQgbm90IGNoYW5nZSBtZWRpYSBzYW1wbGVz
IG93bmVkIGJ5IGl0cyBvYmplY3QgaGVhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnJvbSBwYXN0IGJ1Z3MsIGl0IGlzIHJpc2t5IHRvIGNoYW5nZSBD
TVNhbXBsZUJ1ZmZlciBkaWN0aW9uYXJpZXMgaWYgdGhleSBjYW4gYmUgdXNlZCBvbiB2YXJpb3Vz
IHRocmVhZHMgKGVuY29kZXIsIGRpc3BsYXkgbGF5ZXIuLi4pLgorICAgICAgICBJbnN0ZWFkLCB3
ZSBjcmVhdGUgYSBuZXcgTWVkaWFTYW1wbGUgdGhhdCBpcyB3cmFwcGluZyB0aGUgc2FtZSBDVlBp
eGVsQnVmZmVyUmVmLCBvbiB3aGljaCBjYW4gc2FmZWx5IGFwcGx5IHNldEFzRGlzcGxheUltbWVk
aWF0ZWx5LgorCisgICAgICAgIFdlIGludHJvZHVjZSBTaGFyZWRWaWRlb0ZyYW1lIGFzIGEgcmVw
bGFjZW1lbnQgdG8gUmVtb3RlVmlkZW9TYW1wbGUuCisgICAgICAgIFdlIGJlZWYgdXAgU2hhcmVk
VmlkZW9GcmFtZVdyaXRlciBhbmQgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciB0byBoYW5kbGUgYW55
IE1lZGlhU2FtcGxlLAorICAgICAgICB3aXRoIHNwZWNpZmljIGhhbmRsaW5nIGZvciByZW1vdGUg
ZnJhbWVzLCBJT1N1cmZhY2UgZnJhbWVzIG9yIG90aGVyIGluIG1lbW9yeSBmcmFtZXMuCisgICAg
ICAgIFdlIG1ha2UgdXNlIG9mIFNoYXJlZFZpZGVvRnJhbWUgaW4gU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLCB3aGljaCBhbGxvd3MgdG8gdW5pZnkgZW5xdWV1ZVNhbXBsZSBhbmQgZW5xdWV1ZUNW
IGluIG9uZSBJUEMgbWVzc2FnZSwKKyAgICAgICAgd2hpY2ggaXMgZWFzaWVyIHRvIG1haW50YWlu
LgorCisgICAgICAgIFdlIHVwZGF0ZSBjYWxsIHNpdGVzIHRoYXQgY3JlYXRlIFNoYXJlZFZpZGVv
RnJhbWVSZWFkZXIgdG8gZWl0aGVyIHRha2UgbnVsbHB0ciBvciBhIG9iamVjdCBoZWFwIHJlZmVy
ZW5jZSB3aGVuIHRoZXkgd2lsbCBuZWVkIGl0IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NoYXJlZFZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
aGFyZWRWaWRlb0ZyYW1lLmg6CisKIDIwMjItMDItMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvbXV0ZS10cmFja3Mu
aHRtbCBmYWlscyB3aXRoIFdlYlJUQ1JlbW90ZVZpZGVvRnJhbWVFbmFibGVkPXRydWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lm1tCmluZGV4IGVkYzZkNjY2NjdiZGIzZmFhYTA3OWNjMzhhZTViZTQ2OTYwZDE3ZWIuLmM3
M2YxMjcxYjA2ZWZkNWIyMWY0ODg4Y2ZlMTlkNjE4YWU2MWJjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZp
ZGVvRnJhbWVTZW1hcGhvcmUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCi0gICAgICAgIGVuY29kZXItPmZy
YW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyPigpOworICAgICAg
ICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRl
cj4oUmVmIHsgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCB9KTsKICAgICBlbmNvZGVyLT5mcmFtZVJl
YWRlci0+c2V0U2VtYXBob3JlKFdURk1vdmUoc2VtYXBob3JlKSk7CiB9CiAKQEAgLTI5Nyw3ICsy
OTcsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVt
b3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQotICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9
IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4oKTsKKyAgICAgICAgZW5jb2Rlci0+
ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+KFJlZiB7IG1f
dmlkZW9GcmFtZU9iamVjdEhlYXAgfSk7CiAgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnNldFNo
YXJlZE1lbW9yeShpcGNIYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBhYzk4NWRlZmFi
YzRlMWM0OWQ2NzE1NTI0M2RhNTMwNDc2OWRhM2ZlLi40ZDZiOGY1YzE3MTkxYmY3NTAxOTI4Yjhk
NjgwMWU4NDBlOTk3ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6UmVtb3RlTWVkaWFSZWNvcmRlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW8KICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAg
ICAgLCBtX3dyaXRlcihXVEZNb3ZlKHdyaXRlcikpCisgICAgLCBtX3NoYXJlZFZpZGVvRnJhbWVS
ZWFkZXIoUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVh
cCgpIH0pCiAgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBpZiAocmVjb3JkQXVkaW8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggZTZmYzY3N2M3MGNkMWQ3NDlj
Njk3ZDYyMWRlMTlhMzViZjI0ZWZhOS4uZDFlNDdhZTU4OWVmNmRlMjU2ZmRlZGNlZjI5MzhmMGNh
NzgwZDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcihHUFVDb25uZWN0aW9uVG9XZQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpj
cmVhdGUoKnRoaXMpKQotICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChtX2dwdUNvbm5lY3Rp
b24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKKyAgICAsIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRl
cigmbV9ncHVDb25uZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAgICAgQVNTRVJU
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKTsKIH0KQEAgLTExOSw0MiArMTE5LDkgQEAgdm9p
ZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci0+cGF1c2UoKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Um
JiBzYW1wbGUpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZShT
aGFyZWRWaWRlb0ZyYW1lJiYgZnJhbWUpCiB7Ci0gICAgYXV0byBtZWRpYVNhbXBsZSA9IG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1bHRUaW1lb3V0
KTsKLSAgICBpZiAoIW1lZGlhU2FtcGxlKSB7Ci0gICAgICAgIC8vIEluIGNhc2Ugb2YgR1BVUHJv
Y2VzcyBjcmFzaCwgd2UgbWlnaHQgZW5xdWV1ZSBwcmV2aW91cyBHUFVQcm9jZXNzIHNhbXBsZXMs
IGlnbm9yZSB0aGVtLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVChpczxNZWRp
YVNhbXBsZUFWRk9iakM+KG1lZGlhU2FtcGxlKSk7Ci0gICAgaWYgKCFpczxNZWRpYVNhbXBsZUFW
Rk9iakM+KG1lZGlhU2FtcGxlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgYXZmTWVk
aWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7Ci0g
ICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRpYVNh
bXBsZSk7Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoYXZm
TWVkaWFTYW1wbGUpOwotfQotCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxl
KQotewotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwotICAgIGlmICghcmVtb3RlU2Ft
cGxlLnN1cmZhY2UoKSkgewotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbV9zaGFyZWRWaWRl
b0ZyYW1lUmVhZGVyLnJlYWQoKTsKLSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBzYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0
ZUltYWdlU2FtcGxlKFdURk1vdmUocGl4ZWxCdWZmZXIpLCByZW1vdGVTYW1wbGUucm90YXRpb24o
KSwgcmVtb3RlU2FtcGxlLm1pcnJvcmVkKCksIHJlbW90ZVNhbXBsZS50aW1lKCkpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgp
KQotICAgICAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6OmNyZWF0ZShyZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSk7Ci0KLSAgICAgICAgQVNT
RVJUKG1faW1hZ2VUcmFuc2ZlclNlc3Npb24pOwotICAgICAgICBpZiAoIW1faW1hZ2VUcmFuc2Zl
clNlc3Npb24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc2FtcGxlID0gbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUocmVtb3RlU2FtcGxlKTsKLSAgICB9
Ci0KKyAgICBhdXRvIHNhbXBsZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKFdURk1v
dmUoZnJhbWUpKTsKICAgICBBU1NFUlQoc2FtcGxlKTsKICAgICBpZiAoIXNhbXBsZSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggODAyYzkwZmU5
ZWI2NjRiYTkzMjFkN2E4YmRlNWQ5ODRmNDAzZjFkYi4uNjkyYjUxMWY5NmVlOTljOTA5N2M5NTll
MzhjMDc1OWQwNTg5OTJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC00
NSw3ICs0NSw2IEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci1jbGFzcyBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDsKIAogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIDog
cHVibGljIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTc3LDggKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBh
dXNlKCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJl
bmNlJiYpOwotICAgIHZvaWQgZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYpOworICAgIHZvaWQgZW5xdWV1ZShTaGFyZWRWaWRlb0ZyYW1lJiYpOwogICAgIHZvaWQg
Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1h
cGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVt
b3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CkBAIC05Nyw3ICs5NSw2IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFNoYXJl
ZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwotICAgIFJlZjxSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKICAgICBUaHJl
YWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOwogCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCAzY2Ex
ZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5Li43MzEwZWJhZjlhMmY5MTU4MGUx
ZmQ4MWNkOWRhMmI2Njk4MGVmYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsOCArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQot
ICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBz
YW1wbGUpCi0gICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNh
bXBsZSkKKyAgICBFbnF1ZXVlKHN0cnVjdCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUp
CiAgICAgQ2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5j
cHAKaW5kZXggZjIxZDExOGM4MjAyMjJiYWNjZDEyZjdmZjBjYTYyMWVmNDgxYmM0ZC4uNTRkMmM5
NzFkODVlMDNlOTA0NWEzYzVjN2ZiYjYxMWEwZmM3NWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShWSURFTykKIAorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3JNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgpAQCAtNDIsNiArNDMsNyBAQCBSZWY8UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcj4gUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eVBybwogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nv
cjo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3NvcihHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgY29ubmVjdGlvbikKICAgICA6IG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnVuaXF1ZUlEKCkpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IiwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRl
cmFjdGl2ZSkpCisgICAgLCBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIobnVsbHB0cikKIHsKICAg
ICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggZTg0MGNkMjg5NTdj
YTlhN2IzNDcxMDJiNGMzZWIyODdjYzhlYzE0Yi4uNTYxMjc2MzBiMWNjM2I4MzBkODgwZGIxMTEx
Yjc5Yzc3YTIwZmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xMjgs
MzUgKzEyOCwxOSBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpQYXVzZSB7IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLWJvb2wgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyKQotewotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHBpeGVsQnVmZmVyLAotICAg
ICAgICBbdGhpc10oYXV0byYgc2VtYXBob3JlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2Vt
YXBob3JlIHsgc2VtYXBob3JlIH0sIG1faWRlbnRpZmllcik7IH0sCi0gICAgICAgIFt0aGlzXShh
dXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBoYW5kbGUgfSwg
bV9pZGVudGlmaWVyKTsgfQotICAgICk7Ci19Ci0KIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgaWYgKG1fcGF1
c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5
PihzYW1wbGUpKSB7Ci0gICAgICAgIGF1dG8mIHJlbW90ZVNhbXBsZSA9IGRvd25jYXN0PFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyBy
ZW1vdGVTYW1wbGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7CisgICAgYXV0byBzaGFyZWRWaWRl
b0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHNhbXBsZSwKKyAgICAgICAg
W3RoaXNdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9y
ZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIpOyB9LAorICAgICAgICBbdGhpc10oYXV0byYg
aGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIG1faWRl
bnRpZmllcik7IH0KKyAgICApOworICAgIGlmICghc2hhcmVkVmlkZW9GcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1w
bGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZTo6Tm8pOwotICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKLSAgICAgICAg
Ly8gYnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlk
ZW8gZnJhbWUuCi0gICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUocmVtb3RlU2FtcGxl
LT5pbWFnZUJ1ZmZlcigpKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
RW5xdWV1ZVNhbXBsZUNWIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpFbnF1ZXVlIHsgKnNoYXJlZFZpZGVvRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggMDQ0NGVjZjJiODYyNzk0NDMyMTExM2U2OWQyNmIx
MmIyNTViZmFjMC4uNWU4NDM0YTlmNDI0NDgwZDEwMjJlNDVhZThiODY5OTMzNDY3MTNjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTc1LDcgKzc1LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGlkRmFpbChib29sKTsKLSAgICBib29sIGNvcHlTaGFy
ZWRWaWRlb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyPiBtX21hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCmluZGV4IGE3MWNhMDgx
MjA4YmQ1MWUxNGU5NjlmNjEwMjI5NThiMmFkODUyZTYuLmEzNTA2ZThhNjNhZmFlMDI0MTI0N2M2
NjQ5ZWU2NjExYWE5ZGJjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCkBAIC0yOSw5ICsyOSwxNyBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURF
TykKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCisjaW5j
bHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db3Jl
VmlkZW9Tb2Z0TGluay5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC04MCw2ICs4OCwyNiBAQCBib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6
OnByZXBhcmVXcml0aW5nKGNvbnN0IFNoYXJlZFZpZGVvRnJhbWVJbmZvJiBpbmZvLCBjbwogICAg
IHJldHVybiB0cnVlOwogfQogCitzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJl
ZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKE1lZGlhU2FtcGxlJiBmcmFtZSwgY29uc3QgRnVuY3Rp
b248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNh
bGxiYWNrKQoreworICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IGZyYW1l
LnByZXNlbnRhdGlvblRpbWUoKSwgZnJhbWUudmlkZW9NaXJyb3JlZCgpLCBmcmFtZS52aWRlb1Jv
dGF0aW9uKCksIG51bGxwdHIgfTsKKyAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5Pihm
cmFtZSkpIHsKKyAgICAgICAgc2hhcmVkVmlkZW9GcmFtZS5idWZmZXIgPSBkb3duY2FzdDxSZW1v
dGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKS5yZWFkKCk7CisgICAgICAgIHJldHVybiBzaGFyZWRW
aWRlb0ZyYW1lOworICAgIH0KKyAgICBpZiAoaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihmcmFtZSkp
IHsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGRvd25jYXN0PE1lZGlhU2FtcGxlQVZGT2Jq
Qz4oZnJhbWUpLnBpeGVsQnVmZmVyKCk7CisgICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0g
cGl4ZWxCdWZmZXIgPyBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKHBpeGVsQnVmZmVyKSA6IG51
bGxwdHI7CisgICAgICAgIGlmIChzdXJmYWNlKSB7CisgICAgICAgICAgICBzaGFyZWRWaWRlb0Zy
YW1lLmJ1ZmZlciA9IE1hY2hTZW5kUmlnaHQ6OmFkb3B0KElPU3VyZmFjZUNyZWF0ZU1hY2hQb3J0
KHN1cmZhY2UpKTsKKyAgICAgICAgICAgIHJldHVybiBzaGFyZWRWaWRlb0ZyYW1lOworICAgICAg
ICB9CisgICAgfQorICAgIGlmICghd3JpdGUoZnJhbWUucGl4ZWxCdWZmZXIoKSwgbmV3U2VtYXBo
b3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICByZXR1cm4gc2hhcmVkVmlkZW9GcmFtZTsKK30KKwogYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3Jp
dGVyOjp3cml0ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBjb25zdCBGdW5jdGlvbjx2
b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJh
Y2spCiB7CiAgICAgYXV0byBpbmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21DVlBpeGVs
QnVmZmVyKHBpeGVsQnVmZmVyKTsKQEAgLTk0LDcgKzEyMiw3IEBAIGJvb2wgU2hhcmVkVmlkZW9G
cmFtZVdyaXRlcjo6d3JpdGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qg
RnVuY3RpCiB7CiAgICAgYXV0byBpbmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRl
b0ZyYW1lKGZyYW1lKTsKICAgICBpZiAoIXByZXBhcmVXcml0aW5nKGluZm8sIG5ld1NlbWFwaG9y
ZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjaykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBpbmZvLndyaXRlVmlkZW9GcmFtZShmcmFt
ZSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSk7CiB9CkBAIC0xMDYs
NiArMTM0LDEyIEBAIHZvaWQgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6ZGlzYWJsZSgpCiAgICAg
bV9zZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCitTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpTaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyKFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiBv
YmplY3RIZWFwLCBVc2VJT1N1cmZhY2VCdWZmZXJQb29sIHVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wp
CisgICAgOiBtX29iamVjdEhlYXAoV1RGTW92ZShvYmplY3RIZWFwKSkKKyAgICAsIG1fdXNlSU9T
dXJmYWNlQnVmZmVyUG9vbCh1c2VJT1N1cmZhY2VCdWZmZXJQb29sKQoreworfQorCiBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6cmVhZCgpCiB7CiAg
ICAgaWYgKCFtX3N0b3JhZ2UpCkBAIC0xMjksNiArMTYzLDM0IEBAIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpyZWFkKCkKICAgICByZXR1cm4gaW5m
by0+Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tTWVtb3J5KGRhdGEgKyBTaGFyZWRWaWRlb0ZyYW1lSW5m
b0VuY29kaW5nTGVuZ3RoLCBwaXhlbEJ1ZmZlclBvb2woKmluZm8pKTsKIH0KIAorUmVmUHRyPE1l
ZGlhU2FtcGxlPiBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpyZWFkKFNoYXJlZFZpZGVvRnJhbWUm
JiBzaGFyZWRWaWRlb0ZyYW1lKQoreworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzd2l0Y2hPbihX
VEZNb3ZlKHNoYXJlZFZpZGVvRnJhbWUuYnVmZmVyKSwKKyAgICBbdGhpc10oUmVtb3RlVmlkZW9G
cmFtZVJlYWRSZWZlcmVuY2UmJiByZWZlcmVuY2UpIC0+IFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiB7CisgICAgICAgIEFTU0VSVChtX29iamVjdEhlYXApOworICAgICAgICBpZiAoIW1fb2Jq
ZWN0SGVhcCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gc2Ft
cGxlID0gbV9vYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZShyZWZlcmVuY2UpLCAwX3MpOworICAg
ICAgICBBU1NFUlQoc2FtcGxlICYmIHNhbXBsZS0+cGl4ZWxCdWZmZXIoKSk7CisgICAgICAgIGlm
ICghc2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
YW1wbGUtPnBpeGVsQnVmZmVyKCk7CisgICAgfSAsIFtdKE1hY2hTZW5kUmlnaHQmJiBzZW5kUmln
aHQpIC0+IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiB7CisgICAgICAgIGF1dG8gc3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHNlbmRS
aWdodCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICAgICAgaWYgKCFzdXJm
YWNlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSkudmFsdWVfb3IobnVsbHB0
cik7CisgICAgfSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90IHJlcHJlc2VudGF0aW9uKSAtPiBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4geworICAgICAgICByZXR1cm4gcmVhZCgpOworICAgIH0p
OworCisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKHBp
eGVsQnVmZmVyKSwgc2hhcmVkVmlkZW9GcmFtZS5yb3RhdGlvbiwgc2hhcmVkVmlkZW9GcmFtZS5t
aXJyb3JlZCwgc2hhcmVkVmlkZW9GcmFtZS50aW1lKTsKK30KKwogQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6cGl4ZWxCdWZmZXJQb29sKGNvbnN0IFNoYXJlZFZp
ZGVvRnJhbWVJbmZvJiBpbmZvKQogewogICAgIGlmIChtX3VzZUlPU3VyZmFjZUJ1ZmZlclBvb2wg
PT0gVXNlSU9TdXJmYWNlQnVmZmVyUG9vbDo6Tm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKaW5kZXggYWViYjc5Y2Uy
ZGVlZmQ1YmYzZmI0NTdkZjJlMDJlODIyZGVkZmM5NC4uMDM4NTVmN2I0MTg0MmU3MWVhMmI0ZDhh
MmVmODBmMWQ2MDY0NWMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApAQCAtMjgsNyArMjgsOSBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFTykKIAog
I2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVNhbXBsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAtNDYsMTEgKzQ4LDI0IEBA
IGNsYXNzIFZpZGVvRnJhbWU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDsKKworc3RydWN0IFNoYXJlZFZpZGVvRnJhbWUgeworICAgIE1l
ZGlhVGltZSB0aW1lOworICAgIGJvb2wgbWlycm9yZWQgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlLCBNYWNoU2VuZFJpZ2h0PiBidWZmZXI7
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkVmlkZW9GcmFtZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKIGNsYXNzIFNoYXJlZFZpZGVv
RnJhbWVXcml0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlk
ZW9GcmFtZT4gd3JpdGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lk
KElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpPiYpOwogICAgIGJvb2wgd3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29u
c3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICNpZiBVU0UoTElCV0VCUlRDKQog
ICAgIGJvb2wgd3JpdGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248
dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKQEAgLTcyLDE2ICs4NywxOCBAQCBjbGFzcyBTaGFyZWRW
aWRlb0ZyYW1lUmVhZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgeyBObywgWWVzIH07Ci0gICAg
ZXhwbGljaXQgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcihVc2VJT1N1cmZhY2VCdWZmZXJQb29sID0g
VXNlSU9TdXJmYWNlQnVmZmVyUG9vbDo6WWVzKTsKKyAgICBleHBsaWNpdCBTaGFyZWRWaWRlb0Zy
YW1lUmVhZGVyKFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiwgVXNlSU9TdXJm
YWNlQnVmZmVyUG9vbCA9IFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2w6Olllcyk7CiAKICAgICB2b2lk
IHNldFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkgeyBtX3NlbWFwaG9yZSA9
IFdURk1vdmUoc2VtYXBob3JlKTsgfQogICAgIGJvb2wgc2V0U2hhcmVkTWVtb3J5KGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcmVhZCgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcmVhZChTaGFyZWRW
aWRlb0ZyYW1lJiYpOwogCiBwcml2YXRlOgogICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVs
QnVmZmVyUG9vbChjb25zdCBXZWJDb3JlOjpTaGFyZWRWaWRlb0ZyYW1lSW5mbyYpOwogCisgICAg
UmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CiAgICAgVXNl
SU9TdXJmYWNlQnVmZmVyUG9vbCBtX3VzZUlPU3VyZmFjZUJ1ZmZlclBvb2w7CiAgICAgSVBDOjpT
ZW1hcGhvcmUgbV9zZW1hcGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdl
OwpAQCAtOTIsOSArMTA5LDU2IEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9idWZmZXJQb29s
SGVpZ2h0IHsgMCB9OwogfTsKIAotaW5saW5lIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OlNoYXJl
ZFZpZGVvRnJhbWVSZWFkZXIoVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCB1c2VJT1N1cmZhY2VCdWZm
ZXJQb29sKQotICAgIDogbV91c2VJT1N1cmZhY2VCdWZmZXJQb29sKHVzZUlPU3VyZmFjZUJ1ZmZl
clBvb2wpCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFNoYXJlZFZpZGVvRnJhbWU6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGltZTsKKyAg
ICBlbmNvZGVyIDw8IG1pcnJvcmVkOworICAgIGVuY29kZXIgPDwgcm90YXRpb247CisKKyAgICBz
d2l0Y2hPbihidWZmZXIsCisgICAgWyZdKHN0ZDo6bnVsbHB0cl90IHJlcHJlc2VudGF0aW9uKSB7
CisgICAgICAgIGVuY29kZXIgPDwgKHVpbnQ4X3QpMDsKKyAgICB9LCBbJl0oY29uc3QgUmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmIHJlZmVyZW5jZSkgeworICAgICAgICBlbmNvZGVyIDw8
ICh1aW50OF90KTE7CisgICAgICAgIGVuY29kZXIgPDwgcmVmZXJlbmNlOworICAgIH0gLCBbJl0o
Y29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0KSB7CisgICAgICAgIGVuY29kZXIgPDwgKHVp
bnQ4X3QpMjsKKyAgICAgICAgZW5jb2RlciA8PCBzZW5kUmlnaHQ7CisgICAgfSk7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gU2hh
cmVkVmlkZW9GcmFtZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CisgICAgU2hhcmVkVmlk
ZW9GcmFtZSBmcmFtZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lLnRpbWUpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZS5taXJyb3Jl
ZCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1l
LnJvdGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ4X3QgYnVmZmVyVHlw
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclR5cGUpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgaWYgKGJ1ZmZlclR5cGUgPiAyKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgaWYgKGJ1ZmZlclR5cGUgPT0gMSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiByZWZlcmVuY2U7CisgICAgICAgIGRlY29kZXIgPj4gcmVm
ZXJlbmNlOworICAgICAgICBpZiAoIXJlZmVyZW5jZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIGZyYW1lLmJ1ZmZlciA9IFdURk1vdmUoKnJlZmVyZW5jZSk7CisgICAgfSBlbHNl
IGlmIChidWZmZXJUeXBlID09IDIpIHsKKyAgICAgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIGZyYW1lLmJ1ZmZlciA9IFdURk1vdmUoc2VuZFJpZ2h0KTsKKyAg
ICB9CisgICAgcmV0dXJuIGZyYW1lOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452943</attachid>
            <date>2022-02-22 23:48:58 -0800</date>
            <delta_ts>2022-02-23 05:16:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237025-20220223084856.patch</filename>
            <type>text/plain</type>
            <size>22319</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlZDBjZDM3ZjE4ZTU4MGVk
MDFkNTE1NmYzZDIzMWNmMWE5ZjMzOWMuLjcwMjMwNDMzOGY1ODQ5YmRjNjNmMjMxZjFhODM5OWJm
YmNhNjNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMjIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSBzaG91bGQgbm90IGNoYW5nZSBtZWRpYSBzYW1wbGVz
IG93bmVkIGJ5IGl0cyBvYmplY3QgaGVhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgRnJvbSBwYXN0IGJ1Z3MsIGl0IGlzIHJpc2t5IHRvIGNoYW5nZSBDTVNh
bXBsZUJ1ZmZlciBkaWN0aW9uYXJpZXMgaWYgdGhleSBjYW4gYmUgdXNlZCBvbiB2YXJpb3VzIHRo
cmVhZHMgKGVuY29kZXIsIGRpc3BsYXkgbGF5ZXIuLi4pLgorICAgICAgICBJbnN0ZWFkLCB3ZSBj
cmVhdGUgYSBuZXcgTWVkaWFTYW1wbGUgdGhhdCBpcyB3cmFwcGluZyB0aGUgc2FtZSBDVlBpeGVs
QnVmZmVyUmVmLCBvbiB3aGljaCBjYW4gc2FmZWx5IGFwcGx5IHNldEFzRGlzcGxheUltbWVkaWF0
ZWx5LgorCisgICAgICAgIFdlIGludHJvZHVjZSBTaGFyZWRWaWRlb0ZyYW1lIGFzIGEgcmVwbGFj
ZW1lbnQgdG8gUmVtb3RlVmlkZW9TYW1wbGUuCisgICAgICAgIFdlIGJlZWYgdXAgU2hhcmVkVmlk
ZW9GcmFtZVdyaXRlciBhbmQgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciB0byBoYW5kbGUgYW55IE1l
ZGlhU2FtcGxlLAorICAgICAgICB3aXRoIHNwZWNpZmljIGhhbmRsaW5nIGZvciByZW1vdGUgZnJh
bWVzLCBJT1N1cmZhY2UgZnJhbWVzIG9yIG90aGVyIGluIG1lbW9yeSBmcmFtZXMuCisgICAgICAg
IFdlIG1ha2UgdXNlIG9mIFNoYXJlZFZpZGVvRnJhbWUgaW4gU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLCB3aGljaCBhbGxvd3MgdG8gdW5pZnkgZW5xdWV1ZVNhbXBsZSBhbmQgZW5xdWV1ZUNWIGlu
IG9uZSBJUEMgbWVzc2FnZSwKKyAgICAgICAgd2hpY2ggaXMgZWFzaWVyIHRvIG1haW50YWluLgor
CisgICAgICAgIFdlIHVwZGF0ZSBjYWxsIHNpdGVzIHRoYXQgY3JlYXRlIFNoYXJlZFZpZGVvRnJh
bWVSZWFkZXIgdG8gZWl0aGVyIHRha2UgbnVsbHB0ciBvciBhIG9iamVjdCBoZWFwIHJlZmVyZW5j
ZSB3aGVuIHRoZXkgd2lsbCBuZWVkIGl0IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJv
Y2Vzc29yLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1No
YXJlZFZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFy
ZWRWaWRlb0ZyYW1lLmg6CisKIDIwMjItMDItMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgV2l0aCBET00gUmVuZGVyaW5nIGluIEdQVSBwcm9jZXNz
LCBldmVyeSBkaXNwbGF5IHJlc3VsdHMgaW4gbmV3IElPU3VyZmFjZSBhbGxvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5tbQppbmRleCBlZGM2ZDY2NjY3YmRiM2ZhYWEwNzljYzM4YWU1YmU0Njk2MGQxN2ViLi5j
NzNmMTI3MWIwNmVmZDViMjFmNDg4OGNmZTE5ZDYxOGFlNjFiY2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0K
QEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRW
aWRlb0ZyYW1lU2VtYXBob3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQotICAgICAgICBlbmNvZGVyLT5m
cmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4oKTsKKyAgICAg
ICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXI+KFJlZiB7IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAgfSk7CiAgICAgZW5jb2Rlci0+ZnJhbWVS
ZWFkZXItPnNldFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOwogfQogCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZU1l
bW9yeShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFlbmNvZGVyLT5mcmFtZVJlYWRlcikKLSAgICAgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXIg
PSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+KCk7CisgICAgICAgIGVuY29kZXIt
PmZyYW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyPihSZWYgeyBt
X3ZpZGVvRnJhbWVPYmplY3RIZWFwIH0pOwogICAgIGVuY29kZXItPmZyYW1lUmVhZGVyLT5zZXRT
aGFyZWRNZW1vcnkoaXBjSGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggYWM5ODVkZWZh
YmM0ZTFjNDlkNjcxNTUyNDNkYTUzMDQ3NjlkYTNmZS4uNGQ2YjhmNWMxNzE5MWJmNzUwMTkyOGI4
ZDY4MDFlODQwZTk5N2QwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIFJlbW90
ZU1lZGlhUmVjb3JkZXI6OlJlbW90ZU1lZGlhUmVjb3JkZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvCiAgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ICAgICwgbV93cml0ZXIoV1RGTW92ZSh3cml0ZXIpKQorICAgICwgbV9zaGFyZWRWaWRlb0ZyYW1l
UmVhZGVyKFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhl
YXAoKSB9KQogICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAgICAgaWYgKHJlY29yZEF1ZGlvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGU2ZmM2NzdjNzBjZDFkNzQ5
YzY5N2Q2MjFkZTE5YTM1YmYyNGVmYTkuLmQxZTQ3YWU1ODllZjZkZTI1NmZkZWRjZWYyOTM4ZjBj
YTc4MGQ2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2UKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAobV9ncHVDb25uZWN0
aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCisgICAgLCBtX3NoYXJlZFZpZGVvRnJhbWVSZWFk
ZXIoJm1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIEFTU0VS
VChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9CkBAIC0xMTksNDIgKzExOSw5IEBAIHZv
aWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
JiYgc2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWUo
U2hhcmVkVmlkZW9GcmFtZSYmIGZyYW1lKQogewotICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBtX3Zp
ZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZShzYW1wbGUpLCBkZWZhdWx0VGltZW91
dCk7Ci0gICAgaWYgKCFtZWRpYVNhbXBsZSkgewotICAgICAgICAvLyBJbiBjYXNlIG9mIEdQVVBy
b2Nlc3MgY3Jhc2gsIHdlIG1pZ2h0IGVucXVldWUgcHJldmlvdXMgR1BVUHJvY2VzcyBzYW1wbGVz
LCBpZ25vcmUgdGhlbS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQoaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpOwotICAgIGlmICghaXM8TWVkaWFTYW1wbGVB
VkZPYmpDPihtZWRpYVNhbXBsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGF2Zk1l
ZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigqbWVkaWFTYW1wbGUpOwot
ICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoYXZmTWVkaWFT
YW1wbGUpOwotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlU2FtcGxlKGF2
Zk1lZGlhU2FtcGxlKTsKLX0KLQotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBs
ZSkKLXsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKLSAgICBpZiAoIXJlbW90ZVNh
bXBsZS5zdXJmYWNlKCkpIHsKLSAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1fc2hhcmVkVmlk
ZW9GcmFtZVJlYWRlci5yZWFkKCk7Ci0gICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgc2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVh
dGVJbWFnZVNhbXBsZShXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgcmVtb3RlU2FtcGxlLnJvdGF0aW9u
KCksIHJlbW90ZVNhbXBsZS5taXJyb3JlZCgpLCByZW1vdGVTYW1wbGUudGltZSgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSByZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQo
KSkKLSAgICAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGUocmVtb3RlU2FtcGxlLnZpZGVvRm9ybWF0KCkpOwotCi0gICAgICAgIEFT
U0VSVChtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKTsKLSAgICAgICAgaWYgKCFtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNhbXBsZSA9IG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHJlbW90ZVNhbXBsZSk7Ci0gICAg
fQotCisgICAgYXV0byBzYW1wbGUgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZChXVEZN
b3ZlKGZyYW1lKSk7CiAgICAgQVNTRVJUKHNhbXBsZSk7CiAgICAgaWYgKCFzYW1wbGUpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDgwMmM5MGZl
OWViNjY0YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2YxZGIuLjY5MmI1MTFmOTZlZTk5YzkwOTdjOTU5
ZTM4YzA3NTlkMDU4OTkyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAt
NDUsNyArNDUsNiBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotY2xhc3MgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6
IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03Nyw4ICs3Niw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBw
YXVzZSgpOwotICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSYmKTsKLSAgICB2b2lkIGVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSYmKTsKKyAgICB2b2lkIGVucXVldWUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKICAgICB2b2lk
IGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2Vt
YXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1l
bW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtOTcsNyArOTUsNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBTaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKLSAgICBSZWY8UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAgICAgVGhy
ZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsKIAogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggM2Nh
MWY5MzI3MDcyN2RlMGMyYjc1NDQ3YWI4OWI2NDYzMmFiYTcxOS4uNzMxMGViYWY5YTJmOTE1ODBl
MWZkODFjZDlkYTJiNjY5ODBlZmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIubWVzc2FnZXMuaW4KQEAgLTMyLDggKzMyLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5k
c0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uKQogICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkK
LSAgICBFbnF1ZXVlU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ug
c2FtcGxlKQotICAgIEVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBz
YW1wbGUpCisgICAgRW5xdWV1ZShzdHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1l
KQogICAgIENsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKICAgICBQbGF5KCkKICAgICBQYXVzZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3Iu
Y3BwCmluZGV4IGYyMWQxMThjODIwMjIyYmFjY2QxMmY3ZmYwY2E2MjFlZjQ4MWJjNGQuLjU0ZDJj
OTcxZDg1ZTAzZTkwNDVhM2M1YzdmYmI2MTFhMGZjNzVhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoVklERU8pCiAKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgog
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKQEAgLTQyLDYgKzQzLDcgQEAgUmVmPFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I+IFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHlQcm8KIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNz
b3I6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgOiBtX2Nvbm5lY3Rpb25JRChjb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS51bmlxdWVJRCgpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgi
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSIsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50
ZXJhY3RpdmUpKQorICAgICwgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyKG51bGxwdHIpCiB7CiAg
ICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwogICAgIGNvbm5lY3Rpb24uY29ubmVjdGlv
bigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVl
LCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGU4NDBjZDI4OTU3
Y2E5YTdiMzQ3MTAyYjRjM2ViMjg3Y2M4ZWMxNGIuLjU2MTI3NjMwYjFjYzNiODMwZDg4MGRiMTEx
MWI3OWM3N2EyMGZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMTI4
LDM1ICsxMjgsMTkgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6UGF1c2UgeyB9LCBtX2lkZW50aWZpZXIpOwogfQogCi1ib29sIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Y29weVNoYXJlZFZpZGVvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcikKLXsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShwaXhlbEJ1ZmZlciwKLSAg
ICAgICAgW3RoaXNdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIpOyB9LAotICAgICAgICBbdGhpc10o
YXV0byYgaGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0s
IG1faWRlbnRpZmllcik7IH0KLSAgICApOwotfQotCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIGlmIChtX3Bh
dXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94
eT4oc2FtcGxlKSkgewotICAgICAgICBhdXRvJiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1v
dGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsg
cmVtb3RlU2FtcGxlLnJlYWQoKSB9LCBtX2lkZW50aWZpZXIpOworICAgIGF1dG8gc2hhcmVkVmlk
ZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShzYW1wbGUsCisgICAgICAg
IFt0aGlzXShhdXRvJiBzZW1hcGhvcmUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhv
cmUgeyBzZW1hcGhvcmUgfSwgbV9pZGVudGlmaWVyKTsgfSwKKyAgICAgICAgW3RoaXNdKGF1dG8m
IGhhbmRsZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRsZSB9LCBtX2lk
ZW50aWZpZXIpOyB9CisgICAgKTsKKyAgICBpZiAoIXNoYXJlZFZpZGVvRnJhbWUpCiAgICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2Ft
cGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1
cmZhY2U6Ok5vKTsKLSAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7Ci0gICAgICAg
IC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZp
ZGVvIGZyYW1lLgotICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKHJlbW90ZVNhbXBs
ZS0+aW1hZ2VCdWZmZXIoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OkVucXVldWVTYW1wbGVDViB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6RW5xdWV1ZSB7ICpzaGFyZWRWaWRlb0ZyYW1lIH0sIG1faWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDA0NDRlY2YyYjg2Mjc5NDQzMjExMTNlNjlkMjZi
MTJiMjU1YmZhYzAuLjVlODQzNGE5ZjQyNDQ4MGQxMDIyZTQ1YWU4Yjg2OTkzMzQ2NzEzY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC03NSw3ICs3NSw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JikgZmluYWw7CiAKICAgICB2b2lkIHNldERpZEZhaWwoYm9vbCk7Ci0gICAgYm9vbCBjb3B5U2hh
cmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIAogICAgIEdQVVByb2Nlc3NDb25uZWN0
aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFdlYWtQdHI8U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAppbmRleCBhNzFjYTA4
MTIwOGJkNTFlMTRlOTY5ZjYxMDIyOTU4YjJhZDg1MmU2Li5hMzUwNmU4YTYzYWZhZTAyNDEyNDdj
NjY0OWVlNjYxMWFhOWRiYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcApAQCAtMjksOSArMjksMTcgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklE
RU8pCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkVmlkZW9GcmFtZUluZm8uaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAorI2lu
Y2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29y
ZVZpZGVvU29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtODAsNiArODgsMjYgQEAgYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVy
OjpwcmVwYXJlV3JpdGluZyhjb25zdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbyYgaW5mbywgY28KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lPiBTaGFy
ZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShNZWRpYVNhbXBsZSYgZnJhbWUsIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlD
YWxsYmFjaykKK3sKKyAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBmcmFt
ZS5wcmVzZW50YXRpb25UaW1lKCksIGZyYW1lLnZpZGVvTWlycm9yZWQoKSwgZnJhbWUudmlkZW9S
b3RhdGlvbigpLCBudWxscHRyIH07CisgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4o
ZnJhbWUpKSB7CisgICAgICAgIHNoYXJlZFZpZGVvRnJhbWUuYnVmZmVyID0gZG93bmNhc3Q8UmVt
b3RlVmlkZW9GcmFtZVByb3h5PihmcmFtZSkucmVhZCgpOworICAgICAgICByZXR1cm4gc2hhcmVk
VmlkZW9GcmFtZTsKKyAgICB9CisgICAgaWYgKGlzPE1lZGlhU2FtcGxlQVZGT2JqQz4oZnJhbWUp
KSB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9i
akM+KGZyYW1lKS5waXhlbEJ1ZmZlcigpOworICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9
IHBpeGVsQnVmZmVyID8gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShwaXhlbEJ1ZmZlcikgOiBu
dWxscHRyOworICAgICAgICBpZiAoc3VyZmFjZSkgeworICAgICAgICAgICAgc2hhcmVkVmlkZW9G
cmFtZS5idWZmZXIgPSBNYWNoU2VuZFJpZ2h0OjphZG9wdChJT1N1cmZhY2VDcmVhdGVNYWNoUG9y
dChzdXJmYWNlKSk7CisgICAgICAgICAgICByZXR1cm4gc2hhcmVkVmlkZW9GcmFtZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiAoIXdyaXRlKGZyYW1lLnBpeGVsQnVmZmVyKCksIG5ld1NlbWFw
aG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjaykpCisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgcmV0dXJuIHNoYXJlZFZpZGVvRnJhbWU7Cit9CisKIGJvb2wgU2hhcmVkVmlkZW9GcmFtZVdy
aXRlcjo6d3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgRnVuY3Rpb248
dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxi
YWNrKQogewogICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tQ1ZQaXhl
bEJ1ZmZlcihwaXhlbEJ1ZmZlcik7CkBAIC05NCw3ICsxMjIsNyBAQCBib29sIFNoYXJlZFZpZGVv
RnJhbWVXcml0ZXI6OndyaXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0
IEZ1bmN0aQogewogICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tVmlk
ZW9GcmFtZShmcmFtZSk7CiAgICAgaWYgKCFwcmVwYXJlV3JpdGluZyhpbmZvLCBuZXdTZW1hcGhv
cmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gaW5mby53cml0ZVZpZGVvRnJhbWUoZnJh
bWUsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3N0b3JhZ2UtPmRhdGEoKSkpOwogfQpAQCAtMTA2
LDYgKzEzNCwxMiBAQCB2b2lkIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OmRpc2FibGUoKQogICAg
IG1fc2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAorU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6U2hh
cmVkVmlkZW9GcmFtZVJlYWRlcihSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYg
b2JqZWN0SGVhcCwgVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCB1c2VJT1N1cmZhY2VCdWZmZXJQb29s
KQorICAgIDogbV9vYmplY3RIZWFwKFdURk1vdmUob2JqZWN0SGVhcCkpCisgICAgLCBtX3VzZUlP
U3VyZmFjZUJ1ZmZlclBvb2wodXNlSU9TdXJmYWNlQnVmZmVyUG9vbCkKK3sKK30KKwogUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OnJlYWQoKQogewog
ICAgIGlmICghbV9zdG9yYWdlKQpAQCAtMTI5LDYgKzE2MywzNCBAQCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6cmVhZCgpCiAgICAgcmV0dXJuIGlu
Zm8tPmNyZWF0ZVBpeGVsQnVmZmVyRnJvbU1lbW9yeShkYXRhICsgU2hhcmVkVmlkZW9GcmFtZUlu
Zm9FbmNvZGluZ0xlbmd0aCwgcGl4ZWxCdWZmZXJQb29sKCppbmZvKSk7CiB9CiAKK1JlZlB0cjxN
ZWRpYVNhbXBsZT4gU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6cmVhZChTaGFyZWRWaWRlb0ZyYW1l
JiYgc2hhcmVkVmlkZW9GcmFtZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3dpdGNoT24o
V1RGTW92ZShzaGFyZWRWaWRlb0ZyYW1lLmJ1ZmZlciksCisgICAgW3RoaXNdKFJlbW90ZVZpZGVv
RnJhbWVSZWFkUmVmZXJlbmNlJiYgcmVmZXJlbmNlKSAtPiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4geworICAgICAgICBBU1NFUlQobV9vYmplY3RIZWFwKTsKKyAgICAgICAgaWYgKCFtX29i
amVjdEhlYXApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHNh
bXBsZSA9IG1fb2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUocmVmZXJlbmNlKSwgMF9zKTsKKyAg
ICAgICAgQVNTRVJUKHNhbXBsZSAmJiBzYW1wbGUtPnBpeGVsQnVmZmVyKCkpOworICAgICAgICBp
ZiAoIXNhbXBsZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c2FtcGxlLT5waXhlbEJ1ZmZlcigpOworICAgIH0gLCBbXShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJp
Z2h0KSAtPiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4geworICAgICAgICBhdXRvIHN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzZW5k
UmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgICAgIGlmICghc3Vy
ZmFjZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpLnZhbHVlX29yKG51bGxw
dHIpOworICAgIH0sIFt0aGlzXShzdGQ6Om51bGxwdHJfdCByZXByZXNlbnRhdGlvbikgLT4gUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHsKKyAgICAgICAgcmV0dXJuIHJlYWQoKTsKKyAgICB9
KTsKKworICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZShw
aXhlbEJ1ZmZlciksIHNoYXJlZFZpZGVvRnJhbWUucm90YXRpb24sIHNoYXJlZFZpZGVvRnJhbWUu
bWlycm9yZWQsIHNoYXJlZFZpZGVvRnJhbWUudGltZSk7Cit9CisKIENWUGl4ZWxCdWZmZXJQb29s
UmVmIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OnBpeGVsQnVmZmVyUG9vbChjb25zdCBTaGFyZWRW
aWRlb0ZyYW1lSW5mbyYgaW5mbykKIHsKICAgICBpZiAobV91c2VJT1N1cmZhY2VCdWZmZXJQb29s
ID09IFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2w6Ok5vKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCmluZGV4IGFlYmI3OWNl
MmRlZWZkNWJmM2ZiNDU3ZGYyZTAyZTgyMmRlZGZjOTQuLjAzODU1ZjdiNDE4NDJlNzFlYTJiNGQ4
YTJlZjgwZjFkNjA2NDVjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklERU8pCiAK
ICNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFTYW1wbGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KQEAgLTQ2LDExICs0OCwyNCBA
QCBjbGFzcyBWaWRlb0ZyYW1lOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA7CisKK3N0cnVjdCBTaGFyZWRWaWRlb0ZyYW1lIHsKKyAgICBN
ZWRpYVRpbWUgdGltZTsKKyAgICBib29sIG1pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSwgTWFjaFNlbmRSaWdodD4gYnVmZmVy
OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNo
YXJlZFZpZGVvRnJhbWU+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiBjbGFzcyBTaGFyZWRWaWRl
b0ZyYW1lV3JpdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyKCk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZp
ZGVvRnJhbWU+IHdyaXRlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgY29uc3QgRnVuY3Rpb248dm9p
ZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmKT4mKTsKICAgICBib29sIHdyaXRlKENWUGl4ZWxCdWZmZXJSZWYsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAjaWYgVVNFKExJQldFQlJUQykK
ICAgICBib29sIHdyaXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CkBAIC03MiwxNiArODcsMTggQEAgY2xhc3MgU2hhcmVk
VmlkZW9GcmFtZVJlYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBVc2VJT1N1cmZhY2VCdWZmZXJQb29sIHsgTm8sIFllcyB9OwotICAg
IGV4cGxpY2l0IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIoVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCA9
IFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2w6Olllcyk7CisgICAgZXhwbGljaXQgU2hhcmVkVmlkZW9G
cmFtZVJlYWRlcihSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYsIFVzZUlPU3Vy
ZmFjZUJ1ZmZlclBvb2wgPSBVc2VJT1N1cmZhY2VCdWZmZXJQb29sOjpZZXMpOwogCiAgICAgdm9p
ZCBzZXRTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpIHsgbV9zZW1hcGhvcmUg
PSBXVEZNb3ZlKHNlbWFwaG9yZSk7IH0KICAgICBib29sIHNldFNoYXJlZE1lbW9yeShjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IHJlYWQoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHJlYWQoU2hhcmVk
VmlkZW9GcmFtZSYmKTsKIAogcHJpdmF0ZToKICAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhl
bEJ1ZmZlclBvb2woY29uc3QgV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFtZUluZm8mKTsKIAorICAg
IFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOwogICAgIFVz
ZUlPU3VyZmFjZUJ1ZmZlclBvb2wgbV91c2VJT1N1cmZhY2VCdWZmZXJQb29sOwogICAgIElQQzo6
U2VtYXBob3JlIG1fc2VtYXBob3JlOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc3RvcmFn
ZTsKQEAgLTkyLDkgKzEwOSw1NiBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fYnVmZmVyUG9v
bEhlaWdodCB7IDAgfTsKIH07CiAKLWlubGluZSBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpTaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyKFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgdXNlSU9TdXJmYWNlQnVm
ZmVyUG9vbCkKLSAgICA6IG1fdXNlSU9TdXJmYWNlQnVmZmVyUG9vbCh1c2VJT1N1cmZhY2VCdWZm
ZXJQb29sKQordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBTaGFyZWRWaWRlb0ZyYW1lOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHRpbWU7Cisg
ICAgZW5jb2RlciA8PCBtaXJyb3JlZDsKKyAgICBlbmNvZGVyIDw8IHJvdGF0aW9uOworCisgICAg
c3dpdGNoT24oYnVmZmVyLAorICAgIFsmXShzdGQ6Om51bGxwdHJfdCByZXByZXNlbnRhdGlvbikg
eworICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTA7CisgICAgfSwgWyZdKGNvbnN0IFJlbW90
ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiByZWZlcmVuY2UpIHsKKyAgICAgICAgZW5jb2RlciA8
PCAodWludDhfdCkxOworICAgICAgICBlbmNvZGVyIDw8IHJlZmVyZW5jZTsKKyAgICB9ICwgWyZd
KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlbmRSaWdodCkgeworICAgICAgICBlbmNvZGVyIDw8ICh1
aW50OF90KTI7CisgICAgICAgIGVuY29kZXIgPDwgc2VuZFJpZ2h0OworICAgIH0pOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNo
YXJlZFZpZGVvRnJhbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogeworICAgIFNoYXJlZFZp
ZGVvRnJhbWUgZnJhbWU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZS50aW1lKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWUubWlycm9y
ZWQpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFt
ZS5yb3RhdGlvbikpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICB1aW50OF90IGJ1ZmZlclR5
cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJUeXBlKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIGlmIChidWZmZXJUeXBlID4gMikKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGlmIChidWZmZXJUeXBlID09IDEpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVmZXJlbmNlOworICAgICAgICBkZWNvZGVyID4+IHJl
ZmVyZW5jZTsKKyAgICAgICAgaWYgKCFyZWZlcmVuY2UpCisgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICBmcmFtZS5idWZmZXIgPSBXVEZNb3ZlKCpyZWZlcmVuY2UpOworICAgIH0gZWxz
ZSBpZiAoYnVmZmVyVHlwZSA9PSAyKSB7CisgICAgICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlbmRSaWdodCkpCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICBmcmFtZS5idWZmZXIgPSBXVEZNb3ZlKHNlbmRSaWdodCk7Cisg
ICAgfQorICAgIHJldHVybiBmcmFtZTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452965</attachid>
            <date>2022-02-23 05:16:53 -0800</date>
            <delta_ts>2022-02-23 08:01:24 -0800</delta_ts>
            <desc>Post-commit changes</desc>
            <filename>bug-237025-20220223141652.patch</filename>
            <type>text/plain</type>
            <size>7177</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlODRjODI0YTk5NzkyM2E3
Zjc5YjJlZTFkNzc3ZjM4ZmQ3MzI2YTIuLjI0MGIwMjJmMzIwZjg4N2ZhY2FkMTExZjc5NTViYTA0
MjNkNGVhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjItMDItMjMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSBzaG91bGQgbm90IGNoYW5nZSBtZWRpYSBzYW1wbGVz
IG93bmVkIGJ5IGl0cyBvYmplY3QgaGVhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MDI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTM0MzQ0
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGVk
IGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3IyOTAzNTggYWNjb3JkaW5nIGNvbW1lbnRzIGdp
dmVuIGR1cmluZyByZXZpZXcuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxzdGQ6Om51bGxwdHJfdD46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpudWxscHRyX3Q+OjpkZWNvZGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eVByb2Nlc3Nvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OlNoYXJlZFZpZGVv
RnJhbWVSZWFkZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRl
b0ZyYW1lLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWU6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWU6OmRlY29kZSk6CisKIDIwMjIt
MDItMjMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBU
aHJlYWQgc2FmZXR5IGFuYWx5c2lzIG1hY3JvcyBhcmUgY29uZnVzaW5nIGZvciBub24tTG9jayB1
c2UtY2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmlu
ZGV4IDcxZTUyMjhiZjYwODVmZWZlMDI3OGU2YjFhZjM1NTU5Mzk3OGI4ZjYuLmIzZDYyNTFkMDUy
NjliNjk0Y2MwYzUwOWQyMDY2M2U4ZDA2YzU4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtODUyLDQgKzg1Miw5IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8c3RkOjptb25vc3RhdGU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6bnVsbHB0cl90PiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsgfQorICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIHN0ZDo6bnVsbHB0cl90
JikgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwCmluZGV4
IDU0ZDJjOTcxZDg1ZTAzZTkwNDVhM2M1YzdmYmI2MTFhMGZjNzVhNzkuLmFkOTcxMzhmZDI4ZTg2
ZDFiZTFhZDNiYTlhNGJkOTRkNmVjY2EwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwCkBAIC00Myw3ICs0Myw2IEBAIFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yPiBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5UHJvCiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJv
Y2Vzc29yOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIDogbV9jb25uZWN0aW9uSUQoY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkudW5pcXVlSUQoKSkKICAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVh
dGUoIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkiLCBXb3JrUXVldWU6OlFPUzo6VXNl
ckludGVyYWN0aXZlKSkKLSAgICAsIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcihudWxscHRyKQog
ewogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9x
dWV1ZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCmluZGV4IGEzNTA2ZThhNjNhZmFlMDI0MTI0N2M2
NjQ5ZWU2NjExYWE5ZGJjMWEuLjI4NDM0ZTA1YjNhYTI1ZmVhYzUyYWUxYmRhOGRkODljOWM2ODc3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJl
ZFZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NoYXJlZFZpZGVvRnJhbWUuY3BwCkBAIC05NiwxMSArOTYsMTEgQEAgc3RkOjpvcHRpb25hbDxT
aGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShNZWRpYVNhbXBs
ZSYgZnJhbWUKICAgICAgICAgcmV0dXJuIHNoYXJlZFZpZGVvRnJhbWU7CiAgICAgfQogICAgIGlm
IChpczxNZWRpYVNhbXBsZUFWRk9iakM+KGZyYW1lKSkgewotICAgICAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihmcmFtZSkucGl4ZWxCdWZmZXIoKTsK
LSAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBwaXhlbEJ1ZmZlciA/IENWUGl4ZWxCdWZm
ZXJHZXRJT1N1cmZhY2UocGl4ZWxCdWZmZXIpIDogbnVsbHB0cjsKLSAgICAgICAgaWYgKHN1cmZh
Y2UpIHsKLSAgICAgICAgICAgIHNoYXJlZFZpZGVvRnJhbWUuYnVmZmVyID0gTWFjaFNlbmRSaWdo
dDo6YWRvcHQoSU9TdXJmYWNlQ3JlYXRlTWFjaFBvcnQoc3VyZmFjZSkpOwotICAgICAgICAgICAg
cmV0dXJuIHNoYXJlZFZpZGVvRnJhbWU7CisgICAgICAgIGlmIChhdXRvIHBpeGVsQnVmZmVyID0g
ZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihmcmFtZSkucGl4ZWxCdWZmZXIoKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UocGl4
ZWxCdWZmZXIpKSB7CisgICAgICAgICAgICAgICAgc2hhcmVkVmlkZW9GcmFtZS5idWZmZXIgPSBN
YWNoU2VuZFJpZ2h0OjphZG9wdChJT1N1cmZhY2VDcmVhdGVNYWNoUG9ydChzdXJmYWNlKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNoYXJlZFZpZGVvRnJhbWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKCF3cml0ZShmcmFtZS5waXhlbEJ1ZmZlcigpLCBuZXdT
ZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQpAQCAtMTQwLDYgKzE0MCwxMCBA
QCBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyKFJlZlB0cjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcAogewogfQogCitTaGFyZWRWaWRlb0ZyYW1lUmVhZGVy
OjpTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyKCkKK3sKK30KKwogUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OnJlYWQoKQogewogICAgIGlmICghbV9zdG9y
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oCmluZGV4IDAzODU1ZjdiNDE4NDJlNzFlYTJiNGQ4YTJlZjgwZjFkNjA2
NDVjMWEuLjgwMGQzZWY5MjZmYjJhY2FmMTI3N2JjOTBjYTdkYmI0MWYyOTFmM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmgKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciB7CiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBVc2VJT1N1cmZhY2VCdWZmZXJQb29sIHsgTm8sIFllcyB9
OwogICAgIGV4cGxpY2l0IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIoUmVmUHRyPFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwPiYmLCBVc2VJT1N1cmZhY2VCdWZmZXJQb29sID0gVXNlSU9TdXJmYWNl
QnVmZmVyUG9vbDo6WWVzKTsKKyAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyKCk7CiAKICAgICB2
b2lkIHNldFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkgeyBtX3NlbWFwaG9y
ZSA9IFdURk1vdmUoc2VtYXBob3JlKTsgfQogICAgIGJvb2wgc2V0U2hhcmVkTWVtb3J5KGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgog
ICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChjb25zdCBXZWJDb3JlOjpT
aGFyZWRWaWRlb0ZyYW1lSW5mbyYpOwogCiAgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwPiBtX29iamVjdEhlYXA7Ci0gICAgVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCBtX3VzZUlP
U3VyZmFjZUJ1ZmZlclBvb2w7CisgICAgVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCBtX3VzZUlPU3Vy
ZmFjZUJ1ZmZlclBvb2wgeyBVc2VJT1N1cmZhY2VCdWZmZXJQb29sOjpZZXMgfTsKICAgICBJUEM6
OlNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3N0b3Jh
Z2U7CiAKQEAgLTExNCwxNyArMTE1LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBT
aGFyZWRWaWRlb0ZyYW1lOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IHRpbWU7CiAgICAgZW5jb2RlciA8PCBtaXJyb3JlZDsKICAgICBlbmNvZGVyIDw8IHJv
dGF0aW9uOwotCi0gICAgc3dpdGNoT24oYnVmZmVyLAotICAgIFsmXShzdGQ6Om51bGxwdHJfdCBy
ZXByZXNlbnRhdGlvbikgewotICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTA7Ci0gICAgfSwg
WyZdKGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiByZWZlcmVuY2UpIHsKLSAg
ICAgICAgZW5jb2RlciA8PCAodWludDhfdCkxOwotICAgICAgICBlbmNvZGVyIDw8IHJlZmVyZW5j
ZTsKLSAgICB9ICwgWyZdKGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlbmRSaWdodCkgewotICAgICAg
ICBlbmNvZGVyIDw8ICh1aW50OF90KTI7Ci0gICAgICAgIGVuY29kZXIgPDwgc2VuZFJpZ2h0Owot
ICAgIH0pOworICAgIGVuY29kZXIgPDwgYnVmZmVyOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJhbWU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTM5LDI1ICsxMzAsOSBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJh
bWU6OmRlY29kZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWUucm90YXRpb24pKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgdWludDhfdCBidWZmZXJUeXBlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYnVmZmVyVHlwZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAo
YnVmZmVyVHlwZSA+IDIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZS5idWZmZXIpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGJ1ZmZlclR5cGUgPT0gMSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiByZWZlcmVuY2U7
Ci0gICAgICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlOwotICAgICAgICBpZiAoIXJlZmVyZW5jZSkK
LSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGZyYW1lLmJ1ZmZlciA9IFdURk1vdmUo
KnJlZmVyZW5jZSk7Ci0gICAgfSBlbHNlIGlmIChidWZmZXJUeXBlID09IDIpIHsKLSAgICAgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2Vu
ZFJpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGZyYW1lLmJ1ZmZlciA9
IFdURk1vdmUoc2VuZFJpZ2h0KTsKLSAgICB9CiAgICAgcmV0dXJuIGZyYW1lOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>