<?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>219252</bug_id>
          
          <creation_ts>2020-11-23 01:41:37 -0800</creation_ts>
          <short_desc>Make worker RTC insertable streams constructs controlled by webrtc insertable streams feature setting</short_desc>
          <delta_ts>2020-12-15 08:46:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Local 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>
          <dependson>219688</dependson>
          <blocked>219890</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alex</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1709870</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-23 01:41:37 -0800</bug_when>
    <thetext>Make worker RTC insertable streams constructs controlled by webrtc insertable streams feature setting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709871</commentid>
    <comment_count>1</comment_count>
      <attachid>414796</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-23 02:04:34 -0800</bug_when>
    <thetext>Created attachment 414796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710548</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-30 01:42:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/71798249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712705</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-08 01:05:18 -0800</bug_when>
    <thetext>Ping review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712815</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-08 09:29:07 -0800</bug_when>
    <thetext>Thank you so much for working on making this part of Settings better! Would you mind breaking out the change to Settings into its own patch? I think it would be good to look at it separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712823</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-08 10:04:16 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Thank you so much for working on making this part of Settings better! Would
&gt; you mind breaking out the change to Settings into its own patch? I think it
&gt; would be good to look at it separately.

Sure.
Do you have any preliminary comment on the Settings part of the patch?
I for instance kept it as a subclass of Settings but contemplated to move it to its own class.
Or maybe you have some other idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712829</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-08 10:29:13 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; Thank you so much for working on making this part of Settings better! Would
&gt; &gt; you mind breaking out the change to Settings into its own patch? I think it
&gt; &gt; would be good to look at it separately.
&gt; 
&gt; Sure.
&gt; Do you have any preliminary comment on the Settings part of the patch?
&gt; I for instance kept it as a subclass of Settings but contemplated to move it
&gt; to its own class.
&gt; Or maybe you have some other idea?

Subobject seems fine, though I am not sure if it makes sense to constrain it to just the boolean values. I think I would prefer doing a deep (thread safe) copy of all the Settings if possible, just to keep things relatively normalized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712841</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-08 11:17:48 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; (In reply to youenn fablet from comment #5)
&gt; &gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; &gt; Thank you so much for working on making this part of Settings better! Would
&gt; &gt; &gt; you mind breaking out the change to Settings into its own patch? I think it
&gt; &gt; &gt; would be good to look at it separately.
&gt; &gt; 
&gt; &gt; Sure.
&gt; &gt; Do you have any preliminary comment on the Settings part of the patch?
&gt; &gt; I for instance kept it as a subclass of Settings but contemplated to move it
&gt; &gt; to its own class.
&gt; &gt; Or maybe you have some other idea?
&gt; 
&gt; Subobject seems fine, though I am not sure if it makes sense to constrain it
&gt; to just the boolean values. I think I would prefer doing a deep (thread
&gt; safe) copy of all the Settings if possible, just to keep things relatively
&gt; normalized.

I used the boolean heuristic as a way to restrict to the feature flags that are necessary when creating the global scope.
I thought a bit about extending that but it did not seem useful right now so ended up not doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712850</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-08 11:38:14 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; (In reply to Sam Weinig from comment #6)
&gt; &gt; (In reply to youenn fablet from comment #5)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; &gt; &gt; Thank you so much for working on making this part of Settings better! Would
&gt; &gt; &gt; &gt; you mind breaking out the change to Settings into its own patch? I think it
&gt; &gt; &gt; &gt; would be good to look at it separately.
&gt; &gt; &gt; 
&gt; &gt; &gt; Sure.
&gt; &gt; &gt; Do you have any preliminary comment on the Settings part of the patch?
&gt; &gt; &gt; I for instance kept it as a subclass of Settings but contemplated to move it
&gt; &gt; &gt; to its own class.
&gt; &gt; &gt; Or maybe you have some other idea?
&gt; &gt; 
&gt; &gt; Subobject seems fine, though I am not sure if it makes sense to constrain it
&gt; &gt; to just the boolean values. I think I would prefer doing a deep (thread
&gt; &gt; safe) copy of all the Settings if possible, just to keep things relatively
&gt; &gt; normalized.
&gt; 
&gt; I used the boolean heuristic as a way to restrict to the feature flags that
&gt; are necessary when creating the global scope.
&gt; I thought a bit about extending that but it did not seem useful right now so
&gt; ended up not doing it.

There are a number of non-bool settings that will be useful in workers eventually, usually around maximum on minimum sizes (e.g. maximumAccelerated2dCanvasSize for offscreen canvas at some point, etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714414</commentid>
    <comment_count>9</comment_count>
      <attachid>416147</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-14 03:11:07 -0800</bug_when>
    <thetext>Created attachment 416147
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714758</commentid>
    <comment_count>10</comment_count>
      <attachid>416147</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-15 08:29:25 -0800</bug_when>
    <thetext>Comment on attachment 416147
Rebasing

r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714768</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-15 08:46:00 -0800</bug_when>
    <thetext>Committed r270842: &lt;https://trac.webkit.org/changeset/270842&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416147.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414796</attachid>
            <date>2020-11-23 02:04:34 -0800</date>
            <delta_ts>2020-12-14 03:11:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219252-20201123110432.patch</filename>
            <type>text/plain</type>
            <size>76718</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU1OTgzYzUyNjhiZmVj
N2QwOTc5ZjFlYzM2M2EyYTYyY2U2OWUyYS4uMzEzNTFjMWU2NGUxZjJlZDM3YjFkYmJiNDBjOGZj
YzNjMjgwZmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTExLTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHdvcmtlciBSVEMg
aW5zZXJ0YWJsZSBzdHJlYW1zIGNvbnN0cnVjdHMgY29udHJvbGxlZCBieSB3ZWJydGMgaW5zZXJ0
YWJsZSBzdHJlYW1zIGZlYXR1cmUgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHNldHRpbmdzIGdlbmVyYXRvciB0byBtb3ZlIGFs
bCBib29sZWFuIHNldHRpbmdzIGluIFNldHRpbmdzOjpFbmFibGVkRmVhdHVyZXMuCisgICAgICAg
IE1ha2UgU2V0dGluZ3Mgb3duIGEgU2V0dGluZ3M6OkVuYWJsZWRGZWF0dXJlcy4KKworICAgICAg
ICBVcGRhdGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBiZSBhYmxlIHRvIHJldHVybiBhIFNl
dHRpbmdzOjpFbmFibGVkRmVhdHVyZXMuCisgICAgICAgIEZvciBEb2N1bWVudCwgdGhpcyBpcyBq
dXN0IHJldHVybmluZyB0aGUgU2V0dGluZ3M6OkVuYWJsZWRGZWF0dXJlcyBmcm9tIGl0cyBTZXR0
aW5ncyBvYmplY3QuCisgICAgICAgIEZvciB3b3JrZXJzIGFuZCB3b3JrbGV0cywgZG9jdW1lbnRz
IGdpdmUgdGhlaXIgRW5hYmxlZEZlYXR1cmVzIHRvIHdvcmtlcnMgYW5kIHdvcmtsZXRzLgorICAg
ICAgICBUaGVzZSBlbmFibGVkIGZlYXR1cmVzIHRoZW4gc3RheSBzdGFibGUgdGhyb3VnaG91dCB0
aGUgbGlmZXRpbWUgb2Ygd29ya2VycyBhbmQgd29ya2xldHMuCisKKyAgICAgICAgVXBkYXRlIGJp
bmRpbmcgZ2VuZXJhdG9yIHRvIHVzZSB0aGUgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVu
YWJsZWRGZWF0dXJlcyBnZXR0ZXIuCisgICAgICAgIEVuYWJsZSB1c2Ugb2YgRW5hYmxlZEJ5U2V0
dGluZ3Mgb3V0c2lkZSB3aW5kb3cgY29udGV4dC4KKyAgICAgICAgTWFrZSB1c2Ugb2YgaXQgaW4g
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cyBhbmQgcmViYXNlZCBiaW5kaW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRl
U2V0dGluZ3MucmI6CisgICAgICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5n
cy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3Mu
aC5lcmI6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWZhdWx0VG9KU09O
UHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQm9k
eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRp
bmc6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5h
YmxlZEZvckNvbnRleHQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpyZXF1ZXN0QW5pbWF0aW9uRnJh
bWVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6d2ViR0xFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJQYXJhbWV0ZXJzOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFk
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
U2VydmljZVdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3Jr
bGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5o
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKwogMjAyMC0xMS0y
MCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIgdG8gcmVxdWVzdCBrZXkgZnJhbWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIuaWRsCmluZGV4IDg3NzQ1NTdkMDVkYzVhMDUwM2U5ZTE3MmJiOTJkNjQ3ZTQ5MDA5
NmUuLjBmOTQwY2NkZWIzMDI0Zjk0NGE5MTBmMDg1MzU2MjdhMzc5NTU2YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIuaWRsCkBAIC0yMywxMCArMjMsMTAgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBGSVhNRTogQWRkIEVuYWJsZWRCeVNldHRpbmc9
V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENv
bmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxl
U3RyZWFtcywKICAgICBFeHBvc2VkPURlZGljYXRlZFdvcmtlciwKICAgICBKU0dlbmVyYXRlVG9O
YXRpdmVPYmplY3QsCiBdIGludGVyZmFjZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGI5MDJhNjMyMzFmMWZjMzRiNmRjYTk0OWM4NGYx
MGZhNDkzMmI5MDQuLjczNjQ5NTljZWZiMzIzOTIxYzdlZGE0YmFiZjdmMzQ3NTA5ZWMzOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCkBAIC01Miw3ICs1Miw4IEBAIHN0YXRpYyBXb3Jr
bGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29y
a2xldCkKICAgICAgICAgZG9jdW1lbnQtPnVybCgpLAogICAgICAgICBqc1J1bnRpbWVGbGFncywK
ICAgICAgICAgd29ya2xldC5hdWRpb0NvbnRleHQoKSA/IHdvcmtsZXQuYXVkaW9Db250ZXh0KCkt
PnNhbXBsZVJhdGUoKSA6IDAuMGYsCi0gICAgICAgIHdvcmtsZXQuaWRlbnRpZmllcigpCisgICAg
ICAgIHdvcmtsZXQuaWRlbnRpZmllcigpLAorICAgICAgICBkb2N1bWVudC0+ZW5hYmxlZEZlYXR1
cmVzKCkKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dl
bmVyYXRlU2V0dGluZ3MucmIgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGlu
Z3MucmIKaW5kZXggMjExZTZlYmRiZDg3NTE5NmNkMTViNjRmNWRmNTUxMjc1MzQ2Y2Q4MS4uNDZl
MWQ1OTA0N2E4NzUzYzY5ZmYxYThjZTgzNGY2OWYyZWI5MWZiOSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzLnJiCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy5yYgpAQCAtMjA0LDcgKzIwNCw4IEBAIGNsYXNzIENv
bmRpdGlvbmFsCiAgIGF0dHJfYWNjZXNzb3IgOnNldHRpbmdzV2l0aENvbXBsZXhHZXR0ZXJzCiAg
IGF0dHJfYWNjZXNzb3IgOnNldHRpbmdzV2l0aENvbXBsZXhHZXR0ZXJzTmVlZGluZ0ltcGxlbWVu
dGF0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOnNldHRpbmdzV2l0aENvbXBsZXhTZXR0ZXJzCi0gIGF0
dHJfYWNjZXNzb3IgOnNldHRpbmdzV2l0aENvbXBsZXhTZXR0ZXJzTmVlZGluZ0ltcGxlbWVudGF0
aW9uCisgIGF0dHJfYWNjZXNzb3IgOmJvb2xTZXR0aW5nc1dpdGhDb21wbGV4U2V0dGVyc05lZWRp
bmdJbXBsZW1lbnRhdGlvbgorICBhdHRyX2FjY2Vzc29yIDpub25Cb29sU2V0dGluZ3NXaXRoQ29t
cGxleFNldHRlcnNOZWVkaW5nSW1wbGVtZW50YXRpb24KIAogICBkZWYgaW5pdGlhbGl6ZShjb25k
aXRpb24sIHNldHRpbmdzKQogICAgIEBjb25kaXRpb24gPSBjb25kaXRpb24KQEAgLTIyMiw3ICsy
MjMsOCBAQCBjbGFzcyBDb25kaXRpb25hbAogICAgIEBzZXR0aW5nc1dpdGhDb21wbGV4R2V0dGVy
c05lZWRpbmdJbXBsZW1lbnRhdGlvbiA9IEBzZXR0aW5nc1dpdGhDb21wbGV4R2V0dGVycy5yZWpl
Y3QgeyB8c2V0dGluZ3wgc2V0dGluZy5jdXN0b21JbXBsZW1lbnRhdGlvbiB9CiAKICAgICBAc2V0
dGluZ3NXaXRoQ29tcGxleFNldHRlcnMgPSBAc2V0dGluZ3Muc2VsZWN0IHsgfHNldHRpbmd8IHNl
dHRpbmcuaGFzQ29tcGxleFNldHRlcj8gfQotICAgIEBzZXR0aW5nc1dpdGhDb21wbGV4U2V0dGVy
c05lZWRpbmdJbXBsZW1lbnRhdGlvbiA9IEBzZXR0aW5nc1dpdGhDb21wbGV4U2V0dGVycy5yZWpl
Y3QgeyB8c2V0dGluZ3wgc2V0dGluZy5jdXN0b21JbXBsZW1lbnRhdGlvbiB9CisgICAgQGJvb2xT
ZXR0aW5nc1dpdGhDb21wbGV4U2V0dGVyc05lZWRpbmdJbXBsZW1lbnRhdGlvbiA9IEBzZXR0aW5n
c1dpdGhDb21wbGV4U2V0dGVycy5yZWplY3QgeyB8c2V0dGluZ3wgc2V0dGluZy5jdXN0b21JbXBs
ZW1lbnRhdGlvbiBvciBzZXR0aW5nLnR5cGUgIT0gImJvb2wiIH0KKyAgICBAbm9uQm9vbFNldHRp
bmdzV2l0aENvbXBsZXhTZXR0ZXJzTmVlZGluZ0ltcGxlbWVudGF0aW9uID0gQHNldHRpbmdzV2l0
aENvbXBsZXhTZXR0ZXJzLnJlamVjdCB7IHxzZXR0aW5nfCBzZXR0aW5nLmN1c3RvbUltcGxlbWVu
dGF0aW9uIG9yIHNldHRpbmcudHlwZSA9PSAiYm9vbCIgfQogICBlbmQKIGVuZAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmNw
cC5lcmIgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdz
LmNwcC5lcmIKaW5kZXggNmRlOWJjN2ZlMjY3ODc2MjU2NDg4Mzg3ZWEyNDlmMGE1MmE4OWE1Yi4u
ODE3ZTI0ZDNkNDgwNjRmNjgxNjUyMDY2ODVhZWU2MjE1ZGVjMWM5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5jcHAuZXJiCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3Bw
LmVyYgpAQCAtNzksMjAgKzc5LDI0IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQog
PCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiA8JS0gZW5kIC0lPgoreworfQorCitTZXR0aW5nczo6
RW5hYmxlZEZlYXR1cmVzOjpFbmFibGVkRmVhdHVyZXMoKQorICAgIDogZHVtbXkoZmFsc2UpCiA8
JS0gZm9yIEBjb25kaXRpb24gaW4gQGFsbFNldHRpbmdzU2V0LmNvbmRpdGlvbnMgZG8gLSU+CiA8
JS0gaWYgQGNvbmRpdGlvbi5ib29sU2V0dGluZ3NOZWVkaW5nSW1wbGVtZW50YXRpb24ubGVuZ3Ro
ICE9IDAgLSU+CiA8JS0gaWYgQGNvbmRpdGlvbi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBjb25k
aXRpb24uY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgogPCUtIGZvciBAc2V0dGluZyBpbiBAY29u
ZGl0aW9uLmJvb2xTZXR0aW5nc05lZWRpbmdJbXBsZW1lbnRhdGlvbiAtJT4KLSAgICAsIG1fPCU9
IEBzZXR0aW5nLm5hbWUgJT4oU0VUVElOR19ERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHNldHRpbmcu
bmFtZSAlPikKKyAgICAsIDwlPSBAc2V0dGluZy5uYW1lICU+KFNFVFRJTkdfREVGQVVMVF9WQUxV
RV9GT1JfPCU9IEBzZXR0aW5nLm5hbWUgJT4pCiA8JS0gZW5kIC0lPgogPCUtIGlmIEBjb25kaXRp
b24uY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgogPCUtIGVuZCAtJT4KIDwlLSBl
bmQgLSU+Ci0KIHsKIH0KIApAQCAtMTAxLDcgKzEwNSw3IEBAIFNldHRpbmdzOjp+U2V0dGluZ3Mo
KQogfQogCiA8JS0gZm9yIEBjb25kaXRpb24gaW4gQGFsbFNldHRpbmdzU2V0LmNvbmRpdGlvbnMg
ZG8gLSU+Ci08JS0gaWYgQGNvbmRpdGlvbi5zZXR0aW5nc1dpdGhDb21wbGV4R2V0dGVyc05lZWRp
bmdJbXBsZW1lbnRhdGlvbi5sZW5ndGggIT0gMCBvciBAY29uZGl0aW9uLnNldHRpbmdzV2l0aENv
bXBsZXhTZXR0ZXJzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgorPCUtIGlm
IEBjb25kaXRpb24uc2V0dGluZ3NXaXRoQ29tcGxleEdldHRlcnNOZWVkaW5nSW1wbGVtZW50YXRp
b24ubGVuZ3RoICE9IDAgb3IgQGNvbmRpdGlvbi5ub25Cb29sU2V0dGluZ3NXaXRoQ29tcGxleFNl
dHRlcnNOZWVkaW5nSW1wbGVtZW50YXRpb24ubGVuZ3RoICE9IDAgb3IgQGNvbmRpdGlvbi5ib29s
U2V0dGluZ3NXaXRoQ29tcGxleFNldHRlcnNOZWVkaW5nSW1wbGVtZW50YXRpb24ubGVuZ3RoICE9
IDAgLSU+CiA8JS0gaWYgQGNvbmRpdGlvbi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBjb25kaXRp
b24uY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpAQCAtMTE0LDExICsxMTgsMTUgQEAgU2V0dGlu
Z3M6On5TZXR0aW5ncygpCiAgICAgICAgIHJldHVybiBtXzwlPSBAc2V0dGluZy5uYW1lICU+SW5z
cGVjdG9yT3ZlcnJpZGUudmFsdWUoKTsKICAgICB9CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBjb25k
aXRpb24uYm9vbFNldHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgor
ICAgIHJldHVybiBtX2ZlYXR1cmVzLjwlPSBAc2V0dGluZy5uYW1lICU+OworPCUtIGVsc2UgLSU+
CiAgICAgcmV0dXJuIG1fPCU9IEBzZXR0aW5nLm5hbWUgJT47Cis8JS0gZW5kIC0lPgogfQogPCUt
IGVuZCAtJT4KIAotPCUtIGZvciBAc2V0dGluZyBpbiBAY29uZGl0aW9uLnNldHRpbmdzV2l0aENv
bXBsZXhTZXR0ZXJzTmVlZGluZ0ltcGxlbWVudGF0aW9uIC0lPgorPCUtIGZvciBAc2V0dGluZyBp
biBAY29uZGl0aW9uLm5vbkJvb2xTZXR0aW5nc1dpdGhDb21wbGV4U2V0dGVyc05lZWRpbmdJbXBs
ZW1lbnRhdGlvbiAtJT4KIHZvaWQgU2V0dGluZ3M6OjwlPSBAc2V0dGluZy5zZXR0ZXJGdW5jdGlv
bk5hbWUgJT4oPCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4gPCU9IEBzZXR0aW5nLm5hbWUg
JT4pCiB7CiAgICAgaWYgKG1fPCU9IEBzZXR0aW5nLm5hbWUgJT4gPT0gPCU9IEBzZXR0aW5nLm5h
bWUgJT4pCkBAIC0xMjcsNiArMTM1LDE2IEBAIHZvaWQgU2V0dGluZ3M6OjwlPSBAc2V0dGluZy5z
ZXR0ZXJGdW5jdGlvbk5hbWUgJT4oPCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4KICAgICA8
JT0gQHNldHRpbmcub25DaGFuZ2UgJT4oKTsKIH0KIDwlLSBlbmQgLSU+CisKKzwlLSBmb3IgQHNl
dHRpbmcgaW4gQGNvbmRpdGlvbi5ib29sU2V0dGluZ3NXaXRoQ29tcGxleFNldHRlcnNOZWVkaW5n
SW1wbGVtZW50YXRpb24gLSU+Cit2b2lkIFNldHRpbmdzOjo8JT0gQHNldHRpbmcuc2V0dGVyRnVu
Y3Rpb25OYW1lICU+KDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBlICU+IDwlPSBAc2V0dGluZy5u
YW1lICU+KQoreworICAgIGlmIChtX2ZlYXR1cmVzLjwlPSBAc2V0dGluZy5uYW1lICU+ID09IDwl
PSBAc2V0dGluZy5uYW1lICU+KQorICAgICAgICByZXR1cm47CisgICAgbV9mZWF0dXJlcy48JT0g
QHNldHRpbmcubmFtZSAlPiA9IDwlPSBAc2V0dGluZy5uYW1lICU+OworICAgIDwlPSBAc2V0dGlu
Zy5vbkNoYW5nZSAlPigpOworfQorPCUtIGVuZCAtJT4KIDwlLSBpZiBAY29uZGl0aW9uLmNvbmRp
dGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIgYi9Tb3VyY2UvV2ViQ29y
ZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJiCmluZGV4IDJhZjQ1NGEx
MzJiNTZhMTVjMTJhMTI0OWExZDE1ODk2MDg5MTAxNDIuLjhjY2ViMzFkN2ZjNTZkZWRhMmQwYTI5
ZjkyMDE5MmM5Y2I1YzM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0
dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0
cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYgpAQCAtNDQsMTEgKzQ0LDIzIEBAIHB1
YmxpYzoKIDwlLSBpZiBAY29uZGl0aW9uLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQGNvbmRpdGlv
bi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Ci08JS0gZm9yIEBzZXR0aW5nIGluIEBjb25kaXRp
b24uc2V0dGluZ3NOZWVkaW5nSW1wbGVtZW50YXRpb24gZG8gLSU+Cis8JS0gZm9yIEBzZXR0aW5n
IGluIEBjb25kaXRpb24uYm9vbFNldHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uIGRvIC0lPgog
ICAgIDwlLSBpZiBAc2V0dGluZy5oYXNDb21wbGV4R2V0dGVyPyAtJT4KICAgICBXRUJDT1JFX0VY
UE9SVCA8JT0gQHNldHRpbmcucGFyYW1ldGVyVHlwZSAlPiA8JT0gQHNldHRpbmcuZ2V0dGVyRnVu
Y3Rpb25OYW1lICU+KCkgY29uc3Q7CiAgICAgPCUtIGVsc2UgLSU+Ci0gICAgPCU9IEBzZXR0aW5n
LnBhcmFtZXRlclR5cGUgJT4gPCU9IEBzZXR0aW5nLmdldHRlckZ1bmN0aW9uTmFtZSAlPigpIGNv
bnN0IHsgcmV0dXJuIG1fPCU9IEBzZXR0aW5nLm5hbWUgJT47IH0gCisgICAgPCU9IEBzZXR0aW5n
LnBhcmFtZXRlclR5cGUgJT4gPCU9IEBzZXR0aW5nLmdldHRlckZ1bmN0aW9uTmFtZSAlPigpIGNv
bnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuPCU9IEBzZXR0aW5nLm5hbWUgJT47IH0KKyAgICA8JS0g
ZW5kIC0lPgorICAgIDwlLSBpZiBAc2V0dGluZy5oYXNDb21wbGV4U2V0dGVyPyAtJT4KKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJGdW5jdGlvbk5hbWUgJT4oPCU9
IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4pOworICAgIDwlLSBlbHNlIC0lPgorICAgIHZvaWQg
PCU9IEBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSAlPig8JT0gQHNldHRpbmcucGFyYW1ldGVy
VHlwZSAlPiA8JT0gQHNldHRpbmcubmFtZSAlPikgeyBtX2ZlYXR1cmVzLjwlPSBAc2V0dGluZy5u
YW1lICU+ID0gPCU9IEBzZXR0aW5nLm5hbWUgJT47IH0KKyAgICA8JS0gZW5kIC0lPgorPCUtIGVu
ZCAtJT4KKzwlLSBmb3IgQHNldHRpbmcgaW4gQGNvbmRpdGlvbi5ub25Cb29sU2V0dGluZ3NOZWVk
aW5nSW1wbGVtZW50YXRpb24gZG8gLSU+CisgICAgPCUtIGlmIEBzZXR0aW5nLmhhc0NvbXBsZXhH
ZXR0ZXI/IC0lPgorICAgIFdFQkNPUkVfRVhQT1JUIDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBl
ICU+IDwlPSBAc2V0dGluZy5nZXR0ZXJGdW5jdGlvbk5hbWUgJT4oKSBjb25zdDsKKyAgICA8JS0g
ZWxzZSAtJT4KKyAgICA8JT0gQHNldHRpbmcucGFyYW1ldGVyVHlwZSAlPiA8JT0gQHNldHRpbmcu
Z2V0dGVyRnVuY3Rpb25OYW1lICU+KCkgY29uc3QgeyByZXR1cm4gbV88JT0gQHNldHRpbmcubmFt
ZSAlPjsgfQogICAgIDwlLSBlbmQgLSU+CiAgICAgPCUtIGlmIEBzZXR0aW5nLmhhc0NvbXBsZXhT
ZXR0ZXI/IC0lPgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgPCU9IEBzZXR0aW5nLnNldHRlckZ1
bmN0aW9uTmFtZSAlPig8JT0gQHNldHRpbmcucGFyYW1ldGVyVHlwZSAlPik7CkBAIC02OSw2ICs4
MSwyNiBAQCBwdWJsaWM6CiAgICAgPCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiAKKyAgICBzdHJ1
Y3QgRW5hYmxlZEZlYXR1cmVzIHsKKyAgICAgICAgRW5hYmxlZEZlYXR1cmVzKCk7CisKKyAgICAg
ICAgYm9vbCBkdW1teSB7IGZhbHNlIH07Cis8JS0gZm9yIEBjb25kaXRpb24gaW4gQGFsbFNldHRp
bmdzU2V0LmNvbmRpdGlvbnMgZG8gLSU+CisgICAgPCUtIGlmIEBjb25kaXRpb24uYm9vbFNldHRp
bmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgorICAgICAgICA8JS0gaWYg
QGNvbmRpdGlvbi5jb25kaXRpb24gLSU+CisjaWYgPCU9IEBjb25kaXRpb24uY29uZGl0aW9uICU+
CisgICAgICAgIDwlLSBlbmQgLSU+CisgICAgICAgIDwlLSBmb3IgQHNldHRpbmcgaW4gQGNvbmRp
dGlvbi5ib29sU2V0dGluZ3NOZWVkaW5nSW1wbGVtZW50YXRpb24gLSU+CisgICAgICAgIDwlPSBA
c2V0dGluZy50eXBlICU+IDwlPSBAc2V0dGluZy5uYW1lICU+IDogMTsKKyAgICAgICAgPCUtIGVu
ZCAtJT4KKyAgICAgICAgPCUtIGlmIEBjb25kaXRpb24uY29uZGl0aW9uIC0lPgorI2VuZGlmCisg
ICAgICAgIDwlLSBlbmQgLSU+CisgICAgPCUtIGVuZCAtJT4KKzwlLSBlbmQgLSU+CisgICAgfTsK
KyAgICBjb25zdCBFbmFibGVkRmVhdHVyZXMmIGVuYWJsZWRGZWF0dXJlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZmVhdHVyZXM7IH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTZXR0aW5ncyhQYWdlKik7CiAKQEAgLTkwLDIwICsxMjIsNyBAQCBwcml2YXRlOgogPCUtIGVu
ZCAtJT4KIDwlLSBlbmQgLSU+CiAKLTwlLSBmb3IgQGNvbmRpdGlvbiBpbiBAYWxsU2V0dGluZ3NT
ZXQuY29uZGl0aW9ucyBkbyAtJT4KLTwlLSBpZiBAY29uZGl0aW9uLmJvb2xTZXR0aW5nc05lZWRp
bmdJbXBsZW1lbnRhdGlvbi5sZW5ndGggIT0gMCAtJT4KLTwlLSBpZiBAY29uZGl0aW9uLmNvbmRp
dGlvbiAtJT4KLSNpZiA8JT0gQGNvbmRpdGlvbi5jb25kaXRpb24gJT4KLTwlLSBlbmQgLSU+Ci08
JS0gZm9yIEBzZXR0aW5nIGluIEBjb25kaXRpb24uYm9vbFNldHRpbmdzTmVlZGluZ0ltcGxlbWVu
dGF0aW9uIC0lPgotICAgIDwlPSBAc2V0dGluZy50eXBlICU+IG1fPCU9IEBzZXR0aW5nLm5hbWUg
JT4gOiAxOwotPCUtIGVuZCAtJT4KLTwlLSBpZiBAY29uZGl0aW9uLmNvbmRpdGlvbiAtJT4KLSNl
bmRpZgotPCUtIGVuZCAtJT4KLTwlLSBlbmQgLSU+Ci08JS0gZW5kIC0lPgotCisgICAgRW5hYmxl
ZEZlYXR1cmVzIG1fZmVhdHVyZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMTViZmEwNzYzYzU1YzU0YWRjMDJj
YThhZTliYjk0NDQyYzMyY2RkYi4uYjg0OGU3YjBlMTgyNDgyODNhOTUwZDNmMDBiNmVjYzFkNzE3
ZjIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaApAQCAtMjIzLDYgKzIyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNy
byhSVENSdHBSZWNlaXZlcikgXAogICAgIG1hY3JvKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSkgXAog
ICAgIG1hY3JvKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkgXAorICAgIG1hY3JvKFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyKSBcCiAgICAgbWFjcm8oUlRDUnRwU2VuZGVyKSBcCiAgICAgbWFjcm8oUlRD
UnRwVHJhbnNjZWl2ZXIpIFwKICAgICBtYWNybyhSVENSdHBUcmFuc2Zvcm0pIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZTc5YzFkOWU0YjZjMWNmNmM5Y2M2NzAzYjkyZjRmMDRiMTczZTczYi4uMGVlNDczMTNkZTcwYmY4
ZTQ2YjU2ODFmZDdjOWRhODQyOTRmNjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQwNjEsMTQgKzQwNjEsMTEgQEAg
c3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgaWYgKCRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewogICAgICAgICBh
c3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRW5hYmxlZEJ5U2V0dGluZy4iKSBpZiAkY29u
dGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30gZXEgIlZBTFVFX0lT
X01JU1NJTkciOwogCi0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJEb2N1bWVudC5oIik7Ci0g
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7Ci0KLSAgICAgICAgYXNzZXJ0
KCJFbmFibGVkQnlTZXR0aW5nIGNhbiBvbmx5IGJlIHVzZWQgYnkgaW50ZXJmYWNlcyBvbmx5IGV4
cG9zZWQgdG8gdGhlIFdpbmRvdyIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9ICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9IG5l
ICJXaW5kb3ciOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIik7CiAKICAgICAgICAgbXkgQGZsYWdzID0gc3BsaXQoLyYvLCAkY29udGV4dC0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pOwogICAgICAgICBmb3JlYWNoIG15
ICRmbGFnIChAZmxhZ3MpIHsKLSAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImRvd25jYXN0
PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0
ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIgLiBUb01ldGhv
ZE5hbWUoJGZsYWcpIC4gIkVuYWJsZWQoKSIpOworICAgICAgICAgICAgcHVzaChAY29uanVuY3Rz
LCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2RO
YW1lKCRmbGFnKSAuICJFbmFibGVkIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQwNzYsMTMg
KzQwNzMsMTIgQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAg
ICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBTZXR0aW5nc0NvbmRpdGlvbmFs
bHlSZWFkV3JpdGUuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRpbmdz
Q29uZGl0aW9uYWxseVJlYWRXcml0ZX0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogCiAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJEb2N1bWVudC5oIik7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJTZXR0aW5ncy5oIik7CiAKICAgICAgICAgYXNzZXJ0KCJTZXR0aW5nc0NvbmRpdGlvbmFs
bHlSZWFkV3JpdGUgY2FuIG9ubHkgYmUgdXNlZCBieSBpbnRlcmZhY2VzIG9ubHkgZXhwb3NlZCB0
byB0aGUgV2luZG93IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3Nl
ZH0gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH0gbmUgIldpbmRv
dyI7CiAKICAgICAgICAgbXkgQGZsYWdzID0gc3BsaXQoLyYvLCAkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57U2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlfSk7CiAgICAgICAgIGZv
cmVhY2ggbXkgJGZsYWcgKEBmbGFncykgewotICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAi
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFs
T2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkuIiAu
IFRvTWV0aG9kTmFtZSgkZmxhZykgLiAiRW5hYmxlZCgpIik7CisgICAgICAgICAgICBwdXNoKEBj
b25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+ZW5h
YmxlZEZlYXR1cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgkZmxhZykgLiAiRW5hYmxlZCIpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAK
aW5kZXggNzAzODRhMjYwODBhNjc2OWMxYWM2NWM0OGNjMDE0MDcwZTI4ZTRkOC4uNjljNThlYTA5
ZDM0OWEwODIzNjY3MDcwNDg0ZGMyN2JlZjgwN2QzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzLmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBA
IC0zMiw3ICszMSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpAQCAtMTg1LDcgKzE4Myw3IEBAIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OmluZm8oKSwgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQp
IHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIk1JWElOX0NPTlNUQU5UIiksIHN0cmxl
bigiTUlYSU5fQ09OU1RBTlQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
ICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CkBAIC0xOTMsNyArMTkxLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0KICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIpLCBz
dHJsZW4oIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIwMSw3
ICsxOTksNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTQogICAgIH0KICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNh
c3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQo
KSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmcy
RW5hYmxlZCkgewogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiUEFSVElBTF9NSVhJTl9D
T05TVEFOVF9GUk9NX1BBUlRJQUwiKSwgc3RybGVuKCJQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZS
T01fUEFSVElBTCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTMwMyw3ICszMDEsNyBAQCB2b2lkIEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6Omlu
Zm8oKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhp
cyk7CiAgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAjaWYg
KEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5l
bmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigibWl4aW5PcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbk9wZXJhdGlvbiIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtMzEyLDcgKzMxMCw3IEBAIHZvaWQgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
IH0KICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24y
MikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ29tcGxleE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGlu
Q29tcGxleE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpA
QCAtMzIxLDcgKzMxOSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIChFTkFCTEUoQ29u
ZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVz
dFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1
cmVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ3Vz
dG9tT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5DdXN0b21PcGVyYXRpb24iKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTMzMCw3ICszMjgsNyBAQCB2b2lkIEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAg
ICB9CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9u
MTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBp
ZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRp
bmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ29uZGl0aW9u
YWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC0zMzksNyArMzM3LDcgQEAgdm9pZCBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAgICAgfQogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRp
dGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghKGRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkgJiYgZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpKSB7CisgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RT
ZXR0aW5nRW5hYmxlZCAmJiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRp
bmcyRW5hYmxlZCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29uZGl0aW9u
YWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24i
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTM0OCw3ICszNDYsNyBA
QCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFkb3duY2Fz
dDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQo
KSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5n
MkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9u
IiksIHN0cmxlbigibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwpAQCAtMzU3LDcgKzM1NSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNl
bmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYg
RU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0
dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicGFydGlhbE1peGluT3BlcmF0aW9u
RnJvbVBhcnRpYWwiKSwgc3RybGVuKCJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtMzY2LDcgKzM2NCw3IEBA
IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1peGluUmVhZE9ubHlBdHRy
aWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTM3NSw3ICsz
NzMsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIm1peGluQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5BdHRyaWJ1dGUiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTM4NCw3ICszODIsNyBAQCB2
b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNl
dHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIm1peGluQ3VzdG9tQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5DdXN0b21BdHRyaWJ1dGUi
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTM5Myw3ICszOTEsNyBA
QCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oIm1peGluTm9kZUF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1peGluTm9kZUF0dHJpYnV0ZSIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtNDAyLDcgKzQwMCw3IEBA
IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiKSwgc3RybGVuKCJwYXJ0aWFs
TWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwpAQCAtNDExLDcgKzQwOSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNh
c3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVk
KCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0dGlu
ZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiTUlYSU5fQ09OU1RBTlQiKSwgc3RybGVu
KCJNSVhJTl9DT05TVEFOVCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpA
QCAtNDIwLDcgKzQxOCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1l
bnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0dGluZzJFbmFibGVk
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UIiksIHN0cmxl
bigiTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7CkBAIC00MjksNyArNDI3LDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFkb3du
Y2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJs
ZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0
aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJQQVJUSUFMX01JWElOX0NPTlNUQU5U
X0ZST01fUEFSVElBTCIpLCBzdHJsZW4oIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJU
SUFMIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKaW5kZXggODRiMzhmNzg4NDU2YmU0NDFk
OTIyOGVkMTZlOWZiYWI3NDhkZmRiYy4uOTE1MDgyZmRhZWE4YTNlOTZmZjU4MmU0OGZlODM0MTk4
NGE4MzhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNw
cApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KQEAgLTE5OCwxNCArMTk3LDE0IEBAIHZv
aWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNl
dHRpbmdzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKKyAgICBpZiAoIWRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZSIpLCBzdHJsZW4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KLSAgICBpZiAoIWRvd25j
YXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpIHsKKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmVuYWJsZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNldHRp
bmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UiKSwgc3RybGVuKCJzZXR0
aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC0yMTksMTAgKzIxOCwxMCBAQCB2b2lkIEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5y
dW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2VQdWJsaWNOYW1lKCks
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlX3J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSwgbnVsbHB0
ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSkpOwogICAgIC8vIEFkZGluZyBiYWNrIGF0
dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2
YXJpYW50IGFib3ZlLiAKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnNldHRpbmdzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCisgICAgaWYgKCFkb3duY2FzdDxEb2N1
bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQp
CiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEpTQzo6RE9NQXR0cmlidXRlR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfc2V0dGlu
Z3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlLCBudWxscHRyLCBKU0M6OkRPTUF0dHJp
YnV0ZUFubm90YXRpb24geyBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjppbmZvKCksIG51
bGxwdHIgfSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSkpOwogICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0ZSwgYnV0
IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50IGFib3Zl
LiAKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpCisgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpLT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQpCiAgICAgICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVBdHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVy
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IpKSk7CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0
dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKaW5kZXggYTcyNGIyZWM1NzY1Yjk2Y2I2
NWYxZWM2YjQ3N2I3MjM4ZjI3MjBiZS4uYTBlOGU5NWI4NTVhYzU4YjdmNjFkMDYxZjllODc5NmFk
Yjk1NTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcApAQCAtMjMsNyArMjMsNiBA
QAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAg
LTQ1LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJKU1Rlc3RFeGNlcHRpb24uaCIKICNpbmNsdWRlICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CkBAIC0yMDEsNyArMTk5LDcgQEAg
dm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3Mo
KS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRG
ZWF0dXJlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJs
ZWRCeVNldHRpbmdzQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1
dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTc1MSw3ICs3NDks
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05Qcm90
b3R5cGVGdW5jdGlvbl90b0pTT05Cb2R5KEpTRwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RSdW50aW1lRW5hYmxlZEVuYWJsZWQoKSkgewogICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxv
bmdBdHRyaWJ1dGUiKSwgdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpKTsKICAgICB9Ci0gICAgaWYgKGRvd25jYXN0PERv
Y3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdF
bmFibGVkKCkpIHsKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0
dXJlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRl
IiksIHRvSlM8SURMVW5zaWduZWRTaG9ydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUoKSkpOwogICAgIH0KICNpZiBFTkFC
TEUoVEVTVF9DT05ESVRJT05BTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQuY3BwCmluZGV4IDMwN2UzZGY4MmI0NjMxM2UyYmFmMmE2YWQ2NWRlNmM0OThmZmU5ZTkuLjJl
N2YwMzljYzk5ZDg1YjU4M2U3ZTljMjU0ODgyNzJjMTkxM2Q4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmgiCkBAIC00Miw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgpAQCAt
MjMyLDcgKzIzMCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRQcm90b3R5cGVGdW5jdGlvbl90b0pTT05CCiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdFJ1bnRpbWVFbmFibGVkRW5hYmxl
ZCgpKSB7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibG9uZ0F0dHJpYnV0ZSIpLCB0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdBdHRyaWJ1dGUoKSkpOwogICAgIH0KLSAgICBpZiAo
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50
ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0dGlu
Z3NBdHRyaWJ1dGUiKSwgdG9KUzxJRExVbnNpZ25lZFNob3J0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSgpKSk7CiAgICAg
fQogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCmluZGV4IDZiYmM4ZWE4Njg1Y2M2YWI1OWUyMTBl
MmU3MmYzNjllYmExOTQ2ZWYuLmFhODY2YTI4ZDZiMmE1MTg3ZjFkZGI4Yjk0ZTA4YTE5ZDM4Mjk5
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5j
cHAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtNDIsNyArNDEsNiBAQAog
I2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KQEAgLTI2Niw3ICsyNjQsNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5
cGVGdW5jdGlvbl90bwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnRlc3RSdW50aW1lRW5hYmxlZEVuYWJsZWQoKSkgewogICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvbmdBdHRyaWJ1dGUiKSwg
dG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sb25n
QXR0cmlidXRlKCkpKTsKICAgICB9Ci0gICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAg
ICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0
aW5nRW5hYmxlZCkgewogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIiksIHRvSlM8SURMVW5z
aWduZWRTaG9ydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZW5hYmxl
ZEJ5U2V0dGluZ3NBdHRyaWJ1dGUoKSkpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJ
T05BTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwCmluZGV4IDhlOTZjMGE0
M2JhMDE1NDIzZWQxNzkzYWZhMTYyMzgwOWUwMWZjZDMuLjE5Mjg0YmYxOWQyM2U3ODBlZThkZWMy
MmM5NGQwODI3MGRlOGQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNw
cApAQCAtMjEsMTQgKzIxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNU
ZXN0RGVyaXZlZERpY3Rpb25hcnkuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNr
cy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1ZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogCkBA
IC0yMTAsNyArMjA5LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAgICAgYXV0byBw
YXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIiksIHBh
cnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQotICAgIGlmIChkb3duY2FzdDxEb2N1bWVu
dD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICBp
ZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAg
ICAgICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxT
dHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZykpIHsKICAgICAgICAgICAgIGF1dG8gcGFy
dGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRp
bmcpKTsKICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmci
KSwgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2
ZWREaWN0aW9uYXJ5Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAppbmRleCA3YmE4NGYwM2RiYTRkZjkwZGQ0
M2I3MDQxNTVhYTIyNDU4YWYyYmRiLi42YTVjM2JmZjlkZDNmZDUzZDZkZTQwZGI2ZjI0MDIxNDhj
NjlhMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcApAQCAtMjEs
MTQgKzIxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9N
Q29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWb2lk
Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KIApAQCAtMjkzLDcg
KzI5Miw3IEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAgIGF1dG8gcGFydGlhbFN0
cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3Qs
IElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlh
bFN0cmluZ01lbWJlcikpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpLCBwYXJ0aWFsU3Ry
aW5nTWVtYmVyVmFsdWUpOwogICAgIH0KLSAgICBpZiAoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAgaWYgKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBp
ZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CiAg
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
bmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCBkZThkNGMxODZmZjEwMzBmNjE2YzExZGIyOWVkZjQ4
NTcyYmYzMWMxLi45YTkyMjI0YjM3YWQ3Yzk1OWM4NTUwN2FkNGQyY2ViNTkyNDZkNTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKQEAgLTMzLDcgKzMyLDYgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRlc3RFbmFibGVk
QnlTZXR0aW5nU3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CkBAIC0xNDQs
NyArMTQyLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHYKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFbmFibGVk
QnlTZXR0aW5nIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBpZiAoIWRv
d25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJs
ZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVj
dCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRp
bmdFbmFibGVkKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0
aW5nQ29uc3RhbnQiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CkBAIC0xODYsNyArMTg0LDcgQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVz
KHZtLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjppbmZvKCksIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IGZhbHNlOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYg
KCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5n
RW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVz
dFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTE5NSw3ICsxOTMsNyBAQCB2b2lkIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmICghZG93bmNhc3Q8RG9j
dW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgewor
ICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5nRW5hYmxl
ZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSwgc3Ry
bGVuKCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7CkBAIC0yMDQsNyArMjAyLDcgQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIShkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpICYmIGRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkub3RoZXJUZXN0U2V0dGluZ0VuYWJsZWQoKSkp
IHsKKyAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmdF
bmFibGVkICYmIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVkRmVhdHVyZXMoKS5vdGhlclRlc3RTZXR0aW5n
RW5hYmxlZCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlUd29TZXR0aW5nc0F0dHJp
YnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVR3b1NldHRpbmdzQXR0cmlidXRlIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC0yMTIsMTQgKzIxMCwxNCBAQCB2b2lkIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgotICAgIGlmICghKGRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdGcm9tUGFydGlhbEludGVy
ZmFjZUF0dHJpYnV0ZUVuYWJsZWQoKSAmJiBkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRnJvbVBhcnRpYWxJbnRlcmZhY2VFbmFibGVkKCkpKSB7
CisgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJsZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5nRnJv
bVBhcnRpYWxJbnRlcmZhY2VBdHRyaWJ1dGVFbmFibGVkICYmIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVk
RmVhdHVyZXMoKS50ZXN0U2V0dGluZ0Zyb21QYXJ0aWFsSW50ZXJmYWNlRW5hYmxlZCkpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJzdXBwbGVtZW50YWxBdHRyaWJ1dGUiKSwgc3RybGVuKCJzdXBwbGVt
ZW50YWxBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
Ci0gICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRl
c3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1
cmVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5
U2V0dGluZ0NvbnN0YW50IiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50IikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC0yNDUsMTEgKzI0MywxMSBAQCB2
b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RFbmFi
bGVkQnlTZXR0aW5nPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZl
RE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFj
dGl2ZURPTU9iamVjdC4iKTsKIAotICAgIGlmIChkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKQorICAgIGlmIChqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmdFbmFibGVkKQogICAgICAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQdWJsaWNO
YW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0
aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIHNldEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciksIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSkpOwotICAgIGlmIChkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKQorICAgIGlmIChqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmdFbmFibGVkKQogICAgICAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRl
UHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJs
ZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlQ29uc3RydWN0b3Is
IHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2
YXRlQ29uc3RydWN0b3IpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKLSAgICBpZiAoZG93bmNh
c3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQo
KSkgeworICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVzdFNldHRpbmdF
bmFibGVkKSB7CiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5UZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY0NvbnN0cnVjdG9yLCBzZXRKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY0NvbnN0cnVjdG9y
KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNQcml2YXRl
TmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0
dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3Rvciwg
c2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZh
dGVQdWJsaWNDb25zdHJ1Y3RvciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
bmFibGVkRm9yQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCmluZGV4IDFlODg4ZTA4MDZkMDVmMWVj
ZDYzZmFmZjM4NjQxZWIxZjU1MzA2MTQuLmU4MjI3Y2E1NDM3NGNlM2U2MWQ2NTFmNjZkOWFiNzIy
MTYyZDc3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcApAQCAtMjMs
NyArMjMsNiBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMSw3ICszMCw2IEBACiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KQEAgLTEzMSw3ICsxMjksNyBAQCB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8
QWN0aXZlRE9NT2JqZWN0LCBUZXN0RW5hYmxlZEZvckNvbnRleHQ+Ojp2YWx1ZSwgIkludGVyZmFj
ZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVu
dGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOwogCi0gICAgaWYgKChk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5h
YmxlZCgpICYmIFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dDo6ZW5hYmxlZEZvckNvbnRleHQo
KmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSkpCisgICAgaWYgKChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCku
dGVzdFNldHRpbmdFbmFibGVkICYmIFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dDo6ZW5hYmxl
ZEZvckNvbnRleHQoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRQdWJsaWNOYW1lKCksIEN1c3Rv
bUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkRm9yQ29udGV4dF9UZXN0U3Vi
T2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvciwgc2V0SlNUZXN0RW5hYmxlZEZvckNvbnRl
eHRfVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IpLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3Bw
CmluZGV4IGUyYTM5MGViNTc2NDFkODdjZWU4YTkwYmM4YjU4NTI0M2U5ZTZkYzYuLjlkOWEyMmY1
YWJhOGQxYzA1OTRlMTQ0MmJjYWYzZjNiZjMzNzRjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeS5jcHAKQEAgLTIxLDE0ICsyMSwxMyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaCIKIAotI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNldHRp
bmdzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgogCkBAIC0xOTksNyArMTk4LDcgQEAgSlNDOjpKU09iamVjdCogY29u
dmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEoKICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0
aWFsU3RyaW5nTWVtYmVyIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQotICAg
IGlmIChkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2Jh
bE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRp
bmdFbmFibGVkKCkpIHsKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2Jh
bE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZW5hYmxlZEZlYXR1cmVzKCkudGVz
dFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZykpIHsK
ICAgICAgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5n
VmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRE9NU3Ry
aW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKTsKICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVy
V2l0aEVuYWJsZWRCeVNldHRpbmciKSwgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAxYmIyNDM5NjFmMTZiMGIx
ZjBhOTY1YmJjODU3NjczMTBlNTIzYmIyLi4zZTVmYmM3NjllNDc2Nzc1YWRmNGE0Zjg3YzNlMGJk
ODdkOTIyMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtNDAsNyAr
MzksNiBAQAogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgpAQCAt
NDU0LDcgKzQ1Miw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RJbnRlcmZh
Y2U6OmluZm8oKSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
ICAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBmYWxzZTsKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0
PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkp
IHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5lbmFibGVkRmVhdHVyZXMoKS50ZXN0U2V0dGluZ0Vu
YWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVy
YXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRh
bG9uZURpY3Rpb25hcnkuY3BwCmluZGV4IGViZTZkYjU4NTNkNWRhMWQyMzQyZDFkY2Q0MDAyOWYy
ZDkzZWE0NjcuLjRkNGY1OWRlZTA4NTA0NTE1ZDU5N2M2MmZhMjczYmRmNzBmMTBkYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtMjQsNyArMjQsNiBA
QAogCiAjaW5jbHVkZSAiSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaCIKIAotI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bGxhYmxl
LmgiCkBAIC0zMyw3ICszMiw3IEBACiAjaW5jbHVkZSAiSlNET01Db252ZXJ0VW5pb24uaCIKICNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0
Q29uc3RydWN0b3IuaD4KQEAgLTI5MCw3ICsyODksNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0
RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SgogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb25hbDEzKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uYWwxNCkKLSAgICBpZiAoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmVuYWJs
ZWRGZWF0dXJlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBpZiAoIUlETERPTVN0
cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJs
ZWRCeVNldHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxP
YmplY3QsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnku
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CiAgICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFy
dGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRpYWxTdHJpbmdNZW1i
ZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODRl
NThjYzEzNWRkYjI1ZGEzYTdhODM4ZTc0YzNlNzhmNDA3YzlkNy4uMGNjYjRhNDIyNjBkN2RjYzYx
MmUwZTUxNTBmNjE0OWI3NDczZmFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTYyMiw2ICs2
MjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKFJlYXNvbkZv
clN1c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKSBmaW5h
bDsKIAorICAgIGNvbnN0IFNldHRpbmdzOjpFbmFibGVkRmVhdHVyZXMmIGVuYWJsZWRGZWF0dXJl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNldHRpbmdzKCkuZW5hYmxlZEZlYXR1cmVzKCk7IH0K
KwogICAgIHZvaWQgc3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpOwog
ICAgIHZvaWQgcmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRl
eCBmYzk1NzQ1Zjk3MzFmOTlkNDg1YmM2NTJjMTNiY2Q5NTk2MzIzZjE4Li5kMDk3ZDI1NjlhMmUy
NDUzNzUyMGExYWJmYzNmNTM1YTRjMmQ2MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC05NCw2ICs5NCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsgfTsK
ICAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsg
fTsKIAorICAgIGNvbnN0IFNldHRpbmdzOjpFbmFibGVkRmVhdHVyZXMmIGVuYWJsZWRGZWF0dXJl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZEZlYXR1cmVzOyB9CisKICAgICBjbGFz
cyBFbXB0eUV2ZW50TG9vcCBmaW5hbCA6IHB1YmxpYyBFdmVudExvb3AgewogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFJlZjxFbXB0eUV2ZW50TG9vcD4gY3JlYXRlKEpTQzo6Vk0mIHZtKQpA
QCAtMTA0LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIE1pY3JvdGFza1F1ZXVlJiBtaWNy
b3Rhc2tRdWV1ZSgpIGZpbmFsIHsgcmV0dXJuIG1fcXVldWU7IH07CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBFbXB0eUV2ZW50TG9vcChKU0M6OlZNJiB2bSkKKyAgICAgICAgZXhwbGljaXQgRW1w
dHlFdmVudExvb3AoSlNDOjpWTSYgdm0pCiAgICAgICAgICAgICA6IG1fcXVldWUoTWljcm90YXNr
UXVldWUodm0pKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTEyMCw2ICsxMjIsNyBAQCBwcml2
YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZWY8RW1wdHlFdmVudExvb3A+IG1fZXZlbnRMb29w
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrR3JvdXA+IG1fZXZlbnRMb29wVGFz
a0dyb3VwOworICAgIFNldHRpbmdzOjpFbmFibGVkRmVhdHVyZXMgbV9lbmFibGVkRmVhdHVyZXM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyMTUwZDIyNjExNWYxNTdjNGY2ZGVjOWUxNGFjOGVm
ODIzOTVmNjE4Li4wMmJhOTY5NGEyMzgzOTliNzIxMTM0NDU2OWFkZTJmOTI0YjVmNjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGFuZGxlVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNr
Lmg+CkBAIC0xMDMsNiArMTA0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3QgU2V0
dGluZ3M6OkVuYWJsZWRGZWF0dXJlcyYgZW5hYmxlZEZlYXR1cmVzKCkgY29uc3QgPSAwOworCiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDZmMGY2MmQ3ODNjOTQ4MWRiYWIxZWY5ZTM4ZTU3OWY0MGFhMWQyMDEu
LmE0MDEwODIyNzY3OWEwMWNkMzc0YTU0ZjA4MTUwNTRhMTA1ZGQ0YjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC03Myw5ICs3Myw3IEBAIFdv
cmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUs
IGNvbnN0IFdvcmtlclBhcmFtZXRlCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHNvY2tldFByb3Zp
ZGVyKQogICAgICwgbV9wZXJmb3JtYW5jZShQZXJmb3JtYW5jZTo6Y3JlYXRlKHRoaXMsIHBhcmFt
cy50aW1lT3JpZ2luKSkKICAgICAsIG1fcmVmZXJyZXJQb2xpY3kocGFyYW1zLnJlZmVycmVyUG9s
aWN5KQotICAgICwgbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKHBhcmFtcy5yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVFbmFibGVkKQotICAgICwgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZChwYXJhbXMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpCi0gICAgLCBtX3dlYkdM
RW5hYmxlZChwYXJhbXMud2ViR0xFbmFibGVkKQorICAgICwgbV9lbmFibGVkRmVhdHVyZXMocGFy
YW1zLmVuYWJsZWRGZWF0dXJlcykKIHsKICNpZiAhRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb25Qcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggN2FiMDlmNmFmMzNlNDViMjIzNzM4NmEzMDYzMTAx
YjllNTZmM2QxNy4uNDczY2Y5YTZjNzI3YzZmNDE0YzUyOTNjOWIxZmIyYzcxOWE0MDhlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMTIxLDkgKzEy
MSw5IEBAIHB1YmxpYzoKIAogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29u
c3QgZmluYWw7CiAKLSAgICBib29sIHJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQ7IH0KLSAgICBib29sIGFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZDsgfQotICAgIGJvb2wgd2ViR0xFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJHTEVuYWJsZWQ7IH0KKyAgICBib29sIHJlcXVlc3RBbmltYXRpb25GcmFtZUVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWRGZWF0dXJlcy5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVFbmFibGVkOyB9CisgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZEZlYXR1cmVzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkOyB9CisgICAgYm9vbCB3ZWJHTEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZWRGZWF0dXJlcy53ZWJHTEVuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgogICAgIFdvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlclRocmVhZFR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsK
QEAgLTE0Miw2ICsxNDIsOCBAQCBwcml2YXRlOgogCiAgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0IGZpbmFsOwogICAgIFN0
cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CisgICAgY29uc3QgU2V0dGlu
Z3M6OkVuYWJsZWRGZWF0dXJlcyYgZW5hYmxlZEZlYXR1cmVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9lbmFibGVkRmVhdHVyZXM7IH0KKwogICAgIEV2ZW50VGFyZ2V0KiBlcnJvckV2ZW50VGFy
Z2V0KCkgZmluYWw7CiAgICAgU3RyaW5nIHJlc291cmNlUmVxdWVzdElkZW50aWZpZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIoKSBmaW5hbDsKQEAgLTE4Nyw5ICsxODksNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1ZhbHVlUG9vbD4gbV9jc3NWYWx1ZVBvb2w7CiAgICAg
UmVmZXJyZXJQb2xpY3kgbV9yZWZlcnJlclBvbGljeTsKLSAgICBib29sIG1fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lRW5hYmxlZDsKLSAgICBib29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQ7Ci0gICAgYm9vbCBtX3dlYkdMRW5hYmxlZDsKKyAgICBTZXR0aW5nczo6RW5hYmxlZEZlYXR1
cmVzIG1fZW5hYmxlZEZlYXR1cmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCAx
MWZlMDZmYzZhMzZkODRjZTdjMmVhZWVmMzllY2Y2MTQ5NDIzNTgzLi5iNmQ0Y2UwMGI2NTJhNDVl
MjJiNWUxMWZlNDhkZGEzMDhkZTMzN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJM
LCBjb25zdCBTdAogCiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyID0gZG9jdW1l
bnQuc29ja2V0UHJvdmlkZXIoKTsKIAotICAgIFdvcmtlclBhcmFtZXRlcnMgcGFyYW1zID0geyBz
Y3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5LCB0aW1lT3JpZ2luLCByZWZlcnJlclBvbGljeSwgZG9jdW1lbnQuc2V0
dGluZ3MoKS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCksIGRvY3VtZW50LnNldHRpbmdz
KCkuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSwgZG9jdW1lbnQuc2V0dGluZ3MoKS53
ZWJHTEVuYWJsZWQoKSB9OworICAgIFdvcmtlclBhcmFtZXRlcnMgcGFyYW1zID0geyBzY3JpcHRV
UkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIGNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5LCB0aW1lT3JpZ2luLCByZWZlcnJlclBvbGljeSwgZG9jdW1lbnQuc2V0dGluZ3Mo
KS5lbmFibGVkRmVhdHVyZXMoKSB9OwogICAgIGF1dG8gdGhyZWFkID0gRGVkaWNhdGVkV29ya2Vy
VGhyZWFkOjpjcmVhdGUocGFyYW1zLCBzb3VyY2VDb2RlLCAqdGhpcywgKnRoaXMsICp0aGlzLCBz
dGFydE1vZGUsIGRvY3VtZW50LnRvcE9yaWdpbigpLCBwcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1
bnRpbWVGbGFncyk7CiAKICAgICB3b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVhZC5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOTg3OWU4MGY2MmMzYWJm
ZWE4ZmU5ZWY5Nzk3NjdlN2NiZjY3YmIxNC4uYThlMmRkYWZlZDA5YzJlOGU0MGMzMmE5Njk3N2Rh
NzI5MzVjMWUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAt
NTUsOSArNTUsNyBAQCBXb3JrZXJQYXJhbWV0ZXJzIFdvcmtlclBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSwKICAgICAgICAgdGltZU9yaWdpbiwKICAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0g
ICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQsCi0gICAgICAgIGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkLAotICAgICAgICB3ZWJHTEVuYWJsZWQsCisgICAgICAgIGVuYWJs
ZWRGZWF0dXJlcwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CmluZGV4IGUzZGYwOWU0ODMwMTQ1YmJjNzRhZDAxYmJkYTQ4NjEyYjA5YzA2MTguLjNiZmJmY2Jm
ZTc2MWE0ZTI1MzZlYWRmNmRkNmJhOTAxOWM0M2NlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaApAQCAtNjMsOSArNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgTW9ub3RvbmljVGltZSB0
aW1lT3JpZ2luOwogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5OwotICAgIGJvb2wg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZDsKLSAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkOwotICAgIGJvb2wgd2ViR0xFbmFibGVkOworICAgIFNldHRpbmdzOjpFbmFi
bGVkRmVhdHVyZXMgZW5hYmxlZEZlYXR1cmVzOwogCiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29s
YXRlZENvcHkoKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGE4
NGVhNGU5NzAzMWQwZWE5MDViMzQwMDk1NjlmM2Y3MzBhMDc0N2YuLmNlN2Q0MjJkMjUxMDQyZTI2
ZWZiZDQyYjBjZDYwYmFkYTUzMzJlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBA
IC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2Jq
ZWN0UHJveHkKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCi1TZXJ2aWNlV29y
a2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVy
UHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2Nr
ZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0
cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6
OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQ
b2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCB0cnVlLCB0cnVlLCB0cnVl
IH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1h
bCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0
KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdz
OjpjcmVhdGVBbGxFbmFibGVkKCkpCitTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNl
ckFnZW50LCBjb25zdCBTZXR0aW5nczo6RW5hYmxlZEZlYXR1cmVzJiBlbmFibGVkRmVhdHVyZXMs
IFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVi
dWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Q
cm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyVGhyZWFk
KHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVz
ZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGlu
ZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5v
dygpLCB7IH0sIGVuYWJsZWRGZWF0dXJlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRl
YnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmln
aW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFBy
b3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9k
YXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSkKICAgICAsIG1faGVhcnRCZWF0VGlt
ZW91dChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPnNob3VsZFVz
ZVNob3J0VGltZW91dCgpID8gaGVhcnRCZWF0VGltZW91dEZvclRlc3QgOiBoZWFydEJlYXRUaW1l
b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDhjNTA4M2JlM2I0OTRlZDViMTFiMDcz
MWRjNmYwZTI3MmVhOTQ1ZDAuLjgxNzQwZDlmMTliNmNiNTg4OTZkNjA4OTE2NTU3NmYyMDBmOWI4
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0
Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzksNyArODAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JF
X0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dl
clByb3h5JiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciop
OworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6RW5h
YmxlZEZlYXR1cmVzJiwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5Jiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCiAgICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDAzY2QyMzkwZDg5M2RhMDViM2RjMTc3MmM1
ODQyODEzMzAzMTNiZTcuLmIwMWNhNjZhNGExZDAxMzUxNGUxYmMxMWRmZTQxY2JjYzQ5OTAzMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtOTcsNyArOTcsNyBA
QCBzdGF0aWMgSGFzaFNldDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2VydmljZVdv
cmtlclRocmVhZFByb3hpZXMoKQogU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIENh
Y2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlciwgU3RvcmFnZUJsb2NraW5n
UG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkKICAgICA6IG1fcGFnZShjcmVhdGVQYWdlRm9y
U2VydmljZVdvcmtlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YSwgc3RvcmFnZUJs
b2NraW5nUG9saWN5KSkKICAgICAsIG1fZG9jdW1lbnQoKm1fcGFnZS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKSkKLSAgICAsIG1fc2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFk
OjpjcmVhdGUoZGF0YSwgV1RGTW92ZSh1c2VyQWdlbnQpLCAqdGhpcywgKnRoaXMsIGlkYkNvbm5l
Y3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSkpCisg
ICAgLCBtX3NlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKGRh
dGEsIFdURk1vdmUodXNlckFnZW50KSwgbV9kb2N1bWVudC0+ZW5hYmxlZEZlYXR1cmVzKCksICp0
aGlzLCAqdGhpcywgaWRiQ29ubmVjdGlvblByb3h5KG1fZG9jdW1lbnQpLCBtX2RvY3VtZW50LT5z
b2NrZXRQcm92aWRlcigpKSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9y
YWdlUHJvdmlkZXIpCiAgICAgLCBtX2luc3BlY3RvclByb3h5KCp0aGlzKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2IwMDk5MzE1
YzY0MzQ4MDhmYmFkNmZiMDMxNWM0MzQ3YzJkY2EzOC4uYWNmYmI2MDlmNzk5OTRhNTgyMGI3ZDFi
NDc2ZTRiNzI2M2MwYjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC01NCw2ICs1NCw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29y
a2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBjb25zdCBXb3Jr
CiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAgICAg
LCBtX3VybChwYXJhbWV0ZXJzLndpbmRvd1VSTCkKICAgICAsIG1fanNSdW50aW1lRmxhZ3MocGFy
YW1ldGVycy5qc1J1bnRpbWVGbGFncykKKyAgICAsIG1fZW5hYmxlZEZlYXR1cmVzKHBhcmFtZXRl
cnMuZW5hYmxlZEZlYXR1cmVzKQogewogICAgICsrZ051bWJlck9mV29ya2xldEdsb2JhbFNjb3Bl
czsKIApAQCAtNjgsNiArNjksNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTYwogICAgICwgbV91
cmwoY29kZS51cmwoKSkKICAgICAsIG1fanNSdW50aW1lRmxhZ3MoZG9jdW1lbnQuc2V0dGluZ3Mo
KS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCkpCiAgICAgLCBtX2NvZGUoV1RGTW92ZShjb2RlKSkK
KyAgICAsIG1fZW5hYmxlZEZlYXR1cmVzKGRvY3VtZW50LmVuYWJsZWRGZWF0dXJlcygpKQogewog
ICAgICsrZ051bWJlck9mV29ya2xldEdsb2JhbFNjb3BlczsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBiODE4NTliZGRiZGRjY2U1NmI3Njll
NTkyOTI1NjQyZDVlY2E4MzdiLi4wNjJhZGViYmEzNmQxOTVkYzc5OTgzYjNkY2NkODk5MjYyNzE5
NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApA
QCAtMTIzLDYgKzEyMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiwgRm9yY2VVVEY4ID0gRm9yY2VVVEY4OjpObykgY29uc3QgZmluYWw7CiAg
ICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBT
ZXR0aW5nczo6RW5hYmxlZEZlYXR1cmVzJiBlbmFibGVkRmVhdHVyZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2VuYWJsZWRGZWF0dXJlczsgfQogCiAgICAgc3RydWN0IFNjcmlwdEZldGNoSm9i
IHsKICAgICAgICAgVVJMIG1vZHVsZVVSTDsKQEAgLTE0Niw2ICsxNDcsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fc2NyaXB0TG9hZGVyOwogICAgIERlcXVl
PFNjcmlwdEZldGNoSm9iPiBtX3NjcmlwdEZldGNoSm9iczsKICAgICBIYXNoU2V0PFVSTD4gbV9l
dmFsdWF0ZWRNb2R1bGVzOworICAgIFNldHRpbmdzOjpFbmFibGVkRmVhdHVyZXMgbV9lbmFibGVk
RmVhdHVyZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAppbmRleCBhYWI4ZGRiZDk2OWI5N2Y3NTMzMjRk
ZDY4Nzc0NzQ5Mzc5NTQ1OWM0Li5mNzg2ZGM0OWY0YTMxNDVkZGY4MGM1YmIxYTllOGZjY2ZiM2Qx
Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIApAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAg
IEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzOwogICAgIGZsb2F0IHNhbXBsZVJhdGU7
CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CisgICAgU2V0dGluZ3M6OkVuYWJsZWRGZWF0dXJlcyBl
bmFibGVkRmVhdHVyZXM7CiAKICAgICBXb3JrbGV0UGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSBj
b25zdAogICAgIHsKQEAgLTQyLDcgKzQ0LDggQEAgc3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJzIHsK
ICAgICAgICAgICAgIHdpbmRvd1VSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgICAgIGpzUnVu
dGltZUZsYWdzLAogICAgICAgICAgICAgc2FtcGxlUmF0ZSwKLSAgICAgICAgICAgIGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCkKKyAgICAgICAgICAgIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
CisgICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMKICAgICAgICAgfTsKICAgICB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416147</attachid>
            <date>2020-12-14 03:11:07 -0800</date>
            <delta_ts>2020-12-15 08:46:01 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-219252-20201214121104.patch</filename>
            <type>text/plain</type>
            <size>53253</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFmMjg1OTVhN2IwMzVl
NDQzODBlZjc2NDE3OWY1NTMxOTc0ZTZlYi4uNTVkNjc4YTRmYWNmYWI0NDgxMzgxMTFhZjhlZDUx
NTJjOTE5MzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEyLTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHdvcmtlciBSVEMg
aW5zZXJ0YWJsZSBzdHJlYW1zIGNvbnN0cnVjdHMgY29udHJvbGxlZCBieSB3ZWJydGMgaW5zZXJ0
YWJsZSBzdHJlYW1zIGZlYXR1cmUgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc5
ODI0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgYmluZGluZyBnZW5lcmF0b3IgdG8gdXNlIHRoZSBuZXcgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c2V0dGluZ3NWYWx1ZXMgZ2V0dGVyLgorICAgICAgICBFbmFibGUgdXNlIG9mIEVuYWJs
ZWRCeVNldHRpbmdzIG91dHNpZGUgd2luZG93IGNvbnRleHQuCisgICAgICAgIE1ha2UgdXNlIG9m
IGl0IGluIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMgYW5kIHJlYmFzZWQgYmluZGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUnVudGltZUVuYWJsZUNv
bmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZUZ1bmN0aW9uX3Rv
SlNPTkJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5
cGVGdW5jdGlvbl90b0pTT05Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0
aW9uYXJ5VG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVu
YWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0
dGluZ0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
aGVyaXRlZERpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25h
cnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dGFuZGFsb25lRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlv
bmFyeVRvSlMpOgorCiAyMDIwLTEyLTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIGFuIGlzb2xhdGVkIGNvcHkgb2YgU2V0dGluZ3MgdG8gd29ya2Vy
cyBhbmQgd29ya2xldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCmluZGV4IGQ0MGQ1NmMxZDMwODgy
YWNhOTYzNjRhYTc1NmM0OWQ5ZGMwZWYzYmQuLmQxMTU0OTdmMGYyNTM2MzBiYmY0NzU0NjQ5MWNl
OTQ3OWY4ODllYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCkBAIC0yNSw2ICsyNSw3IEBACiAK
IFsKICAgICBDb25kaXRpb25hbD1XRUJfUlRDLAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRD
SW5zZXJ0YWJsZVN0cmVhbXMsCiAgICAgRXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIsCiAgICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFJUQ0VuY29kZWRBdWRpb0ZyYW1l
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5j
b2RlZFZpZGVvRnJhbWUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENFbmNvZGVkVmlkZW9GcmFtZS5pZGwKaW5kZXggYTUwYjA0ODYwZDU2MDlhYzNlYzY1ZjdmMmZi
MTM5ZDQ5MTUwMWJmNC4uMWFlNDU5OTY1OTU4YmViMzIxZWNjNDM4YzNlYjliNDVhZmEyODdkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVk
VmlkZW9GcmFtZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENFbmNvZGVkVmlkZW9GcmFtZS5pZGwKQEAgLTI3LDYgKzI3LDcgQEAgZW51bSBSVENFbmNvZGVk
VmlkZW9GcmFtZVR5cGUgeyAiZW1wdHkiLCAia2V5IiwgImRlbHRhIiB9OwogCiBbCiAgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAogICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAogICAgIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBSVENFbmNvZGVkVmlkZW9GcmFtZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIuaWRsCmluZGV4IDg3NzQ1NTdkMDVkYzVhMDUwM2U5ZTE3MmJiOTJkNjQ3
ZTQ5MDA5NmUuLjBmOTQwY2NkZWIzMDI0Zjk0NGE5MTBmMDg1MzU2MjdhMzc5NTU2YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsCkBAIC0yMywxMCArMjMsMTAgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBGSVhNRTogQWRkIEVuYWJsZWRCeVNl
dHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNl
cnRhYmxlU3RyZWFtcywKICAgICBFeHBvc2VkPURlZGljYXRlZFdvcmtlciwKICAgICBKU0dlbmVy
YXRlVG9OYXRpdmVPYmplY3QsCiBdIGludGVyZmFjZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29udGV4dC5pZGwKaW5kZXggY2ZiOTgxZjhk
YTliMjY5YmNlNjQ5OGUwYmYxZjE2ODczMmFiOTQ4Ni4uZTA4MzMwYzgwZGNiNGI2MTViMjg3ZGUw
MTllODJjNDZkN2MxYjhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb250ZXh0
LmlkbApAQCAtMjgsNiArMjgsNyBAQCBlbnVtIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29udGV4
dE1lZGlhVHlwZSB7ICJhdWRpbyIsICJ2aWRlbyIgfTsKIAogWwogICAgIENvbmRpdGlvbmFsPVdF
Ql9SVEMsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKICAg
ICBFeHBvc2VkPURlZGljYXRlZFdvcmtlciwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAogXSBpbnRlcmZhY2UgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb250ZXh0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCA3M2Q2
YmQ0OGQ3MzQ1MzdmMjc3OTAzN2NkMGJhYjVlNzI4YmU4ZDFjLi4zYWI5ZjA4MjhhNTI4MDE5M2Y2
YWVkZGU4YTA0MzJlZWMzZmE1MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMTUsNiArMjE1LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhS
VENEYXRhQ2hhbm5lbCkgXAogICAgIG1hY3JvKFJUQ0RhdGFDaGFubmVsRXZlbnQpIFwKKyAgICBt
YWNybyhSVENFbmNvZGVkQXVkaW9GcmFtZSkgXAorICAgIG1hY3JvKFJUQ0VuY29kZWRWaWRlb0Zy
YW1lKSBcCiAgICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCiAgICAgbWFjcm8oUlRDSWNlVHJh
bnNwb3J0KSBcCiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwKQEAgLTIyMiw2ICsyMjQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb25JY2VF
cnJvckV2ZW50KSBcCiAgICAgbWFjcm8oUlRDUnRwUmVjZWl2ZXIpIFwKICAgICBtYWNybyhSVENS
dHBTY3JpcHRUcmFuc2Zvcm0pIFwKKyAgICBtYWNybyhSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcikg
XAorICAgIG1hY3JvKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29udGV4dCkgXAogICAgIG1hY3Jv
KFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAgICAgbWFj
cm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDkyZmVjNzQxNjZiYThhNjNkY2RjZTVhN2Uw
NjRmNzdmYWUyZDM3NGQuLjcyYTE2MmJkMTkxOThhNWZjYWQ2YjhhZTMyYTBlZGY3ZWRhYTdmYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC00MDcwLDE0ICs0MDcwLDExIEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmluZwogICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RW5hYmxlZEJ5U2V0dGluZ30pIHsKICAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUg
Zm9yIEVuYWJsZWRCeVNldHRpbmcuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0VuYWJsZWRCeVNldHRpbmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKIAotICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiRG9jdW1lbnQuaCIpOwotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
U2V0dGluZ3MuaCIpOwotCi0gICAgICAgIGFzc2VydCgiRW5hYmxlZEJ5U2V0dGluZyBjYW4gb25s
eSBiZSB1c2VkIGJ5IGludGVyZmFjZXMgb25seSBleHBvc2VkIHRvIHRoZSBXaW5kb3ciKSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSAmJiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSBuZSAiV2luZG93IjsKKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIpOwogCiAgICAgICAgIG15IEBm
bGFncyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRC
eVNldHRpbmd9KTsKICAgICAgICAgZm9yZWFjaCBteSAkZmxhZyAoQGZsYWdzKSB7Ci0gICAgICAg
ICAgICBwdXNoKEBjb25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4gVG9NZXRob2ROYW1lKCRmbGFnKSAuICJFbmFibGVkKCki
KTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2V0dGluZ3NWYWx1ZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRmbGFnKSAuICJFbmFibGVkIik7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTQwODUsMTMgKzQwODIsMTIgQEAgc3ViIEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5
IHZhbHVlIGZvciBTZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGUuIikgaWYgJGNvbnRleHQt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZX0gZXEg
IlZBTFVFX0lTX01JU1NJTkciOwogCiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJEb2N1bWVu
dC5oIik7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7CiAKICAgICAg
ICAgYXNzZXJ0KCJTZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGUgY2FuIG9ubHkgYmUgdXNl
ZCBieSBpbnRlcmZhY2VzIG9ubHkgZXhwb3NlZCB0byB0aGUgV2luZG93IikgaWYgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH0gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RXhwb3NlZH0gbmUgIldpbmRvdyI7CiAKICAgICAgICAgbXkgQGZsYWdzID0g
c3BsaXQoLyYvLCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGluZ3NDb25kaXRp
b25hbGx5UmVhZFdyaXRlfSk7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZsYWcgKEBmbGFncykgewot
ICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkuIiAuIFRvTWV0aG9kTmFtZSgkZmxhZykgLiAiRW5h
YmxlZCgpIik7CisgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVu
dD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS4iIC4gVG9NZXRob2RO
YW1lKCRmbGFnKSAuICJFbmFibGVkIik7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAppbmRleCA3MDM4NGEyNjA4MGE2NzY5YzFhYzY1
YzQ4Y2MwMTQwNzBlMjhlNGQ4Li44OTIwZmEwMTk4YWE0ZjdkNjU3ZjYwMjI4NGY5OTEyYjc2NjNm
NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCkBAIC0yMyw3
ICsyMyw2IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01J
c29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMyLDcgKzMxLDYgQEAKICNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVy
Lmg+CkBAIC0xODUsNyArMTgzLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0KICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlczo6aW5mbygpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZh
bHVlcywgKnRoaXMpOwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygp
LnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NW
YWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJNSVhJTl9DT05TVEFOVCIpLCBzdHJsZW4oIk1JWElOX0NPTlNUQU5UIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OwpAQCAtMTkzLDcgKzE5MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNCiAgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0g
ICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmds
b2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
Z2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygp
LnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIk1J
WElOX1JFRkxFQ1RFRF9DT05TVEFOVCIpLCBzdHJsZW4oIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFO
VCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTIwMSw3ICsxOTksNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTQogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0
dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCIpLCBzdHJsZW4o
IlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwpAQCAt
MzAzLDcgKzMwMSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6aW5mbygpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBib29sIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSBmYWxzZTsKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFkb3duY2FzdDxE
b2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkg
eworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5h
YmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluT3BlcmF0aW9uIiksIHN0cmxlbigibWl4
aW5PcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTMx
Miw3ICszMTAsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlv
bjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAg
aWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0
aW5nMkVuYWJsZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ29tcGxleE9w
ZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ29tcGxleE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtMzIxLDcgKzMxOSw3IEBAIHZvaWQgSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0K
ICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigibWl4aW5DdXN0b21PcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkN1c3Rv
bU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtMzMw
LDcgKzMyOCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9u
MTEpICYmIEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5Db25kaXRp
b25hbE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAt
MzM5LDcgKzMzNyw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0
aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAg
ICBpZiAoIShkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RT
ZXR0aW5nRW5hYmxlZCgpICYmIGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRp
bmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSkgeworICAgIGlmICghKGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCAmJiBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1p
eGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluU2V0dGluZ3ND
b25kaXRpb25hbE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwpAQCAtMzQ4LDcgKzM0Niw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIChFTkFCTEUo
Q29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NW
YWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5S
ZXN1bHRGaWVsZE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24i
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTM1Nyw3ICszNTUsNyBA
QCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdz
KCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicGFy
dGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSwgc3RybGVuKCJwYXJ0aWFsTWl4aW5PcGVy
YXRpb25Gcm9tUGFydGlhbCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpA
QCAtMzY2LDcgKzM2NCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1l
bnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiksIHN0cmxlbigi
bWl4aW5SZWFkT25seUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwpAQCAtMzc1LDcgKzM3Myw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8
RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkp
IHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVu
YWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1p
eGluQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC0z
ODQsNyArMzgyLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4o
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgeworICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ3VzdG9tQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5D
dXN0b21BdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAg
LTM5Myw3ICszOTEsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50
Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAg
aWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Ob2RlQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5O
b2RlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC00
MDIsNyArNDAwLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4o
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgeworICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIiksIHN0
cmxlbigicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiKSk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTQxMSw3ICs0MDksNyBAQCB2b2lkIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB9CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMo
KS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiTUlYSU5fQ09OU1RB
TlQiKSwgc3RybGVuKCJNSVhJTl9DT05TVEFOVCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwpAQCAtNDIwLDcgKzQxOCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICNlbmRpZgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0
aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJNSVhJTl9SRUZMRUNURURfQ09OU1RB
TlQiKSwgc3RybGVuKCJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiKSk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTQyOSw3ICs0MjcsNyBAQCB2b2lkIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB9CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCgpKSB7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMo
KS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiUEFSVElBTF9NSVhJ
Tl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiKSwgc3RybGVuKCJQQVJUSUFMX01JWElOX0NPTlNUQU5U
X0ZST01fUEFSVElBTCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCmluZGV4IDg0YjM4Zjc4
ODQ1NmJlNDQxZDkyMjhlZDE2ZTlmYmFiNzQ4ZGZkYmMuLmMyN2ZiZGU4ODgxOTE3OWIwNmI0OTlk
MjBjYTkzNmQ1Y2RjZDhhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CkBAIC0xOTgsMTQgKzE5
NywxNCBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9Ci0gICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CisgICAgaWYgKCFkb3du
Y2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RGZWF0dXJl
RW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRX
cml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KLSAgICBp
ZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdEZlYXR1
cmVFbmFibGVkKCkpIHsKKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdEZlYXR1cmVFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
Pigic2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSIpLCBzdHJs
ZW4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UiKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKQEAgLTIxOSwxMCArMjE4LDEwIEBAIHZv
aWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Io
dm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpLnJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZVB1Ymxp
Y05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNl
LCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7CiAgICAgLy8gQWRkaW5n
IGJhY2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFk
LXdyaXRlIHZhcmlhbnQgYWJvdmUuIAotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICBpZiAoIWRvd25j
YXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzVmFsdWVzKCkudGVzdEZlYXR1cmVF
bmFibGVkKQogICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2V0dGluZ3ND
b25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHVibGljTmFtZSgpLCBKU0M6OkRPTUF0dHJp
YnV0ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
X3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSwgbnVsbHB0ciwgSlNDOjpE
T01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5m
bygpLCBudWxscHRyIH0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSkpKTsKICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1
dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFu
dCBhYm92ZS4gCi0gICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQorICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQpCiAgICAg
ICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IpKSk7CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYg
c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9i
amVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKaW5kZXggYTcyNGIyZWM1NzY1
Yjk2Y2I2NWYxZWM2YjQ3N2I3MjM4ZjI3MjBiZS4uNjRiMDkwNmJiZWFmMWUyY2VjZGIxNzE2MjJm
M2NjMGU1OTgzNmIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcApAQCAtMjMsNyAr
MjMsNiBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNv
U3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKQEAgLTQ1LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJKU1Rlc3RFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CkBAIC0yMDEsNyArMTk5
LDcgQEAgdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
ZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nc0F0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtNzUxLDcg
Kzc0OSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNP
TlByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkoSlNHCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdFJ1bnRpbWVFbmFibGVkRW5hYmxlZCgpKSB7
CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibG9uZ0F0dHJpYnV0ZSIpLCB0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmxvbmdBdHRyaWJ1dGUoKSkpOwogICAgIH0KLSAgICBpZiAoZG93bmNh
c3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0
dGluZ0VuYWJsZWQoKSkgeworICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlTZXR0aW5nc0F0dHJp
YnV0ZSIpLCB0b0pTPElETFVuc2lnbmVkU2hvcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlKCkpKTsKICAgICB9CiAjaWYg
RU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0LmNwcAppbmRleCAzMDdlM2RmODJiNDYzMTNlMmJhZjJhNmFkNjVkZTZjNDk4ZmZlOWU5
Li4zYjkxZDgwMjdlYzMxYzAwYzYxNjlmNjBhZTZjMzU3ZGMzYmM2YmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgot
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgpAQCAtNDIsNyArNDEsNiBAQAogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4K
QEAgLTIzMiw3ICsyMzAsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQgogICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RSdW50aW1lRW5hYmxlZEVu
YWJsZWQoKSkgewogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImxvbmdBdHRyaWJ1dGUiKSwgdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpKTsKICAgICB9Ci0gICAg
aWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdz
KCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0
dGluZ3NBdHRyaWJ1dGUiKSwgdG9KUzxJRExVbnNpZ25lZFNob3J0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSgpKSk7CiAg
ICAgfQogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCmluZGV4IDZiYmM4ZWE4Njg1Y2M2YWI1OWUy
MTBlMmU3MmYzNjllYmExOTQ2ZWYuLmY3OTczNWJkYWMyMjNmYTYyODEyNmI4NTQ5M2FjZmJhNDNh
NGYwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bC5jcHAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgog
I2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtNDIsNyArNDEsNiBA
QAogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KQEAgLTI2Niw3ICsyNjQsNyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90
b3R5cGVGdW5jdGlvbl90bwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RSdW50aW1lRW5hYmxlZEVuYWJsZWQoKSkgewogICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvbmdBdHRyaWJ1dGUi
KSwgdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5s
b25nQXR0cmlidXRlKCkpKTsKICAgICB9Ci0gICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsK
KyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNl
dHRpbmdFbmFibGVkKSB7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiKSwgdG9KUzxJRExV
bnNpZ25lZFNob3J0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5lbmFi
bGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSgpKSk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0NPTkRJ
VElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAKaW5kZXggOGU5NmMw
YTQzYmEwMTU0MjNlZDE3OTNhZmExNjIzODA5ZTAxZmNkMy4uZjZkZDg0YTMxZjc3NjM3NjQ1ZDVm
MTljOGRjNGFjZDgzNWYyMzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnku
Y3BwCkBAIC0yMSwxNCArMjEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJK
U1Rlc3REZXJpdmVkRGljdGlvbmFyeS5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgogI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAK
QEAgLTIxMCw3ICsyMDksNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgICAgICBhdXRv
IHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSwg
cGFydGlhbFN0cmluZ01lbWJlclZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAg
IGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewog
ICAgICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFs
U3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBh
cnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0
aW5nKSk7CiAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5n
IiksIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeTIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAKaW5kZXggN2JhODRmMDNkYmE0ZGY5MGRk
NDNiNzA0MTU1YWEyMjQ1OGFmMmJkYi4uYjIxZGZhMWEwNjdkZmQwN2M0NTMxYjAxM2E2ZDk1ZDA5
MGQ4OWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAKQEAgLTIx
LDE0ICsyMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdERlcml2
ZWREaWN0aW9uYXJ5Mi5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0
cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTVm9p
ZENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAKQEAgLTI5Myw3
ICsyOTIsNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgICAgICBhdXRvIHBhcnRpYWxT
dHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRp
YWxTdHJpbmdNZW1iZXIpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSwgcGFydGlhbFN0
cmluZ01lbWJlclZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgIGlmIChqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBp
ZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CiAg
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
bmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCBkZThkNGMxODZmZjEwMzBmNjE2YzExZGIyOWVkZjQ4
NTcyYmYzMWMxLi40ODA2Mjk5MjBlNTJmYzVmOWJkZjc1ZjdmMzBjYjQ5M2E1ZTM5ZjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKQEAgLTMzLDcgKzMyLDYgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRlc3RFbmFibGVk
QnlTZXR0aW5nU3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CkBAIC0xNDQs
NyArMTQyLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHYKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFbmFibGVk
QnlTZXR0aW5nIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBpZiAoIWRv
d25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJs
ZWQoKSkgeworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVj
dCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGlu
Z0VuYWJsZWQpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRp
bmdDb25zdGFudCIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKQEAgLTE4Niw3ICsxODQsNyBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAo
IWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdF
bmFibGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RT
ZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdPcGVy
YXRpb24iKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CkBAIC0xOTUsNyArMTkzLDcgQEAgdm9pZCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIWRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSwgc3RybGVu
KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7CkBAIC0yMDQsNyArMjAyLDcgQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogI2VuZGlmCiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIShkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpICYmIGRvd25jYXN0PERvY3VtZW50
Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkub3RoZXJUZXN0U2V0dGluZ0VuYWJsZWQoKSkpIHsK
KyAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJs
ZWQgJiYganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkub3RoZXJUZXN0U2V0dGluZ0VuYWJs
ZWQpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5VHdvU2V0dGluZ3NBdHRyaWJ1dGUi
KSwgc3RybGVuKCJlbmFibGVkQnlUd29TZXR0aW5nc0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtMjEyLDE0ICsyMTAsMTQgQEAgdm9pZCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoIShkb3duY2FzdDxEb2N1bWVudD4o
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRnJvbVBhcnRpYWxJbnRlcmZhY2VB
dHRyaWJ1dGVFbmFibGVkKCkgJiYgZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZ0Zyb21QYXJ0aWFsSW50ZXJmYWNlRW5hYmxlZCgpKSkgeworICAg
IGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRnJvbVBhcnRp
YWxJbnRlcmZhY2VBdHRyaWJ1dGVFbmFibGVkICYmIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVl
cygpLnRlc3RTZXR0aW5nRnJvbVBhcnRpYWxJbnRlcmZhY2VFbmFibGVkKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oInN1cHBsZW1lbnRhbEF0dHJpYnV0ZSIpLCBzdHJsZW4oInN1cHBsZW1lbnRhbEF0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KLSAgICBp
ZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRp
bmdFbmFibGVkKCkpIHsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRl
c3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdD
b25zdGFudCIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwpAQCAtMjQ1LDExICsyNDMsMTEgQEAgdm9pZCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RW5hYmxlZEJ5U2V0
dGluZz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVj
dF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01P
YmplY3QuIik7CiAKLSAgICBpZiAoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRp
bmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKQogICAgICAgICBwdXREaXJlY3RDdXN0b21B
Y2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQdWJsaWNOYW1lKCksIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIHNldEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciksIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSkpOwotICAgIGlmIChkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKQorICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpCiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5i
dWlsdGluTmFtZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQcml2YXRlTmFt
ZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVDb25zdHJ1Y3Rvciwgc2V0SlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVDb25zdHJ1
Y3RvciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOwotICAgIGlmIChkb3duY2FzdDxEb2N1bWVu
dD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAg
aWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewog
ICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdQcml2YXRlUHVibGljUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
Z1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3Rvciwgc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3RvciksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSkpOwogICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljUHJpdmF0ZU5hbWUoKSwgQ3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljQ29uc3RydWN0b3IsIHNldEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljQ29u
c3RydWN0b3IpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmNwcAppbmRleCAxZTg4OGUwODA2ZDA1ZjFlY2Q2M2ZhZmYzODY0
MWViMWY1NTMwNjE0Li5lZmZiYTYxNTEyNGI1YmE3MmNhZTAyYzk1M2FiZDBmODhmOTkzNDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKQEAgLTIzLDcgKzIzLDYgQEAK
IAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgpAQCAtMzEsNyArMzAsNiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CkBAIC0xMzEs
NyArMTI5LDcgQEAgdm9pZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogCiAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9i
amVjdCwgVGVzdEVuYWJsZWRGb3JDb250ZXh0Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1h
cmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFz
cyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKIAotICAgIGlmICgoZG93bmNhc3Q8RG9j
dW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSAmJiBU
ZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHQ6OmVuYWJsZWRGb3JDb250ZXh0KCpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkpKQorICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdF
bmFibGVkICYmIFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dDo6ZW5hYmxlZEZvckNvbnRleHQo
KmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSkpCiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5U
ZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkRm9yQ29udGV4dF9UZXN0U3ViT2JqRW5hYmxlZEZv
ckNvbnRleHRDb25zdHJ1Y3Rvciwgc2V0SlNUZXN0RW5hYmxlZEZvckNvbnRleHRfVGVzdFN1Yk9i
akVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCmluZGV4IGUyYTM5
MGViNTc2NDFkODdjZWU4YTkwYmM4YjU4NTI0M2U5ZTZkYzYuLmQ1MDA2MzhlZjQxYzQ0ZTc2OGY1
ZjM3ZDNlOTAxYzRhNGRkYThjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlv
bmFyeS5jcHAKQEAgLTIxLDE0ICsyMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkpTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oPgogCkBAIC0xOTksNyArMTk4LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25h
cnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAg
ICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
ZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVt
YmVyIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQotICAgIGlmIChkb3duY2Fz
dDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkp
IHsKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJs
ZWQpIHsKICAgICAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnku
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSkgewogICAgICAgICAgICAg
YXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBJRExET01TdHJpbmc6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxl
ZEJ5U2V0dGluZykpOwogICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5
U2V0dGluZyIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDFiYjI0Mzk2MWYxNmIwYjFmMGE5NjViYmM4NTc2
NzMxMGU1MjNiYjIuLjM1YzQzYzMxMGJiMDFiZjllN2Q1ZmI5ODc3Y2RhMDdiM2U1MTQ1MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmli
dXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC00MCw3ICszOSw2IEBACiAjaW5j
bHVkZSAiSlNUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRlc3RTdXBwbGVtZW50YWwuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CkBAIC00NTQsNyArNDUyLDcg
QEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEludGVyZmFjZTo6aW5mbygpLCBK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIGJvb2wgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxl
bigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5
LmNwcAppbmRleCBlYmU2ZGI1ODUzZDVkYTFkMjM0MmQxZGNkNDAwMjlmMmQ5M2VhNDY3Li5kZTAw
YWFjNTc1MjNiYzBlOWE2N2VlMWZjMmY2ZWY2Mjk5ODI2MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25h
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUg
IkpTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRD
YWxsYmFja3MuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdWxsYWJsZS5oIgpAQCAtMzMsNyAr
MzIsNyBAQAogI2luY2x1ZGUgIkpTRE9NQ29udmVydFVuaW9uLmgiCiAjaW5jbHVkZSAiSlNET01H
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+
CkBAIC0yOTAsNyArMjg5LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICB9CiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwgRU5BQkxFKENvbmRpdGlvbmFsMTQpCi0g
ICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xv
YmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0
dGluZ0VuYWJsZWQoKSkgeworICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xv
YmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRl
c3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKSB7
CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGlu
Z1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIElETERPTVN0
cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CiAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5
U2V0dGluZ1ZhbHVlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>