<?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>168898</bug_id>
          
          <creation_ts>2017-02-26 22:06:15 -0800</creation_ts>
          <short_desc>[WebRTC] Fix remote audio rendering</short_desc>
          <delta_ts>2017-02-27 10:25:11 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>168860</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281273</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-26 22:06:15 -0800</bug_when>
    <thetext>[WebRTC] Fix remote audio rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281313</commentid>
    <comment_count>1</comment_count>
      <attachid>302825</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-26 23:43:18 -0800</bug_when>
    <thetext>Created attachment 302825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281394</commentid>
    <comment_count>2</comment_count>
      <attachid>302825</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-27 09:06:23 -0800</bug_when>
    <thetext>Comment on attachment 302825
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Test: webrtc/audio-peer-connection-webaudio.html

Great test!

&gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:95
&gt; +            m_audioSourceProvider-&gt;prepare(&amp;m_streamFormat);

OnData is called on one of webrtc threads (probably the network one).
audioSourceProvider getter method will probably be called on the main thread.
Shouldn&apos;t we execute this code in the main thread?

&gt; LayoutTests/webrtc/audio-peer-connection-webaudio.html:11
&gt; +        internals.useMockRTCPeerConnectionFactory(&quot;TwoRealPeerConnections&quot;);

Could you move this within the test block, just before the call to createConnections?
That may help if we add future tests in this file.

Btw, if one doesn&apos;t like async_test, promise_test can be used instead.
One would need to return the getUserMedia promise and create a new promise inside it.
The small benefit here would be the automatic handling of gum promise being rejected.
Not probably worth changing the test here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281396</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-27 09:15:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 302825 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=302825&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Test: webrtc/audio-peer-connection-webaudio.html
&gt; 
&gt; Great test!
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:95
&gt; &gt; +            m_audioSourceProvider-&gt;prepare(&amp;m_streamFormat);
&gt; 
&gt; OnData is called on one of webrtc threads (probably the network one).
&gt; audioSourceProvider getter method will probably be called on the main thread.
&gt; Shouldn&apos;t we execute this code in the main thread?

The getter will probably be called on the WebAudio thread, but WebAudioSourceProviderAVFObjC has a lock which protects against prepare() and provideInput() being called simultaneously, so this should be fine. (The provideInput() side is a try-lock.)

&gt; &gt; LayoutTests/webrtc/audio-peer-connection-webaudio.html:11
&gt; &gt; +        internals.useMockRTCPeerConnectionFactory(&quot;TwoRealPeerConnections&quot;);
&gt; 
&gt; Could you move this within the test block, just before the call to
&gt; createConnections?
&gt; That may help if we add future tests in this file.

Sure.

&gt; Btw, if one doesn&apos;t like async_test, promise_test can be used instead.
&gt; One would need to return the getUserMedia promise and create a new promise
&gt; inside it.
&gt; The small benefit here would be the automatic handling of gum promise being
&gt; rejected.
&gt; Not probably worth changing the test here.

Yeah, if I were to re-write this test, I&apos;d probably use the promise_test path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281398</commentid>
    <comment_count>4</comment_count>
      <attachid>302844</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-27 09:16:27 -0800</bug_when>
    <thetext>Created attachment 302844
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281412</commentid>
    <comment_count>5</comment_count>
      <attachid>302844</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-27 10:24:41 -0800</bug_when>
    <thetext>Comment on attachment 302844
Patch for landing

Clearing flags on attachment: 302844

Committed r213080: &lt;http://trac.webkit.org/changeset/213080&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302825</attachid>
            <date>2017-02-26 23:43:18 -0800</date>
            <delta_ts>2017-02-27 08:51:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168898-20170226234023.patch</filename>
            <type>text/plain</type>
            <size>46445</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZhZWJjNDFiZjEzZjlh
MmVlYTcxM2Q2ZGY3ZDU4MzExNmNiZGMzZi4uYTI4NmJmZGQyNDQzN2EwNzNkNDQ5ZGYzYTE3ODFl
YWVlNmE2MzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wMi0yNiAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBGaXggcmVt
b3RlIGF1ZGlvIHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5o
dG1sCisKKyAgICAgICAgRml4IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGJ5IG5vdCBiYWls
aW5nIG91dCBlYXJseSBpZiB0aGUgaW5wdXQgc2FtcGxlIHJhdGUgZG9lc24ndCBtYXRjaAorICAg
ICAgICB0aGUgQXVkaW9Db250ZXh0J3Mgc2FtcGxlIHJhdGU7IHRoZXJlJ3MgY29kZSBpbiBzZXRG
b3JtYXQoKSB0byBkbyB0aGUgc2FtcGxlIHJhdGUgY29udmVyc2lvbgorICAgICAgICBjb3JyZWN0
bHkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQpOgorCisgICAgICAgIEZpeCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QgYnkgbWFraW5n
IHRoZSBBdWRpb0NvbnZlcnRlciBpbnB1dCBwcm9jIGEgZnJlZSBmdW5jdGlvbiwgYW5kIHBhc3Np
bmcKKyAgICAgICAgaXRzIHJlZkNvbiBhIHN0cnVjdCBjb250YWluaW5nIG9ubHkgdGhlIGluZm9y
bWF0aW9uIGl0IG5lZWRzIHRvIHBlcmZvcm0gaXRzIHRhc2suIEJlY2F1c2UgdGhlCisgICAgICAg
IGNvbnZlcnNpb24gbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCBudW1iZXIgb2Ygb3V0cHV0IHNh
bXBsZXMgdGhhbiBpbnB1dCBvbmVzLCBqdXN0IGFzayB0bworICAgICAgICBnZW5lcmF0ZSB0aGUg
ZW50aXJlIGNhcGFjaXR5IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciwgYW5kIHNpZ25hbCB0aGF0IHRo
ZSBpbnB1dCBidWZmZXIgd2FzIGZ1bGx5CisgICAgICAgIGNvbnZlcnRlZCB3aXRoIGEgc3BlY2lh
bCByZXR1cm4gdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF1ZGlvQ29udmVydGVyRnJvbUFC
TENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29w
eUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb252ZXJ0
SW5wdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0
OjphdWRpb0NvbnZlcnRlckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0Lmg6CisKKyAgICAgICAgRml4IEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZSBieSB1cGRhdGluZyBib3RoIHRoZSBzYW1wbGVDb3VudCBhbmQgdGhlIHNh
bXBsZVRpbWUgYWZ0ZXIgZG9pbmcKKyAgICAgICAgYSBzYW1wbGUgcmF0ZSBjb252ZXJzaW9uIHRv
IHRha2UgaW50byBhY2NvdW50IHRoYXQgYm90aCB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgbWF5IGhh
dmUgY2hhbmdlZCwKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgdGltZVNjYWxlIG9mIHRoZSBzYW1w
bGVUaW1lLiBUaGlzIG1heSByZXN1bHQgaW4gc21hbGwgb2ZmLWJ5LW9uZSByb3VuZGluZyBlcnJv
cnMKKyAgICAgICAgZHVlIHRvIHRoZSBzYW1wbGUgcmF0ZSBjb252ZXJzaW9uIG9mIHNhbXBsZVRp
bWUsIHNvIHJlbWVtYmVyIHdoYXQgdGhlIG5leHQgZXhwZWN0ZWQgc2FtcGxlVGltZQorICAgICAg
ICBzaG91bGQgYmUsIGFuZCBjb3JyZWN0IHNhbXBsZVRpbWUgaWYgaXQgaXMgaW5kZWVkIG9mZi1i
eS1vbmUuIElmIHRoZSBwdWxsIG9wZXJhdGlvbiBoYXMgZ290dGVuCisgICAgICAgIGFoZWFkIG9m
IHRoZSBwdXNoIG9wZXJhdGlvbiwgZGVsYXkgdGhlIG5leHQgcHVsbCBieSB0aGUgZW1wdHkgYW1v
dW50IGJ5IHJvbGxpbmcgYmFjayB0aGUKKyAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQuIElu
dHJvZHVjZSB0aGUgc2FtZSBvZmZzZXQgYmVoYXZpb3IgZHVyaW5nIHB1bGwgb3BlcmF0aW9ucy4K
KworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBs
ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1
bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MpOgorCisgICAgICAgIEZpeCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgYnkgb2JleWluZyB0aGUgbV9tdXRlZCBwcm9wZXJ0eS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQpOgor
CisgICAgICAgIEZpeCBMaWJXZWJSVENBdWRpb01vZHVsZSBieSBzbGVlcGluZyBmb3IgdGhlIGNv
cnJlY3QgYW1vdW50IGFmdGVyIGVtaXR0aW5nIGZyYW1lcy4gUHJldmlvdXNseSwKKyAgICAgICAg
TGliV2ViUlRDQXVkaW9Nb2R1bGUgd291bGQgc2xlZXAgZm9yIGEgZml4ZWQgYW1vdW50IG9mIHRp
bWUsIHdoaWNoIG1lYW50IGl0IHdvdWxkIGdldCBzbG93bHkgb3V0CisgICAgICAgIG9mIHN5bmMg
d2hlbiBlbWl0dGluZyBmcmFtZXMgdG9vayBhIG5vbi16ZXJvIGFtb3VudCBvZiB0aW1lLiBOb3cs
IHRoZSBhbW91bnQgb2YgdGltZSBiZWZvcmUgdGhlCisgICAgICAgIG5leHQgY3ljbGUgc3RhcnRz
IGlzIGNvcnJlY3RseSBjYWxjdWxhdGVkLCBhbmQgdGhlbiBMaWJXZWJSVENBdWRpb01vZHVsZSBz
bGVlcHMgZm9yIGEgZHluYW1pYyBhbW91bnQKKyAgICAgICAgb2YgdGltZSBpbiBvcmRlciB0byB3
YWtlIHVwIGNvcnJlY3RseSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGN5Y2xlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9k
dWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0F1ZGlvTW9kdWxlOjpTdGFydFBs
YXlvdXRPbkF1ZGlvVGhyZWFkKToKKworICAgICAgICBGaXggQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hIGJ5IGp1c3QgdXNpbmcgdGhlIG91dHB1dCB1bml0J3MgcHJlZmVycmVkIGZv
cm1hdAorICAgICAgICBkZXNjcmlwdGlvbiAod2l0aCB0aGUgY3VycmVudCBzeXN0ZW0gc2FtcGxl
IHJhdGUpLCByYXRoZXIgdGhhbiB3aGF0ZXZlciBpcyB0aGUgY3VycmVudAorICAgICAgICBpbnB1
dCBkZXNjcmlwdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaDoKKworICAgICAgICBGaXggUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlIGJ5IGFjdHVhbGx5IGNyZWF0aW5nIGFuIEF1ZGlvU291cmNlUHJvdmlk
ZXIgd2hlbiBhc2tlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg6CisKKyAg
ICAgICAgRml4IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBieSB1c2luZyB0aGUgb3V0Z29p
bmcgZm9ybWF0IGRlc2NyaXB0aW9uIHJhdGhlciB0aGFuIHRoZQorICAgICAgICBpbmNvbWluZyBv
bmUgdG8gZGV0ZXJtaW5lIHRoZSBzYW1wbGUgcmF0ZSwgY2hhbm5lbCBjb3VudCwgc2FtcGxlIGJ5
dGUgc2l6ZSwgZXRjLiwgdG8gdXNlCisgICAgICAgIHdoZW4gZGVsaXZlcmluZyBkYXRhIHVwc3Ry
ZWFtIHRvIGxpYldlYlJUQy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpwdWxsQXVkaW9EYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmg6CisKKyAgICAgICAgRml4IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDIGJ5IHVz
aW5nIGEgQXVkaW9TYW1wbGVEYXRhU291cmNlIHRvIGRvIGZvcm1hdCBhbmQgc2FtcGxlCisgICAg
ICAgIHJhdGUgY29udmVyc2lvbiByYXRoZXIgdGhhbiB0cnlpbmcgdG8gZHVwbGljYXRlIGFsbCB0
aGF0IGNvZGUgYW5kIHVzZSBhIENBUmluZ0J1ZmZlciBhbmQgCisgICAgICAgIEF1ZGlvQ29udmVy
dGVyIGRpcmVjdGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJvdmlkZUlucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjp1bnByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisKKyAgICAgICAgRml4
IHRoZSBNb2NrTGliV2ViUlRDQXVkaW9UcmFjayBieSBwYXNzaW5nIGFsb25nIHRoZSBBZGRTaW5r
KCkgc2luayB0byBpdHMgQXVkaW9Tb3VyY2VJbnRlcmZhY2UsCisgICAgICAgIGFsbG93aW5nIHRo
ZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UgdG8gcHVzaCBkYXRhIGludG8gdGhlIGxpYldl
YlJUQyBuZXR3b3JrIHN0YWNrLiBBbHNvLAorICAgICAgICBtYWtlIHN1cmUgbV9lbmFibGVkIGlz
IGluaXRpYWxpemVkIHRvIGEgZ29vZCB2YWx1ZS4KKworICAgICAgICAqIHRlc3RpbmcvTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmg6CisKIDIwMTctMDItMjEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hIHNob3VsZCBub3QgZXhjbHVzaXZlbHkgbG9jayBpdHMgcmVhZCBhbmQgd3JpdGUgdGhyZWFk
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggZjY0MGE2ODI2Y2FjYjEzYjZjOGEx
YmFmODUzN2M5MDM3YjZmMmU1Ni4uZmUwNjE0N2EwY2IyYTVkMTg3YTI0YTQwOTMzZjA4MTg2NTM3
ODMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIHNhbXBs
ZS1yYXRlIG11c3QgYmUgZXF1YWwgdG8gdGhlIGNvbnRleHQncyBzYW1wbGUtcmF0ZS4KLSAgICBp
ZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IEF1ZGlvQ29udGV4dDo6
bWF4TnVtYmVyT2ZDaGFubmVscygpIHx8IHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSkg
eworICAgIGlmICghbnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gQXVkaW9D
b250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpIHsKICAgICAgICAgLy8gcHJvY2VzcygpIHdp
bGwgZ2VuZXJhdGUgc2lsZW5jZSBmb3IgdGhlc2UgdW5pbml0aWFsaXplZCB2YWx1ZXMuCiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoJXUs
ICVmKSAtIHVuaGFuZGxlZCBmb3JtYXQgY2hhbmdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51
bWJlck9mQ2hhbm5lbHMpLCBzb3VyY2VTYW1wbGVSYXRlKTsKICAgICAgICAgbV9zb3VyY2VOdW1i
ZXJPZkNoYW5uZWxzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKaW5kZXggYzE5ZWY3ZDk4ZmY1
Y2JkNDg2ZGEzMGM5NTU3OGRjYzJlNTYyMzFjNC4uNmY4ZTA5MDU4Mjk4YjBhYzJmYTFlY2EzOTFh
ZTdmY2NlNTc4M2Y1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKQEAgLTIxOCw0MiArMjE4LDQ4
IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKEF1ZGlvQnVmZmVyTGlzdCYg
YnVmZmVyLCBzaXplX3QgYnl0ZUNvdW50KQogICAgICAgICBtZW1zZXQoYnVmZmVyLm1CdWZmZXJz
W2ldLm1EYXRhLCAwLCBieXRlQ291bnQpOwogfQogCi1PU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3Q6OmNvbnZlcnRJbnB1dChVSW50MzIqIGlvTnVtYmVyRGF0YVBhY2tldHMsIEF1ZGlvQnVm
ZmVyTGlzdCogaW9EYXRhKQorc3RydWN0IEF1ZGlvQ29udmVydGVyRnJvbUFCTENvbnRleHQgewor
ICAgIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyOworICAgIHNpemVfdCBwYWNrZXRzQXZh
aWxhYmxlVG9Db252ZXJ0OworICAgIHNpemVfdCBieXRlc1BlclBhY2tldDsKK307CisKK3N0YXRp
YyBjb25zdCBPU1N0YXR1cyBrUmFuT3V0T2ZJbnB1dERhdGFTdGF0dXMgPSAnIW1vcic7CisKK3N0
YXRpYyBPU1N0YXR1cyBhdWRpb0NvbnZlcnRlckZyb21BQkxDYWxsYmFjayhBdWRpb0NvbnZlcnRl
clJlZiwgVUludDMyKiBpb051bWJlckRhdGFQYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0
YSwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqLCB2b2lkKiBpblJlZkNvbikKIHsKLSAg
ICBpZiAoIWlvTnVtYmVyRGF0YVBhY2tldHMgfHwgIWlvRGF0YSB8fCAhbV9jb252ZXJ0ZXJJbnB1
dEJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6cmVj
b25maWd1cmVJbnB1dCglcCkgaW52YWxpZCBpbnB1dCB0byBBdWRpb0NvbnZlcnRlcklucHV0Iiwg
dGhpcyk7CisgICAgaWYgKCFpb051bWJlckRhdGFQYWNrZXRzIHx8ICFpb0RhdGEgfHwgIWluUmVm
Q29uKSB7CisgICAgICAgIExPR19FUlJPUigiQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjphdWRpb0Nv
bnZlcnRlckNhbGxiYWNrKCkgaW52YWxpZCBpbnB1dCB0byBBdWRpb0NvbnZlcnRlcklucHV0Iik7
CiAgICAgICAgIHJldHVybiBrQXVkaW9Db252ZXJ0ZXJFcnJfVW5zcGVjaWZpZWRFcnJvcjsKICAg
ICB9CiAKLSAgICBzaXplX3QgcGFja2V0Q291bnQgPSBtX2NvbnZlcnRlcklucHV0QnVmZmVyLT5t
QnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9jb252ZXJ0ZXJJbnB1dEJ5dGVzUGVyUGFja2V0
OwotICAgIGlmICgqaW9OdW1iZXJEYXRhUGFja2V0cyA+IG1fc2FtcGxlQ2FwYWNpdHkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbnZlcnRJbnB1dCglcCkg
bm90IGVub3VnaCBpbnRlcm5hbCBzdG9yYWdlOiBuZWVkZWQgPSAlenUsIGF2YWlsYWJsZSA9ICVs
dSIsIHRoaXMsIChzaXplX3QpKmlvTnVtYmVyRGF0YVBhY2tldHMsIG1fc2FtcGxlQ2FwYWNpdHkp
OwotICAgICAgICByZXR1cm4ga0F1ZGlvQ29udmVydGVyRXJyX0ludmFsaWRJbnB1dFNpemU7Cisg
ICAgYXV0byYgY29udGV4dCA9ICpzdGF0aWNfY2FzdDxBdWRpb0NvbnZlcnRlckZyb21BQkxDb250
ZXh0Kj4oaW5SZWZDb24pOworICAgIGlmICghY29udGV4dC5wYWNrZXRzQXZhaWxhYmxlVG9Db252
ZXJ0KSB7CisgICAgICAgICppb051bWJlckRhdGFQYWNrZXRzID0gMDsKKyAgICAgICAgcmV0dXJu
IGtSYW5PdXRPZklucHV0RGF0YVN0YXR1czsKICAgICB9CiAKLSAgICAqaW9OdW1iZXJEYXRhUGFj
a2V0cyA9IHN0YXRpY19jYXN0PFVJbnQzMj4ocGFja2V0Q291bnQpOworICAgICppb051bWJlckRh
dGFQYWNrZXRzID0gc3RhdGljX2Nhc3Q8VUludDMyPihjb250ZXh0LnBhY2tldHNBdmFpbGFibGVU
b0NvbnZlcnQpOworCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGlvRGF0YS0+bU51bWJl
ckJ1ZmZlcnM7ICsraSkgewotICAgICAgICBpb0RhdGEtPm1CdWZmZXJzW2ldLm1EYXRhID0gbV9j
b252ZXJ0ZXJJbnB1dEJ1ZmZlci0+bUJ1ZmZlcnNbaV0ubURhdGE7Ci0gICAgICAgIGlvRGF0YS0+
bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSA9IG1fY29udmVydGVySW5wdXRCdWZmZXItPm1CdWZm
ZXJzW2ldLm1EYXRhQnl0ZVNpemU7CisgICAgICAgIGlvRGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGEg
PSBjb250ZXh0LmJ1ZmZlci5tQnVmZmVyc1tpXS5tRGF0YTsKKyAgICAgICAgaW9EYXRhLT5tQnVm
ZmVyc1tpXS5tRGF0YUJ5dGVTaXplID0gY29udGV4dC5wYWNrZXRzQXZhaWxhYmxlVG9Db252ZXJ0
ICogY29udGV4dC5ieXRlc1BlclBhY2tldDsKICAgICB9CisgICAgY29udGV4dC5wYWNrZXRzQXZh
aWxhYmxlVG9Db252ZXJ0ID0gMDsKIAogICAgIHJldHVybiAwOwogfQogCi1PU1N0YXR1cyBBdWRp
b1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQ29udmVydGVyQ2FsbGJhY2soQXVkaW9Db252ZXJ0ZXJS
ZWYsIFVJbnQzMiogaW9OdW1iZXJEYXRhUGFja2V0cywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEs
IEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCogaW5SZWZDb24pCi17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCo+KGluUmVmQ29uKS0+Y29u
dmVydElucHV0KGlvTnVtYmVyRGF0YVBhY2tldHMsIGlvRGF0YSk7Ci19Ci0KLU9TU3RhdHVzIEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oY29uc3QgQXVkaW9CdWZmZXJMaXN0JiBzb3Vy
Y2UsIEF1ZGlvQ29udmVydGVyUmVmIGNvbnZlcnRlcikKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6Y29weUZyb20oY29uc3QgQXVkaW9CdWZmZXJMaXN0JiBzb3VyY2UsIHNpemVfdCBm
cmFtZUNvdW50LCBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXIpCiB7CiAgICAgcmVzZXQoKTsK
IAogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBpbnB1dEZvcm1hdDsKICAgICBVSW50
MzIgcHJvcGVydHlEYXRhU2l6ZSA9IHNpemVvZihpbnB1dEZvcm1hdCk7CiAgICAgQXVkaW9Db252
ZXJ0ZXJHZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0
cmVhbURlc2NyaXB0aW9uLCAmcHJvcGVydHlEYXRhU2l6ZSwgJmlucHV0Rm9ybWF0KTsKLSAgICBt
X2NvbnZlcnRlcklucHV0Qnl0ZXNQZXJQYWNrZXQgPSBpbnB1dEZvcm1hdC5tQnl0ZXNQZXJQYWNr
ZXQ7Ci0gICAgU2V0Rm9yU2NvcGU8Y29uc3QgQXVkaW9CdWZmZXJMaXN0Kj4gc2NvcGVkSW5wdXRC
dWZmZXIobV9jb252ZXJ0ZXJJbnB1dEJ1ZmZlciwgJnNvdXJjZSk7CisgICAgQVNTRVJUKGZyYW1l
Q291bnQgPD0gc291cmNlLm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgLyBpbnB1dEZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQpOworCisgICAgQXVkaW9Db252ZXJ0ZXJGcm9tQUJMQ29udGV4dCBjb250
ZXh0IHsgc291cmNlLCBmcmFtZUNvdW50LCBpbnB1dEZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgfTsK
IAogI2lmICFMT0dfRElTQUJMRUQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gb3V0
cHV0Rm9ybWF0OwpAQCAtMjY3LDIyICsyNzMsMjIgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0Ojpjb3B5RnJvbShjb25zdCBBdWRpb0J1ZmZlckxpc3QmIHNvdXJjZSwgQXVkaW9Db24K
ICAgICB9CiAjZW5kaWYKIAotICAgIFVJbnQzMiBzYW1wbGVzQ29udmVydGVkID0gc3RhdGljX2Nh
c3Q8VUludDMyPihtX3NhbXBsZUNhcGFjaXR5KTsKLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0Nv
bnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKGNvbnZlcnRlciwgYXVkaW9Db252ZXJ0ZXJDYWxsYmFj
aywgdGhpcywgJnNhbXBsZXNDb252ZXJ0ZWQsIG1fYnVmZmVyTGlzdC0+bGlzdCgpLCBudWxscHRy
KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXVkaW9TYW1wbGVCdWZmZXJM
aXN0Ojpjb3B5RnJvbSglcCkgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciByZXR1cm5l
ZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwotICAgICAg
ICBtX3NhbXBsZUNvdW50ID0gc3RkOjptaW4obV9zYW1wbGVDYXBhY2l0eSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihzYW1wbGVzQ29udmVydGVkKSk7Ci0gICAgICAgIHplcm8oKTsKLSAgICAgICAgcmV0
dXJuIGVycjsKKyAgICBVSW50MzIgc2FtcGxlc0NvbnZlcnRlZCA9IG1fc2FtcGxlQ2FwYWNpdHk7
CisgICAgT1NTdGF0dXMgZXJyID0gQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlcihjb252
ZXJ0ZXIsIGF1ZGlvQ29udmVydGVyRnJvbUFCTENhbGxiYWNrLCAmY29udGV4dCwgJnNhbXBsZXND
b252ZXJ0ZWQsIG1fYnVmZmVyTGlzdC0+bGlzdCgpLCBudWxscHRyKTsKKyAgICBpZiAoIWVyciB8
fCBlcnIgPT0ga1Jhbk91dE9mSW5wdXREYXRhU3RhdHVzKSB7CisgICAgICAgIG1fc2FtcGxlQ291
bnQgPSBzYW1wbGVzQ29udmVydGVkOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBt
X3NhbXBsZUNvdW50ID0gc2FtcGxlc0NvbnZlcnRlZDsKLSAgICByZXR1cm4gMDsKKyAgICBMT0df
RVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oJXApIEF1ZGlvQ29udmVydGVy
RmlsbENvbXBsZXhCdWZmZXIgcmV0dXJuZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICBtX3NhbXBsZUNvdW50ID0gc3RkOjptaW4obV9zYW1wbGVD
YXBhY2l0eSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVzQ29udmVydGVkKSk7CisgICAgemVy
bygpOworICAgIHJldHVybiBlcnI7CiB9CiAKLU9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIEF1ZGlvQ29udmVydGVy
UmVmIGNvbnZlcnRlcikKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20o
QXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpemVfdCBmcmFtZUNvdW50LCBBdWRpb0Nv
bnZlcnRlclJlZiBjb252ZXJ0ZXIpCiB7Ci0gICAgcmV0dXJuIGNvcHlGcm9tKHNvdXJjZS5idWZm
ZXJMaXN0KCksIGNvbnZlcnRlcik7CisgICAgcmV0dXJuIGNvcHlGcm9tKHNvdXJjZS5idWZmZXJM
aXN0KCksIGZyYW1lQ291bnQsIGNvbnZlcnRlcik7CiB9CiAKIE9TU3RhdHVzIEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6Y29weUZyb20oQ0FSaW5nQnVmZmVyJiByaW5nQnVmZmVyLCBzaXplX3Qgc2Ft
cGxlQ291bnQsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlIG1v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmgKaW5kZXggZTEwNWJkMzljZjA4NDhmMjcwODhiYWIzMjg4MjJl
NGE4OWE5NTIzZC4uMWJjM2JhZDQwYTk4MzZjNzQxOGQwZWRhNjhlMmU2OTBkZjg3YjZkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVm
ZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nh
bXBsZUJ1ZmZlckxpc3QuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBs
eUdhaW4oZmxvYXQpOwogCiAgICAgT1NTdGF0dXMgY29weUZyb20oY29uc3QgQXVkaW9TYW1wbGVC
dWZmZXJMaXN0Jiwgc2l6ZV90IGNvdW50ID0gU0laRV9NQVgpOwotICAgIE9TU3RhdHVzIGNvcHlG
cm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYsIEF1ZGlvQ29udmVydGVyUmVmKTsKLSAgICBPU1N0
YXR1cyBjb3B5RnJvbShBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmLCBBdWRpb0NvbnZlcnRlclJlZik7
CisgICAgT1NTdGF0dXMgY29weUZyb20oY29uc3QgQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90IGZy
YW1lQ291bnQsIEF1ZGlvQ29udmVydGVyUmVmKTsKKyAgICBPU1N0YXR1cyBjb3B5RnJvbShBdWRp
b1NhbXBsZUJ1ZmZlckxpc3QmLCBzaXplX3QgZnJhbWVDb3VudCwgQXVkaW9Db252ZXJ0ZXJSZWYp
OwogICAgIE9TU3RhdHVzIGNvcHlGcm9tKENBUmluZ0J1ZmZlciYsIHNpemVfdCBmcmFtZUNvdW50
LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZSk7CiAKICAgICBP
U1N0YXR1cyBtaXhGcm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYsIHNpemVfdCBjb3Vu
dCA9IFNJWkVfTUFYKTsKQEAgLTc4LDE0ICs3OCw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KTsKIAotICAgIHN0YXRpYyBPU1N0YXR1cyBhdWRpb0NvbnZlcnRlckNhbGxiYWNrKEF1
ZGlvQ29udmVydGVyUmVmLCBVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBh
Y2tldERlc2NyaXB0aW9uKiosIHZvaWQqKTsKLSAgICBPU1N0YXR1cyBjb252ZXJ0SW5wdXQoVUlu
dDMyKiwgQXVkaW9CdWZmZXJMaXN0Kik7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uPiBtX2ludGVybmFsRm9ybWF0OwogCi0gICAgY29uc3QgQXVkaW9CdWZm
ZXJMaXN0KiBtX2NvbnZlcnRlcklucHV0QnVmZmVyIHsgbnVsbHB0ciB9OwotICAgIHVpbnQzMl90
IG1fY29udmVydGVySW5wdXRCeXRlc1BlclBhY2tldCB7IDAgfTsKLQogICAgIHVpbnQ2NF90IG1f
dGltZXN0YW1wIHsgMCB9OwogICAgIGRvdWJsZSBtX2hvc3RUaW1lIHsgLTEgfTsKICAgICBzaXpl
X3QgbV9zYW1wbGVDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCAxN2MxNjFlZTM0
YTQ0OWMxNTRiNDNkZjJjMGE0MWQyYmU2NWNkNGZmLi4xOWFmMDk3Njg1NDQyMzJiYTYwOWEzYmFj
ODVhOWUxNGNmNmUzNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC04MiwxMCArODIsMTIgQEAg
cHJvdGVjdGVkOgogICAgIE1lZGlhVGltZSBob3N0VGltZSgpIGNvbnN0OwogCiAgICAgdWludDY0
X3QgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQgeyAwIH07CisgICAgTWVkaWFUaW1lIG1fZXhwZWN0
ZWROZXh0UHVzaGVkU2FtcGxlVGltZSB7IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OworICAg
IE1lZGlhVGltZSBtX2V4cGVjdGVkTmV4dFB1bGxlZFNhbXBsZVRpbWUgeyBNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkgfTsKICAgICBkb3VibGUgbV9ob3N0VGltZSB7IC0xIH07CiAKICAgICBNZWRp
YVRpbWUgbV9pbnB1dFNhbXBsZU9mZnNldDsKLSAgICB1aW50NjRfdCBtX291dHB1dFNhbXBsZU9m
ZnNldCB7IDAgfTsKKyAgICBpbnQ2NF90IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IHsgMCB9OwogCiAg
ICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9jb252ZXJ0ZXI7CiAgICAgUmVmUHRyPEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdD4gbV9zY3JhdGNoQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggODRk
ODNlNGIzNTQ0ZDgxM2Y3YzFjNmFmZGZlZDVkNjdmMDM4OTUyNi4uY2I4MmMwZjg1YzQxMWY0OGRl
NmUwYmIzOTFkMjc5YjRmMDRkOGE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xNDEsMjQg
KzE0MSwyNyBAQCBNZWRpYVRpbWUgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpob3N0VGltZSgpIGNv
bnN0CiAKIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKGNv
bnN0IEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50
YXRpb25UaW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7CisgICAgTWVkaWFUaW1lIHNhbXBsZVRp
bWUgPSBwcmVzZW50YXRpb25UaW1lOworCiAgICAgY29uc3QgQXVkaW9CdWZmZXJMaXN0KiBzYW1w
bGVCdWZmZXJMaXN0OwogICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAgICBtX3NjcmF0Y2hC
dWZmZXItPnJlc2V0KCk7Ci0gICAgICAgIE9TU3RhdHVzIGVyciA9IG1fc2NyYXRjaEJ1ZmZlci0+
Y29weUZyb20oYnVmZmVyTGlzdCwgbV9jb252ZXJ0ZXIpOworICAgICAgICBPU1N0YXR1cyBlcnIg
PSBtX3NjcmF0Y2hCdWZmZXItPmNvcHlGcm9tKGJ1ZmZlckxpc3QsIHNhbXBsZUNvdW50LCBtX2Nv
bnZlcnRlcik7CiAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgc2FtcGxlQnVmZmVyTGlzdCA9IG1fc2NyYXRjaEJ1ZmZlci0+YnVmZmVyTGlzdCgpLmxpc3Qo
KTsKKyAgICAgICAgc2FtcGxlQ291bnQgPSBtX3NjcmF0Y2hCdWZmZXItPnNhbXBsZUNvdW50KCk7
CisgICAgICAgIHNhbXBsZVRpbWUgPSBwcmVzZW50YXRpb25UaW1lLnRvVGltZVNjYWxlKG1fb3V0
cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmRaZXJvKTsKICAgICB9IGVsc2UKICAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZidWZm
ZXJMaXN0OwogCi0gICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwor
ICAgIGlmIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUuaXNWYWxpZCgpICYmIGFicyht
X2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgLSBzYW1wbGVUaW1lKS50aW1lVmFsdWUoKSA9
PSAxKQorICAgICAgICBzYW1wbGVUaW1lID0gbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1l
OworICAgIG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZSA9IHNhbXBsZVRpbWUgKyBNZWRp
YVRpbWUoc2FtcGxlQ291bnQsIHNhbXBsZVRpbWUudGltZVNjYWxlKCkpOworCiAgICAgaWYgKG1f
aW5wdXRTYW1wbGVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAg
IG1faW5wdXRTYW1wbGVPZmZzZXQgPSBNZWRpYVRpbWUoMSAtIHNhbXBsZVRpbWUudGltZVZhbHVl
KCksIHNhbXBsZVRpbWUudGltZVNjYWxlKCkpOwotICAgICAgICBpZiAobV9pbnB1dFNhbXBsZU9m
ZnNldC50aW1lU2NhbGUoKSAhPSBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGRvIHRoaXMgd2l0aG91dCBjYWxs
aW5nIENNVGltZUNvbnZlcnRTY2FsZS4KLSAgICAgICAgICAgIG1faW5wdXRTYW1wbGVPZmZzZXQg
PSB0b01lZGlhVGltZShDTVRpbWVDb252ZXJ0U2NhbGUodG9DTVRpbWUobV9pbnB1dFNhbXBsZU9m
ZnNldCksIHNhbXBsZVRpbWUudGltZVNjYWxlKCksIGtDTVRpbWVSb3VuZGluZ01ldGhvZF9EZWZh
dWx0KSk7Ci0gICAgICAgIH0KICAgICAgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICJAQCBw
dXNoU2FtcGxlczogaW5wdXQgc2FtcGxlIG9mZnNldCBpcyAlbGxkLCBtX21heGltdW1TYW1wbGVD
b3VudCA9ICV6dSIsIG1faW5wdXRTYW1wbGVPZmZzZXQudGltZVZhbHVlKCksIG1fbWF4aW11bVNh
bXBsZUNvdW50KTsKICAgICB9CiAgICAgc2FtcGxlVGltZSArPSBtX2lucHV0U2FtcGxlT2Zmc2V0
OwpAQCAtMjY2LDExICsyNjksOSBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90JgogI2VuZGlmCiAK
ICAgICAgICAgaWYgKGZyYW1lc0F2YWlsYWJsZSA8IHNhbXBsZUNvdW50KSB7Ci0gICAgICAgICAg
ICBjb25zdCBkb3VibGUgdHdlbnR5TVMgPSAuMDI7Ci0gICAgICAgICAgICBkb3VibGUgc2FtcGxl
UmF0ZSA9IG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKTsKLSAgICAgICAgICAgIGF1
dG8gZGVsdGEgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lU3RhbXApIC0gZW5kRnJhbWU7Ci0g
ICAgICAgICAgICBpZiAoZGVsdGEgPiAwICYmIGRlbHRhIDwgc2FtcGxlUmF0ZSAqIHR3ZW50eU1T
KQotICAgICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0IC09IGRlbHRhOworICAgICAg
ICAgICAgaW50NjRfdCBkZWx0YSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTdGFtcCkgLSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihlbmRGcmFtZSk7CisgICAgICAgICAgICBpZiAoZGVsdGEgPiAw
KQorICAgICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0IC09IHN0ZDo6bWluPGludDY0
X3Q+KGRlbHRhLCBzYW1wbGVDb3VudCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZyYW1l
c0F2YWlsYWJsZSkgewpAQCAtMjk5LDggKzMwMCwxNSBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
cgogICAgIHVpbnQ2NF90IHN0YXJ0RnJhbWUgPSAwOwogICAgIHVpbnQ2NF90IGVuZEZyYW1lID0g
MDsKICAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBl
bmRGcmFtZSk7CisgICAgaWYgKG1fdHJhbnNpdGlvbmluZ0Zyb21QYXVzZWQpIHsKKyAgICAgICAg
bV9vdXRwdXRTYW1wbGVPZmZzZXQgPSB0aW1lU3RhbXAgKyAoZW5kRnJhbWUgLSBzYW1wbGVDb3Vu
dFBlckNodW5rKTsKKyAgICAgICAgbV90cmFuc2l0aW9uaW5nRnJvbVBhdXNlZCA9IGZhbHNlOwor
ICAgIH0KKworICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKKwogICAgIGlm
ICh0aW1lU3RhbXAgPCBzdGFydEZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHRpbWVTdGFtcCA9IHN0YXJ0RnJhbWU7CiAKICAgICBzdGFydEZyYW1lID0gdGltZVN0YW1wOwog
ICAgIHdoaWxlIChlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgPj0gc2FtcGxlQ291bnRQZXJDaHVuaykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGZmNTllNjgxYzdiNzI5MDliNWVkODRh
Mjk1NjBmYTEzOGMyMTAwY2QuLjk5YzBhMmMwNTE3MWQ5NWQ1ODE5YmQzYTQ1MjgxNGQzMTY1MmU5
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKGZsb2F0IHZv
bHVtZSkKIAogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogICAgIGZvciAoY29uc3QgYXV0byYgdHJh
Y2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCi0gICAgICAgIHRyYWNrLT5zZXRWb2x1bWUo
bV92b2x1bWUpOworICAgICAgICB0cmFjay0+c2V0Vm9sdW1lKG1fbXV0ZWQgPyAwIDogbV92b2x1
bWUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
TXV0ZWQoYm9vbCBtdXRlZCkKQEAgLTU4Miw2ICs1ODIsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVkOworICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sg
OiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIHRyYWNrLT5zZXRWb2x1bWUobV9t
dXRlZCA/IDAgOiBtX3ZvbHVtZSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpoYXNWaWRlbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0F1ZGlvTW9kdWxlLmNwcAppbmRleCA4YmE2ZjQzMzMxN2ZiYjdhZDE1YTM5ODRjNmUwYzE4NGM2
NWFhYmViLi5jZmU1Y2FiYzIyZjM1ZDViZWRmMjY4ZmM3NmFmNzk1Y2RkMjc3M2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDQXVkaW9Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBMaWJXZWJSVENBdWRpb01vZHVsZTo6TGliV2ViUlRDQXVk
aW9Nb2R1bGUoKQpAQCAtNzUsOSArNzcsMTMgQEAgY29uc3QgdW5zaWduZWQgYnl0ZXNQZXJTYW1w
bGUgPSAyOwogCiB2b2lkIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXRPbkF1ZGlv
VGhyZWFkKCkKIHsKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWVNUygpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFBvbGxGcm9tU291
cmNlKCk7Ci0gICAgICAgIG1fYXVkaW9UYXNrUnVubmVyLT5TbGVlcE1zKHBvbGxJbnRlcnZhbCk7
CisKKyAgICAgICAgZG91YmxlIG5vdyA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
TVMoKTsKKyAgICAgICAgZG91YmxlIHNsZWVwRm9yID0gcG9sbEludGVydmFsIC0gcmVtYWluZGVy
KG5vdyAtIHN0YXJ0VGltZSwgcG9sbEludGVydmFsKTsKKyAgICAgICAgbV9hdWRpb1Rhc2tSdW5u
ZXItPlNsZWVwTXMoc2xlZXBGb3IpOwogICAgICAgICBpZiAoIW1faXNQbGF5aW5nKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggYjZkYTBkZTQ0ZDM2MTEwN2VjOTVmZmQ1ZjIzN2Qx
OTMxN2E0N2M0ZC4uNThkZTRkYjRhY2VjNDdlMjg3MDJhNGNkNjFiZTZmNGNjNjE2ZTJlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1
bWUobV92b2x1bWUpOwogfQogCi1BdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KGNvbnN0IENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgaW5wdXREZXNjcmlwdGlvbiwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBv
dXRwdXREZXNjcmlwdGlvbikKK0F1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKIHsKICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIHJl
bW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKIApAQCAtMTQyLDE0ICsxNDIsMTMgQEAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1
ZGlvVW5pdChjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBVSW50
MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbik7Ci0gICAgZXJyICA9IEF1ZGlvVW5p
dEdldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1h
dCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRpb24sICZzaXplKTsK
KyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpKTsKKyAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBr
QXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAs
ICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7CiAgICAgaWYg
KGVycikgewogICAgICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2E6OmNyZWF0ZUF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZv
cm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgb3V0cHV0RGVzY3JpcHRpb24gPSBp
bnB1dERlc2NyaXB0aW9uOwogICAgIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9u
KCkubVNhbXBsZVJhdGUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRl
KCk7CiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91
dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRwdXREZXNjcmlw
dGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CkBAIC0xOTAsNyArMTg5LDcgQEAgdm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUmIHMKICAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGlucHV0RGVz
Y3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CiAgICAg
ICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsKIAotICAgICAg
ICBhdXRvIHJlbW90ZUlPVW5pdCA9IGNyZWF0ZUF1ZGlvVW5pdChpbnB1dERlc2NyaXB0aW9uLCBv
dXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIGF1dG8gcmVtb3RlSU9Vbml0ID0gY3JlYXRlQXVk
aW9Vbml0KG91dHB1dERlc2NyaXB0aW9uKTsKICAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuaAppbmRleCBjOGZhMzBhMDgxMDA2ZjIxOTI1ZTg2OTZmODg0NDNlYjZk
N2QyYjc5Li45MzI2ZDU4MDI3OGYwMTE3NDhlNjYyMWYxNmNmZjJjYTYyMTc2NzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiwg
QXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBpbkJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqKTsK
ICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3Qm
LCBVSW50MzIgaW5CdXNOdW1iZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVkaW9Vbml0UmVu
ZGVyQWN0aW9uRmxhZ3MmKTsKIAotICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgY3JlYXRlQXVk
aW9Vbml0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgaW5wdXREZXNjcmlwdGlvbiwg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbik7CisgICAgQXVkaW9D
b21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Jik7CiAgICAgdm9pZCBjbGVhbnVwKCk7CiAgICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1
ZmZlckxpc3QmLCBzaXplX3QpOwogICAgIHZvaWQgcGxheUludGVybmFsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCmluZGV4IGNjZDk2YTBmNjZhZTgwZjk4
ODhlMTRkNThkNTYyNTRkYWNhMzExMjIuLjExYTYzZmY4NmQ0Njg0NDk4ZDEzZDUyOGNiZTIzMmNm
ZDY3MjdjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3Bw
CkBAIC04OCw3ICs4OCwxMiBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6T25E
YXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbAogICAgIGF1dG8gbWVk
aWFUaW1lID0gdG9NZWRpYVRpbWUoc3RhcnRUaW1lKTsKICAgICBtX251bWJlck9mRnJhbWVzICs9
IG51bWJlck9mRnJhbWVzOwogCi0gICAgbV9zdHJlYW1Gb3JtYXQgPSBzdHJlYW1EZXNjcmlwdGlv
bihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBu
dW1iZXJPZkNoYW5uZWxzKTsKKyAgICBpZiAobmV3RGVzY3JpcHRpb24gIT0gbV9zdHJlYW1Gb3Jt
YXQpIHsKKyAgICAgICAgbV9zdHJlYW1Gb3JtYXQgPSBuZXdEZXNjcmlwdGlvbjsKKyAgICAgICAg
aWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRlcikKKyAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92
aWRlci0+cHJlcGFyZSgmbV9zdHJlYW1Gb3JtYXQpOworICAgIH0KIAogICAgIFdlYkF1ZGlvQnVm
ZmVyTGlzdCBhdWRpb0J1ZmZlckxpc3QgeyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJl
YW1Gb3JtYXQpLCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJPZkZyYW1lcykgfTsKICAg
ICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZDaGFu
bmVscyAqIG51bWJlck9mRnJhbWVzICogYml0c1BlclNhbXBsZSAvIDg7CkBAIC0xMzgsOCArMTQz
LDEzIEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpzdXBwb3J0ZWRDCiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7Ci0gICAg
Ly8gRklYTUU6IENyZWF0ZSB0aGUgYXVkaW9Tb3VyY2VQcm92aWRlcgotICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CisgICAgICAgIG1fYXVkaW9T
b3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUoKnRo
aXMpOworICAgICAgICBpZiAobV9udW1iZXJPZkZyYW1lcykKKyAgICAgICAgICAgIG1fYXVkaW9T
b3VyY2VQcm92aWRlci0+cHJlcGFyZSgmbV9zdHJlYW1Gb3JtYXQpOworICAgIH0KKworICAgIHJl
dHVybiBtX2F1ZGlvU291cmNlUHJvdmlkZXIuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCAyMTc4
MjA0YmQzZTQyNDM5MTI5NDFlMGZiYzgwN2JjODEzNWZhYzA2Li5jN2FhNThiZTM3Yjc3NGY0YTY2
NTYzOTU0NGMwMjkyMWNjMDkwYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5oCkBAIC03Nyw4ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwogCiAgICAgUmVm
UHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7
Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc3RyZWFtRm9ybWF0OwotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXM7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IG1fc3RyZWFtRm9ybWF0IHsgfTsKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcAppbmRleCAyZjY1YzRhMjllYjQxNzk2ZTUwN2QyNjU3NDZjN2I4
N2JmZWVjM2E4Li40ZWM5Zjg4Y2JmZmU1YjkwMmZkNjRhNzg4MDM2YzNmZGY1OWRlMzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtNzIsNyArNzIs
OCBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgYwogICAgICAgICBhdXRvIHN0YXR1cyAgPSBtX3Nh
bXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOwogCi0gICAgICAgIHN0YXR1
cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobGlid2VicnRjQXVkaW9Gb3Jt
YXQoc3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBzdHJlYW1EZXNjcmlwdGlvbi5udW1i
ZXJPZkNoYW5uZWxzKCkpKTsKKyAgICAgICAgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiA9IGxp
YndlYnJ0Y0F1ZGlvRm9ybWF0KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBzdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCkpOworICAgICAgICBzdGF0dXMgPSBtX3Nh
bXBsZUNvbnZlcnRlci0+c2V0T3V0cHV0Rm9ybWF0KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKSk7CiAgICAgICAgIEFTU0VSVCghc3RhdHVzKTsKICAgICB9CiAg
ICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1c2hTYW1wbGVzKHRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxl
Q291bnQpOwpAQCAtODUsMjAgKzg2LDIwIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjCiB2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6cHVsbEF1ZGlvRGF0YSgpCiB7CiAgICAgLy8g
bGlid2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgotICAgIHNpemVfdCBjaHVua1NhbXBsZUNv
dW50ID0gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlQnl0ZVNpemUgKiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFu
bmVscygpOworICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVu
a1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CiAgICAgbV9hdWRpb0J1
ZmZlci5yZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSk7CiAKICAgICBBdWRpb0J1ZmZlckxpc3Qg
YnVmZmVyTGlzdDsKICAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKLSAgICBidWZm
ZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVt
YmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMo
KTsKICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXpl
OwogICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEo
KTsKIAogICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtz
KGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxlQ291bnQsIG1fc3RhcnRGcmFtZSwgW3RoaXMsIGNodW5r
U2FtcGxlQ291bnRdIHsKICAgICAgICAgbV9zdGFydEZyYW1lICs9IGNodW5rU2FtcGxlQ291bnQ7
CiAgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNpbmstPk9u
RGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNp
emUsIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOworICAgICAg
ICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCks
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBs
ZUNvdW50KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5oCmluZGV4IGYyNDAzNmRmYjI0YWFkYmJlZTc1NDBkY2NjMDczOTA5MGFlNzVkMzUuLjM5
ZDAyMDA3N2QwZGVlN2FmZWNiMDFlNDIxZDM0ZmQ5YjhhMjM1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX3RyYWNr
OwogICAgIFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOwogICAg
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CiAKICAg
ICBWZWN0b3I8dWludDE2X3Q+IG1fYXVkaW9CdWZmZXI7CiAgICAgdWludDY0X3QgbV9zdGFydEZy
YW1lIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaApp
bmRleCBmOTA2NjYyZDQyZjJjOGE2NDI4YjFiZjY1MTA1YzUyYWZiN2RlMTE5Li4xMGFkOTYxYzc1
ZWFiNDM1YzE5ZmI1NzUxODNjYzAxZWM4MGVjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaApAQCAtNDEsNyArNDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ0FSaW5nQnVmZmVyOworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNl
OworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogCiBjbGFzcyBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDPiwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYyLDExICs2Myw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5h
bDsKIAogICAgIHNpemVfdCBtX2xpc3RCdWZmZXJTaXplIHsgMCB9OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fbGlzdDsKLSAgICBBdWRpb0NvbnZlcnRlclJlZiBtX2Nv
bnZlcnRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
PiBtX2lucHV0RGVzY3JpcHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247CisgICAgUmVm
UHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOwogCiAgICAgdWludDY0X3Qg
bV93cml0ZUNvdW50IHsgMCB9OwogICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDAyOGJlZmQ5
MzJlZDg5OGJmODhkM2FhOTRmYmUwNThhMzdiODg5MDcuLmJiYTU2YWZmNDQwNWNmOWI2YmNjMWVk
OWNmMTAyZTdlODNiOTg4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0KQEAgLTMwLDEyICszMCwxMSBAQAogCiAjaW1wb3J0ICJBdWRpb0J1cy5oIgog
I2ltcG9ydCAiQXVkaW9DaGFubmVsLmgiCisjaW1wb3J0ICJBdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aCIKICNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkNBUmlu
Z0J1ZmZlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmgiCiAjaW1wb3J0ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbXBvcnQgPEF1ZGlv
VG9vbGJveC9BdWRpb1Rvb2xib3guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDUsMTEgKzQ0LDYgQEAKIAogI2ltcG9ydCAiQ29y
ZU1lZGlhU29mdExpbmsuaCIKIAotU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCi0K
LVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyQ29udmVydENvbXBsZXhCdWZm
ZXIsIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgVUludDMy
IGluTnVtYmVyUENNRnJhbWVzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGluSW5wdXREYXRhLCBB
dWRpb0J1ZmZlckxpc3QqIG91dE91dHB1dERhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5OdW1i
ZXJQQ01GcmFtZXMsIGluSW5wdXREYXRhLCBvdXRPdXRwdXREYXRhKSkKLVNPRlRfTElOSyhBdWRp
b1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1
ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRB
dWRpb0NvbnZlcnRlcikpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGRv
dWJsZSBrUmluZ0J1ZmZlckR1cmF0aW9uID0gMTsKQEAgLTY4LDExICs2Miw2IEBAIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoKQog
ewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogCi0gICAgaWYgKG1f
Y29udmVydGVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBtYWtlIGFuZCB1c2UgYSBzbWFydCBwb2lu
dGVyIGZvciBBdWRpb0NvbnZlcnRlcgotICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9j
b252ZXJ0ZXIpOwotICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7Ci0gICAgfQogICAgIGlm
IChtX2Nvbm5lY3RlZCAmJiBtX2NhcHR1cmVTb3VyY2UpCiAgICAgICAgIG1fY2FwdHVyZVNvdXJj
ZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQpAQCAtODAsNDUgKzY5LDI3IEBAIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoKQog
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxM
b2NrPiBsb2NrKG1fbXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwotICAgIGlmICghbG9jay5vd25z
X2xvY2soKSB8fCAhbV9yaW5nQnVmZmVyKSB7CisgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpIHx8
ICFtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgYnVzLT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICB1aW50NjRfdCBzdGFydEZyYW1lID0gMDsKLSAgICB1aW50NjRfdCBlbmRG
cmFtZSA9IDA7Ci0gICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRG
cmFtZSwgZW5kRnJhbWUpOwotCiAgICAgaWYgKG1fd3JpdGVDb3VudCA8PSBtX3JlYWRDb3VudCkg
ewogICAgICAgICBidXMtPnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGZyYW1lc0F2YWlsYWJsZSA9IGVuZEZyYW1lIC0gbV9yZWFkQ291bnQ7Ci0gICAgaWYg
KGZyYW1lc0F2YWlsYWJsZSA8IGZyYW1lc1RvUHJvY2VzcykgewotICAgICAgICBmcmFtZXNUb1By
b2Nlc3MgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1lc0F2YWlsYWJsZSk7Ci0gICAgICAgIGJ1
cy0+emVybygpOwotICAgIH0KLQotICAgIEFTU0VSVChidXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9
PSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKTsKLSAgICBpZiAoYnVzLT5udW1iZXJPZkNo
YW5uZWxzKCkgIT0gbV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSkgewotICAgICAgICBidXMt
Pnplcm8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzOyArK2kpIHsKKyAgICBXZWJBdWRpb0J1ZmZl
ckxpc3QgbGlzdCB7ICptX291dHB1dERlc2NyaXB0aW9uIH07CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxpc3QuYnVmZmVyQ291bnQoKTsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5l
bCYgY2hhbm5lbCA9ICpidXMtPmNoYW5uZWwoaSk7Ci0gICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1f
bGlzdC0+bUJ1ZmZlcnNbaV07Ci0gICAgICAgIGJ1ZmZlci5tTnVtYmVyQ2hhbm5lbHMgPSAxOwot
ICAgICAgICBidWZmZXIubURhdGEgPSBjaGFubmVsLm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGJ1
ZmZlci5tRGF0YUJ5dGVTaXplID0gY2hhbm5lbC5sZW5ndGgoKSAqIHNpemVvZihmbG9hdCk7Cisg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IGxpc3QuYnVmZmVyKGkpOworICAgICAgICBidWZmZXItPm1O
dW1iZXJDaGFubmVscyA9IDE7CisgICAgICAgIGJ1ZmZlci0+bURhdGEgPSBjaGFubmVsLm11dGFi
bGVEYXRhKCk7CisgICAgICAgIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSA9IGNoYW5uZWwubGVuZ3Ro
KCkgKiBzaXplb2YoZmxvYXQpOwogICAgIH0KIAotICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9s
aXN0LmdldCgpLCBmcmFtZXNUb1Byb2Nlc3MsIG1fcmVhZENvdW50KTsKKyAgICBtX2RhdGFTb3Vy
Y2UtPnB1bGxTYW1wbGVzKCpsaXN0Lmxpc3QoKSwgZnJhbWVzVG9Qcm9jZXNzLCBtX3JlYWRDb3Vu
dCwgMCwgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKICAgICBtX3JlYWRDb3VudCArPSBm
cmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICBpZiAobV9jb252ZXJ0ZXIpCi0gICAgICAgIEF1ZGlvQ29u
dmVydGVyQ29udmVydENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIsIGZyYW1lc1RvUHJvY2Vzcywg
bV9saXN0LmdldCgpLCBtX2xpc3QuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzZXRDbGllbnQoQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCogY2xpZW50
KQpAQCAtMTQ3LDU4ICsxMTgsMjQgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGYKIAogICAgIExP
RyhNZWRpYSwgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKCVwKSIsIHRo
aXMpOwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPigqZm9ybWF0KTsKICAg
ICBpbnQgbnVtYmVyT2ZDaGFubmVscyA9IGZvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7CiAgICAg
ZG91YmxlIHNhbXBsZVJhdGUgPSBmb3JtYXQtPm1TYW1wbGVSYXRlOwogICAgIEFTU0VSVChzYW1w
bGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwotICAgIG1fb3V0cHV0RGVzY3JpcHRp
b24tPm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uLT5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKLSAg
ICBtX291dHB1dERlc2NyaXB0aW9uLT5tQml0c1BlckNoYW5uZWwgPSA4ICogc2l6ZW9mKEZsb2F0
MzIpOwotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVy
T2ZDaGFubmVsczsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tRnJhbWVzUGVyUGFja2V0ID0g
MTsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tQnl0ZXNQZXJQYWNrZXQgPSBzaXplb2YoRmxv
YXQzMik7Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUJ5dGVzUGVyRnJhbWUgPSBzaXplb2Yo
RmxvYXQzMik7Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdEZsYWdzIHw9IGtBdWRp
b0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOwotCi0gICAgaWYgKG1fY29udmVydGVyKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBtYWtlIGFuZCB1c2UgYSBzbWFydCBwb2ludGVyIGZvciBBdWRpb0Nv
bnZlcnRlcgotICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOwotICAg
ICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCptX2lucHV0RGVz
Y3JpcHRpb24gIT0gKm1fb3V0cHV0RGVzY3JpcHRpb24pIHsKLSAgICAgICAgQXVkaW9Db252ZXJ0
ZXJSZWYgb3V0Q29udmVydGVyID0gbnVsbHB0cjsKLSAgICAgICAgT1NTdGF0dXMgZXJyID0gQXVk
aW9Db252ZXJ0ZXJOZXcobV9pbnB1dERlc2NyaXB0aW9uLmdldCgpLCBtX291dHB1dERlc2NyaXB0
aW9uLmdldCgpLCAmb3V0Q29udmVydGVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoJXAp
IC0gQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgJWkiLCB0aGlzLCBlcnIpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fY29udmVydGVyID0gb3V0Q29u
dmVydGVyOwotICAgIH0KKyAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9h
dDMyKTsKKyAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OworICAgIGNvbnN0IGJvb2wgaXNG
bG9hdCA9IHRydWU7CisgICAgY29uc3QgYm9vbCBpc0JpZ0VuZGlhbiA9IGZhbHNlOworICAgIGNv
bnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uIHsgfTsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00o
b3V0cHV0RGVzY3JpcHRpb24sIHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMsIGJpdHNQZXJC
eXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBpc0Zsb2F0
LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNj
cmlwdGlvbik7CiAKLSAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3VnaCB0byBz
dG9yZSAxIHNlY29uZC4KLSAgICB1aW50NjRfdCBjYXBhY2l0eSA9IGtSaW5nQnVmZmVyRHVyYXRp
b24gKiBzYW1wbGVSYXRlOwotICAgIEFTU0VSVChjYXBhY2l0eSA8PSBTSVpFX01BWCk7Ci0gICAg
aWYgKGNhcGFjaXR5ID4gU0laRV9NQVgpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEF1ZGlv
QnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUg
aGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgotICAgIC8vIHdpdGggYSBjdXN0b20g
c2l6ZSwgYW5kIGluaXRpYWxpemUgdGhlIHN0cnVjdCBtYW51YWxseS4KLSAgICB1aW50NjRfdCBi
dWZmZXJMaXN0U2l6ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgKHNp
emVvZihBdWRpb0J1ZmZlcikgKiBzdGQ6Om1heCgxLCBudW1iZXJPZkNoYW5uZWxzKSk7Ci0gICAg
QVNTRVJUKGJ1ZmZlckxpc3RTaXplIDw9IFNJWkVfTUFYKTsKLSAgICBpZiAoYnVmZmVyTGlzdFNp
emUgPiBTSVpFX01BWCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yaW5nQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7Ci0gICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0
ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKmZvcm1hdCksIHN0YXRpY19jYXN0PHNpemVfdD4o
Y2FwYWNpdHkpKTsKLQotICAgIG1fbGlzdEJ1ZmZlclNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ1ZmZlckxpc3RTaXplKTsKLSAgICBtX2xpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZm
ZXJMaXN0PihzdGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9s
aXN0QnVmZmVyU2l6ZSkpKTsKLSAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBtX2xpc3RCdWZm
ZXJTaXplKTsKLSAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbnVtYmVyT2ZDaGFubmVsczsK
KyAgICBpZiAoIW1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpjcmVhdGUoa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpOwor
ICAgIG1fZGF0YVNvdXJjZS0+c2V0SW5wdXRGb3JtYXQoKm1faW5wdXREZXNjcmlwdGlvbik7Cisg
ICAgbV9kYXRhU291cmNlLT5zZXRPdXRwdXRGb3JtYXQoKm1fb3V0cHV0RGVzY3JpcHRpb24pOwog
CiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBwcm90ZWN0ZWRUaGlz
ID0gdGhpczsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0gewpAQCAtMjEzLDI5
ICsxNTAsMjEgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6dW5wcmVwYXJl
KCkKIAogICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CiAgICAgbV9vdXRwdXREZXNj
cmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgbV9yaW5nQnVmZmVyID0gbnVsbHB0cjsKLSAgICBtX2xp
c3QgPSBudWxscHRyOworICAgIG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7CiAgICAgbV9saXN0QnVm
ZmVyU2l6ZSA9IDA7CiAgICAgaWYgKG1fY2FwdHVyZVNvdXJjZSkgewogICAgICAgICBtX2NhcHR1
cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV9jYXB0dXJlU291cmNl
ID0gbnVsbHB0cjsKICAgICB9Ci0KLSAgICBpZiAobV9jb252ZXJ0ZXIpIHsKLSAgICAgICAgLy8g
RklYTUU6IG1ha2UgYW5kIHVzZSBhIHNtYXJ0IHBvaW50ZXIgZm9yIEF1ZGlvQ29udmVydGVyCi0g
ICAgICAgIEF1ZGlvQ29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRlcik7Ci0gICAgICAgIG1fY29u
dmVydGVyID0gbnVsbHB0cjsKLSAgICB9CiB9CiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNp
emVfdCBmcmFtZUNvdW50KQogewotICAgIGlmICghbV9yaW5nQnVmZmVyKQorICAgIGlmICghbV9k
YXRhU291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBidWZmZXJMaXN0ID0gZG93
bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKTsKKyAgICBtX2RhdGFTb3VyY2UtPnB1c2hT
YW1wbGVzKE1lZGlhVGltZShtX3dyaXRlQ291bnQsIG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBs
ZVJhdGUoKSksIGRhdGEsIGZyYW1lQ291bnQpOwogCi0gICAgbV9yaW5nQnVmZmVyLT5zdG9yZShi
dWZmZXJMaXN0Lmxpc3QoKSwgZnJhbWVDb3VudCwgbV93cml0ZUNvdW50KTsKICAgICBtX3dyaXRl
Q291bnQgKz0gZnJhbWVDb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYTA1MDg5N2QwZGQ2N2JhOWI2
ZDQ3ODRjODM5ZTg5ZDY4ODI1N2RiNy4uOTAyZjVjMTJlMTNkZjhmZTU5MWUyZWZkMmVmMTJlOTMw
YmU0MTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRD
UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xMjQsOCArMTI0LDE0IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNlKiBHZXRTb3VyY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3NvdXJjZTsgfQotICAgIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlv
VHJhY2tTaW5rSW50ZXJmYWNlKikgZmluYWwgeyB9Ci0gICAgdm9pZCBSZW1vdmVTaW5rKHdlYnJ0
Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIEFkZFNpbmso
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgZmluYWwgeworICAgICAgICBp
ZiAobV9zb3VyY2UpCisgICAgICAgICAgICBtX3NvdXJjZS0+QWRkU2luayhzaW5rKTsKKyAgICB9
CisgICAgdm9pZCBSZW1vdmVTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNp
bmspIGZpbmFsIHsKKyAgICAgICAgaWYgKG1fc291cmNlKQorICAgICAgICAgICAgbV9zb3VyY2Ut
PlJlbW92ZVNpbmsoc2luayk7CisgICAgfQogICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJy
dGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CiAgICAgdm9pZCBVbnJlZ2lzdGVyT2Jz
ZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQogCkBAIC0xMzUsNyAr
MTQxLDcgQEAgcHJpdmF0ZToKICAgICBUcmFja1N0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4ga0xpdmU7IH0KICAgICBib29sIHNldF9lbmFibGVkKGJvb2wgZW5hYmxlZCkgZmluYWwg
eyBtX2VuYWJsZWQgPSBlbmFibGVkOyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgYm9vbCBtX2VuYWJs
ZWQ7CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CiAgICAgc3RkOjpzdHJpbmcgbV9pZDsK
ICAgICB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNlKiBtX3NvdXJjZSB7IG51bGxwdHIgfTsK
IH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYmFmOWM5MjkwZDIxMjc3YTU1OTE3NDJmMTliYmE2ZWIwYTZhZTU4YS4uY2Rm
MzAwYjk1MTNhZjc3YWE0NGU0NTVmNTY0YjAyMDkwMTU3NWZiYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE3LTAyLTI2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJSVENdIEZpeCByZW1vdGUgYXVkaW8gcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4OTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYnJ0Yy9hdWRpby1wZWVyLWNvbm5l
Y3Rpb24td2ViYXVkaW8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvYXVk
aW8tcGVlci1jb25uZWN0aW9uLXdlYmF1ZGlvLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAyLTIyICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtU291
cmNlTm9kZSBuZXZlciByZWNlaXZlcyBhdWRpbyBmcm9tIGEgZ2V0VXNlck1lZGlhKCkgY3JlYXRl
ZCBzdHJlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1wZWVyLWNvbm5l
Y3Rpb24td2ViYXVkaW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXBl
ZXItY29ubmVjdGlvbi13ZWJhdWRpby1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2NjZiNWQx
MGU4NDgxNzA0NjM1YTA1YjU0NTFmNzdiZDE4NGRjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy9hdWRpby1wZWVyLWNvbm5lY3Rpb24td2ViYXVkaW8tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEJhc2ljIGF1ZGlvIHBsYXliYWNrIHRocm91Z2ggYSBw
ZWVyIGNvbm5lY3Rpb24gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1w
ZWVyLWNvbm5lY3Rpb24td2ViYXVkaW8uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1w
ZWVyLWNvbm5lY3Rpb24td2ViYXVkaW8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODlhODIzNzNjM2U1Zjg4
M2ZkYThiOTU3ZGZiYjBkNDYwNzNiZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2VicnRjL2F1ZGlvLXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5odG1sCkBAIC0wLDAgKzEsODQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgPHRpdGxlPlRlc3RpbmcgbG9jYWwgYXVkaW8gY2FwdHVyZSBwbGF5YmFjayBj
YXVzZXMgInBsYXlpbmciIGV2ZW50IHRvIGZpcmU8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy51c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25G
YWN0b3J5KCJUd29SZWFsUGVlckNvbm5lY3Rpb25zIik7CisKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsK
KworICAgIHZhciBoZWFyZEh1bSA9IGZhbHNlOworICAgIHZhciBoZWFyZEJvcCA9IGZhbHNlOwor
ICAgIHZhciBoZWFyZEJpcCA9IGZhbHNlOworCisgICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCgp
ID0+IHsKKyAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OiB0cnVlfSkudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9u
cygoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9u
LmFkZFN0cmVhbShzdHJlYW0pOworICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+
IHsKKyAgICAgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9uYWRkc3RyZWFtID0gKHN0cmVh
bUV2ZW50KSA9PiB7IAorICAgICAgICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJr
aXRBdWRpb0NvbnRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZU5vZGUgPSBj
b250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVhbUV2ZW50LnN0cmVhbSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBhbmFseXNlciA9IGNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIGdhaW4gPSBjb250ZXh0LmNyZWF0ZUdhaW4oKTsKKwor
ICAgICAgICAgICAgICAgICAgICBhbmFseXNlci5mZnRTaXplID0gMjA0ODsKKyAgICAgICAgICAg
ICAgICAgICAgYW5hbHlzZXIuc21vb3RoaW5nVGltZUNvbnN0YW50ID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgYW5hbHlzZXIubWluRGVjaWJlbHMgPSAtMTAwOworICAgICAgICAgICAgICAgICAg
ICBhbmFseXNlci5tYXhEZWNpYmVscyA9IDA7CisgICAgICAgICAgICAgICAgICAgIGdhaW4uZ2Fp
bi52YWx1ZSA9IDA7CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlTm9kZS5jb25uZWN0KGFu
YWx5c2VyKTsKKyAgICAgICAgICAgICAgICAgICAgYW5hbHlzZXIuY29ubmVjdChnYWluKTsKKyAg
ICAgICAgICAgICAgICAgICAgZ2Fpbi5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFuYWx5c2UoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgZnJlcURvbWFpbiA9IG5ldyBVaW50OEFycmF5KGFuYWx5c2VyLmZyZXF1ZW5j
eUJpbkNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuYWx5c2VyLmdldEJ5dGVGcmVx
dWVuY3lEYXRhKGZyZXFEb21haW4pOworCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFz
RnJlcXVlbmN5ID0gZXhwZWN0ZWRGcmVxdWVuY3kgPT4geworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBiaW4gPSBNYXRoLmZsb29yKGV4cGVjdGVkRnJlcXVlbmN5ICogYW5hbHlzZXIu
ZmZ0U2l6ZSAvIGNvbnRleHQuc2FtcGxlUmF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJpbiA8IGZyZXFEb21haW4ubGVuZ3RoICYmIGZyZXFEb21haW5bYmluXSA+PSAx
NTA7CisgICAgICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWhlYXJkSHVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXJkSHVtID0g
aGFzRnJlcXVlbmN5KDE1MCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVhcmRC
aXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcmRCaXAgPSBoYXNGcmVxdWVuY3ko
MTUwMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVhcmRCb3ApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVhcmRCb3AgPSBoYXNGcmVxdWVuY3koNTAwKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYXJkSHVtICYmIGhlYXJkQmlwICYmIGhlYXJkQm9w
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgICAgICAgICB2YXIgZG9uZSA9ICgpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShoZWFyZEh1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShoZWFyZEJpcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShoZWFy
ZEJvcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVv
dXQoZG9uZSwgMzAwMCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcnZhbCA9IHNldElu
dGVydmFsKGFuYWx5c2UsIDEwMDAgLyAzMCk7CisgICAgICAgICAgICAgICAgICAgIGFuYWx5c2Uo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fSwgIkJhc2ljIGF1ZGlvIHBsYXliYWNrIHRocm91Z2ggYSBwZWVyIGNvbm5lY3Rpb24iKTsKKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="324521"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302844</attachid>
            <date>2017-02-27 09:16:27 -0800</date>
            <delta_ts>2017-02-27 10:24:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-168898-20170227091331.patch</filename>
            <type>text/plain</type>
            <size>46418</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhmMDkwYTg2NTYwZDIy
ZjA4YmFjYmMzN2VhMjViNTAwYmE2YjIzNS4uOWQyMGFkNjcxZGU5Nzk0OWNlOTMyZjA2YzFjNTQ5
OGE2Mjg3ZTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wMi0yNiAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBGaXggcmVt
b3RlIGF1ZGlvIHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgIFRlc3Q6IHdlYnJ0Yy9hdWRpby1wZWVyLWNvbm5lY3Rpb24td2ViYXVkaW8uaHRt
bAorCisgICAgICAgIEZpeCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBieSBub3QgYmFpbGlu
ZyBvdXQgZWFybHkgaWYgdGhlIGlucHV0IHNhbXBsZSByYXRlIGRvZXNuJ3QgbWF0Y2gKKyAgICAg
ICAgdGhlIEF1ZGlvQ29udGV4dCdzIHNhbXBsZSByYXRlOyB0aGVyZSdzIGNvZGUgaW4gc2V0Rm9y
bWF0KCkgdG8gZG8gdGhlIHNhbXBsZSByYXRlIGNvbnZlcnNpb24KKyAgICAgICAgY29ycmVjdGx5
LgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0
Rm9ybWF0KToKKworICAgICAgICBGaXggQXVkaW9TYW1wbGVCdWZmZXJMaXN0IGJ5IG1ha2luZyB0
aGUgQXVkaW9Db252ZXJ0ZXIgaW5wdXQgcHJvYyBhIGZyZWUgZnVuY3Rpb24sIGFuZCBwYXNzaW5n
CisgICAgICAgIGl0cyByZWZDb24gYSBzdHJ1Y3QgY29udGFpbmluZyBvbmx5IHRoZSBpbmZvcm1h
dGlvbiBpdCBuZWVkcyB0byBwZXJmb3JtIGl0cyB0YXNrLiBCZWNhdXNlIHRoZQorICAgICAgICBj
b252ZXJzaW9uIG1heSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgbnVtYmVyIG9mIG91dHB1dCBzYW1w
bGVzIHRoYW4gaW5wdXQgb25lcywganVzdCBhc2sgdG8KKyAgICAgICAgZ2VuZXJhdGUgdGhlIGVu
dGlyZSBjYXBhY2l0eSBvZiB0aGUgc2NyYXRjaCBidWZmZXIsIGFuZCBzaWduYWwgdGhhdCB0aGUg
aW5wdXQgYnVmZmVyIHdhcyBmdWxseQorICAgICAgICBjb252ZXJ0ZWQgd2l0aCBhIHNwZWNpYWwg
cmV0dXJuIHZhbHVlLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
QnVmZmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0NvbnZlcnRlckZyb21BQkxD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlG
cm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29udmVydElu
cHV0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6
YXVkaW9Db252ZXJ0ZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oOgorCisgICAgICAgIEZpeCBBdWRpb1NhbXBs
ZURhdGFTb3VyY2UgYnkgdXBkYXRpbmcgYm90aCB0aGUgc2FtcGxlQ291bnQgYW5kIHRoZSBzYW1w
bGVUaW1lIGFmdGVyIGRvaW5nCisgICAgICAgIGEgc2FtcGxlIHJhdGUgY29udmVyc2lvbiB0byB0
YWtlIGludG8gYWNjb3VudCB0aGF0IGJvdGggdGhlIG51bWJlciBvZiBzYW1wbGVzIG1heSBoYXZl
IGNoYW5nZWQsCisgICAgICAgIGFzIHdlbGwgYXMgdGhlIHRpbWVTY2FsZSBvZiB0aGUgc2FtcGxl
VGltZS4gVGhpcyBtYXkgcmVzdWx0IGluIHNtYWxsIG9mZi1ieS1vbmUgcm91bmRpbmcgZXJyb3Jz
CisgICAgICAgIGR1ZSB0byB0aGUgc2FtcGxlIHJhdGUgY29udmVyc2lvbiBvZiBzYW1wbGVUaW1l
LCBzbyByZW1lbWJlciB3aGF0IHRoZSBuZXh0IGV4cGVjdGVkIHNhbXBsZVRpbWUKKyAgICAgICAg
c2hvdWxkIGJlLCBhbmQgY29ycmVjdCBzYW1wbGVUaW1lIGlmIGl0IGlzIGluZGVlZCBvZmYtYnkt
b25lLiBJZiB0aGUgcHVsbCBvcGVyYXRpb24gaGFzIGdvdHRlbgorICAgICAgICBhaGVhZCBvZiB0
aGUgcHVzaCBvcGVyYXRpb24sIGRlbGF5IHRoZSBuZXh0IHB1bGwgYnkgdGhlIGVtcHR5IGFtb3Vu
dCBieSByb2xsaW5nIGJhY2sgdGhlCisgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0LiBJbnRy
b2R1Y2UgdGhlIHNhbWUgb2Zmc2V0IGJlaGF2aW9yIGR1cmluZyBwdWxsIG9wZXJhdGlvbnMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXNJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVz
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxs
QXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKToKKworICAgICAgICBGaXggTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGJ5IG9iZXlpbmcgdGhlIG1fbXV0ZWQgcHJvcGVydHkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldE11dGVkKToKKwor
ICAgICAgICBGaXggTGliV2ViUlRDQXVkaW9Nb2R1bGUgYnkgc2xlZXBpbmcgZm9yIHRoZSBjb3Jy
ZWN0IGFtb3VudCBhZnRlciBlbWl0dGluZyBmcmFtZXMuIFByZXZpb3VzbHksCisgICAgICAgIExp
YldlYlJUQ0F1ZGlvTW9kdWxlIHdvdWxkIHNsZWVwIGZvciBhIGZpeGVkIGFtb3VudCBvZiB0aW1l
LCB3aGljaCBtZWFudCBpdCB3b3VsZCBnZXQgc2xvd2x5IG91dAorICAgICAgICBvZiBzeW5jIHdo
ZW4gZW1pdHRpbmcgZnJhbWVzIHRvb2sgYSBub24temVybyBhbW91bnQgb2YgdGltZS4gTm93LCB0
aGUgYW1vdW50IG9mIHRpbWUgYmVmb3JlIHRoZQorICAgICAgICBuZXh0IGN5Y2xlIHN0YXJ0cyBp
cyBjb3JyZWN0bHkgY2FsY3VsYXRlZCwgYW5kIHRoZW4gTGliV2ViUlRDQXVkaW9Nb2R1bGUgc2xl
ZXBzIGZvciBhIGR5bmFtaWMgYW1vdW50CisgICAgICAgIG9mIHRpbWUgaW4gb3JkZXIgdG8gd2Fr
ZSB1cCBjb3JyZWN0bHkgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBjeWNsZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENBdWRpb01vZHVsZTo6U3RhcnRQbGF5
b3V0T25BdWRpb1RocmVhZCk6CisKKyAgICAgICAgRml4IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYSBieSBqdXN0IHVzaW5nIHRoZSBvdXRwdXQgdW5pdCdzIHByZWZlcnJlZCBmb3Jt
YXQKKyAgICAgICAgZGVzY3JpcHRpb24gKHdpdGggdGhlIGN1cnJlbnQgc3lzdGVtIHNhbXBsZSBy
YXRlKSwgcmF0aGVyIHRoYW4gd2hhdGV2ZXIgaXMgdGhlIGN1cnJlbnQKKyAgICAgICAgaW5wdXQg
ZGVzY3JpcHRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg6CisKKyAgICAgICAgRml4IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZSBieSBhY3R1YWxseSBjcmVhdGluZyBhbiBBdWRpb1NvdXJjZVByb3ZpZGVy
IHdoZW4gYXNrZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTo6T25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorCisgICAg
ICAgIEZpeCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UgYnkgdXNpbmcgdGhlIG91dGdvaW5n
IGZvcm1hdCBkZXNjcmlwdGlvbiByYXRoZXIgdGhhbiB0aGUKKyAgICAgICAgaW5jb21pbmcgb25l
IHRvIGRldGVybWluZSB0aGUgc2FtcGxlIHJhdGUsIGNoYW5uZWwgY291bnQsIHNhbXBsZSBieXRl
IHNpemUsIGV0Yy4sIHRvIHVzZQorICAgICAgICB3aGVuIGRlbGl2ZXJpbmcgZGF0YSB1cHN0cmVh
bSB0byBsaWJXZWJSVEMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6cHVsbEF1ZGlvRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5oOgorCisgICAgICAgIEZpeCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyBieSB1c2lu
ZyBhIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSB0byBkbyBmb3JtYXQgYW5kIHNhbXBsZQorICAgICAg
ICByYXRlIGNvbnZlcnNpb24gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGR1cGxpY2F0ZSBhbGwgdGhh
dCBjb2RlIGFuZCB1c2UgYSBDQVJpbmdCdWZmZXIgYW5kIAorICAgICAgICBBdWRpb0NvbnZlcnRl
ciBkaXJlY3RseS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByb3ZpZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6cHJlcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQzo6dW5wcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorCisgICAgICAgIEZpeCB0
aGUgTW9ja0xpYldlYlJUQ0F1ZGlvVHJhY2sgYnkgcGFzc2luZyBhbG9uZyB0aGUgQWRkU2luaygp
IHNpbmsgdG8gaXRzIEF1ZGlvU291cmNlSW50ZXJmYWNlLAorICAgICAgICBhbGxvd2luZyB0aGUg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIHRvIHB1c2ggZGF0YSBpbnRvIHRoZSBsaWJXZWJS
VEMgbmV0d29yayBzdGFjay4gQWxzbywKKyAgICAgICAgbWFrZSBzdXJlIG1fZW5hYmxlZCBpcyBp
bml0aWFsaXplZCB0byBhIGdvb2QgdmFsdWUuCisKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbi5oOgorCiAyMDE3LTAyLTIxICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSBzaG91bGQgbm90
IGV4Y2x1c2l2ZWx5IGxvY2sgaXRzIHJlYWQgYW5kIHdyaXRlIHRocmVhZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuY3BwCmluZGV4IGY2NDBhNjgyNmNhY2IxM2I2YzhhMWJhZjg1MzdjOTAzN2I2
ZjJlNTYuLmZlMDYxNDdhMGNiMmE1ZDE4N2EyNGE0MDkzM2YwODE4NjUzNzgzMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQg
c291cmNlCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBzYW1wbGUtcmF0ZSBtdXN0IGJl
IGVxdWFsIHRvIHRoZSBjb250ZXh0J3Mgc2FtcGxlLXJhdGUuCi0gICAgaWYgKCFudW1iZXJPZkNo
YW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hh
bm5lbHMoKSB8fCBzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJhdGUpIHsKKyAgICBpZiAoIW51
bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVt
YmVyT2ZDaGFubmVscygpKSB7CiAgICAgICAgIC8vIHByb2Nlc3MoKSB3aWxsIGdlbmVyYXRlIHNp
bGVuY2UgZm9yIHRoZXNlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLgogICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KCV1LCAlZikgLSB1bmhhbmRs
ZWQgZm9ybWF0IGNoYW5nZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1iZXJPZkNoYW5uZWxz
KSwgc291cmNlU2FtcGxlUmF0ZSk7CiAgICAgICAgIG1fc291cmNlTnVtYmVyT2ZDaGFubmVscyA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCmluZGV4IGMxOWVmN2Q5OGZmNWNiZDQ4NmRhMzBjOTU1
NzhkY2MyZTU2MjMxYzQuLjZmOGUwOTA1ODI5OGIwYWMyZmExZWNhMzkxYWU3ZmNjZTU3ODNmNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCkBAIC0yMTgsNDIgKzIxOCw0OCBAQCB2b2lkIEF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVDb3VudCkKICAgICAgICAgbWVtc2V0KGJ1ZmZlci5tQnVmZmVyc1tpXS5tRGF0YSwgMCwg
Ynl0ZUNvdW50KTsKIH0KIAotT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb252ZXJ0
SW5wdXQoVUludDMyKiBpb051bWJlckRhdGFQYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0
YSkKK3N0cnVjdCBBdWRpb0NvbnZlcnRlckZyb21BQkxDb250ZXh0IHsKKyAgICBjb25zdCBBdWRp
b0J1ZmZlckxpc3QmIGJ1ZmZlcjsKKyAgICBzaXplX3QgcGFja2V0c0F2YWlsYWJsZVRvQ29udmVy
dDsKKyAgICBzaXplX3QgYnl0ZXNQZXJQYWNrZXQ7Cit9OworCitzdGF0aWMgY29uc3QgT1NTdGF0
dXMga1Jhbk91dE9mSW5wdXREYXRhU3RhdHVzID0gJyFtb3InOworCitzdGF0aWMgT1NTdGF0dXMg
YXVkaW9Db252ZXJ0ZXJGcm9tQUJMQ2FsbGJhY2soQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiog
aW9OdW1iZXJEYXRhUGFja2V0cywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEsIEF1ZGlvU3RyZWFt
UGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCogaW5SZWZDb24pCiB7Ci0gICAgaWYgKCFpb051bWJl
ckRhdGFQYWNrZXRzIHx8ICFpb0RhdGEgfHwgIW1fY29udmVydGVySW5wdXRCdWZmZXIpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OnJlY29uZmlndXJlSW5wdXQo
JXApIGludmFsaWQgaW5wdXQgdG8gQXVkaW9Db252ZXJ0ZXJJbnB1dCIsIHRoaXMpOworICAgIGlm
ICghaW9OdW1iZXJEYXRhUGFja2V0cyB8fCAhaW9EYXRhIHx8ICFpblJlZkNvbikgeworICAgICAg
ICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9Db252ZXJ0ZXJDYWxsYmFj
aygpIGludmFsaWQgaW5wdXQgdG8gQXVkaW9Db252ZXJ0ZXJJbnB1dCIpOwogICAgICAgICByZXR1
cm4ga0F1ZGlvQ29udmVydGVyRXJyX1Vuc3BlY2lmaWVkRXJyb3I7CiAgICAgfQogCi0gICAgc2l6
ZV90IHBhY2tldENvdW50ID0gbV9jb252ZXJ0ZXJJbnB1dEJ1ZmZlci0+bUJ1ZmZlcnNbMF0ubURh
dGFCeXRlU2l6ZSAvIG1fY29udmVydGVySW5wdXRCeXRlc1BlclBhY2tldDsKLSAgICBpZiAoKmlv
TnVtYmVyRGF0YVBhY2tldHMgPiBtX3NhbXBsZUNhcGFjaXR5KSB7Ci0gICAgICAgIExPR19FUlJP
UigiQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb252ZXJ0SW5wdXQoJXApIG5vdCBlbm91Z2ggaW50
ZXJuYWwgc3RvcmFnZTogbmVlZGVkID0gJXp1LCBhdmFpbGFibGUgPSAlbHUiLCB0aGlzLCAoc2l6
ZV90KSppb051bWJlckRhdGFQYWNrZXRzLCBtX3NhbXBsZUNhcGFjaXR5KTsKLSAgICAgICAgcmV0
dXJuIGtBdWRpb0NvbnZlcnRlckVycl9JbnZhbGlkSW5wdXRTaXplOworICAgIGF1dG8mIGNvbnRl
eHQgPSAqc3RhdGljX2Nhc3Q8QXVkaW9Db252ZXJ0ZXJGcm9tQUJMQ29udGV4dCo+KGluUmVmQ29u
KTsKKyAgICBpZiAoIWNvbnRleHQucGFja2V0c0F2YWlsYWJsZVRvQ29udmVydCkgeworICAgICAg
ICAqaW9OdW1iZXJEYXRhUGFja2V0cyA9IDA7CisgICAgICAgIHJldHVybiBrUmFuT3V0T2ZJbnB1
dERhdGFTdGF0dXM7CiAgICAgfQogCi0gICAgKmlvTnVtYmVyRGF0YVBhY2tldHMgPSBzdGF0aWNf
Y2FzdDxVSW50MzI+KHBhY2tldENvdW50KTsKKyAgICAqaW9OdW1iZXJEYXRhUGFja2V0cyA9IHN0
YXRpY19jYXN0PFVJbnQzMj4oY29udGV4dC5wYWNrZXRzQXZhaWxhYmxlVG9Db252ZXJ0KTsKKwog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBpb0RhdGEtPm1OdW1iZXJCdWZmZXJzOyArK2kp
IHsKLSAgICAgICAgaW9EYXRhLT5tQnVmZmVyc1tpXS5tRGF0YSA9IG1fY29udmVydGVySW5wdXRC
dWZmZXItPm1CdWZmZXJzW2ldLm1EYXRhOwotICAgICAgICBpb0RhdGEtPm1CdWZmZXJzW2ldLm1E
YXRhQnl0ZVNpemUgPSBtX2NvbnZlcnRlcklucHV0QnVmZmVyLT5tQnVmZmVyc1tpXS5tRGF0YUJ5
dGVTaXplOworICAgICAgICBpb0RhdGEtPm1CdWZmZXJzW2ldLm1EYXRhID0gY29udGV4dC5idWZm
ZXIubUJ1ZmZlcnNbaV0ubURhdGE7CisgICAgICAgIGlvRGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGFC
eXRlU2l6ZSA9IGNvbnRleHQucGFja2V0c0F2YWlsYWJsZVRvQ29udmVydCAqIGNvbnRleHQuYnl0
ZXNQZXJQYWNrZXQ7CiAgICAgfQorICAgIGNvbnRleHQucGFja2V0c0F2YWlsYWJsZVRvQ29udmVy
dCA9IDA7CiAKICAgICByZXR1cm4gMDsKIH0KIAotT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJM
aXN0OjphdWRpb0NvbnZlcnRlckNhbGxiYWNrKEF1ZGlvQ29udmVydGVyUmVmLCBVSW50MzIqIGlv
TnVtYmVyRGF0YVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhLCBBdWRpb1N0cmVhbVBh
Y2tldERlc2NyaXB0aW9uKiosIHZvaWQqIGluUmVmQ29uKQotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb1NhbXBsZUJ1ZmZlckxpc3QqPihpblJlZkNvbiktPmNvbnZlcnRJbnB1dChpb051
bWJlckRhdGFQYWNrZXRzLCBpb0RhdGEpOwotfQotCi1PU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3Q6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYgc291cmNlLCBBdWRpb0NvbnZl
cnRlclJlZiBjb252ZXJ0ZXIpCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlG
cm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYgc291cmNlLCBzaXplX3QgZnJhbWVDb3VudCwgQXVk
aW9Db252ZXJ0ZXJSZWYgY29udmVydGVyKQogewogICAgIHJlc2V0KCk7CiAKICAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gaW5wdXRGb3JtYXQ7CiAgICAgVUludDMyIHByb3BlcnR5RGF0
YVNpemUgPSBzaXplb2YoaW5wdXRGb3JtYXQpOwogICAgIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVy
dHkoY29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlv
biwgJnByb3BlcnR5RGF0YVNpemUsICZpbnB1dEZvcm1hdCk7Ci0gICAgbV9jb252ZXJ0ZXJJbnB1
dEJ5dGVzUGVyUGFja2V0ID0gaW5wdXRGb3JtYXQubUJ5dGVzUGVyUGFja2V0OwotICAgIFNldEZv
clNjb3BlPGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCo+IHNjb3BlZElucHV0QnVmZmVyKG1fY29udmVy
dGVySW5wdXRCdWZmZXIsICZzb3VyY2UpOworICAgIEFTU0VSVChmcmFtZUNvdW50IDw9IHNvdXJj
ZS5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gaW5wdXRGb3JtYXQubUJ5dGVzUGVyUGFja2V0
KTsKKworICAgIEF1ZGlvQ29udmVydGVyRnJvbUFCTENvbnRleHQgY29udGV4dCB7IHNvdXJjZSwg
ZnJhbWVDb3VudCwgaW5wdXRGb3JtYXQubUJ5dGVzUGVyUGFja2V0IH07CiAKICNpZiAhTE9HX0RJ
U0FCTEVECiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG91dHB1dEZvcm1hdDsKQEAg
LTI2NywyMiArMjczLDIyIEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZy
b20oY29uc3QgQXVkaW9CdWZmZXJMaXN0JiBzb3VyY2UsIEF1ZGlvQ29uCiAgICAgfQogI2VuZGlm
CiAKLSAgICBVSW50MzIgc2FtcGxlc0NvbnZlcnRlZCA9IHN0YXRpY19jYXN0PFVJbnQzMj4obV9z
YW1wbGVDYXBhY2l0eSk7Ci0gICAgT1NTdGF0dXMgZXJyID0gQXVkaW9Db252ZXJ0ZXJGaWxsQ29t
cGxleEJ1ZmZlcihjb252ZXJ0ZXIsIGF1ZGlvQ29udmVydGVyQ2FsbGJhY2ssIHRoaXMsICZzYW1w
bGVzQ29udmVydGVkLCBtX2J1ZmZlckxpc3QtPmxpc3QoKSwgbnVsbHB0cik7Ci0gICAgaWYgKGVy
cikgewotICAgICAgICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20o
JXApIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgcmV0dXJuZWQgZXJyb3IgJWQgKCUu
NHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKLSAgICAgICAgbV9zYW1wbGVDb3Vu
dCA9IHN0ZDo6bWluKG1fc2FtcGxlQ2FwYWNpdHksIHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxl
c0NvbnZlcnRlZCkpOwotICAgICAgICB6ZXJvKCk7Ci0gICAgICAgIHJldHVybiBlcnI7CisgICAg
VUludDMyIHNhbXBsZXNDb252ZXJ0ZWQgPSBtX3NhbXBsZUNhcGFjaXR5OworICAgIE9TU3RhdHVz
IGVyciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIoY29udmVydGVyLCBhdWRpb0Nv
bnZlcnRlckZyb21BQkxDYWxsYmFjaywgJmNvbnRleHQsICZzYW1wbGVzQ29udmVydGVkLCBtX2J1
ZmZlckxpc3QtPmxpc3QoKSwgbnVsbHB0cik7CisgICAgaWYgKCFlcnIgfHwgZXJyID09IGtSYW5P
dXRPZklucHV0RGF0YVN0YXR1cykgeworICAgICAgICBtX3NhbXBsZUNvdW50ID0gc2FtcGxlc0Nv
bnZlcnRlZDsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgbV9zYW1wbGVDb3VudCA9
IHNhbXBsZXNDb252ZXJ0ZWQ7Ci0gICAgcmV0dXJuIDA7CisgICAgTE9HX0VSUk9SKCJBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKCVwKSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVm
ZmVyIHJldHVybmVkIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CisgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKG1fc2FtcGxlQ2FwYWNpdHksIHN0YXRp
Y19jYXN0PHNpemVfdD4oc2FtcGxlc0NvbnZlcnRlZCkpOworICAgIHplcm8oKTsKKyAgICByZXR1
cm4gZXJyOwogfQogCi1PU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdCYgc291cmNlLCBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXIp
CitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdCYgc291cmNlLCBzaXplX3QgZnJhbWVDb3VudCwgQXVkaW9Db252ZXJ0ZXJSZWYgY29u
dmVydGVyKQogewotICAgIHJldHVybiBjb3B5RnJvbShzb3VyY2UuYnVmZmVyTGlzdCgpLCBjb252
ZXJ0ZXIpOworICAgIHJldHVybiBjb3B5RnJvbShzb3VyY2UuYnVmZmVyTGlzdCgpLCBmcmFtZUNv
dW50LCBjb252ZXJ0ZXIpOwogfQogCiBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNv
cHlGcm9tKENBUmluZ0J1ZmZlciYgcmluZ0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50
NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZSBtb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVy
TGlzdC5oCmluZGV4IGUxMDViZDM5Y2YwODQ4ZjI3MDg4YmFiMzI4ODIyZTRhODlhOTUyM2QuLjFi
YzNiYWQ0MGE5ODM2Yzc0MThkMGVkYTY4ZTJlNjkwZGY4N2I2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0
LmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwbHlHYWluKGZsb2F0KTsK
IAogICAgIE9TU3RhdHVzIGNvcHlGcm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYsIHNp
emVfdCBjb3VudCA9IFNJWkVfTUFYKTsKLSAgICBPU1N0YXR1cyBjb3B5RnJvbShjb25zdCBBdWRp
b0J1ZmZlckxpc3QmLCBBdWRpb0NvbnZlcnRlclJlZik7Ci0gICAgT1NTdGF0dXMgY29weUZyb20o
QXVkaW9TYW1wbGVCdWZmZXJMaXN0JiwgQXVkaW9Db252ZXJ0ZXJSZWYpOworICAgIE9TU3RhdHVz
IGNvcHlGcm9tKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCBmcmFtZUNvdW50LCBBdWRp
b0NvbnZlcnRlclJlZik7CisgICAgT1NTdGF0dXMgY29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJM
aXN0Jiwgc2l6ZV90IGZyYW1lQ291bnQsIEF1ZGlvQ29udmVydGVyUmVmKTsKICAgICBPU1N0YXR1
cyBjb3B5RnJvbShDQVJpbmdCdWZmZXImLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3Rh
cnRGcmFtZSwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGUpOwogCiAgICAgT1NTdGF0dXMgbWl4RnJv
bShjb25zdCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmLCBzaXplX3QgY291bnQgPSBTSVpFX01BWCk7
CkBAIC03OCwxNCArNzgsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQXVkaW9TYW1wbGVC
dWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk7CiAKLSAg
ICBzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDYWxsYmFjayhBdWRpb0NvbnZlcnRlclJl
ZiwgVUludDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlv
bioqLCB2b2lkKik7Ci0gICAgT1NTdGF0dXMgY29udmVydElucHV0KFVJbnQzMiosIEF1ZGlvQnVm
ZmVyTGlzdCopOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4gbV9pbnRlcm5hbEZvcm1hdDsKIAotICAgIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbV9jb252
ZXJ0ZXJJbnB1dEJ1ZmZlciB7IG51bGxwdHIgfTsKLSAgICB1aW50MzJfdCBtX2NvbnZlcnRlcklu
cHV0Qnl0ZXNQZXJQYWNrZXQgeyAwIH07Ci0KICAgICB1aW50NjRfdCBtX3RpbWVzdGFtcCB7IDAg
fTsKICAgICBkb3VibGUgbV9ob3N0VGltZSB7IC0xIH07CiAgICAgc2l6ZV90IG1fc2FtcGxlQ291
bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggYzQxZDE3NTc2YjI2OTczYTczZjVmNmVj
YjM0OTdkMjk0YWE5MTA3Yi4uZWNjN2NkN2U5NzA2MTgxOTYyNDE3MjA4NzczOTljNjYzMTAwNjJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtODIsMTAgKzgyLDEyIEBAIHByb3RlY3RlZDoKICAg
ICBNZWRpYVRpbWUgaG9zdFRpbWUoKSBjb25zdDsKIAogICAgIHVpbnQ2NF90IG1fdGltZVN0YW1w
IHsgMCB9OworICAgIHVpbnQ2NF90IG1fbGFzdFB1c2hlZFNhbXBsZUNvdW50IHsgMCB9OworICAg
IE1lZGlhVGltZSBtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgeyBNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkgfTsKICAgICBkb3VibGUgbV9ob3N0VGltZSB7IC0xIH07CiAKICAgICBNZWRp
YVRpbWUgbV9pbnB1dFNhbXBsZU9mZnNldDsKLSAgICB1aW50NjRfdCBtX291dHB1dFNhbXBsZU9m
ZnNldCB7IDAgfTsKKyAgICBpbnQ2NF90IG1fb3V0cHV0U2FtcGxlT2Zmc2V0IHsgMCB9OwogCiAg
ICAgQXVkaW9Db252ZXJ0ZXJSZWYgbV9jb252ZXJ0ZXI7CiAgICAgUmVmUHRyPEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdD4gbV9zY3JhdGNoQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggYjdl
OGNiOWFiOGI1Y2RmMGNlMjU2ZGE5NjJiNjA2MWNlZjhlNzIyNS4uZjA1YzA4NTE5NDdhZTdlYjQ2
ZmZhMzU2ZjI5NDM3OGU3MjIxZGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xNDEsMjQg
KzE0MSwyNyBAQCBNZWRpYVRpbWUgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpob3N0VGltZSgpIGNv
bnN0CiAKIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKGNv
bnN0IEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50
YXRpb25UaW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7CisgICAgTWVkaWFUaW1lIHNhbXBsZVRp
bWUgPSBwcmVzZW50YXRpb25UaW1lOworCiAgICAgY29uc3QgQXVkaW9CdWZmZXJMaXN0KiBzYW1w
bGVCdWZmZXJMaXN0OwogICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAgICBtX3NjcmF0Y2hC
dWZmZXItPnJlc2V0KCk7Ci0gICAgICAgIE9TU3RhdHVzIGVyciA9IG1fc2NyYXRjaEJ1ZmZlci0+
Y29weUZyb20oYnVmZmVyTGlzdCwgbV9jb252ZXJ0ZXIpOworICAgICAgICBPU1N0YXR1cyBlcnIg
PSBtX3NjcmF0Y2hCdWZmZXItPmNvcHlGcm9tKGJ1ZmZlckxpc3QsIHNhbXBsZUNvdW50LCBtX2Nv
bnZlcnRlcik7CiAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgc2FtcGxlQnVmZmVyTGlzdCA9IG1fc2NyYXRjaEJ1ZmZlci0+YnVmZmVyTGlzdCgpLmxpc3Qo
KTsKKyAgICAgICAgc2FtcGxlQ291bnQgPSBtX3NjcmF0Y2hCdWZmZXItPnNhbXBsZUNvdW50KCk7
CisgICAgICAgIHNhbXBsZVRpbWUgPSBwcmVzZW50YXRpb25UaW1lLnRvVGltZVNjYWxlKG1fb3V0
cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSwgTWVkaWFUaW1lOjpSb3VuZGluZ0ZsYWdzOjpU
b3dhcmRaZXJvKTsKICAgICB9IGVsc2UKICAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZidWZm
ZXJMaXN0OwogCi0gICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwor
ICAgIGlmIChtX2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUuaXNWYWxpZCgpICYmIGFicyht
X2V4cGVjdGVkTmV4dFB1c2hlZFNhbXBsZVRpbWUgLSBzYW1wbGVUaW1lKS50aW1lVmFsdWUoKSA9
PSAxKQorICAgICAgICBzYW1wbGVUaW1lID0gbV9leHBlY3RlZE5leHRQdXNoZWRTYW1wbGVUaW1l
OworICAgIG1fZXhwZWN0ZWROZXh0UHVzaGVkU2FtcGxlVGltZSA9IHNhbXBsZVRpbWUgKyBNZWRp
YVRpbWUoc2FtcGxlQ291bnQsIHNhbXBsZVRpbWUudGltZVNjYWxlKCkpOworCiAgICAgaWYgKG1f
aW5wdXRTYW1wbGVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAg
IG1faW5wdXRTYW1wbGVPZmZzZXQgPSBNZWRpYVRpbWUoMSAtIHNhbXBsZVRpbWUudGltZVZhbHVl
KCksIHNhbXBsZVRpbWUudGltZVNjYWxlKCkpOwotICAgICAgICBpZiAobV9pbnB1dFNhbXBsZU9m
ZnNldC50aW1lU2NhbGUoKSAhPSBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGRvIHRoaXMgd2l0aG91dCBjYWxs
aW5nIENNVGltZUNvbnZlcnRTY2FsZS4KLSAgICAgICAgICAgIG1faW5wdXRTYW1wbGVPZmZzZXQg
PSB0b01lZGlhVGltZShDTVRpbWVDb252ZXJ0U2NhbGUodG9DTVRpbWUobV9pbnB1dFNhbXBsZU9m
ZnNldCksIHNhbXBsZVRpbWUudGltZVNjYWxlKCksIGtDTVRpbWVSb3VuZGluZ01ldGhvZF9EZWZh
dWx0KSk7Ci0gICAgICAgIH0KICAgICAgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICJAQCBw
dXNoU2FtcGxlczogaW5wdXQgc2FtcGxlIG9mZnNldCBpcyAlbGxkLCBtX21heGltdW1TYW1wbGVD
b3VudCA9ICV6dSIsIG1faW5wdXRTYW1wbGVPZmZzZXQudGltZVZhbHVlKCksIG1fbWF4aW11bVNh
bXBsZUNvdW50KTsKICAgICB9CiAgICAgc2FtcGxlVGltZSArPSBtX2lucHV0U2FtcGxlT2Zmc2V0
OwpAQCAtMjY3LDExICsyNzAsOSBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90JgogI2VuZGlmCiAK
ICAgICAgICAgaWYgKGZyYW1lc0F2YWlsYWJsZSA8IHNhbXBsZUNvdW50KSB7Ci0gICAgICAgICAg
ICBjb25zdCBkb3VibGUgdHdlbnR5TVMgPSAuMDI7Ci0gICAgICAgICAgICBkb3VibGUgc2FtcGxl
UmF0ZSA9IG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKTsKLSAgICAgICAgICAgIGF1
dG8gZGVsdGEgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lU3RhbXApIC0gZW5kRnJhbWU7Ci0g
ICAgICAgICAgICBpZiAoZGVsdGEgPiAwICYmIGRlbHRhIDwgc2FtcGxlUmF0ZSAqIHR3ZW50eU1T
KQotICAgICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0IC09IGRlbHRhOworICAgICAg
ICAgICAgaW50NjRfdCBkZWx0YSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVTdGFtcCkgLSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihlbmRGcmFtZSk7CisgICAgICAgICAgICBpZiAoZGVsdGEgPiAw
KQorICAgICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0IC09IHN0ZDo6bWluPGludDY0
X3Q+KGRlbHRhLCBzYW1wbGVDb3VudCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZyYW1l
c0F2YWlsYWJsZSkgewpAQCAtMzAwLDggKzMwMSwxNSBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
cgogICAgIHVpbnQ2NF90IHN0YXJ0RnJhbWUgPSAwOwogICAgIHVpbnQ2NF90IGVuZEZyYW1lID0g
MDsKICAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBl
bmRGcmFtZSk7CisgICAgaWYgKG1fdHJhbnNpdGlvbmluZ0Zyb21QYXVzZWQpIHsKKyAgICAgICAg
bV9vdXRwdXRTYW1wbGVPZmZzZXQgPSB0aW1lU3RhbXAgKyAoZW5kRnJhbWUgLSBzYW1wbGVDb3Vu
dFBlckNodW5rKTsKKyAgICAgICAgbV90cmFuc2l0aW9uaW5nRnJvbVBhdXNlZCA9IGZhbHNlOwor
ICAgIH0KKworICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKKwogICAgIGlm
ICh0aW1lU3RhbXAgPCBzdGFydEZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHRpbWVTdGFtcCA9IHN0YXJ0RnJhbWU7CiAKICAgICBzdGFydEZyYW1lID0gdGltZVN0YW1wOwog
ICAgIHdoaWxlIChlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgPj0gc2FtcGxlQ291bnRQZXJDaHVuaykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGZmNTllNjgxYzdiNzI5MDliNWVkODRh
Mjk1NjBmYTEzOGMyMTAwY2QuLjk5YzBhMmMwNTE3MWQ5NWQ1ODE5YmQzYTQ1MjgxNGQzMTY1MmU5
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKGZsb2F0IHZv
bHVtZSkKIAogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogICAgIGZvciAoY29uc3QgYXV0byYgdHJh
Y2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCi0gICAgICAgIHRyYWNrLT5zZXRWb2x1bWUo
bV92b2x1bWUpOworICAgICAgICB0cmFjay0+c2V0Vm9sdW1lKG1fbXV0ZWQgPyAwIDogbV92b2x1
bWUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
TXV0ZWQoYm9vbCBtdXRlZCkKQEAgLTU4Miw2ICs1ODIsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVkOworICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sg
OiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIHRyYWNrLT5zZXRWb2x1bWUobV9t
dXRlZCA/IDAgOiBtX3ZvbHVtZSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpoYXNWaWRlbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0F1ZGlvTW9kdWxlLmNwcAppbmRleCA4YmE2ZjQzMzMxN2ZiYjdhZDE1YTM5ODRjNmUwYzE4NGM2
NWFhYmViLi5jZmU1Y2FiYzIyZjM1ZDViZWRmMjY4ZmM3NmFmNzk1Y2RkMjc3M2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDQXVkaW9Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBMaWJXZWJSVENBdWRpb01vZHVsZTo6TGliV2ViUlRDQXVk
aW9Nb2R1bGUoKQpAQCAtNzUsOSArNzcsMTMgQEAgY29uc3QgdW5zaWduZWQgYnl0ZXNQZXJTYW1w
bGUgPSAyOwogCiB2b2lkIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXRPbkF1ZGlv
VGhyZWFkKCkKIHsKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWVNUygpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFBvbGxGcm9tU291
cmNlKCk7Ci0gICAgICAgIG1fYXVkaW9UYXNrUnVubmVyLT5TbGVlcE1zKHBvbGxJbnRlcnZhbCk7
CisKKyAgICAgICAgZG91YmxlIG5vdyA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
TVMoKTsKKyAgICAgICAgZG91YmxlIHNsZWVwRm9yID0gcG9sbEludGVydmFsIC0gcmVtYWluZGVy
KG5vdyAtIHN0YXJ0VGltZSwgcG9sbEludGVydmFsKTsKKyAgICAgICAgbV9hdWRpb1Rhc2tSdW5u
ZXItPlNsZWVwTXMoc2xlZXBGb3IpOwogICAgICAgICBpZiAoIW1faXNQbGF5aW5nKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggYjZkYTBkZTQ0ZDM2MTEwN2VjOTVmZmQ1ZjIzN2Qx
OTMxN2E0N2M0ZC4uNThkZTRkYjRhY2VjNDdlMjg3MDJhNGNkNjFiZTZmNGNjNjE2ZTJlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1
bWUobV92b2x1bWUpOwogfQogCi1BdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KGNvbnN0IENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgaW5wdXREZXNjcmlwdGlvbiwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBv
dXRwdXREZXNjcmlwdGlvbikKK0F1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKIHsKICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIHJl
bW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKIApAQCAtMTQyLDE0ICsxNDIsMTMgQEAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1
ZGlvVW5pdChjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBVSW50
MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbik7Ci0gICAgZXJyICA9IEF1ZGlvVW5p
dEdldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1h
dCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRpb24sICZzaXplKTsK
KyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpKTsKKyAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBr
QXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAs
ICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7CiAgICAgaWYg
KGVycikgewogICAgICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2E6OmNyZWF0ZUF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZv
cm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgb3V0cHV0RGVzY3JpcHRpb24gPSBp
bnB1dERlc2NyaXB0aW9uOwogICAgIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9u
KCkubVNhbXBsZVJhdGUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRl
KCk7CiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91
dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRwdXREZXNjcmlw
dGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CkBAIC0xOTAsNyArMTg5LDcgQEAgdm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUmIHMKICAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGlucHV0RGVz
Y3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CiAgICAg
ICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsKIAotICAgICAg
ICBhdXRvIHJlbW90ZUlPVW5pdCA9IGNyZWF0ZUF1ZGlvVW5pdChpbnB1dERlc2NyaXB0aW9uLCBv
dXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIGF1dG8gcmVtb3RlSU9Vbml0ID0gY3JlYXRlQXVk
aW9Vbml0KG91dHB1dERlc2NyaXB0aW9uKTsKICAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuaAppbmRleCBjOGZhMzBhMDgxMDA2ZjIxOTI1ZTg2OTZmODg0NDNlYjZk
N2QyYjc5Li45MzI2ZDU4MDI3OGYwMTE3NDhlNjYyMWYxNmNmZjJjYTYyMTc2NzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiwg
QXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBpbkJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqKTsK
ICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3Qm
LCBVSW50MzIgaW5CdXNOdW1iZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVkaW9Vbml0UmVu
ZGVyQWN0aW9uRmxhZ3MmKTsKIAotICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgY3JlYXRlQXVk
aW9Vbml0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgaW5wdXREZXNjcmlwdGlvbiwg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbik7CisgICAgQXVkaW9D
b21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Jik7CiAgICAgdm9pZCBjbGVhbnVwKCk7CiAgICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1
ZmZlckxpc3QmLCBzaXplX3QpOwogICAgIHZvaWQgcGxheUludGVybmFsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCmluZGV4IGNjZDk2YTBmNjZhZTgwZjk4
ODhlMTRkNThkNTYyNTRkYWNhMzExMjIuLjExYTYzZmY4NmQ0Njg0NDk4ZDEzZDUyOGNiZTIzMmNm
ZDY3MjdjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3Bw
CkBAIC04OCw3ICs4OCwxMiBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6T25E
YXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbAogICAgIGF1dG8gbWVk
aWFUaW1lID0gdG9NZWRpYVRpbWUoc3RhcnRUaW1lKTsKICAgICBtX251bWJlck9mRnJhbWVzICs9
IG51bWJlck9mRnJhbWVzOwogCi0gICAgbV9zdHJlYW1Gb3JtYXQgPSBzdHJlYW1EZXNjcmlwdGlv
bihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBu
dW1iZXJPZkNoYW5uZWxzKTsKKyAgICBpZiAobmV3RGVzY3JpcHRpb24gIT0gbV9zdHJlYW1Gb3Jt
YXQpIHsKKyAgICAgICAgbV9zdHJlYW1Gb3JtYXQgPSBuZXdEZXNjcmlwdGlvbjsKKyAgICAgICAg
aWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRlcikKKyAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92
aWRlci0+cHJlcGFyZSgmbV9zdHJlYW1Gb3JtYXQpOworICAgIH0KIAogICAgIFdlYkF1ZGlvQnVm
ZmVyTGlzdCBhdWRpb0J1ZmZlckxpc3QgeyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJl
YW1Gb3JtYXQpLCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJPZkZyYW1lcykgfTsKICAg
ICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZDaGFu
bmVscyAqIG51bWJlck9mRnJhbWVzICogYml0c1BlclNhbXBsZSAvIDg7CkBAIC0xMzgsOCArMTQz
LDEzIEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpzdXBwb3J0ZWRDCiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7Ci0gICAg
Ly8gRklYTUU6IENyZWF0ZSB0aGUgYXVkaW9Tb3VyY2VQcm92aWRlcgotICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CisgICAgICAgIG1fYXVkaW9T
b3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUoKnRo
aXMpOworICAgICAgICBpZiAobV9udW1iZXJPZkZyYW1lcykKKyAgICAgICAgICAgIG1fYXVkaW9T
b3VyY2VQcm92aWRlci0+cHJlcGFyZSgmbV9zdHJlYW1Gb3JtYXQpOworICAgIH0KKworICAgIHJl
dHVybiBtX2F1ZGlvU291cmNlUHJvdmlkZXIuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCAyMTc4
MjA0YmQzZTQyNDM5MTI5NDFlMGZiYzgwN2JjODEzNWZhYzA2Li5jN2FhNThiZTM3Yjc3NGY0YTY2
NTYzOTU0NGMwMjkyMWNjMDkwYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5oCkBAIC03Nyw4ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwogCiAgICAgUmVm
UHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7
Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc3RyZWFtRm9ybWF0OwotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXM7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IG1fc3RyZWFtRm9ybWF0IHsgfTsKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcAppbmRleCAyZjY1YzRhMjllYjQxNzk2ZTUwN2QyNjU3NDZjN2I4
N2JmZWVjM2E4Li40ZWM5Zjg4Y2JmZmU1YjkwMmZkNjRhNzg4MDM2YzNmZGY1OWRlMzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtNzIsNyArNzIs
OCBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgYwogICAgICAgICBhdXRvIHN0YXR1cyAgPSBtX3Nh
bXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOwogCi0gICAgICAgIHN0YXR1
cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobGlid2VicnRjQXVkaW9Gb3Jt
YXQoc3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBzdHJlYW1EZXNjcmlwdGlvbi5udW1i
ZXJPZkNoYW5uZWxzKCkpKTsKKyAgICAgICAgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiA9IGxp
YndlYnJ0Y0F1ZGlvRm9ybWF0KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBzdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCkpOworICAgICAgICBzdGF0dXMgPSBtX3Nh
bXBsZUNvbnZlcnRlci0+c2V0T3V0cHV0Rm9ybWF0KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKSk7CiAgICAgICAgIEFTU0VSVCghc3RhdHVzKTsKICAgICB9CiAg
ICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1c2hTYW1wbGVzKHRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxl
Q291bnQpOwpAQCAtODUsMjAgKzg2LDIwIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjCiB2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6cHVsbEF1ZGlvRGF0YSgpCiB7CiAgICAgLy8g
bGlid2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgotICAgIHNpemVfdCBjaHVua1NhbXBsZUNv
dW50ID0gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlQnl0ZVNpemUgKiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFu
bmVscygpOworICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVu
a1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CiAgICAgbV9hdWRpb0J1
ZmZlci5yZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSk7CiAKICAgICBBdWRpb0J1ZmZlckxpc3Qg
YnVmZmVyTGlzdDsKICAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKLSAgICBidWZm
ZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVt
YmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMo
KTsKICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXpl
OwogICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEo
KTsKIAogICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtz
KGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxlQ291bnQsIG1fc3RhcnRGcmFtZSwgW3RoaXMsIGNodW5r
U2FtcGxlQ291bnRdIHsKICAgICAgICAgbV9zdGFydEZyYW1lICs9IGNodW5rU2FtcGxlQ291bnQ7
CiAgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNpbmstPk9u
RGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNp
emUsIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOworICAgICAg
ICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCks
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBs
ZUNvdW50KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5oCmluZGV4IGYyNDAzNmRmYjI0YWFkYmJlZTc1NDBkY2NjMDczOTA5MGFlNzVkMzUuLjM5
ZDAyMDA3N2QwZGVlN2FmZWNiMDFlNDIxZDM0ZmQ5YjhhMjM1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX3RyYWNr
OwogICAgIFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOwogICAg
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CiAKICAg
ICBWZWN0b3I8dWludDE2X3Q+IG1fYXVkaW9CdWZmZXI7CiAgICAgdWludDY0X3QgbV9zdGFydEZy
YW1lIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaApp
bmRleCBmOTA2NjYyZDQyZjJjOGE2NDI4YjFiZjY1MTA1YzUyYWZiN2RlMTE5Li4xMGFkOTYxYzc1
ZWFiNDM1YzE5ZmI1NzUxODNjYzAxZWM4MGVjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaApAQCAtNDEsNyArNDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ0FSaW5nQnVmZmVyOworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNl
OworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogCiBjbGFzcyBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDPiwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYyLDExICs2Myw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5h
bDsKIAogICAgIHNpemVfdCBtX2xpc3RCdWZmZXJTaXplIHsgMCB9OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fbGlzdDsKLSAgICBBdWRpb0NvbnZlcnRlclJlZiBtX2Nv
bnZlcnRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
PiBtX2lucHV0RGVzY3JpcHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247CisgICAgUmVm
UHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOwogCiAgICAgdWludDY0X3Qg
bV93cml0ZUNvdW50IHsgMCB9OwogICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDAyOGJlZmQ5
MzJlZDg5OGJmODhkM2FhOTRmYmUwNThhMzdiODg5MDcuLmJiYTU2YWZmNDQwNWNmOWI2YmNjMWVk
OWNmMTAyZTdlODNiOTg4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0KQEAgLTMwLDEyICszMCwxMSBAQAogCiAjaW1wb3J0ICJBdWRpb0J1cy5oIgog
I2ltcG9ydCAiQXVkaW9DaGFubmVsLmgiCisjaW1wb3J0ICJBdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aCIKICNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkNBUmlu
Z0J1ZmZlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmgiCiAjaW1wb3J0ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbXBvcnQgPEF1ZGlv
VG9vbGJveC9BdWRpb1Rvb2xib3guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDUsMTEgKzQ0LDYgQEAKIAogI2ltcG9ydCAiQ29y
ZU1lZGlhU29mdExpbmsuaCIKIAotU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCi0K
LVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyQ29udmVydENvbXBsZXhCdWZm
ZXIsIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgVUludDMy
IGluTnVtYmVyUENNRnJhbWVzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGluSW5wdXREYXRhLCBB
dWRpb0J1ZmZlckxpc3QqIG91dE91dHB1dERhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5OdW1i
ZXJQQ01GcmFtZXMsIGluSW5wdXREYXRhLCBvdXRPdXRwdXREYXRhKSkKLVNPRlRfTElOSyhBdWRp
b1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1
ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRB
dWRpb0NvbnZlcnRlcikpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGRv
dWJsZSBrUmluZ0J1ZmZlckR1cmF0aW9uID0gMTsKQEAgLTY4LDExICs2Miw2IEBAIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoKQog
ewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogCi0gICAgaWYgKG1f
Y29udmVydGVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBtYWtlIGFuZCB1c2UgYSBzbWFydCBwb2lu
dGVyIGZvciBBdWRpb0NvbnZlcnRlcgotICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9j
b252ZXJ0ZXIpOwotICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7Ci0gICAgfQogICAgIGlm
IChtX2Nvbm5lY3RlZCAmJiBtX2NhcHR1cmVTb3VyY2UpCiAgICAgICAgIG1fY2FwdHVyZVNvdXJj
ZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQpAQCAtODAsNDUgKzY5LDI3IEBAIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoKQog
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxM
b2NrPiBsb2NrKG1fbXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwotICAgIGlmICghbG9jay5vd25z
X2xvY2soKSB8fCAhbV9yaW5nQnVmZmVyKSB7CisgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpIHx8
ICFtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgYnVzLT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICB1aW50NjRfdCBzdGFydEZyYW1lID0gMDsKLSAgICB1aW50NjRfdCBlbmRG
cmFtZSA9IDA7Ci0gICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRG
cmFtZSwgZW5kRnJhbWUpOwotCiAgICAgaWYgKG1fd3JpdGVDb3VudCA8PSBtX3JlYWRDb3VudCkg
ewogICAgICAgICBidXMtPnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGZyYW1lc0F2YWlsYWJsZSA9IGVuZEZyYW1lIC0gbV9yZWFkQ291bnQ7Ci0gICAgaWYg
KGZyYW1lc0F2YWlsYWJsZSA8IGZyYW1lc1RvUHJvY2VzcykgewotICAgICAgICBmcmFtZXNUb1By
b2Nlc3MgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1lc0F2YWlsYWJsZSk7Ci0gICAgICAgIGJ1
cy0+emVybygpOwotICAgIH0KLQotICAgIEFTU0VSVChidXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9
PSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKTsKLSAgICBpZiAoYnVzLT5udW1iZXJPZkNo
YW5uZWxzKCkgIT0gbV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSkgewotICAgICAgICBidXMt
Pnplcm8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzOyArK2kpIHsKKyAgICBXZWJBdWRpb0J1ZmZl
ckxpc3QgbGlzdCB7ICptX291dHB1dERlc2NyaXB0aW9uIH07CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxpc3QuYnVmZmVyQ291bnQoKTsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5l
bCYgY2hhbm5lbCA9ICpidXMtPmNoYW5uZWwoaSk7Ci0gICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1f
bGlzdC0+bUJ1ZmZlcnNbaV07Ci0gICAgICAgIGJ1ZmZlci5tTnVtYmVyQ2hhbm5lbHMgPSAxOwot
ICAgICAgICBidWZmZXIubURhdGEgPSBjaGFubmVsLm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGJ1
ZmZlci5tRGF0YUJ5dGVTaXplID0gY2hhbm5lbC5sZW5ndGgoKSAqIHNpemVvZihmbG9hdCk7Cisg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IGxpc3QuYnVmZmVyKGkpOworICAgICAgICBidWZmZXItPm1O
dW1iZXJDaGFubmVscyA9IDE7CisgICAgICAgIGJ1ZmZlci0+bURhdGEgPSBjaGFubmVsLm11dGFi
bGVEYXRhKCk7CisgICAgICAgIGJ1ZmZlci0+bURhdGFCeXRlU2l6ZSA9IGNoYW5uZWwubGVuZ3Ro
KCkgKiBzaXplb2YoZmxvYXQpOwogICAgIH0KIAotICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9s
aXN0LmdldCgpLCBmcmFtZXNUb1Byb2Nlc3MsIG1fcmVhZENvdW50KTsKKyAgICBtX2RhdGFTb3Vy
Y2UtPnB1bGxTYW1wbGVzKCpsaXN0Lmxpc3QoKSwgZnJhbWVzVG9Qcm9jZXNzLCBtX3JlYWRDb3Vu
dCwgMCwgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKICAgICBtX3JlYWRDb3VudCArPSBm
cmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICBpZiAobV9jb252ZXJ0ZXIpCi0gICAgICAgIEF1ZGlvQ29u
dmVydGVyQ29udmVydENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIsIGZyYW1lc1RvUHJvY2Vzcywg
bV9saXN0LmdldCgpLCBtX2xpc3QuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzZXRDbGllbnQoQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCogY2xpZW50
KQpAQCAtMTQ3LDU4ICsxMTgsMjQgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGYKIAogICAgIExP
RyhNZWRpYSwgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKCVwKSIsIHRo
aXMpOwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPigqZm9ybWF0KTsKICAg
ICBpbnQgbnVtYmVyT2ZDaGFubmVscyA9IGZvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7CiAgICAg
ZG91YmxlIHNhbXBsZVJhdGUgPSBmb3JtYXQtPm1TYW1wbGVSYXRlOwogICAgIEFTU0VSVChzYW1w
bGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwotICAgIG1fb3V0cHV0RGVzY3JpcHRp
b24tPm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uLT5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKLSAg
ICBtX291dHB1dERlc2NyaXB0aW9uLT5tQml0c1BlckNoYW5uZWwgPSA4ICogc2l6ZW9mKEZsb2F0
MzIpOwotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVy
T2ZDaGFubmVsczsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tRnJhbWVzUGVyUGFja2V0ID0g
MTsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tQnl0ZXNQZXJQYWNrZXQgPSBzaXplb2YoRmxv
YXQzMik7Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUJ5dGVzUGVyRnJhbWUgPSBzaXplb2Yo
RmxvYXQzMik7Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdEZsYWdzIHw9IGtBdWRp
b0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOwotCi0gICAgaWYgKG1fY29udmVydGVyKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBtYWtlIGFuZCB1c2UgYSBzbWFydCBwb2ludGVyIGZvciBBdWRpb0Nv
bnZlcnRlcgotICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOwotICAg
ICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCptX2lucHV0RGVz
Y3JpcHRpb24gIT0gKm1fb3V0cHV0RGVzY3JpcHRpb24pIHsKLSAgICAgICAgQXVkaW9Db252ZXJ0
ZXJSZWYgb3V0Q29udmVydGVyID0gbnVsbHB0cjsKLSAgICAgICAgT1NTdGF0dXMgZXJyID0gQXVk
aW9Db252ZXJ0ZXJOZXcobV9pbnB1dERlc2NyaXB0aW9uLmdldCgpLCBtX291dHB1dERlc2NyaXB0
aW9uLmdldCgpLCAmb3V0Q29udmVydGVyKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoJXAp
IC0gQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgJWkiLCB0aGlzLCBlcnIpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fY29udmVydGVyID0gb3V0Q29u
dmVydGVyOwotICAgIH0KKyAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9h
dDMyKTsKKyAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OworICAgIGNvbnN0IGJvb2wgaXNG
bG9hdCA9IHRydWU7CisgICAgY29uc3QgYm9vbCBpc0JpZ0VuZGlhbiA9IGZhbHNlOworICAgIGNv
bnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uIHsgfTsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00o
b3V0cHV0RGVzY3JpcHRpb24sIHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMsIGJpdHNQZXJC
eXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBpc0Zsb2F0
LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNj
cmlwdGlvbik7CiAKLSAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3VnaCB0byBz
dG9yZSAxIHNlY29uZC4KLSAgICB1aW50NjRfdCBjYXBhY2l0eSA9IGtSaW5nQnVmZmVyRHVyYXRp
b24gKiBzYW1wbGVSYXRlOwotICAgIEFTU0VSVChjYXBhY2l0eSA8PSBTSVpFX01BWCk7Ci0gICAg
aWYgKGNhcGFjaXR5ID4gU0laRV9NQVgpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEF1ZGlv
QnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUg
aGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgotICAgIC8vIHdpdGggYSBjdXN0b20g
c2l6ZSwgYW5kIGluaXRpYWxpemUgdGhlIHN0cnVjdCBtYW51YWxseS4KLSAgICB1aW50NjRfdCBi
dWZmZXJMaXN0U2l6ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgKHNp
emVvZihBdWRpb0J1ZmZlcikgKiBzdGQ6Om1heCgxLCBudW1iZXJPZkNoYW5uZWxzKSk7Ci0gICAg
QVNTRVJUKGJ1ZmZlckxpc3RTaXplIDw9IFNJWkVfTUFYKTsKLSAgICBpZiAoYnVmZmVyTGlzdFNp
emUgPiBTSVpFX01BWCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yaW5nQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7Ci0gICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0
ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKmZvcm1hdCksIHN0YXRpY19jYXN0PHNpemVfdD4o
Y2FwYWNpdHkpKTsKLQotICAgIG1fbGlzdEJ1ZmZlclNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ1ZmZlckxpc3RTaXplKTsKLSAgICBtX2xpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZm
ZXJMaXN0PihzdGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9s
aXN0QnVmZmVyU2l6ZSkpKTsKLSAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBtX2xpc3RCdWZm
ZXJTaXplKTsKLSAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbnVtYmVyT2ZDaGFubmVsczsK
KyAgICBpZiAoIW1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpjcmVhdGUoa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpOwor
ICAgIG1fZGF0YVNvdXJjZS0+c2V0SW5wdXRGb3JtYXQoKm1faW5wdXREZXNjcmlwdGlvbik7Cisg
ICAgbV9kYXRhU291cmNlLT5zZXRPdXRwdXRGb3JtYXQoKm1fb3V0cHV0RGVzY3JpcHRpb24pOwog
CiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBwcm90ZWN0ZWRUaGlz
ID0gdGhpczsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0gewpAQCAtMjEzLDI5
ICsxNTAsMjEgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6dW5wcmVwYXJl
KCkKIAogICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CiAgICAgbV9vdXRwdXREZXNj
cmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgbV9yaW5nQnVmZmVyID0gbnVsbHB0cjsKLSAgICBtX2xp
c3QgPSBudWxscHRyOworICAgIG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7CiAgICAgbV9saXN0QnVm
ZmVyU2l6ZSA9IDA7CiAgICAgaWYgKG1fY2FwdHVyZVNvdXJjZSkgewogICAgICAgICBtX2NhcHR1
cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV9jYXB0dXJlU291cmNl
ID0gbnVsbHB0cjsKICAgICB9Ci0KLSAgICBpZiAobV9jb252ZXJ0ZXIpIHsKLSAgICAgICAgLy8g
RklYTUU6IG1ha2UgYW5kIHVzZSBhIHNtYXJ0IHBvaW50ZXIgZm9yIEF1ZGlvQ29udmVydGVyCi0g
ICAgICAgIEF1ZGlvQ29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRlcik7Ci0gICAgICAgIG1fY29u
dmVydGVyID0gbnVsbHB0cjsKLSAgICB9CiB9CiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNp
emVfdCBmcmFtZUNvdW50KQogewotICAgIGlmICghbV9yaW5nQnVmZmVyKQorICAgIGlmICghbV9k
YXRhU291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBidWZmZXJMaXN0ID0gZG93
bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKTsKKyAgICBtX2RhdGFTb3VyY2UtPnB1c2hT
YW1wbGVzKE1lZGlhVGltZShtX3dyaXRlQ291bnQsIG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBs
ZVJhdGUoKSksIGRhdGEsIGZyYW1lQ291bnQpOwogCi0gICAgbV9yaW5nQnVmZmVyLT5zdG9yZShi
dWZmZXJMaXN0Lmxpc3QoKSwgZnJhbWVDb3VudCwgbV93cml0ZUNvdW50KTsKICAgICBtX3dyaXRl
Q291bnQgKz0gZnJhbWVDb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYTA1MDg5N2QwZGQ2N2JhOWI2
ZDQ3ODRjODM5ZTg5ZDY4ODI1N2RiNy4uOTAyZjVjMTJlMTNkZjhmZTU5MWUyZWZkMmVmMTJlOTMw
YmU0MTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRD
UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xMjQsOCArMTI0LDE0IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNlKiBHZXRTb3VyY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3NvdXJjZTsgfQotICAgIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlv
VHJhY2tTaW5rSW50ZXJmYWNlKikgZmluYWwgeyB9Ci0gICAgdm9pZCBSZW1vdmVTaW5rKHdlYnJ0
Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIEFkZFNpbmso
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgZmluYWwgeworICAgICAgICBp
ZiAobV9zb3VyY2UpCisgICAgICAgICAgICBtX3NvdXJjZS0+QWRkU2luayhzaW5rKTsKKyAgICB9
CisgICAgdm9pZCBSZW1vdmVTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNp
bmspIGZpbmFsIHsKKyAgICAgICAgaWYgKG1fc291cmNlKQorICAgICAgICAgICAgbV9zb3VyY2Ut
PlJlbW92ZVNpbmsoc2luayk7CisgICAgfQogICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJy
dGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CiAgICAgdm9pZCBVbnJlZ2lzdGVyT2Jz
ZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQogCkBAIC0xMzUsNyAr
MTQxLDcgQEAgcHJpdmF0ZToKICAgICBUcmFja1N0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4ga0xpdmU7IH0KICAgICBib29sIHNldF9lbmFibGVkKGJvb2wgZW5hYmxlZCkgZmluYWwg
eyBtX2VuYWJsZWQgPSBlbmFibGVkOyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgYm9vbCBtX2VuYWJs
ZWQ7CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CiAgICAgc3RkOjpzdHJpbmcgbV9pZDsK
ICAgICB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNlKiBtX3NvdXJjZSB7IG51bGxwdHIgfTsK
IH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZjgyMGRjZTZiOGJhMjdiMjIyZjRlY2FlNmQyMzQwYjA2MTZmYTllMi4uMjJh
MjE1MDRhMzNhMTkyYzA0MWYzNDk5NjYzMzlmYmRkZGEyMDJjMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE3LTAyLTI2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJSVENdIEZpeCByZW1vdGUgYXVkaW8gcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4OTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiB3ZWJydGMvYXVkaW8tcGVlci1jb25uZWN0
aW9uLXdlYmF1ZGlvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL2F1ZGlv
LXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5odG1sOiBBZGRlZC4KKwogMjAxNy0wMi0yNyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdCB2ZXJp
ZnlpbmcgY2FjaGUgZGVkdXBsaWNhdGlvbiBpcyBub3Qgc2Vuc2l0aXZlIHRvIFNIQTEgY29sbGlz
aW9uIGF0dGFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXBlZXItY29u
bmVjdGlvbi13ZWJhdWRpby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8t
cGVlci1jb25uZWN0aW9uLXdlYmF1ZGlvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjY2NmI1
ZDEwZTg0ODE3MDQ2MzVhMDViNTQ1MWY3N2JkMTg0ZGMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQmFzaWMgYXVkaW8gcGxheWJhY2sgdGhyb3VnaCBh
IHBlZXIgY29ubmVjdGlvbiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlv
LXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlv
LXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1N2VlZmQzMzBmMzg4
YzUyNmE1NDk0ZmUxNDIwMDk5ZDVjMzA0YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJydGMvYXVkaW8tcGVlci1jb25uZWN0aW9uLXdlYmF1ZGlvLmh0bWwKQEAgLTAsMCArMSw4
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICA8dGl0bGU+VGVzdGluZyBsb2NhbCBhdWRpbyBjYXB0dXJlIHBsYXliYWNr
IGNhdXNlcyAicGxheWluZyIgZXZlbnQgdG8gZmlyZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgdGVz
dCA9IGFzeW5jX3Rlc3QoKCkgPT4geworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy51c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KCJUd29S
ZWFsUGVlckNvbm5lY3Rpb25zIik7CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworCisg
ICAgICAgIHZhciBoZWFyZEh1bSA9IGZhbHNlOworICAgICAgICB2YXIgaGVhcmRCb3AgPSBmYWxz
ZTsKKyAgICAgICAgdmFyIGhlYXJkQmlwID0gZmFsc2U7CisKKyAgICAgICAgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSkudGhlbigoc3RyZWFtKSA9PiB7
CisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7Cisg
ICAgICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFN0cmVhbShzdHJlYW0pOworICAgICAg
ICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAgICBzZWNvbmRD
b25uZWN0aW9uLm9uYWRkc3RyZWFtID0gKHN0cmVhbUV2ZW50KSA9PiB7IAorICAgICAgICAgICAg
ICAgICAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHNvdXJjZU5vZGUgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291
cmNlKHN0cmVhbUV2ZW50LnN0cmVhbSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBhbmFseXNl
ciA9IGNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGdh
aW4gPSBjb250ZXh0LmNyZWF0ZUdhaW4oKTsKKworICAgICAgICAgICAgICAgICAgICBhbmFseXNl
ci5mZnRTaXplID0gMjA0ODsKKyAgICAgICAgICAgICAgICAgICAgYW5hbHlzZXIuc21vb3RoaW5n
VGltZUNvbnN0YW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYW5hbHlzZXIubWluRGVjaWJl
bHMgPSAtMTAwOworICAgICAgICAgICAgICAgICAgICBhbmFseXNlci5tYXhEZWNpYmVscyA9IDA7
CisgICAgICAgICAgICAgICAgICAgIGdhaW4uZ2Fpbi52YWx1ZSA9IDA7CisKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlTm9kZS5jb25uZWN0KGFuYWx5c2VyKTsKKyAgICAgICAgICAgICAgICAg
ICAgYW5hbHlzZXIuY29ubmVjdChnYWluKTsKKyAgICAgICAgICAgICAgICAgICAgZ2Fpbi5jb25u
ZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IGFuYWx5c2UoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZnJlcURvbWFpbiA9IG5l
dyBVaW50OEFycmF5KGFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKGZyZXFEb21haW4pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFzRnJlcXVlbmN5ID0gZXhwZWN0ZWRGcmVxdWVu
Y3kgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiaW4gPSBNYXRoLmZsb29y
KGV4cGVjdGVkRnJlcXVlbmN5ICogYW5hbHlzZXIuZmZ0U2l6ZSAvIGNvbnRleHQuc2FtcGxlUmF0
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJpbiA8IGZyZXFEb21haW4u
bGVuZ3RoICYmIGZyZXFEb21haW5bYmluXSA+PSAxNTA7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhlYXJkSHVtKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYXJkSHVtID0gaGFzRnJlcXVlbmN5KDE1MCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghaGVhcmRCaXApCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhcmRCaXAgPSBoYXNGcmVxdWVuY3koMTUwMCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghaGVhcmRCb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcmRC
b3AgPSBoYXNGcmVxdWVuY3koNTAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhl
YXJkSHVtICYmIGhlYXJkQmlwICYmIGhlYXJkQm9wKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAg
ICB2YXIgZG9uZSA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aW1lb3V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2
YWwpOworCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShoZWFyZEh1bSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShoZWFyZEJpcCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShoZWFyZEJvcCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0LmRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoZG9uZSwgMzAwMCk7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKGFuYWx5c2UsIDEwMDAgLyAzMCk7
CisgICAgICAgICAgICAgICAgICAgIGFuYWx5c2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSwgIkJhc2ljIGF1ZGlvIHBsYXliYWNrIHRo
cm91Z2ggYSBwZWVyIGNvbm5lY3Rpb24iKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>