<?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>217980</bug_id>
          
          <creation_ts>2020-10-20 12:37:03 -0700</creation_ts>
          <short_desc>Merge WorkerScriptController and WorkletScriptController into WorkerOrWorkletScriptController</short_desc>
          <delta_ts>2020-10-20 17:01:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217724</blocked>
    
    <blocked>217058</blocked>
    
    <blocked>217995</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1699879</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 12:37:03 -0700</bug_when>
    <thetext>Merge WorkerScriptController and WorkletScriptController into WorkerOrWorkletScriptController, to share more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699888</commentid>
    <comment_count>1</comment_count>
      <attachid>411903</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 13:07:02 -0700</bug_when>
    <thetext>Created attachment 411903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699891</commentid>
    <comment_count>2</comment_count>
      <attachid>411905</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 13:12:18 -0700</bug_when>
    <thetext>Created attachment 411905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699932</commentid>
    <comment_count>3</comment_count>
      <attachid>411905</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-20 14:43:32 -0700</bug_when>
    <thetext>Comment on attachment 411905
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:299
&gt; +    auto guardedObjects = m_guardedObjects;

We are copying this so it does the right thing even if some objects are removed while we iterate. Three questions:

1) Can we make clearer that this is a copy, perhaps by including copy in the name of the local variable or adding a comment?
2) Is it OK to call clear if this object is removed and then perhaps reused in some way?
3) Is it OK that this does not clear objects that are added during the iteration?

Looks like this code was just moved, so none of this is new.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:87
&gt; +    JSC::JSProxy* proxy() const { ASSERT(m_proxy); return m_proxy.get(); }

If we can assert this, it seems we should return a reference, not a pointer.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:253
&gt;  JSWindowProxy* JSDOMWindowBase::proxy() const

Reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699935</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 14:48:49 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 411905 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411905&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:299
&gt; &gt; +    auto guardedObjects = m_guardedObjects;
&gt; 
&gt; We are copying this so it does the right thing even if some objects are
&gt; removed while we iterate. Three questions:
&gt; 
&gt; 1) Can we make clearer that this is a copy, perhaps by including copy in the
&gt; name of the local variable or adding a comment?

Will add &quot;Copy&quot; suffix.

&gt; 2) Is it OK to call clear if this object is removed and then perhaps reused
&gt; in some way?
&gt; 3) Is it OK that this does not clear objects that are added during the
&gt; iteration?

I am actually not familiar with this code. However, looking at it, it seems that calling clear() on the DOMGuardedObjects is not a complex operation and from my glancing at it, I do not believe it can cause objects to get added to the list. Pretty much all clear() does it grab a lock and remove the object from the list.

&gt; 
&gt; Looks like this code was just moved, so none of this is new.

Correct, I merely moved it.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:87
&gt; &gt; +    JSC::JSProxy* proxy() const { ASSERT(m_proxy); return m_proxy.get(); }
&gt; 
&gt; If we can assert this, it seems we should return a reference, not a pointer.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:253
&gt; &gt;  JSWindowProxy* JSDOMWindowBase::proxy() const
&gt; 
&gt; Reference?

Ok, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699953</commentid>
    <comment_count>5</comment_count>
      <attachid>411925</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 15:14:09 -0700</bug_when>
    <thetext>Created attachment 411925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699955</commentid>
    <comment_count>6</comment_count>
      <attachid>411927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 15:17:24 -0700</bug_when>
    <thetext>Created attachment 411927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699957</commentid>
    <comment_count>7</comment_count>
      <attachid>411928</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 15:20:38 -0700</bug_when>
    <thetext>Created attachment 411928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700018</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-20 17:00:48 -0700</bug_when>
    <thetext>Committed r268775: &lt;https://trac.webkit.org/changeset/268775&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411928.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700019</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-20 17:01:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/70508220&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411903</attachid>
            <date>2020-10-20 13:07:02 -0700</date>
            <delta_ts>2020-10-20 13:12:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217980-20201020130701.patch</filename>
            <type>text/plain</type>
            <size>111416</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkYzdkMWZmODQ0NWFm
OGJhYmZmOTQyOGUwM2NiYzg1ZTZlNTlkMS4uZDY0ZDI5NjM0YmQ1YmIwNzcwM2Q1YTQyYmJjMTEy
MjgxMDQ3NTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMC0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIgYW5kIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIGludG8gV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWVyZ2UgV29ya2VyU2NyaXB0Q29udHJvbGxlciBhbmQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXIgaW50byBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyCisgICAgICAg
IHRvIHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHdvcmtlcnMgYW5kIHdvcmtsZXRzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cHJveHkgY29uc3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
Ojp3cmFwcGVkIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldHVwTmV3bHlDcmVh
dGVkU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6
V29ya2VyQ29uc29sZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xp
ZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
b25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xp
ZW50Ojpjb3VudFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6
OnRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
OjpXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmRp
c2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
aW1wb3J0U2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6On5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4
ZWN1dGlvblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
YWNxdWlyZUhlYXBBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmlj
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0
aFN1YmNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRJZk5l
ZWRlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRDb25zb2xlQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldv
cmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEds
b2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2Nv
cGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oOiBSZW1vdmVkLgorCiAyMDIwLTEwLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2ODYxNSk6IHNvbWUgYWNjZWxlcmF0
ZWQgdHJhbnNmb3JtIHRlc3RzIGFyZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggOGFlYjdlZWZk
MjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYTA2OGRjZDA0NGQwZmEzMjY3MTZlZmUw
NzdiYzhjZDNkODQyZjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5j
bHVkZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmgiCkBAIC0xMTYsNyArMTE3LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXRUaHJl
YWQ6OndvcmtsZXRUaHJlYWQoKQogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1
bHQobWFpbkNvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlcjsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyKiBzY3JpcHRDb250cm9sbGVyOwogICAgIHsKICAgICAgICAgYXV0byBsb2NrID0gaG9sZExv
Y2sobV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29wZUxvY2spOwogICAgICAgICBt
X3dvcmtsZXRHbG9iYWxTY29wZSA9IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKnRo
aXMsIG1fcGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ3NjQ0MTVhODQyYjJlNmRmNDI3
MzM2YTFhMTIzNTkzYjg4NWQxNjUuLmZmNzNlMzdhZmRmZTkwY2I1MDUwYzUyYjJkYTU2NTIxYmIy
Y2ViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02MDUsNyArNjA1LDYgQEAgYmluZGluZ3MvanMvV2Vi
Q29yZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNw
cAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmluZGluZ3Mv
anMvV2luZG93UHJveHkuY3BwCi1iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlk
Z2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTI1NTQsNiArMjU1Myw4IEBAIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAogd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
Cit3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAord29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAog
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
QEAgLTI1OTQsMTAgKzI1OTUsOCBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dv
cmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3BwCi13
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKIHhtbC9DdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwCiB4bWwvRE9NUGFyc2VyLmNwcAogeG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhOWMwNjA2NTFjYThhNjc2OGYxMTdhYWQxM2M0Y2VkNzA5NWJjMzZmLi45NDQwMWNk
ODUwYmMwMzEzNTczZTQyMDdiZTAxMWRkN2U1YWRhZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ5LDcgKzEzNDksNiBA
QAogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZE
NjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMz
OUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJl
cGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAw
QzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAw
MUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xl
dENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVk
aXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZE
MENCMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBD
U1NQYWludFNpemUuaCAqLzsgfTsKIAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxl
UHJvcGVydHlNYXBSZWFkT25seS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRkQwQ0UyMTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBS
ZWFkT25seS5oICovOyB9OwpAQCAtMTM2Myw3ICsxMzYyLDYgQEAKIAkJNEJEQTQwMDEyMTUxQjZG
NTAwRkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0
IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZDRCAvKiBX
b3JrbGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovOyB9OwogCQk0QkRFQTMyNTIx
N0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyog
V29ya2xldEdsb2JhbFNjb3BlLmggKi87IH07Ci0JCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAv
KiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggKi87IH07CiAJCTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaCAqLzsgfTsKIAkJNEQzQjAwQUIyMTVENjlBNzAwNzZCOTgzIC8qIE1lZGlhUmVj
b3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRE
M0IwMEE5MjE1RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggKi87IH07CiAJCTREM0Iw
MEFGMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0IwMEFEMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9i
RXZlbnQuaCAqLzsgfTsKQEAgLTQ4NzcsNyArNDg3NSw2IEBACiAJCUUxOUFDM0Y1MTgyNERDNzkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0VEMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEE1MTIuaCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8q
IENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE2
NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0JGMEU3NkFD
RjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQkQwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFB
REVDQ0UwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNDQzBFNzZBRDhCMDA0QTFBNUUg
LyogTWVzc2FnZUNoYW5uZWwuaCAqLzsgfTsKIAkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8q
IEpTTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQURFREQ4MEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggKi87IH07
CkBAIC03OTMzLDkgKzc5MzAsOSBAQAogCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEy
OEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1h
dGhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTE5hbWVz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTE5hbWVzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0gICAgICAgIDQ0QkQyQjM2MjUyNzc5NzgwMDU1
RDk1QSAvKiBHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2
ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uUmFuZ2VEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QjM4QkY5MjUzNjlBODgwMEE0NDU4RCAvKiBTZWxlY3Rp
b25SYW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRCRDJC
MzYyNTI3Nzk3ODAwNTVEOTVBIC8qIEdsb2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSAiR2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1l
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFy
VGhlbWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTgyMzQsOCArODIzMSw2IEBACiAJCTRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBT
bWFydFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
bWFydFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCN0FFNDky
MjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbVBhaW50SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTUy
MTc3QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3VzdG9tUGFpbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
N0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVs
ZXRlQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckRlbGV0
ZUFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDQTIxOTBFQkQ2
MDBDMEFCNjQgLyogQ1NTUGFpbnRTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhaW50U2l6ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDRDIxOTBFQkU5MDBDMEFCNjQg
LyogQ1NTUGFpbnRTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQYWludFNpemUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODI2NCw4ICs4MjU5LDYgQEAKIAkJNEJERUEzMjMyMTdFQzk2QTAw
NTJERkNEIC8qIFdvcmtsZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBX
b3JrbGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAv
KiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2Jh
bFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEJERUEzMjcyMTgwMDNG
NzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
REVBMzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAv
KiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NTk4LDYgKzEwNTkxLDcgQEAKIAkJODMxOThGQkIyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRp
b0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUF1
ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4RkJEMjRB
MTYwQzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBCYXNlQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxOThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFBM0VBODI1M0Y3OEMyMDA2NzgwNEYgLyogV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjcxLDYgKzEwNjY1LDcgQEAKIAkJ
ODM1NjU3QzYxRUNBQjBFODAwQ0RFNzJEIC8qIEpTRE9NTWF0cml4SW5pdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU1hdHJpeEluaXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzU2Rjk3QzI0RDlGODA4MDA2QzNFNDEgLyogV2ViS2l0
QXVkaW9MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNTZGOTdFMjREOUY4MDkwMDZDM0U0MSAvKiBXZWJLaXRB
dWRpb0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNUI2ODBFMUY1NDhCREUwMDcxRjdGNiAvKiBKU0Zp
bGVTeXN0ZW1FbnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0ZpbGVTeXN0ZW1FbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNUQyRDc0MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50K0VudHJp
ZXNBUEkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MSW5wdXRFbGVtZW50K0VudHJp
ZXNBUEkuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzUxRjVGMUZC
ODAwMTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTcyOSw4ICsxNTcyNCw2IEBACiAJCUUxQTMxNjJCMTM0
QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBX
ZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
MUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQTY0M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEZpbGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCRDE0RTlFM0E4MDA0NDlFMTMgLyog
RmlsZVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODUxLDcgKzE4ODQ0LDkgQEAKIAkJCQkyRTQzNDYzRDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwICovLAogCQkJCTJFNDM0NjNF
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovLAogCQkJCTJFNDM0
NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovLAorCQkJCTgzMUEz
RUE4MjUzRjc4QzIwMDY3ODA0RiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8s
CiAJCQkJODNENkFBRTQyNTI0RUUxMzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmggKi8sCisJCQkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTgzOUEwOTVCMjUyNEYzNzYwMEVFRjMyOCAv
KiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJODNFODI4QjIyNTI3
OTRDRDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovLAogCQkJCTQxNkUyOUE1
MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovLApAQCAtMTk4Njcs
OCArMTk4NjIsNiBAQAogCQkJCTRCREVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0LmNw
cCAqLywKIAkJCQk0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovLAogCQkJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLywKLQkJCQk0QjdGOUM1
NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICovLAotCQkJCTRC
N0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovLAogCQkJ
CTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAog
CQkJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywK
IAkJCQk0QkRFQTMyQTIxODAxMDcyMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAq
LywKQEAgLTE5ODc4LDggKzE5ODcxLDYgQEAKIAkJCQk4MzRBNkEzODI1MjY4NDQxMDA3NDdGNUQg
LyogV29ya2xldFBhcmFtZXRlcnMuaCAqLywKIAkJCQk4MzNCRDgxNTI1MjRENEUyMDA2RTcyQjMg
LyogV29ya2xldFBlbmRpbmdUYXNrcy5jcHAgKi8sCiAJCQkJODMzQkQ4MTMyNTI0RDRFMjAwNkU3
MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCAqLywKLQkJCQk0QkRFQTMyOTIxODAwNDBDMDA1
MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAotCQkJCTRCREVBMzI3MjE4
MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSB3b3JrbGV0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjYzMSw4
ICsyNjYyMiw2IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBX
aW5kb3dQcm94eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRv
d1Byb3h5LmggKi8sCi0JCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwICovLAotCQkJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM0ODkzLDcgKzM0ODgyLDYgQEAKIAkJCQk0MTZFMjlBNjEw
MkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUI4MUNDRjFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyUnVudGltZUFnZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENkIzNDkwRjYxMTA0NTAw
Qjc5RkQxIC8qIFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVBNzY4
MDQwRkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNDkwMiwxMyArMzQ4OTAsMTEgQEAKIAkJCQlBNTRBMEM2ODFEQjgw
N0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTRCN0Y5QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdv
cmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTgyNTI0RDRGNTAw
NkU3MkIzIC8qIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5k
aW5nVGFza3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAv
KiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQw
OTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAv
KiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4
Njc0ZjJkZmI4MTZkNmVhNGNiMDM3NWZjNmNiMmE1NDkzYjNlNzZiLi40Mjk2OTQ1MDFlNWYzMjc1
ZWUyZjUwMjUyYTlkNzAyNDE3NmJmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yOTQsNiArMjk0LDEzIEBAIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9i
YWxPYmplY3QqIGpzR2xvCiAgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNl
cHRpb24pOwogfQogCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJkZWRPYmpl
Y3RzKCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsKKyAg
ICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAgICAgICAgZ3VhcmRlZC0+
Y2xlYXIoKTsKK30KKwogSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7
CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0RnVuY3RvciB7CkBAIC0zNDEsMTEgKzM0
OCw4IEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTVdyYXBwCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250
ZXh0KSkKICAgICAgICAgcmV0dXJuIHRvSlNET01XaW5kb3coZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmZyYW1lKCksIHdvcmxkKTsKIAotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOwotCi0gICAgaWYgKGlz
PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxX
b3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyKCk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KS5zY3JpcHQoKS0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDczODY3ZDZhYjJlNWI0ZGJiNzBiNzBh
OWEzNjA5NDg0OWYwY2VlNjIuLmI3MzU3YWZlMDVjNWVmYzI5MjQyNGM4NThkYzFjYjQyZDQyOTgz
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc3Vic3BhY2VGb3Io
SlNDOjpWTSYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCiBwdWJsaWM6CiAgICAgTG9jayYgZ2NMb2Nr
KCkgeyByZXR1cm4gbV9nY0xvY2s7IH0KIApAQCAtODEsNiArODIsMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKik7CiAKKyAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9i
amVjdHMoKTsKKworICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3By
b3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KKwogcHVibGljOgogICAgIH5KU0RPTUdsb2Jh
bE9iamVjdCgpOwogCkBAIC0xMDUsNiArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxET01X
cmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgdWludDhfdCBtX3dvcmxkSXNOb3JtYWw7CiAgICAg
TG9jayBtX2djTG9jazsKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJv
eHk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCdWlsdGluR2xvYmFscyhKU0M6OlZNJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA1
N2Q0NWMzZGU5OGJlNDdiZTEwZmE0YTY5M2U4MmY3NTQxMDc1ZjA1Li42YmU3NTE4MDA1MzU2MGNh
MmQ4NmU2ODA5OTgxZTY2NzI3YmE2NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTk3LDggKzk3LDggQEAgSlNET01XaW5kb3dCYXNl
OjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPERP
TVdpbmRvdz4KICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHByb3h5LT53
b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93Q2xvc2VX
YXRjaHBvaW50cyhXYXRjaHBvaW50U2V0OjpjcmVhdGUoKHdpbmRvdyAmJiB3aW5kb3ctPmZyYW1l
KCkpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlkYXRlZCkpCiAgICAgLCBtX3dyYXBwZWQoV1RGTW92
ZSh3aW5kb3cpKQotICAgICwgbV9wcm94eShwcm94eSkKIHsKKyAgICBtX3Byb3h5LnNldCh2bSwg
dGhpcywgcHJveHkpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEpT
RE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94
eSkKIAogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuZG9jdW1lbnRQdWJsaWNOYW1lKCksIGpz
TnVsbCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMud2lu
ZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byhidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LmdldCgpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAg
ICAgfTsKIAogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xF
TkdUSChzdGF0aWNHbG9iYWxzKSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQogCiBKU1dpbmRvd1Byb3h5KiBKU0RP
TVdpbmRvd0Jhc2U6OnByb3h5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eTsKKyAgICBy
ZXR1cm4ganNDYXN0PEpTV2luZG93UHJveHkqPihKU0RPTUdsb2JhbE9iamVjdDo6cHJveHkoKSk7
CiB9CiAKIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RE9NV2luZG93JiBkb21XaW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oCmluZGV4IDEwNTAzZmUzOWM4OWRlNjMxOGUzZjcyODdiYWM0NWQ3Nzk1MjJj
ZGIuLjhmZDVkNDc0NWJkMjg4OWY2YzQ0NjIwM2M5MDJjZDJlM2VhMDc0YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC0xMDgsNyArMTA4LDYg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwot
ICAgIEpTV2luZG93UHJveHkqIG1fcHJveHk7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgRE9NV2luZG93Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
aW5kZXggM2QzMTZmNzk2MTFiNDA0MmViYjkzN2U2MTQ1NGZmNTk0YmYxYWE2Zi4uZWYzNWI0YTAy
ZmE2MWFlYWVlMGIxNWE5NGYwY2NhYjk1YmNlMzU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtODcsMTMg
Kzg3LDYgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1Byb3h5KiBwcm94eSkKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwog
fQogCi12b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCkKLXsKLSAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsKLSAgICBm
b3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKLSAgICAgICAgZ3VhcmRlZC0+Y2xl
YXIoKTsKLX0KLQogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4o
Y2VsbCk7CkBAIC0xNTcsMTAgKzE1MCwxMCBAQCBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYgogCiBK
U1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUpCiB7Ci0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gd29ya2Vy
R2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAgYXV0byogc2NyaXB0ID0gd29ya2VyR2xvYmFsU2Nv
cGUuc2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
LSAgICBKU1dvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3JpcHQt
Pmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAg
cmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggZDQ0OTg3MTI5
NDZhZTVmNmYwMTg3ODY4NGU0Njk5N2IxZmVjMTdhMC4uMGY0N2ZhNjkyYzZkMGJjYjAzYzY0NWY2
ODQ5MmI0NjY2YzViNzUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAg
ICBERUNMQVJFX0lORk87CiAKICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0
IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0KLSAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3Qg
eyBBU1NFUlQobV9wcm94eSk7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTc2
LDggKzc1LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1
cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmpl
Y3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOwogCi0gICAgdm9pZCBjbGVhckRP
TUd1YXJkZWRPYmplY3RzKCk7Ci0KIHByb3RlY3RlZDoKICAgICBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+
JiYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwpA
QCAtODYsNyArODMsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtl
ckdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7Ci0gICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU1By
b3h5PiBtX3Byb3h5OwogfTsKIAogLy8gUmV0dXJucyBhIEpTV29ya2VyR2xvYmFsU2NvcGUgb3Ig
anNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDE4NzJiNDE0ZWQ5M2JkNGY2MDhlYzk4ZTdmZTdm
ZDRmYTI4MjYwNTEuLmY2ZjVlMTMyZDY1MTNjZGIyNGY4YWY0NWMwMzY4Y2ZhMTIxNGUwNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBAIC03NywxMyArNzcsNiBAQCB2b2lkIEpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkK
ICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCi12b2lkIEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCi17Ci0gICAgYXV0byBndWFy
ZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9iamVjdHM7Ci0gICAgZm9yIChhdXRvJiBndWFyZGVkIDog
Z3VhcmRlZE9iamVjdHMpCi0gICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7Ci19Ci0KIHZvaWQgSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsKQEAgLTEzOCw3ICsxMzEsNyBAQCBKU1ZhbHVlIHRv
SlMoSlNHbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29w
ZSkKIHsKICAgICBpZiAoIXdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3b3JrbGV0R2xv
YmFsU2NvcGUuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBhdXRv
KiBjb250ZXh0V3JhcHBlciA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2Nv
cGVXcmFwcGVyKCk7CiAgICAgaWYgKCFjb250ZXh0V3JhcHBlcikKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
aAppbmRleCA0NGUyZGY0MmI2ZDVhODE5YmZlNjU2YzdhMDY5MWE1Y2E1Y2MzNWNhLi5iYzUzZmNh
YmU0M2RhYWZmNzI1OWJmNmJmYjc5MGY3OTNhOWFlOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtNDcsNyAr
NDcsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgV29ya2xldEdsb2JhbFNj
b3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQotICAgIEpTQzo6SlNQ
cm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0
KCk7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtNjQsOCArNjMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNr
VG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7
CiAKLSAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKLQogcHJvdGVjdGVkOgogICAg
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQ
dHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mLCBKU0M6OkpTUHJveHkqKTsKQEAgLTc0LDcgKzcxLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+IG1fd3JhcHBlZDsKLSAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJveHk7CiB9OwogCiAvLyBSZXR1cm5zIGEg
SlNXb3JrbGV0R2xvYmFsU2NvcGUgb3IganNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGU4N2E2ZTU0YzdhMDIxOGQ3M2MyNDFl
NjQyY2E4NDZhNmQ2NzU4OWUuLjY1OWJmODUwOTNmZGY0ZTI3NzQ3N2ExOWI0YjhhOWU3NzY4ZTBl
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIC8vIEluIGEgV29ya2VyLCB0
aGUgZXhlY3V0aW9uIHNob3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2VyIHRocmVhZC4KICAg
ICBBU1NFUlQod29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAotICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xs
ZXIgPSB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKTsKKyAgICBhdXRvKiBzY3JpcHRDb250cm9s
bGVyID0gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCk7CiAKICAgICBpZiAobV9mdW5jdGlvbikg
ewotICAgICAgICBKU1dvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdENv
bnRyb2xsZXItPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgICAgICBhdXRvKiBjb250
ZXh0V3JhcHBlciA9IHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAg
ICAgICBleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoY29udGV4dFdyYXBwZXIsIGNvbnRleHRXcmFw
cGVyLCB3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU2NyaXB0U291
cmNlQ29kZSBjb2RlKG1fY29kZSwgVVJMKHdvcmtlckdsb2JhbFNjb3BlLnVybCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggYjgxMzNiZGE3Zjgz
NGJiY2E0MDZiMDFkMDQwMGQzOWVmMTY4NjhhMC4uYjdhZjBiZDJjYzg3NmJiYTM4YWU0OWExZjc4
MTJhNDcwMGUyZmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcApAQCAtNDAsOSArNDAsOCBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
LSNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5o
IgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxP
YmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDZkOGE3ZWQ5MWI5ZjM4NjkzODBh
Mjc1YzA5NzA2ZGE3MzQyMWFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKLQotI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKLSNpbmNs
dWRlICJKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNjcmlwdFNvdXJj
ZUNvZGUuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSAiV29y
a2VyQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0RlZmVycmVkV29ya1RpbWVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0
aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xv
Y2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLVdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlKQotICAgIDogbV92bShWTTo6Y3JlYXRlKCkpCi0gICAgLCBtX3dvcmtlckdsb2Jh
bFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIoKm1fdm0pCi17Ci0gICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mgbm90
IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBzbyB0
dXJuIGl0IG9uIHBlcm1hbmVudGx5LgotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQobV92bS5nZXQoKSk7Ci19Ci0KLVdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyKCkKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICBpZiAo
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpIHsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKLSAgICAgICAgbV93b3JrZXJHbG9i
YWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7Ci0gICAgICAgIG1fY29u
c29sZUNsaWVudCA9IG51bGxwdHI7Ci0gICAgfQotICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCi17Ci0gICAgQVNTRVJUKCFtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcik7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX3ZtLmdldCgpKTsKLQotICAg
IC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBp
dCBpc24ndCBjb2xsZWN0ZWQKLSAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2Jq
ZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQotICAgIC8vIGNvbnN0cnVjdGVk
LCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCi0gICAgaWYgKG1fd29ya2VyR2xvYmFs
U2NvcGUtPmlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAgICBTdHJ1Y3R1
cmUqIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpz
TnVsbCgpKTsKLSAgICAgICAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSog
ZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZSk7Ci0gICAgICAgIEpTQzo6RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIHByb3RlY3Rl
ZERlZGljYXRlZENvbnRleHRQcm90b3R5cGUoZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSk7Ci0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90
eXBlKTsKLSAgICAgICAgYXV0byogcHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1
Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7
Ci0gICAgICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVj
dHVyZSk7Ci0KLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3ZtLCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3Rh
dGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUmPigqbV93b3JrZXJHbG9iYWxTY29w
ZSksIHByb3h5KSk7Ci0gICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUt
PnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkp
OwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXIpOwotICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLmdldCgpKTsKLSAgICAgICAgYXV0byogd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUgPSBK
U1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRC
ZWNvbWVQcm90b3R5cGUoKTsKLSAgICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS0+c3Ry
dWN0dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIHdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlKTsKLQotICAgICAgICBwcm94eS0+c2V0VGFyZ2V0KCptX3Zt
LCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHByb3h5LT5zdHJ1
Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLmdldCgpKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgfSBlbHNlIGlm
IChtX3dvcmtlckdsb2JhbFNjb3BlLT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIs
IGpzTnVsbCgpKTsKLSAgICAgICAgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUq
IGNvbnRleHRQcm90b3R5cGUgPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6
Y3JlYXRlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICAg
ICAgSlNDOjpFbnN1cmVTdGlsbEFsaXZlU2NvcGUgcHJvdGVjdGVkQ29udGV4dFByb3RvdHlwZShj
b250ZXh0UHJvdG90eXBlKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBjb250
ZXh0UHJvdG90eXBlKTsKLSAgICAgICAgYXV0byogcHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5Ojpj
cmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSk7Ci0gICAgICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBw
cm94eVN0cnVjdHVyZSk7Ci0gICAgCi0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
LnNldCgqbV92bSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3Ry
dWN0dXJlLCBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPigqbV93b3JrZXJH
bG9iYWxTY29wZSksIHByb3h5KSk7Ci0gICAgICAgIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUt
PnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkp
OwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyKTsKLSAgICAgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0
R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0g
ICAgICAgIGF1dG8qIHdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlID0gSlNXb3JrZXJHbG9iYWxT
Y29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkp
OwotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZS0+ZGlkQmVjb21lUHJvdG90eXBl
KCk7Ci0gICAgICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3Rv
dHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSk7
Ci0KLSAgICAgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpOwotICAgICAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFs
T2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0jZW5kaWYK
LSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9i
YWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKGFz
T2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1f
dm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotCi0g
ICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93
b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNldENv
bnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKLX0KLQotdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKLSAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24sIHJl
dHVybmVkRXhjZXB0aW9uTWVzc2FnZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpLCBleGNlcHRpb24pOwotICAgIH0KLX0KLQotdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBT
dHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7
Ci0KLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCk7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgSlNMb2NrSG9sZGVy
IGxvY2sgeyB2bSB9OwotCi0gICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2Jh
bE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpzU291cmNl
Q29kZSgpLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7Ci0KLSAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgcmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0
aW5nRXhlY3V0aW9uKCkpIHsKLSAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKLSAgICAgICAgaWYg
KG1fd29ya2VyR2xvYmFsU2NvcGUtPmNhbkluY2x1ZGVFcnJvckRldGFpbHMoc291cmNlQ29kZS5j
YWNoZWRTY3JpcHQoKSwgc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKSkpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29k
ZSB0byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgotICAgICAgICAgICAg
Ly8gRG8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYg
aXQsIHNheSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPwotICAgICAgICAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSkKLSAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJmdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIGRl
dGFpbGVkIGVycm9yIHdpdGggYSBnZW5lcmljIGVycm9yLgotICAgICAgICAgICAgU3RyaW5nIGdl
bmVyaWNFcnJvck1lc3NhZ2UgeyAiU2NyaXB0IGVycm9yLiJfcyB9OwotICAgICAgICAgICAgaWYg
KHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLSAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNl
cHRpb25NZXNzYWdlID0gZ2VuZXJpY0Vycm9yTWVzc2FnZTsKLSAgICAgICAgICAgIHJldHVybmVk
RXhjZXB0aW9uID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgY3JlYXRlRXJyb3IoJmdsb2Jh
bE9iamVjdCwgZ2VuZXJpY0Vycm9yTWVzc2FnZSkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiog
ZXhjZXB0aW9uKQotewotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKLSAgICBWTSYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICB0aHJvd0V4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
ZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4
ZWN1dGlvblRlcm1pbmF0aW9uKCkKLXsKLSAgICBpZiAobV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIC8vIFRoZSBtdXRleCBwcm92aWRl
cyBhIG1lbW9yeSBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0IG9uY2UKLSAgICAgICAgLy8gdGVybWlu
YXRpb24gaXMgc2NoZWR1bGVkLCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgd2lsbAotICAgICAg
ICAvLyBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhhdCBsZXhpY2FsR2xvYmFsT2JqZWN0IHdoZW4gY2Fs
bGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2No
ZWR1bGVkVGVybWluYXRpb25NdXRleCk7Ci0gICAgICAgIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlv
biA9IHRydWU7Ci0gICAgfQotICAgIG1fdm0tPm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOwotfQot
Ci1ib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBj
b25zdAotewotICAgIC8vIFNlZSBjb21tZW50cyBpbiBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0
aW9uIHJlZ2FyZGluZyBtdXRleCB1c2FnZS4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVk
dWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRp
b247Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkK
LXsKLSAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOwot
ICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKLX0KLQotYm9vbCBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1f
d29ya2VyR2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9leGVj
dXRpb25Gb3JiaWRkZW47Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2t7dm0oKX07Ci0KLSAgICBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Ci19Ci0K
LXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotICAgIEpT
TG9ja0hvbGRlciBsb2Nre3ZtKCl9OwotCi0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIt
PnNldFdlYkFzc2VtYmx5RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZWxlYXNlSGVhcEFjY2VzcygpCi17Ci0gICAgbV92bS0+
aGVhcC5yZWxlYXNlQWNjZXNzKCk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
YWNxdWlyZUhlYXBBY2Nlc3MoKQotewotICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOwot
fQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9u
KEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2sp
Ci17Ci0gICAgYXV0byBwcm9jZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikg
ewotICAgICAgICBpZiAoIXRpbWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aW1l
ci0+YWRkVGltZXJTZXROb3RpZmljYXRpb24oY2FsbGJhY2spOwotICAgIH07Ci0KLSAgICBwcm9j
ZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNz
VGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGlt
ZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGlt
ZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCi17Ci0gICAgYXV0byBwcm9j
ZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikgewotICAgICAgICBpZiAoIXRp
bWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aW1lci0+cmVtb3ZlVGltZXJTZXRO
b3RpZmljYXRpb24oY2FsbGJhY2spOwotICAgIH07Ci0KLSAgICBwcm9jZXNzVGltZXIobV92bS0+
aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+aGVh
cC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJy
ZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmF0
dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQotewotICAgIGluaXRTY3JpcHRJ
Zk5lZWRlZCgpOwotICAgIGRlYnVnZ2VyLT5hdHRhY2gobV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVn
Z2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQotewotICAgIGRlYnVnZ2VyLT5kZXRhY2gobV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5n
RGVidWdnaW5nU2Vzc2lvbik7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlV3JhcHBlcigpCi17Ci0gICAgcmV0dXJuIHdvcmtlckds
b2JhbFNjb3BlV3JhcHBlcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOWUyN2Q3YWI3MDlkMTUwOTcwNGEwZTk0ZDhj
MmFiZDgxMTRmZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Rl
YnVnZ2VyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotY2xhc3MgVk07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgSlNXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBX
b3JrZXJDb25zb2xlQ2xpZW50OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyU2NyaXB0Q29udHJvbGxlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIoV29ya2VyR2xvYmFsU2NvcGUqKTsKLSAgICB+V29ya2VyU2NyaXB0Q29udHJvbGxlcigp
OwotCi0gICAgSlNXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCkK
LSAgICB7Ci0gICAgICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotICAgICAgICByZXR1cm4gbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7Ci0gICAgfQotCi0gICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmluYWw7Ci0KLSAgICB2b2lkIGV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSA9IG51bGxwdHIpOwotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0
dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Ci0KLSAgICB2b2lkIHNldEV4Y2VwdGlv
bihKU0M6OkV4Y2VwdGlvbiopOwotCi0gICAgLy8gQXN5bmMgcmVxdWVzdCB0byB0ZXJtaW5hdGUg
YSBKUyBydW4gZXhlY3V0aW9uLiBFdmVudHVhbGx5IGNhdXNlcyB0ZXJtaW5hdGlvbgotICAgIC8v
IGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIEpTIGV4ZWN1dGlvbiwgaWYgdGhlIHdvcmtlciB0aHJl
YWQgaGFwcGVucyB0byBydW4gSlMuCi0gICAgLy8gQWZ0ZXIgSlMgZXhlY3V0aW9uIHdhcyB0ZXJt
aW5hdGVkIGluIHRoaXMgd2F5LCB0aGUgV29ya2VyIHRocmVhZCBoYXMgdG8gdXNlCi0gICAgLy8g
Zm9yYmlkRXhlY3V0aW9uKCkvaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSB0byBndWFyZCBhZ2FpbnN0
IHJlZW50cnkgaW50byBKUy4KLSAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4K
LSAgICB2b2lkIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKTsKLSAgICBib29sIGlzVGVy
bWluYXRpbmdFeGVjdXRpb24oKSBjb25zdCBmaW5hbDsKLQotICAgIC8vIENhbGxlZCBvbiBXb3Jr
ZXIgdGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0aCB0ZXJtaW5hdGlvbiBleGNlcHRpb24gY2F1c2Vk
IGJ5IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVlc3QsCi0gICAgLy8gb3IgYnkgV29ya2VyIHRocmVh
ZCB0ZXJtaW5hdGlvbiBjb2RlIHRvIHByZXZlbnQgZnV0dXJlIGVudHJ5IGludG8gSlMuCi0gICAg
dm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKLSAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3Q7Ci0KLSAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKLSAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7Ci0KLSAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9Ci0gICAgCi0gICAgdm9p
ZCByZWxlYXNlSGVhcEFjY2VzcygpIGZpbmFsOwotICAgIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3Mo
KSBmaW5hbDsKLQotICAgIHZvaWQgYWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxv
b3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCByZW1v
dmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNh
dGlvbkNhbGxiYWNrKSBmaW5hbDsKLQotICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1
Z2dlciopOwotICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOwotCi1wcml2
YXRlOgotICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpCi0gICAgICAgICAgICBpbml0U2NyaXB0KCk7Ci0g
ICAgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwotCi0gICAgUmVmUHRy
PEpTQzo6Vk0+IG1fdm07Ci0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2Nv
cGU7Ci0gICAgSlNDOjpTdHJvbmc8SlNXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlckNvbnNvbGVDbGllbnQ+IG1f
Y29uc29sZUNsaWVudDsKLSAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsK
LSAgICBib29sIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiB7IGZhbHNlIH07Ci0gICAgbXV0YWJs
ZSBMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCBmNzY5OWQ1NTNjNzgwYmEwYmYzMjcxNzdkMjQzNWFiZDdjYzljOGQyLi4zN2E2YmZh
OTYwYmQ2NzE0NzVkODA5Y2E5OTg4ZDEzYTZmODQzMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01OSwxMCArNTksMTAgQEAKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgog
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRo
cmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9u
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHAKaW5kZXggNzgwYzVhMTI1NjI3MDc0ZjIxNzQ2NThkYWZhM2UwZTVlNmNlNDI1Yi4uMGIzZWQ3
ZDg3MzkxODYzNTQ1OTFlOTcxZDkyMzQ2NWNkNDUxMjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBA
IHZvaWQgc2V0dXBOZXdseUNyZWF0ZWRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQogICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqZ2xvYmFsU2NvcGUu
Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAg
ICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgICAgICBhdXRvKiBjb250ZXh0V3Jh
cHBlciA9IHNjcmlwdC0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgICAgIGF1dG8q
IGNvbnRleHRXcmFwcGVyID0gc2NyaXB0LT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICAgICAg
Y29udGV4dFdyYXBwZXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
SW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoJmdsb2JhbE9iamVjdCwgY29udGV4dFdyYXBw
ZXIsIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZShpZGVudGlmaWVyKSkpOwogICAgIH0p
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaAppbmRleCA2MzExM2ExNmM0OTM5YzA0YjVmN2MwMDYwZDYwZjYyMDRjNDBm
MzhjLi5jYWFkNGNlYmE1OGJhODMzMmQ1ZTlhNjAzZGUxMjYyNjNkYWVhNzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC04OCwzICs4OCw4IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGlzPFdlYkNvcmU6Oldvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkuaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KSB7IHJl
dHVybiBjb250ZXh0LmlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
c29sZUNsaWVudC5jcHAKaW5kZXggNzIxNTgxZjFiN2M4MTYzNDQ0MzhhZTRlY2NiYTBmOTBhMTQy
MjQ1Yi4uN2I0MjkzMDBhZmZjYjA1MTg5ZDQ4MTYwNTlmNDA1ZDY2ODZjNGY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1NjcmlwdENhbGxTdGFjay5oPgpAQCAtMzUsOCArMzYsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotV29ya2VyQ29uc29sZUNsaWVudDo6V29y
a2VyQ29uc29sZUNsaWVudChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCi0g
ICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorV29ya2VyQ29uc29s
ZUNsaWVudDo6V29ya2VyQ29uc29sZUNsaWVudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
Z2xvYmFsU2NvcGUpCisgICAgOiBtX2dsb2JhbFNjb3BlKGdsb2JhbFNjb3BlKQogewogfQogCkBA
IC00NywzMiArNDgsNDIgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKICAgICBTdHJpbmcgbWVz
c2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwogICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VU
ZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUu
YWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9nbG9iYWxTY29wZS5h
ZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBXb3JrZXJDb25z
b2xlQ2xpZW50Ojpjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KG1f
d29ya2VyR2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KG1fZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNv
bGVDb3VudChkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMs
IGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChtX3dvcmtlckdsb2JhbFNjb3Bl
LCBleGVjLCBsYWJlbCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xv
YmFsU2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0K
IAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdGFydENvbnNvbGVUaW1pbmcobV93b3JrZXJHbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwor
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OnRpbWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKG1fd29ya2VyR2xvYmFsU2Nv
cGUsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4obV9nbG9iYWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bG9nQ29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OnRpbWVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xl
VGltaW5nKG1fd29ya2VyR2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0b3BDb25zb2xlVGltaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2Jh
bFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MzQ5OT4gV2ViIEluc3BlY3RvcjogY29uc29sZS5wcm9maWxlIHNob3VsZCB1c2UgdGhl
IG5ldyBTYW1wbGluZyBQcm9maWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuaAppbmRleCA5NzdiMDdkNTQxMzc4MmZmNTUwMzE3NmFmMzAxZjA2MmYzNDRl
NmRlLi4xMTRjOGRmZWU0YjU1MTllNDE0OWI1MThkNzc1NTlhYzY4MDZjMGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaApAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db25zb2xlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50
IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2VyQ29uc29sZUNsaWVudChXb3Jr
ZXJHbG9iYWxTY29wZSYpOworICAgIGV4cGxpY2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJDb25zb2xlQ2xpZW50
KCk7CiAKIHByaXZhdGU6CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNv
cmRFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogCi0gICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIG1fZ2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDdk
OTc4M2Q5MTMwZDY2YzI3NWFhZGI2MmM0NDE2OWM4NjhkZDdjNmUuLjI0MGVjOTMwNDIxOGU2N2Vk
NTc1NzZkMjI5YWE4NWE2YzQyYmMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Niw3ICs2Niw2IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1
cml0CiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1zLmlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJB
Z2VudChwYXJhbXMudXNlckFnZW50KQogICAgICwgbV90aHJlYWQodGhyZWFkKQotICAgICwgbV9z
Y3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1f
aW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+
KCp0aGlzKSkKICAgICAsIG1faXNPbmxpbmUocGFyYW1zLmlzT25saW5lKQogICAgICwgbV9zaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kocGFyYW1zLnNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSkKQEAgLTE4NywxMiArMTg2LDEyIEBAIFN0
cmluZyBXb3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAKIHZv
aWQgV29ya2VyR2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogewotICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworICAgIHNj
cmlwdCgpLT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7
Ci0gICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOworICAgIHNj
cmlwdCgpLT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdlKTsKIH0KIAogU29ja2V0UHJv
dmlkZXIqIFdvcmtlckdsb2JhbFNjb3BlOjpzb2NrZXRQcm92aWRlcigpCkBAIC0zNTcsOSArMzU2
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBz
Y3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOwotICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBVUkwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgp
KSksIGV4Y2VwdGlvbik7CisgICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdExvYWRlci0+c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJM
KCkpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAg
bV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgICAgICAgICAgc2NyaXB0KCkt
PnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQxNCw3ICs0MTMsNyBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjpp
c0NvbnRleHRUaHJlYWQoKSBjb25zdAogCiBib29sIFdvcmtlckdsb2JhbFNjb3BlOjppc0pTRXhl
Y3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHQtPmlzRXhlY3V0
aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJuIHNjcmlwdCgpLT5pc0V4ZWN1dGlvbkZvcmJpZGRl
bigpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNDEyODA3MWNjOTRmODdmMzE3MjI3NTljNGY4MmJk
MDAyNjY3MTI1NS4uZTQ4Y2ZiODVlMWJlMDVjOWZiZThiNWIxMjBiYzdmYjc5ODA0ZTcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzMsMTAgKzMz
LDEwIEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN1
cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgotI2luY2x1ZGUgIldv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
QEAgLTg2LDkgKzg2LDYgQEAgcHVibGljOgogICAgIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbiYg
c3dDbGllbnRDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCgpIGZpbmFsIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9Ci0gICAgdm9pZCBj
bGVhclNjcmlwdCgpIHsgbV9zY3JpcHQgPSBudWxscHRyOyB9Ci0KICAgICBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1faW5z
cGVjdG9yQ29udHJvbGxlcjsgfQogCiAgICAgV29ya2VyVGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX3RocmVhZDsgfQpAQCAtMTk1LDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBSZWZQdHI8V29ya2VyTmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKIAogICAgIFdvcmtlclRo
cmVhZCYgbV90aHJlYWQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI+IG1fc2NyaXB0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyPiBtX3NjcmlwdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogCiAgICAgYm9vbCBtX2Nsb3Npbmcg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmMwZDZjNDE1MWU4ODgzZDAwOTFhOGU3
YzEwNDBjOTE4NjdjOTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaW5jbHVkZSAi
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSgpCisgICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI+KHRoaXMpKQoreworfQorCitXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYgdm0pCisgICAgOiBtX3NjcmlwdCht
YWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+KFdURk1vdmUodm0pLCB0
aGlzKSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IGMwNjgzYmRm
Yjg3YjlkN2U2YmExOTY0Zjg3YTY0YmUyM2ZkZGVjOGIuLmQ5MDRiMGEyZmFhMGMyYjFiOWFmYTk0
Yjg3MzZlYWJlMWM4Y2QwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM3LDEyICszNywxOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgPSAwOwogICAgIHZpcnR1YWwgV29y
a2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBjb25zdCA9IDA7CiAK
KyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSBjb25zdCB7IHJl
dHVybiBtX3NjcmlwdC5nZXQoKTsgfQorICAgIHZvaWQgY2xlYXJTY3JpcHQoKSB7IG1fc2NyaXB0
ID0gbnVsbHB0cjsgfQorCiAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7IH0KIAorcHJvdGVjdGVkOgorICAgIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYpOworCiBwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVl
X3B0cjxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKICAgICB1bnNp
Z25lZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQwMWQ1ZjJmNDBiN2I3YmRlOGU2MzM2NjJhZDMxZmIxY2QzZjI4NjEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpbmNs
dWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5o
IgorI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKKyNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29y
a1RpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
TG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFJlZjxW
TT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDog
bV92bShXVEZNb3ZlKHZtKSkKKyAgICAsIG1fZ2xvYmFsU2NvcGUoZ2xvYmFsU2NvcGUpCisgICAg
LCBtX2dsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkKK3sKKyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVB
Y2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBm
b3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCisgICAgSlNWTUNsaWVu
dERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsKK30KKworV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2NvcGUpCisgICAgOiBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKEpTQzo6Vk06OmNyZWF0ZSgpLCBnbG9iYWxTY29wZSkKK3sKK30KKwor
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIoKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgIGlmIChtX2ds
b2JhbFNjb3BlV3JhcHBlcikgeworICAgICAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJE
T01HdWFyZGVkT2JqZWN0cygpOworICAgICAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29u
c29sZUNsaWVudChudWxscHRyKTsKKworICAgIH0KKyAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci5j
bGVhcigpOworICAgIG1fdm0gPSBudWxscHRyOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQor
eworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIGRlYnVnZ2VyLT5hdHRhY2gobV9nbG9i
YWxTY29wZVdyYXBwZXIuZ2V0KCkpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQoreworICAg
IGRlYnVnZ2VyLT5kZXRhY2gobV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCksIEpTQzo6RGVidWdn
ZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbik7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9n
bG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVu
ID0gdHJ1ZTsKK30KKworYm9vbCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4
ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZ2xvYmFsU2NvcGUtPmlz
Q29udGV4dFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Cit9CisK
K3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25U
ZXJtaW5hdGlvbigpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgeworICAgICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1v
cnkgYmFycmllciB0byBlbnN1cmUgdGhhdCBvbmNlCisgICAgICAgIC8vIHRlcm1pbmF0aW9uIGlz
IHNjaGVkdWxlZCwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIHdpbGwKKyAgICAgICAgLy8gYWNj
dXJhdGVseSByZWZsZWN0IHRoYXQgbGV4aWNhbEdsb2JhbE9iamVjdCB3aGVuIGNhbGxlZCBmcm9t
IGFub3RoZXIgdGhyZWFkLgorICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRl
cm1pbmF0aW9uTXV0ZXgpOworICAgICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVl
OworICAgIH0KKyAgICBtX3ZtLT5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKK30KKworYm9vbCBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkg
Y29uc3QKK3sKKyAgICAvLyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5h
dGlvbiByZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hl
ZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKKyAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0
aW9uOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnJlbGVhc2VI
ZWFwQWNjZXNzKCkKK3sKKyAgICBtX3ZtLT5oZWFwLnJlbGVhc2VBY2Nlc3MoKTsKK30KKwordm9p
ZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjphY3F1aXJlSGVhcEFjY2VzcygpCit7
CisgICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxv
b3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRv
IHByb2Nlc3NUaW1lciA9IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7CisgICAgICAgIGlm
ICghdGltZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRpbWVyLT5hZGRUaW1lclNl
dE5vdGlmaWNhdGlvbihjYWxsYmFjayk7CisgICAgfTsKKworICAgIHByb2Nlc3NUaW1lcihtX3Zt
LT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5o
ZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZl
cnJlZFdvcmtUaW1lci5wdHIoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6
VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHByb2Nlc3NU
aW1lciA9IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7CisgICAgICAgIGlmICghdGltZXIp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRpbWVyLT5yZW1vdmVUaW1lclNldE5vdGlm
aWNhdGlvbihjYWxsYmFjayk7CisgICAgfTsKKworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFw
LmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVk
ZW5BY3Rpdml0eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdv
cmtUaW1lci5wdHIoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1fZ2xvYmFsU2NvcGVXcmFwcGVy
LmdldCgpOworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93RXhjZXB0aW9uKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBleGNlcHRpb24pOworfQorCit2b2lkIFdvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBs
b2NrIHsgdm0oKSB9OworCisgICAgbV9nbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVk
KGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
K3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZt
KCkgfTsKKworICAgIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQo
ZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiBleGNlcHRpb247CisgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1cm5l
ZEV4Y2VwdGlvbk1lc3NhZ2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0oKSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX2dsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwor
CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsg
dm0gfTsKKworICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3Qs
IEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwg
bV9nbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwor
CisgICAgaWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24odm0sIHJldHVybmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigp
KSB7CisgICAgICAgIGZvcmJpZEV4ZWN1dGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChtX2dsb2JhbFNjb3Bl
LT5jYW5JbmNsdWRlRXJyb3JEZXRhaWxzKHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksIHNvdXJj
ZUNvZGUudXJsKCkuc3RyaW5nKCkpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXQncyBub3Qg
Z3JlYXQgdGhhdCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5nLWlmeSB0aGUg
dmFsdWUgb2YgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIC8vIERvIHdlIG5lZWQgdG8gZG8g
YW55dGhpbmcgdG8gaGFuZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJhaXNlcyBhbm90
aGVyIGV4Y2VwdGlvbj8KKyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Up
CisgICAgICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhj
ZXB0aW9uLT52YWx1ZSgpLnRvV1RGU3RyaW5nKCZnbG9iYWxPYmplY3QpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gT3ZlcndyaXRlIHRoZSBkZXRhaWxlZCBlcnJvciB3aXRoIGEg
Z2VuZXJpYyBlcnJvci4KKyAgICAgICAgICAgIFN0cmluZyBnZW5lcmljRXJyb3JNZXNzYWdlIHsg
IlNjcmlwdCBlcnJvci4iX3MgfTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UpCisgICAgICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IGdlbmVy
aWNFcnJvck1lc3NhZ2U7CisgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhj
ZXB0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUVycm9yKCZnbG9iYWxPYmplY3QsIGdlbmVyaWNFcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNH
bG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xv
YmFsU2NvcGU+Cit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3Jp
cHRXaXRoU3ViY2xhc3MoKQoreworICAgIEFTU0VSVCghbV9nbG9iYWxTY29wZVdyYXBwZXIpOwor
CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CisKKyAgICAvLyBFeHBsaWNpdGx5IHBy
b3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVk
CisgICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGds
b2JhbCBvYmplY3QgaXMgZnVsbHkKKyAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRz
IG93biBwcm90b3R5cGUuKQorICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVy
ZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0
ciwganNOdWxsKCkpOworICAgIGF1dG8qIGNvbnRleHRQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3Bl
UHJvdG90eXBlOjpjcmVhdGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNHbG9iYWxTY29wZTo6Y3JlYXRlU3Ry
dWN0dXJlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlKTsKKyAgICBhdXRvKiBwcm94
eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNO
dWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKKyAgICBhdXRvKiBwcm94eSA9IEpTUHJv
eHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOworCisgICAgbV9nbG9iYWxTY29wZVdy
YXBwZXIuc2V0KCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwg
c3RhdGljX2Nhc3Q8R2xvYmFsU2NvcGUmPigqbV9nbG9iYWxTY29wZSksIHByb3h5KSk7CisgICAg
Y29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX2dsb2Jh
bFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0
KCkgPT0gbV9nbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlV3Jh
cHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxTY29wZVdy
YXBwZXIpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2Jh
bE9iamVjdCgqbV92bSwgbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIGF1dG8qIGds
b2JhbFNjb3BlUHJvdG90eXBlID0gSlNHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV9n
bG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIGdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRC
ZWNvbWVQcm90b3R5cGUoKTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0p
LT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgZ2xvYmFsU2NvcGVQcm90b3R5
cGUpOworCisgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV9nbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCkpOworICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1f
dm0sIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX2dsb2JhbFNj
b3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxTY29wZVdyYXBwZXIpOworICAg
IEFTU0VSVChhc09iamVjdChtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0
KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fZ2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAg
IG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fZ2xv
YmFsU2NvcGUpOworICAgIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1f
Y29uc29sZUNsaWVudC5nZXQoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6aW5pdFNjcmlwdCgpCit7CisgICAgaWYgKGlzPERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNz
PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUsIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChpczxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7CisgICAgICAgIGluaXRTY3Jp
cHRXaXRoU3ViY2xhc3M8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpIHsK
KyAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
UHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZT4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKyAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2Nv
cGUpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZVByb3RvdHlwZSwgSlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSwgQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oCmluZGV4IGQyMzIxZWM0MjZhZWM2ODgyMzkwNWY2Y2Q2YWI3ODkwMDY1OTM3NTEuLmNm
ZTRlNjg4MDNkNTRlY2JmZDkwZDdjMzQ3ODVjMzhkODQzMTIyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMjMgKzI2LDkwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRGVidWdnZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvTmFrZWRQdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK30KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNzIFNj
cmlwdFNvdXJjZUNvZGU7CitjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50OworY2xhc3MgV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU7CisKIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZp
cnR1YWwgfldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisgICAg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihSZWY8SlNDOjpWTT4mJiwgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUqKTsKKyAgICBleHBsaWNpdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgdmlydHVhbCB+V29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpOworCisgICAgdm9pZCByZWxlYXNlSGVhcEFj
Y2VzcygpOworICAgIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3MoKTsKKworICAgIHZvaWQgYWRkVGlt
ZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25D
YWxsYmFjayk7CisgICAgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVu
TG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKKworICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKQorICAgIHsKKyAgICAgICAgaW5pdFNjcmlwdElm
TmVlZGVkKCk7CisgICAgICAgIHJldHVybiBtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKyAgICB2b2lk
IGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKworICAgIC8vIEFzeW5jIHJlcXVlc3Qg
dG8gdGVybWluYXRlIGEgSlMgcnVuIGV4ZWN1dGlvbi4gRXZlbnR1YWxseSBjYXVzZXMgdGVybWlu
YXRpb24KKyAgICAvLyBleGNlcHRpb24gcmFpc2VkIGR1cmluZyBKUyBleGVjdXRpb24sIGlmIHRo
ZSB3b3JrZXIgdGhyZWFkIGhhcHBlbnMgdG8gcnVuIEpTLgorICAgIC8vIEFmdGVyIEpTIGV4ZWN1
dGlvbiB3YXMgdGVybWluYXRlZCBpbiB0aGlzIHdheSwgdGhlIFdvcmtlciB0aHJlYWQgaGFzIHRv
IHVzZQorICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0aW9uRm9yYmlkZGVuKCkgdG8g
Z3VhcmQgYWdhaW5zdCByZWVudHJ5IGludG8gSlMuCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9t
IGFueSB0aHJlYWQuCisgICAgdm9pZCBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7Cisg
ICAgYm9vbCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3Q7CisKKyAgICAvLyBDYWxsZWQg
b24gV29ya2VyIHRocmVhZCB3aGVuIEpTIGV4aXRzIHdpdGggdGVybWluYXRpb24gZXhjZXB0aW9u
IGNhdXNlZCBieSBmb3JiaWRFeGVjdXRpb24oKSByZXF1ZXN0LAorICAgIC8vIG9yIGJ5IFdvcmtl
ciB0aHJlYWQgdGVybWluYXRpb24gY29kZSB0byBwcmV2ZW50IGZ1dHVyZSBlbnRyeSBpbnRvIEpT
LgorICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7CisgICAgYm9vbCBpc0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIGNvbnN0OworCisgICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorCisg
ICAgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qKTsKKworICAgIHZvaWQgZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdlYkFz
c2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdl
ID0gbnVsbHB0cik7CisgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlSGVhcEFjY2VzcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3Mo
KSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2Jh
bFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxTY29wZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90
aWZpY2F0aW9uQ2FsbGJhY2spID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGltZXJTZXRO
b3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFj
aykgPSAwOworICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9nbG9iYWxTY29wZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0U2NyaXB0KCk7CisgICAg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwogCi0gICAgdmlydHVhbCBi
b29sIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdCA9IDA7Citwcml2YXRlOgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFs
U2NvcGUsIHR5cGVuYW1lIEdsb2JhbFNjb3BlPgorICAgIHZvaWQgaW5pdFNjcmlwdFdpdGhTdWJj
bGFzcygpOwogCi0gICAgdmlydHVhbCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdy
YXBwZXIoKSA9IDA7CisgICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07CisgICAgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqIG1fZ2xvYmFsU2NvcGU7CisgICAgSlNDOjpTdHJvbmc8SlNET01HbG9i
YWxPYmplY3Q+IG1fZ2xvYmFsU2NvcGVXcmFwcGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3Jr
ZXJDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CisgICAgbXV0YWJsZSBMb2NrIG1fc2No
ZWR1bGVkVGVybWluYXRpb25NdXRleDsKKyAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAKaW5kZXggNTk2NGQ1MTExNzliMGY4NWVmZGFmMTMxMjYwMWQxMzQ5YjlhZjk1ZS4u
MWNlZmNiZGMwM2RmYWQ3OTIwYjVhNmM2MjRlODA4M2IzMGE1YWQ2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2Rl
ZmF1bHQobWFpbkNvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBXb3JrZXJTY3JpcHRDb250
cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyOworICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdENvbnRyb2xsZXI7CiAgICAgewogICAgICAgICAvLyBNdXRleCBwcm90ZWN0
aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjaGFuZ2UgbV93b3JrZXJH
bG9iYWxTY29wZQogICAgICAgICAvLyB3aGlsZSBXb3JrZXJUaHJlYWQ6OnN0b3AoKSBpcyBhY2Nl
c3NpbmcgaXQuIE5vdGUgdGhhdCBXb3JrZXJUaHJlYWQ6OnN0b3AoKSBjYW4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZmRmNTUwZjQ0OTkyZDllNjA0MzFlN2QyM2ZkZmIzOWQxZDBlOTNj
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKLQotV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25z
b2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDog
bV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQotewotfQotCi1Xb3JrbGV0
Q29uc29sZUNsaWVudDo6fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OwotCi12b2lk
IFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIFJl
ZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCi17Ci0gICAgU3RyaW5n
IG1lc3NhZ2VUZXh0OwotICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1l
c3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNz
YWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxT
Y29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKLX0KLQotdm9pZCBXb3Jr
bGV0Q29uc29sZUNsaWVudDo6Y291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OnRpbWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50Ojp0aW1lRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0K
LQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxl
RW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3Jr
bGV0Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAo
SlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi12b2lk
IFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxT
Y3JpcHRBcmd1bWVudHM+JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3Jk
RW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQot
dm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmJiNDlhNWRhZmI4YWYzYzNjZDk5NjdmNmYwYmEx
ZGMzYjU1M2E5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci1jbGFzcyBDYWxsRnJhbWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29y
a2xldENvbnNvbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrbGV0
Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUmKTsKLSAgICB2aXJ0dWFsIH5Xb3JrbGV0
Q29uc29sZUNsaWVudCgpOwotCi1wcml2YXRlOgotICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5k
TGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFJl
ZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCBjb3VudChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9p
ZCBjb3VudFJlc2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBm
aW5hbDsKLSAgICB2b2lkIHByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpIGZpbmFsOwotICAgIHZvaWQgcHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgZmluYWw7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2
b2lkIHRpbWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFs
OwotICAgIHZvaWQgdGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lk
IHRpbWVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFs
OwotICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9y
OjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAg
IHZvaWQgcmVjb3JkRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLQotICAg
IFdvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrbGV0R2xvYmFsU2NvcGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAppbmRleCA3YjNiNDIxMGY3NGI2ZDZiNmEyNjNjZWU5YmVjMDQxYzc2NDI3OTg5
Li4wZGI1MTk1YmE5ZmU0ZGJiNmU1ZWQwMmI4NmU2MGNkMmYyYWZlOGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTUwLDcgKzUwLDYg
QEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtsZXRHbG9iYWxTY29wZSk7CiAKIFdv
cmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVh
ZCYgdGhyZWFkLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1f
dGhyZWFkKCZ0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyPih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVVbmlxdWUoKSkKICAgICAsIG1fdXJsKHBhcmFtZXRlcnMud2luZG93VVJMKQogICAgICwgbV9q
c1J1bnRpbWVGbGFncyhwYXJhbWV0ZXJzLmpzUnVudGltZUZsYWdzKQpAQCAtNjMsOCArNjIsOCBA
QCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRU
aHJlYWQmIHRocmVhZCwgY29uc3QgV29yawogfQogCiBXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmts
ZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTY3Jp
cHRTb3VyY2VDb2RlJiYgY29kZSkKLSAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1l
bnQpKQotICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4o
V1RGTW92ZSh2bSksIHRoaXMpKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV1RG
TW92ZSh2bSkpCisgICAgLCBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAs
IG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fdXJs
KGNvZGUudXJsKCkpCiAgICAgLCBtX2pzUnVudGltZUZsYWdzKGRvY3VtZW50LnNldHRpbmdzKCku
amF2YVNjcmlwdFJ1bnRpbWVGbGFncygpKQpAQCAtODEsNyArODAsNyBAQCBXb3JrbGV0R2xvYmFs
U2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZN
PiYmIHZtLCBTYwogCiBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQog
ewotICAgIEFTU0VSVCghbV9zY3JpcHQpOworICAgIEFTU0VSVCghc2NyaXB0KCkpOwogICAgIHJl
bW92ZUZyb21Db250ZXh0c01hcCgpOwogICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gYWxsV29ya2xl
dEdsb2JhbFNjb3Blc1NldCgpLnJlbW92ZSh0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92
ZVJlc3VsdCwgcmVtb3ZlUmVzdWx0KTsKQEAgLTg5LDcgKzg4LDcgQEAgV29ya2xldEdsb2JhbFNj
b3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnBy
ZXBhcmVGb3JEZXN0cnVjdGlvbigpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdCkKKyAgICBpZiAoIXNj
cmlwdCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fZGVmYXVsdFRhc2tHcm91cCkKICAg
ICAgICAgbV9kZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7CkBAIC05
OCw4ICs5Nyw4IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKQogICAgIGlmIChtX2V2ZW50TG9vcCkKICAgICAgICAgbV9ldmVudExvb3AtPmNsZWFyTWlj
cm90YXNrUXVldWUoKTsKICAgICByZW1vdmVSZWplY3RlZFByb21pc2VUcmFja2VyKCk7Ci0gICAg
bV9zY3JpcHQtPnZtKCkubm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7Ci0gICAgbV9zY3JpcHQgPSBu
dWxscHRyOworICAgIHNjcmlwdCgpLT52bSgpLm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOworICAg
IGNsZWFyU2NyaXB0KCk7CiB9CiAKIGF1dG8gV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0
R2xvYmFsU2NvcGVzU2V0KCkgLT4gV29ya2xldEdsb2JhbFNjb3Blc1NldCYKQEAgLTEyOSwyMiAr
MTI4LDIyIEBAIFN0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwm
IHVybCkgY29uc3QKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCiB7CiAgICAg
aWYgKG1fY29kZSkKLSAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKCptX2NvZGUpOworICAgICAg
ICBzY3JpcHQoKS0+ZXZhbHVhdGUoKm1fY29kZSk7CiB9CiAKIGJvb2wgV29ya2xldEdsb2JhbFNj
b3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fc2Ny
aXB0IHx8IG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworICAgIHJldHVybiAhc2Ny
aXB0KCkgfHwgc2NyaXB0KCktPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CiB9CiAKIHZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKLSAgICBtX3NjcmlwdC0+ZGlzYWJsZUV2YWwoZXJyb3JNZXNzYWdlKTsKKyAgICBzY3JpcHQo
KS0+ZGlzYWJsZUV2YWwoZXJyb3JNZXNzYWdlKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICBtX3NjcmlwdC0+ZGlzYWJsZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0
KCktPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOwogfQogCiBVUkwgV29ya2xldEds
b2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRm9yY2VVVEY4KSBjb25z
dApAQCAtMjM0LDkgKzIzMyw5IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5p
c2hlZCgpCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2V2YWx1YXRlZE1vZHVsZXMuYWRkKG1vZHVs
ZVVSTCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShT
Y3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgV1RGTW92ZShtb2R1bGVV
UkwpKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJj
ZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNl
cHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgbV9zY3JpcHQtPnNl
dEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgICAgICAgICAgc2NyaXB0KCktPnNldEV4Y2VwdGlv
bihleGNlcHRpb24pOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoV1RG
TW92ZShjb21wbGV0ZWRKb2IpLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaAppbmRleCBmMzkxNmRjMTY2NGRmZjc1YWNiNTk0OGY4NDQwZWNlMDE4
MGVkOTVlLi41MzVlMzZlZTNiYjBlMDA4YmEzMmRmZTc3OTc0MDYxMmIwYmRjYWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzQsOCArMzQs
OCBAQAogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJXb3JrZXJFdmVu
dExvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC04Niw4ICs4Niw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlciogc2NyaXB0KCkgZmluYWwgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KLSAg
ICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KICAgICBXb3JrZXJP
cldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKQEAgLTE3MCw4
ICsxNjgsNiBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAg
ICAgUmVmUHRyPFdvcmtlck9yV29ya2xldFRocmVhZD4gbV90aHJlYWQ7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwotCiAgICAgUmVmPFNl
Y3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKIAogICAgIFJlZlB0cjxXb3JrZXJFdmVudExvb3A+
IG1fZXZlbnRMb29wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmMxNTQx
YzE1ODAyM2JiNmZhYTVlNzUzMjI2ZjYxYzdlZmY4YzQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLQotI2luY2x1
ZGUgIkpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIK
LSNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRl
ICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgotCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29t
cGxldGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dD
QWN0aXZpdHlDYWxsYmFjay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFJlZjxWTT4mJiB2bSwgV29ya2xldEdsb2JhbFNjb3Bl
KiB3b3JrbGV0R2xvYmFsU2NvcGUpCi0gICAgOiBtX3ZtKFdURk1vdmUodm0pKQotICAgICwgbV93
b3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKCptX3ZtKQotewotICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2Vzcygp
OyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdlIGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFw
IGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJtYW5lbnRseS4KLSAgICBKU1ZNQ2xpZW50RGF0YTo6
aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkpOwotfQotCi1Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xv
YmFsU2NvcGUpCi0gICAgOiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihWTTo6Y3JlYXRlKCksIHdv
cmtsZXRHbG9iYWxTY29wZSkKLXsKLX0KLQotV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcigpCi17Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0g
ICAgZm9yYmlkRXhlY3V0aW9uKCk7Ci0KLSAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyKSB7Ci0gICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFy
ZGVkT2JqZWN0cygpOwotICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENv
bnNvbGVDbGllbnQobnVsbHB0cik7Ci0gICAgICAgIG1fY29uc29sZUNsaWVudCA9IG51bGxwdHI7
Ci0gICAgfQotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1f
dm0gPSBudWxscHRyOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRF
eGVjdXRpb24oKQotewotICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0
VGhyZWFkKCkpOwotICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKLX0KLQotYm9vbCBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAotewot
ICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAg
IHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAg
aWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGluaXRT
Y3JpcHRJZk5lZWRlZCgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OwotCi0gICAg
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRFdmFsRW5hYmxlZChmYWxzZSwgZXJyb3JN
ZXNzYWdlKTsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFz
c2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlv
bkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVkZWQo
KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKLQotICAgIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0V2ViQXNzZW1ibHlFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2Up
OwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVu
YW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1lIEdsb2JhbFNjb3BlPgotdm9pZCBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCi17Ci0gICAgQVNTRVJUKCFt
X3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2
bSgpIH07Ci0KLSAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBw
cm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCi0gICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0
aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKLSAgICAv
LyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUuKQotICAgIFN0cnVj
dHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwotICAgIGF1dG8qIGNv
bnRleHRQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGUoKm1fdm0sIG51
bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gSlNHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBjb250
ZXh0UHJvdG90eXBlKTsKLSAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0
ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlU
eXBlKTsKLSAgICBhdXRvKiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1
Y3R1cmUpOwotCi0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLnNldCgqbV92bSwgSlNH
bG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PEdsb2JhbFNj
b3BlJj4oKm1fd29ya2xldEdsb2JhbFNjb3BlKSwgcHJveHkpKTsKLSAgICBjb250ZXh0UHJvdG90
eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKm1fdm0pLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgq
bV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LmdldCgpKTsKLSAgICBhdXRvKiBnbG9iYWxTY29wZVByb3RvdHlwZSA9IEpTR2xvYmFsU2NvcGU6
OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0g
ICAgZ2xvYmFsU2NvcGVQcm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgpOwotICAgIGNvbnRl
eHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKCptX3ZtLCBnbG9iYWxTY29wZVByb3RvdHlwZSk7Ci0KLSAgICBwcm94eS0+c2V0VGFyZ2V0
KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgIHByb3h5LT5z
dHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci5nZXQoKSk7Ci0KLSAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwotICAg
IEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlw
ZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIpOwotCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrbGV0Q29uc29s
ZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKLX0KLQot
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCi17Ci0gICAgaWYgKGlz
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQotICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93b3Jr
bGV0R2xvYmFsU2NvcGUpKSB7Ci0gICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYgKGlzPEF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlPihtX3dvcmtsZXRHbG9iYWxTY29wZSkpIHsKLSAgICAgICAgaW5pdFNjcmlwdFdpdGhT
dWJjbGFzczxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU0F1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlLCBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQotewotICAgIGlm
IChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4
Y2VwdGlvbiwgcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgICAgICByZXBvcnRFeGNlcHRp
b24obV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSwgZXhjZXB0aW9u
KTsKLSAgICB9Ci19Ci0KLS8vIEltcG9ydGFudDogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9u
IG11c3QgdmVyaWZ5IHRoYXQgdGhlIHJldHVybmVkIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90
IHZpb2xhdGUgQ09SUyBpZiBpdCBpcyBnb2luZyB0byBiZSBwYXNzZWQgYmFjayB0byBKUy4KLXZv
aWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRp
b24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVk
ZWQoKTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbE9iamVjdCgpOwotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwot
ICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKLQotICAgIEpTRXhlY1N0YXRlOjpwcm9maWxl
ZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgc291
cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9i
YWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKLQotICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlv
biAmJiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpIHsKLSAgICAgICAgLy8gVGhpcyBGSVhNRSBp
cyBmcm9tIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuCi0gICAgICAgIC8vIEZJWE1FOiBJdCdzIG5v
dCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29kZSB0byBzdHJpbmctaWZ5IHRo
ZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgotICAgICAgICAvLyBEbyB3ZSBuZWVkIHRvIGRvIGFu
eXRoaW5nIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwgc2F5LCByYWlzZXMgYW5vdGhl
ciBleGNlcHRpb24/Ci0gICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSByZXR1cm5l
ZEV4Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0cmluZygmZ2xvYmFsT2JqZWN0KTsKLSAgICB9Ci19
Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2Vw
dGlvbiogZXhjZXB0aW9uKQotewotICAgIGF1dG8qIGxleGljYWxHbG9iYWxPYmplY3QgPSBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpOwotICAgIFZNJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIHRocm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCBleGNlcHRpb24pOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpyZWxlYXNl
SGVhcEFjY2VzcygpCi17Ci0gICAgbV92bS0+aGVhcC5yZWxlYXNlQWNjZXNzKCk7Ci19Ci0KLXZv
aWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmFjcXVpcmVIZWFwQWNjZXNzKCkKLXsKLSAgICBt
X3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJO
b3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKLXsKLSAgICBhdXRvIHByb2Nlc3NUaW1lciA9
IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7Ci0gICAgICAgIGlmICghdGltZXIpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHRpbWVyLT5hZGRUaW1lclNldE5vdGlmaWNhdGlvbihj
YWxsYmFjayk7Ci0gICAgfTsKLQotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rp
dml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5w
dHIoKSk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0
Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgY2FsbGJhY2spCi17Ci0gICAgYXV0byBwcm9jZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRp
bWVyKiB0aW1lcikgewotICAgICAgICBpZiAoIXRpbWVyKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB0aW1lci0+cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oY2FsbGJhY2spOwotICAg
IH07Ci0KLSAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygp
KTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsK
LSAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12
b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9u
KCkKLXsKLSAgICBpZiAobV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB7Ci0gICAgICAgIC8vIFRoZSBtdXRleCBwcm92aWRlcyBhIG1lbW9yeSBiYXJyaWVy
IHRvIGVuc3VyZSB0aGF0IG9uY2UKLSAgICAgICAgLy8gdGVybWluYXRpb24gaXMgc2NoZWR1bGVk
LCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgd2lsbAotICAgICAgICAvLyBhY2N1cmF0ZWx5IHJl
ZmxlY3QgdGhhdCBsZXhpY2FsR2xvYmFsT2JqZWN0IHdoZW4gY2FsbGVkIGZyb20gYW5vdGhlciB0
aHJlYWQuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zY2hlZHVsZWRUZXJtaW5h
dGlvbkxvY2spOwotICAgICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOwotICAg
IH0KLSAgICBtX3ZtLT5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKLX0KLQotYm9vbCBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0Ci17Ci0gICAg
Ly8gU2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24gcmVnYXJkaW5n
IG11dGV4IHVzYWdlLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zY2hlZHVsZWRUZXJt
aW5hdGlvbkxvY2spOwotICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247Ci19Ci0K
LUpTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29w
ZVdyYXBwZXIoKQotewotICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlMTM4Y2E2Mzg2NjFjYThmNGIzMTgyMjNkN2RlZDkxNzExZjAwNTI0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNSdW5Mb29wVGltZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4K
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL05ha2VkUHRyLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgVk07Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7Ci1jbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7Ci1jbGFzcyBXb3Jr
bGV0R2xvYmFsU2NvcGU7Ci1jbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKLQotLy8gRklYTUU6
IFdlIHNob3VsZCBzaGFyZSBtb3JlIGNvZGUgd2l0aCBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgot
Y2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2xldFNjcmlwdENv
bnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqKTsKLSAgICBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcihSZWY8SlNDOjpWTT4mJiwgV29ya2xldEdsb2JhbFNjb3BlKik7
Ci0gICAgfldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7Ci0KLSAgICBKU1dvcmtsZXRHbG9iYWxT
Y29wZSogd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpCi0gICAgewotICAgICAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKLSAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKTsKLSAgICB9Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdy
YXBwZXIoKSBmaW5hbDsKLQotICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7Ci0gICAgYm9vbCBp
c0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwotCi0gICAgdm9pZCBkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotCi0gICAgdm9pZCByZWxlYXNlSGVhcEFjY2Vzcygp
IGZpbmFsOwotICAgIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3MoKSBmaW5hbDsKLQotICAgIHZvaWQg
YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmlj
YXRpb25DYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlv
bihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSBmaW5hbDsK
LQotICAgIHZvaWQgc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwotICAgIGJvb2wgaXNU
ZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0IGZpbmFsOwotCi0gICAgdm9pZCBldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Ug
PSBudWxscHRyKTsKLSAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwotCi0gICAgdm9pZCBzZXRFeGNlcHRpb24o
SlNDOjpFeGNlcHRpb24qKTsKLQotICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCi0gICAgewotICAgICAg
ICBpZiAoIW1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikKLSAgICAgICAgICAgIGluaXRTY3Jp
cHQoKTsKLSAgICB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0ds
b2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KLSAgICB2b2lkIGluaXRTY3JpcHRXaXRo
U3ViY2xhc3MoKTsKLQotICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9Owot
ICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOwotICAgIFdvcmtsZXRHbG9iYWxTY29wZSogbV93b3Jr
bGV0R2xvYmFsU2NvcGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRDb25zb2xlQ2xpZW50
PiBtX2NvbnNvbGVDbGllbnQ7Ci0gICAgSlNDOjpTdHJvbmc8SlNXb3JrbGV0R2xvYmFsU2NvcGU+
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcjsKLSAgICBtdXRhYmxlIExvY2sgbV9zY2hlZHVs
ZWRUZXJtaW5hdGlvbkxvY2s7Ci0gICAgYm9vbCBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24geyBm
YWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411905</attachid>
            <date>2020-10-20 13:12:18 -0700</date>
            <delta_ts>2020-10-20 15:14:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217980-20201020131217.patch</filename>
            <type>text/plain</type>
            <size>111474</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkYzdkMWZmODQ0NWFm
OGJhYmZmOTQyOGUwM2NiYzg1ZTZlNTlkMS4uZDY0ZDI5NjM0YmQ1YmIwNzcwM2Q1YTQyYmJjMTEy
MjgxMDQ3NTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMC0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIgYW5kIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIGludG8gV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWVyZ2UgV29ya2VyU2NyaXB0Q29udHJvbGxlciBhbmQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXIgaW50byBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyCisgICAgICAg
IHRvIHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHdvcmtlcnMgYW5kIHdvcmtsZXRzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cHJveHkgY29uc3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
Ojp3cmFwcGVkIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldHVwTmV3bHlDcmVh
dGVkU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6
V29ya2VyQ29uc29sZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xp
ZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
b25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xp
ZW50Ojpjb3VudFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6
OnRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
OjpXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmRp
c2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
aW1wb3J0U2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6On5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4
ZWN1dGlvblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
YWNxdWlyZUhlYXBBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmlj
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0
aFN1YmNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRJZk5l
ZWRlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRDb25zb2xlQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldv
cmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEds
b2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2Nv
cGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oOiBSZW1vdmVkLgorCiAyMDIwLTEwLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2ODYxNSk6IHNvbWUgYWNjZWxlcmF0
ZWQgdHJhbnNmb3JtIHRlc3RzIGFyZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggOGFlYjdlZWZk
MjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYTA2OGRjZDA0NGQwZmEzMjY3MTZlZmUw
NzdiYzhjZDNkODQyZjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5j
bHVkZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmgiCkBAIC0xMTYsNyArMTE3LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXRUaHJl
YWQ6OndvcmtsZXRUaHJlYWQoKQogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1
bHQobWFpbkNvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlcjsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyKiBzY3JpcHRDb250cm9sbGVyOwogICAgIHsKICAgICAgICAgYXV0byBsb2NrID0gaG9sZExv
Y2sobV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29wZUxvY2spOwogICAgICAgICBt
X3dvcmtsZXRHbG9iYWxTY29wZSA9IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKnRo
aXMsIG1fcGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ3NjQ0MTVhODQyYjJlNmRmNDI3
MzM2YTFhMTIzNTkzYjg4NWQxNjUuLmZmNzNlMzdhZmRmZTkwY2I1MDUwYzUyYjJkYTU2NTIxYmIy
Y2ViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02MDUsNyArNjA1LDYgQEAgYmluZGluZ3MvanMvV2Vi
Q29yZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNw
cAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmluZGluZ3Mv
anMvV2luZG93UHJveHkuY3BwCi1iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlk
Z2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTI1NTQsNiArMjU1Myw4IEBAIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAogd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
Cit3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAord29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAog
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
QEAgLTI1OTQsMTAgKzI1OTUsOCBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dv
cmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3BwCi13
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKIHhtbC9DdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwCiB4bWwvRE9NUGFyc2VyLmNwcAogeG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhOWMwNjA2NTFjYThhNjc2OGYxMTdhYWQxM2M0Y2VkNzA5NWJjMzZmLi45NDQwMWNk
ODUwYmMwMzEzNTczZTQyMDdiZTAxMWRkN2U1YWRhZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ5LDcgKzEzNDksNiBA
QAogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZE
NjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMz
OUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJl
cGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAw
QzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAw
MUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xl
dENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVk
aXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZE
MENCMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBD
U1NQYWludFNpemUuaCAqLzsgfTsKIAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxl
UHJvcGVydHlNYXBSZWFkT25seS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRkQwQ0UyMTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBS
ZWFkT25seS5oICovOyB9OwpAQCAtMTM2Myw3ICsxMzYyLDYgQEAKIAkJNEJEQTQwMDEyMTUxQjZG
NTAwRkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0
IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZDRCAvKiBX
b3JrbGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovOyB9OwogCQk0QkRFQTMyNTIx
N0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyog
V29ya2xldEdsb2JhbFNjb3BlLmggKi87IH07Ci0JCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAv
KiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggKi87IH07CiAJCTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaCAqLzsgfTsKIAkJNEQzQjAwQUIyMTVENjlBNzAwNzZCOTgzIC8qIE1lZGlhUmVj
b3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRE
M0IwMEE5MjE1RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggKi87IH07CiAJCTREM0Iw
MEFGMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0IwMEFEMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9i
RXZlbnQuaCAqLzsgfTsKQEAgLTQ4NzcsNyArNDg3NSw2IEBACiAJCUUxOUFDM0Y1MTgyNERDNzkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0VEMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEE1MTIuaCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8q
IENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE2
NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0JGMEU3NkFD
RjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQkQwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFB
REVDQ0UwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNDQzBFNzZBRDhCMDA0QTFBNUUg
LyogTWVzc2FnZUNoYW5uZWwuaCAqLzsgfTsKIAkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8q
IEpTTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQURFREQ4MEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggKi87IH07
CkBAIC03OTMzLDkgKzc5MzAsOSBAQAogCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEy
OEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1h
dGhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTE5hbWVz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTE5hbWVzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0gICAgICAgIDQ0QkQyQjM2MjUyNzc5NzgwMDU1
RDk1QSAvKiBHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2
ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uUmFuZ2VEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QjM4QkY5MjUzNjlBODgwMEE0NDU4RCAvKiBTZWxlY3Rp
b25SYW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRCRDJC
MzYyNTI3Nzk3ODAwNTVEOTVBIC8qIEdsb2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSAiR2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1l
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFy
VGhlbWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTgyMzQsOCArODIzMSw2IEBACiAJCTRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBT
bWFydFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
bWFydFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCN0FFNDky
MjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbVBhaW50SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTUy
MTc3QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3VzdG9tUGFpbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
N0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVs
ZXRlQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckRlbGV0
ZUFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDQTIxOTBFQkQ2
MDBDMEFCNjQgLyogQ1NTUGFpbnRTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhaW50U2l6ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDRDIxOTBFQkU5MDBDMEFCNjQg
LyogQ1NTUGFpbnRTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQYWludFNpemUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODI2NCw4ICs4MjU5LDYgQEAKIAkJNEJERUEzMjMyMTdFQzk2QTAw
NTJERkNEIC8qIFdvcmtsZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBX
b3JrbGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAv
KiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2Jh
bFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEJERUEzMjcyMTgwMDNG
NzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
REVBMzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAv
KiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NTk4LDYgKzEwNTkxLDcgQEAKIAkJODMxOThGQkIyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRp
b0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUF1
ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4RkJEMjRB
MTYwQzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBCYXNlQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxOThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFBM0VBODI1M0Y3OEMyMDA2NzgwNEYgLyogV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjcxLDYgKzEwNjY1LDcgQEAKIAkJ
ODM1NjU3QzYxRUNBQjBFODAwQ0RFNzJEIC8qIEpTRE9NTWF0cml4SW5pdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU1hdHJpeEluaXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzU2Rjk3QzI0RDlGODA4MDA2QzNFNDEgLyogV2ViS2l0
QXVkaW9MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNTZGOTdFMjREOUY4MDkwMDZDM0U0MSAvKiBXZWJLaXRB
dWRpb0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNUI2ODBFMUY1NDhCREUwMDcxRjdGNiAvKiBKU0Zp
bGVTeXN0ZW1FbnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0ZpbGVTeXN0ZW1FbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNUQyRDc0MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50K0VudHJp
ZXNBUEkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MSW5wdXRFbGVtZW50K0VudHJp
ZXNBUEkuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzUxRjVGMUZC
ODAwMTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTcyOSw4ICsxNTcyNCw2IEBACiAJCUUxQTMxNjJCMTM0
QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBX
ZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
MUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQTY0M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEZpbGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCRDE0RTlFM0E4MDA0NDlFMTMgLyog
RmlsZVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODUxLDcgKzE4ODQ0LDkgQEAKIAkJCQkyRTQzNDYzRDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwICovLAogCQkJCTJFNDM0NjNF
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovLAogCQkJCTJFNDM0
NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovLAorCQkJCTgzMUEz
RUE4MjUzRjc4QzIwMDY3ODA0RiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8s
CiAJCQkJODNENkFBRTQyNTI0RUUxMzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmggKi8sCisJCQkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTgzOUEwOTVCMjUyNEYzNzYwMEVFRjMyOCAv
KiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJODNFODI4QjIyNTI3
OTRDRDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovLAogCQkJCTQxNkUyOUE1
MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovLApAQCAtMTk4Njcs
OCArMTk4NjIsNiBAQAogCQkJCTRCREVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0LmNw
cCAqLywKIAkJCQk0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovLAogCQkJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLywKLQkJCQk0QjdGOUM1
NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICovLAotCQkJCTRC
N0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovLAogCQkJ
CTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAog
CQkJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywK
IAkJCQk0QkRFQTMyQTIxODAxMDcyMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAq
LywKQEAgLTE5ODc4LDggKzE5ODcxLDYgQEAKIAkJCQk4MzRBNkEzODI1MjY4NDQxMDA3NDdGNUQg
LyogV29ya2xldFBhcmFtZXRlcnMuaCAqLywKIAkJCQk4MzNCRDgxNTI1MjRENEUyMDA2RTcyQjMg
LyogV29ya2xldFBlbmRpbmdUYXNrcy5jcHAgKi8sCiAJCQkJODMzQkQ4MTMyNTI0RDRFMjAwNkU3
MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCAqLywKLQkJCQk0QkRFQTMyOTIxODAwNDBDMDA1
MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAotCQkJCTRCREVBMzI3MjE4
MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSB3b3JrbGV0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjYzMSw4
ICsyNjYyMiw2IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBX
aW5kb3dQcm94eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRv
d1Byb3h5LmggKi8sCi0JCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwICovLAotCQkJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM0ODkzLDcgKzM0ODgyLDYgQEAKIAkJCQk0MTZFMjlBNjEw
MkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUI4MUNDRjFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyUnVudGltZUFnZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENkIzNDkwRjYxMTA0NTAw
Qjc5RkQxIC8qIFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVBNzY4
MDQwRkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNDkwMiwxMyArMzQ4OTAsMTEgQEAKIAkJCQlBNTRBMEM2ODFEQjgw
N0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTRCN0Y5QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdv
cmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTgyNTI0RDRGNTAw
NkU3MkIzIC8qIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5k
aW5nVGFza3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAv
KiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQw
OTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAv
KiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4
Njc0ZjJkZmI4MTZkNmVhNGNiMDM3NWZjNmNiMmE1NDkzYjNlNzZiLi40Mjk2OTQ1MDFlNWYzMjc1
ZWUyZjUwMjUyYTlkNzAyNDE3NmJmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yOTQsNiArMjk0LDEzIEBAIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9i
YWxPYmplY3QqIGpzR2xvCiAgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNl
cHRpb24pOwogfQogCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJkZWRPYmpl
Y3RzKCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsKKyAg
ICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAgICAgICAgZ3VhcmRlZC0+
Y2xlYXIoKTsKK30KKwogSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7
CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0RnVuY3RvciB7CkBAIC0zNDEsMTEgKzM0
OCw4IEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTVdyYXBwCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250
ZXh0KSkKICAgICAgICAgcmV0dXJuIHRvSlNET01XaW5kb3coZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmZyYW1lKCksIHdvcmxkKTsKIAotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOwotCi0gICAgaWYgKGlz
PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxX
b3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyKCk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KS5zY3JpcHQoKS0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDczODY3ZDZhYjJlNWI0ZGJiNzBiNzBh
OWEzNjA5NDg0OWYwY2VlNjIuLmI3MzU3YWZlMDVjNWVmYzI5MjQyNGM4NThkYzFjYjQyZDQyOTgz
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc3Vic3BhY2VGb3Io
SlNDOjpWTSYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCiBwdWJsaWM6CiAgICAgTG9jayYgZ2NMb2Nr
KCkgeyByZXR1cm4gbV9nY0xvY2s7IH0KIApAQCAtODEsNiArODIsMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKik7CiAKKyAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9i
amVjdHMoKTsKKworICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3By
b3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KKwogcHVibGljOgogICAgIH5KU0RPTUdsb2Jh
bE9iamVjdCgpOwogCkBAIC0xMDUsNiArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxET01X
cmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgdWludDhfdCBtX3dvcmxkSXNOb3JtYWw7CiAgICAg
TG9jayBtX2djTG9jazsKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJv
eHk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCdWlsdGluR2xvYmFscyhKU0M6OlZNJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA1
N2Q0NWMzZGU5OGJlNDdiZTEwZmE0YTY5M2U4MmY3NTQxMDc1ZjA1Li42YmU3NTE4MDA1MzU2MGNh
MmQ4NmU2ODA5OTgxZTY2NzI3YmE2NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTk3LDggKzk3LDggQEAgSlNET01XaW5kb3dCYXNl
OjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPERP
TVdpbmRvdz4KICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHByb3h5LT53
b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93Q2xvc2VX
YXRjaHBvaW50cyhXYXRjaHBvaW50U2V0OjpjcmVhdGUoKHdpbmRvdyAmJiB3aW5kb3ctPmZyYW1l
KCkpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlkYXRlZCkpCiAgICAgLCBtX3dyYXBwZWQoV1RGTW92
ZSh3aW5kb3cpKQotICAgICwgbV9wcm94eShwcm94eSkKIHsKKyAgICBtX3Byb3h5LnNldCh2bSwg
dGhpcywgcHJveHkpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEpT
RE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94
eSkKIAogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuZG9jdW1lbnRQdWJsaWNOYW1lKCksIGpz
TnVsbCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMud2lu
ZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byhidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LmdldCgpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAg
ICAgfTsKIAogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xF
TkdUSChzdGF0aWNHbG9iYWxzKSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQogCiBKU1dpbmRvd1Byb3h5KiBKU0RP
TVdpbmRvd0Jhc2U6OnByb3h5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eTsKKyAgICBy
ZXR1cm4ganNDYXN0PEpTV2luZG93UHJveHkqPihKU0RPTUdsb2JhbE9iamVjdDo6cHJveHkoKSk7
CiB9CiAKIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RE9NV2luZG93JiBkb21XaW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oCmluZGV4IDEwNTAzZmUzOWM4OWRlNjMxOGUzZjcyODdiYWM0NWQ3Nzk1MjJj
ZGIuLjhmZDVkNDc0NWJkMjg4OWY2YzQ0NjIwM2M5MDJjZDJlM2VhMDc0YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC0xMDgsNyArMTA4LDYg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwot
ICAgIEpTV2luZG93UHJveHkqIG1fcHJveHk7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgRE9NV2luZG93Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
aW5kZXggM2QzMTZmNzk2MTFiNDA0MmViYjkzN2U2MTQ1NGZmNTk0YmYxYWE2Zi4uZWYzNWI0YTAy
ZmE2MWFlYWVlMGIxNWE5NGYwY2NhYjk1YmNlMzU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtODcsMTMg
Kzg3LDYgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1Byb3h5KiBwcm94eSkKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwog
fQogCi12b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCkKLXsKLSAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsKLSAgICBm
b3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKLSAgICAgICAgZ3VhcmRlZC0+Y2xl
YXIoKTsKLX0KLQogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4o
Y2VsbCk7CkBAIC0xNTcsMTAgKzE1MCwxMCBAQCBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYgogCiBK
U1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUpCiB7Ci0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gd29ya2Vy
R2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAgYXV0byogc2NyaXB0ID0gd29ya2VyR2xvYmFsU2Nv
cGUuc2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
LSAgICBKU1dvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3JpcHQt
Pmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAg
cmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggZDQ0OTg3MTI5
NDZhZTVmNmYwMTg3ODY4NGU0Njk5N2IxZmVjMTdhMC4uMGY0N2ZhNjkyYzZkMGJjYjAzYzY0NWY2
ODQ5MmI0NjY2YzViNzUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAg
ICBERUNMQVJFX0lORk87CiAKICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0
IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0KLSAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3Qg
eyBBU1NFUlQobV9wcm94eSk7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTc2
LDggKzc1LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1
cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmpl
Y3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOwogCi0gICAgdm9pZCBjbGVhckRP
TUd1YXJkZWRPYmplY3RzKCk7Ci0KIHByb3RlY3RlZDoKICAgICBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+
JiYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwpA
QCAtODYsNyArODMsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtl
ckdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7Ci0gICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU1By
b3h5PiBtX3Byb3h5OwogfTsKIAogLy8gUmV0dXJucyBhIEpTV29ya2VyR2xvYmFsU2NvcGUgb3Ig
anNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDE4NzJiNDE0ZWQ5M2JkNGY2MDhlYzk4ZTdmZTdm
ZDRmYTI4MjYwNTEuLmY2ZjVlMTMyZDY1MTNjZGIyNGY4YWY0NWMwMzY4Y2ZhMTIxNGUwNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBAIC03NywxMyArNzcsNiBAQCB2b2lkIEpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkK
ICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCi12b2lkIEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCi17Ci0gICAgYXV0byBndWFy
ZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9iamVjdHM7Ci0gICAgZm9yIChhdXRvJiBndWFyZGVkIDog
Z3VhcmRlZE9iamVjdHMpCi0gICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7Ci19Ci0KIHZvaWQgSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsKQEAgLTEzOCw3ICsxMzEsNyBAQCBKU1ZhbHVlIHRv
SlMoSlNHbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29w
ZSkKIHsKICAgICBpZiAoIXdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3b3JrbGV0R2xv
YmFsU2NvcGUuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBhdXRv
KiBjb250ZXh0V3JhcHBlciA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2Nv
cGVXcmFwcGVyKCk7CiAgICAgaWYgKCFjb250ZXh0V3JhcHBlcikKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
aAppbmRleCA0NGUyZGY0MmI2ZDVhODE5YmZlNjU2YzdhMDY5MWE1Y2E1Y2MzNWNhLi5iYzUzZmNh
YmU0M2RhYWZmNzI1OWJmNmJmYjc5MGY3OTNhOWFlOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtNDcsNyAr
NDcsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgV29ya2xldEdsb2JhbFNj
b3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQotICAgIEpTQzo6SlNQ
cm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0
KCk7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtNjQsOCArNjMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNr
VG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7
CiAKLSAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKLQogcHJvdGVjdGVkOgogICAg
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQ
dHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mLCBKU0M6OkpTUHJveHkqKTsKQEAgLTc0LDcgKzcxLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+IG1fd3JhcHBlZDsKLSAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJveHk7CiB9OwogCiAvLyBSZXR1cm5zIGEg
SlNXb3JrbGV0R2xvYmFsU2NvcGUgb3IganNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGU4N2E2ZTU0YzdhMDIxOGQ3M2MyNDFl
NjQyY2E4NDZhNmQ2NzU4OWUuLjY1OWJmODUwOTNmZGY0ZTI3NzQ3N2ExOWI0YjhhOWU3NzY4ZTBl
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIC8vIEluIGEgV29ya2VyLCB0
aGUgZXhlY3V0aW9uIHNob3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2VyIHRocmVhZC4KICAg
ICBBU1NFUlQod29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAotICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xs
ZXIgPSB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKTsKKyAgICBhdXRvKiBzY3JpcHRDb250cm9s
bGVyID0gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCk7CiAKICAgICBpZiAobV9mdW5jdGlvbikg
ewotICAgICAgICBKU1dvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdENv
bnRyb2xsZXItPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgICAgICBhdXRvKiBjb250
ZXh0V3JhcHBlciA9IHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAg
ICAgICBleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoY29udGV4dFdyYXBwZXIsIGNvbnRleHRXcmFw
cGVyLCB3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU2NyaXB0U291
cmNlQ29kZSBjb2RlKG1fY29kZSwgVVJMKHdvcmtlckdsb2JhbFNjb3BlLnVybCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggYjgxMzNiZGE3Zjgz
NGJiY2E0MDZiMDFkMDQwMGQzOWVmMTY4NjhhMC4uYjdhZjBiZDJjYzg3NmJiYTM4YWU0OWExZjc4
MTJhNDcwMGUyZmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcApAQCAtNDAsOSArNDAsOCBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
LSNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5o
IgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxP
YmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDZkOGE3ZWQ5MWI5ZjM4NjkzODBh
Mjc1YzA5NzA2ZGE3MzQyMWFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKLQotI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKLSNpbmNs
dWRlICJKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNjcmlwdFNvdXJj
ZUNvZGUuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSAiV29y
a2VyQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0RlZmVycmVkV29ya1RpbWVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0
aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xv
Y2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLVdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlKQotICAgIDogbV92bShWTTo6Y3JlYXRlKCkpCi0gICAgLCBtX3dvcmtlckdsb2Jh
bFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIoKm1fdm0pCi17Ci0gICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mgbm90
IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBzbyB0
dXJuIGl0IG9uIHBlcm1hbmVudGx5LgotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQobV92bS5nZXQoKSk7Ci19Ci0KLVdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyKCkKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICBpZiAo
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpIHsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKLSAgICAgICAgbV93b3JrZXJHbG9i
YWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7Ci0gICAgICAgIG1fY29u
c29sZUNsaWVudCA9IG51bGxwdHI7Ci0gICAgfQotICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCi17Ci0gICAgQVNTRVJUKCFtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcik7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX3ZtLmdldCgpKTsKLQotICAg
IC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBp
dCBpc24ndCBjb2xsZWN0ZWQKLSAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2Jq
ZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQotICAgIC8vIGNvbnN0cnVjdGVk
LCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCi0gICAgaWYgKG1fd29ya2VyR2xvYmFs
U2NvcGUtPmlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAgICBTdHJ1Y3R1
cmUqIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpz
TnVsbCgpKTsKLSAgICAgICAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSog
ZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZSk7Ci0gICAgICAgIEpTQzo6RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIHByb3RlY3Rl
ZERlZGljYXRlZENvbnRleHRQcm90b3R5cGUoZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSk7Ci0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90
eXBlKTsKLSAgICAgICAgYXV0byogcHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1
Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7
Ci0gICAgICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVj
dHVyZSk7Ci0KLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3ZtLCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3Rh
dGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUmPigqbV93b3JrZXJHbG9iYWxTY29w
ZSksIHByb3h5KSk7Ci0gICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUt
PnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkp
OwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXIpOwotICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLmdldCgpKTsKLSAgICAgICAgYXV0byogd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUgPSBK
U1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRC
ZWNvbWVQcm90b3R5cGUoKTsKLSAgICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS0+c3Ry
dWN0dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIHdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlKTsKLQotICAgICAgICBwcm94eS0+c2V0VGFyZ2V0KCptX3Zt
LCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHByb3h5LT5zdHJ1
Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLmdldCgpKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgfSBlbHNlIGlm
IChtX3dvcmtlckdsb2JhbFNjb3BlLT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIs
IGpzTnVsbCgpKTsKLSAgICAgICAgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUq
IGNvbnRleHRQcm90b3R5cGUgPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6
Y3JlYXRlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICAg
ICAgSlNDOjpFbnN1cmVTdGlsbEFsaXZlU2NvcGUgcHJvdGVjdGVkQ29udGV4dFByb3RvdHlwZShj
b250ZXh0UHJvdG90eXBlKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBjb250
ZXh0UHJvdG90eXBlKTsKLSAgICAgICAgYXV0byogcHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5Ojpj
cmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSk7Ci0gICAgICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBw
cm94eVN0cnVjdHVyZSk7Ci0gICAgCi0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
LnNldCgqbV92bSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3Ry
dWN0dXJlLCBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPigqbV93b3JrZXJH
bG9iYWxTY29wZSksIHByb3h5KSk7Ci0gICAgICAgIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUt
PnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkp
OwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyKTsKLSAgICAgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0
R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0g
ICAgICAgIGF1dG8qIHdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlID0gSlNXb3JrZXJHbG9iYWxT
Y29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkp
OwotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZS0+ZGlkQmVjb21lUHJvdG90eXBl
KCk7Ci0gICAgICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3Rv
dHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSk7
Ci0KLSAgICAgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpOwotICAgICAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFs
T2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0jZW5kaWYK
LSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9i
YWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKGFz
T2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1f
dm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotCi0g
ICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93
b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNldENv
bnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKLX0KLQotdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKLSAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24sIHJl
dHVybmVkRXhjZXB0aW9uTWVzc2FnZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpLCBleGNlcHRpb24pOwotICAgIH0KLX0KLQotdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBT
dHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7
Ci0KLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCk7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgSlNMb2NrSG9sZGVy
IGxvY2sgeyB2bSB9OwotCi0gICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJmdsb2Jh
bE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpzU291cmNl
Q29kZSgpLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7Ci0KLSAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgcmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0
aW5nRXhlY3V0aW9uKCkpIHsKLSAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKLSAgICAgICAgaWYg
KG1fd29ya2VyR2xvYmFsU2NvcGUtPmNhbkluY2x1ZGVFcnJvckRldGFpbHMoc291cmNlQ29kZS5j
YWNoZWRTY3JpcHQoKSwgc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKSkpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29k
ZSB0byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgotICAgICAgICAgICAg
Ly8gRG8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYg
aXQsIHNheSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPwotICAgICAgICAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSkKLSAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJmdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIGRl
dGFpbGVkIGVycm9yIHdpdGggYSBnZW5lcmljIGVycm9yLgotICAgICAgICAgICAgU3RyaW5nIGdl
bmVyaWNFcnJvck1lc3NhZ2UgeyAiU2NyaXB0IGVycm9yLiJfcyB9OwotICAgICAgICAgICAgaWYg
KHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLSAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNl
cHRpb25NZXNzYWdlID0gZ2VuZXJpY0Vycm9yTWVzc2FnZTsKLSAgICAgICAgICAgIHJldHVybmVk
RXhjZXB0aW9uID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgY3JlYXRlRXJyb3IoJmdsb2Jh
bE9iamVjdCwgZ2VuZXJpY0Vycm9yTWVzc2FnZSkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiog
ZXhjZXB0aW9uKQotewotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKLSAgICBWTSYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICB0aHJvd0V4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
ZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4
ZWN1dGlvblRlcm1pbmF0aW9uKCkKLXsKLSAgICBpZiAobV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIC8vIFRoZSBtdXRleCBwcm92aWRl
cyBhIG1lbW9yeSBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0IG9uY2UKLSAgICAgICAgLy8gdGVybWlu
YXRpb24gaXMgc2NoZWR1bGVkLCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgd2lsbAotICAgICAg
ICAvLyBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhhdCBsZXhpY2FsR2xvYmFsT2JqZWN0IHdoZW4gY2Fs
bGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2No
ZWR1bGVkVGVybWluYXRpb25NdXRleCk7Ci0gICAgICAgIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlv
biA9IHRydWU7Ci0gICAgfQotICAgIG1fdm0tPm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOwotfQot
Ci1ib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBj
b25zdAotewotICAgIC8vIFNlZSBjb21tZW50cyBpbiBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0
aW9uIHJlZ2FyZGluZyBtdXRleCB1c2FnZS4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVk
dWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRp
b247Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkK
LXsKLSAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOwot
ICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKLX0KLQotYm9vbCBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1f
d29ya2VyR2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9leGVj
dXRpb25Gb3JiaWRkZW47Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2t7dm0oKX07Ci0KLSAgICBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Ci19Ci0K
LXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotICAgIEpT
TG9ja0hvbGRlciBsb2Nre3ZtKCl9OwotCi0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIt
PnNldFdlYkFzc2VtYmx5RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZWxlYXNlSGVhcEFjY2VzcygpCi17Ci0gICAgbV92bS0+
aGVhcC5yZWxlYXNlQWNjZXNzKCk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
YWNxdWlyZUhlYXBBY2Nlc3MoKQotewotICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOwot
fQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9u
KEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2sp
Ci17Ci0gICAgYXV0byBwcm9jZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikg
ewotICAgICAgICBpZiAoIXRpbWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aW1l
ci0+YWRkVGltZXJTZXROb3RpZmljYXRpb24oY2FsbGJhY2spOwotICAgIH07Ci0KLSAgICBwcm9j
ZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNz
VGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGlt
ZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGlt
ZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCi17Ci0gICAgYXV0byBwcm9j
ZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikgewotICAgICAgICBpZiAoIXRp
bWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aW1lci0+cmVtb3ZlVGltZXJTZXRO
b3RpZmljYXRpb24oY2FsbGJhY2spOwotICAgIH07Ci0KLSAgICBwcm9jZXNzVGltZXIobV92bS0+
aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+aGVh
cC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJy
ZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmF0
dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQotewotICAgIGluaXRTY3JpcHRJ
Zk5lZWRlZCgpOwotICAgIGRlYnVnZ2VyLT5hdHRhY2gobV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVn
Z2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQotewotICAgIGRlYnVnZ2VyLT5kZXRhY2gobV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5n
RGVidWdnaW5nU2Vzc2lvbik7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlV3JhcHBlcigpCi17Ci0gICAgcmV0dXJuIHdvcmtlckds
b2JhbFNjb3BlV3JhcHBlcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOWUyN2Q3YWI3MDlkMTUwOTcwNGEwZTk0ZDhj
MmFiZDgxMTRmZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Rl
YnVnZ2VyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotY2xhc3MgVk07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgSlNXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBX
b3JrZXJDb25zb2xlQ2xpZW50OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyU2NyaXB0Q29udHJvbGxlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIoV29ya2VyR2xvYmFsU2NvcGUqKTsKLSAgICB+V29ya2VyU2NyaXB0Q29udHJvbGxlcigp
OwotCi0gICAgSlNXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCkK
LSAgICB7Ci0gICAgICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotICAgICAgICByZXR1cm4gbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7Ci0gICAgfQotCi0gICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmluYWw7Ci0KLSAgICB2b2lkIGV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSA9IG51bGxwdHIpOwotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0
dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Ci0KLSAgICB2b2lkIHNldEV4Y2VwdGlv
bihKU0M6OkV4Y2VwdGlvbiopOwotCi0gICAgLy8gQXN5bmMgcmVxdWVzdCB0byB0ZXJtaW5hdGUg
YSBKUyBydW4gZXhlY3V0aW9uLiBFdmVudHVhbGx5IGNhdXNlcyB0ZXJtaW5hdGlvbgotICAgIC8v
IGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIEpTIGV4ZWN1dGlvbiwgaWYgdGhlIHdvcmtlciB0aHJl
YWQgaGFwcGVucyB0byBydW4gSlMuCi0gICAgLy8gQWZ0ZXIgSlMgZXhlY3V0aW9uIHdhcyB0ZXJt
aW5hdGVkIGluIHRoaXMgd2F5LCB0aGUgV29ya2VyIHRocmVhZCBoYXMgdG8gdXNlCi0gICAgLy8g
Zm9yYmlkRXhlY3V0aW9uKCkvaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSB0byBndWFyZCBhZ2FpbnN0
IHJlZW50cnkgaW50byBKUy4KLSAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4K
LSAgICB2b2lkIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKTsKLSAgICBib29sIGlzVGVy
bWluYXRpbmdFeGVjdXRpb24oKSBjb25zdCBmaW5hbDsKLQotICAgIC8vIENhbGxlZCBvbiBXb3Jr
ZXIgdGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0aCB0ZXJtaW5hdGlvbiBleGNlcHRpb24gY2F1c2Vk
IGJ5IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVlc3QsCi0gICAgLy8gb3IgYnkgV29ya2VyIHRocmVh
ZCB0ZXJtaW5hdGlvbiBjb2RlIHRvIHByZXZlbnQgZnV0dXJlIGVudHJ5IGludG8gSlMuCi0gICAg
dm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKLSAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3Q7Ci0KLSAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKLSAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7Ci0KLSAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9Ci0gICAgCi0gICAgdm9p
ZCByZWxlYXNlSGVhcEFjY2VzcygpIGZpbmFsOwotICAgIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3Mo
KSBmaW5hbDsKLQotICAgIHZvaWQgYWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxv
b3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCByZW1v
dmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNh
dGlvbkNhbGxiYWNrKSBmaW5hbDsKLQotICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1
Z2dlciopOwotICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOwotCi1wcml2
YXRlOgotICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpCi0gICAgICAgICAgICBpbml0U2NyaXB0KCk7Ci0g
ICAgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwotCi0gICAgUmVmUHRy
PEpTQzo6Vk0+IG1fdm07Ci0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2Nv
cGU7Ci0gICAgSlNDOjpTdHJvbmc8SlNXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlckNvbnNvbGVDbGllbnQ+IG1f
Y29uc29sZUNsaWVudDsKLSAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsK
LSAgICBib29sIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiB7IGZhbHNlIH07Ci0gICAgbXV0YWJs
ZSBMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCBmNzY5OWQ1NTNjNzgwYmEwYmYzMjcxNzdkMjQzNWFiZDdjYzljOGQyLi4zN2E2YmZh
OTYwYmQ2NzE0NzVkODA5Y2E5OTg4ZDEzYTZmODQzMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01OSwxMCArNTksMTAgQEAKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgog
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRo
cmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9u
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHAKaW5kZXggNzgwYzVhMTI1NjI3MDc0ZjIxNzQ2NThkYWZhM2UwZTVlNmNlNDI1Yi4uMGIzZWQ3
ZDg3MzkxODYzNTQ1OTFlOTcxZDkyMzQ2NWNkNDUxMjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBA
IHZvaWQgc2V0dXBOZXdseUNyZWF0ZWRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQogICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqZ2xvYmFsU2NvcGUu
Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAg
ICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgICAgICBhdXRvKiBjb250ZXh0V3Jh
cHBlciA9IHNjcmlwdC0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgICAgIGF1dG8q
IGNvbnRleHRXcmFwcGVyID0gc2NyaXB0LT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICAgICAg
Y29udGV4dFdyYXBwZXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
SW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoJmdsb2JhbE9iamVjdCwgY29udGV4dFdyYXBw
ZXIsIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZShpZGVudGlmaWVyKSkpOwogICAgIH0p
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaAppbmRleCA2MzExM2ExNmM0OTM5YzA0YjVmN2MwMDYwZDYwZjYyMDRjNDBm
MzhjLi5jYWFkNGNlYmE1OGJhODMzMmQ1ZTlhNjAzZGUxMjYyNjNkYWVhNzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC04OCwzICs4OCw4IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGlzPFdlYkNvcmU6Oldvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkuaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KSB7IHJl
dHVybiBjb250ZXh0LmlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
c29sZUNsaWVudC5jcHAKaW5kZXggNzIxNTgxZjFiN2M4MTYzNDQ0MzhhZTRlY2NiYTBmOTBhMTQy
MjQ1Yi4uN2I0MjkzMDBhZmZjYjA1MTg5ZDQ4MTYwNTlmNDA1ZDY2ODZjNGY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1NjcmlwdENhbGxTdGFjay5oPgpAQCAtMzUsOCArMzYsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotV29ya2VyQ29uc29sZUNsaWVudDo6V29y
a2VyQ29uc29sZUNsaWVudChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCi0g
ICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorV29ya2VyQ29uc29s
ZUNsaWVudDo6V29ya2VyQ29uc29sZUNsaWVudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
Z2xvYmFsU2NvcGUpCisgICAgOiBtX2dsb2JhbFNjb3BlKGdsb2JhbFNjb3BlKQogewogfQogCkBA
IC00NywzMiArNDgsNDIgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKICAgICBTdHJpbmcgbWVz
c2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwogICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VU
ZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUu
YWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9nbG9iYWxTY29wZS5h
ZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBXb3JrZXJDb25z
b2xlQ2xpZW50Ojpjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KG1f
d29ya2VyR2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KG1fZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNv
bGVDb3VudChkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMs
IGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChtX3dvcmtlckdsb2JhbFNjb3Bl
LCBleGVjLCBsYWJlbCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xv
YmFsU2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0K
IAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdGFydENvbnNvbGVUaW1pbmcobV93b3JrZXJHbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwor
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OnRpbWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKG1fd29ya2VyR2xvYmFsU2Nv
cGUsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4obV9nbG9iYWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bG9nQ29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OnRpbWVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xl
VGltaW5nKG1fd29ya2VyR2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0b3BDb25zb2xlVGltaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2Jh
bFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MzQ5OT4gV2ViIEluc3BlY3RvcjogY29uc29sZS5wcm9maWxlIHNob3VsZCB1c2UgdGhl
IG5ldyBTYW1wbGluZyBQcm9maWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuaAppbmRleCA5NzdiMDdkNTQxMzc4MmZmNTUwMzE3NmFmMzAxZjA2MmYzNDRl
NmRlLi4xMTRjOGRmZWU0YjU1MTllNDE0OWI1MThkNzc1NTlhYzY4MDZjMGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaApAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db25zb2xlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50
IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2VyQ29uc29sZUNsaWVudChXb3Jr
ZXJHbG9iYWxTY29wZSYpOworICAgIGV4cGxpY2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJDb25zb2xlQ2xpZW50
KCk7CiAKIHByaXZhdGU6CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNv
cmRFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogCi0gICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIG1fZ2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDdk
OTc4M2Q5MTMwZDY2YzI3NWFhZGI2MmM0NDE2OWM4NjhkZDdjNmUuLjI0MGVjOTMwNDIxOGU2N2Vk
NTc1NzZkMjI5YWE4NWE2YzQyYmMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Niw3ICs2Niw2IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1
cml0CiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1zLmlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJB
Z2VudChwYXJhbXMudXNlckFnZW50KQogICAgICwgbV90aHJlYWQodGhyZWFkKQotICAgICwgbV9z
Y3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1f
aW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+
KCp0aGlzKSkKICAgICAsIG1faXNPbmxpbmUocGFyYW1zLmlzT25saW5lKQogICAgICwgbV9zaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kocGFyYW1zLnNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSkKQEAgLTE4NywxMiArMTg2LDEyIEBAIFN0
cmluZyBXb3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAKIHZv
aWQgV29ya2VyR2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogewotICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworICAgIHNj
cmlwdCgpLT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7
Ci0gICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOworICAgIHNj
cmlwdCgpLT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdlKTsKIH0KIAogU29ja2V0UHJv
dmlkZXIqIFdvcmtlckdsb2JhbFNjb3BlOjpzb2NrZXRQcm92aWRlcigpCkBAIC0zNTcsOSArMzU2
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBz
Y3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOwotICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBVUkwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgp
KSksIGV4Y2VwdGlvbik7CisgICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdExvYWRlci0+c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJM
KCkpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAg
bV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgICAgICAgICAgc2NyaXB0KCkt
PnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQxNCw3ICs0MTMsNyBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjpp
c0NvbnRleHRUaHJlYWQoKSBjb25zdAogCiBib29sIFdvcmtlckdsb2JhbFNjb3BlOjppc0pTRXhl
Y3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHQtPmlzRXhlY3V0
aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJuIHNjcmlwdCgpLT5pc0V4ZWN1dGlvbkZvcmJpZGRl
bigpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNDEyODA3MWNjOTRmODdmMzE3MjI3NTljNGY4MmJk
MDAyNjY3MTI1NS4uZTQ4Y2ZiODVlMWJlMDVjOWZiZThiNWIxMjBiYzdmYjc5ODA0ZTcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzMsMTAgKzMz
LDEwIEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN1
cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgotI2luY2x1ZGUgIldv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
QEAgLTg2LDkgKzg2LDYgQEAgcHVibGljOgogICAgIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbiYg
c3dDbGllbnRDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCgpIGZpbmFsIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9Ci0gICAgdm9pZCBj
bGVhclNjcmlwdCgpIHsgbV9zY3JpcHQgPSBudWxscHRyOyB9Ci0KICAgICBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1faW5z
cGVjdG9yQ29udHJvbGxlcjsgfQogCiAgICAgV29ya2VyVGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX3RocmVhZDsgfQpAQCAtMTk1LDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBSZWZQdHI8V29ya2VyTmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKIAogICAgIFdvcmtlclRo
cmVhZCYgbV90aHJlYWQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI+IG1fc2NyaXB0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyPiBtX3NjcmlwdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogCiAgICAgYm9vbCBtX2Nsb3Npbmcg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWE4ZDU5ODU4YTlmMmU3MTZiNzYxNjA4
M2NlZGQwM2VlMGM5Yjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaW5jbHVkZSAi
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSgpCisgICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI+KHRoaXMpKQoreworfQorCitXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYgdm0pCisgICAgOiBtX3NjcmlwdCht
YWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+KFdURk1vdmUodm0pLCB0
aGlzKSkKK3sKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJTY3Jp
cHQoKQoreworICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oCmluZGV4IGMwNjgzYmRmYjg3YjlkN2U2YmExOTY0Zjg3YTY0YmUyM2ZkZGVjOGIu
LmU3OWViY2Y5YzVlZTI1OTk2ZWJkY2FmYWYwM2RlYzZlYzUxZmIyYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM3
LDEyICszNywxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zaW5nKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0
KCkgPSAwOwogICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmts
ZXRUaHJlYWQoKSBjb25zdCA9IDA7CiAKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyKiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQorICAgIHZvaWQg
Y2xlYXJTY3JpcHQoKTsKKwogICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWRlbnRpZmll
cigpIHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcisrOyB9CiAKK3Byb3RlY3RlZDoKKyAgICBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIGV4cGxpY2l0IFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFJlZjxKU0M6OlZNPiYmKTsKKwogcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CiAgICAgdW5z
aWduZWQgbG9uZyBtX3VuaXF1ZUlkZW50aWZpZXIgeyAxIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MDFkNWYyZjQwYjdiN2JkZThlNjMzNjYyYWQzMWZiMWNkM2YyODYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaW5j
bHVkZSAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAi
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQu
aCIKKyNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2lu
Y2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCisjaW5jbHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdv
cmtUaW1lci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0xvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihSZWY8
Vk0+JiYgdm0sIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29wZSkKKyAgICA6
IG1fdm0oV1RGTW92ZSh2bSkpCisgICAgLCBtX2dsb2JhbFNjb3BlKGdsb2JhbFNjb3BlKQorICAg
ICwgbV9nbG9iYWxTY29wZVdyYXBwZXIoKm1fdm0pCit7CisgICAgbV92bS0+aGVhcC5hY3F1aXJl
QWNjZXNzKCk7IC8vIEl0J3Mgbm90IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUg
Zm9yIGhlYXAgYWNjZXNzLCBzbyB0dXJuIGl0IG9uIHBlcm1hbmVudGx5LgorICAgIEpTVk1DbGll
bnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSk7Cit9CisKK1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDogV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcihKU0M6OlZNOjpjcmVhdGUoKSwgZ2xvYmFsU2NvcGUpCit7Cit9CisK
K1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyKCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBpZiAobV9n
bG9iYWxTY29wZVdyYXBwZXIpIHsKKyAgICAgICAgbV9nbG9iYWxTY29wZVdyYXBwZXItPmNsZWFy
RE9NR3VhcmRlZE9iamVjdHMoKTsKKyAgICAgICAgbV9nbG9iYWxTY29wZVdyYXBwZXItPnNldENv
bnNvbGVDbGllbnQobnVsbHB0cik7CisKKyAgICB9CisgICAgbV9nbG9iYWxTY29wZVdyYXBwZXIu
Y2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikK
K3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBkZWJ1Z2dlci0+YXR0YWNoKG1fZ2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKK3sKKyAg
ICBkZWJ1Z2dlci0+ZGV0YWNoKG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpLCBKU0M6OkRlYnVn
Z2VyOjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24pOworfQorCit2b2lkIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCit7CisgICAgQVNTRVJUKG1f
Z2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBtX2V4ZWN1dGlvbkZvcmJpZGRl
biA9IHRydWU7Cit9CisKK2Jvb2wgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNF
eGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlLT5p
c0NvbnRleHRUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVuOworfQor
Cit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9u
VGVybWluYXRpb24oKQoreworICAgIGlmIChtX2lzVGVybWluYXRpbmdFeGVjdXRpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIHsKKyAgICAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVt
b3J5IGJhcnJpZXIgdG8gZW5zdXJlIHRoYXQgb25jZQorICAgICAgICAvLyB0ZXJtaW5hdGlvbiBp
cyBzY2hlZHVsZWQsIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSB3aWxsCisgICAgICAgIC8vIGFj
Y3VyYXRlbHkgcmVmbGVjdCB0aGF0IGxleGljYWxHbG9iYWxPYmplY3Qgd2hlbiBjYWxsZWQgZnJv
bSBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hlZHVsZWRU
ZXJtaW5hdGlvbk11dGV4KTsKKyAgICAgICAgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uID0gdHJ1
ZTsKKyAgICB9CisgICAgbV92bS0+bm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7Cit9CisKK2Jvb2wg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigp
IGNvbnN0Cit7CisgICAgLy8gU2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9uVGVybWlu
YXRpb24gcmVnYXJkaW5nIG11dGV4IHVzYWdlLgorICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2No
ZWR1bGVkVGVybWluYXRpb25NdXRleCk7CisgICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1
dGlvbjsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpyZWxlYXNl
SGVhcEFjY2VzcygpCit7CisgICAgbV92bS0+aGVhcC5yZWxlYXNlQWNjZXNzKCk7Cit9CisKK3Zv
aWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YWNxdWlyZUhlYXBBY2Nlc3MoKQor
eworICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOworfQorCit2b2lkIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5M
b29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgYXV0
byBwcm9jZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikgeworICAgICAgICBp
ZiAoIXRpbWVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aW1lci0+YWRkVGltZXJT
ZXROb3RpZmljYXRpb24oY2FsbGJhY2spOworICAgIH07CisKKyAgICBwcm9jZXNzVGltZXIobV92
bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+
aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVm
ZXJyZWRXb3JrVGltZXIucHRyKCkpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6
OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgYXV0byBwcm9jZXNz
VGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikgeworICAgICAgICBpZiAoIXRpbWVy
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aW1lci0+cmVtb3ZlVGltZXJTZXROb3Rp
ZmljYXRpb24oY2FsbGJhY2spOworICAgIH07CisKKyAgICBwcm9jZXNzVGltZXIobV92bS0+aGVh
cC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5l
ZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRX
b3JrVGltZXIucHRyKCkpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBtX2dsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKTsKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgZXhjZXB0aW9uKTsKK30KKwordm9pZCBXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKK3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayB7IHZtKCkgfTsKKworICAgIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRFdmFsRW5hYmxl
ZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
Cit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2
bSgpIH07CisKKyAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+c2V0V2ViQXNzZW1ibHlFbmFibGVk
KGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0
cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZv
cmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOworICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKCkpOworICAgICAgICByZXBvcnRFeGNlcHRpb24obV9nbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCksIGV4Y2VwdGlvbik7CisgICAgfQorfQorCit2b2lkIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0
cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZv
cmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsK
KworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7
IHZtIH07CisKKyAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCks
IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
KworICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHZtLCByZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24o
KSkgeworICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgeworICAgICAgICBpZiAobV9nbG9iYWxTY29w
ZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBzb3Vy
Y2VDb2RlLnVybCgpLnN0cmluZygpKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90
IGdyZWF0IHRoYXQgdGhpcyBjYW4gcnVuIGFyYml0cmFyeSBjb2RlIHRvIHN0cmluZy1pZnkgdGhl
IHZhbHVlIG9mIHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICAvLyBEbyB3ZSBuZWVkIHRvIGRv
IGFueXRoaW5nIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwgc2F5LCByYWlzZXMgYW5v
dGhlciBleGNlcHRpb24/CisgICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb25NZXNzYWdl
KQorICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSByZXR1cm5lZEV4
Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0cmluZygmZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGV0YWlsZWQgZXJyb3Igd2l0aCBh
IGdlbmVyaWMgZXJyb3IuCisgICAgICAgICAgICBTdHJpbmcgZ2VuZXJpY0Vycm9yTWVzc2FnZSB7
ICJTY3JpcHQgZXJyb3IuIl9zIH07CisgICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlKQorICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBnZW5l
cmljRXJyb3JNZXNzYWdlOworICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBKU0M6OkV4
Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVFcnJvcigmZ2xvYmFsT2JqZWN0LCBnZW5lcmljRXJy
b3JNZXNzYWdlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpT
R2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1lIEds
b2JhbFNjb3BlPgordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2Ny
aXB0V2l0aFN1YmNsYXNzKCkKK3sKKyAgICBBU1NFUlQoIW1fZ2xvYmFsU2NvcGVXcmFwcGVyKTsK
KworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OworCisgICAgLy8gRXhwbGljaXRseSBw
cm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3Rl
ZAorICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBn
bG9iYWwgb2JqZWN0IGlzIGZ1bGx5CisgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0
cyBvd24gcHJvdG90eXBlLikKKyAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxw
dHIsIGpzTnVsbCgpKTsKKyAgICBhdXRvKiBjb250ZXh0UHJvdG90eXBlID0gSlNHbG9iYWxTY29w
ZVByb3RvdHlwZTo6Y3JlYXRlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0
dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNyZWF0ZVN0
cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZSk7CisgICAgYXV0byogcHJv
eHlTdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpz
TnVsbCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7CisgICAgYXV0byogcHJveHkgPSBKU1By
b3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsKKworICAgIG1fZ2xvYmFsU2NvcGVX
cmFwcGVyLnNldCgqbV92bSwgSlNHbG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUs
IHN0YXRpY19jYXN0PEdsb2JhbFNjb3BlJj4oKm1fZ2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAg
IGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV9nbG9i
YWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVj
dCgpID09IG1fZ2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQobV9nbG9iYWxTY29wZVdy
YXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgpID09IG1fZ2xvYmFsU2NvcGVX
cmFwcGVyKTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9i
YWxPYmplY3QoKm1fdm0sIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvKiBn
bG9iYWxTY29wZVByb3RvdHlwZSA9IEpTR2xvYmFsU2NvcGU6OnByb3RvdHlwZSgqbV92bSwgKm1f
Z2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBnbG9iYWxTY29wZVByb3RvdHlwZS0+ZGlk
QmVjb21lUHJvdG90eXBlKCk7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3Zt
KS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIGdsb2JhbFNjb3BlUHJvdG90
eXBlKTsKKworICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fZ2xvYmFsU2NvcGVXcmFwcGVy
LmdldCgpKTsKKyAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCpt
X3ZtLCBtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisKKyAgICBBU1NFUlQobV9nbG9iYWxT
Y29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fZ2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAg
ICBBU1NFUlQoYXNPYmplY3QobV9nbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVj
dCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX2dsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAg
ICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX2ds
b2JhbFNjb3BlKTsKKyAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudCht
X2NvbnNvbGVDbGllbnQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmluaXRTY3JpcHQoKQoreworICAgIGlmIChpczxEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZT4obV9nbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFz
czxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLCBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoaXM8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkgeworICAgICAgICBpbml0U2Ny
aXB0V2l0aFN1YmNsYXNzPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKKyAgICBpZiAoaXM8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7
CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShX
RUJfQVVESU8pCisgICAgaWYgKGlzPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPihtX2dsb2JhbFNj
b3BlKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGVQcm90b3R5cGUsIEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUsIEF1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaAppbmRleCBkMjMyMWVjNDI2YWVjNjg4MjM5MDVmNmNkNmFiNzg5MDA2NTkzNzUxLi5j
ZmU0ZTY4ODAzZDU0ZWNiZmQ5MGQ3YzM0Nzg1YzM4ZDg0MzEyMjFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI1LDIzICsyNiw5MCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5j
bHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgVk07Cit9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CitjbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudDsKK2NsYXNzIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlOworCiBjbGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworICAg
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOworICAgIHZpcnR1YWwgfldv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgcmVsZWFzZUhlYXBB
Y2Nlc3MoKTsKKyAgICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCk7CisKKyAgICB2b2lkIGFkZFRp
bWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9u
Q2FsbGJhY2spOworICAgIHZvaWQgcmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1
bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayk7CisKKyAgICBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkKKyAgICB7CisgICAgICAgIGluaXRTY3JpcHRJ
Zk5lZWRlZCgpOworICAgICAgICByZXR1cm4gbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7Cisg
ICAgfQorCisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CisgICAgdm9p
ZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CisKKyAgICAvLyBBc3luYyByZXF1ZXN0
IHRvIHRlcm1pbmF0ZSBhIEpTIHJ1biBleGVjdXRpb24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1p
bmF0aW9uCisgICAgLy8gZXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0
aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1biBKUy4KKyAgICAvLyBBZnRlciBKUyBleGVj
dXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyB3YXksIHRoZSBXb3JrZXIgdGhyZWFkIGhhcyB0
byB1c2UKKyAgICAvLyBmb3JiaWRFeGVjdXRpb24oKS9pc0V4ZWN1dGlvbkZvcmJpZGRlbigpIHRv
IGd1YXJkIGFnYWluc3QgcmVlbnRyeSBpbnRvIEpTLgorICAgIC8vIENhbiBiZSBjYWxsZWQgZnJv
bSBhbnkgdGhyZWFkLgorICAgIHZvaWQgc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwor
ICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0OworCisgICAgLy8gQ2FsbGVk
IG9uIFdvcmtlciB0aHJlYWQgd2hlbiBKUyBleGl0cyB3aXRoIHRlcm1pbmF0aW9uIGV4Y2VwdGlv
biBjYXVzZWQgYnkgZm9yYmlkRXhlY3V0aW9uKCkgcmVxdWVzdCwKKyAgICAvLyBvciBieSBXb3Jr
ZXIgdGhyZWFkIHRlcm1pbmF0aW9uIGNvZGUgdG8gcHJldmVudCBmdXR1cmUgZW50cnkgaW50byBK
Uy4KKyAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOworICAgIGJvb2wgaXNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSBjb25zdDsKKworICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KKwor
ICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKik7CisKKyAgICB2b2lkIGRpc2Fi
bGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpc2FibGVXZWJB
c3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisKKyAgICB2b2lkIGV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSA9IG51bGxwdHIpOworICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0
dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVs
ZWFzZUhlYXBBY2Nlc3MoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFjcXVpcmVIZWFwQWNjZXNz
KCkgPSAwOworcHJvdGVjdGVkOgorICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9i
YWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsU2NvcGU7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBhZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5v
dGlmaWNhdGlvbkNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbWVyU2V0
Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJh
Y2spID0gMDsKKyAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCisgICAgeworICAgICAgICBp
ZiAoIW1fZ2xvYmFsU2NvcGVXcmFwcGVyKQorICAgICAgICAgICAgaW5pdFNjcmlwdCgpOworICAg
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRTY3JpcHQoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QgPSAwOworcHJpdmF0ZToKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2Jh
bFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KKyAgICB2b2lkIGluaXRTY3JpcHRXaXRoU3Vi
Y2xhc3MoKTsKIAotICAgIHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVX
cmFwcGVyKCkgPSAwOworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKiBtX2dsb2JhbFNjb3BlOworICAgIEpTQzo6U3Ryb25nPEpTRE9NR2xv
YmFsT2JqZWN0PiBtX2dsb2JhbFNjb3BlV3JhcHBlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29y
a2VyQ29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OworICAgIG11dGFibGUgTG9jayBtX3Nj
aGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXg7CisgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwCmluZGV4IDU5NjRkNTExMTc5YjBmODVlZmRhZjEzMTI2MDFkMTM0OWI5YWY5NWUu
LjFjZWZjYmRjMDNkZmFkNzkyMGI1YTZjNjI0ZTgwODNiMzBhNWFkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAgICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9k
ZWZhdWx0KG1haW5Db250ZXh0LmdldCgpKTsKICNlbmRpZgogCi0gICAgV29ya2VyU2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0Q29udHJvbGxlcjsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyOwogICAgIHsKICAgICAgICAgLy8gTXV0ZXggcHJvdGVj
dGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2hhbmdlIG1fd29ya2Vy
R2xvYmFsU2NvcGUKICAgICAgICAgLy8gd2hpbGUgV29ya2VyVGhyZWFkOjpzdG9wKCkgaXMgYWNj
ZXNzaW5nIGl0LiBOb3RlIHRoYXQgV29ya2VyVGhyZWFkOjpzdG9wKCkgY2FuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZkZjU1MGY0NDk5MmQ5ZTYwNDMxZTdkMjNmZGZiMzlkMWQwZTkz
YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0KLVdvcmtsZXRDb25zb2xlQ2xpZW50OjpXb3JrbGV0Q29u
c29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICA6
IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxTY29wZSkKLXsKLX0KLQotV29ya2xl
dENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29uc29sZUNsaWVudCgpID0gZGVmYXVsdDsKLQotdm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQotewotICAgIFN0cmlu
ZyBtZXNzYWdlVGV4dDsKLSAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7Ci0gICAgbV93b3JrbGV0R2xvYmFs
U2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Ci19Ci0KLXZvaWQgV29y
a2xldENvbnNvbGVDbGllbnQ6OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xp
ZW50Ojp0aW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQg
V29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29s
ZUNsaWVudDo6dGltZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9
Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmls
ZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29y
a2xldENvbnNvbGVDbGllbnQ6OnRha2VIZWFwU25hcHNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1w
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29y
ZEVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci0K
LXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVj
dCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJiYjQ5YTVkYWZiOGFmM2MzY2Q5OTY3ZjZmMGJh
MWRjM2I1NTNhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29u
c29sZUNsaWVudC5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgQ2FsbEZyYW1lOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdv
cmtsZXRDb25zb2xlQ2xpZW50IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2xl
dENvbnNvbGVDbGllbnQoV29ya2xldEdsb2JhbFNjb3BlJik7Ci0gICAgdmlydHVhbCB+V29ya2xl
dENvbnNvbGVDbGllbnQoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgY291bnQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZv
aWQgY291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkg
ZmluYWw7Ci0gICAgdm9pZCBwcm9maWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lkIHByb2ZpbGVFbmQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOwotICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hv
dChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgZmluYWw7Ci0gICAg
dm9pZCB0aW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5h
bDsKLSAgICB2b2lkIHRpbWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
bGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9p
ZCB0aW1lRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5h
bDsKLSAgICB2b2lkIHRpbWVTdGFtcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIHJlY29yZEVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNjcmVlbnNob3QoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0KLSAg
ICBXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2xldEdsb2JhbFNjb3BlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKaW5kZXggN2IzYjQyMTBmNzRiNmQ2YjZhMjYzY2VlOWJlYzA0MWM3NjQyNzk4
OS4uMGRiNTE5NWJhOWZlNGRiYjZlNWVkMDJiODZlNjBjZDJmMmFmZThhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC01MCw3ICs1MCw2
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwogCiBX
b3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJl
YWQmIHRocmVhZCwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBt
X3RocmVhZCgmdGhyZWFkKQotICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcj4odGhpcykpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlVW5pcXVlKCkpCiAgICAgLCBtX3VybChwYXJhbWV0ZXJzLndpbmRvd1VSTCkKICAgICAsIG1f
anNSdW50aW1lRmxhZ3MocGFyYW1ldGVycy5qc1J1bnRpbWVGbGFncykKQEAgLTYzLDggKzYyLDgg
QEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0
VGhyZWFkJiB0aHJlYWQsIGNvbnN0IFdvcmsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjpXb3Jr
bGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwgU2Ny
aXB0U291cmNlQ29kZSYmIGNvZGUpCi0gICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3Vt
ZW50KSkKLSAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+
KFdURk1vdmUodm0pLCB0aGlzKSkKKyAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdU
Rk1vdmUodm0pKQorICAgICwgbV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiAgICAg
LCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAgICAgLCBtX3Vy
bChjb2RlLnVybCgpKQogICAgICwgbV9qc1J1bnRpbWVGbGFncyhkb2N1bWVudC5zZXR0aW5ncygp
LmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoKSkKQEAgLTgxLDcgKzgwLDcgQEAgV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpW
TT4mJiB2bSwgU2MKIAogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkK
IHsKLSAgICBBU1NFUlQoIW1fc2NyaXB0KTsKKyAgICBBU1NFUlQoIXNjcmlwdCgpKTsKICAgICBy
ZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKICAgICBhdXRvIHJlbW92ZVJlc3VsdCA9IGFsbFdvcmts
ZXRHbG9iYWxTY29wZXNTZXQoKS5yZW1vdmUodGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1v
dmVSZXN1bHQsIHJlbW92ZVJlc3VsdCk7CkBAIC04OSw3ICs4OCw3IEBAIFdvcmtsZXRHbG9iYWxT
Y29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogewotICAgIGlmICghbV9zY3JpcHQpCisgICAgaWYgKCFz
Y3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2RlZmF1bHRUYXNrR3JvdXApCiAg
ICAgICAgIG1fZGVmYXVsdFRhc2tHcm91cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwpAQCAt
OTgsOCArOTcsOCBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0
aW9uKCkKICAgICBpZiAobV9ldmVudExvb3ApCiAgICAgICAgIG1fZXZlbnRMb29wLT5jbGVhck1p
Y3JvdGFza1F1ZXVlKCk7CiAgICAgcmVtb3ZlUmVqZWN0ZWRQcm9taXNlVHJhY2tlcigpOwotICAg
IG1fc2NyaXB0LT52bSgpLm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOwotICAgIG1fc2NyaXB0ID0g
bnVsbHB0cjsKKyAgICBzY3JpcHQoKS0+dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKKyAg
ICBjbGVhclNjcmlwdCgpOwogfQogCiBhdXRvIFdvcmtsZXRHbG9iYWxTY29wZTo6YWxsV29ya2xl
dEdsb2JhbFNjb3Blc1NldCgpIC0+IFdvcmtsZXRHbG9iYWxTY29wZXNTZXQmCkBAIC0xMjksMjIg
KzEyOCwyMiBAQCBTdHJpbmcgV29ya2xldEdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQogewogICAg
IGlmIChtX2NvZGUpCi0gICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZSgqbV9jb2RlKTsKKyAgICAg
ICAgc2NyaXB0KCktPmV2YWx1YXRlKCptX2NvZGUpOwogfQogCiBib29sIFdvcmtsZXRHbG9iYWxT
Y29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3Nj
cmlwdCB8fCBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKKyAgICByZXR1cm4gIXNj
cmlwdCgpIHx8IHNjcmlwdCgpLT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOwogfQogCiB2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
CiB7Ci0gICAgbV9zY3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0
KCktPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOworICAgIHNjcmlw
dCgpLT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdlKTsKIH0KIAogVVJMIFdvcmtsZXRH
bG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCkgY29u
c3QKQEAgLTIzNCw5ICsyMzMsOSBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5Rmlu
aXNoZWQoKQogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ldmFsdWF0ZWRNb2R1bGVzLmFkZChtb2R1
bGVVUkwpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUo
U2NyaXB0U291cmNlQ29kZShtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxl
VVJMKSksIGV4Y2VwdGlvbik7CisgICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgV1RGTW92ZShtb2R1bGVVUkwpKSwgZXhj
ZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIG1fc2NyaXB0LT5z
ZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRp
b24oZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFdU
Rk1vdmUoY29tcGxldGVkSm9iKSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZjM5MTZkYzE2NjRkZmY3NWFjYjU5NDhmODQ0MGVjZTAx
ODBlZDk1ZS4uNTM1ZTM2ZWUzYmIwZTAwOGJhMzJkZmU3Nzk3NDA2MTJiMGJkY2FmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM0LDggKzM0
LDggQEAKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZl
bnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgpAQCAtODYsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAgV29ya2xldFNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdCgpIGZpbmFsIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9Ci0g
ICAgdm9pZCBjbGVhclNjcmlwdCgpIHsgbV9zY3JpcHQgPSBudWxscHRyOyB9CiAgICAgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RocmVhZC5nZXQoKTsgfQogCiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmluYWw7CkBAIC0xNzAs
OCArMTY4LDYgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50Owog
ICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+IG1fdGhyZWFkOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKLQogICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiAKICAgICBSZWZQdHI8V29ya2VyRXZlbnRMb29w
PiBtX2V2ZW50TG9vcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJjMTU0
MWMxNTgwMjNiYjZmYWE1ZTc1MzIyNmY2MWM3ZWZmOGM0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0KLSNpbmNs
dWRlICJKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCi0jaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgi
Ci0jaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNjcmlw
dFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVk
ZSAiV29ya2xldENvbnNvbGVDbGllbnQuaCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bXBsZXRpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLVdvcmtsZXRTY3JpcHRDb250cm9sbGVy
OjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihSZWY8Vk0+JiYgdm0sIFdvcmtsZXRHbG9iYWxTY29w
ZSogd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDogbV92bShXVEZNb3ZlKHZtKSkKLSAgICAsIG1f
d29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICAsIG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcigqbV92bSkKLXsKLSAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3Mo
KTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVh
cCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCi0gICAgSlNWTUNsaWVudERhdGE6
OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsKLX0KLQotV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSogd29ya2xldEds
b2JhbFNjb3BlKQotICAgIDogV29ya2xldFNjcmlwdENvbnRyb2xsZXIoVk06OmNyZWF0ZSgpLCB3
b3JrbGV0R2xvYmFsU2NvcGUpCi17Ci19Ci0KLVdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29y
a2xldFNjcmlwdENvbnRyb2xsZXIoKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwot
ICAgIGZvcmJpZEV4ZWN1dGlvbigpOwotCi0gICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcikgewotICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmNsZWFyRE9NR3Vh
cmRlZE9iamVjdHMoKTsKLSAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRD
b25zb2xlQ2xpZW50KG51bGxwdHIpOwotICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRy
OwotICAgIH0KLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKLSAgICBt
X3ZtID0gbnVsbHB0cjsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlk
RXhlY3V0aW9uKCkKLXsKLSAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4
dFRocmVhZCgpKTsKLSAgICBtX2V4ZWN1dGlvbkZvcmJpZGRlbiA9IHRydWU7Ci19Ci0KLWJvb2wg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAg
ICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAg
IGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0
U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKLQotICAg
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9y
TWVzc2FnZSk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJB
c3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVlZGVk
KCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07Ci0KLSAgICBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXItPnNldFdlYkFzc2VtYmx5RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdl
KTsKLX0KLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBl
bmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KLXZvaWQgV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQotewotICAgIEFTU0VSVCgh
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrIHsg
dm0oKSB9OwotCi0gICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3Mg
cHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAotICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUg
dGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5Ci0gICAg
Ly8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKLSAgICBTdHJ1
Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpKTsKLSAgICBhdXRvKiBj
b250ZXh0UHJvdG90eXBlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCptX3ZtLCBu
dWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwgY29u
dGV4dFByb3RvdHlwZSk7Ci0gICAgYXV0byogcHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVh
dGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5
VHlwZSk7Ci0gICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3Ry
dWN0dXJlKTsKLQotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpT
R2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxHbG9iYWxT
Y29wZSY+KCptX3dvcmtsZXRHbG9iYWxTY29wZSksIHByb3h5KSk7Ci0gICAgY29udGV4dFByb3Rv
dHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCkpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUo
Km1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKSk7Ci0gICAgYXV0byogZ2xvYmFsU2NvcGVQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3Bl
Ojpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwot
ICAgIGdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUoKTsKLSAgICBjb250
ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNp
dGlvbigqbV92bSwgZ2xvYmFsU2NvcGVQcm90b3R5cGUpOwotCi0gICAgcHJveHktPnNldFRhcmdl
dCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICBwcm94eS0+
c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIuZ2V0KCkpOwotCi0gICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAg
ICBBU1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5
cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyKTsKLQotICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNv
bGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7Ci19Ci0K
LXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQotewotICAgIGlmIChp
c0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKLSAgICBpZiAoaXM8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KG1fd29y
a2xldEdsb2JhbFNjb3BlKSkgewotICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUs
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlPigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZT4obV93b3JrbGV0R2xvYmFsU2NvcGUpKSB7Ci0gICAgICAgIGluaXRTY3JpcHRXaXRo
U3ViY2xhc3M8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZSwgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBp
ZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBl
eGNlcHRpb24sIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICAgICAgcmVwb3J0RXhjZXB0
aW9uKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCksIGV4Y2VwdGlv
bik7Ci0gICAgfQotfQotCi0vLyBJbXBvcnRhbnQ6IFRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlv
biBtdXN0IHZlcmlmeSB0aGF0IHRoZSByZXR1cm5lZCBleGNlcHRpb24gbWVzc2FnZSBkb2VzIG5v
dCB2aW9sYXRlIENPUlMgaWYgaXQgaXMgZ29pbmcgdG8gYmUgcGFzc2VkIGJhY2sgdG8gSlMuCi12
b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0
aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7Ci0KLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsK
LSAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07Ci0KLSAgICBKU0V4ZWNTdGF0ZTo6cHJvZmls
ZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNv
dXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xv
YmFsVGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7Ci0KLSAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b24gJiYgcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKSB7Ci0gICAgICAgIC8vIFRoaXMgRklYTUUg
aXMgZnJvbSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgotICAgICAgICAvLyBGSVhNRTogSXQncyBu
b3QgZ3JlYXQgdGhhdCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5nLWlmeSB0
aGUgdmFsdWUgb2YgdGhlIGV4Y2VwdGlvbi4KLSAgICAgICAgLy8gRG8gd2UgbmVlZCB0byBkbyBh
bnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYgaXQsIHNheSwgcmFpc2VzIGFub3Ro
ZXIgZXhjZXB0aW9uPwotICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gcmV0dXJu
ZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJmdsb2JhbE9iamVjdCk7Ci0gICAgfQot
fQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNl
cHRpb24qIGV4Y2VwdGlvbikKLXsKLSAgICBhdXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKLSAgICBWTSYgdm0gPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICB0aHJvd0V4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFz
ZUhlYXBBY2Nlc3MoKQotewotICAgIG1fdm0tPmhlYXAucmVsZWFzZUFjY2VzcygpOwotfQotCi12
b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjphY3F1aXJlSGVhcEFjY2VzcygpCi17Ci0gICAg
bV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVy
Tm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCi17Ci0gICAgYXV0byBwcm9jZXNzVGltZXIg
PSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikgewotICAgICAgICBpZiAoIXRpbWVyKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aW1lci0+YWRkVGltZXJTZXROb3RpZmljYXRpb24o
Y2FsbGJhY2spOwotICAgIH07Ci0KLSAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0
aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZp
dHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIu
cHRyKCkpOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNl
dE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxi
YWNrIGNhbGxiYWNrKQotewotICAgIGF1dG8gcHJvY2Vzc1RpbWVyID0gWyZdIChKU1J1bkxvb3BU
aW1lciogdGltZXIpIHsKLSAgICAgICAgaWYgKCF0aW1lcikKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGltZXItPnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKGNhbGxiYWNrKTsKLSAg
ICB9OwotCi0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2so
KSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7
Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKLX0KLQot
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlv
bigpCi17Ci0gICAgaWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgewotICAgICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmll
ciB0byBlbnN1cmUgdGhhdCBvbmNlCi0gICAgICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxl
ZCwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIHdpbGwKLSAgICAgICAgLy8gYWNjdXJhdGVseSBy
ZWZsZWN0IHRoYXQgbGV4aWNhbEdsb2JhbE9iamVjdCB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIg
dGhyZWFkLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2NoZWR1bGVkVGVybWlu
YXRpb25Mb2NrKTsKLSAgICAgICAgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uID0gdHJ1ZTsKLSAg
ICB9Ci0gICAgbV92bS0+bm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7Ci19Ci0KLWJvb2wgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAotewotICAg
IC8vIFNlZSBjb21tZW50cyBpbiBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uIHJlZ2FyZGlu
ZyBtdXRleCB1c2FnZS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2NoZWR1bGVkVGVy
bWluYXRpb25Mb2NrKTsKLSAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwotfQot
Ci1KU0M6OkpTR2xvYmFsT2JqZWN0KiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2Nv
cGVXcmFwcGVyKCkKLXsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTEzOGNhNjM4NjYxY2E4ZjRiMzE4MjIzZDdkZWQ5MTcxMWYwMDUyNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUnVuTG9vcFRpbWVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1
ZGUgPHd0Zi9OYWtlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIFZNOwotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOwotY2xhc3Mg
U2NyaXB0U291cmNlQ29kZTsKLWNsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OwotY2xhc3MgV29y
a2xldEdsb2JhbFNjb3BlOwotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7Ci0KLS8vIEZJWE1F
OiBXZSBzaG91bGQgc2hhcmUgbW9yZSBjb2RlIHdpdGggV29ya2VyU2NyaXB0Q29udHJvbGxlci4K
LWNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIDogcHVibGljIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGlj
aXQgV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKik7Ci0gICAgV29y
a2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPEpTQzo6Vk0+JiYsIFdvcmtsZXRHbG9iYWxTY29wZSop
OwotICAgIH5Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpOwotCi0gICAgSlNXb3JrbGV0R2xvYmFs
U2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKQotICAgIHsKLSAgICAgICAgaW5pdFNj
cmlwdElmTmVlZGVkKCk7Ci0gICAgICAgIHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCk7Ci0gICAgfQotCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVX
cmFwcGVyKCkgZmluYWw7Ci0KLSAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwotICAgIGJvb2wg
aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKLQotICAgIHZvaWQgZGlzYWJsZUV2YWwoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQotICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3Mo
KSBmaW5hbDsKLSAgICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgZmluYWw7Ci0KLSAgICB2b2lk
IGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZp
Y2F0aW9uQ2FsbGJhY2spIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlVGltZXJTZXROb3RpZmljYXRp
b24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykgZmluYWw7
Ci0KLSAgICB2b2lkIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKTsKLSAgICBib29sIGlz
VGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdl
ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKLQotICAgIHZvaWQgc2V0RXhjZXB0aW9u
KEpTQzo6RXhjZXB0aW9uKik7Ci0KLSAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQotICAgIHsKLSAgICAg
ICAgaWYgKCFtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpCi0gICAgICAgICAgICBpbml0U2Ny
aXB0KCk7Ci0gICAgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNH
bG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+Ci0gICAgdm9pZCBpbml0U2NyaXB0V2l0
aFN1YmNsYXNzKCk7Ci0KLSAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsK
LSAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKLSAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1fd29y
a2xldEdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNsaWVu
dD4gbV9jb25zb2xlQ2xpZW50OwotICAgIEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3Bl
PiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXI7Ci0gICAgbXV0YWJsZSBMb2NrIG1fc2NoZWR1
bGVkVGVybWluYXRpb25Mb2NrOwotICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uIHsg
ZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411925</attachid>
            <date>2020-10-20 15:14:09 -0700</date>
            <delta_ts>2020-10-20 15:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217980-20201020151408.patch</filename>
            <type>text/plain</type>
            <size>112370</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkYzdkMWZmODQ0NWFm
OGJhYmZmOTQyOGUwM2NiYzg1ZTZlNTlkMS4uZTU0OGIwMjBjZWFhOTg3YzBiM2YzNDAzOTljZDYy
NTI1ZGNkZjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMC0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIgYW5kIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIGludG8gV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgTWVyZ2UgV29ya2VyU2NyaXB0Q29udHJvbGxlciBhbmQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXIgaW50byBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyCisgICAgICAgIHRv
IHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHdvcmtlcnMgYW5kIHdvcmtsZXRzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cHJveHkgY29uc3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp3
cmFwcGVkIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldHVwTmV3bHlDcmVhdGVk
U2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29y
a2VyQ29uc29sZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
Ojpjb3VudFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpX
b3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmRpc2Fi
bGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aW1w
b3J0U2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6On5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFj
aERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YWNx
dWlyZUhlYXBBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1
YmNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRJZk5lZWRl
ZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
Q29uc29sZUNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmts
ZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5X
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xl
dEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oOiBSZW1vdmVkLgorCiAyMDIwLTEwLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2ODYxNSk6IHNvbWUgYWNjZWxlcmF0ZWQg
dHJhbnNmb3JtIHRlc3RzIGFyZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0
Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYTA2OGRjZDA0NGQwZmEzMjY3MTZlZmUwNzdi
YzhjZDNkODQyZjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVu
dmlyb25tZW50LmgiCkBAIC0xMTYsNyArMTE3LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6
OndvcmtsZXRUaHJlYWQoKQogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQo
bWFpbkNvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0Q29udHJvbGxlcjsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHRDb250cm9sbGVyOwogICAgIHsKICAgICAgICAgYXV0byBsb2NrID0gaG9sZExvY2so
bV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29wZUxvY2spOwogICAgICAgICBtX3dv
cmtsZXRHbG9iYWxTY29wZSA9IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKnRoaXMs
IG1fcGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ3NjQ0MTVhODQyYjJlNmRmNDI3MzM2
YTFhMTIzNTkzYjg4NWQxNjUuLmZmNzNlMzdhZmRmZTkwY2I1MDUwYzUyYjJkYTU2NTIxYmIyY2Vi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02MDUsNyArNjA1LDYgQEAgYmluZGluZ3MvanMvV2ViQ29y
ZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmluZGluZ3MvanMv
V2luZG93UHJveHkuY3BwCi1iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAog
YnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlkZ2Uv
Yy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTI1NTQsNiArMjU1Myw4IEBAIHdvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAogd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5jcHAKIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCit3
b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAord29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAogd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAg
LTI1OTQsMTAgKzI1OTUsOCBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmts
ZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3BwCi13b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwCiB4bWwvRE9NUGFyc2VyLmNwcAogeG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhOWMwNjA2NTFjYThhNjc2OGYxMTdhYWQxM2M0Y2VkNzA5NWJjMzZmLi45NDQwMWNkODUw
YmMwMzEzNTczZTQyMDdiZTAxMWRkN2U1YWRhZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ5LDcgKzEzNDksNiBAQAog
CQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjky
MDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0
OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxh
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5
OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNF
QkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENv
bnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRv
ckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENC
MjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQ
YWludFNpemUuaCAqLzsgfTsKIAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJv
cGVydHlNYXBSZWFkT25seS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEJBRkQwQ0UyMTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFk
T25seS5oICovOyB9OwpAQCAtMTM2Myw3ICsxMzYyLDYgQEAKIAkJNEJEQTQwMDEyMTUxQjZGNTAw
RkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0IC8q
IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZDRCAvKiBXb3Jr
bGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRF
QTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovOyB9OwogCQk0QkRFQTMyNTIxN0ZF
MkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29y
a2xldEdsb2JhbFNjb3BlLmggKi87IH07Ci0JCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggKi87IH07CiAJCTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuaCAqLzsgfTsKIAkJNEQzQjAwQUIyMTVENjlBNzAwNzZCOTgzIC8qIE1lZGlhUmVjb3Jk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0Iw
MEE5MjE1RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggKi87IH07CiAJCTREM0IwMEFG
MjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0IwMEFEMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZl
bnQuaCAqLzsgfTsKQEAgLTQ4NzcsNyArNDg3NSw2IEBACiAJCUUxOUFDM0Y1MTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0VEMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9B
bGdvcml0aG1TSEE1MTIuaCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE2NDNG
MTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0JGMEU3NkFDRjEw
MDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFBREVDQkQwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBREVD
Q0UwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNDQzBFNzZBRDhCMDA0QTFBNUUgLyog
TWVzc2FnZUNoYW5uZWwuaCAqLzsgfTsKIAkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8qIEpT
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQURFREQ4MEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggKi87IH07CkBA
IC03OTMzLDkgKzc5MzAsOSBAQAogCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
cmVVUkxSZXNwb25zZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFB
QjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhN
TE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTE5hbWVzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTE5hbWVzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0gICAgICAgIDQ0QkQyQjM2MjUyNzc5NzgwMDU1RDk1
QSAvKiBHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2ZW50
SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uUmFuZ2VEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ0QjM4QkY5MjUzNjlBODgwMEE0NDU4RCAvKiBTZWxlY3Rpb25S
YW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0
aW9uUmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRCRDJCMzYy
NTI3Nzk3ODAwNTVEOTVBIC8qIEdsb2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSAiR2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhl
bWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgyMzQsOCArODIzMSw2IEBACiAJCTRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFy
dFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCN0FFNDkyMjE3
N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3Rv
bVBhaW50SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTUyMTc3
QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3VzdG9tUGFpbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCN0Y5
QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRl
QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckRlbGV0ZUFj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDQTIxOTBFQkQ2MDBD
MEFCNjQgLyogQ1NTUGFpbnRTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhaW50U2l6ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDRDIxOTBFQkU5MDBDMEFCNjQgLyog
Q1NTUGFpbnRTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQYWludFNpemUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODI2NCw4ICs4MjU5LDYgQEAKIAkJNEJERUEzMjMyMTdFQzk2QTAwNTJE
RkNEIC8qIFdvcmtsZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3Jr
bGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2JhbFNj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEJERUEzMjcyMTgwMDNGNzAw
NTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCREVB
MzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFs
U2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTk4
LDYgKzEwNTkxLDcgQEAKIAkJODMxOThGQkIyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0Nv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUF1ZGlv
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4RkJEMjRBMTYw
QzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCYXNlQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMx
OThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzFBM0VBODI1M0Y3OEMyMDA2NzgwNEYgLyogV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjcxLDYgKzEwNjY1LDcgQEAKIAkJODM1
NjU3QzYxRUNBQjBFODAwQ0RFNzJEIC8qIEpTRE9NTWF0cml4SW5pdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU1hdHJpeEluaXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzU2Rjk3QzI0RDlGODA4MDA2QzNFNDEgLyogV2ViS2l0QXVk
aW9MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNTZGOTdFMjREOUY4MDkwMDZDM0U0MSAvKiBXZWJLaXRBdWRp
b0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNUI2ODBFMUY1NDhCREUwMDcxRjdGNiAvKiBKU0ZpbGVT
eXN0ZW1FbnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0ZpbGVTeXN0ZW1FbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzNUQyRDc0MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50K0VudHJpZXNB
UEkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MSW5wdXRFbGVtZW50K0VudHJpZXNB
UEkuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzUxRjVGMUZCODAw
MTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTcyOSw4ICsxNTcyNCw2IEBACiAJCUUxQTMxNjJCMTM0QkMz
MkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVz
c2FnZUNoYW5uZWxDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUE2
NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQTY0M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZpbGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCRDE0RTlFM0E4MDA0NDlFMTMgLyogRmls
ZVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4ODUxLDcgKzE4ODQ0LDkgQEAKIAkJCQkyRTQzNDYzRDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwICovLAogCQkJCTJFNDM0NjNFMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovLAogCQkJCTJFNDM0NjNG
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovLAorCQkJCTgzMUEzRUE4
MjUzRjc4QzIwMDY3ODA0RiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCiAJ
CQkJODNENkFBRTQyNTI0RUUxMzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmggKi8sCisJCQkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTgzOUEwOTVCMjUyNEYzNzYwMEVFRjMyOCAvKiBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJODNFODI4QjIyNTI3OTRD
RDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovLAogCQkJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovLApAQCAtMTk4NjcsOCAr
MTk4NjIsNiBAQAogCQkJCTRCREVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0LmNwcCAq
LywKIAkJCQk0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovLAogCQkJCTRC
REVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLywKLQkJCQk0QjdGOUM1NDIx
ODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICovLAotCQkJCTRCN0Y5
QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovLAogCQkJCTRC
REVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAogCQkJ
CTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKIAkJ
CQk0QkRFQTMyQTIxODAxMDcyMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLywK
QEAgLTE5ODc4LDggKzE5ODcxLDYgQEAKIAkJCQk4MzRBNkEzODI1MjY4NDQxMDA3NDdGNUQgLyog
V29ya2xldFBhcmFtZXRlcnMuaCAqLywKIAkJCQk4MzNCRDgxNTI1MjRENEUyMDA2RTcyQjMgLyog
V29ya2xldFBlbmRpbmdUYXNrcy5jcHAgKi8sCiAJCQkJODMzQkQ4MTMyNTI0RDRFMjAwNkU3MkIz
IC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCAqLywKLQkJCQk0QkRFQTMyOTIxODAwNDBDMDA1MkRG
Q0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAotCQkJCTRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSB3b3JrbGV0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjYzMSw4ICsy
NjYyMiw2IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5k
b3dQcm94eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1By
b3h5LmggKi8sCi0JCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwICovLAotCQkJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTM0ODkzLDcgKzM0ODgyLDYgQEAKIAkJCQk0MTZFMjlBNjEwMkZB
OTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUI4MUNDRjFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyUnVudGltZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENkIzNDkwRjYxMTA0NTAwQjc5
RkQxIC8qIFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVBNzY4MDQw
RkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNDkwMiwxMyArMzQ4OTAsMTEgQEAKIAkJCQlBNTRBMEM2ODFEQjgwN0Q5
MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTRCN0Y5QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmts
ZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTgyNTI0RDRGNTAwNkU3
MkIzIC8qIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0FD
RDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5n
VGFza3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlF
NjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBX
cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4Njc0
ZjJkZmI4MTZkNmVhNGNiMDM3NWZjNmNiMmE1NDkzYjNlNzZiLi4xNWUxNjQwZWNmNWZiM2NhNzll
M2M1OWNlMzFiNGE1ZjZmMmYzZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yOTQsNiArMjk0LDEzIEBAIHZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxP
YmplY3QqIGpzR2xvCiAgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNlcHRp
b24pOwogfQogCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzQ29weSA9IG1fZ3VhcmRlZE9iamVjdHM7Cisg
ICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHNDb3B5KQorICAgICAgICBndWFy
ZGVkLT5jbGVhcigpOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFt
ZSkKIHsKICAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKQEAgLTM0MSwx
MSArMzQ4LDggQEAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV3JhcHAKICAgICBpZiAoaXM8RG9jdW1lbnQ+
KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhkb3duY2FzdDxEb2N1bWVu
dD4oY29udGV4dCkuZnJhbWUoKSwgd29ybGQpOwogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0KLSAgICBp
ZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggNzM4NjdkNmFiMmU1YjRkYmI3
MGI3MGE5YTM2MDk0ODQ5ZjBjZWU2Mi4uNzA2MTM3MDQ2MDM2Y2UyZjQ4YTZkNzNhMzgxOTQwN2Ix
OGUyOTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzdWJzcGFj
ZUZvcihKU0M6OlZNJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKIHB1YmxpYzoKICAgICBMb2NrJiBn
Y0xvY2soKSB7IHJldHVybiBtX2djTG9jazsgfQogCkBAIC04MSw2ICs4MiwxMCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAorICAgIHZvaWQgY2xlYXJET01HdWFy
ZGVkT2JqZWN0cygpOworCisgICAgSlNDOjpKU1Byb3h5JiBwcm94eSgpIGNvbnN0IHsgQVNTRVJU
KG1fcHJveHkpOyByZXR1cm4gKm1fcHJveHkuZ2V0KCk7IH0KKwogcHVibGljOgogICAgIH5KU0RP
TUdsb2JhbE9iamVjdCgpOwogCkBAIC0xMDUsNiArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJl
ZjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgdWludDhfdCBtX3dvcmxkSXNOb3JtYWw7
CiAgICAgTG9jayBtX2djTG9jazsKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+
IG1fcHJveHk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCdWlsdGluR2xvYmFscyhKU0M6OlZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApp
bmRleCA1N2Q0NWMzZGU5OGJlNDdiZTEwZmE0YTY5M2U4MmY3NTQxMDc1ZjA1Li5iMDk0NmUyNWE5
YTBkZmFiZTliOTIzODBiYWIzZDc5NGFlOGFiZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTk3LDggKzk3LDggQEAgSlNET01XaW5k
b3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPERPTVdpbmRvdz4KICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHBy
b3h5LT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93
Q2xvc2VXYXRjaHBvaW50cyhXYXRjaHBvaW50U2V0OjpjcmVhdGUoKHdpbmRvdyAmJiB3aW5kb3ct
PmZyYW1lKCkpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlkYXRlZCkpCiAgICAgLCBtX3dyYXBwZWQo
V1RGTW92ZSh3aW5kb3cpKQotICAgICwgbV9wcm94eShwcm94eSkKIHsKKyAgICBtX3Byb3h5LnNl
dCh2bSwgdGhpcywgcHJveHkpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5
KiBwcm94eSkKIAogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuZG9jdW1lbnRQdWJsaWNOYW1l
KCksIGpzTnVsbCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFt
ZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyhidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LmdldCgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCiAgICAgfTsKIAogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FS
UkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CkBAIC0yNTAsOSArMjUwLDkgQEAgdm9pZCBKU0RP
TVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQogICAgIHNldEN1cnJlbnRF
dmVudCgwKTsKIH0KIAotSlNXaW5kb3dQcm94eSogSlNET01XaW5kb3dCYXNlOjpwcm94eSgpIGNv
bnN0CitKU1dpbmRvd1Byb3h5JiBKU0RPTVdpbmRvd0Jhc2U6OnByb3h5KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcm94eTsKKyAgICByZXR1cm4gKmpzQ2FzdDxKU1dpbmRvd1Byb3h5Kj4oJkpT
RE9NR2xvYmFsT2JqZWN0Ojpwcm94eSgpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBET01XaW5kb3cmIGRvbVdpbmRvdykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggMTA1MDNmZTM5Yzg5
ZGU2MzE4ZTNmNzI4N2JhYzQ1ZDc3OTUyMmNkYi4uNDU2ZmMxNDY1NTZlMTI0MmNmNTA2NmI3MTAy
ZWJhYzU5YTgxYWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmludEVycm9y
TWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIEpTV2luZG93UHJveHkqIHByb3h5
KCkgY29uc3Q7CisgICAgSlNXaW5kb3dQcm94eSYgcHJveHkoKSBjb25zdDsKIAogICAgIHN0YXRp
YyB2b2lkIGZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqKTsK
IApAQCAtMTA4LDcgKzEwOCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxET01X
aW5kb3c+IG1fd3JhcHBlZDsKLSAgICBKU1dpbmRvd1Byb3h5KiBtX3Byb3h5OwogfTsKIAogV0VC
Q09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIERPTVdp
bmRvdyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDNkMzE2Zjc5NjExYjQwNDJlYmI5MzdlNjE0NTRmZjU5
NGJmMWFhNmYuLmMzN2M3NDUxNGFlNjhiZDU5ZWRkMWFkYzAzZjY1MGNkNjhlMjI4OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKQEAgLTg3LDEzICs4Nyw2IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpCiAgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKIH0KIAotdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6Y2xl
YXJET01HdWFyZGVkT2JqZWN0cygpCi17Ci0gICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3Vh
cmRlZE9iamVjdHM7Ci0gICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCi0g
ICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7Ci19Ci0KIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpOwpAQCAtMTU3LDEyICsxNTAsMTIgQEAgSlNWYWx1ZSB0
b0pTKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCosIFdvcmtlckdsb2IKIAogSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOworICAgIGF1dG8qIHNjcmlw
dCA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOwogICAgIGlmICghc2NyaXB0KQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7Ci0gICAgSlNXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dFdyYXBw
ZXIgPSBzY3JpcHQtPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGF1dG8qIGNvbnRl
eHRXcmFwcGVyID0gc2NyaXB0LT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICBBU1NFUlQoY29u
dGV4dFdyYXBwZXIpOwotICAgIHJldHVybiBjb250ZXh0V3JhcHBlci0+cHJveHkoKTsKKyAgICBy
ZXR1cm4gJmNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQogCiBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKiB0b0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoVk0mIHZtLCBKU1ZhbHVl
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmgKaW5kZXggZDQ0OTg3MTI5NDZhZTVmNmYwMTg3ODY4NGU0Njk5N2IxZmVj
MTdhMC4uMGY0N2ZhNjkyYzZkMGJjYjAzYzY0NWY2ODQ5MmI0NjY2YzViNzUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5o
CkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKICAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0KLSAg
ICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVybiBt
X3Byb3h5LmdldCgpOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTc2LDggKzc1LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1
ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNy
b3Rhc2s+JiYpOwogCi0gICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7Ci0KIHByb3Rl
Y3RlZDoKICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1
cmUqLCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+JiYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwpAQCAtODYsNyArODMsNiBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7Ci0g
ICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OwogfTsKIAogLy8gUmV0
dXJucyBhIEpTV29ya2VyR2xvYmFsU2NvcGUgb3IganNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IDE4NzJiNDE0ZWQ5M2JkNGY2MDhlYzk4ZTdmZTdmZDRmYTI4MjYwNTEuLmMzNjVhNDgzOTRkMDE1
MjI1ZGUyNmRhYTYwZDNjMTEyNTcyNWM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMzEsOCArMzEs
OCBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9N
R3VhcmRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBA
IC03NywxMyArNzcsNiBAQCB2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwogfQogCi12b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFy
ZGVkT2JqZWN0cygpCi17Ci0gICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9iamVj
dHM7Ci0gICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCi0gICAgICAgIGd1
YXJkZWQtPmNsZWFyKCk7Ci19Ci0KIHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsK
QEAgLTEzOCwxMCArMTMxLDEwIEBAIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCosIFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQogewogICAgIGlmICghd29ya2xldEds
b2JhbFNjb3BlLnNjcmlwdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBh
dXRvKiBjb250ZXh0V3JhcHBlciA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xl
dEdsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICBpZiAoIWNv
bnRleHRXcmFwcGVyKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4g
Y29udGV4dFdyYXBwZXItPnByb3h5KCk7CisgICAgcmV0dXJuICZjb250ZXh0V3JhcHBlci0+cHJv
eHkoKTsKIH0KIAogSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUo
Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAppbmRleCA0NGUyZGY0MmI2ZDVhODE5YmZl
NjU2YzdhMDY5MWE1Y2E1Y2MzNWNhLi5iYzUzZmNhYmU0M2RhYWZmNzI1OWJmNmJmYjc5MGY3OTNh
OWFlOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFS
RV9JTkZPOwogCiAgICAgV29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1
cm4gKm1fd3JhcHBlZDsgfQotICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VS
VChtX3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNjQsOCArNjMs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlw
dEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwog
ICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAKLSAgICB2b2lkIGNsZWFyRE9NR3VhcmRl
ZE9iamVjdHMoKTsKLQogcHJvdGVjdGVkOgogICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShK
U0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsKQEAgLTc0
LDcgKzcxLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXb3JrbGV0R2xv
YmFsU2NvcGU+IG1fd3JhcHBlZDsKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+
IG1fcHJveHk7CiB9OwogCiAvLyBSZXR1cm5zIGEgSlNXb3JrbGV0R2xvYmFsU2NvcGUgb3IganNO
dWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CmluZGV4IGU4N2E2ZTU0YzdhMDIxOGQ3M2MyNDFlNjQyY2E4NDZhNmQ2NzU4OWUuLmEwYzU2Nzc0
NDVmYTVlOGNjNmM2MWU4YWI0NjJjNDkzNWU4ZjE2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fZnVuY3Rpb24pCi0gICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29u
dGV4dCh3aW5kb3csIHdpbmRvdy0+cHJveHkoKSwgZG9jdW1lbnQpOworICAgICAgICBleGVjdXRl
RnVuY3Rpb25JbkNvbnRleHQod2luZG93LCAmd2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAg
ICAgZWxzZQogICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihtX2lzb2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CkBAIC0xNDgsMTAgKzE0
OCwxMCBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCiAgICAgLy8gSW4gYSBXb3JrZXIsIHRoZSBleGVjdXRpb24gc2hv
dWxkIGFsd2F5cyBoYXBwZW4gb24gYSB3b3JrZXIgdGhyZWFkLgogICAgIEFTU0VSVCh3b3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCi0g
ICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHdvcmtlckdsb2Jh
bFNjb3BlLnNjcmlwdCgpOworICAgIGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJHbG9i
YWxTY29wZS5zY3JpcHQoKTsKIAogICAgIGlmIChtX2Z1bmN0aW9uKSB7Ci0gICAgICAgIEpTV29y
a2VyR2xvYmFsU2NvcGUqIGNvbnRleHRXcmFwcGVyID0gc2NyaXB0Q29udHJvbGxlci0+d29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gc2Ny
aXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAgICAgICAgIGV4ZWN1dGVGdW5j
dGlvbkluQ29udGV4dChjb250ZXh0V3JhcHBlciwgY29udGV4dFdyYXBwZXIsIHdvcmtlckdsb2Jh
bFNjb3BlKTsKICAgICB9IGVsc2UgewogICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIGNvZGUobV9j
b2RlLCBVUkwod29ya2VyR2xvYmFsU2NvcGUudXJsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBiODEzM2JkYTdmODM0YmJjYTQwNmIwMWQwNDAw
ZDM5ZWYxNjg2OGEwLi5iN2FmMGJkMmNjODc2YmJhMzhhZTQ5YTFmNzgxMmE0NzAwZTJmZThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC00MCw5ICs0
MCw4IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtl
clNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJh
bWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI0NmQ4YTdlZDkxYjlmMzg2OTM4MGEyNzVjMDk3MDZkYTczNDIx
YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29y
a2VyU2NyaXB0Q29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIkpTRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgotI2luY2x1ZGUgIkpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db21wbGV0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3Jr
VGltZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCi0gICAg
OiBtX3ZtKFZNOjpjcmVhdGUoKSkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xv
YmFsU2NvcGUpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkKLXsKLSAg
ICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBo
YXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFu
ZW50bHkuCi0gICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsK
LX0KLQotV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQot
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgIGlmIChtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcikgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJE
T01HdWFyZGVkT2JqZWN0cygpOwotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+
c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKLSAgICAgICAgbV9jb25zb2xlQ2xpZW50ID0gbnVs
bHB0cjsKLSAgICB9Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKLSAg
ICBtX3ZtID0gbnVsbHB0cjsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0KCkKLXsKLSAgICBBU1NFUlQoIW1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLQot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fdm0uZ2V0KCkpOwotCi0gICAgLy8gRXhwbGljaXRseSBw
cm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3Rl
ZAotICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBn
bG9iYWwgb2JqZWN0IGlzIGZ1bGx5Ci0gICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0
cyBvd24gcHJvdG90eXBlLikKLSAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+aXNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwotICAgICAg
ICBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBkZWRpY2F0ZWRDb250ZXh0
UHJvdG90eXBlID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRl
KCptX3ZtLCBudWxscHRyLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKLSAg
ICAgICAgSlNDOjpFbnN1cmVTdGlsbEFsaXZlU2NvcGUgcHJvdGVjdGVkRGVkaWNhdGVkQ29udGV4
dFByb3RvdHlwZShkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKTsKLSAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1
cmUoKm1fdm0sIG51bGxwdHIsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUpOwotICAgICAgICBh
dXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVs
bHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKLSAgICAgICAgYXV0byog
cHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsKLQotICAgICAg
ICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSY+KCptX3dvcmtlckdsb2JhbFNjb3BlKSwgcHJveHkpKTsKLSAg
ICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUo
Km1fdm0pLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0g
ICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEds
b2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAg
ICAgICBhdXRvKiB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSA9IEpTV29ya2VyR2xvYmFsU2Nv
cGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsK
LSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgp
OwotICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5z
ZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgd29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGUpOwotCi0gICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNl
dEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB9IGVsc2UgaWYgKG1fd29ya2VyR2xvYmFs
U2NvcGUtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgU3RydWN0dXJl
KiBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwotICAg
ICAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogY29udGV4dFByb3RvdHlw
ZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGUoKm1fdm0sIG51
bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICBKU0M6OkVuc3VyZVN0
aWxsQWxpdmVTY29wZSBwcm90ZWN0ZWRDb250ZXh0UHJvdG90eXBlKGNvbnRleHRQcm90b3R5cGUp
OwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGUpOwot
ICAgICAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgq
bV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKLSAgICAg
ICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsK
LSAgICAKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3ZtLCBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSY+KCptX3dvcmtlckdsb2JhbFNjb3BlKSwgcHJv
eHkpKTsKLSAgICAgICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUo
KS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAg
ICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1f
dm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgYXV0byogd29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUgPSBKU1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUo
Km1fdm0sICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUoKTsKLSAgICAgICAgY29u
dGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5z
aXRpb24oKm1fdm0sIHdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKTsKLQotICAgICAgICBwcm94
eS0+c2V0VGFyZ2V0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0g
ICAgICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0KLSAgICBtX2NvbnNvbGVDbGll
bnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3Bl
KTsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2Nv
bnNvbGVDbGllbnQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0cmluZyogcmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwotICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKCkpOwotICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCksIGV4Y2VwdGlvbik7Ci0gICAgfQotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRF
eGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLQotICAgIGF1dG8mIGds
b2JhbE9iamVjdCA9ICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKLSAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07Ci0K
LSAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlBy
b2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKLQot
ICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKHZtLCByZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkg
ewotICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewotICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxT
Y29wZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBz
b3VyY2VDb2RlLnVybCgpLnN0cmluZygpKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEl0J3Mg
bm90IGdyZWF0IHRoYXQgdGhpcyBjYW4gcnVuIGFyYml0cmFyeSBjb2RlIHRvIHN0cmluZy1pZnkg
dGhlIHZhbHVlIG9mIHRoZSBleGNlcHRpb24uCi0gICAgICAgICAgICAvLyBEbyB3ZSBuZWVkIHRv
IGRvIGFueXRoaW5nIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwgc2F5LCByYWlzZXMg
YW5vdGhlciBleGNlcHRpb24/Ci0gICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlKQotICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSByZXR1cm5l
ZEV4Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0cmluZygmZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGV0YWlsZWQgZXJyb3Igd2l0
aCBhIGdlbmVyaWMgZXJyb3IuCi0gICAgICAgICAgICBTdHJpbmcgZ2VuZXJpY0Vycm9yTWVzc2Fn
ZSB7ICJTY3JpcHQgZXJyb3IuIl9zIH07Ci0gICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b25NZXNzYWdlKQotICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBn
ZW5lcmljRXJyb3JNZXNzYWdlOwotICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBKU0M6
OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVFcnJvcigmZ2xvYmFsT2JqZWN0LCBnZW5lcmlj
RXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCi17Ci0g
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpOwotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHRo
cm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBleGNlcHRpb24pOwotfQot
Ci12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRp
b24oKQotewotICAgIGlmIChtX2lzVGVybWluYXRpbmdFeGVjdXRpb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHsKLSAgICAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJhcnJp
ZXIgdG8gZW5zdXJlIHRoYXQgb25jZQotICAgICAgICAvLyB0ZXJtaW5hdGlvbiBpcyBzY2hlZHVs
ZWQsIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSB3aWxsCi0gICAgICAgIC8vIGFjY3VyYXRlbHkg
cmVmbGVjdCB0aGF0IGxleGljYWxHbG9iYWxPYmplY3Qgd2hlbiBjYWxsZWQgZnJvbSBhbm90aGVy
IHRocmVhZC4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlv
bk11dGV4KTsKLSAgICAgICAgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uID0gdHJ1ZTsKLSAgICB9
Ci0gICAgbV92bS0+bm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7Ci19Ci0KLWJvb2wgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0Ci17Ci0gICAgLy8g
U2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24gcmVnYXJkaW5nIG11
dGV4IHVzYWdlLgotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2NoZWR1bGVkVGVybWluYXRpb25N
dXRleCk7Ci0gICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsKLX0KLQotdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQotewotICAgIEFTU0VSVCht
X3dvcmtlckdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgbV9leGVjdXRpb25G
b3JiaWRkZW4gPSB0cnVlOwotfQotCi1ib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzRXhl
Y3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29w
ZS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsK
LX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBKU0xv
Y2tIb2xkZXIgbG9ja3t2bSgpfTsKLQotICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5z
ZXRFdmFsRW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCi17Ci0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2t7
dm0oKX07Ci0KLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0V2ViQXNzZW1ibHlF
bmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OnJlbGVhc2VIZWFwQWNjZXNzKCkKLXsKLSAgICBtX3ZtLT5oZWFwLnJlbGVhc2VBY2Nl
c3MoKTsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphY3F1aXJlSGVhcEFjY2Vz
cygpCi17Ci0gICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7Ci19Ci0KLXZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BU
aW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKLXsKLSAgICBhdXRvIHBy
b2Nlc3NUaW1lciA9IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7Ci0gICAgICAgIGlmICgh
dGltZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRpbWVyLT5hZGRUaW1lclNldE5v
dGlmaWNhdGlvbihjYWxsYmFjayk7Ci0gICAgfTsKLQotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5o
ZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFw
LmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJl
ZFdvcmtUaW1lci5wdHIoKSk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVt
b3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmlj
YXRpb25DYWxsYmFjayBjYWxsYmFjaykKLXsKLSAgICBhdXRvIHByb2Nlc3NUaW1lciA9IFsmXSAo
SlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7Ci0gICAgICAgIGlmICghdGltZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHRpbWVyLT5yZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihjYWxs
YmFjayk7Ci0gICAgfTsKLQotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0
eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNh
bGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIo
KSk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIpCi17Ci0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAg
ZGVidWdnZXItPmF0dGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci19Ci0K
LXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dl
ciogZGVidWdnZXIpCi17Ci0gICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9u
KTsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xv
YmFsU2NvcGVXcmFwcGVyKCkKLXsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmI5ZTI3ZDdhYjcwOWQxNTA5NzA0YTBlOTRkOGMyYWJkODExNGZkNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1dvcmtlckdsb2Jh
bFNjb3BlOwotY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLWNsYXNzIFdvcmtlckNvbnNvbGVDbGll
bnQ7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKLQotY2xhc3MgV29ya2VyU2NyaXB0Q29udHJv
bGxlciA6IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJHbG9i
YWxTY29wZSopOwotICAgIH5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKCk7Ci0KLSAgICBKU1dvcmtl
ckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKQotICAgIHsKLSAgICAgICAg
aW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgICAgIHJldHVybiBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKTsKLSAgICB9Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxT
Y29wZVdyYXBwZXIoKSBmaW5hbDsKLQotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Ci0g
ICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UgPSBudWxscHRyKTsKLQotICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9u
Kik7Ci0KLSAgICAvLyBBc3luYyByZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIEpTIHJ1biBleGVjdXRp
b24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1pbmF0aW9uCi0gICAgLy8gZXhjZXB0aW9uIHJhaXNl
ZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1
biBKUy4KLSAgICAvLyBBZnRlciBKUyBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyB3
YXksIHRoZSBXb3JrZXIgdGhyZWFkIGhhcyB0byB1c2UKLSAgICAvLyBmb3JiaWRFeGVjdXRpb24o
KS9pc0V4ZWN1dGlvbkZvcmJpZGRlbigpIHRvIGd1YXJkIGFnYWluc3QgcmVlbnRyeSBpbnRvIEpT
LgotICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIHZvaWQgc2NoZWR1
bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwotICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlv
bigpIGNvbnN0IGZpbmFsOwotCi0gICAgLy8gQ2FsbGVkIG9uIFdvcmtlciB0aHJlYWQgd2hlbiBK
UyBleGl0cyB3aXRoIHRlcm1pbmF0aW9uIGV4Y2VwdGlvbiBjYXVzZWQgYnkgZm9yYmlkRXhlY3V0
aW9uKCkgcmVxdWVzdCwKLSAgICAvLyBvciBieSBXb3JrZXIgdGhyZWFkIHRlcm1pbmF0aW9uIGNv
ZGUgdG8gcHJldmVudCBmdXR1cmUgZW50cnkgaW50byBKUy4KLSAgICB2b2lkIGZvcmJpZEV4ZWN1
dGlvbigpOwotICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKLQotICAgIHZv
aWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgZGlz
YWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQotICAgIEpTQzo6
Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KLSAgICAKLSAgICB2b2lkIHJlbGVhc2VIZWFwQWNj
ZXNzKCkgZmluYWw7Ci0gICAgdm9pZCBhY3F1aXJlSGVhcEFjY2VzcygpIGZpbmFsOwotCi0gICAg
dm9pZCBhZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5v
dGlmaWNhdGlvbkNhbGxiYWNrKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZp
Y2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZp
bmFsOwotCi0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7Ci0gICAgdm9p
ZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBp
bml0U2NyaXB0SWZOZWVkZWQoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcikKLSAgICAgICAgICAgIGluaXRTY3JpcHQoKTsKLSAgICB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7Ci0KLSAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsK
LSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKLSAgICBKU0M6OlN0
cm9uZzxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyQ29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50Owot
ICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1Rl
cm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsKLSAgICBtdXRhYmxlIExvY2sgbV9zY2hlZHVs
ZWRUZXJtaW5hdGlvbk11dGV4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGY3Njk5ZDU1
M2M3ODBiYTBiZjMyNzE3N2QyNDM1YWJkN2NjOWM4ZDIuLjM3YTZiZmE5NjBiZDY3MTQ3NWQ4MDlj
YTk5ODhkMTNhNmY4NDMwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTU5LDEwICs1OSwxMCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5j
bHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGlt
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCA3ODBjNWEx
MjU2MjcwNzRmMjE3NDY1OGRhZmEzZTBlNWU2Y2U0MjViLi4wYjNlZDdkODczOTE4NjM1NDU5MWU5
NzFkOTIzNDY1Y2Q0NTEyMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBzZXR1cE5ld2x5
Q3JlYXRlZFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAg
ICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpnbG9iYWxTY29wZS5nbG9iYWxPYmplY3QoKTsK
ICAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKICAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7Ci0gICAgICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gc2NyaXB0LT53
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICAgICAgYXV0byogY29udGV4dFdyYXBwZXIg
PSBzY3JpcHQtPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAgICAgICBjb250ZXh0V3JhcHBlci0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBJbnRlcm5hbHM6OmludGVy
bmFsc0lkKSwgdG9KUygmZ2xvYmFsT2JqZWN0LCBjb250ZXh0V3JhcHBlciwgU2VydmljZVdvcmtl
ckludGVybmFsczo6Y3JlYXRlKGlkZW50aWZpZXIpKSk7CiAgICAgfSk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmlu
ZGV4IDYzMTEzYTE2YzQ5MzljMDRiNWY3YzAwNjBkNjBmNjIwNGM0MGYzOGMuLmNhYWQ0Y2ViYTU4
YmE4MzMyZDVlOWE2MDNkZTEyNjI2M2RhZWE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTg4LDMgKzg4LDggQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
ICYmIGRvd25jYXN0PFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pc0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApp
bmRleCA3MjE1ODFmMWI3YzgxNjM0NDQzOGFlNGVjY2JhMGY5MGExNDIyNDViLi43YjQyOTMwMGFm
ZmNiMDUxODlkNDgxNjA1OWY0MDVkNjY4NmM0ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJXb3JrZXJDb25zb2xlQ2xpZW50LmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNr
Lmg+CkBAIC0zNSw4ICszNiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJDb25zb2xlQ2xpZW50
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKLSAgICA6IG1fd29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJD
b25zb2xlQ2xpZW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKKyAg
ICA6IG1fZ2xvYmFsU2NvcGUoZ2xvYmFsU2NvcGUpCiB7CiB9CiAKQEAgLTQ3LDMyICs0OCw0MiBA
QCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAgICAgYXV0
byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJn
dW1lbnRzKSwgZXhlYyk7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2Fn
ZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBtX2dsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSkpOwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQobV93b3JrZXJHbG9iYWxTY29w
ZSwgZXhlYywgbGFiZWwpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEds
b2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkp
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiB2
b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVDb3VudFJlc2V0KG1fd29ya2VyR2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsK
KyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRp
bWluZyhtX3dvcmtlckdsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CisgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdGFydENvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFs
U2NvcGUpLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGlt
ZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcobV93b3JrZXJHbG9iYWxTY29wZSwgZXhlYywgbGFiZWws
IFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3Jr
bGV0R2xvYmFsU2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNj
b3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5n
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWws
IFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGlt
ZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcobV93b3JrZXJH
bG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
V29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVU
aW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBs
YWJlbCk7CiB9CiAKIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUzNDk5PiBXZWIg
SW5zcGVjdG9yOiBjb25zb2xlLnByb2ZpbGUgc2hvdWxkIHVzZSB0aGUgbmV3IFNhbXBsaW5nIFBy
b2ZpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCmlu
ZGV4IDk3N2IwN2Q1NDEzNzgyZmY1NTAzMTc2YWYzMDFmMDYyZjM0NGU2ZGUuLjExNGM4ZGZlZTRi
NTUxOWU0MTQ5YjUxOGQ3NzU1OWFjNjgwNmMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29uc29sZUNsaWVudC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVDbGll
bnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlckNvbnNvbGVDbGllbnQgZmluYWwgOiBwdWJsaWMg
SlNDOjpDb25zb2xlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlckdsb2JhbFNjb3BlJik7
CisgICAgZXhwbGljaXQgV29ya2VyQ29uc29sZUNsaWVudChXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYpOwogICAgIHZpcnR1YWwgfldvcmtlckNvbnNvbGVDbGllbnQoKTsKIAogcHJpdmF0ZToK
QEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZEVuZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6
OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV9n
bG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggN2Q5NzgzZDkxMzBkNjZjMjc1
YWFkYjYyYzQ0MTY5Yzg2OGRkN2M2ZS4uMjQwZWM5MzA0MjE4ZTY3ZWQ1NzU3NmQyMjlhYTg1YTZj
NDJiYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKQEAgLTY2LDcgKzY2LDYgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXQKICAgICAsIG1faWRl
bnRpZmllcihwYXJhbXMuaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHBhcmFtcy51c2Vy
QWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChtYWtlVW5pcXVl
PFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwg
bV9pc09ubGluZShwYXJhbXMuaXNPbmxpbmUpCiAgICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeShwYXJhbXMuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5KQpAQCAtMTg3LDEyICsxODYsMTIgQEAgU3RyaW5nIFdvcmtlckdsb2Jh
bFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKIAogdm9pZCBXb3JrZXJHbG9iYWxT
Y29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9z
Y3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0KCktPmRpc2FibGVF
dmFsKGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmRpc2FibGVX
ZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX3NjcmlwdC0+
ZGlzYWJsZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0KCktPmRpc2FibGVX
ZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOwogfQogCiBTb2NrZXRQcm92aWRlciogV29ya2VyR2xv
YmFsU2NvcGU6OnNvY2tldFByb3ZpZGVyKCkKQEAgLTM1Nyw5ICszNTYsOSBAQCBFeGNlcHRpb25P
cjx2b2lkPiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdXJscykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBv
cnRlZCgqdGhpcywgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2Ny
aXB0KCkpOwogCiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0g
ICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+
c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpKSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0TG9hZGVy
LT5zY3JpcHQoKSwgVVJMKHNjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSkpLCBleGNlcHRpb24p
OwogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhj
ZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgICAgICBzY3JpcHQoKS0+c2V0RXhjZXB0aW9uKGV4
Y2VwdGlvbik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQpAQCAt
NDE0LDcgKzQxMyw3IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCgp
IGNvbnN0CiAKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4o
KSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsK
KyAgICByZXR1cm4gc2NyaXB0KCktPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CiB9CiAKICNpZiBF
TkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAppbmRleCA0MTI4MDcxY2M5NGY4N2YzMTcyMjc1OWM0ZjgyYmQwMDI2NjcxMjU1Li5lNDhj
ZmI4NWUxYmUwNWM5ZmJlOGI1YjEyMGJjN2ZiNzk4MDRlNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtODYsOSArODYsNiBA
QCBwdWJsaWM6CiAgICAgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uJiBzd0NsaWVudENvbm5lY3Rp
b24oKTsKICNlbmRpZgogCi0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgZmlu
YWwgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KLSAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBt
X3NjcmlwdCA9IG51bGxwdHI7IH0KLQogICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXImIGlu
c3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVy
OyB9CiAKICAgICBXb3JrZXJUaHJlYWQmIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFk
OyB9CkBAIC0xOTUsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxXb3Jr
ZXJOYXZpZ2F0b3I+IG1fbmF2aWdhdG9yOwogCiAgICAgV29ya2VyVGhyZWFkJiBtX3RocmVhZDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2Ny
aXB0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX2lu
c3BlY3RvckNvbnRyb2xsZXI7CiAKICAgICBib29sIG1fY2xvc2luZyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ1YThkNTk4NThhOWYyZTcxNmI3NjE2MDgzY2VkZDAzZWUwYzliNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCkKKyAgICA6IG1fc2Ny
aXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCit7
Cit9CisKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShSZWY8SlNDOjpWTT4mJiB2bSkKKyAgICA6IG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRoaXMpKQoreworfQorCit2
b2lkIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpjbGVhclNjcmlwdCgpCit7CisgICAgbV9z
Y3JpcHQgPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
YzA2ODNiZGZiODdiOWQ3ZTZiYTE5NjRmODdhNjRiZTIzZmRkZWM4Yi4uZTc5ZWJjZjljNWVlMjU5
OTZlYmRjYWZhZjAzZGVjNmVjNTFmYjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzcsMTIgKzM3LDE5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpID0gZGVmYXVs
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSA9IDA7CiAgICAgdmly
dHVhbCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGNvbnN0
ID0gMDsKIAorICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisgICAgdm9pZCBjbGVhclNjcmlwdCgpOwor
CiAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91
bmlxdWVJZGVudGlmaWVyKys7IH0KIAorcHJvdGVjdGVkOgorICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKCk7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVm
PEpTQzo6Vk0+JiYpOworCiBwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKICAgICB1bnNpZ25lZCBsb25nIG1fdW5p
cXVlSWRlbnRpZmllciB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQwMWQ1ZjJmNDBiN2I3YmRlOGU2MzM2NjJhZDMxZmIxY2QzZjI4NjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0wLDAgKzEsMjk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpT
RXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2lu
Y2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlICJX
b3JrZXJDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlv
bi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZp
dHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFJlZjxWTT4mJiB2bSwgV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDogbV92bShXVEZNb3ZlKHZt
KSkKKyAgICAsIG1fZ2xvYmFsU2NvcGUoZ2xvYmFsU2NvcGUpCisgICAgLCBtX2dsb2JhbFNjb3Bl
V3JhcHBlcigqbV92bSkKK3sKKyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQn
cyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3Ms
IHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpKTsKK30KKworV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSogZ2xvYmFsU2NvcGUpCisgICAgOiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
KEpTQzo6Vk06OmNyZWF0ZSgpLCBnbG9iYWxTY29wZSkKK3sKK30KKworV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6fldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoKQorewor
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgIGlmIChtX2dsb2JhbFNjb3BlV3JhcHBl
cikgeworICAgICAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0
cygpOworICAgICAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChudWxs
cHRyKTsKKworICAgIH0KKyAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1f
dm0gPSBudWxscHRyOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQoreworICAgIGluaXRTY3Jp
cHRJZk5lZWRlZCgpOworICAgIGRlYnVnZ2VyLT5hdHRhY2gobV9nbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCkpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFj
aERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQoreworICAgIGRlYnVnZ2VyLT5kZXRh
Y2gobV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5n
RGVidWdnaW5nU2Vzc2lvbik7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9nbG9iYWxTY29wZS0+aXND
b250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKK30KKwor
Ym9vbCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRl
bigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZ2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgp
KTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Cit9CisKK3ZvaWQgV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCit7
CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgeworICAgICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmllciB0byBl
bnN1cmUgdGhhdCBvbmNlCisgICAgICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNU
ZXJtaW5hdGluZ0V4ZWN1dGlvbigpIHdpbGwKKyAgICAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0
IHRoYXQgbGV4aWNhbEdsb2JhbE9iamVjdCB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFk
LgorICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgp
OworICAgICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOworICAgIH0KKyAgICBt
X3ZtLT5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKK30KKworYm9vbCBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QKK3sKKyAgICAv
LyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbiByZWdhcmRpbmcg
bXV0ZXggdXNhZ2UuCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlv
bk11dGV4KTsKKyAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOworfQorCit2b2lk
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnJlbGVhc2VIZWFwQWNjZXNzKCkKK3sK
KyAgICBtX3ZtLT5oZWFwLnJlbGVhc2VBY2Nlc3MoKTsKK30KKwordm9pZCBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjphY3F1aXJlSGVhcEFjY2VzcygpCit7CisgICAgbV92bS0+aGVh
cC5hY3F1aXJlQWNjZXNzKCk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJO
b3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHByb2Nlc3NUaW1lciA9
IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7CisgICAgICAgIGlmICghdGltZXIpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHRpbWVyLT5hZGRUaW1lclNldE5vdGlmaWNhdGlvbihj
YWxsYmFjayk7CisgICAgfTsKKworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rp
dml0eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5w
dHIoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3Zl
VGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRp
b25DYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHByb2Nlc3NUaW1lciA9IFsmXSAoSlNS
dW5Mb29wVGltZXIqIHRpbWVyKSB7CisgICAgICAgIGlmICghdGltZXIpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHRpbWVyLT5yZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihjYWxsYmFj
ayk7CisgICAgfTsKKworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNh
bGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxi
YWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7
Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9u
KEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCA9IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOworICAgIFZN
JiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCBleGNlcHRpb24pOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAg
IGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9Owor
CisgICAgbV9nbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJvck1l
c3NhZ2UpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2Fi
bGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKworICAgIG1f
Z2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2UsIGVycm9yTWVz
c2FnZSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3RyaW5nKiByZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Cisg
ICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0o
KSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwg
ZXhjZXB0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworCisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKKworICAgIEpT
RXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5n
UmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV9nbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworCisgICAgaWYgKChyZXR1
cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHJldHVy
bmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CisgICAgICAgIGZv
cmJpZEV4ZWN1dGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChtX2dsb2JhbFNjb3BlLT5jYW5JbmNsdWRlRXJy
b3JEZXRhaWxzKHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksIHNvdXJjZUNvZGUudXJsKCkuc3Ry
aW5nKCkpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXQncyBub3QgZ3JlYXQgdGhhdCB0aGlz
IGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5nLWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4
Y2VwdGlvbi4KKyAgICAgICAgICAgIC8vIERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgdG8gaGFu
ZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbj8K
KyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAgICAgICAg
ICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhjZXB0aW9uLT52YWx1ZSgp
LnRvV1RGU3RyaW5nKCZnbG9iYWxPYmplY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gT3ZlcndyaXRlIHRoZSBkZXRhaWxlZCBlcnJvciB3aXRoIGEgZ2VuZXJpYyBlcnJvci4K
KyAgICAgICAgICAgIFN0cmluZyBnZW5lcmljRXJyb3JNZXNzYWdlIHsgIlNjcmlwdCBlcnJvci4i
X3MgfTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAg
ICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IGdlbmVyaWNFcnJvck1lc3NhZ2U7
CisgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUo
dm0sIGNyZWF0ZUVycm9yKCZnbG9iYWxPYmplY3QsIGdlbmVyaWNFcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3Rv
dHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+Cit2b2lk
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3Mo
KQoreworICAgIEFTU0VSVCghbV9nbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgSlNMb2NrSG9s
ZGVyIGxvY2sgeyB2bSgpIH07CisKKyAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2Jh
bCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCisgICAgLy8gd2hlbiB3
ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMg
ZnVsbHkKKyAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUu
KQorICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTR2xvYmFsU2Nv
cGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwor
ICAgIGF1dG8qIGNvbnRleHRQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVh
dGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSlNHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBu
dWxscHRyLCBjb250ZXh0UHJvdG90eXBlKTsKKyAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpT
UHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3
YXJkaW5nUHJveHlUeXBlKTsKKyAgICBhdXRvKiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92
bSwgcHJveHlTdHJ1Y3R1cmUpOworCisgICAgbV9nbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3Zt
LCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8R2xv
YmFsU2NvcGUmPigqbV9nbG9iYWxTY29wZSksIHByb3h5KSk7CisgICAgY29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX2dsb2JhbFNjb3BlV3JhcHBlci5n
ZXQoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxT
Y29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJl
KCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxTY29wZVdyYXBwZXIpOworICAgIGNv
bnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwg
bV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIGF1dG8qIGdsb2JhbFNjb3BlUHJvdG90
eXBlID0gSlNHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV9nbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCkpOworICAgIGdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUo
KTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbigqbV92bSwgZ2xvYmFsU2NvcGVQcm90b3R5cGUpOworCisgICAgcHJv
eHktPnNldFRhcmdldCgqbV92bSwgbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIHBy
b3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fZ2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2xv
YmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChhc09iamVj
dChtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2Jh
bE9iamVjdCgpID09IG1fZ2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIG1fY29uc29sZUNsaWVu
dCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fZ2xvYmFsU2NvcGUpOworICAg
IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5n
ZXQoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCgpCit7CisgICAgaWYgKGlzPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2Jh
bFNjb3BlKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIERl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxQ
YWludFdvcmtsZXRHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaW5pdFNj
cmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBp
ZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7CisgICAgICAg
IGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlw
ZSwgSlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSwgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGQy
MzIxZWM0MjZhZWM2ODgyMzkwNWY2Y2Q2YWI3ODkwMDY1OTM3NTEuLmNmZTRlNjg4MDNkNTRlY2Jm
ZDkwZDdjMzQ3ODVjMzhkODQzMTIyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xLDUgKzEsNiBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjMgKzI2LDkwIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmFrZWRQ
dHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK30KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
CitjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50OworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CisKIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZpcnR1YWwgfldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisgICAgV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcihSZWY8SlNDOjpWTT4mJiwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUqKTsKKyAgICBleHBsaWNpdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcigpOworCisgICAgdm9pZCByZWxlYXNlSGVhcEFjY2VzcygpOworICAgIHZv
aWQgYWNxdWlyZUhlYXBBY2Nlc3MoKTsKKworICAgIHZvaWQgYWRkVGltZXJTZXROb3RpZmljYXRp
b24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayk7CisgICAg
dm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1l
ck5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxT
Y29wZVdyYXBwZXIoKQorICAgIHsKKyAgICAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAg
ICAgIHJldHVybiBtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lk
IGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2Vy
KEpTQzo6RGVidWdnZXIqKTsKKworICAgIC8vIEFzeW5jIHJlcXVlc3QgdG8gdGVybWluYXRlIGEg
SlMgcnVuIGV4ZWN1dGlvbi4gRXZlbnR1YWxseSBjYXVzZXMgdGVybWluYXRpb24KKyAgICAvLyBl
eGNlcHRpb24gcmFpc2VkIGR1cmluZyBKUyBleGVjdXRpb24sIGlmIHRoZSB3b3JrZXIgdGhyZWFk
IGhhcHBlbnMgdG8gcnVuIEpTLgorICAgIC8vIEFmdGVyIEpTIGV4ZWN1dGlvbiB3YXMgdGVybWlu
YXRlZCBpbiB0aGlzIHdheSwgdGhlIFdvcmtlciB0aHJlYWQgaGFzIHRvIHVzZQorICAgIC8vIGZv
cmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0aW9uRm9yYmlkZGVuKCkgdG8gZ3VhcmQgYWdhaW5zdCBy
ZWVudHJ5IGludG8gSlMuCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
ICAgdm9pZCBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7CisgICAgYm9vbCBpc1Rlcm1p
bmF0aW5nRXhlY3V0aW9uKCkgY29uc3Q7CisKKyAgICAvLyBDYWxsZWQgb24gV29ya2VyIHRocmVh
ZCB3aGVuIEpTIGV4aXRzIHdpdGggdGVybWluYXRpb24gZXhjZXB0aW9uIGNhdXNlZCBieSBmb3Ji
aWRFeGVjdXRpb24oKSByZXF1ZXN0LAorICAgIC8vIG9yIGJ5IFdvcmtlciB0aHJlYWQgdGVybWlu
YXRpb24gY29kZSB0byBwcmV2ZW50IGZ1dHVyZSBlbnRyeSBpbnRvIEpTLgorICAgIHZvaWQgZm9y
YmlkRXhlY3V0aW9uKCk7CisgICAgYm9vbCBpc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Owor
CisgICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorCisgICAgdm9pZCBzZXRFeGNl
cHRpb24oSlNDOjpFeGNlcHRpb24qKTsKKworICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Cisg
ICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UgPSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSGVhcEFjY2Vzcygp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3MoKSA9IDA7Citwcm90ZWN0
ZWQ6CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxTY29wZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZFRpbWVyU2V0
Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJh
Y2spID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlND
OjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykgPSAwOworICAgIHZv
aWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmICghbV9nbG9iYWxTY29w
ZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0U2NyaXB0KCk7CisgICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzVGVybWluYXRp
bmdFeGVjdXRpb24oKSBjb25zdCA9IDA7Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1l
IEdsb2JhbFNjb3BlPgorICAgIHZvaWQgaW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpOwogCi0gICAg
dmlydHVhbCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKSA9IDA7Cisg
ICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUq
IG1fZ2xvYmFsU2NvcGU7CisgICAgSlNDOjpTdHJvbmc8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xv
YmFsU2NvcGVXcmFwcGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJDb25zb2xlQ2xpZW50
PiBtX2NvbnNvbGVDbGllbnQ7CisgICAgbXV0YWJsZSBMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRp
b25NdXRleDsKKyAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
NTk2NGQ1MTExNzliMGY4NWVmZGFmMTMxMjYwMWQxMzQ5YjlhZjk1ZS4uMWNlZmNiZGMwM2RmYWQ3
OTIwYjVhNmM2MjRlODA4M2IzMGE1YWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQobWFpbkNvbnRl
eHQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRD
b250cm9sbGVyOworICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENv
bnRyb2xsZXI7CiAgICAgewogICAgICAgICAvLyBNdXRleCBwcm90ZWN0aW9uIGlzIG5lY2Vzc2Fy
eSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjaGFuZ2UgbV93b3JrZXJHbG9iYWxTY29wZQogICAg
ICAgICAvLyB3aGlsZSBXb3JrZXJUaHJlYWQ6OnN0b3AoKSBpcyBhY2Nlc3NpbmcgaXQuIE5vdGUg
dGhhdCBXb3JrZXJUaHJlYWQ6OnN0b3AoKSBjYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmRmNTUwZjQ0OTkyZDllNjA0MzFlN2QyM2ZkZmIzOWQxZDBlOTNjMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtsZXRDb25z
b2xlQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKLQotV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDogbV93b3JrbGV0R2xvYmFs
U2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQotewotfQotCi1Xb3JrbGV0Q29uc29sZUNsaWVudDo6
fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OwotCi12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCi17Ci0gICAgU3RyaW5nIG1lc3NhZ2VUZXh0Owot
ICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAg
ICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92
ZShhcmd1bWVudHMpLCBleGVjKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xl
TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKLX0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6Y291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6dGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgUmVmPFNj
cmlwdEFyZ3VtZW50cz4mJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5k
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikg
eyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAoSlNDOjpKU0dsb2JhbE9i
amVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjpyZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29u
c29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFy
Z3VtZW50cz4mJikgeyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxMmJiNDlhNWRhZmI4YWYzYzNjZDk5NjdmNmYwYmExZGMzYjU1M2E5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJh
bWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29ya2xldENvbnNvbGVDbGll
bnQgZmluYWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChX
b3JrbGV0R2xvYmFsU2NvcGUmKTsKLSAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgp
OwotCi1wcml2YXRlOgotICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5
cGUsIE1lc3NhZ2VMZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCBjb3VudChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBjb3VudFJlc2V0KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lk
IHByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFs
OwotICAgIHZvaWQgcHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiB0aXRsZSkgZmluYWw7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lkIHRpbWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGlt
ZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVFbmQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGlt
ZVN0YW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkRW5k
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYp
IGZpbmFsOwotICAgIHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLQotICAgIFdvcmtsZXRHbG9iYWxT
Y29wZSYgbV93b3JrbGV0R2xvYmFsU2NvcGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRl
eCA3YjNiNDIxMGY3NGI2ZDZiNmEyNjNjZWU5YmVjMDQxYzc2NDI3OTg5Li4wZGI1MTk1YmE5ZmU0
ZGJiNmU1ZWQwMmI4NmU2MGNkMmYyYWZlOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdvcmtsZXRHbG9iYWxTY29wZSk7CiAKIFdvcmtsZXRHbG9iYWxTY29w
ZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBjb25z
dCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fdGhyZWFkKCZ0aHJlYWQp
Ci0gICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlz
KSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAg
ICAsIG1fdXJsKHBhcmFtZXRlcnMud2luZG93VVJMKQogICAgICwgbV9qc1J1bnRpbWVGbGFncyhw
YXJhbWV0ZXJzLmpzUnVudGltZUZsYWdzKQpAQCAtNjMsOCArNjIsOCBAQCBXb3JrbGV0R2xvYmFs
U2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRocmVhZCwg
Y29uc3QgV29yawogfQogCiBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTY3JpcHRTb3VyY2VDb2RlJiYg
Y29kZSkKLSAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQotICAgICwgbV9z
Y3JpcHQobWFrZVVuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRo
aXMpKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZSh2bSkpCisgICAg
LCBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fdG9wT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fdXJsKGNvZGUudXJsKCkpCiAg
ICAgLCBtX2pzUnVudGltZUZsYWdzKGRvY3VtZW50LnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRp
bWVGbGFncygpKQpAQCAtODEsNyArODAsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRH
bG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTYwogCiBX
b3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQogewotICAgIEFTU0VSVCgh
bV9zY3JpcHQpOworICAgIEFTU0VSVCghc2NyaXB0KCkpOwogICAgIHJlbW92ZUZyb21Db250ZXh0
c01hcCgpOwogICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc1Nl
dCgpLnJlbW92ZSh0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZVJlc3VsdCwgcmVtb3Zl
UmVzdWx0KTsKQEAgLTg5LDcgKzg4LDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEds
b2JhbFNjb3BlKCkKIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVj
dGlvbigpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdCkKKyAgICBpZiAoIXNjcmlwdCgpKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKG1fZGVmYXVsdFRhc2tHcm91cCkKICAgICAgICAgbV9kZWZhdWx0
VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7CkBAIC05OCw4ICs5Nyw4IEBAIHZv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogICAgIGlmICht
X2V2ZW50TG9vcCkKICAgICAgICAgbV9ldmVudExvb3AtPmNsZWFyTWljcm90YXNrUXVldWUoKTsK
ICAgICByZW1vdmVSZWplY3RlZFByb21pc2VUcmFja2VyKCk7Ci0gICAgbV9zY3JpcHQtPnZtKCku
bm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7Ci0gICAgbV9zY3JpcHQgPSBudWxscHRyOworICAgIHNj
cmlwdCgpLT52bSgpLm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOworICAgIGNsZWFyU2NyaXB0KCk7
CiB9CiAKIGF1dG8gV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0
KCkgLT4gV29ya2xldEdsb2JhbFNjb3Blc1NldCYKQEAgLTEyOSwyMiArMTI4LDIyIEBAIFN0cmlu
ZyBXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHZv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCiB7CiAgICAgaWYgKG1fY29kZSkKLSAg
ICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKCptX2NvZGUpOworICAgICAgICBzY3JpcHQoKS0+ZXZh
bHVhdGUoKm1fY29kZSk7CiB9CiAKIGJvb2wgV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0
aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fc2NyaXB0IHx8IG1fc2NyaXB0
LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworICAgIHJldHVybiAhc2NyaXB0KCkgfHwgc2NyaXB0
KCktPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
OjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX3Njcmlw
dC0+ZGlzYWJsZUV2YWwoZXJyb3JNZXNzYWdlKTsKKyAgICBzY3JpcHQoKS0+ZGlzYWJsZUV2YWwo
ZXJyb3JNZXNzYWdlKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJB
c3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX3NjcmlwdC0+ZGlz
YWJsZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0KCktPmRpc2FibGVXZWJB
c3NlbWJseShlcnJvck1lc3NhZ2UpOwogfQogCiBVUkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21w
bGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRm9yY2VVVEY4KSBjb25zdApAQCAtMjM0LDkgKzIz
Myw5IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2V2YWx1YXRlZE1vZHVsZXMuYWRkKG1vZHVsZVVSTCk7CiAgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiBleGNlcHRpb247Ci0gICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2Rl
KG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgV1RGTW92ZShtb2R1bGVVUkwpKSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zY3JpcHRM
b2FkZXItPnNjcmlwdCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNlcHRpb24pOwogICAgICAg
ICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNl
cHRpb24pOworICAgICAgICAgICAgc2NyaXB0KCktPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwog
ICAgIH0KIAogICAgIGRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoV1RGTW92ZShjb21wbGV0ZWRK
b2IpLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
aAppbmRleCBmMzkxNmRjMTY2NGRmZjc1YWNiNTk0OGY4NDQwZWNlMDE4MGVkOTVlLi41MzVlMzZl
ZTNiYjBlMDA4YmEzMmRmZTc3OTc0MDYxMmIwYmRjYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGll
bnQuaCIKLSNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC04
Niw4ICs4Niw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNp
bmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0KCkgZmluYWwgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KLSAgICB2b2lkIGNsZWFyU2Ny
aXB0KCkgeyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KICAgICBXb3JrZXJPcldvcmtsZXRUaHJlYWQq
IHdvcmtlck9yV29ya2xldFRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGhyZWFkLmdl
dCgpOyB9CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKQEAgLTE3MCw4ICsxNjgsNiBAQCBwcml2
YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFdvcmtl
ck9yV29ya2xldFRocmVhZD4gbV90aHJlYWQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwotCiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBt
X3RvcE9yaWdpbjsKIAogICAgIFJlZlB0cjxXb3JrZXJFdmVudExvb3A+IG1fZXZlbnRMb29wOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmMxNTQxYzE1ODAyM2JiNmZhYTVl
NzUzMjI2ZjYxYzdlZmY4YzQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLQotI2luY2x1ZGUgIkpTQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJK
U0V2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKLSNpbmNsdWRlICJKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgot
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlICJXb3JrbGV0Q29uc29s
ZUNsaWVudC5oIgotCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0
aW9uSGVscGVycy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFj
ay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcg
bmFtZXNwYWNlIEpTQzsKLQotV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRD
b250cm9sbGVyKFJlZjxWTT4mJiB2bSwgV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFs
U2NvcGUpCi0gICAgOiBtX3ZtKFdURk1vdmUodm0pKQotICAgICwgbV93b3JrbGV0R2xvYmFsU2Nv
cGUod29ya2xldEdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
KCptX3ZtKQotewotICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBj
bGVhciB0aGF0IHdlIGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVy
biBpdCBvbiBwZXJtYW5lbnRseS4KLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxk
KG1fdm0uZ2V0KCkpOwotfQotCi1Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFsU2NvcGUpCi0gICAg
OiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihWTTo6Y3JlYXRlKCksIHdvcmtsZXRHbG9iYWxTY29w
ZSkKLXsKLX0KLQotV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlcigpCi17Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgZm9yYmlkRXhlY3V0
aW9uKCk7Ci0KLSAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7Ci0gICAgICAg
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOwot
ICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVs
bHB0cik7Ci0gICAgICAgIG1fY29uc29sZUNsaWVudCA9IG51bGxwdHI7Ci0gICAgfQotICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1fdm0gPSBudWxscHRyOwot
fQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQotewot
ICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAg
IG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKLX0KLQotYm9vbCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAotewotICAgIEFTU0VSVChtX3dv
cmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIHJldHVybiBtX2V4ZWN1
dGlvbkZvcmJpZGRlbjsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzRXhlY3V0aW9u
Rm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgp
OwotICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OwotCi0gICAgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5zZXRFdmFsRW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQot
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayB7IHZtKCkgfTsKLQotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+
c2V0V2ViQXNzZW1ibHlFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwotfQotCi0KLXRlbXBs
YXRlPHR5cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2Nv
cGUsIHR5cGVuYW1lIEdsb2JhbFNjb3BlPgotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCi17Ci0gICAgQVNTRVJUKCFtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIpOwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07Ci0KLSAgICAv
LyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQg
aXNuJ3QgY29sbGVjdGVkCi0gICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVj
dC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKLSAgICAvLyBjb25zdHJ1Y3RlZCwg
aXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUuKQotICAgIFN0cnVjdHVyZSogY29udGV4dFBy
b3RvdHlwZVN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwotICAgIGF1dG8qIGNvbnRleHRQcm90b3R5cGUg
PSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQ
cm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNHbG9iYWxT
Y29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlKTsK
LSAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92
bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKLSAgICBhdXRv
KiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOwotCi0gICAg
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLnNldCgqbV92bSwgSlNHbG9iYWxTY29wZTo6Y3Jl
YXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PEdsb2JhbFNjb3BlJj4oKm1fd29ya2xl
dEdsb2JhbFNjb3BlKSwgcHJveHkpKTsKLSAgICBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5z
ZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKTsKLSAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5z
dHJ1Y3R1cmUoKm1fdm0pLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIpOwotICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2Jh
bE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICBh
dXRvKiBnbG9iYWxTY29wZVByb3RvdHlwZSA9IEpTR2xvYmFsU2NvcGU6OnByb3RvdHlwZSgqbV92
bSwgKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgZ2xvYmFsU2NvcGVQ
cm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgpOwotICAgIGNvbnRleHRQcm90b3R5cGUtPnN0
cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBnbG9i
YWxTY29wZVByb3RvdHlwZSk7Ci0KLSAgICBwcm94eS0+c2V0VGFyZ2V0KCptX3ZtLCBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0p
LT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSk7Ci0KLSAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgIEFTU0VSVChhc09iamVj
dChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkp
LT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwotCi0gICAg
bV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29y
a2xldEdsb2JhbFNjb3BlKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENv
bnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKLX0KLQotdm9pZCBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCi17Ci0gICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlk
ZGVuKCkpCi0gICAgICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQot
ICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93b3JrbGV0R2xvYmFsU2NvcGUp
KSB7Ci0gICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU+KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShXRUJfQVVESU8pCi0gICAgaWYgKGlzPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPihtX3dvcmts
ZXRHbG9iYWxTY29wZSkpIHsKLSAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLCBB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0
cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZv
cmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOwotICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKCkpOwotICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSwgZXhjZXB0aW9uKTsKLSAgICB9Ci19Ci0K
LS8vIEltcG9ydGFudDogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgdmVyaWZ5IHRo
YXQgdGhlIHJldHVybmVkIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90IHZpb2xhdGUgQ09SUyBp
ZiBpdCBpcyBnb2luZyB0byBiZSBwYXNzZWQgYmFjayB0byBKUy4KLXZvaWQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0
dXJuZWRFeGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLQotICAgIGF1
dG8mIGdsb2JhbE9iamVjdCA9ICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9i
amVjdCgpOwotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwotICAgIEpTTG9ja0hvbGRl
ciBsb2NrIHsgdm0gfTsKLQotICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9i
YWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJj
ZUNvZGUoKSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVy
bmVkRXhjZXB0aW9uKTsKLQotICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbiAmJiByZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpIHsKLSAgICAgICAgLy8gVGhpcyBGSVhNRSBpcyBmcm9tIFdvcmtlclNj
cmlwdENvbnRyb2xsZXIuCi0gICAgICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRo
aXMgY2FuIHJ1biBhcmJpdHJhcnkgY29kZSB0byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUg
ZXhjZXB0aW9uLgotICAgICAgICAvLyBEbyB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIHRvIGhhbmRs
ZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwgc2F5LCByYWlzZXMgYW5vdGhlciBleGNlcHRpb24/Ci0g
ICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSByZXR1cm5lZEV4Y2VwdGlvbi0+dmFs
dWUoKS50b1dURlN0cmluZygmZ2xvYmFsT2JqZWN0KTsKLSAgICB9Ci19Ci0KLXZvaWQgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9u
KQotewotICAgIGF1dG8qIGxleGljYWxHbG9iYWxPYmplY3QgPSBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpOwotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IHRocm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBleGNlcHRpb24pOwot
fQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpyZWxlYXNlSGVhcEFjY2VzcygpCi17
Ci0gICAgbV92bS0+aGVhcC5yZWxlYXNlQWNjZXNzKCk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmFjcXVpcmVIZWFwQWNjZXNzKCkKLXsKLSAgICBtX3ZtLT5oZWFwLmFjcXVp
cmVBY2Nlc3MoKTsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJT
ZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxs
YmFjayBjYWxsYmFjaykKLXsKLSAgICBhdXRvIHByb2Nlc3NUaW1lciA9IFsmXSAoSlNSdW5Mb29w
VGltZXIqIHRpbWVyKSB7Ci0gICAgICAgIGlmICghdGltZXIpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHRpbWVyLT5hZGRUaW1lclNldE5vdGlmaWNhdGlvbihjYWxsYmFjayk7Ci0gICAg
fTsKLQotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkp
OwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwot
ICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7Ci19Ci0KLXZv
aWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpT
Qzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCi17
Ci0gICAgYXV0byBwcm9jZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0aW1lcikgewot
ICAgICAgICBpZiAoIXRpbWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aW1lci0+
cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oY2FsbGJhY2spOwotICAgIH07Ci0KLSAgICBwcm9j
ZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNz
VGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGlt
ZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12b2lkIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCkKLXsKLSAgICBpZiAo
bV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAg
ICAgIC8vIFRoZSBtdXRleCBwcm92aWRlcyBhIG1lbW9yeSBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0
IG9uY2UKLSAgICAgICAgLy8gdGVybWluYXRpb24gaXMgc2NoZWR1bGVkLCBpc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uKCkgd2lsbAotICAgICAgICAvLyBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhhdCBsZXhp
Y2FsR2xvYmFsT2JqZWN0IHdoZW4gY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCi0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxvY2spOwotICAg
ICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOwotICAgIH0KLSAgICBtX3ZtLT5u
b3RpZnlOZWVkVGVybWluYXRpb24oKTsKLX0KLQotYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0Ci17Ci0gICAgLy8gU2VlIGNvbW1lbnRz
IGluIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24gcmVnYXJkaW5nIG11dGV4IHVzYWdlLgot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxvY2spOwot
ICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247Ci19Ci0KLUpTQzo6SlNHbG9iYWxP
YmplY3QqIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIoKQotewot
ICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTM4Y2E2Mzg2NjFj
YThmNGIzMTgyMjNkN2RlZDkxNzExZjAwNTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0RlYnVnZ2VyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGlt
ZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL05ha2VkUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgVk07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7Ci1jbGFzcyBTY3JpcHRTb3VyY2VDb2Rl
OwotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7Ci1jbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7
Ci1jbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKLQotLy8gRklYTUU6IFdlIHNob3VsZCBzaGFy
ZSBtb3JlIGNvZGUgd2l0aCBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgotY2xhc3MgV29ya2xldFNj
cmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqKTsKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcihSZWY8SlNDOjpWTT4mJiwgV29ya2xldEdsb2JhbFNjb3BlKik7Ci0gICAgfldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKCk7Ci0KLSAgICBKU1dvcmtsZXRHbG9iYWxTY29wZSogd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcigpCi0gICAgewotICAgICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsK
LSAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKLSAgICB9
Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKSBmaW5hbDsK
LQotICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7Ci0gICAgYm9vbCBpc0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIGNvbnN0OwotCi0gICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7Ci0gICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwotCi0gICAgdm9pZCByZWxlYXNlSGVhcEFjY2VzcygpIGZpbmFsOwotICAgIHZv
aWQgYWNxdWlyZUhlYXBBY2Nlc3MoKSBmaW5hbDsKLQotICAgIHZvaWQgYWRkVGltZXJTZXROb3Rp
ZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykg
ZmluYWw7Ci0gICAgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9v
cFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSBmaW5hbDsKLQotICAgIHZvaWQgc2No
ZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwotICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1
dGlvbigpIGNvbnN0IGZpbmFsOwotCi0gICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVz
c2FnZSA9IG51bGxwdHIpOwotCi0gICAgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24q
KTsKLQotICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KLQotcHJpdmF0ZToKLSAg
ICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCi0gICAgewotICAgICAgICBpZiAoIW1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcikKLSAgICAgICAgICAgIGluaXRTY3JpcHQoKTsKLSAgICB9Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBl
bmFtZSBHbG9iYWxTY29wZT4KLSAgICB2b2lkIGluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKTsKLQot
ICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9OwotICAgIFJlZlB0cjxKU0M6
OlZNPiBtX3ZtOwotICAgIFdvcmtsZXRHbG9iYWxTY29wZSogbV93b3JrbGV0R2xvYmFsU2NvcGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGll
bnQ7Ci0gICAgSlNDOjpTdHJvbmc8SlNXb3JrbGV0R2xvYmFsU2NvcGU+IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcjsKLSAgICBtdXRhYmxlIExvY2sgbV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxv
Y2s7Ci0gICAgYm9vbCBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411927</attachid>
            <date>2020-10-20 15:17:24 -0700</date>
            <delta_ts>2020-10-20 15:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217980-20201020151723.patch</filename>
            <type>text/plain</type>
            <size>112362</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkYzdkMWZmODQ0NWFm
OGJhYmZmOTQyOGUwM2NiYzg1ZTZlNTlkMS4uZTU0OGIwMjBjZWFhOTg3YzBiM2YzNDAzOTljZDYy
NTI1ZGNkZjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMC0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIgYW5kIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIGludG8gV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgTWVyZ2UgV29ya2VyU2NyaXB0Q29udHJvbGxlciBhbmQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXIgaW50byBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyCisgICAgICAgIHRv
IHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHdvcmtlcnMgYW5kIHdvcmtsZXRzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cHJveHkgY29uc3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp3
cmFwcGVkIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldHVwTmV3bHlDcmVhdGVk
U2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29y
a2VyQ29uc29sZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
Ojpjb3VudFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpX
b3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmRpc2Fi
bGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aW1w
b3J0U2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6On5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFj
aERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YWNx
dWlyZUhlYXBBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1
YmNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRJZk5lZWRl
ZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
Q29uc29sZUNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmts
ZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5X
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xl
dEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oOiBSZW1vdmVkLgorCiAyMDIwLTEwLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2ODYxNSk6IHNvbWUgYWNjZWxlcmF0ZWQg
dHJhbnNmb3JtIHRlc3RzIGFyZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0
Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYTA2OGRjZDA0NGQwZmEzMjY3MTZlZmUwNzdi
YzhjZDNkODQyZjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVu
dmlyb25tZW50LmgiCkBAIC0xMTYsNyArMTE3LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6
OndvcmtsZXRUaHJlYWQoKQogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQo
bWFpbkNvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0Q29udHJvbGxlcjsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHRDb250cm9sbGVyOwogICAgIHsKICAgICAgICAgYXV0byBsb2NrID0gaG9sZExvY2so
bV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29wZUxvY2spOwogICAgICAgICBtX3dv
cmtsZXRHbG9iYWxTY29wZSA9IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKnRoaXMs
IG1fcGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ3NjQ0MTVhODQyYjJlNmRmNDI3MzM2
YTFhMTIzNTkzYjg4NWQxNjUuLmZmNzNlMzdhZmRmZTkwY2I1MDUwYzUyYjJkYTU2NTIxYmIyY2Vi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02MDUsNyArNjA1LDYgQEAgYmluZGluZ3MvanMvV2ViQ29y
ZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmluZGluZ3MvanMv
V2luZG93UHJveHkuY3BwCi1iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAog
YnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlkZ2Uv
Yy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTI1NTQsNiArMjU1Myw4IEBAIHdvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAogd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5jcHAKIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCit3
b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAord29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAogd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAg
LTI1OTQsMTAgKzI1OTUsOCBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmts
ZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3BwCi13b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwCiB4bWwvRE9NUGFyc2VyLmNwcAogeG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhOWMwNjA2NTFjYThhNjc2OGYxMTdhYWQxM2M0Y2VkNzA5NWJjMzZmLi45NDQwMWNkODUw
YmMwMzEzNTczZTQyMDdiZTAxMWRkN2U1YWRhZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ5LDcgKzEzNDksNiBAQAog
CQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjky
MDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0
OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxh
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5
OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNF
QkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENv
bnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRv
ckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENC
MjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQ
YWludFNpemUuaCAqLzsgfTsKIAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJv
cGVydHlNYXBSZWFkT25seS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEJBRkQwQ0UyMTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFk
T25seS5oICovOyB9OwpAQCAtMTM2Myw3ICsxMzYyLDYgQEAKIAkJNEJEQTQwMDEyMTUxQjZGNTAw
RkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0IC8q
IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZDRCAvKiBXb3Jr
bGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRF
QTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovOyB9OwogCQk0QkRFQTMyNTIxN0ZF
MkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29y
a2xldEdsb2JhbFNjb3BlLmggKi87IH07Ci0JCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggKi87IH07CiAJCTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuaCAqLzsgfTsKIAkJNEQzQjAwQUIyMTVENjlBNzAwNzZCOTgzIC8qIE1lZGlhUmVjb3Jk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0Iw
MEE5MjE1RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggKi87IH07CiAJCTREM0IwMEFG
MjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0IwMEFEMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZl
bnQuaCAqLzsgfTsKQEAgLTQ4NzcsNyArNDg3NSw2IEBACiAJCUUxOUFDM0Y1MTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0VEMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9B
bGdvcml0aG1TSEE1MTIuaCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE2NDNG
MTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0JGMEU3NkFDRjEw
MDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFBREVDQkQwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBREVD
Q0UwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNDQzBFNzZBRDhCMDA0QTFBNUUgLyog
TWVzc2FnZUNoYW5uZWwuaCAqLzsgfTsKIAkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8qIEpT
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQURFREQ4MEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggKi87IH07CkBA
IC03OTMzLDkgKzc5MzAsOSBAQAogCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
cmVVUkxSZXNwb25zZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFB
QjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhN
TE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTE5hbWVzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTE5hbWVzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0gICAgICAgIDQ0QkQyQjM2MjUyNzc5NzgwMDU1RDk1
QSAvKiBHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2ZW50
SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uUmFuZ2VEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ0QjM4QkY5MjUzNjlBODgwMEE0NDU4RCAvKiBTZWxlY3Rpb25S
YW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0
aW9uUmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRCRDJCMzYy
NTI3Nzk3ODAwNTVEOTVBIC8qIEdsb2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSAiR2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhl
bWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgyMzQsOCArODIzMSw2IEBACiAJCTRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFy
dFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCN0FFNDkyMjE3
N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3Rv
bVBhaW50SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTUyMTc3
QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3VzdG9tUGFpbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCN0Y5
QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRl
QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckRlbGV0ZUFj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDQTIxOTBFQkQ2MDBD
MEFCNjQgLyogQ1NTUGFpbnRTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhaW50U2l6ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFGRDBDRDIxOTBFQkU5MDBDMEFCNjQgLyog
Q1NTUGFpbnRTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQYWludFNpemUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODI2NCw4ICs4MjU5LDYgQEAKIAkJNEJERUEzMjMyMTdFQzk2QTAwNTJE
RkNEIC8qIFdvcmtsZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3Jr
bGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2JhbFNj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEJERUEzMjcyMTgwMDNGNzAw
NTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCREVB
MzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFs
U2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTk4
LDYgKzEwNTkxLDcgQEAKIAkJODMxOThGQkIyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0Nv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUF1ZGlv
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4RkJEMjRBMTYw
QzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCYXNlQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMx
OThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzFBM0VBODI1M0Y3OEMyMDA2NzgwNEYgLyogV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjcxLDYgKzEwNjY1LDcgQEAKIAkJODM1
NjU3QzYxRUNBQjBFODAwQ0RFNzJEIC8qIEpTRE9NTWF0cml4SW5pdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU1hdHJpeEluaXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzU2Rjk3QzI0RDlGODA4MDA2QzNFNDEgLyogV2ViS2l0QXVk
aW9MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNTZGOTdFMjREOUY4MDkwMDZDM0U0MSAvKiBXZWJLaXRBdWRp
b0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNUI2ODBFMUY1NDhCREUwMDcxRjdGNiAvKiBKU0ZpbGVT
eXN0ZW1FbnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0ZpbGVTeXN0ZW1FbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzNUQyRDc0MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50K0VudHJpZXNB
UEkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MSW5wdXRFbGVtZW50K0VudHJpZXNB
UEkuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzUxRjVGMUZCODAw
MTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTcyOSw4ICsxNTcyNCw2IEBACiAJCUUxQTMxNjJCMTM0QkMz
MkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVz
c2FnZUNoYW5uZWxDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUE2
NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQTY0M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZpbGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCRDE0RTlFM0E4MDA0NDlFMTMgLyogRmls
ZVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4ODUxLDcgKzE4ODQ0LDkgQEAKIAkJCQkyRTQzNDYzRDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwICovLAogCQkJCTJFNDM0NjNFMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovLAogCQkJCTJFNDM0NjNG
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovLAorCQkJCTgzMUEzRUE4
MjUzRjc4QzIwMDY3ODA0RiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCiAJ
CQkJODNENkFBRTQyNTI0RUUxMzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmggKi8sCisJCQkJODM1QUEzODgyNTNGNTVCQjAwNzQ2NTU0IC8qIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTgzOUEwOTVCMjUyNEYzNzYwMEVFRjMyOCAvKiBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJODNFODI4QjIyNTI3OTRD
RDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovLAogCQkJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovLApAQCAtMTk4NjcsOCAr
MTk4NjIsNiBAQAogCQkJCTRCREVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0LmNwcCAq
LywKIAkJCQk0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovLAogCQkJCTRC
REVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLywKLQkJCQk0QjdGOUM1NDIx
ODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICovLAotCQkJCTRCN0Y5
QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovLAogCQkJCTRC
REVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAogCQkJ
CTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKIAkJ
CQk0QkRFQTMyQTIxODAxMDcyMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLywK
QEAgLTE5ODc4LDggKzE5ODcxLDYgQEAKIAkJCQk4MzRBNkEzODI1MjY4NDQxMDA3NDdGNUQgLyog
V29ya2xldFBhcmFtZXRlcnMuaCAqLywKIAkJCQk4MzNCRDgxNTI1MjRENEUyMDA2RTcyQjMgLyog
V29ya2xldFBlbmRpbmdUYXNrcy5jcHAgKi8sCiAJCQkJODMzQkQ4MTMyNTI0RDRFMjAwNkU3MkIz
IC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCAqLywKLQkJCQk0QkRFQTMyOTIxODAwNDBDMDA1MkRG
Q0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAotCQkJCTRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSB3b3JrbGV0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjYzMSw4ICsy
NjYyMiw2IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5k
b3dQcm94eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1By
b3h5LmggKi8sCi0JCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwICovLAotCQkJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTM0ODkzLDcgKzM0ODgyLDYgQEAKIAkJCQk0MTZFMjlBNjEwMkZB
OTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUI4MUNDRjFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyUnVudGltZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENkIzNDkwRjYxMTA0NTAwQjc5
RkQxIC8qIFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVBNzY4MDQw
RkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNDkwMiwxMyArMzQ4OTAsMTEgQEAKIAkJCQlBNTRBMEM2ODFEQjgwN0Q5
MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTRCN0Y5QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmts
ZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTgyNTI0RDRGNTAwNkU3
MkIzIC8qIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0FD
RDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5n
VGFza3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlF
NjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBX
cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4Njc0
ZjJkZmI4MTZkNmVhNGNiMDM3NWZjNmNiMmE1NDkzYjNlNzZiLi4xNWUxNjQwZWNmNWZiM2NhNzll
M2M1OWNlMzFiNGE1ZjZmMmYzZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yOTQsNiArMjk0LDEzIEBAIHZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxP
YmplY3QqIGpzR2xvCiAgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNlcHRp
b24pOwogfQogCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzQ29weSA9IG1fZ3VhcmRlZE9iamVjdHM7Cisg
ICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHNDb3B5KQorICAgICAgICBndWFy
ZGVkLT5jbGVhcigpOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFt
ZSkKIHsKICAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKQEAgLTM0MSwx
MSArMzQ4LDggQEAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV3JhcHAKICAgICBpZiAoaXM8RG9jdW1lbnQ+
KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhkb3duY2FzdDxEb2N1bWVu
dD4oY29udGV4dCkuZnJhbWUoKSwgd29ybGQpOwogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0KLSAgICBp
ZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggNzM4NjdkNmFiMmU1YjRkYmI3
MGI3MGE5YTM2MDk0ODQ5ZjBjZWU2Mi4uNzA2MTM3MDQ2MDM2Y2UyZjQ4YTZkNzNhMzgxOTQwN2Ix
OGUyOTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzdWJzcGFj
ZUZvcihKU0M6OlZNJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKIHB1YmxpYzoKICAgICBMb2NrJiBn
Y0xvY2soKSB7IHJldHVybiBtX2djTG9jazsgfQogCkBAIC04MSw2ICs4MiwxMCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAorICAgIHZvaWQgY2xlYXJET01HdWFy
ZGVkT2JqZWN0cygpOworCisgICAgSlNDOjpKU1Byb3h5JiBwcm94eSgpIGNvbnN0IHsgQVNTRVJU
KG1fcHJveHkpOyByZXR1cm4gKm1fcHJveHkuZ2V0KCk7IH0KKwogcHVibGljOgogICAgIH5KU0RP
TUdsb2JhbE9iamVjdCgpOwogCkBAIC0xMDUsNiArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJl
ZjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgdWludDhfdCBtX3dvcmxkSXNOb3JtYWw7
CiAgICAgTG9jayBtX2djTG9jazsKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+
IG1fcHJveHk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCdWlsdGluR2xvYmFscyhKU0M6OlZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApp
bmRleCA1N2Q0NWMzZGU5OGJlNDdiZTEwZmE0YTY5M2U4MmY3NTQxMDc1ZjA1Li5iMDk0NmUyNWE5
YTBkZmFiZTliOTIzODBiYWIzZDc5NGFlOGFiZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTk3LDggKzk3LDggQEAgSlNET01XaW5k
b3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPERPTVdpbmRvdz4KICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHBy
b3h5LT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93
Q2xvc2VXYXRjaHBvaW50cyhXYXRjaHBvaW50U2V0OjpjcmVhdGUoKHdpbmRvdyAmJiB3aW5kb3ct
PmZyYW1lKCkpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlkYXRlZCkpCiAgICAgLCBtX3dyYXBwZWQo
V1RGTW92ZSh3aW5kb3cpKQotICAgICwgbV9wcm94eShwcm94eSkKIHsKKyAgICBtX3Byb3h5LnNl
dCh2bSwgdGhpcywgcHJveHkpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5
KiBwcm94eSkKIAogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFtZXMuZG9jdW1lbnRQdWJsaWNOYW1l
KCksIGpzTnVsbCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhidWlsdGluTmFt
ZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyhidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LmdldCgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCiAgICAgfTsKIAogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FS
UkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CkBAIC0yNTAsOSArMjUwLDkgQEAgdm9pZCBKU0RP
TVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQogICAgIHNldEN1cnJlbnRF
dmVudCgwKTsKIH0KIAotSlNXaW5kb3dQcm94eSogSlNET01XaW5kb3dCYXNlOjpwcm94eSgpIGNv
bnN0CitKU1dpbmRvd1Byb3h5JiBKU0RPTVdpbmRvd0Jhc2U6OnByb3h5KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcm94eTsKKyAgICByZXR1cm4gKmpzQ2FzdDxKU1dpbmRvd1Byb3h5Kj4oJkpT
RE9NR2xvYmFsT2JqZWN0Ojpwcm94eSgpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBET01XaW5kb3cmIGRvbVdpbmRvdykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggMTA1MDNmZTM5Yzg5
ZGU2MzE4ZTNmNzI4N2JhYzQ1ZDc3OTUyMmNkYi4uNDU2ZmMxNDY1NTZlMTI0MmNmNTA2NmI3MTAy
ZWJhYzU5YTgxYWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmludEVycm9y
TWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIEpTV2luZG93UHJveHkqIHByb3h5
KCkgY29uc3Q7CisgICAgSlNXaW5kb3dQcm94eSYgcHJveHkoKSBjb25zdDsKIAogICAgIHN0YXRp
YyB2b2lkIGZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqKTsK
IApAQCAtMTA4LDcgKzEwOCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxET01X
aW5kb3c+IG1fd3JhcHBlZDsKLSAgICBKU1dpbmRvd1Byb3h5KiBtX3Byb3h5OwogfTsKIAogV0VC
Q09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIERPTVdp
bmRvdyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDNkMzE2Zjc5NjExYjQwNDJlYmI5MzdlNjE0NTRmZjU5
NGJmMWFhNmYuLmMzN2M3NDUxNGFlNjhiZDU5ZWRkMWFkYzAzZjY1MGNkNjhlMjI4OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKQEAgLTg3LDEzICs4Nyw2IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpCiAgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKIH0KIAotdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6Y2xl
YXJET01HdWFyZGVkT2JqZWN0cygpCi17Ci0gICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3Vh
cmRlZE9iamVjdHM7Ci0gICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCi0g
ICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7Ci19Ci0KIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpOwpAQCAtMTU3LDEyICsxNTAsMTIgQEAgSlNWYWx1ZSB0
b0pTKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCosIFdvcmtlckdsb2IKIAogSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOworICAgIGF1dG8qIHNjcmlw
dCA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOwogICAgIGlmICghc2NyaXB0KQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7Ci0gICAgSlNXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dFdyYXBw
ZXIgPSBzY3JpcHQtPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGF1dG8qIGNvbnRl
eHRXcmFwcGVyID0gc2NyaXB0LT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICBBU1NFUlQoY29u
dGV4dFdyYXBwZXIpOwotICAgIHJldHVybiBjb250ZXh0V3JhcHBlci0+cHJveHkoKTsKKyAgICBy
ZXR1cm4gJmNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQogCiBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKiB0b0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoVk0mIHZtLCBKU1ZhbHVl
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmgKaW5kZXggZDQ0OTg3MTI5NDZhZTVmNmYwMTg3ODY4NGU0Njk5N2IxZmVj
MTdhMC4uMGY0N2ZhNjkyYzZkMGJjYjAzYzY0NWY2ODQ5MmI0NjY2YzViNzUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5o
CkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKICAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0KLSAg
ICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVybiBt
X3Byb3h5LmdldCgpOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTc2LDggKzc1LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1
ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNy
b3Rhc2s+JiYpOwogCi0gICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7Ci0KIHByb3Rl
Y3RlZDoKICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1
cmUqLCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+JiYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwpAQCAtODYsNyArODMsNiBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7Ci0g
ICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OwogfTsKIAogLy8gUmV0
dXJucyBhIEpTV29ya2VyR2xvYmFsU2NvcGUgb3IganNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IDE4NzJiNDE0ZWQ5M2JkNGY2MDhlYzk4ZTdmZTdmZDRmYTI4MjYwNTEuLmMzNjVhNDgzOTRkMDE1
MjI1ZGUyNmRhYTYwZDNjMTEyNTcyNWM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMzEsOCArMzEs
OCBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9N
R3VhcmRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBA
IC03NywxMyArNzcsNiBAQCB2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwogfQogCi12b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFy
ZGVkT2JqZWN0cygpCi17Ci0gICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9iamVj
dHM7Ci0gICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCi0gICAgICAgIGd1
YXJkZWQtPmNsZWFyKCk7Ci19Ci0KIHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsK
QEAgLTEzOCwxMCArMTMxLDEwIEBAIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCosIFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQogewogICAgIGlmICghd29ya2xldEds
b2JhbFNjb3BlLnNjcmlwdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBh
dXRvKiBjb250ZXh0V3JhcHBlciA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xl
dEdsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICBpZiAoIWNv
bnRleHRXcmFwcGVyKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4g
Y29udGV4dFdyYXBwZXItPnByb3h5KCk7CisgICAgcmV0dXJuICZjb250ZXh0V3JhcHBlci0+cHJv
eHkoKTsKIH0KIAogSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUo
Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAppbmRleCA0NGUyZGY0MmI2ZDVhODE5YmZl
NjU2YzdhMDY5MWE1Y2E1Y2MzNWNhLi5iYzUzZmNhYmU0M2RhYWZmNzI1OWJmNmJmYjc5MGY3OTNh
OWFlOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFS
RV9JTkZPOwogCiAgICAgV29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1
cm4gKm1fd3JhcHBlZDsgfQotICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VS
VChtX3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNjQsOCArNjMs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlw
dEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwog
ICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAKLSAgICB2b2lkIGNsZWFyRE9NR3VhcmRl
ZE9iamVjdHMoKTsKLQogcHJvdGVjdGVkOgogICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShK
U0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsKQEAgLTc0
LDcgKzcxLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXb3JrbGV0R2xv
YmFsU2NvcGU+IG1fd3JhcHBlZDsKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+
IG1fcHJveHk7CiB9OwogCiAvLyBSZXR1cm5zIGEgSlNXb3JrbGV0R2xvYmFsU2NvcGUgb3IganNO
dWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CmluZGV4IGU4N2E2ZTU0YzdhMDIxOGQ3M2MyNDFlNjQyY2E4NDZhNmQ2NzU4OWUuLmEwYzU2Nzc0
NDVmYTVlOGNjNmM2MWU4YWI0NjJjNDkzNWU4ZjE2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fZnVuY3Rpb24pCi0gICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29u
dGV4dCh3aW5kb3csIHdpbmRvdy0+cHJveHkoKSwgZG9jdW1lbnQpOworICAgICAgICBleGVjdXRl
RnVuY3Rpb25JbkNvbnRleHQod2luZG93LCAmd2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CiAg
ICAgZWxzZQogICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbihtX2lzb2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CkBAIC0xNDgsMTAgKzE0
OCwxMCBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCiAgICAgLy8gSW4gYSBXb3JrZXIsIHRoZSBleGVjdXRpb24gc2hv
dWxkIGFsd2F5cyBoYXBwZW4gb24gYSB3b3JrZXIgdGhyZWFkLgogICAgIEFTU0VSVCh3b3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCi0g
ICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHdvcmtlckdsb2Jh
bFNjb3BlLnNjcmlwdCgpOworICAgIGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJHbG9i
YWxTY29wZS5zY3JpcHQoKTsKIAogICAgIGlmIChtX2Z1bmN0aW9uKSB7Ci0gICAgICAgIEpTV29y
a2VyR2xvYmFsU2NvcGUqIGNvbnRleHRXcmFwcGVyID0gc2NyaXB0Q29udHJvbGxlci0+d29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gc2Ny
aXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAgICAgICAgIGV4ZWN1dGVGdW5j
dGlvbkluQ29udGV4dChjb250ZXh0V3JhcHBlciwgY29udGV4dFdyYXBwZXIsIHdvcmtlckdsb2Jh
bFNjb3BlKTsKICAgICB9IGVsc2UgewogICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIGNvZGUobV9j
b2RlLCBVUkwod29ya2VyR2xvYmFsU2NvcGUudXJsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBiODEzM2JkYTdmODM0YmJjYTQwNmIwMWQwNDAw
ZDM5ZWYxNjg2OGEwLi5iN2FmMGJkMmNjODc2YmJhMzhhZTQ5YTFmNzgxMmE0NzAwZTJmZThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC00MCw5ICs0
MCw4IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtl
clNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJh
bWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI0NmQ4YTdlZDkxYjlmMzg2OTM4MGEyNzVjMDk3MDZkYTczNDIx
YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29y
a2VyU2NyaXB0Q29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIkpTRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgotI2luY2x1ZGUgIkpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db21wbGV0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3Jr
VGltZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCi0gICAg
OiBtX3ZtKFZNOjpjcmVhdGUoKSkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xv
YmFsU2NvcGUpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkKLXsKLSAg
ICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBo
YXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFu
ZW50bHkuCi0gICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsK
LX0KLQotV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQot
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgIGlmIChtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcikgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJE
T01HdWFyZGVkT2JqZWN0cygpOwotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+
c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKLSAgICAgICAgbV9jb25zb2xlQ2xpZW50ID0gbnVs
bHB0cjsKLSAgICB9Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKLSAg
ICBtX3ZtID0gbnVsbHB0cjsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0KCkKLXsKLSAgICBBU1NFUlQoIW1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLQot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fdm0uZ2V0KCkpOwotCi0gICAgLy8gRXhwbGljaXRseSBw
cm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3Rl
ZAotICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBn
bG9iYWwgb2JqZWN0IGlzIGZ1bGx5Ci0gICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0
cyBvd24gcHJvdG90eXBlLikKLSAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+aXNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwotICAgICAg
ICBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBkZWRpY2F0ZWRDb250ZXh0
UHJvdG90eXBlID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRl
KCptX3ZtLCBudWxscHRyLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKLSAg
ICAgICAgSlNDOjpFbnN1cmVTdGlsbEFsaXZlU2NvcGUgcHJvdGVjdGVkRGVkaWNhdGVkQ29udGV4
dFByb3RvdHlwZShkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKTsKLSAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1
cmUoKm1fdm0sIG51bGxwdHIsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUpOwotICAgICAgICBh
dXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVs
bHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKLSAgICAgICAgYXV0byog
cHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsKLQotICAgICAg
ICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSY+KCptX3dvcmtlckdsb2JhbFNjb3BlKSwgcHJveHkpKTsKLSAg
ICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUo
Km1fdm0pLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0g
ICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEds
b2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAg
ICAgICBhdXRvKiB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSA9IEpTV29ya2VyR2xvYmFsU2Nv
cGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsK
LSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgp
OwotICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5z
ZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgd29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGUpOwotCi0gICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNl
dEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB9IGVsc2UgaWYgKG1fd29ya2VyR2xvYmFs
U2NvcGUtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgU3RydWN0dXJl
KiBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwotICAg
ICAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSogY29udGV4dFByb3RvdHlw
ZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGUoKm1fdm0sIG51
bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICBKU0M6OkVuc3VyZVN0
aWxsQWxpdmVTY29wZSBwcm90ZWN0ZWRDb250ZXh0UHJvdG90eXBlKGNvbnRleHRQcm90b3R5cGUp
OwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGUpOwot
ICAgICAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgq
bV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKLSAgICAg
ICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsK
LSAgICAKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3ZtLCBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSY+KCptX3dvcmtlckdsb2JhbFNjb3BlKSwgcHJv
eHkpKTsKLSAgICAgICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUo
KS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAg
ICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1f
dm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgYXV0byogd29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUgPSBKU1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUo
Km1fdm0sICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUoKTsKLSAgICAgICAgY29u
dGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5z
aXRpb24oKm1fdm0sIHdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKTsKLQotICAgICAgICBwcm94
eS0+c2V0VGFyZ2V0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0g
ICAgICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0KLSAgICBtX2NvbnNvbGVDbGll
bnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3Bl
KTsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2Nv
bnNvbGVDbGllbnQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0cmluZyogcmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwotICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKCkpOwotICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCksIGV4Y2VwdGlvbik7Ci0gICAgfQotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRF
eGNlcHRpb25NZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLQotICAgIGF1dG8mIGds
b2JhbE9iamVjdCA9ICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKLSAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07Ci0K
LSAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlBy
b2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKLQot
ICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKHZtLCByZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkg
ewotICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewotICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxT
Y29wZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBz
b3VyY2VDb2RlLnVybCgpLnN0cmluZygpKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEl0J3Mg
bm90IGdyZWF0IHRoYXQgdGhpcyBjYW4gcnVuIGFyYml0cmFyeSBjb2RlIHRvIHN0cmluZy1pZnkg
dGhlIHZhbHVlIG9mIHRoZSBleGNlcHRpb24uCi0gICAgICAgICAgICAvLyBEbyB3ZSBuZWVkIHRv
IGRvIGFueXRoaW5nIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwgc2F5LCByYWlzZXMg
YW5vdGhlciBleGNlcHRpb24/Ci0gICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlKQotICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSByZXR1cm5l
ZEV4Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0cmluZygmZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGV0YWlsZWQgZXJyb3Igd2l0
aCBhIGdlbmVyaWMgZXJyb3IuCi0gICAgICAgICAgICBTdHJpbmcgZ2VuZXJpY0Vycm9yTWVzc2Fn
ZSB7ICJTY3JpcHQgZXJyb3IuIl9zIH07Ci0gICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b25NZXNzYWdlKQotICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBn
ZW5lcmljRXJyb3JNZXNzYWdlOwotICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBKU0M6
OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVFcnJvcigmZ2xvYmFsT2JqZWN0LCBnZW5lcmlj
RXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCi17Ci0g
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpOwotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHRo
cm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBleGNlcHRpb24pOwotfQot
Ci12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRp
b24oKQotewotICAgIGlmIChtX2lzVGVybWluYXRpbmdFeGVjdXRpb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHsKLSAgICAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJhcnJp
ZXIgdG8gZW5zdXJlIHRoYXQgb25jZQotICAgICAgICAvLyB0ZXJtaW5hdGlvbiBpcyBzY2hlZHVs
ZWQsIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSB3aWxsCi0gICAgICAgIC8vIGFjY3VyYXRlbHkg
cmVmbGVjdCB0aGF0IGxleGljYWxHbG9iYWxPYmplY3Qgd2hlbiBjYWxsZWQgZnJvbSBhbm90aGVy
IHRocmVhZC4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlv
bk11dGV4KTsKLSAgICAgICAgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uID0gdHJ1ZTsKLSAgICB9
Ci0gICAgbV92bS0+bm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7Ci19Ci0KLWJvb2wgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0Ci17Ci0gICAgLy8g
U2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24gcmVnYXJkaW5nIG11
dGV4IHVzYWdlLgotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2NoZWR1bGVkVGVybWluYXRpb25N
dXRleCk7Ci0gICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsKLX0KLQotdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQotewotICAgIEFTU0VSVCht
X3dvcmtlckdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgbV9leGVjdXRpb25G
b3JiaWRkZW4gPSB0cnVlOwotfQotCi1ib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzRXhl
Y3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29w
ZS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsK
LX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBKU0xv
Y2tIb2xkZXIgbG9ja3t2bSgpfTsKLQotICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5z
ZXRFdmFsRW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCi17Ci0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2t7
dm0oKX07Ci0KLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0V2ViQXNzZW1ibHlF
bmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OnJlbGVhc2VIZWFwQWNjZXNzKCkKLXsKLSAgICBtX3ZtLT5oZWFwLnJlbGVhc2VBY2Nl
c3MoKTsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphY3F1aXJlSGVhcEFjY2Vz
cygpCi17Ci0gICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7Ci19Ci0KLXZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BU
aW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKLXsKLSAgICBhdXRvIHBy
b2Nlc3NUaW1lciA9IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7Ci0gICAgICAgIGlmICgh
dGltZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRpbWVyLT5hZGRUaW1lclNldE5v
dGlmaWNhdGlvbihjYWxsYmFjayk7Ci0gICAgfTsKLQotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5o
ZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFw
LmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJl
ZFdvcmtUaW1lci5wdHIoKSk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVt
b3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmlj
YXRpb25DYWxsYmFjayBjYWxsYmFjaykKLXsKLSAgICBhdXRvIHByb2Nlc3NUaW1lciA9IFsmXSAo
SlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7Ci0gICAgICAgIGlmICghdGltZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHRpbWVyLT5yZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihjYWxs
YmFjayk7Ci0gICAgfTsKLQotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0
eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNh
bGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIo
KSk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIpCi17Ci0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAg
ZGVidWdnZXItPmF0dGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci19Ci0K
LXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dl
ciogZGVidWdnZXIpCi17Ci0gICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9u
KTsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xv
YmFsU2NvcGVXcmFwcGVyKCkKLXsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmI5ZTI3ZDdhYjcwOWQxNTA5NzA0YTBlOTRkOGMyYWJkODExNGZkNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1dvcmtlckdsb2Jh
bFNjb3BlOwotY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLWNsYXNzIFdvcmtlckNvbnNvbGVDbGll
bnQ7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKLQotY2xhc3MgV29ya2VyU2NyaXB0Q29udHJv
bGxlciA6IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJHbG9i
YWxTY29wZSopOwotICAgIH5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKCk7Ci0KLSAgICBKU1dvcmtl
ckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKQotICAgIHsKLSAgICAgICAg
aW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgICAgIHJldHVybiBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKTsKLSAgICB9Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxT
Y29wZVdyYXBwZXIoKSBmaW5hbDsKLQotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Ci0g
ICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UgPSBudWxscHRyKTsKLQotICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9u
Kik7Ci0KLSAgICAvLyBBc3luYyByZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIEpTIHJ1biBleGVjdXRp
b24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1pbmF0aW9uCi0gICAgLy8gZXhjZXB0aW9uIHJhaXNl
ZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1
biBKUy4KLSAgICAvLyBBZnRlciBKUyBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyB3
YXksIHRoZSBXb3JrZXIgdGhyZWFkIGhhcyB0byB1c2UKLSAgICAvLyBmb3JiaWRFeGVjdXRpb24o
KS9pc0V4ZWN1dGlvbkZvcmJpZGRlbigpIHRvIGd1YXJkIGFnYWluc3QgcmVlbnRyeSBpbnRvIEpT
LgotICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIHZvaWQgc2NoZWR1
bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwotICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlv
bigpIGNvbnN0IGZpbmFsOwotCi0gICAgLy8gQ2FsbGVkIG9uIFdvcmtlciB0aHJlYWQgd2hlbiBK
UyBleGl0cyB3aXRoIHRlcm1pbmF0aW9uIGV4Y2VwdGlvbiBjYXVzZWQgYnkgZm9yYmlkRXhlY3V0
aW9uKCkgcmVxdWVzdCwKLSAgICAvLyBvciBieSBXb3JrZXIgdGhyZWFkIHRlcm1pbmF0aW9uIGNv
ZGUgdG8gcHJldmVudCBmdXR1cmUgZW50cnkgaW50byBKUy4KLSAgICB2b2lkIGZvcmJpZEV4ZWN1
dGlvbigpOwotICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKLQotICAgIHZv
aWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgZGlz
YWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQotICAgIEpTQzo6
Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KLSAgICAKLSAgICB2b2lkIHJlbGVhc2VIZWFwQWNj
ZXNzKCkgZmluYWw7Ci0gICAgdm9pZCBhY3F1aXJlSGVhcEFjY2VzcygpIGZpbmFsOwotCi0gICAg
dm9pZCBhZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5v
dGlmaWNhdGlvbkNhbGxiYWNrKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZp
Y2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZp
bmFsOwotCi0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7Ci0gICAgdm9p
ZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBp
bml0U2NyaXB0SWZOZWVkZWQoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcikKLSAgICAgICAgICAgIGluaXRTY3JpcHQoKTsKLSAgICB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7Ci0KLSAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsK
LSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKLSAgICBKU0M6OlN0
cm9uZzxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyQ29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50Owot
ICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1Rl
cm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsKLSAgICBtdXRhYmxlIExvY2sgbV9zY2hlZHVs
ZWRUZXJtaW5hdGlvbk11dGV4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGY3Njk5ZDU1
M2M3ODBiYTBiZjMyNzE3N2QyNDM1YWJkN2NjOWM4ZDIuLjM3YTZiZmE5NjBiZDY3MTQ3NWQ4MDlj
YTk5ODhkMTNhNmY4NDMwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTU5LDEwICs1OSwxMCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5j
bHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGlt
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCA3ODBjNWEx
MjU2MjcwNzRmMjE3NDY1OGRhZmEzZTBlNWU2Y2U0MjViLi4wYjNlZDdkODczOTE4NjM1NDU5MWU5
NzFkOTIzNDY1Y2Q0NTEyMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBzZXR1cE5ld2x5
Q3JlYXRlZFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAg
ICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpnbG9iYWxTY29wZS5nbG9iYWxPYmplY3QoKTsK
ICAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKICAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7Ci0gICAgICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gc2NyaXB0LT53
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICAgICAgYXV0byogY29udGV4dFdyYXBwZXIg
PSBzY3JpcHQtPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAgICAgICBjb250ZXh0V3JhcHBlci0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBJbnRlcm5hbHM6OmludGVy
bmFsc0lkKSwgdG9KUygmZ2xvYmFsT2JqZWN0LCBjb250ZXh0V3JhcHBlciwgU2VydmljZVdvcmtl
ckludGVybmFsczo6Y3JlYXRlKGlkZW50aWZpZXIpKSk7CiAgICAgfSk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmlu
ZGV4IDYzMTEzYTE2YzQ5MzljMDRiNWY3YzAwNjBkNjBmNjIwNGM0MGYzOGMuLmNhYWQ0Y2ViYTU4
YmE4MzMyZDVlOWE2MDNkZTEyNjI2M2RhZWE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTg4LDMgKzg4LDggQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
ICYmIGRvd25jYXN0PFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pc0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApp
bmRleCA3MjE1ODFmMWI3YzgxNjM0NDQzOGFlNGVjY2JhMGY5MGExNDIyNDViLi43YjQyOTMwMGFm
ZmNiMDUxODlkNDgxNjA1OWY0MDVkNjY4NmM0ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJXb3JrZXJDb25zb2xlQ2xpZW50LmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNr
Lmg+CkBAIC0zNSw4ICszNiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJDb25zb2xlQ2xpZW50
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKLSAgICA6IG1fd29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJD
b25zb2xlQ2xpZW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKKyAg
ICA6IG1fZ2xvYmFsU2NvcGUoZ2xvYmFsU2NvcGUpCiB7CiB9CiAKQEAgLTQ3LDMyICs0OCw0MiBA
QCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAgICAgYXV0
byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJn
dW1lbnRzKSwgZXhlYyk7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2Fn
ZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBtX2dsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSkpOwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQobV93b3JrZXJHbG9iYWxTY29w
ZSwgZXhlYywgbGFiZWwpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEds
b2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkp
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiB2
b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVDb3VudFJlc2V0KG1fd29ya2VyR2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsK
KyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRp
bWluZyhtX3dvcmtlckdsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CisgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdGFydENvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFs
U2NvcGUpLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGlt
ZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcobV93b3JrZXJHbG9iYWxTY29wZSwgZXhlYywgbGFiZWws
IFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3Jr
bGV0R2xvYmFsU2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNj
b3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5n
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWws
IFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGlt
ZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcobV93b3JrZXJH
bG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
V29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVU
aW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBs
YWJlbCk7CiB9CiAKIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUzNDk5PiBXZWIg
SW5zcGVjdG9yOiBjb25zb2xlLnByb2ZpbGUgc2hvdWxkIHVzZSB0aGUgbmV3IFNhbXBsaW5nIFBy
b2ZpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCmlu
ZGV4IDk3N2IwN2Q1NDEzNzgyZmY1NTAzMTc2YWYzMDFmMDYyZjM0NGU2ZGUuLjExNGM4ZGZlZTRi
NTUxOWU0MTQ5YjUxOGQ3NzU1OWFjNjgwNmMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29uc29sZUNsaWVudC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVDbGll
bnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlckNvbnNvbGVDbGllbnQgZmluYWwgOiBwdWJsaWMg
SlNDOjpDb25zb2xlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlckdsb2JhbFNjb3BlJik7
CisgICAgZXhwbGljaXQgV29ya2VyQ29uc29sZUNsaWVudChXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYpOwogICAgIHZpcnR1YWwgfldvcmtlckNvbnNvbGVDbGllbnQoKTsKIAogcHJpdmF0ZToK
QEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZEVuZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6
OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV9n
bG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggN2Q5NzgzZDkxMzBkNjZjMjc1
YWFkYjYyYzQ0MTY5Yzg2OGRkN2M2ZS4uMjQwZWM5MzA0MjE4ZTY3ZWQ1NzU3NmQyMjlhYTg1YTZj
NDJiYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKQEAgLTY2LDcgKzY2LDYgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXQKICAgICAsIG1faWRl
bnRpZmllcihwYXJhbXMuaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHBhcmFtcy51c2Vy
QWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChtYWtlVW5pcXVl
PFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwg
bV9pc09ubGluZShwYXJhbXMuaXNPbmxpbmUpCiAgICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeShwYXJhbXMuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5KQpAQCAtMTg3LDEyICsxODYsMTIgQEAgU3RyaW5nIFdvcmtlckdsb2Jh
bFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKIAogdm9pZCBXb3JrZXJHbG9iYWxT
Y29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9z
Y3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0KCktPmRpc2FibGVF
dmFsKGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmRpc2FibGVX
ZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX3NjcmlwdC0+
ZGlzYWJsZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0KCktPmRpc2FibGVX
ZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOwogfQogCiBTb2NrZXRQcm92aWRlciogV29ya2VyR2xv
YmFsU2NvcGU6OnNvY2tldFByb3ZpZGVyKCkKQEAgLTM1Nyw5ICszNTYsOSBAQCBFeGNlcHRpb25P
cjx2b2lkPiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdXJscykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBv
cnRlZCgqdGhpcywgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2Ny
aXB0KCkpOwogCiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0g
ICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+
c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpKSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0TG9hZGVy
LT5zY3JpcHQoKSwgVVJMKHNjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSkpLCBleGNlcHRpb24p
OwogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhj
ZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgICAgICBzY3JpcHQoKS0+c2V0RXhjZXB0aW9uKGV4
Y2VwdGlvbik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQpAQCAt
NDE0LDcgKzQxMyw3IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCgp
IGNvbnN0CiAKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4o
KSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsK
KyAgICByZXR1cm4gc2NyaXB0KCktPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CiB9CiAKICNpZiBF
TkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAppbmRleCA0MTI4MDcxY2M5NGY4N2YzMTcyMjc1OWM0ZjgyYmQwMDI2NjcxMjU1Li5lNDhj
ZmI4NWUxYmUwNWM5ZmJlOGI1YjEyMGJjN2ZiNzk4MDRlNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtODYsOSArODYsNiBA
QCBwdWJsaWM6CiAgICAgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uJiBzd0NsaWVudENvbm5lY3Rp
b24oKTsKICNlbmRpZgogCi0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgZmlu
YWwgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KLSAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBt
X3NjcmlwdCA9IG51bGxwdHI7IH0KLQogICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXImIGlu
c3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVy
OyB9CiAKICAgICBXb3JrZXJUaHJlYWQmIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFk
OyB9CkBAIC0xOTUsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxXb3Jr
ZXJOYXZpZ2F0b3I+IG1fbmF2aWdhdG9yOwogCiAgICAgV29ya2VyVGhyZWFkJiBtX3RocmVhZDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2Ny
aXB0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX2lu
c3BlY3RvckNvbnRyb2xsZXI7CiAKICAgICBib29sIG1fY2xvc2luZyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ1YThkNTk4NThhOWYyZTcxNmI3NjE2MDgzY2VkZDAzZWUwYzliNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCkKKyAgICA6IG1fc2Ny
aXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCit7
Cit9CisKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShSZWY8SlNDOjpWTT4mJiB2bSkKKyAgICA6IG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRoaXMpKQoreworfQorCit2
b2lkIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpjbGVhclNjcmlwdCgpCit7CisgICAgbV9z
Y3JpcHQgPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
YzA2ODNiZGZiODdiOWQ3ZTZiYTE5NjRmODdhNjRiZTIzZmRkZWM4Yi4uZTc5ZWJjZjljNWVlMjU5
OTZlYmRjYWZhZjAzZGVjNmVjNTFmYjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzcsMTIgKzM3LDE5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpID0gZGVmYXVs
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSA9IDA7CiAgICAgdmly
dHVhbCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGNvbnN0
ID0gMDsKIAorICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisgICAgdm9pZCBjbGVhclNjcmlwdCgpOwor
CiAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91
bmlxdWVJZGVudGlmaWVyKys7IH0KIAorcHJvdGVjdGVkOgorICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKCk7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVm
PEpTQzo6Vk0+JiYpOworCiBwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKICAgICB1bnNpZ25lZCBsb25nIG1fdW5p
cXVlSWRlbnRpZmllciB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQwMWQ1ZjJmNDBiN2I3YmRlOGU2MzM2NjJhZDMxZmIxY2QzZjI4NjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0wLDAgKzEsMjk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpT
RXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2lu
Y2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlICJX
b3JrZXJDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlv
bi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZp
dHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFJlZjxWTT4mJiB2bSwgV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDogbV92bShXVEZNb3ZlKHZt
KSkKKyAgICAsIG1fZ2xvYmFsU2NvcGUoZ2xvYmFsU2NvcGUpCisgICAgLCBtX2dsb2JhbFNjb3Bl
V3JhcHBlcigqbV92bSkKK3sKKyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQn
cyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3Ms
IHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChtX3ZtLmdldCgpKTsKK30KKworV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSogZ2xvYmFsU2NvcGUpCisgICAgOiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
KEpTQzo6Vk06OmNyZWF0ZSgpLCBnbG9iYWxTY29wZSkKK3sKK30KKworV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6fldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoKQorewor
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgIGlmIChtX2dsb2JhbFNjb3BlV3JhcHBl
cikgeworICAgICAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0
cygpOworICAgICAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChudWxs
cHRyKTsKKworICAgIH0KKyAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1f
dm0gPSBudWxscHRyOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQoreworICAgIGluaXRTY3Jp
cHRJZk5lZWRlZCgpOworICAgIGRlYnVnZ2VyLT5hdHRhY2gobV9nbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCkpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFj
aERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQoreworICAgIGRlYnVnZ2VyLT5kZXRh
Y2gobV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5n
RGVidWdnaW5nU2Vzc2lvbik7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9nbG9iYWxTY29wZS0+aXND
b250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKK30KKwor
Ym9vbCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRl
bigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZ2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgp
KTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Cit9CisKK3ZvaWQgV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCit7
CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgeworICAgICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmllciB0byBl
bnN1cmUgdGhhdCBvbmNlCisgICAgICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNU
ZXJtaW5hdGluZ0V4ZWN1dGlvbigpIHdpbGwKKyAgICAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0
IHRoYXQgbGV4aWNhbEdsb2JhbE9iamVjdCB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFk
LgorICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgp
OworICAgICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOworICAgIH0KKyAgICBt
X3ZtLT5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKK30KKworYm9vbCBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QKK3sKKyAgICAv
LyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbiByZWdhcmRpbmcg
bXV0ZXggdXNhZ2UuCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlv
bk11dGV4KTsKKyAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOworfQorCit2b2lk
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnJlbGVhc2VIZWFwQWNjZXNzKCkKK3sK
KyAgICBtX3ZtLT5oZWFwLnJlbGVhc2VBY2Nlc3MoKTsKK30KKwordm9pZCBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjphY3F1aXJlSGVhcEFjY2VzcygpCit7CisgICAgbV92bS0+aGVh
cC5hY3F1aXJlQWNjZXNzKCk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJO
b3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHByb2Nlc3NUaW1lciA9
IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVyKSB7CisgICAgICAgIGlmICghdGltZXIpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHRpbWVyLT5hZGRUaW1lclNldE5vdGlmaWNhdGlvbihj
YWxsYmFjayk7CisgICAgfTsKKworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rp
dml0eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5w
dHIoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3Zl
VGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRp
b25DYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHByb2Nlc3NUaW1lciA9IFsmXSAoSlNS
dW5Mb29wVGltZXIqIHRpbWVyKSB7CisgICAgICAgIGlmICghdGltZXIpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHRpbWVyLT5yZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihjYWxsYmFj
ayk7CisgICAgfTsKKworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNh
bGxiYWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxi
YWNrKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7
Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9u
KEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCA9IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOworICAgIFZN
JiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCBleGNlcHRpb24pOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAg
IGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9Owor
CisgICAgbV9nbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJvck1l
c3NhZ2UpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2Fi
bGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKworICAgIG1f
Z2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2UsIGVycm9yTWVz
c2FnZSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3RyaW5nKiByZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Cisg
ICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0o
KSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwg
ZXhjZXB0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworCisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKKworICAgIEpT
RXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5n
UmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV9nbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworCisgICAgaWYgKChyZXR1
cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHJldHVy
bmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CisgICAgICAgIGZv
cmJpZEV4ZWN1dGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7CisgICAgICAgIGlmIChtX2dsb2JhbFNjb3BlLT5jYW5JbmNsdWRlRXJy
b3JEZXRhaWxzKHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksIHNvdXJjZUNvZGUudXJsKCkuc3Ry
aW5nKCkpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXQncyBub3QgZ3JlYXQgdGhhdCB0aGlz
IGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5nLWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4
Y2VwdGlvbi4KKyAgICAgICAgICAgIC8vIERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgdG8gaGFu
ZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbj8K
KyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAgICAgICAg
ICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhjZXB0aW9uLT52YWx1ZSgp
LnRvV1RGU3RyaW5nKCZnbG9iYWxPYmplY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gT3ZlcndyaXRlIHRoZSBkZXRhaWxlZCBlcnJvciB3aXRoIGEgZ2VuZXJpYyBlcnJvci4K
KyAgICAgICAgICAgIFN0cmluZyBnZW5lcmljRXJyb3JNZXNzYWdlIHsgIlNjcmlwdCBlcnJvci4i
X3MgfTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAg
ICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IGdlbmVyaWNFcnJvck1lc3NhZ2U7
CisgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUo
dm0sIGNyZWF0ZUVycm9yKCZnbG9iYWxPYmplY3QsIGdlbmVyaWNFcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3Rv
dHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+Cit2b2lk
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3Mo
KQoreworICAgIEFTU0VSVCghbV9nbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgSlNMb2NrSG9s
ZGVyIGxvY2sgeyB2bSgpIH07CisKKyAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2Jh
bCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCisgICAgLy8gd2hlbiB3
ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMg
ZnVsbHkKKyAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUu
KQorICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTR2xvYmFsU2Nv
cGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwor
ICAgIGF1dG8qIGNvbnRleHRQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVh
dGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSlNHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBu
dWxscHRyLCBjb250ZXh0UHJvdG90eXBlKTsKKyAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpT
UHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3
YXJkaW5nUHJveHlUeXBlKTsKKyAgICBhdXRvKiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92
bSwgcHJveHlTdHJ1Y3R1cmUpOworCisgICAgbV9nbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3Zt
LCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8R2xv
YmFsU2NvcGUmPigqbV9nbG9iYWxTY29wZSksIHByb3h5KSk7CisgICAgY29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX2dsb2JhbFNjb3BlV3JhcHBlci5n
ZXQoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxT
Y29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJl
KCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxTY29wZVdyYXBwZXIpOworICAgIGNv
bnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwg
bV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIGF1dG8qIGdsb2JhbFNjb3BlUHJvdG90
eXBlID0gSlNHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV9nbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCkpOworICAgIGdsb2JhbFNjb3BlUHJvdG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUo
KTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbigqbV92bSwgZ2xvYmFsU2NvcGVQcm90b3R5cGUpOworCisgICAgcHJv
eHktPnNldFRhcmdldCgqbV92bSwgbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIHBy
b3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fZ2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2xv
YmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChhc09iamVj
dChtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2Jh
bE9iamVjdCgpID09IG1fZ2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIG1fY29uc29sZUNsaWVu
dCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fZ2xvYmFsU2NvcGUpOworICAg
IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5n
ZXQoKSk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCgpCit7CisgICAgaWYgKGlzPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2Jh
bFNjb3BlKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIERl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxQ
YWludFdvcmtsZXRHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaW5pdFNj
cmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBp
ZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7CisgICAgICAg
IGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlw
ZSwgSlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSwgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGQy
MzIxZWM0MjZhZWM2ODgyMzkwNWY2Y2Q2YWI3ODkwMDY1OTM3NTEuLmMzOGQ2NDRjNmIxYWExMmJl
MzAyMTcyYzVjMWFjN2NjNzUyZjdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xLDUgKzEsNiBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjMgKzI2LDkwIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmFrZWRQ
dHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK30KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
CitjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50OworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CisKIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZpcnR1YWwgfldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisgICAgV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcihSZWY8SlNDOjpWTT4mJiwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUqKTsKKyAgICBleHBsaWNpdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgfldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIoKTsKKworICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKTsKKyAgICB2b2lkIGFjcXVp
cmVIZWFwQWNjZXNzKCk7CisKKyAgICB2b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6
SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIHZvaWQgcmVt
b3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmlj
YXRpb25DYWxsYmFjayk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFw
cGVyKCkKKyAgICB7CisgICAgICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgICAgICByZXR1
cm4gbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBhdHRhY2hE
ZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CisgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRl
YnVnZ2VyKik7CisKKyAgICAvLyBBc3luYyByZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIEpTIHJ1biBl
eGVjdXRpb24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1pbmF0aW9uCisgICAgLy8gZXhjZXB0aW9u
IHJhaXNlZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5z
IHRvIHJ1biBKUy4KKyAgICAvLyBBZnRlciBKUyBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4g
dGhpcyB3YXksIHRoZSBXb3JrZXIgdGhyZWFkIGhhcyB0byB1c2UKKyAgICAvLyBmb3JiaWRFeGVj
dXRpb24oKS9pc0V4ZWN1dGlvbkZvcmJpZGRlbigpIHRvIGd1YXJkIGFnYWluc3QgcmVlbnRyeSBp
bnRvIEpTLgorICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZvaWQg
c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOworICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4
ZWN1dGlvbigpIGNvbnN0OworCisgICAgLy8gQ2FsbGVkIG9uIFdvcmtlciB0aHJlYWQgd2hlbiBK
UyBleGl0cyB3aXRoIHRlcm1pbmF0aW9uIGV4Y2VwdGlvbiBjYXVzZWQgYnkgZm9yYmlkRXhlY3V0
aW9uKCkgcmVxdWVzdCwKKyAgICAvLyBvciBieSBXb3JrZXIgdGhyZWFkIHRlcm1pbmF0aW9uIGNv
ZGUgdG8gcHJldmVudCBmdXR1cmUgZW50cnkgaW50byBKUy4KKyAgICB2b2lkIGZvcmJpZEV4ZWN1
dGlvbigpOworICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKKworICAgIEpT
Qzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KKworICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpT
Qzo6RXhjZXB0aW9uKik7CisKKyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSk7CisKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
LCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOworICAgIHZvaWQg
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0g
bnVsbHB0cik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgPSAwOworcHJvdGVjdGVkOgorICAg
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2xvYmFsU2NvcGU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRUaW1lclNldE5vdGlmaWNh
dGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5M
b29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spID0gMDsKKyAgICB2b2lkIGluaXRT
Y3JpcHRJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAoIW1fZ2xvYmFsU2NvcGVXcmFwcGVy
KQorICAgICAgICAgICAgaW5pdFNjcmlwdCgpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRTY3JpcHQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm1pbmF0aW5nRXhlY3V0
aW9uKCkgY29uc3QgPSAwOworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2Jh
bFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxT
Y29wZT4KKyAgICB2b2lkIGluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKTsKIAotICAgIHZpcnR1YWwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgPSAwOworICAgIFJlZlB0
cjxKU0M6OlZNPiBtX3ZtOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBtX2dsb2Jh
bFNjb3BlOworICAgIEpTQzo6U3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbFNjb3Bl
V3JhcHBlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyQ29uc29sZUNsaWVudD4gbV9jb25z
b2xlQ2xpZW50OworICAgIG11dGFibGUgTG9jayBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXg7
CisgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lz
VGVybWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDU5NjRkNTEx
MTc5YjBmODVlZmRhZjEzMTI2MDFkMTM0OWI5YWY5NWUuLjFjZWZjYmRjMDNkZmFkNzkyMGI1YTZj
NjI0ZTgwODNiMzBhNWFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkK
ICAgICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KG1haW5Db250ZXh0LmdldCgp
KTsKICNlbmRpZgogCi0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxl
cjsKKyAgICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVy
OwogICAgIHsKICAgICAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5z
dXJlIHRoYXQgd2UgZG9uJ3QgY2hhbmdlIG1fd29ya2VyR2xvYmFsU2NvcGUKICAgICAgICAgLy8g
d2hpbGUgV29ya2VyVGhyZWFkOjpzdG9wKCkgaXMgYWNjZXNzaW5nIGl0LiBOb3RlIHRoYXQgV29y
a2VyVGhyZWFkOjpzdG9wKCkgY2FuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjU1
MGY0NDk5MmQ5ZTYwNDMxZTdkMjNmZGZiMzlkMWQwZTkzYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRBcmd1bWVudHMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0K
LVdvcmtsZXRDb25zb2xlQ2xpZW50OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdv
cmtsZXRHbG9iYWxTY29wZSkKLXsKLX0KLQotV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0
Q29uc29sZUNsaWVudCgpID0gZGVmYXVsdDsKLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6
bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+JiYgYXJndW1lbnRzKQotewotICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKLSAgICBhcmd1
bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBt
ZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1l
bnRzKSwgZXhlYyk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7Ci19Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OmNvdW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRp
bWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIFJlZjxTY3JpcHRBcmd1
bWVudHM+JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVD
bGllbnQ6OnByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQot
dm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRha2VI
ZWFwU25hcHNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6
cmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0K
LXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVuZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYpIHsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTJiYjQ5YTVkYWZiOGFmM2MzY2Q5OTY3ZjZmMGJhMWRjM2I1NTNhOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQ2FsbEZyYW1lOwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50IGZpbmFs
IDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2xldENvbnNvbGVDbGllbnQoV29ya2xldEds
b2JhbFNjb3BlJik7Ci0gICAgdmlydHVhbCB+V29ya2xldENvbnNvbGVDbGllbnQoKTsKLQotcHJp
dmF0ZToKLSAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNz
YWdlTGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgY291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgY291bnRSZXNldChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBwcm9maWxl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2
b2lkIHByb2ZpbGVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUp
IGZpbmFsOwotICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkgZmluYWw7Ci0gICAgdm9pZCB0aW1lKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVMb2coSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCB0aW1lRW5kKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVTdGFtcChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZEVuZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsK
LSAgICB2b2lkIHNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6
OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0KLSAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIG1f
d29ya2xldEdsb2JhbFNjb3BlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2IzYjQy
MTBmNzRiNmQ2YjZhMjYzY2VlOWJlYzA0MWM3NjQyNzk4OS4uMGRiNTE5NWJhOWZlNGRiYjZlNWVk
MDJiODZlNjBjZDJmMmFmZThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCkBAIC01MCw3ICs1MCw2IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwogCiBXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmts
ZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRocmVhZCwgY29uc3QgV29ya2xl
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3RocmVhZCgmdGhyZWFkKQotICAgICwg
bV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCiAgICAg
LCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAgICAgLCBtX3Vy
bChwYXJhbWV0ZXJzLndpbmRvd1VSTCkKICAgICAsIG1fanNSdW50aW1lRmxhZ3MocGFyYW1ldGVy
cy5qc1J1bnRpbWVGbGFncykKQEAgLTYzLDggKzYyLDggQEAgV29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQsIGNvbnN0IFdv
cmsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCi0g
ICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKLSAgICAsIG1fc2NyaXB0KG1h
a2VVbmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KFdURk1vdmUodm0pLCB0aGlzKSkKKyAg
ICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUodm0pKQorICAgICwgbV9kb2N1
bWVudChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAgICAgLCBtX3VybChjb2RlLnVybCgpKQogICAgICwgbV9q
c1J1bnRpbWVGbGFncyhkb2N1bWVudC5zZXR0aW5ncygpLmphdmFTY3JpcHRSdW50aW1lRmxhZ3Mo
KSkKQEAgLTgxLDcgKzgwLDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwgU2MKIAogV29ya2xldEds
b2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKIHsKLSAgICBBU1NFUlQoIW1fc2NyaXB0
KTsKKyAgICBBU1NFUlQoIXNjcmlwdCgpKTsKICAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsK
ICAgICBhdXRvIHJlbW92ZVJlc3VsdCA9IGFsbFdvcmtsZXRHbG9iYWxTY29wZXNTZXQoKS5yZW1v
dmUodGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVSZXN1bHQsIHJlbW92ZVJlc3VsdCk7
CkBAIC04OSw3ICs4OCw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29w
ZSgpCiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQog
ewotICAgIGlmICghbV9zY3JpcHQpCisgICAgaWYgKCFzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChtX2RlZmF1bHRUYXNrR3JvdXApCiAgICAgICAgIG1fZGVmYXVsdFRhc2tHcm91
cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwpAQCAtOTgsOCArOTcsOCBAQCB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKICAgICBpZiAobV9ldmVudExv
b3ApCiAgICAgICAgIG1fZXZlbnRMb29wLT5jbGVhck1pY3JvdGFza1F1ZXVlKCk7CiAgICAgcmVt
b3ZlUmVqZWN0ZWRQcm9taXNlVHJhY2tlcigpOwotICAgIG1fc2NyaXB0LT52bSgpLm5vdGlmeU5l
ZWRUZXJtaW5hdGlvbigpOwotICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKKyAgICBzY3JpcHQoKS0+
dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKKyAgICBjbGVhclNjcmlwdCgpOwogfQogCiBh
dXRvIFdvcmtsZXRHbG9iYWxTY29wZTo6YWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpIC0+IFdv
cmtsZXRHbG9iYWxTY29wZXNTZXQmCkBAIC0xMjksMjIgKzEyOCwyMiBAQCBTdHJpbmcgV29ya2xl
dEdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQogewogICAgIGlmIChtX2NvZGUpCi0gICAgICAgIG1f
c2NyaXB0LT5ldmFsdWF0ZSgqbV9jb2RlKTsKKyAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKCpt
X2NvZGUpOwogfQogCiBib29sIFdvcmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3NjcmlwdCB8fCBtX3NjcmlwdC0+aXNFeGVj
dXRpb25Gb3JiaWRkZW4oKTsKKyAgICByZXR1cm4gIXNjcmlwdCgpIHx8IHNjcmlwdCgpLT5pc0V4
ZWN1dGlvbkZvcmJpZGRlbigpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHQtPmRpc2Fi
bGVFdmFsKGVycm9yTWVzc2FnZSk7CisgICAgc2NyaXB0KCktPmRpc2FibGVFdmFsKGVycm9yTWVz
c2FnZSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHko
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHQtPmRpc2FibGVXZWJB
c3NlbWJseShlcnJvck1lc3NhZ2UpOworICAgIHNjcmlwdCgpLT5kaXNhYmxlV2ViQXNzZW1ibHko
ZXJyb3JNZXNzYWdlKTsKIH0KIAogVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCkgY29uc3QKQEAgLTIzNCw5ICsyMzMsOSBAQCB2
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ldmFsdWF0ZWRNb2R1bGVzLmFkZChtb2R1bGVVUkwpOwogICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0
aW9uOwotICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3Njcmlw
dExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlvbik7CisgICAg
ICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9hZGVyLT5z
Y3JpcHQoKSwgV1RGTW92ZShtb2R1bGVVUkwpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgICAgICAgIG1fc2NyaXB0LT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsK
KyAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKICAgICB9CiAK
ICAgICBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFdURk1vdmUoY29tcGxldGVkSm9iKSwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
ZjM5MTZkYzE2NjRkZmY3NWFjYjU5NDhmODQ0MGVjZTAxODBlZDk1ZS4uNTM1ZTM2ZWUzYmIwZTAw
OGJhMzJkZmU3Nzk3NDA2MTJiMGJkY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCi0j
aW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtODYsOCArODYs
NiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OmRlcmVmOwogCi0gICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGZp
bmFsIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9Ci0gICAgdm9pZCBjbGVhclNjcmlwdCgpIHsg
bV9zY3JpcHQgPSBudWxscHRyOyB9CiAgICAgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJP
cldvcmtsZXRUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQog
CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4mJikgZmluYWw7CkBAIC0xNzAsOCArMTY4LDYgQEAgcHJpdmF0ZToKICAg
ICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmts
ZXRUaHJlYWQ+IG1fdGhyZWFkOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyPiBtX3NjcmlwdDsKLQogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmln
aW47CiAKICAgICBSZWZQdHI8V29ya2VyRXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJjMTU0MWMxNTgwMjNiYjZmYWE1ZTc1MzIyNmY2
MWM3ZWZmOGM0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0KLSNpbmNsdWRlICJKU0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNFdmVudFRh
cmdldC5oIgotI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAiSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSAiV29ya2xldENvbnNvbGVDbGllbnQu
aCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBl
cnMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmdJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Ci0KLVdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cihSZWY8Vk0+JiYgdm0sIFdvcmtsZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2JhbFNjb3BlKQot
ICAgIDogbV92bShXVEZNb3ZlKHZtKSkKLSAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmts
ZXRHbG9iYWxTY29wZSkKLSAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkK
LXsKLSAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhh
dCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24g
cGVybWFuZW50bHkuCi0gICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdl
dCgpKTsKLX0KLQotV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyKFdvcmtsZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDogV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIoVk06OmNyZWF0ZSgpLCB3b3JrbGV0R2xvYmFsU2NvcGUpCi17Ci19
Ci0KLVdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKQot
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgIGZvcmJpZEV4ZWN1dGlvbigpOwot
Ci0gICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikgewotICAgICAgICBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKLSAgICAgICAg
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwot
ICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRyOwotICAgIH0KLSAgICBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKLSAgICBtX3ZtID0gbnVsbHB0cjsKLX0KLQotdm9p
ZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKLXsKLSAgICBBU1NF
UlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX2V4ZWN1
dGlvbkZvcmJpZGRlbiA9IHRydWU7Ci19Ci0KLWJvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV93b3JrbGV0R2xv
YmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9leGVjdXRpb25Gb3Ji
aWRkZW47Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRl
bigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKLQotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Ci19Ci0KLXZvaWQgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxv
Y2sgeyB2bSgpIH07Ci0KLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldFdlYkFz
c2VtYmx5RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBl
bmFtZSBHbG9iYWxTY29wZT4KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3Jp
cHRXaXRoU3ViY2xhc3MoKQotewotICAgIEFTU0VSVCghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OwotCi0gICAgLy8gRXhwbGlj
aXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNv
bGxlY3RlZAotICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNl
IHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5Ci0gICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBt
YXJrIGl0cyBvd24gcHJvdG90eXBlLikKLSAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0s
IG51bGxwdHIsIGpzTnVsbCgpKTsKLSAgICBhdXRvKiBjb250ZXh0UHJvdG90eXBlID0gSlNHbG9i
YWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBl
U3RydWN0dXJlKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZSk7Ci0gICAgYXV0
byogcHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxw
dHIsIGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7Ci0gICAgYXV0byogcHJveHkg
PSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsKLQotICAgIG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92
bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxHbG9iYWxTY29wZSY+KCptX3dvcmtsZXRHbG9iYWxT
Y29wZSksIHByb3h5KSk7Ci0gICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFs
T2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcik7Ci0gICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJl
KCptX3ZtKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsK
LSAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3Qo
Km1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgYXV0byogZ2xv
YmFsU2NvcGVQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgIGdsb2JhbFNjb3BlUHJvdG90eXBl
LT5kaWRCZWNvbWVQcm90b3R5cGUoKTsKLSAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUo
Km1fdm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgZ2xvYmFsU2NvcGVQ
cm90b3R5cGUpOwotCi0gICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xv
YmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotCi0g
ICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICBBU1NFUlQoYXNPYmplY3QobV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFs
T2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKLQotICAgIG1fY29uc29s
ZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9i
YWxTY29wZSk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xp
ZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQoKQotewotICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQot
ICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBpZiAo
aXM8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KG1fd29ya2xldEdsb2JhbFNjb3BlKSkgewotICAg
ICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90
b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
PigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKQotICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4obV93b3JrbGV0R2xvYmFs
U2NvcGUpKSB7Ci0gICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNBdWRpb1dvcmtsZXRH
bG9iYWxTY29wZVByb3RvdHlwZSwgSlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSwgQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGU+KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTdHJpbmcqIHJl
dHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4o
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2Vw
dGlvbjsKLSAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24sIHJldHVybmVkRXhjZXB0
aW9uTWVzc2FnZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSgpKTsKLSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2xvYmFsT2JqZWN0KCksIGV4Y2VwdGlvbik7Ci0gICAgfQotfQotCi0vLyBJbXBv
cnRhbnQ6IFRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBtdXN0IHZlcmlmeSB0aGF0IHRoZSBy
ZXR1cm5lZCBleGNlcHRpb24gbWVzc2FnZSBkb2VzIG5vdCB2aW9sYXRlIENPUlMgaWYgaXQgaXMg
Z29pbmcgdG8gYmUgcGFzc2VkIGJhY2sgdG8gSlMuCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhj
ZXB0aW9uTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0KLSAgICBhdXRvJiBnbG9i
YWxPYmplY3QgPSAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKTsK
LSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayB7
IHZtIH07Ci0KLSAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCks
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7Ci0KLSAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24gJiYgcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlKSB7Ci0gICAgICAgIC8vIFRoaXMgRklYTUUgaXMgZnJvbSBXb3JrZXJTY3JpcHRDb250
cm9sbGVyLgotICAgICAgICAvLyBGSVhNRTogSXQncyBub3QgZ3JlYXQgdGhhdCB0aGlzIGNhbiBy
dW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5nLWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4Y2VwdGlv
bi4KLSAgICAgICAgLy8gRG8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBw
cm9wZXJseSwgaWYgaXQsIHNheSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPwotICAgICAgICAq
cmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9X
VEZTdHJpbmcoJmdsb2JhbE9iamVjdCk7Ci0gICAgfQotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKLXsKLSAg
ICBhdXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LT5nbG9iYWxPYmplY3QoKTsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJvd0V4
Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgZXhjZXB0aW9uKTsKLX0KLQotdm9p
ZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nlc3MoKQotewotICAgIG1f
dm0tPmhlYXAucmVsZWFzZUFjY2VzcygpOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjphY3F1aXJlSGVhcEFjY2VzcygpCi17Ci0gICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNz
KCk7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZp
Y2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2spCi17Ci0gICAgYXV0byBwcm9jZXNzVGltZXIgPSBbJl0gKEpTUnVuTG9vcFRpbWVyKiB0
aW1lcikgewotICAgICAgICBpZiAoIXRpbWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB0aW1lci0+YWRkVGltZXJTZXROb3RpZmljYXRpb24oY2FsbGJhY2spOwotICAgIH07Ci0KLSAg
ICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBw
cm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9j
ZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwotfQotCi12b2lkIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVu
TG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrKQotewotICAgIGF1
dG8gcHJvY2Vzc1RpbWVyID0gWyZdIChKU1J1bkxvb3BUaW1lciogdGltZXIpIHsKLSAgICAgICAg
aWYgKCF0aW1lcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGltZXItPnJlbW92ZVRp
bWVyU2V0Tm90aWZpY2F0aW9uKGNhbGxiYWNrKTsKLSAgICB9OwotCi0gICAgcHJvY2Vzc1RpbWVy
KG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1f
dm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0t
PmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKLX0KLQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCi17Ci0gICAgaWYgKG1faXNUZXJt
aW5hdGluZ0V4ZWN1dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgewotICAgICAgICAvLyBU
aGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmllciB0byBlbnN1cmUgdGhhdCBvbmNlCi0g
ICAgICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlv
bigpIHdpbGwKLSAgICAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0IHRoYXQgbGV4aWNhbEdsb2Jh
bE9iamVjdCB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fc2NoZWR1bGVkVGVybWluYXRpb25Mb2NrKTsKLSAgICAgICAgbV9p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uID0gdHJ1ZTsKLSAgICB9Ci0gICAgbV92bS0+bm90aWZ5TmVl
ZFRlcm1pbmF0aW9uKCk7Ci19Ci0KLWJvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzVGVy
bWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAotewotICAgIC8vIFNlZSBjb21tZW50cyBpbiBzY2hl
ZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uIHJlZ2FyZGluZyBtdXRleCB1c2FnZS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc2NoZWR1bGVkVGVybWluYXRpb25Mb2NrKTsKLSAgICByZXR1
cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkKLXsKLSAgICByZXR1
cm4gd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzOGNhNjM4NjYxY2E4ZjRiMzE4
MjIzZDdkZWQ5MTcxMWYwMDUyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9E
ZWJ1Z2dlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgotCi1u
YW1lc3BhY2UgSlNDIHsKLWNsYXNzIFZNOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOwotY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLWNsYXNz
IFdvcmtsZXRDb25zb2xlQ2xpZW50OwotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOwotY2xhc3Mg
V29ya2xldENvbnNvbGVDbGllbnQ7Ci0KLS8vIEZJWE1FOiBXZSBzaG91bGQgc2hhcmUgbW9yZSBj
b2RlIHdpdGggV29ya2VyU2NyaXB0Q29udHJvbGxlci4KLWNsYXNzIFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyIDogcHVibGljIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIoV29ya2xldEdsb2JhbFNjb3BlKik7Ci0gICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVm
PEpTQzo6Vk0+JiYsIFdvcmtsZXRHbG9iYWxTY29wZSopOwotICAgIH5Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcigpOwotCi0gICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIoKQotICAgIHsKLSAgICAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgICAg
IHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7Ci0gICAgfQotCi0gICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmluYWw7Ci0KLSAgICB2
b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwotICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBj
b25zdDsKLQotICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
OwotICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKLQotICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKSBmaW5hbDsKLSAgICB2b2lkIGFjcXVp
cmVIZWFwQWNjZXNzKCkgZmluYWw7Ci0KLSAgICB2b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9u
KEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwot
ICAgIHZvaWQgcmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6
VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykgZmluYWw7Ci0KLSAgICB2b2lkIHNjaGVkdWxlRXhl
Y3V0aW9uVGVybWluYXRpb24oKTsKLSAgICBib29sIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBj
b25zdCBmaW5hbDsKLQotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Ci0gICAgdm9pZCBl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBu
dWxscHRyKTsKLQotICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKik7Ci0KLSAg
ICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBp
bml0U2NyaXB0SWZOZWVkZWQoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIpCi0gICAgICAgICAgICBpbml0U2NyaXB0KCk7Ci0gICAgfQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNH
bG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xv
YmFsU2NvcGU+Ci0gICAgdm9pZCBpbml0U2NyaXB0V2l0aFN1YmNsYXNzKCk7Ci0KLSAgICBib29s
IG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8SlNDOjpWTT4gbV92
bTsKLSAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1fd29ya2xldEdsb2JhbFNjb3BlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwotICAg
IEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXI7Ci0gICAgbXV0YWJsZSBMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRpb25Mb2NrOwotICAg
IGJvb2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411928</attachid>
            <date>2020-10-20 15:20:38 -0700</date>
            <delta_ts>2020-10-20 17:00:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217980-20201020152037.patch</filename>
            <type>text/plain</type>
            <size>112432</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFiNWVmOTcwYzQxNjcw
MDZlYzRkMDM1MTFmN2VlZDdiNjY0N2M1Yi4uNzY0OGViY2FjMzE3OGM0M2E2MjJiNTNjMGQzMjdm
M2E0NTY1NmY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0xMC0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIgYW5kIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIGludG8gV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgTWVyZ2UgV29ya2VyU2NyaXB0Q29udHJvbGxlciBhbmQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXIgaW50byBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyCisgICAgICAgIHRv
IHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHdvcmtlcnMgYW5kIHdvcmtsZXRzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cHJveHkgY29uc3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp3
cmFwcGVkIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldHVwTmV3bHlDcmVhdGVk
U2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29y
a2VyQ29uc29sZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
Ojpjb3VudFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpX
b3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmRpc2Fi
bGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aW1w
b3J0U2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6On5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFj
aERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YWNx
dWlyZUhlYXBBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1
YmNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRJZk5lZWRl
ZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
Q29uc29sZUNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmts
ZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5X
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xl
dEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oOiBSZW1vdmVkLgorCiAyMDIwLTEwLTIwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRA
c29ueS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIGxhdGUgT2N0b2Jl
ciAyMDIwIGVkaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcAppbmRleCA4YWViN2VlZmQyMzQ2ODcyNTBiZWQ5MjU4
MTU4YzRmNzQzMDdmNTA2Li5hMDY4ZGNkMDQ0ZDBmYTMyNjcxNmVmZTA3N2JjOGNkM2Q4NDJmOGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Lmgi
CisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCIK
QEAgLTExNiw3ICsxMTcsNyBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVh
ZCgpCiAgICAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdChtYWluQ29udGV4dC5n
ZXQoKSk7CiAjZW5kaWYKIAotICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250
cm9sbGVyOworICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRy
b2xsZXI7CiAgICAgewogICAgICAgICBhdXRvIGxvY2sgPSBob2xkTG9jayhtX3RocmVhZENyZWF0
aW9uQW5kV29ya2xldEdsb2JhbFNjb3BlTG9jayk7CiAgICAgICAgIG1fd29ya2xldEdsb2JhbFNj
b3BlID0gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZSgqdGhpcywgbV9wYXJhbWV0ZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjgwM2U0YmJkMGNiYTU0ODVhMjhkZThmMWE4NGY2MjJiMWU0
OTgwMS4uMzJhMjEzMTM2YjNiYjRhMmRiMTgzOTg1NjcyZTcxMDU2MWE4ZjZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTYxMSw3ICs2MTEsNiBAQCBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0aW9u
cy5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCiBiaW5kaW5ncy9qcy9X
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKLWJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCiBicmlkZ2UvSWRlbnRp
ZmllclJlcC5jcHAKIGJyaWRnZS9OUF9qc29iamVjdC5jcHAKIGJyaWRnZS9jL0NSdW50aW1lT2Jq
ZWN0LmNwcApAQCAtMjU2MCw2ICsyNTU5LDggQEAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCiB3b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmNwcAogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKK3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCit3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCiB3b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAKIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjYwMCwxMCArMjYw
MSw4IEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogd29ya2xldHMvV29ya2xldC5jcHAKLXdvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAogd29ya2xldHMvV29ya2xldFBlbmRpbmdUYXNrcy5jcHAKLXdvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcAogeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKIHhtbC9E
T01QYXJzZXIuY3BwCiB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkYTUyZWFi
NDNjZTJjMWUzODM0ZjVmY2RmMDVmZDhiMGUzNmNmODYuLjM5NDY0NDk2ZjgzYzk3NjEyOTE4YWU4
ZWExNzRmMjc5ZjU5ZmI3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNDksNyArMTM0OSw2IEBACiAJCTRCNkU4NzY5MjE3
NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkU4NzY4MjE3NkQ2OTIwMDQyMEU1RSAvKiBD
U1NQYWludEltYWdlVmFsdWUuaCAqLzsgfTsKIAkJNEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8q
IFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCN0FFNDkzMjE3N0I1
NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9t
UGFpbnRJbWFnZS5oICovOyB9OwotCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xl
dENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCN0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5o
ICovOyB9OwogCQk0QkFFOTVCMTBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkFFOTVC
MDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEJBRkQwQ0IyMTkwRUJENjAwQzBB
QjY0IC8qIENTU1BhaW50U2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRkQwQ0EyMTkwRUJENjAwQzBBQjY0IC8qIENTU1BhaW50U2l6ZS5oICov
OyB9OwogCQk0QkFGRDBDRjIxOTBGOUI1MDBDMEFCNjQgLyogU3R5bGVQcm9wZXJ0eU1hcFJlYWRP
bmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkFG
RDBDRTIxOTBGOUI0MDBDMEFCNjQgLyogU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5LmggKi87IH07
CkBAIC0xMzYzLDcgKzEzNjIsNiBAQAogCQk0QkRBNDAwMTIxNTFCNkY1MDBGRDY2MDQgLyogQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyogQ1NTUmVnaXN0ZXJl
ZEN1c3RvbVByb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzFGMjE3RUM1NUYw
MDUyREZDRCAvKiBXb3JrbGV0LmggKi87IH07CiAJCTRCREVBMzI1MjE3RkUyRTQwMDUyREZDRCAv
KiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2Nv
cGUuaCAqLzsgfTsKLQkJNEJERUEzMjgyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJNEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMkIyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovOyB9
OwogCQk0RDNCMDBBQjIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFSZWNvcmRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQzQjAwQTkyMTVENjlBNzAw
NzZCOTgzIC8qIE1lZGlhUmVjb3JkZXIuaCAqLzsgfTsKIAkJNEQzQjAwQUYyMTVENkE2OTAwNzZC
OTgzIC8qIEJsb2JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEQzQjAwQUQyMTVENkE2OTAwNzZCOTgzIC8qIEJsb2JFdmVudC5oICovOyB9OwpA
QCAtNDg4NCw3ICs0ODgyLDYgQEAKIAkJRTE5QUMzRjUxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0
b0FsZ29yaXRobVNIQTUxMi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE5QUMzRUQxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUx
Mi5oICovOyB9OwogCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICov
OyB9OwogCQlFMUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5n
RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTFBNjQz
RjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUwMDc3
OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBREVDQkYwRTc2QUNGMTAwNEExQTVFIC8qIE1l
c3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUFERUNCRDBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNDRTBFNzZBRDhCMDA0
QTFBNUUgLyogTWVzc2FnZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5l
bC5oICovOyB9OwogCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVERDgw
RTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuaCAqLzsgfTsKQEAgLTc5NDAsOSArNzkz
Nyw5IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFF
OTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKLSAgICAgICAgNDRCRDJCMzYyNTI3Nzk3ODAwNTVEOTVBIC8qIEdsb2JhbEV2
ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiR2xvYmFsRXZlbnRIYW5kbGVycytTZWxl
Y3Rpb24uaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAx
QTAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDRCMzhCRjkyNTM2OUE4ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5
NUEgLyogR2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVu
dEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NEM5OTE4MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNj
cm9sbGJhclRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9s
bGJhclRoZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTlEMEYz
RDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI0MSw4ICs4
MjM4LDYgQEAKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVwbGFjZUNGLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5
IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRJbWFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNFMDBDNTk5NTkg
LyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21QYWludElt
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI3RjlDNTEyMTgzQjVFNTAw
MUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRD
b25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCN0Y5QzU0MjE4
M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQ
YWludFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRTaXplLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCQUZEMENEMjE5MEVCRTkwMEMwQUI2NCAvKiBDU1NQYWludFNpemUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IENTU1BhaW50U2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MjcxLDggKzgyNjYsNiBAQAogCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEJERUEzMjkyMTgwMDQwQzAw
NTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJERUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEJERUEzMkIyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2MDUsNiArMTA1OTgsNyBA
QAogCQk4MzE5OEZCQjI0QTE2MEMxMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlQXVkaW9Db250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxOThGQkQyNEExNjBDMTAwNDIwQjA1IC8q
IEJhc2VBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJhc2VBdWRpb0Nv
bnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzE5OEZCRTI0QTE2MEMx
MDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYXNlQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzMUEzRUE4MjUzRjc4QzIwMDY3ODA0RiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUI2MTZGMjQ5
OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQjYxNzIyNDk5
QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA2NzgsNiArMTA2NzIsNyBAQAogCQk4MzU2NTdDNjFFQ0FCMEU4
MDBDREU3MkQgLyogSlNET01NYXRyaXhJbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NTWF0cml4SW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNTZGOTdDMjREOUY4MDgwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJLaXRBdWRpb0xpc3RlbmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM1NkY5N0UyNEQ5RjgwOTAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4MzVBQTM4ODI1M0Y1NUJCMDA3NDY1NTQgLyogV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODM1QjY4MEUxRjU0OEJERTAwNzFGN0Y2IC8qIEpTRmlsZVN5c3RlbUVudHJ5Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3Rl
bUVudHJ5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzQx
RjVGMUZCODAwMTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnQrRW50cmllc0FQSS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gIkhUTUxJbnB1dEVsZW1lbnQrRW50cmllc0FQSS5pZGwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzVEMkQ3NTFGNUYxRkI4MDAxNDFERUQgLyogSFRN
TElucHV0RWxlbWVudEVudHJpZXNBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTElucHV0RWxlbWVudEVudHJpZXNBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NzU2LDggKzE1NzUxLDYgQEAKIAkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8q
IFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFBMzE2MkMxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQTY0M0YxMEVDMDk3MjUw
MDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUE4
MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCNzE0RTlF
MzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQUIxRUJEMTRFOUUzQTgwMDQ0OUUxMyAvKiBGaWxlUmVhZGVyU3luYy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRmlsZVJlYWRlclN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg4NzgsNyArMTg4NzEsOSBAQAogCQkJCTJFNDM0NjNEMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgKi8sCiAJCQkJMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggKi8sCiAJCQkJMkU0MzQ2M0YwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi8sCisJCQkJODMxQTNFQTgyNTNGNzhDMjAwNjc4
MDRGIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk4M0Q2QUFFNDI1
MjRFRTEzMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKKwkJCQk4
MzVBQTM4ODI1M0Y1NUJCMDA3NDY1NTQgLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAgKi8sCiAJCQkJODM5QTA5NUIyNTI0RjM3NjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaCAqLywKIAkJCQk4M0U4MjhCMjI1Mjc5NENEMDAyN0UwRjcgLyog
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmggKi8sCiAJCQkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRF
IC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8sCkBAIC0xOTg5NCw4ICsxOTg4OSw2IEBACiAJ
CQkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmtsZXQuY3BwICovLAogCQkJCTRCREVB
MzFGMjE3RUM1NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggKi8sCiAJCQkJNEJERUEzMUMyMTdFQkNG
NTAwNTJERkNEIC8qIFdvcmtsZXQuaWRsICovLAotCQkJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJB
MCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8sCi0JCQkJNEI3RjlDNTEyMTgzQjVFNTAw
MUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8sCiAJCQkJNEJERUEzMjYyMTdGRTJG
QTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCiAJCQkJNEJERUEzMjQyMTdG
RTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovLAogCQkJCTRCREVBMzJBMjE4
MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovLApAQCAtMTk5MDUsOCAr
MTk4OTgsNiBAQAogCQkJCTgzNEE2QTM4MjUyNjg0NDEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1l
dGVycy5oICovLAogCQkJCTgzM0JEODE1MjUyNEQ0RTIwMDZFNzJCMyAvKiBXb3JrbGV0UGVuZGlu
Z1Rhc2tzLmNwcCAqLywKIAkJCQk4MzNCRDgxMzI1MjRENEUyMDA2RTcyQjMgLyogV29ya2xldFBl
bmRpbmdUYXNrcy5oICovLAotCQkJCTRCREVBMzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCi0JCQkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdvcmtsZXRz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2Njc4LDggKzI2NjY5LDYgQEAKIAkJ
CQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmggKi8sCiAJCQkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAq
LywKIAkJCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLywKLQkJ
CQlFMUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAg
Ki8sCi0JCQkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMzQ5NDcsNyArMzQ5MzYsNiBAQAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTMwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Qjgx
Q0NGMUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q2QjM0OTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2Vy
U2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUE3NjgwNDBGRTcxMjY0MDBBQjlD
OEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQz
NDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0OTU2LDEzICszNDk0NCwxMSBAQAogCQkJCUE1NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBX
b3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZF
MUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEI3
RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgxODI1MjRENEY1MDA2RTcyQjMgLyogV29ya2xl
dEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQUNEMDEzMjUyMjlFMTAw
MDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QTZBM0Ey
NTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNrcy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNEJERUEzMjgyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEg
LyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDg2NzRmMmRmYjgxNmQ2ZWE0
Y2IwMzc1ZmM2Y2IyYTU0OTNiM2U3NmIuLjE1ZTE2NDBlY2Y1ZmIzY2E3OWUzYzU5Y2UzMWI0YTVm
NmYyZjNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTI5NCw2ICsyOTQsMTMgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6
cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG8K
ICAgICByZXBvcnRFeGNlcHRpb24oanNHbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7CiB9CiAKK3Zv
aWQgSlNET01HbG9iYWxPYmplY3Q6OmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKQoreworICAgIGF1
dG8gZ3VhcmRlZE9iamVjdHNDb3B5ID0gbV9ndWFyZGVkT2JqZWN0czsKKyAgICBmb3IgKGF1dG8m
IGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0c0NvcHkpCisgICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7
Cit9CisKIEpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewogICAgIGNs
YXNzIEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IgewpAQCAtMzQxLDExICszNDgsOCBAQCBK
U0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBET01XcmFwcAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCiAg
ICAgICAgIHJldHVybiB0b0pTRE9NV2luZG93KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5m
cmFtZSgpLCB3b3JsZCk7CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
KQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnNj
cmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKLQotICAgIGlmIChpczxXb3JrbGV0
R2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEds
b2JhbFNjb3BlPihjb250ZXh0KS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigp
OworICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCku
c2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaAppbmRleCA3Mzg2N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4
NDlmMGNlZTYyLi43MDYxMzcwNDYwMzZjZTJmNDhhNmQ3M2EzODE5NDA3YjE4ZTI5ODU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTU1
LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
KSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKKwogcHVibGljOgogICAgIExvY2smIGdjTG9jaygpIHsgcmV0
dXJuIG1fZ2NMb2NrOyB9CiAKQEAgLTgxLDYgKzgyLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkV4Y2VwdGlvbiopOwogCisgICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7
CisKKyAgICBKU0M6OkpTUHJveHkmIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJl
dHVybiAqbV9wcm94eS5nZXQoKTsgfQorCiBwdWJsaWM6CiAgICAgfkpTRE9NR2xvYmFsT2JqZWN0
KCk7CiAKQEAgLTEwNSw2ICsxMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmPERPTVdyYXBwZXJX
b3JsZD4gbV93b3JsZDsKICAgICB1aW50OF90IG1fd29ybGRJc05vcm1hbDsKICAgICBMb2NrIG1f
Z2NMb2NrOworICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNQcm94eT4gbV9wcm94eTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGFkZEJ1aWx0aW5HbG9iYWxzKEpTQzo6Vk0mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDU3ZDQ1YzNk
ZTk4YmU0N2JlMTBmYTRhNjkzZTgyZjc1NDEwNzVmMDUuLmIwOTQ2ZTI1YTlhMGRmYWJlOWI5MjM4
MGJhYjNkNzk0YWU4YWJmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcApAQCAtOTcsOCArOTcsOCBAQCBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9N
V2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8RE9NV2luZG93
PgogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgcHJveHktPndvcmxkKCks
ICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV93aW5kb3dDbG9zZVdhdGNocG9p
bnRzKFdhdGNocG9pbnRTZXQ6OmNyZWF0ZSgod2luZG93ICYmIHdpbmRvdy0+ZnJhbWUoKSkgPyBJ
c1dhdGNoZWQgOiBJc0ludmFsaWRhdGVkKSkKICAgICAsIG1fd3JhcHBlZChXVEZNb3ZlKHdpbmRv
dykpCi0gICAgLCBtX3Byb3h5KHByb3h5KQogeworICAgIG1fcHJveHkuc2V0KHZtLCB0aGlzLCBw
cm94eSk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTV2luZG93UHJveHkqIHByb3h5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSlNET01XaW5k
b3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2luZG93UHJveHkqIHByb3h5KQogCiAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5kb2N1bWVudFB1YmxpY05hbWUoKSwganNOdWxsKCks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy53aW5kb3dQdWJs
aWNOYW1lKCksIG1fcHJveHksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0
aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCksIG1fcHJveHkuZ2V0KCksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICB9Owog
CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0
YXRpY0dsb2JhbHMpKTsKQEAgLTI1MCw5ICsyNTAsOSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6
d2lsbFJlbW92ZUZyb21XaW5kb3dQcm94eSgpCiAgICAgc2V0Q3VycmVudEV2ZW50KDApOwogfQog
Ci1KU1dpbmRvd1Byb3h5KiBKU0RPTVdpbmRvd0Jhc2U6OnByb3h5KCkgY29uc3QKK0pTV2luZG93
UHJveHkmIEpTRE9NV2luZG93QmFzZTo6cHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3By
b3h5OworICAgIHJldHVybiAqanNDYXN0PEpTV2luZG93UHJveHkqPigmSlNET01HbG9iYWxPYmpl
Y3Q6OnByb3h5KCkpOwogfQogCiBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIERPTVdpbmRvdyYgZG9tV2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCAxMDUwM2ZlMzljODlkZTYzMThlM2Y3Mjg3
YmFjNDVkNzc5NTIyY2RiLi40NTZmYzE0NjU1NmUxMjQyY2Y1MDY2YjcxMDJlYmFjNTlhODFhYWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAt
ODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogCi0gICAgSlNXaW5kb3dQcm94eSogcHJveHkoKSBjb25zdDsKKyAg
ICBKU1dpbmRvd1Byb3h5JiBwcm94eSgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgZmlyZUZy
YW1lQ2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KERPTVdpbmRvdyopOwogCkBAIC0xMDgsNyAr
MTA4LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFw
cGVkOwotICAgIEpTV2luZG93UHJveHkqIG1fcHJveHk7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgRE9NV2luZG93Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHAKaW5kZXggM2QzMTZmNzk2MTFiNDA0MmViYjkzN2U2MTQ1NGZmNTk0YmYxYWE2Zi4uYzM3
Yzc0NTE0YWU2OGJkNTllZGQxYWRjMDNmNjUwY2Q2OGUyMjg5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAt
ODcsMTMgKzg3LDYgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOwogfQogCi12b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRP
YmplY3RzKCkKLXsKLSAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsK
LSAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKLSAgICAgICAgZ3VhcmRl
ZC0+Y2xlYXIoKTsKLX0KLQogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlKj4oY2VsbCk7CkBAIC0xNTcsMTIgKzE1MCwxMiBAQCBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xv
YgogCiBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0g
d29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAgYXV0byogc2NyaXB0ID0gd29ya2VyR2xv
YmFsU2NvcGUuc2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBqc051
bGwoKTsKLSAgICBKU1dvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBz
Y3JpcHQtPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7
Ci0gICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOworICAgIHJldHVybiAmY29udGV4
dFdyYXBwZXItPnByb3h5KCk7CiB9CiAKIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
aAppbmRleCBkNDQ5ODcxMjk0NmFlNWY2ZjAxODc4Njg0ZTQ2OTk3YjFmZWMxN2EwLi4wZjQ3ZmE2
OTJjNmQwYmNiMDNjNjQ1ZjY4NDkyYjQ2NjZjNWI3NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTU5LDcgKzU5
LDYgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIFdvcmtlckdsb2JhbFNjb3Bl
JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQotICAgIEpTQzo6SlNQcm94
eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7
IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQpAQCAtNzYsOCArNzUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6U2Ny
aXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpKU09iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9F
dmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAK
LSAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKLQogcHJvdGVjdGVkOgogICAgIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFJlZlB0cjxX
b3JrZXJHbG9iYWxTY29wZT4mJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwg
SlNDOjpKU1Byb3h5Kik7CkBAIC04Niw3ICs4Myw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd3JhcHBlZDsKLSAgICBKU0M6OldyaXRl
QmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJveHk7CiB9OwogCiAvLyBSZXR1cm5zIGEgSlNXb3Jr
ZXJHbG9iYWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggMTg3MmI0MTRlZDkz
YmQ0ZjYwOGVjOThlN2ZlN2ZkNGZhMjgyNjA1MS4uYzM2NWE0ODM5NGQwMTUyMjVkZTI2ZGFhNjBk
M2MxMTI1NzI1YzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KQEAgLTc3LDEzICs3Nyw2
IEBAIHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTUHJveHkqIHByb3h5KQogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9CiAK
LXZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRPYmplY3RzKCkK
LXsKLSAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsKLSAgICBmb3Ig
KGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKLSAgICAgICAgZ3VhcmRlZC0+Y2xlYXIo
KTsKLX0KLQogdm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpOwpAQCAtMTM4LDEwICsx
MzEsMTAgQEAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiwgV29ya2xldEdsb2JhbFNjb3Bl
JiB3b3JrbGV0R2xvYmFsU2NvcGUpCiB7CiAgICAgaWYgKCF3b3JrbGV0R2xvYmFsU2NvcGUuc2Ny
aXB0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGF1dG8qIGNvbnRleHRX
cmFwcGVyID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyKCk7CisgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3b3JrbGV0R2xvYmFsU2NvcGUu
c2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigpOwogICAgIGlmICghY29udGV4dFdyYXBwZXIp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBjb250ZXh0V3JhcHBl
ci0+cHJveHkoKTsKKyAgICByZXR1cm4gJmNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwogfQogCiBK
U1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFs
dWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5oCmluZGV4IDQ0ZTJkZjQyYjZkNWE4MTliZmU2NTZjN2EwNjkxYTVj
YTVjYzM1Y2EuLmJjNTNmY2FiZTQzZGFhZmY3MjU5YmY2YmZiNzkwZjc5M2E5YWU4ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKICAg
ICBXb3JrbGV0R2xvYmFsU2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVk
OyB9Ci0gICAgSlNDOjpKU1Byb3h5KiBwcm94eSgpIGNvbnN0IHsgQVNTRVJUKG1fcHJveHkpOyBy
ZXR1cm4gbV9wcm94eS5nZXQoKTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC02NCw4ICs2Myw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3Rh
dHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGljIHZv
aWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpT
Qzo6TWljcm90YXNrPiYmKTsKIAotICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOwot
CiBwcm90ZWN0ZWQ6CiAgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBKU0M6
OlN0cnVjdHVyZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOwogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOwpAQCAtNzQsNyArNzEsNiBAQCBw
cm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4gbV93
cmFwcGVkOwotICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNQcm94eT4gbV9wcm94eTsKIH07
CiAKIC8vIFJldHVybnMgYSBKU1dvcmtsZXRHbG9iYWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggZTg3YTZl
NTRjN2EwMjE4ZDczYzI0MWU2NDJjYTg0NmE2ZDY3NTg5ZS4uYTBjNTY3NzQ0NWZhNWU4Y2M2YzYx
ZThhYjQ2MmM0OTM1ZThmMTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rp
b246OmV4ZWN1dGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9mdW5jdGlvbikKLSAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KHdpbmRvdywg
d2luZG93LT5wcm94eSgpLCBkb2N1bWVudCk7CisgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29u
dGV4dCh3aW5kb3csICZ3aW5kb3ctPnByb3h5KCksIGRvY3VtZW50KTsKICAgICBlbHNlCiAgICAg
ICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KG1faXNvbGF0ZWRXb3JsZCwgbV9jb2RlKTsKIH0KQEAgLTE0OCwxMCArMTQ4LDEwIEBAIHZvaWQg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSkKICAgICAvLyBJbiBhIFdvcmtlciwgdGhlIGV4ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhh
cHBlbiBvbiBhIHdvcmtlciB0aHJlYWQuCiAgICAgQVNTRVJUKHdvcmtlckdsb2JhbFNjb3BlLnRo
cmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0
KCk7CisgICAgYXV0byogc2NyaXB0Q29udHJvbGxlciA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlw
dCgpOwogCiAgICAgaWYgKG1fZnVuY3Rpb24pIHsKLSAgICAgICAgSlNXb3JrZXJHbG9iYWxTY29w
ZSogY29udGV4dFdyYXBwZXIgPSBzY3JpcHRDb250cm9sbGVyLT53b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIoKTsKKyAgICAgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3JpcHRDb250cm9sbGVy
LT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0
KGNvbnRleHRXcmFwcGVyLCBjb250ZXh0V3JhcHBlciwgd29ya2VyR2xvYmFsU2NvcGUpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgY29kZShtX2NvZGUsIFVSTCh3b3Jr
ZXJHbG9iYWxTY29wZS51cmwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCmluZGV4IGI4MTMzYmRhN2Y4MzRiYmNhNDA2YjAxZDA0MDBkMzllZjE2ODY4YTAu
LmI3YWYwYmQyY2M4NzZiYmEzOGFlNDlhMWY3ODEyYTQ3MDBlMmZlOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTQwLDkgKzQwLDggQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Ryb25nSW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjQ2ZDhhN2VkOTFiOWYzODY5MzgwYTI3NWMwOTcwNmRhNzM0MjFhZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgiCi0KLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIkpTRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgotI2luY2x1ZGUgIldvcmtlckNvbnNvbGVDbGllbnQuaCIKLSNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRp
b24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2
aXR5Q2FsbGJhY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Ryb25nSW5saW5lcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3Bh
Y2UgSlNDOwotCi1Xb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
KFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKLSAgICA6IG1fdm0oVk06OmNy
ZWF0ZSgpKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKLSAg
ICAsIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQotewotICAgIG1fdm0tPmhlYXAu
YWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdlIGhhdmUgZ29vZCBkaXNj
aXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJtYW5lbnRseS4KLSAgICBK
U1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkpOwotfQotCi1Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigpCi17Ci0gICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKSB7
Ci0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5jbGVhckRPTUd1YXJkZWRPYmpl
Y3RzKCk7Ci0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xp
ZW50KG51bGxwdHIpOwotICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRyOwotICAgIH0K
LSAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1fdm0gPSBudWxs
cHRyOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQotewot
ICAgIEFTU0VSVCghbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotCi0gICAgSlNMb2NrSG9s
ZGVyIGxvY2sobV92bS5nZXQoKSk7Ci0KLSAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGds
b2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCi0gICAgLy8gd2hl
biB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3Qg
aXMgZnVsbHkKLSAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5
cGUuKQotICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5pc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKCkpIHsKLSAgICAgICAgU3RydWN0dXJlKiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBl
U3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSk7Ci0gICAgICAgIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUqIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGUoKm1fdm0sIG51bGxw
dHIsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICBKU0M6OkVu
c3VyZVN0aWxsQWxpdmVTY29wZSBwcm90ZWN0ZWREZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGUpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVs
bHB0ciwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSk7Ci0gICAgICAgIGF1dG8qIHByb3h5U3Ry
dWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwo
KSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOwotICAgICAgICBhdXRvKiBwcm94eSA9IEpTUHJv
eHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOwotCi0gICAgICAgIG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLnNldCgqbV92bSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6
Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlJj4oKm1fd29ya2VyR2xvYmFsU2NvcGUpLCBwcm94eSkpOwotICAgICAgICBkZWRpY2F0
ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAgICBB
U1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICAgICAgZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCpt
X3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIGF1dG8qIHdv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlID0gSlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBl
KCptX3ZtLCAqbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgICAgICB3b3Jr
ZXJHbG9iYWxTY29wZVByb3RvdHlwZS0+ZGlkQmVjb21lUHJvdG90eXBlKCk7Ci0gICAgICAgIGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdp
dGhvdXRUcmFuc2l0aW9uKCptX3ZtLCB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSk7Ci0KLSAg
ICAgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCkpOwotICAgICAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIH0gZWxzZSBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+aXNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSk7Ci0gICAgICAgIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKiBjb250ZXh0UHJvdG90eXBlID0gSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgY29udGV4
dFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgICAgIEpTQzo6RW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IHByb3RlY3RlZENvbnRleHRQcm90b3R5cGUoY29udGV4dFByb3RvdHlwZSk7Ci0gICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVN0
cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZSk7Ci0gICAgICAgIGF1dG8q
IHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRy
LCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOwotICAgICAgICBhdXRvKiBwcm94
eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOwotICAgIAotICAgICAg
ICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlJj4oKm1fd29ya2VyR2xvYmFsU2NvcGUpLCBwcm94eSkpOwotICAgICAg
ICBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAgICBB
U1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgICAgIGNvbnRleHRQcm90
b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgICAgICBhdXRvKiB3b3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSA9IEpTV29ya2VyR2xvYmFsU2NvcGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgpOwotICAgICAgICBjb250ZXh0UHJvdG90eXBl
LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwg
d29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUpOwotCi0gICAgICAgIHByb3h5LT5zZXRUYXJnZXQo
Km1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgcHJveHkt
PnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXIuZ2V0KCkpOwotI2VuZGlmCi0gICAgfQotICAgIAotICAgIEFTU0VSVChtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXIpOwotICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLQotICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlx
dWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5n
ZXQoKSk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UpCi17Ci0gICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgZXZhbHVh
dGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpOwotICAg
IGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0gICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwgZXhj
ZXB0aW9uKTsKLSAgICB9Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UpCi17Ci0gICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
Km1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwotICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKLQotICAgIEpTRXhlY1N0
YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29u
OjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotCi0gICAgaWYgKChyZXR1
cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHJldHVy
bmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7Ci0gICAgICAgIGZv
cmJpZEV4ZWN1dGlvbigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5jYW5JbmNs
dWRlRXJyb3JEZXRhaWxzKHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksIHNvdXJjZUNvZGUudXJs
KCkuc3RyaW5nKCkpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSXQncyBub3QgZ3JlYXQgdGhh
dCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5nLWlmeSB0aGUgdmFsdWUgb2Yg
dGhlIGV4Y2VwdGlvbi4KLSAgICAgICAgICAgIC8vIERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcg
dG8gaGFuZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2Vw
dGlvbj8KLSAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCi0gICAgICAg
ICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhjZXB0aW9uLT52
YWx1ZSgpLnRvV1RGU3RyaW5nKCZnbG9iYWxPYmplY3QpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgLy8gT3ZlcndyaXRlIHRoZSBkZXRhaWxlZCBlcnJvciB3aXRoIGEgZ2VuZXJpYyBl
cnJvci4KLSAgICAgICAgICAgIFN0cmluZyBnZW5lcmljRXJyb3JNZXNzYWdlIHsgIlNjcmlwdCBl
cnJvci4iX3MgfTsKLSAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCi0g
ICAgICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IGdlbmVyaWNFcnJvck1l
c3NhZ2U7Ci0gICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpj
cmVhdGUodm0sIGNyZWF0ZUVycm9yKCZnbG9iYWxPYmplY3QsIGdlbmVyaWNFcnJvck1lc3NhZ2Up
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpz
ZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKLXsKLSAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIuZ2V0KCk7Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdGhyb3dFeGNlcHRpb24o
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGV4Y2VwdGlvbik7Ci19Ci0KLXZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCi17Ci0gICAg
aWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgewot
ICAgICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmllciB0byBlbnN1cmUg
dGhhdCBvbmNlCi0gICAgICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNUZXJtaW5h
dGluZ0V4ZWN1dGlvbigpIHdpbGwKLSAgICAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0IHRoYXQg
bGV4aWNhbEdsb2JhbE9iamVjdCB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAg
ICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOwotICAgIH0KLSAgICBtX3ZtLT5u
b3RpZnlOZWVkVGVybWluYXRpb24oKTsKLX0KLQotYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QKLXsKLSAgICAvLyBTZWUgY29tbWVudHMg
aW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbiByZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKLSAgICBy
ZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCi17Ci0gICAgQVNTRVJUKG1fd29ya2VyR2xvYmFs
U2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX2V4ZWN1dGlvbkZvcmJpZGRlbiA9IHRy
dWU7Ci19Ci0KLWJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdAotewotICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlLT5pc0NvbnRleHRU
aHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVuOwotfQotCi12b2lkIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQotewotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotICAgIEpTTG9ja0hvbGRlciBsb2Nr
e3ZtKCl9OwotCi0gICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVk
KGZhbHNlLCBlcnJvck1lc3NhZ2UpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBp
bml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9ja3t2bSgpfTsKLQotICAg
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2Us
IGVycm9yTWVzc2FnZSk7Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVsZWFz
ZUhlYXBBY2Nlc3MoKQotewotICAgIG1fdm0tPmhlYXAucmVsZWFzZUFjY2VzcygpOwotfQotCi12
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmFjcXVpcmVIZWFwQWNjZXNzKCkKLXsKLSAgICBt
X3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5v
dGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrKQotewotICAgIGF1dG8gcHJvY2Vzc1RpbWVyID0g
WyZdIChKU1J1bkxvb3BUaW1lciogdGltZXIpIHsKLSAgICAgICAgaWYgKCF0aW1lcikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgdGltZXItPmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKGNh
bGxiYWNrKTsKLSAgICB9OwotCi0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2
aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5
Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0
cigpKTsKLX0KLQotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5v
dGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNr
IGNhbGxiYWNrKQotewotICAgIGF1dG8gcHJvY2Vzc1RpbWVyID0gWyZdIChKU1J1bkxvb3BUaW1l
ciogdGltZXIpIHsKLSAgICAgICAgaWYgKCF0aW1lcikKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgdGltZXItPnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKGNhbGxiYWNrKTsKLSAgICB9
OwotCi0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7
Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0g
ICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKLX0KLQotdm9p
ZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBk
ZWJ1Z2dlcikKLXsKLSAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICBkZWJ1Z2dlci0+YXR0
YWNoKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLX0KLQotdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikK
LXsKLSAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgp
LCBKU0M6OkRlYnVnZ2VyOjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24pOwotfQotCi1KU0M6
OkpTR2xvYmFsT2JqZWN0KiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBw
ZXIoKQotewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
YjllMjdkN2FiNzA5ZDE1MDk3MDRhMGU5NGQ4YzJhYmQ4MTE0ZmQ3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTUnVuTG9vcFRpbWVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25n
Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2lu
Y2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIFZNOwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFz
cyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudDsKLWNsYXNzIFdv
cmtlckdsb2JhbFNjb3BlOwotCi1jbGFzcyBXb3JrZXJTY3JpcHRDb250cm9sbGVyIDogcHVibGlj
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdvcmtlclNjcmlwdENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlKik7Ci0g
ICAgfldvcmtlclNjcmlwdENvbnRyb2xsZXIoKTsKLQotICAgIEpTV29ya2VyR2xvYmFsU2NvcGUq
IHdvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpCi0gICAgewotICAgICAgICBpbml0U2NyaXB0SWZO
ZWVkZWQoKTsKLSAgICAgICAgcmV0dXJuIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgp
OwotICAgIH0KLQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigp
IGZpbmFsOwotCi0gICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKLSAgICB2b2lkIGV2YWx1
YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxw
dHIpOwotCi0gICAgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qKTsKLQotICAgIC8v
IEFzeW5jIHJlcXVlc3QgdG8gdGVybWluYXRlIGEgSlMgcnVuIGV4ZWN1dGlvbi4gRXZlbnR1YWxs
eSBjYXVzZXMgdGVybWluYXRpb24KLSAgICAvLyBleGNlcHRpb24gcmFpc2VkIGR1cmluZyBKUyBl
eGVjdXRpb24sIGlmIHRoZSB3b3JrZXIgdGhyZWFkIGhhcHBlbnMgdG8gcnVuIEpTLgotICAgIC8v
IEFmdGVyIEpTIGV4ZWN1dGlvbiB3YXMgdGVybWluYXRlZCBpbiB0aGlzIHdheSwgdGhlIFdvcmtl
ciB0aHJlYWQgaGFzIHRvIHVzZQotICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgdG8gZ3VhcmQgYWdhaW5zdCByZWVudHJ5IGludG8gSlMuCi0gICAgLy8gQ2Fu
IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCi0gICAgdm9pZCBzY2hlZHVsZUV4ZWN1dGlvblRl
cm1pbmF0aW9uKCk7Ci0gICAgYm9vbCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QgZmlu
YWw7Ci0KLSAgICAvLyBDYWxsZWQgb24gV29ya2VyIHRocmVhZCB3aGVuIEpTIGV4aXRzIHdpdGgg
dGVybWluYXRpb24gZXhjZXB0aW9uIGNhdXNlZCBieSBmb3JiaWRFeGVjdXRpb24oKSByZXF1ZXN0
LAotICAgIC8vIG9yIGJ5IFdvcmtlciB0aHJlYWQgdGVybWluYXRpb24gY29kZSB0byBwcmV2ZW50
IGZ1dHVyZSBlbnRyeSBpbnRvIEpTLgotICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7Ci0gICAg
Ym9vbCBpc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwotCi0gICAgdm9pZCBkaXNhYmxlRXZh
bChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1i
bHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotCi0gICAgSlNDOjpWTSYgdm0oKSB7IHJl
dHVybiAqbV92bTsgfQotICAgIAotICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKSBmaW5hbDsK
LSAgICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgZmluYWw7Ci0KLSAgICB2b2lkIGFkZFRpbWVy
U2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2Fs
bGJhY2spIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpK
U1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjaykgZmluYWw7Ci0KLSAgICB2
b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKLSAgICB2b2lkIGRldGFjaERlYnVn
Z2VyKEpTQzo6RGVidWdnZXIqKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXRTY3JpcHRJZk5l
ZWRlZCgpCi0gICAgewotICAgICAgICBpZiAoIW1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKQot
ICAgICAgICAgICAgaW5pdFNjcmlwdCgpOwotICAgIH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRTY3JpcHQoKTsKLQotICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOwotICAgIFdvcmtlckds
b2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwotICAgIEpTQzo6U3Ryb25nPEpTV29ya2Vy
R2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXb3JrZXJDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7Ci0gICAgYm9vbCBtX2V4
ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzVGVybWluYXRpbmdFeGVj
dXRpb24geyBmYWxzZSB9OwotICAgIG11dGFibGUgTG9jayBtX3NjaGVkdWxlZFRlcm1pbmF0aW9u
TXV0ZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggZjc2OTlkNTUzYzc4MGJhMGJmMzI3
MTc3ZDI0MzVhYmQ3Y2M5YzhkMi4uMzdhNmJmYTk2MGJkNjcxNDc1ZDgwOWNhOTk4OGQxM2E2Zjg0
MzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cApAQCAtNTksMTAgKzU5LDEwIEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWQuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDc4MGM1YTEyNTYyNzA3NGYyMTc0
NjU4ZGFmYTNlMGU1ZTZjZTQyNWIuLjBiM2VkN2Q4NzM5MTg2MzU0NTkxZTk3MWQ5MjM0NjVjZDQ1
MTIxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIHNldHVwTmV3bHlDcmVhdGVkU2Vydmlj
ZVdvcmtlcih1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKmdsb2JhbFNjb3BlLmdsb2JhbE9iamVjdCgpOwogICAgICAgICBhdXRv
JiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKLSAgICAgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3JpcHQtPndvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcigpOworICAgICAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+Z2xv
YmFsU2NvcGVXcmFwcGVyKCk7CiAgICAgICAgIGNvbnRleHRXcmFwcGVyLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b0pT
KCZnbG9iYWxPYmplY3QsIGNvbnRleHRXcmFwcGVyLCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpj
cmVhdGUoaWRlbnRpZmllcikpKTsKICAgICB9KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNjMxMTNhMTZj
NDkzOWMwNGI1ZjdjMDA2MGQ2MGY2MjA0YzQwZjM4Yy4uY2FhZDRjZWJhNThiYTgzMzJkNWU5YTYw
M2RlMTI2MjYzZGFlYTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtODgsMyArODgsOCBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJl
dHVybiBpczxXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8
V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmlzRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXb3Jr
ZXJHbG9iYWxTY29wZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDcyMTU4MWYx
YjdjODE2MzQ0NDM4YWU0ZWNjYmEwZjkwYTE0MjI0NWIuLjdiNDI5MzAwYWZmY2IwNTE4OWQ0ODE2
MDU5ZjQwNWQ2Njg2YzRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b25zb2xlQ2xpZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNv
bGVDbGllbnQuaCIKIAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29u
c29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTM1LDgg
KzM2LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKLVdvcmtlckNvbnNvbGVDbGllbnQ6OldvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQotICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSkKK1dvcmtlckNvbnNvbGVDbGllbnQ6OldvcmtlckNvbnNvbGVDbGllbnQo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlKQorICAgIDogbV9nbG9iYWxT
Y29wZShnbG9iYWxTY29wZSkKIHsKIH0KIApAQCAtNDcsMzIgKzQ4LDQyIEBAIHZvaWQgV29ya2Vy
Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsCiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0
Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKICAgICBhdXRvIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVj
KTsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVz
c2FnZSkpOworICAgIG1fZ2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNz
YWdlKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6Y291bnQoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChtX3dvcmtlckdsb2JhbFNjb3BlLCBleGVjLCBsYWJl
bCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCisg
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKKyAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29u
c29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBT
dHJpbmcmIGxhYmVsKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNv
dW50UmVzZXQobV93b3JrZXJHbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOworICAgIC8vIEZJWE1F
OiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgorICAgIGlmIChpczxXb3JrZXJH
bG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUNvdW50UmVzZXQoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xv
YmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6
dGltZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKG1fd29ya2Vy
R2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xv
YmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29s
ZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMs
IGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lTG9nKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYgYXJndW1lbnRzKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29u
c29sZVRpbWluZyhtX3dvcmtlckdsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1
bWVudHMpKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29w
ZS4KKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQorICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1
bWVudHMpKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhtX3dvcmtlckdsb2JhbFNjb3BlLCBl
eGVjLCBsYWJlbCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFs
U2NvcGUuCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKKyAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0KIAog
Ly8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTM0OTk+IFdlYiBJbnNwZWN0b3I6IGNv
bnNvbGUucHJvZmlsZSBzaG91bGQgdXNlIHRoZSBuZXcgU2FtcGxpbmcgUHJvZmlsZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKaW5kZXggOTc3YjA3ZDU0
MTM3ODJmZjU1MDMxNzZhZjMwMWYwNjJmMzQ0ZTZkZS4uMTE0YzhkZmVlNGI1NTE5ZTQxNDliNTE4
ZDc3NTU5YWM2ODA2YzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25z
b2xlQ2xpZW50LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxp
Y2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAg
dmlydHVhbCB+V29ya2VyQ29uc29sZUNsaWVudCgpOwogCiBwcml2YXRlOgpAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Ny
ZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiYmKSBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2Jh
bFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX2dsb2JhbFNjb3BlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3ZDk3ODNkOTEzMGQ2NmMyNzVhYWRiNjJjNDQxNjlj
ODY4ZGQ3YzZlLi4yNDBlYzkzMDQyMThlNjdlZDU3NTc2ZDIyOWFhODVhNmM0MmJjM2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjYsNyAr
NjYsNiBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdAogICAgICwgbV9pZGVudGlmaWVyKHBhcmFt
cy5pZGVudGlmaWVyKQogICAgICwgbV91c2VyQWdlbnQocGFyYW1zLnVzZXJBZ2VudCkKICAgICAs
IG1fdGhyZWFkKHRocmVhZCkKLSAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2NyaXB0
Q29udHJvbGxlcj4odGhpcykpCiAgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX2lzT25saW5lKHBh
cmFtcy5pc09ubGluZSkKICAgICAsIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KHBhcmFtcy5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3kpCkBAIC0xODcsMTIgKzE4NiwxMiBAQCBTdHJpbmcgV29ya2VyR2xvYmFsU2NvcGU6OnVzZXJB
Z2VudChjb25zdCBVUkwmKSBjb25zdAogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkaXNhYmxl
RXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX3NjcmlwdC0+ZGlzYWJs
ZUV2YWwoZXJyb3JNZXNzYWdlKTsKKyAgICBzY3JpcHQoKS0+ZGlzYWJsZUV2YWwoZXJyb3JNZXNz
YWdlKTsKIH0KIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fc2NyaXB0LT5kaXNhYmxlV2ViQXNz
ZW1ibHkoZXJyb3JNZXNzYWdlKTsKKyAgICBzY3JpcHQoKS0+ZGlzYWJsZVdlYkFzc2VtYmx5KGVy
cm9yTWVzc2FnZSk7CiB9CiAKIFNvY2tldFByb3ZpZGVyKiBXb3JrZXJHbG9iYWxTY29wZTo6c29j
a2V0UHJvdmlkZXIoKQpAQCAtMzU3LDkgKzM1Niw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtl
ckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKQog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCp0aGlzLCBz
Y3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CiAKICAg
ICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgbV9zY3Jp
cHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgVVJM
KHNjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSkpLCBleGNlcHRpb24pOworICAgICAgICBzY3Jp
cHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBV
Ukwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSksIGV4Y2VwdGlvbik7CiAgICAgICAgIGlm
IChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LT5zZXRFeGNlcHRpb24oZXhjZXB0
aW9uKTsKKyAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICB9CkBAIC00MTQsNyArNDEzLDcg
QEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKIAogYm9v
bCBXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworICAgIHJldHVybiBz
Y3JpcHQoKS0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZ
UFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDQx
MjgwNzFjYzk0Zjg3ZjMxNzIyNzU5YzRmODJiZDAwMjY2NzEyNTUuLmU0OGNmYjg1ZTFiZTA1Yzlm
YmU4YjViMTIwYmM3ZmI3OTgwNGU3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmgKQEAgLTMzLDEwICszMywxMCBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1l
c3NhZ2UuaD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC04Niw5ICs4Niw2IEBAIHB1YmxpYzoKICAg
ICBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24mIHN3Q2xpZW50Q29ubmVjdGlvbigpOwogI2VuZGlm
CiAKLSAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSBmaW5hbCB7IHJldHVybiBt
X3NjcmlwdC5nZXQoKTsgfQotICAgIHZvaWQgY2xlYXJTY3JpcHQoKSB7IG1fc2NyaXB0ID0gbnVs
bHB0cjsgfQotCiAgICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJv
bGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KIAogICAgIFdv
cmtlclRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQ7IH0KQEAgLTE5NSw3
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPFdvcmtlck5hdmlnYXRvcj4g
bV9uYXZpZ2F0b3I7CiAKICAgICBXb3JrZXJUaHJlYWQmIG1fdGhyZWFkOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXb3JrZXJTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJv
bGxlcjsKIAogICAgIGJvb2wgbV9jbG9zaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDVhOGQ1OTg1OGE5ZjJlNzE2Yjc2MTYwODNjZWRkMDNlZTBjOWI3NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKKworI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKQorICAgIDogbV9zY3JpcHQobWFrZVVuaXF1
ZTxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKK3sKK30KKworV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFJlZjxKU0M6
OlZNPiYmIHZtKQorICAgIDogbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyPihXVEZNb3ZlKHZtKSwgdGhpcykpCit7Cit9CisKK3ZvaWQgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU6OmNsZWFyU2NyaXB0KCkKK3sKKyAgICBtX3NjcmlwdCA9IG51bGxw
dHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBjMDY4M2JkZmI4N2I5
ZDdlNmJhMTk2NGY4N2E2NGJlMjNmZGRlYzhiLi5lNzllYmNmOWM1ZWUyNTk5NmViZGNhZmFmMDNk
ZWM2ZWM1MWZiMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0zNywxMiArMzcsMTkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCBib29sIGlzQ2xvc2luZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlck9y
V29ya2xldFRocmVhZCogd29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgY29uc3QgPSAwOwogCisgICAg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgY29uc3QgeyByZXR1cm4g
bV9zY3JpcHQuZ2V0KCk7IH0KKyAgICB2b2lkIGNsZWFyU2NyaXB0KCk7CisKICAgICB1bnNpZ25l
ZCBsb25nIGNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKSB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZp
ZXIrKzsgfQogCitwcm90ZWN0ZWQ6CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKTsK
KyAgICBleHBsaWNpdCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJik7
CisKIHByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVy
IHsgMSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAxZDVmMmY0MGI3
YjdiZGU4ZTYzMzY2MmFkMzFmYjFjZDNmMjg2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTAs
MCArMSwyOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmgiCisjaW5jbHVkZSAiSlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIK
KyNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldvcmtlckNvbnNvbGVD
bGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25I
ZWxwZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Ryb25nSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPFZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSogZ2xvYmFsU2NvcGUpCisgICAgOiBtX3ZtKFdURk1vdmUodm0pKQorICAgICwgbV9n
bG9iYWxTY29wZShnbG9iYWxTY29wZSkKKyAgICAsIG1fZ2xvYmFsU2NvcGVXcmFwcGVyKCptX3Zt
KQoreworICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0
aGF0IHdlIGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBv
biBwZXJtYW5lbnRseS4KKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0u
Z2V0KCkpOworfQorCitXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxT
Y29wZSkKKyAgICA6IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoSlNDOjpWTTo6Y3Jl
YXRlKCksIGdsb2JhbFNjb3BlKQoreworfQorCitXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjp+V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpCit7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0oKSk7CisgICAgaWYgKG1fZ2xvYmFsU2NvcGVXcmFwcGVyKSB7CisgICAgICAg
IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5jbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CisgICAgICAg
IG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworCisgICAg
fQorICAgIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7CisgICAgbV92bSA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdn
ZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7
CisgICAgZGVidWdnZXItPmF0dGFjaChtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Cit9CisK
K3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIpCit7CisgICAgZGVidWdnZXItPmRldGFjaChtX2dsb2JhbFNj
b3BlV3JhcHBlci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNz
aW9uKTsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRF
eGVjdXRpb24oKQoreworICAgIEFTU0VSVChtX2dsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgbV9leGVjdXRpb25Gb3JiaWRkZW4gPSB0cnVlOworfQorCitib29sIFdvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9nbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIHJldHVy
biBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCkKK3sKKyAgICBpZiAobV9p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAg
IC8vIFRoZSBtdXRleCBwcm92aWRlcyBhIG1lbW9yeSBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0IG9u
Y2UKKyAgICAgICAgLy8gdGVybWluYXRpb24gaXMgc2NoZWR1bGVkLCBpc1Rlcm1pbmF0aW5nRXhl
Y3V0aW9uKCkgd2lsbAorICAgICAgICAvLyBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhhdCBsZXhpY2Fs
R2xvYmFsT2JqZWN0IHdoZW4gY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCisgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7CisgICAgICAgIG1f
aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiA9IHRydWU7CisgICAgfQorICAgIG1fdm0tPm5vdGlmeU5l
ZWRUZXJtaW5hdGlvbigpOworfQorCitib29sIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAoreworICAgIC8vIFNlZSBjb21tZW50
cyBpbiBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uIHJlZ2FyZGluZyBtdXRleCB1c2FnZS4K
KyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOworICAg
IHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247Cit9CisKK3ZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6cmVsZWFzZUhlYXBBY2Nlc3MoKQoreworICAgIG1fdm0tPmhl
YXAucmVsZWFzZUFjY2VzcygpOworfQorCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmFjcXVpcmVIZWFwQWNjZXNzKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nl
c3MoKTsKK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjphZGRUaW1l
clNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNh
bGxiYWNrIGNhbGxiYWNrKQoreworICAgIGF1dG8gcHJvY2Vzc1RpbWVyID0gWyZdIChKU1J1bkxv
b3BUaW1lciogdGltZXIpIHsKKyAgICAgICAgaWYgKCF0aW1lcikKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdGltZXItPmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKGNhbGxiYWNrKTsKKyAg
ICB9OworCisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2so
KSk7CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7
CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKK30KKwor
dm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlm
aWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIGNh
bGxiYWNrKQoreworICAgIGF1dG8gcHJvY2Vzc1RpbWVyID0gWyZdIChKU1J1bkxvb3BUaW1lciog
dGltZXIpIHsKKyAgICAgICAgaWYgKCF0aW1lcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdGltZXItPnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKGNhbGxiYWNrKTsKKyAgICB9Owor
CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7Cisg
ICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7CisgICAg
cHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKK30KKwordm9pZCBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRp
b24qIGV4Y2VwdGlvbikKK3sKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgdGhyb3dFeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGV4
Y2VwdGlvbik7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgaW5pdFNjcmlwdElm
TmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CisKKyAgICBtX2dsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisK
K3ZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OworCisgICAgbV9nbG9iYWxTY29wZVdy
YXBwZXItPnNldFdlYkFzc2VtYmx5RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKwor
dm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKKyAgICBldmFsdWF0ZShz
b3VyY2VDb2RlLCBleGNlcHRpb24sIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSk7CisgICAgaWYg
KGV4Y2VwdGlvbikgeworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpLCBleGNlcHRpb24pOwor
ICAgIH0KK30KKwordm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAq
bV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZt
KCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSB9OworCisgICAgSlNFeGVjU3RhdGU6OnBy
b2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVy
LCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFs
VGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisKKyAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9u
ICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgcmV0dXJuZWRFeGNlcHRpb24p
KSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKKyAgICAgICAgZm9yYmlkRXhlY3V0aW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24p
IHsKKyAgICAgICAgaWYgKG1fZ2xvYmFsU2NvcGUtPmNhbkluY2x1ZGVFcnJvckRldGFpbHMoc291
cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKSkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJp
dHJhcnkgY29kZSB0byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgorICAg
ICAgICAgICAgLy8gRG8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9w
ZXJseSwgaWYgaXQsIHNheSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPworICAgICAgICAgICAg
aWYgKHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0dXJuZWRF
eGNlcHRpb25NZXNzYWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmco
Jmdsb2JhbE9iamVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdmVyd3Jp
dGUgdGhlIGRldGFpbGVkIGVycm9yIHdpdGggYSBnZW5lcmljIGVycm9yLgorICAgICAgICAgICAg
U3RyaW5nIGdlbmVyaWNFcnJvck1lc3NhZ2UgeyAiU2NyaXB0IGVycm9yLiJfcyB9OworICAgICAg
ICAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0
dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gZ2VuZXJpY0Vycm9yTWVzc2FnZTsKKyAgICAgICAgICAg
IHJldHVybmVkRXhjZXB0aW9uID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgY3JlYXRlRXJy
b3IoJmdsb2JhbE9iamVjdCwgZ2VuZXJpY0Vycm9yTWVzc2FnZSkpOworICAgICAgICB9CisgICAg
fQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFt
ZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KK3ZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCit7CisgICAgQVNT
RVJUKCFtX2dsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZt
KCkgfTsKKworICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHBy
b3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKKyAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRo
ZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQorICAgIC8v
IGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCisgICAgU3RydWN0
dXJlKiBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSk7CisgICAgYXV0byogY29u
dGV4dFByb3RvdHlwZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVs
bHB0ciwgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBKU0dsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRl
eHRQcm90b3R5cGUpOworICAgIGF1dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRl
U3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5
cGUpOworICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVj
dHVyZSk7CisKKyAgICBtX2dsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTR2xvYmFsU2Nv
cGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxHbG9iYWxTY29wZSY+KCpt
X2dsb2JhbFNjb3BlKSwgcHJveHkpKTsKKyAgICBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5z
ZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBB
U1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX2dsb2JhbFNjb3BlV3JhcHBlcik7
CisgICAgQVNTRVJUKG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKm1fdm0pLT5nbG9i
YWxPYmplY3QoKSA9PSBtX2dsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgY29udGV4dFByb3RvdHlw
ZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX2dsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7CisgICAgYXV0byogZ2xvYmFsU2NvcGVQcm90b3R5cGUgPSBKU0dsb2Jh
bFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Cisg
ICAgZ2xvYmFsU2NvcGVQcm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgpOworICAgIGNvbnRl
eHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKCptX3ZtLCBnbG9iYWxTY29wZVByb3RvdHlwZSk7CisKKyAgICBwcm94eS0+c2V0VGFyZ2V0
KCptX3ZtLCBtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgcHJveHktPnN0cnVjdHVy
ZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV9nbG9iYWxTY29wZVdyYXBwZXIuZ2V0
KCkpOworCisgICAgQVNTRVJUKG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9
PSBtX2dsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgQVNTRVJUKGFzT2JqZWN0KG1fZ2xvYmFsU2Nv
cGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV9nbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV9nbG9iYWxTY29wZSk7CisgICAgbV9nbG9iYWxTY29w
ZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKK30KKwor
dm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKK3sKKyAg
ICBpZiAoaXM8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7Cisg
ICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSkpIHsKKyAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZT4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFBhaW50V29ya2xldEds
b2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNs
YXNzPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUsIFBhaW50V29ya2xldEdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIGlmIChpczxBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaW5pdFNjcmlwdFdp
dGhTdWJjbGFzczxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLCBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYzJjMGMzZTQyYWRjMzUx
MzhlZGEwNGRiMDQyZTI2Y2I0ZTNiOTIwNy4uZWU1Nzk3YmRjMDZiMmE4NzUwYzg4MjEwZTcwMmNi
NTM2MDhlNGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNiwxNSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgVk07Cit9CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CkBAIC0zMywxOSArNDIsNzggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CitjbGFzcyBTY3Jp
cHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudDsKK2NsYXNzIFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlOworCiBjbGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworICAgIFdv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKik7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOworICAgIH5Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIHJlbGVhc2VIZWFwQWNjZXNzKCk7Cisg
ICAgdm9pZCBhY3F1aXJlSGVhcEFjY2VzcygpOworCisgICAgdm9pZCBhZGRUaW1lclNldE5vdGlm
aWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKTsK
KyAgICB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6
OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbFNjb3BlV3JhcHBlcigpCisgICAgeworICAgICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsK
KyAgICAgICAgcmV0dXJuIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOworICAgIH0KKworICAg
IHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOworICAgIHZvaWQgZGV0YWNoRGVi
dWdnZXIoSlNDOjpEZWJ1Z2dlciopOworCisgICAgLy8gQXN5bmMgcmVxdWVzdCB0byB0ZXJtaW5h
dGUgYSBKUyBydW4gZXhlY3V0aW9uLiBFdmVudHVhbGx5IGNhdXNlcyB0ZXJtaW5hdGlvbgorICAg
IC8vIGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIEpTIGV4ZWN1dGlvbiwgaWYgdGhlIHdvcmtlciB0
aHJlYWQgaGFwcGVucyB0byBydW4gSlMuCisgICAgLy8gQWZ0ZXIgSlMgZXhlY3V0aW9uIHdhcyB0
ZXJtaW5hdGVkIGluIHRoaXMgd2F5LCB0aGUgV29ya2VyIHRocmVhZCBoYXMgdG8gdXNlCisgICAg
Ly8gZm9yYmlkRXhlY3V0aW9uKCkvaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSB0byBndWFyZCBhZ2Fp
bnN0IHJlZW50cnkgaW50byBKUy4KKyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVh
ZC4KKyAgICB2b2lkIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKTsKKyAgICBib29sIGlz
VGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdDsKKworICAgIC8vIENhbGxlZCBvbiBXb3JrZXIg
dGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0aCB0ZXJtaW5hdGlvbiBleGNlcHRpb24gY2F1c2VkIGJ5
IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVlc3QsCisgICAgLy8gb3IgYnkgV29ya2VyIHRocmVhZCB0
ZXJtaW5hdGlvbiBjb2RlIHRvIHByZXZlbnQgZnV0dXJlIGVudHJ5IGludG8gSlMuCisgICAgdm9p
ZCBmb3JiaWRFeGVjdXRpb24oKTsKKyAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3Q7CisKKyAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisKKyAgICB2b2lkIHNl
dEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiopOworCisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworCisgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRy
KTsKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0
aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VIZWFwQWNj
ZXNzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhY3F1aXJlSGVhcEFjY2VzcygpID0gMDsKK3By
b3RlY3RlZDoKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogZ2xvYmFsU2NvcGUoKSBj
b25zdCB7IHJldHVybiBtX2dsb2JhbFNjb3BlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVGlt
ZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25D
YWxsYmFjaykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlv
bihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSA9IDA7Cisg
ICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dsb2Jh
bFNjb3BlV3JhcHBlcikKKyAgICAgICAgICAgIGluaXRTY3JpcHQoKTsKKyAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXJt
aW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0ID0gMDsKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlw
ZW5hbWUgR2xvYmFsU2NvcGU+CisgICAgdm9pZCBpbml0U2NyaXB0V2l0aFN1YmNsYXNzKCk7CiAK
LSAgICB2aXJ0dWFsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpID0g
MDsKKyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSogbV9nbG9iYWxTY29wZTsKKyAgICBKU0M6OlN0cm9uZzxKU0RPTUdsb2JhbE9iamVjdD4g
bV9nbG9iYWxTY29wZVdyYXBwZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlckNvbnNvbGVD
bGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAgICBtdXRhYmxlIExvY2sgbV9zY2hlZHVsZWRUZXJt
aW5hdGlvbk11dGV4OworICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApp
bmRleCA1OTY0ZDUxMTE3OWIwZjg1ZWZkYWYxMzEyNjAxZDEzNDliOWFmOTVlLi4xY2VmY2JkYzAz
ZGZhZDc5MjBiNWE2YzYyNGU4MDgzYjMwYTVhZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6Ondv
cmtlclRocmVhZCgpCiAgICAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdChtYWlu
Q29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNj
cmlwdENvbnRyb2xsZXI7CisgICAgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0Q29udHJvbGxlcjsKICAgICB7CiAgICAgICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMgbmVj
ZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGNoYW5nZSBtX3dvcmtlckdsb2JhbFNjb3Bl
CiAgICAgICAgIC8vIHdoaWxlIFdvcmtlclRocmVhZDo6c3RvcCgpIGlzIGFjY2Vzc2luZyBpdC4g
Tm90ZSB0aGF0IFdvcmtlclRocmVhZDo6c3RvcCgpIGNhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZGY1NTBmNDQ5OTJkOWU2MDQzMWU3ZDIzZmRmYjM5ZDFkMGU5M2MwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya2xl
dENvbnNvbGVDbGllbnQuaCIKLQotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2NyaXB0QXJndW1lbnRzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2NyaXB0Q2FsbFN0YWNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwotCi1Xb3JrbGV0Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQo
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCi0gICAgOiBtX3dvcmtsZXRH
bG9iYWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpCi17Ci19Ci0KLVdvcmtsZXRDb25zb2xlQ2xp
ZW50Ojp+V29ya2xldENvbnNvbGVDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKLXsKLSAgICBTdHJpbmcgbWVzc2FnZVRl
eHQ7Ci0gICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQp
OwotICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBX
VEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlLmFkZENv
bnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwotfQotCi12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50Ojpjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci12
b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci12b2lkIFdvcmtsZXRDb25z
b2xlQ2xpZW50Ojp0aW1lTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRp
bWVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotCi12b2lkIFdv
cmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
dHJpbmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci0KLXZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6OnJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3Vt
ZW50cz4mJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi12b2lkIFdvcmts
ZXRDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmKSB7IH0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDEyYmI0OWE1ZGFmYjhhZjNjM2NkOTk2N2Y2ZjBiYTFkYzNiNTUzYTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVDbGllbnQu
aD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIENh
bGxGcmFtZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXb3JrbGV0Q29uc29s
ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtsZXRDb25zb2xlQ2xp
ZW50KFdvcmtsZXRHbG9iYWxTY29wZSYpOwotICAgIHZpcnR1YWwgfldvcmtsZXRDb25zb2xlQ2xp
ZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNz
YWdlVHlwZSwgTWVzc2FnZUxldmVsLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIGNvdW50KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIGNvdW50UmVz
ZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAg
IHZvaWQgcHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkg
ZmluYWw7Ci0gICAgdm9pZCBwcm9maWxlRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOwotICAgIHZvaWQgdGltZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9p
ZCB0aW1lTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgdGltZUVuZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9p
ZCB0aW1lU3RhbXAoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCByZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCByZWNv
cmRFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4mJikgZmluYWw7Ci0gICAgdm9pZCBzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotCi0gICAgV29ya2xldEds
b2JhbFNjb3BlJiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IDdiM2I0MjEwZjc0YjZkNmI2YTI2M2NlZTliZWMwNDFjNzY0Mjc5ODkuLjBkYjUxOTVi
YTlmZTRkYmI2ZTVlZDAyYjg2ZTYwY2QyZjJhZmU4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNTAsNyArNTAsNiBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIAogV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQs
IGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV90aHJlYWQoJnRo
cmVhZCkKLSAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+
KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgp
KQogICAgICwgbV91cmwocGFyYW1ldGVycy53aW5kb3dVUkwpCiAgICAgLCBtX2pzUnVudGltZUZs
YWdzKHBhcmFtZXRlcnMuanNSdW50aW1lRmxhZ3MpCkBAIC02Myw4ICs2Miw4IEBAIFdvcmtsZXRH
bG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhy
ZWFkLCBjb25zdCBXb3JrCiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNj
b3BlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNjcmlwdFNvdXJjZUNv
ZGUmJiBjb2RlKQotICAgIDogbV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1bWVudCkpCi0gICAg
LCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPihXVEZNb3ZlKHZt
KSwgdGhpcykpCisgICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKHZtKSkK
KyAgICAsIG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV90b3BPcmln
aW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV91cmwoY29kZS51cmwo
KSkKICAgICAsIG1fanNSdW50aW1lRmxhZ3MoZG9jdW1lbnQuc2V0dGluZ3MoKS5qYXZhU2NyaXB0
UnVudGltZUZsYWdzKCkpCkBAIC04MSw3ICs4MCw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29y
a2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNj
CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCiB7Ci0gICAgQVNT
RVJUKCFtX3NjcmlwdCk7CisgICAgQVNTRVJUKCFzY3JpcHQoKSk7CiAgICAgcmVtb3ZlRnJvbUNv
bnRleHRzTWFwKCk7CiAgICAgYXV0byByZW1vdmVSZXN1bHQgPSBhbGxXb3JrbGV0R2xvYmFsU2Nv
cGVzU2V0KCkucmVtb3ZlKHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlUmVzdWx0LCBy
ZW1vdmVSZXN1bHQpOwpAQCAtODksNyArODgsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3Jr
bGV0R2xvYmFsU2NvcGUoKQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRl
c3RydWN0aW9uKCkKIHsKLSAgICBpZiAoIW1fc2NyaXB0KQorICAgIGlmICghc2NyaXB0KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAobV9kZWZhdWx0VGFza0dyb3VwKQogICAgICAgICBtX2Rl
ZmF1bHRUYXNrR3JvdXAtPnN0b3BBbmREaXNjYXJkQWxsVGFza3MoKTsKQEAgLTk4LDggKzk3LDgg
QEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAgICAg
aWYgKG1fZXZlbnRMb29wKQogICAgICAgICBtX2V2ZW50TG9vcC0+Y2xlYXJNaWNyb3Rhc2tRdWV1
ZSgpOwogICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRyYWNrZXIoKTsKLSAgICBtX3NjcmlwdC0+
dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKLSAgICBtX3NjcmlwdCA9IG51bGxwdHI7Cisg
ICAgc2NyaXB0KCktPnZtKCkubm90aWZ5TmVlZFRlcm1pbmF0aW9uKCk7CisgICAgY2xlYXJTY3Jp
cHQoKTsKIH0KIAogYXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29w
ZXNTZXQoKSAtPiBXb3JrbGV0R2xvYmFsU2NvcGVzU2V0JgpAQCAtMTI5LDIyICsxMjgsMjIgQEAg
U3RyaW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmV2YWx1YXRlKCkKIHsKICAgICBpZiAobV9jb2Rl
KQotICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoKm1fY29kZSk7CisgICAgICAgIHNjcmlwdCgp
LT5ldmFsdWF0ZSgqbV9jb2RlKTsKIH0KIAogYm9vbCBXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNF
eGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogewotICAgIHJldHVybiAhbV9zY3JpcHQgfHwgbV9z
Y3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJuICFzY3JpcHQoKSB8fCBz
Y3JpcHQoKS0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFs
U2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1f
c2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworICAgIHNjcmlwdCgpLT5kaXNhYmxl
RXZhbChlcnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJs
ZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fc2NyaXB0
LT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdlKTsKKyAgICBzY3JpcHQoKS0+ZGlzYWJs
ZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7CiB9CiAKIFVSTCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBGb3JjZVVURjgpIGNvbnN0CkBAIC0yMzQs
OSArMjMzLDkgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fZXZhbHVhdGVkTW9kdWxlcy5hZGQobW9kdWxlVVJMKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJj
ZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNl
cHRpb24pOworICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3Nj
cmlwdExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlvbik7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9u
KGV4Y2VwdGlvbik7CisgICAgICAgICAgICBzY3JpcHQoKS0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlv
bik7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihXVEZNb3ZlKGNvbXBs
ZXRlZEpvYiksIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5oCmluZGV4IGYzOTE2ZGMxNjY0ZGZmNzVhY2I1OTQ4Zjg0NDBlY2UwMTgwZWQ5NWUuLjUz
NWUzNmVlM2JiMGUwMDhiYTMyZGZlNzc5NzQwNjEyYjBiZGNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgog
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRl
ckNsaWVudC5oIgotI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
QEAgLTg2LDggKzg2LDYgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAg
ICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHQoKSBmaW5hbCB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQotICAgIHZvaWQgY2xl
YXJTY3JpcHQoKSB7IG1fc2NyaXB0ID0gbnVsbHB0cjsgfQogICAgIFdvcmtlck9yV29ya2xldFRo
cmVhZCogd29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJl
YWQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwpAQCAtMTcwLDggKzE2OCw2IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8
V29ya2VyT3JXb3JrbGV0VGhyZWFkPiBtX3RocmVhZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0KICAgICBSZWY8U2VjdXJpdHlPcmln
aW4+IG1fdG9wT3JpZ2luOwogCiAgICAgUmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExv
b3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYzE1NDFjMTU4MDIzYmI2
ZmFhNWU3NTMyMjZmNjFjN2VmZjhjNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiSlNBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1
ZGUgIkpTRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgotI2luY2x1ZGUg
IkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgIldvcmtsZXRD
b25zb2xlQ2xpZW50LmgiCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9F
eGNlcHRpb25IZWxwZXJzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNh
bGxiYWNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11
c2luZyBuYW1lc3BhY2UgSlNDOwotCi1Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNj
cmlwdENvbnRyb2xsZXIoUmVmPFZNPiYmIHZtLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRH
bG9iYWxTY29wZSkKLSAgICA6IG1fdm0oV1RGTW92ZSh2bSkpCi0gICAgLCBtX3dvcmtsZXRHbG9i
YWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpCi0gICAgLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIoKm1fdm0pCi17Ci0gICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mg
bm90IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBz
byB0dXJuIGl0IG9uIHBlcm1hbmVudGx5LgotICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFs
V29ybGQobV92bS5nZXQoKSk7Ci19Ci0KLVdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZSkK
LSAgICA6IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKFZNOjpjcmVhdGUoKSwgd29ya2xldEdsb2Jh
bFNjb3BlKQotewotfQotCi1Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRTY3JpcHRD
b250cm9sbGVyKCkKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICBmb3JiaWRF
eGVjdXRpb24oKTsKLQotICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpIHsKLSAg
ICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5jbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCk7Ci0gICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVu
dChudWxscHRyKTsKLSAgICAgICAgbV9jb25zb2xlQ2xpZW50ID0gbnVsbHB0cjsKLSAgICB9Ci0g
ICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9IG51bGxw
dHI7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigp
Ci17Ci0gICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7
Ci0gICAgbV9leGVjdXRpb25Gb3JiaWRkZW4gPSB0cnVlOwotfQotCi1ib29sIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fd29ya2xldEdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1f
ZXhlY3V0aW9uRm9yYmlkZGVuOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBpZiAoaXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07Ci0KLSAgICBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwot
fQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVu
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotICAgIEpT
TG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OwotCi0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Ci19Ci0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9i
YWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+Ci12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKLXsKLSAgICBBU1NFUlQoIW1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcik7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKLQot
ICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBz
byBpdCBpc24ndCBjb2xsZWN0ZWQKLSAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwg
b2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQotICAgIC8vIGNvbnN0cnVj
dGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCi0gICAgU3RydWN0dXJlKiBjb250
ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSk7Ci0gICAgYXV0byogY29udGV4dFByb3Rv
dHlwZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgY29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0ds
b2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5
cGUpOwotICAgIGF1dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJl
KCptX3ZtLCBudWxscHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOwotICAg
IGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVjdHVyZSk7Ci0K
LSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3ZtLCBKU0dsb2JhbFNjb3Bl
OjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8R2xvYmFsU2NvcGUmPigqbV93
b3JrbGV0R2xvYmFsU2NvcGUpLCBwcm94eSkpOwotICAgIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdl
dCgpKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIpOwotICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlcik7Ci0gICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0
R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwot
ICAgIGF1dG8qIGdsb2JhbFNjb3BlUHJvdG90eXBlID0gSlNHbG9iYWxTY29wZTo6cHJvdG90eXBl
KCptX3ZtLCAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICBnbG9iYWxT
Y29wZVByb3RvdHlwZS0+ZGlkQmVjb21lUHJvdG90eXBlKCk7Ci0gICAgY29udGV4dFByb3RvdHlw
ZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0s
IGdsb2JhbFNjb3BlUHJvdG90eXBlKTsKLQotICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgcHJveHktPnN0cnVjdHVyZSgq
bV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LmdldCgpKTsKLQotICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKGFz
T2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCpt
X3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7Ci0K
LSAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50Pigq
bV93b3JrbGV0R2xvYmFsU2NvcGUpOwotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+
c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKLXsKLSAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCi0gICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPihtX3dvcmtsZXRHbG9iYWxT
Y29wZSkpIHsKLSAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmts
ZXRHbG9iYWxTY29wZT4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0jaWYg
RU5BQkxFKFdFQl9BVURJTykKLSAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KG1f
d29ya2xldEdsb2JhbFNjb3BlKSkgewotICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpT
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUsIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzRXhlY3V0
aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiBleGNlcHRpb247Ci0gICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCBy
ZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpOwotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpLCBleGNlcHRpb24pOwotICAgIH0K
LX0KLQotLy8gSW1wb3J0YW50OiBUaGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCB2ZXJp
ZnkgdGhhdCB0aGUgcmV0dXJuZWQgZXhjZXB0aW9uIG1lc3NhZ2UgZG9lcyBub3QgdmlvbGF0ZSBD
T1JTIGlmIGl0IGlzIGdvaW5nIHRvIGJlIHBhc3NlZCBiYWNrIHRvIEpTLgotdm9pZCBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5n
KiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCi17Ci0gICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlk
ZGVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwotCi0g
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xv
YmFsT2JqZWN0KCk7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgSlNMb2Nr
SG9sZGVyIGxvY2sgeyB2bSB9OwotCi0gICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUo
Jmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpz
U291cmNlQ29kZSgpLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwg
cmV0dXJuZWRFeGNlcHRpb24pOwotCi0gICAgaWYgKHJldHVybmVkRXhjZXB0aW9uICYmIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSkgewotICAgICAgICAvLyBUaGlzIEZJWE1FIGlzIGZyb20gV29y
a2VyU2NyaXB0Q29udHJvbGxlci4KLSAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdyZWF0IHRo
YXQgdGhpcyBjYW4gcnVuIGFyYml0cmFyeSBjb2RlIHRvIHN0cmluZy1pZnkgdGhlIHZhbHVlIG9m
IHRoZSBleGNlcHRpb24uCi0gICAgICAgIC8vIERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgdG8g
aGFuZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlv
bj8KLSAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhjZXB0aW9u
LT52YWx1ZSgpLnRvV1RGU3RyaW5nKCZnbG9iYWxPYmplY3QpOwotICAgIH0KLX0KLQotdm9pZCBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNl
cHRpb24pCi17Ci0gICAgYXV0byogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgdGhyb3dFeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGV4Y2VwdGlv
bik7Ci19Ci0KLXZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnJlbGVhc2VIZWFwQWNjZXNz
KCkKLXsKLSAgICBtX3ZtLT5oZWFwLnJlbGVhc2VBY2Nlc3MoKTsKLX0KLQotdm9pZCBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6YWNxdWlyZUhlYXBBY2Nlc3MoKQotewotICAgIG1fdm0tPmhlYXAu
YWNxdWlyZUFjY2VzcygpOwotfQotCi12b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjphZGRU
aW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlv
bkNhbGxiYWNrIGNhbGxiYWNrKQotewotICAgIGF1dG8gcHJvY2Vzc1RpbWVyID0gWyZdIChKU1J1
bkxvb3BUaW1lciogdGltZXIpIHsKLSAgICAgICAgaWYgKCF0aW1lcikKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdGltZXItPmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKGNhbGxiYWNrKTsK
LSAgICB9OwotCi0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJh
Y2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2so
KSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKLX0K
LQotdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRp
b24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFj
aykKLXsKLSAgICBhdXRvIHByb2Nlc3NUaW1lciA9IFsmXSAoSlNSdW5Mb29wVGltZXIqIHRpbWVy
KSB7Ci0gICAgICAgIGlmICghdGltZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRp
bWVyLT5yZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihjYWxsYmFjayk7Ci0gICAgfTsKLQotICAg
IHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHBy
b2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nl
c3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7Ci19Ci0KLXZvaWQgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKQotewotICAg
IGlmIChtX2lzVGVybWluYXRpbmdFeGVjdXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIHsK
LSAgICAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJhcnJpZXIgdG8gZW5zdXJl
IHRoYXQgb25jZQotICAgICAgICAvLyB0ZXJtaW5hdGlvbiBpcyBzY2hlZHVsZWQsIGlzVGVybWlu
YXRpbmdFeGVjdXRpb24oKSB3aWxsCi0gICAgICAgIC8vIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGF0
IGxleGljYWxHbG9iYWxPYmplY3Qgd2hlbiBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTG9jayk7
Ci0gICAgICAgIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiA9IHRydWU7Ci0gICAgfQotICAgIG1f
dm0tPm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOwotfQotCi1ib29sIFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QKLXsKLSAgICAvLyBTZWUgY29t
bWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbiByZWdhcmRpbmcgbXV0ZXggdXNh
Z2UuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTG9j
ayk7Ci0gICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsKLX0KLQotSlNDOjpKU0ds
b2JhbE9iamVjdCogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlV3JhcHBlcigp
Ci17Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMzhjYTYz
ODY2MWNhOGY0YjMxODIyM2Q3ZGVkOTE3MTFmMDA1MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxv
b3BUaW1lci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTmFr
ZWRQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKLWNsYXNzIFNjcmlwdFNvdXJj
ZUNvZGU7Ci1jbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKLWNsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZTsKLWNsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OwotCi0vLyBGSVhNRTogV2Ugc2hvdWxk
IHNoYXJlIG1vcmUgY29kZSB3aXRoIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuCi1jbGFzcyBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlciA6IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrbGV0U2NyaXB0Q29udHJvbGxlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSopOwotICAgIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyKFJlZjxKU0M6OlZNPiYmLCBXb3JrbGV0R2xvYmFsU2NvcGUqKTsKLSAgICB+V29y
a2xldFNjcmlwdENvbnRyb2xsZXIoKTsKLQotICAgIEpTV29ya2xldEdsb2JhbFNjb3BlKiB3b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyKCkKLSAgICB7Ci0gICAgICAgIGluaXRTY3JpcHRJZk5lZWRl
ZCgpOwotICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwot
ICAgIH0KLQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpIGZp
bmFsOwotCi0gICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKLSAgICBib29sIGlzRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7Ci0KLSAgICB2b2lkIHJlbGVhc2VIZWFwQWNjZXNzKCkgZmluYWw7Ci0g
ICAgdm9pZCBhY3F1aXJlSGVhcEFjY2VzcygpIGZpbmFsOwotCi0gICAgdm9pZCBhZGRUaW1lclNl
dE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxi
YWNrKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNS
dW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwotCi0gICAgdm9p
ZCBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7Ci0gICAgYm9vbCBpc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uKCkgY29uc3QgZmluYWw7Ci0KLSAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIp
OwotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRp
b25NZXNzYWdlID0gbnVsbHB0cik7Ci0KLSAgICB2b2lkIHNldEV4Y2VwdGlvbihKU0M6OkV4Y2Vw
dGlvbiopOwotCi0gICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQotCi1wcml2YXRl
OgotICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKQotICAgICAgICAgICAgaW5pdFNjcmlwdCgpOwotICAg
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRTY3JpcHQoKTsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUs
IHR5cGVuYW1lIEdsb2JhbFNjb3BlPgotICAgIHZvaWQgaW5pdFNjcmlwdFdpdGhTdWJjbGFzcygp
OwotCi0gICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07Ci0gICAgUmVmUHRy
PEpTQzo6Vk0+IG1fdm07Ci0gICAgV29ya2xldEdsb2JhbFNjb3BlKiBtX3dvcmtsZXRHbG9iYWxT
Y29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldENvbnNvbGVDbGllbnQ+IG1fY29uc29s
ZUNsaWVudDsKLSAgICBKU0M6OlN0cm9uZzxKU1dvcmtsZXRHbG9iYWxTY29wZT4gbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyOwotICAgIG11dGFibGUgTG9jayBtX3NjaGVkdWxlZFRlcm1pbmF0
aW9uTG9jazsKLSAgICBib29sIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiB7IGZhbHNlIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>