<?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>238498</bug_id>
          
          <creation_ts>2022-03-29 02:31:16 -0700</creation_ts>
          <short_desc>Implement persistent notification handling</short_desc>
          <delta_ts>2022-03-30 11:41:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>nham</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1855958</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 02:31:16 -0700</bug_when>
    <thetext>Implement persistent notification handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855959</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 02:31:31 -0700</bug_when>
    <thetext>https://notifications.spec.whatwg.org/#persistent-notification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855962</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-29 02:33:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/90972545&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855966</commentid>
    <comment_count>3</comment_count>
      <attachid>456009</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 02:52:25 -0700</bug_when>
    <thetext>Created attachment 456009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855985</commentid>
    <comment_count>4</comment_count>
      <attachid>456014</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 04:19:42 -0700</bug_when>
    <thetext>Created attachment 456014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856153</commentid>
    <comment_count>5</comment_count>
      <attachid>456014</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 13:07:01 -0700</bug_when>
    <thetext>Comment on attachment 456014
Patch

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

&gt; Source/WebCore/Modules/notifications/Notification.cpp:69
&gt; +    notification-&gt;showSoon();

Looking at it again, calling showSoon should be removed. Probably worth moving showSoon call out of the Notification::create object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856159</commentid>
    <comment_count>6</comment_count>
      <attachid>456014</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-29 13:19:12 -0700</bug_when>
    <thetext>Comment on attachment 456014
Patch

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

&gt;&gt; Source/WebCore/Modules/notifications/Notification.cpp:69
&gt;&gt; +    notification-&gt;showSoon();
&gt; 
&gt; Looking at it again, calling showSoon should be removed. Probably worth moving showSoon call out of the Notification::create object.

Definitely should be: In this case we&apos;re not showing it.

Agree with the refactor.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2332
&gt;  
&gt; +

stray newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856336</commentid>
    <comment_count>7</comment_count>
      <attachid>456104</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-30 02:33:19 -0700</bug_when>
    <thetext>Created attachment 456104
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856345</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-30 03:06:46 -0700</bug_when>
    <thetext>&gt; &gt; Looking at it again, calling showSoon should be removed. Probably worth moving showSoon call out of the Notification::create object.
&gt; 
&gt; Definitely should be: In this case we&apos;re not showing it.
&gt; 
&gt; Agree with the refactor.

I needed to do a few more refactoring since now we are not reusing the already created Notification object but a new one that should have a matching identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856363</commentid>
    <comment_count>9</comment_count>
      <attachid>456114</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-30 05:21:45 -0700</bug_when>
    <thetext>Created attachment 456114
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856503</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-30 11:41:33 -0700</bug_when>
    <thetext>Committed r292110 (249029@main): &lt;https://commits.webkit.org/249029@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456114.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456009</attachid>
            <date>2022-03-29 02:52:25 -0700</date>
            <delta_ts>2022-03-29 04:19:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238498-20220329115221.patch</filename>
            <type>text/plain</type>
            <size>75907</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4MzRlYTFjZWIxYzE2
MGM2Njg1ZTFjNmJkOTk2MGI3NTgzMjljMy4uN2I1MTQzYTBhMjA0MTcwMDcwMmEyMDc5ZmMzZGNm
ZTIwNzJhYzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb24gaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsIHdlIHdlcmUgZGlyZWN0bHkgZ29p
bmcgZnJvbSBVSVByb2Nlc3MgdG8gc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgVGhp
cyB3b3JrcyBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgcnVubmluZyBidXQgZG9lcyBub3Qgb3Ro
ZXJ3aXNlLgorICAgICAgICBUbyBtYWtlIHN1cmUgd2Ugbm93IGdvIHRvIE5ldHdvcmtQcm9jZXNz
LgorICAgICAgICBUbyBpbXBsZW1lbnQgaHR0cHM6Ly9ub3RpZmljYXRpb25zLnNwZWMud2hhdHdn
Lm9yZy8jcGVyc2lzdGVudC1ub3RpZmljYXRpb24sCisgICAgICAgIHdlIGFkZCBhIHNlcnZpY2Ug
d29ya2VyIHJlZ2lzdHJhdGlvbiBVUkwgdG8gTm90ZmljYXRpb25EYXRhLgorICAgICAgICBXZSBy
ZW1vdmUgdGhlIG5vdGZpY2F0aW9uIGhhbmRsaW5nIGdvaW5nIHRocm91Z2ggTm90aWZpY2F0aW9u
RXZlbnQgYW5kIG1ha2UgaXQgRG9jdW1lbnQgc3BlY2lmaWMuCisgICAgICAgIEluc3RlYWQsIHdl
IGdvIHRocm91Z2ggU2VydmljZVdvcmtlclRocmVhZFByb3h5LgorICAgICAgICBNYWtlIHN1cmUg
U1dTZXJ2ZXIgdHJlYXRzIG5vdGlmaWNhdGlvbiBldmVudHMgYXMgZnVuY3Rpb25hbCBldmVudHMu
CisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0LgorCisgICAgICAgICogSGVhZGVycy5j
bWFrZToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6ZGF0YSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25E
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnRUeXBlLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25F
dmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZmlyZU5v
dGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFk
OjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9u
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRGdW5j
dGlvbmFsRXZlbnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZDo6c3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdG9wRnVuY3Rpb25hbEV2ZW50TW9uaXRv
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdG9wUHVzaEV2
ZW50TW9uaXRvcmluZyk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQdXNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlTm90aWZpY2F0aW9u
RXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlSWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6ZGVjcmVtZW50UHVzaEV2
ZW50Q291bnRlcik6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmluY3Jl
bWVudEZ1bmN0aW9uYWxFdmVudENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJX
b3JrZXI6OnNob3VsZENvbnRpbnVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
V29ya2VyOjppbmNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKTogRGVsZXRlZC4KKwogMjAyMi0wMy0y
OCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8gaXMgbWlzbGVhZGluZyBhcyBpdCBpcyBhY3R1YWxseSBy
ZWZlcnJpbmcgdG8gY2FtZXJhIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODAyMTkyMTI1ZDc1OTFlMzQw
YzY2MThiNmIzZWM5YzBlYjE0YzI2Yy4uMzU4M2FhNmIwODRlNTM2MWNiOGVlODM4MmQyMTQ5Nzdl
Y2YzZmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMi0wMy0yOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlcnNpc3RlbnQg
bm90aWZpY2F0aW9uIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIHJlY2VpdmluZyBhbiB1cGRhdGUgZm9yIGEgbm90aWZpY2F0aW9u
LCBjaGVjayBpZiB0aGUgbm90aWZpY2F0aW9uIGlzIHRpZWQgdG8gYSBzZXJ2aWNlIHdvcmtlciBy
ZWdpc3RyYXRpb24uCisgICAgICAgIElmIHNvLCBnbyB0byBuZXR3b3JrIHByb2Nlc3MgdG8gZmly
ZSBhIGZ1bmN0aW9uYWwgZXZlbnQsIGFzIHBlciBodHRwczovL25vdGlmaWNhdGlvbnMuc3BlYy53
aGF0d2cub3JnLyNhY3RpdmF0aW5nLWEtbm90aWZpY2F0aW9uCisgICAgICAgIGFuZCBodHRwczov
L25vdGlmaWNhdGlvbnMuc3BlYy53aGF0d2cub3JnLyNyZWYtZm9yLWZpcmUtYS1zZXJ2aWNlLXdv
cmtlci1ub3RpZmljYXRpb24tZXZlbnTikaAKKyAgICAgICAgVUlQcm9jZXNzIHNlbmRzIHRoZSBj
b3JyZXNwb25kaW5nIE5vdGZpY2F0aW9uRGF0YSB0byBOZXR3b3JrUHJvY2Vzcy4KKyAgICAgICAg
TmV0d29ya1Byb2Nlc3MgZ2V0cyB0aGUgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uLCBydW5z
IHRoZSBzZXJ2aWNlIHdvcmtlciBhcyBuZWVkZWQgYW5kIGZpcmVzIHRoZSBmdW5jdGlvbmFsIGV2
ZW50LgorICAgICAgICBBZGQgSVBDIHBsdW1iaW5nIGNvZGUgdG8gc3VwcG9ydCB0aGlzIGZsb3cu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpm
aXJlTm90aWZpY2F0aW9uRXZlbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uOjp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bjo6Ym9keSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6aWNvblVS
TCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6dGFnIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpsYW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpkaXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbjo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uOjppc1BlcnNpc3RlbnROb3RpZmljYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb246Om5vdGlmaWNhdGlvbklEIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpkaXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZp
Y2F0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmZpcmVOb3RpZmljYXRpb25FdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
CiAyMDIyLTAzLTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyBpcyBtaXNsZWFkaW5nIGFzIGl0IGlz
IGFjdHVhbGx5IHJlZmVycmluZyB0byBjYW1lcmEgc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggM2UwNzUyZDMzZDU5MWRlMGFmOTBhNDY0ODczM2VmMmRlZDVlYjViOS4uNDA1ZjY3NGYwYjM4
NmFlMWIxN2MyMWRlZmQzZjMyZTY0YmUxMzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yOTEs
NiArMjkxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmgKICAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkV2ZW50VHlwZS5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb24uaAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDg3YjJlM2M5NGUwYjc1ZGQ3YmM1
MDY5NTI4NDI1YTcwYmU3N2ZmNDcuLjdhZWMwMTJkMGMzOTg1Y2Q0ZjFhYTg4YjFjMzJkMWFjZjcy
ZjIzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uY3BwCkBAIC02MSw2ICs2MSwxNiBAQCBSZWY8Tm90aWZpY2F0aW9uPiBO
b3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJp
bmcmJgogICAgIHJldHVybiBub3RpZmljYXRpb247CiB9CiAKK1JlZjxOb3RpZmljYXRpb24+IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE5vdGlm
aWNhdGlvbkRhdGEmJiBkYXRhKQoreworICAgIE9wdGlvbnMgb3B0aW9ucyB7IGRhdGEuZGlyZWN0
aW9uLCBXVEZNb3ZlKGRhdGEubGFuZ3VhZ2UpLCBXVEZNb3ZlKGRhdGEuYm9keSksIFdURk1vdmUo
ZGF0YS50YWcpLCBXVEZNb3ZlKGRhdGEuaWNvblVSTCkgfTsKKyAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIFdURk1vdmUoZGF0YS50aXRs
ZSksIFdURk1vdmUob3B0aW9ucykpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIG5vdGlmaWNhdGlvbi0+c2hvd1Nvb24oKTsKKyAgICByZXR1cm4gbm90aWZpY2F0
aW9uOworfQorCisKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFN0cmluZyYmIHRpdGxlLCBPcHRpb25zJiYgb3B0aW9ucykKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fdGl0bGUoV1RGTW92ZSh0aXRsZSku
aXNvbGF0ZWRDb3B5KCkpCkBAIC0yMjQsMzcgKzIzNCwxOCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6
ZGlzcGF0Y2hTaG93RXZlbnQoKQogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVu
dCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHN3aXRjaCAobV9ub3Rp
ZmljYXRpb25Tb3VyY2UpIHsKLSAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ6
Ci0gICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
VXNlckludGVyYWN0aW9uLCBbdGhpc10gewotICAgICAgICAgICAgV2luZG93Rm9jdXNBbGxvd2Vk
SW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dlZDsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgICAgIH0pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6U2VydmljZVdvcmtlcjoKLSAgICAgICAg
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjplbnN1cmVPbkNvbnRleHRUaHJlYWQobV9jb250ZXh0
SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLnBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZl
bnRUeXBlOjpDbGljaywgKnRoaXMsIHsgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBicmVhazsK
LSAgICB9CisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uU291cmNlID09IE5vdGlmaWNhdGlvblNv
dXJjZTo6RG9jdW1lbnQpOworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBbdGhpc10geworICAgICAgICBXaW5kb3dGb2N1
c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgIH0pOwogfQogCiB2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgewotICAgIGNhc2Ug
Tm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudDoKLSAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObykpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5vdGlmaWNhdGlvblNv
dXJjZTo6U2VydmljZVdvcmtlcjoKLSAgICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpl
bnN1cmVPbkNvbnRleHRUaHJlYWQobV9jb250ZXh0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnBvc3RUYXNrVG9GaXJlTm90
aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsgfSk7
Ci0gICAgICAgIH0pOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KKyAgICBBU1NFUlQobV9ub3Rp
ZmljYXRpb25Tb3VyY2UgPT0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudCk7CisgICAgcXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24s
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIGZpbmFsaXplKCk7CiB9CiAKQEAg
LTMyNCw5ICszMTUsMTUgQEAgYm9vbCBOb3RpZmljYXRpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogCiBOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbjo6ZGF0YSgpIGNv
bnN0CiB7CisgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgYXV0byBzZXNzaW9uSUQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHNlc3Npb25JRCk7CiAKKyAgICBVUkwgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblVSTDsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGlz
PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25VUkwgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLnJlZ2lzdHJhdGlvbigpLmRhdGEoKS5zY29wZVVSTDsKKyNlbmRpZgogICAgIHJldHVy
biB7CiAgICAgICAgIG1fdGl0bGUuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIG1fYm9keS5pc29s
YXRlZENvcHkoKSwKQEAgLTMzNSw2ICszMzIsNyBAQCBOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNh
dGlvbjo6ZGF0YSgpIGNvbnN0CiAgICAgICAgIG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24s
CiAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uVVJMKS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgaWRlbnRpZmllcigpLAogICAg
ICAgICAqc2Vzc2lvbklELAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggNGFhOWIzNDFmYzFjNDEzZjcwMzY1
Mjk5NmZhNjcwM2I1YTAwMmEzZi4uZjU2MTY4YzFmODkxY2Y0ZjNiODA3ZDJjN2M1YWEzMmY4OTdh
OTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBp
Y29uOwogICAgIH07CiAgICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgU3RyaW5nJiYgdGl0bGUsIE9wdGlvbnMmJik7Ci0gICAgCisgICAg
c3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Tm90aWZpY2F0aW9uRGF0YSYmKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk5vdGlm
aWNhdGlvbigpOwogCiAgICAgdm9pZCBzaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAKaW5kZXggNjA0
NzA4MzU1OTUwNjI1NTYwZDAwMDkyZjkyZWZlNGYzZDU1YjU2ZC4uYmZmYjM4ZTBlNDMxZTFhMTJm
MzE4ZTc0ZjNhYjJkYzAwMmVhZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcApAQCAtMjgsNCArMjgs
MTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNh
dGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKK3sKKyAgICByZXR1cm4geyB0aXRsZS5p
c29sYXRlZENvcHkoKSwgYm9keS5pc29sYXRlZENvcHkoKSwgaWNvblVSTC5pc29sYXRlZENvcHko
KSwgdGFnLmlzb2xhdGVkQ29weSgpLCBsYW5ndWFnZS5pc29sYXRlZENvcHkoKSwgZGlyZWN0aW9u
LCBvcmlnaW5TdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25V
UkwuaXNvbGF0ZWRDb3B5KCksIG5vdGlmaWNhdGlvbklELCBzb3VyY2VTZXNzaW9uIH07Cit9CisK
K05vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sK
KyAgICByZXR1cm4geyBXVEZNb3ZlKHRpdGxlKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShib2R5
KS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShpY29uVVJMKS5pc29sYXRlZENvcHkoKSwgV1RGTW92
ZSh0YWcpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGxhbmd1YWdlKS5pc29sYXRlZENvcHkoKSwg
ZGlyZWN0aW9uLCBXVEZNb3ZlKG9yaWdpblN0cmluZykuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCkuaXNvbGF0ZWRDb3B5KCksIG5vdGlmaWNhdGlv
bklELCBzb3VyY2VTZXNzaW9uIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
RGF0YS5oCmluZGV4IGJjZGRlM2MwNTg3NjkwZTM0ZjVlNDFmNDE2MDMyODU3ZjgxYzAzMTkuLjMy
MjA5ODMzZWRhMjA0MTY0YmQ1NjExNzk2ZDQwMGY3ZjdhMjdjODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw2ICszOSw5IEBAIHN0cnVj
dCBOb3RpZmljYXRpb25EYXRhIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAorICAg
IE5vdGlmaWNhdGlvbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBOb3RpZmljYXRp
b25EYXRhIGlzb2xhdGVkQ29weSgpICYmOworCiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmlu
ZyBib2R5OwogICAgIFN0cmluZyBpY29uVVJMOwpAQCAtNDUsNiArNDksNyBAQCBzdHJ1Y3QgTm90
aWZpY2F0aW9uRGF0YSB7CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKKyAg
ICBVUkwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTDsKICAgICBVVUlEIG5vdGlmaWNhdGlv
bklEOwogICAgIFBBTDo6U2Vzc2lvbklEIHNvdXJjZVNlc3Npb247CiB9OwpAQCAtNTIsNyArNTcs
NyBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBOb3RpZmljYXRpb25EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVSTCA8PCB0YWcgPDwgbGFuZ3Vh
Z2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3RpZmljYXRpb25JRCA8PCBzb3Vy
Y2VTZXNzaW9uOworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYm9keSA8PCBpY29uVVJMIDw8IHRh
ZyA8PCBsYW5ndWFnZSA8PCBkaXJlY3Rpb24gPDwgb3JpZ2luU3RyaW5nIDw8IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25VUkwgPDwgbm90aWZpY2F0aW9uSUQgPDwgc291cmNlU2Vzc2lvbjsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTkzLDYgKzk4LDExIEBAIHN0ZDo6b3B0aW9u
YWw8Tm90aWZpY2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgaWYgKCFvcmlnaW5TdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVS
TDsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkw7CisgICAgaWYg
KCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxVVUlEPiBub3RpZmljYXRpb25JRDsKICAgICBkZWNv
ZGVyID4+IG5vdGlmaWNhdGlvbklEOwogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCkBAIC0xMTEs
NiArMTIxLDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25E
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2Up
LAogICAgICAgICBXVEZNb3ZlKCpkaXJlY3Rpb24pLAogICAgICAgICBXVEZNb3ZlKCpvcmlnaW5T
dHJpbmcpLAorICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMKSwK
ICAgICAgICAgV1RGTW92ZSgqbm90aWZpY2F0aW9uSUQpLAogICAgICAgICBXVEZNb3ZlKCpzb3Vy
Y2VTZXNzaW9uKSwKICAgICB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5oCmluZGV4IGIyMWMyZWQ4NGFjNTQw
MDgwNTQxMDIzODczMWJjZGQyYzBiMGMxZmIuLmFkMzE1MWQ3ZjQyNjRkODFlNGE2OTA3YmVhYjQz
YjQ5YjdhNDNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5oCkBAIC0zMCwxNCArMzAsMTAgQEAKICNpbmNs
dWRlICJFeHRlbmRhYmxlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnRJbml0Lmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRXZlbnRU
eXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBOb3RpZmljYXRpb25F
dmVudFR5cGUgOiBib29sIHsKLSAgICBDbGljaywKLSAgICBDbG9zZSwKLX07Ci0KIHN0cnVjdCBO
b3RpZmljYXRpb25FdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKICAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247CiAgICAgU3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVu
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25FdmVudFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzAyMmM3Yjg3ZGZjZmViZTZiMzAxZGIwZGUzMTc4
YWVkN2I1MDg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50VHlwZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBOb3RpZmljYXRpb25FdmVudFR5cGUgOiBi
b29sIHsKKyAgICBDbGljaywKKyAgICBDbG9zZSwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlLAorICAgICAgICBX
ZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGU6OkNsaWNrLAorICAgICAgICBXZWJDb3JlOjpO
b3RpZmljYXRpb25FdmVudFR5cGU6OkNsb3NlCisgICAgPjsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YWI5MzIx
YjUyYWJlMmQ5OGFjMzAyMmJhY2NhMjhiYzY1YmVlM2VmLi41OGU1NmEwMzM3ZDliNjU2ZTg1NDZl
ZjNmY2I4YzI0MzNhZTgwNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDc0LDYgKzEwNzQsNyBAQAogCQk0MTEyMjNDNTI2
MDM1NjdEMDBCMEEwQjYgLyogRGV0YWNoZWRSVENEYXRhQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMjIzQzMyNjAzNTY3QzAwQjBBMEI2
IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTEyQjU0MzFGOUY5Q0EwMDBFNjc4NzUgLyogU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEyQjUzRjFGOUY5QzlCMDBFNjc4NzUgLyogU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDExNEZFMzIyNUJFQkQxOTAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTE0RkUyRjI1QkVCRDE4
MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJNDEyMDFGMzcyN0YyRjc0
OTAwRDU2Q0MyIC8qIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyMDFGMzYyN0YyRjc0NjAwRDU2Q0MyIC8qIE5v
dGlmaWNhdGlvbkV2ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEy
MzA5MTMxMzhDNDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRG
QjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjgyN0Iy
MjdFNEFDM0MwMDVBRERFMiAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9G
cmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04NTg0LDYgKzg1ODUsNyBAQAogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMy
ODAwQjk1NjcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTIwMUYzNjI3RjJGNzQ2MDBENTZDQzIgLyogTm90aWZpY2F0aW9uRXZl
bnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogU0ZyYW1l
VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0ZyYW1lVXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFMjYyNTdBMkZCQjAwMTIwQUNBIC8q
IFNGcmFtZVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNG
cmFtZVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFOTEyMTZE
NTkzQzAwQTczQTEyIC8qIFJUQ0NlcnRpZmljYXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSVENDZXJ0aWZpY2F0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3
Niw2ICsyMDk3OCw3IEBACiAJCQkJNTEwRTJGMkMyNzZCRTBDMzAwODA5MzMzIC8qIE5vdGlmaWNh
dGlvbkV2ZW50LmNwcCAqLywKIAkJCQk1MTBFMkYyNDI3NkJCNEVDMDA4MDkzMzMgLyogTm90aWZp
Y2F0aW9uRXZlbnQuaCAqLywKIAkJCQk1MTBFMkYyMjI3NkJBOUU4MDA4MDkzMzMgLyogTm90aWZp
Y2F0aW9uRXZlbnQuaWRsICovLAorCQkJCTQxMjAxRjM2MjdGMkY3NDYwMEQ1NkNDMiAvKiBOb3Rp
ZmljYXRpb25FdmVudFR5cGUuaCAqLywKIAkJCQk1MTBFMkYyNjI3NkJDMTlGMDA4MDkzMzMgLyog
Tm90aWZpY2F0aW9uT3B0aW9ucy5oICovLAogCQkJCTUxRTNBRjBBMjc2QjA1QjcwMDlCNDI5RCAv
KiBOb3RpZmljYXRpb25PcHRpb25zLmlkbCAqLywKIAkJCQk3Q0MyRERGODFFQzk0MTVBMDAyN0I3
NzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oICovLApAQCAtMzU2ODAsNiArMzU2ODMsNyBA
QAogCQkJCUU0NDYxNDNDMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NzUyRDM4RTE0MTMxMDRCMDAzMzA1QkQgLyogSlNIVE1MU3Bh
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjBFMEExOUQ2MDYwMDdGQjhDNSAv
KiBKU0hUTUxTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMjAxRjM3MjdGMkY3
NDkwMEQ1NkNDMiAvKiBOb3RpZmljYXRpb25FdmVudFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQTE2OUEzMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA2RURFNDBCRkQ2RDBEMDA4NTZFOUQgLyogSlNIVE1MVGFi
bGVDZWxsRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkVEOUUwQkZENjYwNjAwODU2
RTlEIC8qIEpTSFRNTFRhYmxlQ29sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDI1YWFmNjc4NTk0ZDI5NjA3M2EzNjlkZDZhZGVkZjc4MjEyNmViNjAu
LjdhNTcyMjdhMTA0ZDVlYTdlZjNlNTA3OGRjN2Y0MTJkNmI2YjA1ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwCkBAIC0xOTksMjkgKzE5OSw2IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAg
ICAgfQogfQogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKLXZvaWQgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNh
dGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBjb25z
dCBTdHJpbmcmIGFjdGlvbikKLXsKLSAgICB0aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JN
b2RlKFtldmVudFR5cGUsIHByb3RlY3RlZE5vdGlmaWNhdGlvbiA9IFJlZiB7IG5vdGlmaWNhdGlv
biB9LCBhY3Rpb24gPSBhY3Rpb24uaXNvbGF0ZWRDb3B5KCldKGF1dG8mIHNjb3BlKSB7Ci0gICAg
ICAgIHNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFsmc2NvcGUsIHByb3RlY3RlZFNjb3BlID0gUmVmIHsgc2NvcGUgfSwgZXZlbnRUeXBlLCBw
cm90ZWN0ZWROb3RpZmljYXRpb24sIGFjdGlvbl0gewotICAgICAgICAgICAgQXRvbVN0cmluZyBl
dmVudE5hbWU7Ci0gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgewotICAgICAgICAgICAg
Y2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGU6OkNsaWNrOgotICAgICAgICAgICAgICAgIGV2ZW50
TmFtZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbGlja0V2ZW50OwotICAgICAgICAgICAg
ICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnJlY29yZFVzZXJH
ZXN0dXJlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE5vdGlm
aWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2U6Ci0gICAgICAgICAgICAgICAgZXZlbnROYW1lID0gZXZl
bnROYW1lcygpLm5vdGlmaWNhdGlvbmNsb3NlRXZlbnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gZXZlbnQgPSBOb3RpZmljYXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLnB0cigpLCBhY3Rp
b24sIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwotICAgICAgICAgICAgZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZGlzcGF0Y2hFdmVudChldmVudCk7
Ci0gICAgICAgIH0pOwotICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotfQot
I2VuZGlmCi0KIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpyZWNvcmRVc2VyR2VzdHVy
ZSgpCiB7CiAgICAgbV9pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKaW5kZXggOTUzODBjMzhhZTk0ZWM1OTc1OWU4YjRlZDcyYjE2ZmJlMzg2YmQwNi4uMmYz
NTI5MTQzMGRiMGNkMDdjYWU5NGVhMmRhZGFkMmVmZjA2YWM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aApAQCAtODEsMTAgKzgxLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSog
c2VydmljZVdvcmtlclBhZ2UoKTsKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCi0g
ICAgdm9pZCBwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50
VHlwZSwgTm90aWZpY2F0aW9uJiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pOwotI2VuZGlmCi0KICAg
ICBib29sIGhhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1Bl
bmRpbmdTaWxlbnRQdXNoRXZlbnQ7IH0KICAgICB2b2lkIHNldEhhc1BlbmRpbmdTaWxlbnRQdXNo
RXZlbnQoYm9vbCB2YWx1ZSkgeyBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQgPSB2YWx1ZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IGUyNjE4MmFlOTI4M2QyODFmM2FjNDFjOTBk
Y2JkYTIyNTQxN2U4ZGEuLjgxYjQ0MjhjYjIwM2U0MGQyOGViZjk5ZDRmMDVkNDY5ZGFmMTNiMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjgsNiArMTI4LDE0IEBAIHZvaWQgU1dDb250
ZXh0TWFuYWdlcjo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpCiAgICAgc2VydmljZVdvcmtlci0+ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudChXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBXVEZNb3ZlKG9sZFN1YnNjcmlw
dGlvbkRhdGEpKTsKIH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlTm90aWZpY2F0aW9u
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgTm90aWZpY2F0aW9uRGF0
YSYmIGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byogc2VydmljZVdvcmtlciA9
IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIHNlcnZpY2VXb3JrZXItPmZpcmVOb3RpZmljYXRpb25FdmVu
dChXVEZNb3ZlKGRhdGEpLCBldmVudFR5cGUsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KIAogdm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggZmVlN2MxNWQyYjg3ZGM0NjI1
ZmI0ZTdkMWM4MTE4OWMyYjRkZTdhNS4uOWEyM2M1YWQwMzY2ODBlOWQ4ZWE4ODNiNmEwOTZjNWI0
YTg1OTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0
ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlTm90aWZpY2F0aW9uRXZlbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIE5vdGlmaWNhdGlvbkRhdGEmJiwgTm90aWZpY2F0aW9uRXZlbnRUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRp
bWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRT
YXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYs
IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYjVjYzg2YWNkNGIzNjJhZmU1YTZiNzY5MGQzZDYyYjU4
ODgzNmVmZi4uNWI5YjI5MzZjMGEwZWQxMTAwN2YxNGE4ZGRkNzQ5NzNkYTViMDE3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJKU0RP
TVByb21pc2UuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25EYXRhLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQ
dXNoRXZlbnQuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCkBAIC0yNTAsOCArMjUy
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQo
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFk
OjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25h
bDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlv
bmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpCiB7Ci0gICAg
UmVmIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oKmdsb2JhbFNjb3BlKCkpOwotICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+
ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbmV3U3Vi
c2NyaXB0aW9uRGF0YSA9IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlw
dGlvbkRhdGEgPSBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAg
IGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4oKmdsb2JhbFNjb3BlKCkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gUmVm
IHsgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlIH0sIG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBXVEZN
b3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBvbGRTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShv
bGRTdWJzY3JpcHRpb25EYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCBmaXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlIiBQUkl1NjQsIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkuaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OwogCiAgICAgICAgIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBuZXdTdWJzY3JpcHRpb247CkBA
IC0yNzUsNiArMjc3LDQyIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9G
aXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KHN0ZDo6b3B0aW9uCiAgICAgfSk7CiB9CiAK
K3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZl
bnQoTm90aWZpY2F0aW9uRGF0YSYmIGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5
cGUsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigq
Z2xvYmFsU2NvcGUoKSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGV2ZW50VHlwZSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZU5vdGlm
aWNhdGlvbkV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAg
ICAgICAgQXRvbVN0cmluZyBldmVudE5hbWU7CisgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7
CisgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljazoKKyAgICAgICAgICAg
IGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbGlja0V2ZW50OworICAgICAg
ICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5yZWNvcmRVc2VyR2VzdHVyZSgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9z
ZToKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbG9z
ZUV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIG5v
dGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5nZXQoKSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uRXZlbnQg
PSBOb3RpZmljYXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgbm90aWZpY2F0aW9uLnB0cigp
LCBlbXB0eVN0cmluZygpLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICAg
ICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KG5vdGlmaWNhdGlvbkV2
ZW50KTsKKworICAgICAgICBub3RpZmljYXRpb25FdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1l
UHJvbWlzZXNBcmVTZXR0bGVkKFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIHByb21pc2UgOiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CisgICAgICAgICAgICAgICAg
aWYgKHByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFzdWNjZXNzLCBTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdv
cmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQgZmFpbGVkIHRvIHBy
b2Nlc3Mgbm90aWZpY2F0aW9uIGV2ZW50Iik7CisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNz
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQoZ2xvYmFsU2NvcGUoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwpAQCAtMzExLDkgKzM0OSw5IEBAIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6c3RhcnRGZXRjaEV2ZW50TW9uaXRvcmluZygpCiAgICAgc3RhcnRIZWFydEJlYXRU
aW1lcigpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0UHVzaEV2ZW50TW9u
aXRvcmluZygpCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RnVuY3Rpb25hbEV2ZW50
TW9uaXRvcmluZygpCiB7Ci0gICAgbV9pc0hhbmRsaW5nUHVzaEV2ZW50ID0gdHJ1ZTsKKyAgICBt
X2lzSGFuZGxpbmdGdW5jdGlvbmFsRXZlbnQgPSB0cnVlOwogICAgIHN0YXJ0SGVhcnRCZWF0VGlt
ZXIoKTsKIH0KIApAQCAtMzM5LDcgKzM3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
c3RhcnRIZWFydEJlYXRUaW1lcigpCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVh
dFRpbWVyRmlyZWQoKQogewogICAgIGlmICghbV9vbmdvaW5nSGVhcnRCZWF0Q2hlY2spIHsKLSAg
ICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ1B1
c2hFdmVudCB8fCBtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHx8IG1fbWVzc2Fn
ZUV2ZW50Q291bnQpCisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8
fCBtX2lzSGFuZGxpbmdGdW5jdGlvbmFsRXZlbnQgfHwgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnRDb3VudCB8fCBtX21lc3NhZ2VFdmVudENvdW50KQogICAgICAgICAgICAgc3RhcnRIZWFy
dEJlYXRUaW1lcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCmluZGV4IDc1NjZiNGQ0YTlkMTNjODBlMDgzNjI5NzI2Njc3YmUyMjY5MzkyYmYuLmMzODIz
OWRlNzA5NWU5MTA5MWJiZmYwNTE3ZGU2MmMxZDdiZjM3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNp
bmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVu
dFR5cGUuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgiCkBAIC00Nyw2ICs0OCw3IEBAIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5l
bDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFdvcmtlck9iamVjdFByb3h5
Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOworc3RydWN0IE5vdGlmaWNhdGlvbkRh
dGE7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlclRocmVhZCwgV2Vha1B0ckZhY3RvcnlJ
bml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKQEAgLTcxLDYgKzczLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgcXVl
dWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYm
IG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+
JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CisgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVOb3RpZmlj
YXRpb25FdmVudChOb3RpZmljYXRpb25EYXRhJiYsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgRnVu
Y3Rpb248dm9pZChib29sKT4mJik7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YUlkZW50aWZpZXI7IH0KQEAgLTc4LDgg
KzgxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCk7
CiAgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1vbml0b3JpbmcoKSB7IG1faXNIYW5kbGluZ0ZldGNo
RXZlbnQgPSBmYWxzZTsgfQotICAgIHZvaWQgc3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKCk7Ci0g
ICAgdm9pZCBzdG9wUHVzaEV2ZW50TW9uaXRvcmluZygpIHsgbV9pc0hhbmRsaW5nUHVzaEV2ZW50
ID0gZmFsc2U7IH0KKyAgICB2b2lkIHN0YXJ0RnVuY3Rpb25hbEV2ZW50TW9uaXRvcmluZygpOwor
ICAgIHZvaWQgc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3JpbmcoKSB7IG1faXNIYW5kbGluZ0Z1
bmN0aW9uYWxFdmVudCA9IGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKICAgICBSZWY8V29ya2VyR2xv
YmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4p
IGZpbmFsOwpAQCAtMTA5LDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RvZXNIYW5k
bGVGZXRjaCB7IGZhbHNlIH07CiAKICAgICBib29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBm
YWxzZSB9OwotICAgIGJvb2wgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxFdmVudCB7IGZhbHNlIH07CiAgICAgdWludDY0X3Qg
bV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBt
X21lc3NhZ2VFdmVudENvdW50IHsgMCB9OwogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBT
dGFydGluZywgSW5zdGFsbGluZywgQWN0aXZhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAKaW5kZXggOGEyMTk0MTgzM2JiYThhMGRhNjA0OGMzYmI3NmU4NjAwNTFk
NGQ2Zi4uZjQxYzhjYWU2NTgyYWI5YzJlM2M4ZTZkNDVjMGM4N2ZkOWEyZDkyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC05Miw4ICs5Miw4IEBAIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSgpCiAgICAgQVNTRVJU
KGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOwogICAgIGFs
bFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwogCi0gICAgYXV0byBw
dXNoVGFza3MgPSBXVEZNb3ZlKG1fb25nb2luZ1B1c2hUYXNrcyk7Ci0gICAgZm9yIChhdXRvJiBj
YWxsYmFjayA6IHB1c2hUYXNrcy52YWx1ZXMoKSkKKyAgICBhdXRvIGZ1bmN0aW9uYWxFdmVudFRh
c2tzID0gV1RGTW92ZShtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcyk7CisgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGZ1bmN0aW9uYWxFdmVudFRhc2tzLnZhbHVlcygpKQogICAgICAgICBj
YWxsYmFjayhmYWxzZSk7CiB9CiAKQEAgLTI4MywyNCArMjgzLDI0IEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3Jp
cHQsIEhhc2hNCiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50
KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKG1fb25nb2luZ1B1c2hUYXNrcy5p
c0VtcHR5KCkpCi0gICAgICAgIHRocmVhZCgpLnN0YXJ0UHVzaEV2ZW50TW9uaXRvcmluZygpOwor
ICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5pc0VtcHR5KCkpCisgICAgICAg
IHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2ZW50TW9uaXRvcmluZygpOwogCi0gICAgYXV0byBp
ZGVudGlmaWVyID0gKyttX3B1c2hUYXNrc0NvdW50ZXI7Ci0gICAgQVNTRVJUKCFtX29uZ29pbmdQ
dXNoVGFza3MuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fb25nb2luZ1B1c2hUYXNrcy5h
ZGQoaWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGF1dG8gaWRlbnRpZmllciA9
ICsrbV9mdW5jdGlvbmFsRXZlbnRUYXNrc0NvdW50ZXI7CisgICAgQVNTRVJUKCFtX29uZ29pbmdG
dW5jdGlvbmFsRXZlbnRUYXNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV9vbmdvaW5n
RnVuY3Rpb25hbEV2ZW50VGFza3MuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICBib29sIGlzUG9zdGVkID0gcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIs
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpXShhdXRvJikgbXV0YWJsZSB7CiAgICAgICAgIHRocmVhZCgp
LnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChXVEZNb3ZlKGRhdGEpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXJdKGJvb2wgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyLCByZXN1bHRdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29uZ29pbmdQdXNoVGFz
a3MudGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9
IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikpCiAgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fb25n
b2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHRocmVhZCgpLnN0
b3BQdXNoRXZlbnRNb25pdG9yaW5nKCk7CisgICAgICAgICAgICAgICAgaWYgKG1fb25nb2luZ0Z1
bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgdGhyZWFk
KCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3JpbmcoKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9KTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICBpZiAo
IWlzUG9zdGVkKQotICAgICAgICBtX29uZ29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKShm
YWxzZSk7CisgICAgICAgIG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRp
ZmllcikoZmFsc2UpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25E
YXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlv
bkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSkKQEAgLTMxMSw2ICszMTEsMjggQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQo
c3RkOjpvcHRpb25hbDxQdXMKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OmZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25EYXRhJiYgZGF0YSwgTm90
aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9vbmdvaW5nRnVuY3Rpb25hbEV2ZW50VGFza3Mu
aXNFbXB0eSgpKQorICAgICAgICB0aHJlYWQoKS5zdGFydEZ1bmN0aW9uYWxFdmVudE1vbml0b3Jp
bmcoKTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICsrbV9mdW5jdGlvbmFsRXZlbnRUYXNrc0Nv
dW50ZXI7CisgICAgQVNTRVJUKCFtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5jb250YWlu
cyhpZGVudGlmaWVyKSk7CisgICAgbV9vbmdvaW5nRnVuY3Rpb25hbEV2ZW50VGFza3MuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBib29sIGlzUG9zdGVkID0gcG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLmlzb2xh
dGVkQ29weSgpLCBldmVudFR5cGVdKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFkKCku
cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBl
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZp
ZXJdKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVy
LCByZXN1bHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sg
PSBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy50YWtlKGlkZW50aWZpZXIpKQorICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChtX29u
Z29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
IHRocmVhZCgpLnN0b3BGdW5jdGlvbmFsRXZlbnRNb25pdG9yaW5nKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cisg
ICAgaWYgKCFpc1Bvc3RlZCkKKyAgICAgICAgbV9vbmdvaW5nRnVuY3Rpb25hbEV2ZW50VGFza3Mu
dGFrZShpZGVudGlmaWVyKShmYWxzZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmgKaW5kZXggZTVjYjVjMWRkMTQ1YjI4MTk1Y2Y4ODU1ZjhmNDNkYjYyOWVkYzFkZS4u
ZmYxMzBiM2RiNjY1NDQ5N2MzNmIxODc1MDliOTQzZWQwNDcwNzgyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZmlyZUFjdGl2YXRlRXZlbnQoKTsKICAgICB2b2lkIGZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1
c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8
UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CisgICAgdm9pZCBm
aXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmLCBOb3RpZmljYXRpb25FdmVu
dFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBkaWRT
YXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZl
cj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCkBAIC0xMTgsOCArMTE5LDggQEAgcHJpdmF0ZToKIAog
ICAgIFNlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eSBtX2luc3BlY3RvclByb3h5OwogICAgIEhh
c2hNYXA8c3RkOjpwYWlyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRp
Zmllcj4sIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4+IG1fb25nb2luZ0ZldGNoVGFz
a3M7Ci0gICAgdWludDY0X3QgbV9wdXNoVGFza3NDb3VudGVyIHsgMCB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+PiBtX29uZ29pbmdQdXNoVGFz
a3M7CisgICAgdWludDY0X3QgbV9mdW5jdGlvbmFsRXZlbnRUYXNrc0NvdW50ZXIgeyAwIH07Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4+IG1fb25n
b2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IGY2MTEwNjExNmE0YmY2NzUyNjQ0YTI0ZWFlMTlmNTViNGFhOWZhMzcuLmQ2M2FkMGM0
ZTI3YjE0YjA0ZmUwNDZmYzljMzI2NjlmMzJiNmJjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1dPcmlnaW5TdG9yZS5oIgog
I2luY2x1ZGUgIlNXU2VydmVySm9iUXVldWUuaCIKQEAgLTEwNDksNyArMTA1MCw3IEBAIHZvaWQg
U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdp
biYgY2xpZW50T3JpZ2luLCBTCiAgICAgICAgICAgICBpZiAocmVtb3ZlQ29udGV4dENvbm5lY3Rp
b25JZlBvc3NpYmxlKGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKSA9PSBTaG91bGREZWxheVJlbW92
YWw6OlllcykgewogICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50
aWZpZXJzUGVyT3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5lbmQoKSk7Ci0gICAg
ICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIt
PnN0YXJ0T25lU2hvdChtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVs
dFRlcm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0UHVzaE1lc3NhZ2VEdXJhdGlvbik7CisgICAgICAg
ICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXItPnN0
YXJ0T25lU2hvdChtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRl
cm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRpb24pOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTMwMywxNSArMTMwNCwxNSBA
QCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogCiAgICAgICAgICAgICBhdXRvIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CiAKLSAgICAgICAgICAgIHdvcmtl
ci0+aW5jcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgd29ya2VyLT5pbmNy
ZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCk7CiAgICAgICAgICAgICBhdXRvIHRlcm1pbmF0
ZVdvcmtlclRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW3dvcmtlcl0gewogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBpcyB0
YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgcHVzaCBldmVudCIpOwotICAgICAgICAg
ICAgICAgIHdvcmtlci0+ZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAg
ICAgIHdvcmtlci0+ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdl
YWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8g
ZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0UHVzaE1lc3NhZ2VEdXJhdGlvbik7Cisg
ICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYm
IHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRl
cm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRpb24pOwogICAgICAg
ICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0ZXJt
aW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRlV29ya2VyVGltZXIpLCB3b3JrZXIg
PSBXVEZNb3ZlKHdvcmtlcildKGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBpZiAodGVybWluYXRlV29ya2VyVGltZXItPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgd29ya2VyLT5kZWNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CisgICAgICAgICAg
ICAgICAgICAgIHdvcmtlci0+ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOwogICAg
ICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RvcCgpOwogICAgICAgICAg
ICAgICAgIH0KIApAQCAtMTMyMSw2ICsxMzIyLDQ1IEBAIHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQ
dXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYXRhLCBVUkwmJiBy
CiAgICAgfSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudChO
b3RpZmljYXRpb25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIHR5cGUpCit7Cisg
ICAgd2hlbkltcG9ydElzQ29tcGxldGVkSWZOZWVkZWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCB0eXBlXSgpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8g
b3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRhdGEuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblVSTCk7CisgICAgICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVn
aXN0cmF0aW9uS2V5IHsgV1RGTW92ZShvcmlnaW4pLCBVUkwgeyBkYXRhLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25VUkwgfSB9OworICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fc2NvcGVU
b1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5KTsKKyAgICAgICAgaWYgKCFyZWdp
c3RyYXRpb24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byogd29ya2VyID0g
cmVnaXN0cmF0aW9uLT5hY3RpdmVXb3JrZXIoKTsKKyAgICAgICAgaWYgKCF3b3JrZXIpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgZmlyZUZ1bmN0aW9uYWxFdmVudCgqcmVnaXN0cmF0
aW9uLCBbd29ya2VyID0gUmVmIHsgKndvcmtlciB9LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgdHlwZV0oYXV0byYmIGNvbm5lY3Rpb25PclN0YXR1
cykgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25PclN0YXR1cy5oYXNfdmFs
dWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKKworICAgICAgICAgICAg
d29ya2VyLT5pbmNyZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCk7CisgICAgICAgICAgICBh
dXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW3dvcmtlcl0gewor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNl
IHdvcmtlciBpcyB0YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgbm90aWZpY2F0aW9u
IGV2ZW50Iik7CisgICAgICAgICAgICAgICAgd29ya2VyLT5kZWNyZW1lbnRGdW5jdGlvbmFsRXZl
bnRDb3VudGVyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtl
clRpbWVyLT5zdGFydE9uZVNob3Qod2Vha1RoaXMgJiYgd2Vha1RoaXMtPm1faXNQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQgPyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6IGRlZmF1bHRG
dW5jdGlvbmFsRXZlbnREdXJhdGlvbik7CisgICAgICAgICAgICBjb25uZWN0aW9uT3JTdGF0dXMu
dmFsdWUoKS0+ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBk
YXRhLCB0eXBlLCBbdGVybWluYXRlV29ya2VyVGltZXIgPSBXVEZNb3ZlKHRlcm1pbmF0ZVdvcmtl
clRpbWVyKSwgd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXShib29sIC8qIHN1Y2NlZWRlZCAqLykg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGlmIHN1Y2NlZWRlZCBpcyBmYWxz
ZSwgc2hvdWxkIHdlIGltcGxlbWVudCBhIGRlZmF1bHQgYWN0aW9uIGxpa2Ugb3BlbmluZyBhIG5l
dyBwYWdlPworICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdGVXb3JrZXJUaW1lci0+aXNBY3Rp
dmUoKSkgeworICAgICAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3JlbWVudEZ1bmN0aW9uYWxF
dmVudENvdW50ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyVGltZXIt
PnN0b3AoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNm
aXJlLWZ1bmN0aW9uYWwtZXZlbnQtYWxnb3JpdGhtLCBqdXN0IGZvciBwdXNoIHJpZ2h0IG5vdy4K
IHZvaWQgU1dTZXJ2ZXI6OmZpcmVGdW5jdGlvbmFsRXZlbnQoU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
IHJlZ2lzdHJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJiBjYWxsYmFjaykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRl
eCA2ZGExNDVhYWI4NzdhYjhjNDk0NzI0MTFlZjFmOGYzYzY1MzVjNGIwLi4xZjg5Mjc5ZDgwMTFl
YTYxZDRhNmEyNjYyNTc1YTFkNGVlYzVlY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkRhdGEuaCIKQEAgLTYyLDYgKzYzLDcgQEAgZW51bSBjbGFzcyBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBTZXJ2aWNlV29y
a2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHM7CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIHN0cnVjdCBTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKQEAgLTIxOSwxMiAr
MjIxLDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUxvd01lbW9y
eVdhcm5pbmcoKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWlu
YXRpb25EZWxheSA9IDEwX3M7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRQ
dXNoTWVzc2FnZUR1cmF0aW9uID0gMl9zOworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBk
ZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRpb24gPSAyX3M7CiAKICAgICBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29y
a2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNl
cnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
JiYsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHByb2Nlc3NOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25EYXRhJiYs
IE5vdGlmaWNhdGlvbkV2ZW50VHlwZSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFNraXBFdmVu
dCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2NmNjNDY5YTkzZmRlOWVkNmFkN2RkYmY0
NzE4NzAzNzRjMjQ3NmJlLi43Y2ExNmM3YWE4ZDdiODRkZWQ5ODk0ZWVkZWI3MDhiNDNjNjU2M2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJFeGNlcHRpb25EYXRh
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRXZlbnRUeXBlLmgiCiAjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCkBAIC0zOSw2ICs0MCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiBjbGFzcyBTV1Nl
cnZlcjsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE7CkBAIC02NSw3ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYgaW1w
b3J0ZWRTY3JpcHRzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBOb3RpZmljYXRpb25EYXRhJiwgTm90aWZpY2F0aW9uRXZlbnRU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAogICAg
IC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CmluZGV4IDk5MjRmYmRiYWU0NjEyY2E4MWVkYWJiNzc2ODdmZmM1ZGYzY2RhOTAuLjA4ODFiYzYy
MzczNzEzYWFlMjFmZWIxOGI2MjYyNGI1YmE2ZTk5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0z
OTcsMTAgKzM5NywxMCBAQCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2VydmljZVdvcmtlclBhZwogICAgIHJldHVybiBtX3Jl
Z2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVudENvdW50ZXIoKQordm9pZCBTV1NlcnZlcldv
cmtlcjo6ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpCiB7Ci0gICAgQVNTRVJUKG1f
cHVzaEV2ZW50Q291bnRlcik7Ci0gICAgLS1tX3B1c2hFdmVudENvdW50ZXI7CisgICAgQVNTRVJU
KG1fZnVuY3Rpb25hbEV2ZW50Q291bnRlcik7CisgICAgLS1tX2Z1bmN0aW9uYWxFdmVudENvdW50
ZXI7CiAgICAgdGVybWluYXRlSWZQb3NzaWJsZSgpOwogfQogCkBAIC00MTIsNyArNDEyLDcgQEAg
dm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0QXNJbnNwZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKIAog
dm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlSWZQb3NzaWJsZSgpCiB7Ci0gICAgaWYgKG1f
cHVzaEV2ZW50Q291bnRlciB8fCBtX2lzSW5zcGVjdGVkIHx8ICFtX3NlcnZlciB8fCBtX3NlcnZl
ci0+aGFzQ2xpZW50c1dpdGhPcmlnaW4ob3JpZ2luKCkpKQorICAgIGlmIChtX2Z1bmN0aW9uYWxF
dmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZCB8fCAhbV9zZXJ2ZXIgfHwgbV9zZXJ2ZXItPmhh
c0NsaWVudHNXaXRoT3JpZ2luKG9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdGVy
bWluYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggMTYwMDY1ZDM2ZWJmYzUzMGUyYmM4MDYxMjRiN2Ey
YzQxYzdiMmMxOC4uNTRkZjM4NDIyMDgxYWFlNGQ4MmJhNjI0ZmJhNjI5MGE4ZjYzN2JiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaApAQCAtMTM1LDExICsxMzUsMTEgQEAgcHVibGljOgogCiAgICAgV29ya2VyVGhy
ZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluY3JlbWVudFB1
c2hFdmVudENvdW50ZXIoKSB7ICsrbV9wdXNoRXZlbnRDb3VudGVyOyB9Ci0gICAgdm9pZCBkZWNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CisgICAgdm9pZCBpbmNyZW1lbnRGdW5jdGlvbmFsRXZl
bnRDb3VudGVyKCkgeyArK21fZnVuY3Rpb25hbEV2ZW50Q291bnRlcjsgfQorICAgIHZvaWQgZGVj
cmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOwogICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQo
Ym9vbCk7CiAKLSAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFtX3B1
c2hFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQorICAgIGJvb2wgc2hvdWxkQ29udGlu
dWUoKSBjb25zdCB7IHJldHVybiAhIW1fZnVuY3Rpb25hbEV2ZW50Q291bnRlciB8fCBtX2lzSW5z
cGVjdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0
IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBTdHJpbmcmJiByZWZlcnJl
clBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJM
LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKQEAgLTE3Myw3
ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
PiBtX3Rlcm1pbmF0aW9uQ2FsbGJhY2tzOwogICAgIFRpbWVyIG1fdGVybWluYXRpb25UaW1lcjsK
ICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkOwotICAgIGludCBtX3B1c2hFdmVudENvdW50ZXIgeyAwIH07CisgICAgaW50IG1f
ZnVuY3Rpb25hbEV2ZW50Q291bnRlciB7IDAgfTsKICAgICBib29sIG1faXNJbnNwZWN0ZWQgeyBm
YWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCAxMTUxM2E4ZWI4ZTZhMGFkNTlmNmI2OWQyYjE5OTE4ZDA3NDAxZmM2
Li4wODE3YjE5NWRlMTNlZTZjNWNiNzUxOWE2YjU3NTkxNjU1ODJlY2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsNiArNzYs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaD4KQEAgLTIyNzksNiArMjI4MCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkRhdGEmJiBkYXRhLCBOb3Rp
ZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oZGF0YS5zb3VyY2VTZXNzaW9uKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlU1dTZXJ2ZXIoKS5wcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoV1RGTW92ZShkYXRhKSwgZXZl
bnRUeXBlKTsKK30KKwogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3Nh
Z2U+Jik+JiYgY2FsbGJhY2spCkBAIC0yMzEwLDcgKzIzMTcsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNo
TWVzc2FnZQogICAgIH0gZWxzZQogICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJvY2Vz
cyBhc2tlZCB0byBoYW5kbGUgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Np
b24gJWxsdSwgYnV0IHRoYXQgc2Vzc2lvbiBkb2Vzbid0IGV4aXN0Iiwgc2Vzc2lvbklELnRvVUlu
dDY0KCkpOwogfQotCiAjZWxzZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVz
aE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJiBjYWxsYmFjaykKQEAgLTIzMjMsNiArMjMyOSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwg
V2ViUHVzaE1lc3NhZ2UmJiwgQ29tcGxlCiAgICAgY2FsbGJhY2soZmFsc2UpOwogfQogCisKICNl
bmRpZiAvLyBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCA2YTkwMGZkMWJiMjkzNzBjOGM5MGZmMmJmYTlhYjBlYzNlNmU5NGVl
Li5hMjY4ZDhmZTQxNTI4OTk0ZWRlNzBkZmRjNWVkZmM2MjM5MzFkNzA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRXZlbnRU
eXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lz
dHJhYmxlRG9tYWluLmg+CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIENlcnRpZmljYXRlSW5mbzsK
IGNsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOworc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwogZW51bSBjbGFzcyBI
VFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKQEAgLTM3NCw2ICszNzYsNyBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hN
ZXNzYWdlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0
b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwogICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBB
TDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHByb2Nlc3NOb3RpZmljYXRpb25FdmVudChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJiYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSk7CiAjZW5kaWYK
IAogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiNWEwMzI4
YjBiNDQ1NzYwOTdjODczYzBkNjRiZTIxNGFhODhlYWJhLi4yNmM0ZWI3MzIzZmJkZTgwYmI3YWJi
OWMwODEyOTI1NWEzMzAzNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIxMyw2ICsyMTMsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+IG1lc3NhZ2VzKQog
ICAgIFByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBX
ZWJLaXQ6OldlYlB1c2hNZXNzYWdlIHB1c2hNZXNzYWdlKSAtPiAoYm9vbCBkaWRTdWNjZWVkKQor
ICAgIFByb2Nlc3NOb3RpZmljYXRpb25FdmVudChzdHJ1Y3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSBkYXRhLCBlbnVtOmJvb2wgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50
VHlwZSkKICNlbmRpZgogICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIG9yaWdpbikgLT4gKFN0cmluZyBlcnJvck1lc3NhZ2UpCiAgICAgR2V0T3JpZ2luc1dpdGhQ
dXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMDA5
MzIzNmYyZjY2ZWQ0NTdmYjU5ZDUyMzJhMzQwYjA3ZDIyYjZlNi4uN2RmYTBlMTg2NDlhMGZlMTNk
NGY3MjYxNWNhMjgzNjAwYzlmNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2Vy
dmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KIApA
QCAtMTE0LDE2ICsxMTUsMjggQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHMKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiYgZGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykK
K3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NpbmdQdXNoRXZlbnRzQ291bnQr
KykKKyAgICBpZiAoIW1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KyspCiAgICAgICAg
IG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0YXJ0U2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBpcGNEYXRhOwogICAgIGlmIChkYXRh
KQogICAgICAgICBpcGNEYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkgfTsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBpcGNEYXRhKSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgd2FzUHJvY2Vzc2VkKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKHdlYWtUaGlzICYmICEtLXdlYWtUaGlzLT5tX3Byb2Nlc3NpbmdQdXNoRXZlbnRzQ291bnQp
CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiAhLS13ZWFrVGhpcy0+bV9wcm9jZXNzaW5nRnVuY3Rp
b25hbEV2ZW50Q291bnQpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIHsg
d2Vha1RoaXMtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgICAgIGNhbGxiYWNr
KHdhc1Byb2Nlc3NlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpmaXJlTm90aWZpY2F0aW9uRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IE5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIE5v
dGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX3Byb2Nlc3NpbmdGdW5jdGlvbmFsRXZlbnRD
b3VudCsrKQorICAgICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdGFy
dFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSwgMCk7CisKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlTm90aWZpY2F0aW9uRXZlbnQgeyBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgZGF0YSwgZXZlbnRUeXBlIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHdhc1Byb2Nlc3NlZCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiAhLS13ZWFrVGhpcy0+bV9wcm9jZXNzaW5n
RnVuY3Rpb25hbEV2ZW50Q291bnQpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nIHsgd2Vha1RoaXMtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAgICAgICAgIGNh
bGxiYWNrKHdhc1Byb2Nlc3NlZCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggODBiMzAzZTQ0ZGJkYjM5MWQ1YjI1ZWIy
Nzk3MzQxYWVmZjAyYTA0NS4uMDE2YTgyNzUzNTBhYzFlYzM0NzkwMmIyZmEzNGY4Mjg2MzA5ZDVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC05Nyw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyJiwgY29uc3QgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVk
U2NyaXB0cykgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYpIGZpbmFsOwogICAgIHZvaWQgZmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBmaXJlTm90aWZp
Y2F0aW9uRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBm
aW5hbDsKICAgICB2b2lkIGZvY3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIApAQCAtMTExLDcgKzExMiw3IEBAIHByaXZh
dGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYWtQdHI8U2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzaz4+IG1fb25nb2luZ0Rvd25sb2FkczsKICAgICBib29sIG1faXNU
aHJvdHRsZWFibGUgeyB0cnVlIH07CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBh
Z2VQcm94eUlEOwotICAgIHNpemVfdCBtX3Byb2Nlc3NpbmdQdXNoRXZlbnRzQ291bnQgeyAwIH07
CisgICAgc2l6ZV90IG1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50IHsgMCB9OwogfTsg
Ly8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOGZlNjU4MWEwNWIwNGM2OWZiZDAxYWE2MTUyZmNj
ZDBjNzIxZjNjMi4uNmJmN2VjZWU1YjJhYjc3OTNlZjBkMDA3Nzc5OWEzNTRmNzY5ZTlhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xNzgwLDYgKzE3ODAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBX
ZWIKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQ
cm9jZXNzUHVzaE1lc3NhZ2UgeyBzZXNzaW9uSUQsIHB1c2hNZXNzYWdlIH0sIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzTm90aWZpY2F0
aW9uRXZlbnQoY29uc3QgTm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRU
eXBlIGV2ZW50VHlwZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJv
Y2Vzc05vdGlmaWNhdGlvbkV2ZW50IHsgZGF0YSwgZXZlbnRUeXBlIH0sIDApOworfQogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDVjMWQwNTNm
MWY4Y2ZmNTU2MGY2ZGU5ZTE2YWExNTFmYWI3YTVmNjYuLmFmYWI1MmQzNjMzZTVkNDA0ZWZkOTVl
Y2U2ZmFlOTcxZDFhZmFkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdh
dGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25FdmVudFR5cGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgpAQCAtNzIsMTMgKzczLDE0IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBlbnVtIGNsYXNzIFNo
b3VsZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIGVu
dW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiB1aW50OF90OwotY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogc3RydWN0IENsaWVudE9yaWdp
bjsKK3N0cnVjdCBOb3RpZmljYXRpb25EYXRhOworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yODQsNiArMjg2LDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1
c2hNZXNzYWdlPiYpPiYmKTsKICAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViUHVzaE1lc3NhZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
d2FzUHJvY2Vzc2VkKT4mJik7CisgICAgdm9pZCBwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50
VHlwZSk7CiAjZW5kaWYKIAogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lz
dHJhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bi5jcHAKaW5kZXggYjkwMTg0MjExMjJlOGU5NWY0ZjZkY2YxYTJmMDMzNGE4ODFjM2E3Yy4uOGVj
YWMxMjM2YTVmMThlYTNlN2I3NWQ1MmNjZTM1ODhmZWU2NGYxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNw
cApAQCAtMzEsMTQgKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJOb3RpZmljYXRp
b246OldlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRh
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24m
IHNvdXJjZUNvbm5lY3Rpb24pCi0gICAgOiBtX3RpdGxlKGRhdGEudGl0bGUpCi0gICAgLCBtX2Jv
ZHkoZGF0YS5ib2R5KQotICAgICwgbV9pY29uVVJMKGRhdGEuaWNvblVSTCkKLSAgICAsIG1fdGFn
KGRhdGEudGFnKQotICAgICwgbV9sYW5nKGRhdGEubGFuZ3VhZ2UpCi0gICAgLCBtX2RpcihkYXRh
LmRpcmVjdGlvbikKKyAgICA6IG1fZGF0YShkYXRhKQogICAgICwgbV9vcmlnaW4oQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhkYXRhLm9yaWdpblN0cmluZykpCi0gICAgLCBt
X2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5vdGlmaWNhdGlvbklEKQogICAgICwgbV9wYWdlSWRl
bnRpZmllcihwYWdlSWRlbnRpZmllcikKICAgICAsIG1fc291cmNlQ29ubmVjdGlvbihzb3VyY2VD
b25uZWN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXggYzE0ZjE0YzBiYWJkYzA4MTRjYTA3OTIz
YzA5ZjdmNzYxOWJmODc1Mi4uMzdiNjJiMjliNThkYzljZjM0NjMwMzQzNzQyNTk3ZGMzZjA2ZmRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgog
I2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcsMTcgKzQ4LDIyIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRhdGEsIHBhZ2VJ
ZGVudGlmaWVyLCBzb3VyY2VDb25uZWN0aW9uKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5n
JiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIGJv
ZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGljb25VUkwo
KSBjb25zdCB7IHJldHVybiBtX2ljb25VUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRhZygpIGNv
bnN0IHsgcmV0dXJuIG1fdGFnOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYW5nOyB9Ci0gICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlyOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS50aXRsZTsgfQorICAgIGNvbnN0IFN0cmluZyYgYm9keSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5ib2R5OyB9CisgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmljb25VUkw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRhZygpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS50YWc7IH0KKyAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEubGFuZ3VhZ2U7IH0KKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25E
aXJlY3Rpb24gZGlyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmRpcmVjdGlvbjsgfQorICAgIGNv
bnN0IFVVSUQmIGNvcmVOb3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ub3Rp
ZmljYXRpb25JRDsgfQorICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5zb3VyY2VTZXNzaW9uOyB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgYm9vbCBpc1Bl
cnNpc3RlbnROb3RpZmljYXRpb24oKSBjb25zdCB7IHJldHVybiAhbV9kYXRhLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25VUkwuaXNFbXB0eSgpOyB9CisKICAgICBjb25zdCBBUEk6OlNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogICAgIEFQ
STo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CiAK
ICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIGlkZW50aWZpZXIo
KTsgfQotICAgIGNvbnN0IFVVSUQmIGNvcmVOb3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29yZU5vdGlmaWNhdGlvbklEOyB9CiAKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIElQ
Qzo6Q29ubmVjdGlvbiogc291cmNlQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
Q29ubmVjdGlvbi5nZXQoKTsgfQpAQCAtNjUsMTUgKzcxLDggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYpOwogCi0gICAgU3RyaW5nIG1f
dGl0bGU7Ci0gICAgU3RyaW5nIG1fYm9keTsKLSAgICBTdHJpbmcgbV9pY29uVVJMOwotICAgIFN0
cmluZyBtX3RhZzsKLSAgICBTdHJpbmcgbV9sYW5nOwotICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRpcmVjdGlvbiBtX2RpcjsKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG1fZGF0YTsK
ICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47Ci0gICAgVVVJRCBtX2Nv
cmVOb3RpZmljYXRpb25JRDsKLQogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRl
bnRpZmllcjsKICAgICBXZWFrUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9zb3VyY2VDb25uZWN0aW9u
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCBiM2Fj
NzJiNWY2Y2I4MTlmZDlhMmMwNzZiMGQ2OTI2MWNiZTUxODBhLi5mZDE5NmQzMGY0N2U4ZWNjN2Ri
MGZjMGNkYjI3NjM3MzMwYjNlMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCkBAIC0xODYsMTEgKzE4NiwxNiBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZENs
aWNrTm90aWZpY2F0aW9uKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGlmICgh
bm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBjb25uZWN0aW9uID0g
bm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobm90aWZpY2F0aW9uLT5pc1BlcnNp
c3RlbnROb3RpZmljYXRpb24oKSkgeworICAgICAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobm90aWZpY2F0aW9u
LT5zZXNzaW9uSUQoKSkpCisgICAgICAgICAgICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCku
cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KG5vdGlmaWNhdGlvbi0+ZGF0YSgpLCBOb3RpZmljYXRp
b25FdmVudFR5cGU6OkNsaWNrKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogCi0g
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlk
Q2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSksIDAp
OworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0
aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNh
dGlvbklEKCkpLCAwKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQp
CkBAIC0yNDIsNiArMjQ3LDE0IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpw
cm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAgICAgICAgIGlm
ICghbm90aWZpY2F0aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgICAgIGlmIChub3RpZmljYXRpb24tPmlzUGVyc2lzdGVudE5vdGlm
aWNhdGlvbigpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobm90aWZpY2F0aW9uLT5zZXNz
aW9uSUQoKSkpCisgICAgICAgICAgICAgICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnBy
b2Nlc3NOb3RpZmljYXRpb25FdmVudChub3RpZmljYXRpb24tPmRhdGEoKSwgTm90aWZpY2F0aW9u
RXZlbnRUeXBlOjpDbG9zZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRp
ZgorCiAgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbklEKCkpOwogICAgICAgICBjbG9zZWROb3RpZmljYXRpb25zLmFwcGVuZChX
VEZNb3ZlKG5vdGlmaWNhdGlvbikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCAxZTFhMzliZTdjMTQ2MzdhN2Q2MjkzZmFiMjkwY2Q4NzE4NTNmOGMwLi43
M2VjZGUyNmQ4ZTA5YzliYTYwYmQ0NTE4ZjlhZDA1NWEwMmI3NjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2Nyw2ICsyNjcsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGkKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlUHVzaEV2ZW50KGlk
ZW50aWZpZXIsIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vdGlmaWNhdGlvbkRhdGEmJiBkYXRhLCBO
b3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQoreworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZp
cmVOb3RpZmljYXRpb25FdmVudChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBldmVudFR5cGUs
IFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlk
ZW50aWZpZXIsIFNXQ29udGV4dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBmODk2YjFiMGViNDE3
YzZhY2RhNDIwNWIyNjQ3YmJkNjg1YTFmMWYwLi41ODQyODJjMTA4M2UxNDg2ZjllMWZlMmY4MGMx
NjA2NmYwZDUxYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAxLDYgKzEw
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpcmVQdXNoRXZlbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRh
UmVmZXJlbmNlPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYmIGltcG9ydGVk
U2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IDZlZjI3ZWZjMmEzYTFlNGI3MmI5ZjZhZTU0NDM3YjUyZGE2NDc2M2IuLmZmNDMw
N2U1OTY1N2Q5NTIzMzU3MGE1OTgwMmFkZDA4YzI3YjZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmlyZUluc3RhbGxF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgRmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgLT4gKGJv
b2wgcmVzdWx0KQorICAgIEZpcmVOb3RpZmljYXRpb25FdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSBkYXRhLCBlbnVtOmJvb2wgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlIHR5cGUpIC0+
IChib29sIHJlc3VsdCkKIAogICAgIFRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
ICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDExOGRkYTc5OTVjYWY0YzZhOTViNmYyNzk2NmI2
ZjkxZGY1ZWY0NTAuLjYxODU1MzhmMWQ3MjBhYzUzNjY4YTFjOTg5OTNmY2UwZjE0NzgyZDUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMy0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlcnNpc3RlbnQgbm90aWZpY2F0aW9uIGhh
bmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1s
OgorCiAyMDIyLTAzLTI4ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIG1hY09TICYgV2luIF0gZmFzdC9yZXBhaW50L2xpc3QtaXRlbS1lcXVhbC1zdHlsZS1jaGFu
Z2Utbm8tcmVwYWludC5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxvd2Vk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93bm90aWZp
Y2F0aW9uLWFsbG93ZWQuaHRtbAppbmRleCBhZDRhMDAxNTY3OTVkMjk4MmEyNzQwYTI0NjZmNTll
M2JhNzk2MzA5Li43NjZhYmZlZTUxY2EzYWQyNGNlYTg0NzhmMzg5YmVhYWRhODZhZDFjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93bm90aWZp
Y2F0aW9uLWFsbG93ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApAQCAtNDUsMTAgKzQ1LDE2IEBA
IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlcigpIHsKIHZhciBnb3RDbGlja2Vk
ID0gZmFsc2U7CiB2YXIgZ290Q2xvc2VkID0gZmFsc2U7CiAKLW5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBldmVudCA9PiB7CituYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgZXZlbnQgPT4gewog
ICAgIGlmIChldmVudC5kYXRhID09ICJzaG93RmFpbGVkIikgewogICAgICAgICBmYWlsVGhlVGVz
dCgiVW5leHBlY3RlZGx5IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CiAg
ICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgLy8gV2Ugc2lt
dWxhdGUgYSBuZXR3b3JrIHByb2Nlc3MgY3Jhc2ggc28gdGhhdCB3ZSBtYWtlIHN1cmUgdGhhdCBh
IG5vdGlmaWNhdGlvbiBjbGljayBlbnN1cmVzIHJlc3RhcnRpbmcgYSBzZXJ2aWNlIHdvcmtlcgor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGF3YWl0IGludGVybmFs
cy5zdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwor
CiAgICAgICAgIGlmICh0ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKICAg
ICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImNsaWNrZWQiKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456014</attachid>
            <date>2022-03-29 04:19:42 -0700</date>
            <delta_ts>2022-03-30 02:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238498-20220329131939.patch</filename>
            <type>text/plain</type>
            <size>76112</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4MzRlYTFjZWIxYzE2
MGM2Njg1ZTFjNmJkOTk2MGI3NTgzMjljMy4uN2I1MTQzYTBhMjA0MTcwMDcwMmEyMDc5ZmMzZGNm
ZTIwNzJhYzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb24gaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsIHdlIHdlcmUgZGlyZWN0bHkgZ29p
bmcgZnJvbSBVSVByb2Nlc3MgdG8gc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgVGhp
cyB3b3JrcyBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgcnVubmluZyBidXQgZG9lcyBub3Qgb3Ro
ZXJ3aXNlLgorICAgICAgICBUbyBtYWtlIHN1cmUgd2Ugbm93IGdvIHRvIE5ldHdvcmtQcm9jZXNz
LgorICAgICAgICBUbyBpbXBsZW1lbnQgaHR0cHM6Ly9ub3RpZmljYXRpb25zLnNwZWMud2hhdHdn
Lm9yZy8jcGVyc2lzdGVudC1ub3RpZmljYXRpb24sCisgICAgICAgIHdlIGFkZCBhIHNlcnZpY2Ug
d29ya2VyIHJlZ2lzdHJhdGlvbiBVUkwgdG8gTm90ZmljYXRpb25EYXRhLgorICAgICAgICBXZSBy
ZW1vdmUgdGhlIG5vdGZpY2F0aW9uIGhhbmRsaW5nIGdvaW5nIHRocm91Z2ggTm90aWZpY2F0aW9u
RXZlbnQgYW5kIG1ha2UgaXQgRG9jdW1lbnQgc3BlY2lmaWMuCisgICAgICAgIEluc3RlYWQsIHdl
IGdvIHRocm91Z2ggU2VydmljZVdvcmtlclRocmVhZFByb3h5LgorICAgICAgICBNYWtlIHN1cmUg
U1dTZXJ2ZXIgdHJlYXRzIG5vdGlmaWNhdGlvbiBldmVudHMgYXMgZnVuY3Rpb25hbCBldmVudHMu
CisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0LgorCisgICAgICAgICogSGVhZGVycy5j
bWFrZToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6ZGF0YSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25E
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnRUeXBlLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25F
dmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZmlyZU5v
dGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFk
OjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9u
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRGdW5j
dGlvbmFsRXZlbnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZDo6c3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdG9wRnVuY3Rpb25hbEV2ZW50TW9uaXRv
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdG9wUHVzaEV2
ZW50TW9uaXRvcmluZyk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQdXNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlTm90aWZpY2F0aW9u
RXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlSWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6ZGVjcmVtZW50UHVzaEV2
ZW50Q291bnRlcik6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmluY3Jl
bWVudEZ1bmN0aW9uYWxFdmVudENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJX
b3JrZXI6OnNob3VsZENvbnRpbnVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
V29ya2VyOjppbmNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKTogRGVsZXRlZC4KKwogMjAyMi0wMy0y
OCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8gaXMgbWlzbGVhZGluZyBhcyBpdCBpcyBhY3R1YWxseSBy
ZWZlcnJpbmcgdG8gY2FtZXJhIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODAyMTkyMTI1ZDc1OTFlMzQw
YzY2MThiNmIzZWM5YzBlYjE0YzI2Yy4uMzU4M2FhNmIwODRlNTM2MWNiOGVlODM4MmQyMTQ5Nzdl
Y2YzZmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMi0wMy0yOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlcnNpc3RlbnQg
bm90aWZpY2F0aW9uIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIHJlY2VpdmluZyBhbiB1cGRhdGUgZm9yIGEgbm90aWZpY2F0aW9u
LCBjaGVjayBpZiB0aGUgbm90aWZpY2F0aW9uIGlzIHRpZWQgdG8gYSBzZXJ2aWNlIHdvcmtlciBy
ZWdpc3RyYXRpb24uCisgICAgICAgIElmIHNvLCBnbyB0byBuZXR3b3JrIHByb2Nlc3MgdG8gZmly
ZSBhIGZ1bmN0aW9uYWwgZXZlbnQsIGFzIHBlciBodHRwczovL25vdGlmaWNhdGlvbnMuc3BlYy53
aGF0d2cub3JnLyNhY3RpdmF0aW5nLWEtbm90aWZpY2F0aW9uCisgICAgICAgIGFuZCBodHRwczov
L25vdGlmaWNhdGlvbnMuc3BlYy53aGF0d2cub3JnLyNyZWYtZm9yLWZpcmUtYS1zZXJ2aWNlLXdv
cmtlci1ub3RpZmljYXRpb24tZXZlbnTikaAKKyAgICAgICAgVUlQcm9jZXNzIHNlbmRzIHRoZSBj
b3JyZXNwb25kaW5nIE5vdGZpY2F0aW9uRGF0YSB0byBOZXR3b3JrUHJvY2Vzcy4KKyAgICAgICAg
TmV0d29ya1Byb2Nlc3MgZ2V0cyB0aGUgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uLCBydW5z
IHRoZSBzZXJ2aWNlIHdvcmtlciBhcyBuZWVkZWQgYW5kIGZpcmVzIHRoZSBmdW5jdGlvbmFsIGV2
ZW50LgorICAgICAgICBBZGQgSVBDIHBsdW1iaW5nIGNvZGUgdG8gc3VwcG9ydCB0aGlzIGZsb3cu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpm
aXJlTm90aWZpY2F0aW9uRXZlbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uOjp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bjo6Ym9keSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6aWNvblVS
TCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6dGFnIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpsYW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpkaXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbjo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uOjppc1BlcnNpc3RlbnROb3RpZmljYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb246Om5vdGlmaWNhdGlvbklEIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpkaXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZp
Y2F0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmZpcmVOb3RpZmljYXRpb25FdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
CiAyMDIyLTAzLTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyBpcyBtaXNsZWFkaW5nIGFzIGl0IGlz
IGFjdHVhbGx5IHJlZmVycmluZyB0byBjYW1lcmEgc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggM2UwNzUyZDMzZDU5MWRlMGFmOTBhNDY0ODczM2VmMmRlZDVlYjViOS4uNDA1ZjY3NGYwYjM4
NmFlMWIxN2MyMWRlZmQzZjMyZTY0YmUxMzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yOTEs
NiArMjkxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmgKICAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkV2ZW50VHlwZS5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb24uaAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDg3YjJlM2M5NGUwYjc1ZGQ3YmM1
MDY5NTI4NDI1YTcwYmU3N2ZmNDcuLjVmNjBiMzI0MTc4ODA1ZGUwNzQzY2M3YjA0MWI2NzUyNzI0
NmEzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uY3BwCkBAIC02MSw2ICs2MSwxNSBAQCBSZWY8Tm90aWZpY2F0aW9uPiBO
b3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJp
bmcmJgogICAgIHJldHVybiBub3RpZmljYXRpb247CiB9CiAKK1JlZjxOb3RpZmljYXRpb24+IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE5vdGlm
aWNhdGlvbkRhdGEmJiBkYXRhKQoreworICAgIE9wdGlvbnMgb3B0aW9ucyB7IGRhdGEuZGlyZWN0
aW9uLCBXVEZNb3ZlKGRhdGEubGFuZ3VhZ2UpLCBXVEZNb3ZlKGRhdGEuYm9keSksIFdURk1vdmUo
ZGF0YS50YWcpLCBXVEZNb3ZlKGRhdGEuaWNvblVSTCkgfTsKKyAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIFdURk1vdmUoZGF0YS50aXRs
ZSksIFdURk1vdmUob3B0aW9ucykpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIG5vdGlmaWNhdGlvbi0+c2hvd1Nvb24oKTsKKyAgICByZXR1cm4gbm90aWZpY2F0
aW9uOworfQorCiBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiB0aXRsZSwgT3B0aW9ucyYmIG9wdGlvbnMpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3RpdGxlKFdURk1vdmUodGl0bGUpLmlz
b2xhdGVkQ29weSgpKQpAQCAtMjI0LDM3ICsyMzMsMTggQEAgdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoU2hvd0V2ZW50KCkKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzd2l0Y2ggKG1fbm90aWZp
Y2F0aW9uU291cmNlKSB7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50Ogot
ICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVz
ZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsKLSAgICAgICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6Ci0gICAgICAgIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZW5zdXJlT25Db250ZXh0VGhyZWFkKG1fY29udGV4dElk
ZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgY29u
dGV4dCkgewotICAgICAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihj
b250ZXh0KS5wb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50
VHlwZTo6Q2xpY2ssICp0aGlzLCB7IH0pOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvblNvdXJjZSA9PSBOb3RpZmljYXRpb25Tb3Vy
Y2U6OkRvY3VtZW50KTsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsKKyAgICAgICAgV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dlZDsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9KTsKIH0KIAogdm9pZCBOb3Rp
ZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLQotICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKLSAgICBjYXNlIE5v
dGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ6Ci0gICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hF
dmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3Vy
Y2U6OlNlcnZpY2VXb3JrZXI6Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZW5z
dXJlT25Db250ZXh0VGhyZWFkKG1fY29udGV4dElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAgZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wb3N0VGFza1RvRmlyZU5vdGlm
aWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2UsICp0aGlzLCB7IH0pOwot
ICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCisgICAgQVNTRVJUKG1fbm90aWZp
Y2F0aW9uU291cmNlID09IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQpOworICAgIHF1ZXVl
VGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBmaW5hbGl6ZSgpOwogfQogCkBAIC0z
MjQsOSArMzE0LDE1IEBAIGJvb2wgTm90aWZpY2F0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIAogTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRpb246OmRhdGEoKSBjb25z
dAogeworICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGF1dG8gc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChzZXNzaW9uSUQpOwogCisgICAgVVJMIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25VUkw7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChpczxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uVVJMID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS5yZWdpc3RyYXRpb24oKS5kYXRhKCkuc2NvcGVVUkw7CisjZW5kaWYKICAgICByZXR1cm4g
ewogICAgICAgICBtX3RpdGxlLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBtX2JvZHkuaXNvbGF0
ZWRDb3B5KCksCkBAIC0zMzUsNiArMzMxLDcgQEAgTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRp
b246OmRhdGEoKSBjb25zdAogICAgICAgICBtX2xhbmcsCiAgICAgICAgIG1fZGlyZWN0aW9uLAog
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUoc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvblVSTCkuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICAg
ICAgKnNlc3Npb25JRCwKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IDRhYTliMzQxZmMxYzQxM2Y3MDM2NTI5
OTZmYTY3MDNiNWEwMDJhM2YuLmY1NjE2OGMxZjg5MWNmNGYzYjgwN2QyYzdjNWFhMzJmODk3YTky
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKQEAgLTY1LDcgKzY1LDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgaWNv
bjsKICAgICB9OwogICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFN0cmluZyYmIHRpdGxlLCBPcHRpb25zJiYpOwotICAgIAorICAgIHN0
YXRpYyBSZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE5v
dGlmaWNhdGlvbkRhdGEmJik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Ob3RpZmlj
YXRpb24oKTsKIAogICAgIHZvaWQgc2hvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuY3BwCmluZGV4IDYwNDcw
ODM1NTk1MDYyNTU2MGQwMDA5MmY5MmVmZTRmM2Q1NWI1NmQuLmJmZmIzOGUwZTQzMWUxYTEyZjMx
OGU3NGYzYWIyZGMwMDJlYWZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAKQEAgLTI4LDQgKzI4LDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRp
b25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCit7CisgICAgcmV0dXJuIHsgdGl0bGUuaXNv
bGF0ZWRDb3B5KCksIGJvZHkuaXNvbGF0ZWRDb3B5KCksIGljb25VUkwuaXNvbGF0ZWRDb3B5KCks
IHRhZy5pc29sYXRlZENvcHkoKSwgbGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwg
b3JpZ2luU3RyaW5nLmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJM
Lmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiB9OworfQorCitO
b3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpICYmCit7Cisg
ICAgcmV0dXJuIHsgV1RGTW92ZSh0aXRsZSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoYm9keSku
aXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaWNvblVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
dGFnKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShsYW5ndWFnZSkuaXNvbGF0ZWRDb3B5KCksIGRp
cmVjdGlvbiwgV1RGTW92ZShvcmlnaW5TdHJpbmcpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25J
RCwgc291cmNlU2Vzc2lvbiB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRh
dGEuaAppbmRleCBiY2RkZTNjMDU4NzY5MGUzNGY1ZTQxZjQxNjAzMjg1N2Y4MWMwMzE5Li4zMjIw
OTgzM2VkYTIwNDE2NGJkNTYxMTc5NmQ0MDBmN2Y3YTI3YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNiArMzksOSBAQCBzdHJ1Y3Qg
Tm90aWZpY2F0aW9uRGF0YSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKKyAgICBO
b3RpZmljYXRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgTm90aWZpY2F0aW9u
RGF0YSBpc29sYXRlZENvcHkoKSAmJjsKKwogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcg
Ym9keTsKICAgICBTdHJpbmcgaWNvblVSTDsKQEAgLTQ1LDYgKzQ5LDcgQEAgc3RydWN0IE5vdGlm
aWNhdGlvbkRhdGEgewogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7CisgICAg
VVJMIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkw7CiAgICAgVVVJRCBub3RpZmljYXRpb25J
RDsKICAgICBQQUw6OlNlc3Npb25JRCBzb3VyY2VTZXNzaW9uOwogfTsKQEAgLTUyLDcgKzU3LDcg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgTm90aWZpY2F0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCB0aXRsZSA8PCBib2R5IDw8IGljb25VUkwgPDwgdGFnIDw8IGxhbmd1YWdl
IDw8IGRpcmVjdGlvbiA8PCBvcmlnaW5TdHJpbmcgPDwgbm90aWZpY2F0aW9uSUQgPDwgc291cmNl
U2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVSTCA8PCB0YWcg
PDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uVVJMIDw8IG5vdGlmaWNhdGlvbklEIDw8IHNvdXJjZVNlc3Npb247CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC05Myw2ICs5OCwxMSBAQCBzdGQ6Om9wdGlvbmFs
PE5vdGlmaWNhdGlvbkRhdGE+IE5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghb3JpZ2luU3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkw7
CisgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMOworICAgIGlmICgh
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKwogICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gbm90aWZpY2F0aW9uSUQ7CiAgICAgZGVjb2Rl
ciA+PiBub3RpZmljYXRpb25JRDsKICAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQpAQCAtMTExLDYg
KzEyMSw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIFdURk1vdmUoKmxhbmd1YWdlKSwK
ICAgICAgICAgV1RGTW92ZSgqZGlyZWN0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqb3JpZ2luU3Ry
aW5nKSwKKyAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCksCiAg
ICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKICAgICAgICAgV1RGTW92ZSgqc291cmNl
U2Vzc2lvbiksCiAgICAgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAppbmRleCBiMjFjMmVkODRhYzU0MDA4
MDU0MTAyMzg3MzFiY2RkMmMwYjBjMWZiLi5hZDMxNTFkN2Y0MjY0ZDgxZTRhNjkwN2JlYWI0M2I0
OWI3YTQzZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApAQCAtMzAsMTQgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiRXh0ZW5kYWJsZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZUV2ZW50SW5pdC5oIgog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50VHlw
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZl
bnRUeXBlIDogYm9vbCB7Ci0gICAgQ2xpY2ssCi0gICAgQ2xvc2UsCi19OwotCiBzdHJ1Y3QgTm90
aWZpY2F0aW9uRXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CiAgICAgUmVmUHRyPE5v
dGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwogICAgIFN0cmluZyBhY3Rpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
RXZlbnRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMwMjJjN2I4N2RmY2ZlYmU2YjMwMWRiMGRlMzE3OGFl
ZDdiNTA4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudFR5cGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDogYm9v
bCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSwKKyAgICAgICAgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywKKyAgICAgICAgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZQorICAgID47Cit9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWFiOTMyMWI1
MmFiZTJkOThhYzMwMjJiYWNjYTI4YmM2NWJlZTNlZi4uMzY5ZTk1ZWQ2ZDI2Mjg2M2RiOTQ4ZTMx
ZWQzMmFmYzU4MTljOWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3NCw2ICsxMDc0LDcgQEAKIAkJNDExMjIzQzUyNjAz
NTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTIyM0MzMjYwMzU2N0MwMEIwQTBCNiAv
KiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDExMkI1NDMxRjlGOUNBMDAwRTY3ODc1IC8qIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDExMkI1M0YxRjlGOUM5QjAwRTY3ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExNEZFMkYyNUJFQkQxODAw
OUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87IH07CisJCTQxMjAxRjM3MjdGMkY3NDkw
MEQ1NkNDMiAvKiBOb3RpZmljYXRpb25FdmVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjAxRjM2MjdGMkY3NDYwMEQ1NkNDMiAvKiBOb3Rp
ZmljYXRpb25FdmVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Yx
OUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMw
OTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1
MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI4MjdCMjI3
RTRBQzNDMDA1QURERTIgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJh
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
ODU4NCw2ICs4NTg1LDcgQEAKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgw
MEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDEyMDFGMzYyN0YyRjc0NjAwRDU2Q0MyIC8qIE5vdGlmaWNhdGlvbkV2ZW50
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25FdmVudFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIFNGcmFtZVV0
aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNGcmFtZVV0aWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTI2MjU3QTJGQkIwMDEyMEFDQSAvKiBT
RnJhbWVVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTRnJh
bWVVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTkxMjE2RDU5
M0MwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UlRDQ2VydGlmaWNhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA5NzYs
NiArMjA5NzgsNyBAQAogCQkJCTUxMEUyRjJDMjc2QkUwQzMwMDgwOTMzMyAvKiBOb3RpZmljYXRp
b25FdmVudC5jcHAgKi8sCiAJCQkJNTEwRTJGMjQyNzZCQjRFQzAwODA5MzMzIC8qIE5vdGlmaWNh
dGlvbkV2ZW50LmggKi8sCiAJCQkJNTEwRTJGMjIyNzZCQTlFODAwODA5MzMzIC8qIE5vdGlmaWNh
dGlvbkV2ZW50LmlkbCAqLywKKwkJCQk0MTIwMUYzNjI3RjJGNzQ2MDBENTZDQzIgLyogTm90aWZp
Y2F0aW9uRXZlbnRUeXBlLmggKi8sCiAJCQkJNTEwRTJGMjYyNzZCQzE5RjAwODA5MzMzIC8qIE5v
dGlmaWNhdGlvbk9wdGlvbnMuaCAqLywKIAkJCQk1MUUzQUYwQTI3NkIwNUI3MDA5QjQyOUQgLyog
Tm90aWZpY2F0aW9uT3B0aW9ucy5pZGwgKi8sCiAJCQkJN0NDMkRERjgxRUM5NDE1QTAwMjdCNzc0
IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCAqLywKQEAgLTM2NTk1LDYgKzM2NTk4LDcgQEAK
IAkJCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0aW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NDMkRFMDMxRUNBMDRBNTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJGMjUyNzZCQjRFQzAwODA5MzMzIC8q
IE5vdGlmaWNhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTIwMUYzNzI3RjJGNzQ5
MDBENTZDQzIgLyogTm90aWZpY2F0aW9uRXZlbnRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTBFMkYyNzI3NkJDMTlGMDA4MDkzMzMgLyogTm90aWZpY2F0aW9uT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NDMkRERkIxRUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1p
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJDNCAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCAyNWFhZjY3ODU5NGQyOTYwNzNhMzY5ZGQ2YWRlZGY3ODIxMjZlYjYw
Li43YTU3MjI3YTEwNGQ1ZWE3ZWYzZTUwNzhkYzdmNDEyZDZiNmIwNWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtMTk5LDI5ICsxOTksNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgc2NyaXB0LCBIYXNoTQog
ICAgIH0KIH0KIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCi12b2lkIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmlj
YXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgY29u
c3QgU3RyaW5nJiBhY3Rpb24pCi17Ci0gICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9y
TW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmljYXRpb24gPSBSZWYgeyBub3RpZmljYXRp
b24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29weSgpXShhdXRvJiBzY29wZSkgewotICAg
ICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJlZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwg
cHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsKLSAgICAgICAgICAgIEF0b21TdHJpbmcg
ZXZlbnROYW1lOwotICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHsKLSAgICAgICAgICAg
IGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljazoKLSAgICAgICAgICAgICAgICBldmVu
dE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xpY2tFdmVudDsKLSAgICAgICAgICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5yZWNvcmRVc2Vy
R2VzdHVyZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBOb3Rp
ZmljYXRpb25FdmVudFR5cGU6OkNsb3NlOgotICAgICAgICAgICAgICAgIGV2ZW50TmFtZSA9IGV2
ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbG9zZUV2ZW50OwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIGV2ZW50ID0gTm90aWZpY2F0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHByb3RlY3RlZE5vdGlmaWNhdGlvbi5wdHIoKSwgYWN0
aW9uLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKLSAgICAgICAgICAgIGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmRpc3BhdGNoRXZlbnQoZXZlbnQp
OwotICAgICAgICB9KTsKLSAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLX0K
LSNlbmRpZgotCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cmVjb3JkVXNlckdlc3R1
cmUoKQogewogICAgIG1faXNQcm9jZXNzaW5nVXNlckdlc3R1cmUgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oCmluZGV4IDk1MzgwYzM4YWU5NGVjNTk3NTllOGI0ZWQ3MmIxNmZiZTM4NmJkMDYuLjJm
MzUyOTE0MzBkYjBjZDA3Y2FlOTRlYTJkYWRhZDJlZmYwNmFjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgKQEAgLTgxLDEwICs4MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2Uq
IHNlcnZpY2VXb3JrZXJQYWdlKCk7CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQot
ICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVu
dFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKLSNlbmRpZgotCiAg
ICAgYm9vbCBoYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQ
ZW5kaW5nU2lsZW50UHVzaEV2ZW50OyB9CiAgICAgdm9pZCBzZXRIYXNQZW5kaW5nU2lsZW50UHVz
aEV2ZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50ID0gdmFsdWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlMjYxODJhZTkyODNkMjgxZjNhYzQxYzkw
ZGNiZGEyMjU0MTdlOGRhLi44MWI0NDI4Y2IyMDNlNDBkMjhlYmY5OWQ0ZjA1ZDQ2OWRhZjEzYjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTI4LDYgKzEyOCwxNCBAQCB2b2lkIFNXQ29u
dGV4dE1hbmFnZXI6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaQogICAgIHNlcnZpY2VXb3JrZXItPmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQoV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgV1RGTW92ZShvbGRTdWJzY3Jp
cHRpb25EYXRhKSk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFuYWdlcjo6ZmlyZU5vdGlmaWNhdGlv
bkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vdGlmaWNhdGlvbkRh
dGEmJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIg
PSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2VyLT5maXJlTm90aWZpY2F0aW9uRXZl
bnQoV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CiAKIHZv
aWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlZTdjMTVkMmI4N2RjNDYy
NWZiNGU3ZDFjODExODljMmI0ZGU3YTUuLjlhMjNjNWFkMDM2NjgwZTlkOGVhODgzYjZhMDk2YzVi
NGE4NTk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVB1c2hFdmVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmly
ZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBz
dGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBOb3RpZmljYXRpb25EYXRhJiYsIE5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0
aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEJ1ZmZlciYm
LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGI1Y2M4NmFjZDRiMzYyYWZlNWE2Yjc2OTBkM2Q2MmI1
ODg4MzZlZmYuLjdmMjExMWRlMDRlMDhmYjBlNGI1NGUyNmMwNzU2ZDM5ZjQ3YzAyZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAi
UHVzaEV2ZW50LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgpAQCAtMjUwLDggKzI1
Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50
KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVh
ZDo6cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KHN0ZDo6b3B0aW9u
YWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRp
b25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKQogewotICAg
IFJlZiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUt
PmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIG5ld1N1
YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBvbGRTdWJzY3Jp
cHRpb25EYXRhID0gV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKV0oKSBtdXRhYmxlIHsKKyAg
ICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IFJl
ZiB7IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB9LCBuZXdTdWJzY3JpcHRpb25EYXRhID0gV1RG
TW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IFdURk1vdmUo
b2xkU3Vic2NyaXB0aW9uRGF0YSldKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmlyaW5nIGV2ZW50IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKIAogICAgICAgICBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gbmV3U3Vic2NyaXB0aW9uOwpA
QCAtMjc1LDYgKzI3Nyw0NCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbgogICAgIH0pOwogfQog
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2VydmljZVdvcmtlclRocmVh
ZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmIGRh
dGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7CisgICAgc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgfSwgZGF0YSA9
IFdURk1vdmUoZGF0YSksIGV2ZW50VHlwZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50IGZpcmluZyBldmVu
dCBmb3Igd29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQo
KS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICAgICAgQXRvbVN0cmluZyBldmVudE5h
bWU7CisgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7CisgICAgICAgIGNhc2UgTm90aWZpY2F0
aW9uRXZlbnRUeXBlOjpDbGljazoKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMo
KS5ub3RpZmljYXRpb25jbGlja0V2ZW50OworICAgICAgICAgICAgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLT5yZWNvcmRVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgIGV2ZW50TmFt
ZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbG9zZUV2ZW50OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlv
bjo6Y3JlYXRlKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSwgV1RGTW92ZShkYXRhKSk7
CisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uRXZlbnQgPSBOb3RpZmljYXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZSwgbm90aWZpY2F0aW9uLnB0cigpLCBlbXB0eVN0cmluZygpLCBFeHRlbmRh
YmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLT5kaXNwYXRjaEV2ZW50KG5vdGlmaWNhdGlvbkV2ZW50KTsKKworICAgICAgICBub3RpZmlj
YXRpb25FdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFtzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8m
JiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRMaWZl
dGltZVByb21pc2VzKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygpID09
IERPTVByb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Vj
Y2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFz
dWNjZXNzLCBTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9G
aXJlTm90aWZpY2F0aW9uRXZlbnQgZmFpbGVkIHRvIHByb2Nlc3Mgbm90aWZpY2F0aW9uIGV2ZW50
Iik7CisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisjZW5kaWYKKwogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEV2YWx1YXRp
bmdTY3JpcHQoKQogewogICAgIEFTU0VSVChnbG9iYWxTY29wZSgpLT5pc0NvbnRleHRUaHJlYWQo
KSk7CkBAIC0zMTEsOSArMzUxLDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEZl
dGNoRXZlbnRNb25pdG9yaW5nKCkKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiB9CiAKLXZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKCkKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRGdW5jdGlvbmFsRXZlbnRNb25pdG9yaW5nKCkKIHsK
LSAgICBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgPSB0cnVlOworICAgIG1faXNIYW5kbGluZ0Z1bmN0
aW9uYWxFdmVudCA9IHRydWU7CiAgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOwogfQogCkBAIC0z
MzksNyArMzc5LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRp
bWVyKCkKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCgpCiB7
CiAgICAgaWYgKCFtX29uZ29pbmdIZWFydEJlYXRDaGVjaykgewotICAgICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nIHx8
IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHx8IG1fcHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgfHwgbV9tZXNzYWdlRXZlbnRDb3VudCkKKyAg
ICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ0Z1
bmN0aW9uYWxFdmVudCB8fCBtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHx8IG1f
bWVzc2FnZUV2ZW50Q291bnQpCiAgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggNzU2NmI0
ZDRhOWQxM2M4MGUwODM2Mjk3MjY2NzdiZTIyNjkzOTJiZi4uNTQwMTIyY2ZjMWJmMjIwOGEwZDZj
NmIwZGEzNzExMzcyNDhkMTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oIgogI2luY2x1
ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIK
QEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiBzdHJ1Y3QgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHM7CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIAogY2xhc3MgU2Vy
dmljZVdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxTZXJ2aWNlV29ya2VyVGhyZWFkLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpF
YWdlcj4gewogcHVibGljOgpAQCAtNzEsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWV1
ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVQdXNo
RXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9u
RGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRp
b25EYXRhKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQorICAgIHZvaWQgcXVldWVU
YXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmLCBOb3RpZmljYXRp
b25FdmVudFR5cGUsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCiAKICAgICBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0
YUlkZW50aWZpZXI7IH0KQEAgLTc4LDggKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFy
dEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CiAgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1vbml0b3Jp
bmcoKSB7IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSBmYWxzZTsgfQotICAgIHZvaWQgc3RhcnRQ
dXNoRXZlbnRNb25pdG9yaW5nKCk7Ci0gICAgdm9pZCBzdG9wUHVzaEV2ZW50TW9uaXRvcmluZygp
IHsgbV9pc0hhbmRsaW5nUHVzaEV2ZW50ID0gZmFsc2U7IH0KKyAgICB2b2lkIHN0YXJ0RnVuY3Rp
b25hbEV2ZW50TW9uaXRvcmluZygpOworICAgIHZvaWQgc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0
b3JpbmcoKSB7IG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxFdmVudCA9IGZhbHNlOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwpAQCAtMTA5LDcgKzExNCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKICAgICBib29sIG1f
aXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0hhbmRsaW5nUHVz
aEV2ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxFdmVudCB7
IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3Vu
dCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21lc3NhZ2VFdmVudENvdW50IHsgMCB9OwogICAgIGVu
dW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBTdGFydGluZywgSW5zdGFsbGluZywgQWN0aXZhdGluZyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggOGEyMTk0MTgzM2Ji
YThhMGRhNjA0OGMzYmI3NmU4NjAwNTFkNGQ2Zi4uMTIxMmQ1MTM0MjA5ZmFkMmE0Mzk0NGIxNzUz
MzczY2ZmZTA1NmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBA
IC05Miw4ICs5Miw4IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSgpCiAgICAgQVNTRVJUKGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOwogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVt
b3ZlKHRoaXMpOwogCi0gICAgYXV0byBwdXNoVGFza3MgPSBXVEZNb3ZlKG1fb25nb2luZ1B1c2hU
YXNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHB1c2hUYXNrcy52YWx1ZXMoKSkKKyAg
ICBhdXRvIGZ1bmN0aW9uYWxFdmVudFRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdGdW5jdGlvbmFs
RXZlbnRUYXNrcyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGZ1bmN0aW9uYWxFdmVudFRh
c2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKQEAgLTI4MywyNCAr
MjgzLDI0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2NyaXB0c1Rv
RGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAKIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYm
IGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7Ci0gICAg
aWYgKG1fb25nb2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHRocmVhZCgpLnN0YXJ0
UHVzaEV2ZW50TW9uaXRvcmluZygpOworICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRU
YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2ZW50TW9u
aXRvcmluZygpOwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gKyttX3B1c2hUYXNrc0NvdW50ZXI7
Ci0gICAgQVNTRVJUKCFtX29uZ29pbmdQdXNoVGFza3MuY29udGFpbnMoaWRlbnRpZmllcikpOwot
ICAgIG1fb25nb2luZ1B1c2hUYXNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgIGF1dG8gaWRlbnRpZmllciA9ICsrbV9mdW5jdGlvbmFsRXZlbnRUYXNrc0NvdW50ZXI7
CisgICAgQVNTRVJUKCFtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisgICAgbV9vbmdvaW5nRnVuY3Rpb25hbEV2ZW50VGFza3MuYWRkKGlkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBib29sIGlzUG9zdGVkID0gcG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXShhdXRvJikgbXV0
YWJsZSB7CiAgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChXVEZNb3Zl
KGRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlk
ZW50aWZpZXJdKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVu
dGlmaWVyLCByZXN1bHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY2Fs
bGJhY2sgPSBtX29uZ29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLnRh
a2UoaWRlbnRpZmllcikpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fb25nb2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIHRocmVhZCgpLnN0b3BQdXNoRXZlbnRNb25pdG9yaW5nKCk7CisgICAgICAg
ICAgICAgICAgaWYgKG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICAgICAgdGhyZWFkKCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3Jpbmco
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpk
ZWZhdWx0TW9kZSgpKTsKICAgICBpZiAoIWlzUG9zdGVkKQotICAgICAgICBtX29uZ29pbmdQdXNo
VGFza3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CisgICAgICAgIG1fb25nb2luZ0Z1bmN0aW9u
YWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikoZmFsc2UpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9w
dGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6
b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSkKQEAg
LTMxMSw2ICszMTEsMzQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXMKICAgICB9KTsKIH0KIAor
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVOb3RpZmljYXRpb25FdmVudChOb3Rp
ZmljYXRpb25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OX0VWRU5UKQorICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5p
c0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2ZW50TW9uaXRvcmlu
ZygpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gKyttX2Z1bmN0aW9uYWxFdmVudFRhc2tzQ291
bnRlcjsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKKyAgICBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5hZGQoaWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGJvb2wgaXNQb3N0ZWQgPSBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwgZGF0YSA9IFdURk1vdmUoZGF0YSkuaXNvbGF0
ZWRDb3B5KCksIGV2ZW50VHlwZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJlYWQoKS5x
dWV1ZVRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChXVEZNb3ZlKGRhdGEpLCBldmVudFR5cGUs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmll
cl0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXIs
IHJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9
IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikpCisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKG1fb25n
b2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
dGhyZWFkKCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3JpbmcoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAg
ICBpZiAoIWlzUG9zdGVkKQorICAgICAgICBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy50
YWtlKGlkZW50aWZpZXIpKGZhbHNlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwor
ICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOworICAgIGNhbGxiYWNrKGZhbHNlKTsKKyNlbmRp
ZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGU1Y2I1YzFk
ZDE0NWIyODE5NWNmODg1NWY4ZjQzZGI2MjllZGMxZGUuLmZmMTMwYjNkYjY2NTQ0OTdjMzZiMTg3
NTA5Yjk0M2VkMDQ3MDc4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBA
IC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAg
ICAgdm9pZCBmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGZpcmVQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBu
ZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYm
IG9sZFN1YnNjcmlwdGlvbkRhdGEpOworICAgIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5v
dGlmaWNhdGlvbkRhdGEmJiwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0
QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
IApAQCAtMTE4LDggKzExOSw4IEBAIHByaXZhdGU6CiAKICAgICBTZXJ2aWNlV29ya2VySW5zcGVj
dG9yUHJveHkgbV9pbnNwZWN0b3JQcm94eTsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXI+LCBSZWY8U2VydmljZVdvcmtl
ckZldGNoOjpDbGllbnQ+PiBtX29uZ29pbmdGZXRjaFRhc2tzOwotICAgIHVpbnQ2NF90IG1fcHVz
aFRhc2tzQ291bnRlciB7IDAgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPj4gbV9vbmdvaW5nUHVzaFRhc2tzOworICAgIHVpbnQ2NF90IG1fZnVu
Y3Rpb25hbEV2ZW50VGFza3NDb3VudGVyIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+PiBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNr
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBmNjExMDYxMTZhNGJmNjc1
MjY0NGEyNGVhZTE5ZjU1YjRhYTlmYTM3Li5kNjNhZDBjNGUyN2IxNGIwNGZlMDQ2ZmM5YzMyNjY5
ZjMyYjZiY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9y
ZS5oIgogI2luY2x1ZGUgIlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJTV1NlcnZlckpvYlF1
ZXVlLmgiCkBAIC0xMDQ5LDcgKzEwNTAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAg
ICAgICAgICAgaWYgKHJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShjbGllbnRSZWdp
c3RyYWJsZURvbWFpbikgPT0gU2hvdWxkRGVsYXlSZW1vdmFsOjpZZXMpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5maW5kKGNs
aWVudE9yaWdpbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fY2xpZW50
SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5kKCkpOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT52
YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogZGVm
YXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogZGVmYXVs
dEZ1bmN0aW9uYWxFdmVudER1cmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKQEAgLTEzMDMsMTUgKzEzMDQsMTUgQEAgdm9pZCBTV1NlcnZlcjo6cHJvY2Vz
c1B1c2hNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRhdGEsIFVSTCYm
IHIKIAogICAgICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+
aWRlbnRpZmllcigpOwogCi0gICAgICAgICAgICB3b3JrZXItPmluY3JlbWVudFB1c2hFdmVudENv
dW50ZXIoKTsKKyAgICAgICAgICAgIHdvcmtlci0+aW5jcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291
bnRlcigpOwogICAgICAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IG1ha2VVbmlx
dWU8VGltZXI+KFt3b3JrZXJdIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihT
ZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgaXMgdGFraW5nIHRvbyBtdWNoIHRpbWUgdG8g
cHJvY2VzcyBhIHB1c2ggZXZlbnQiKTsKLSAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3JlbWVu
dFB1c2hFdmVudENvdW50ZXIoKTsKKyAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3JlbWVudEZ1
bmN0aW9uYWxFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgdGVy
bWluYXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9p
c1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5
IDogZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgdGVybWluYXRlV29y
a2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9pc1Byb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogZGVmYXVs
dEZ1bmN0aW9uYWxFdmVudER1cmF0aW9uKTsKICAgICAgICAgICAgIGNvbm5lY3Rpb25PclN0YXR1
cy52YWx1ZSgpLT5maXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBkYXRhLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdGVybWluYXRlV29ya2VyVGltZXIgPSBXVEZN
b3ZlKHRlcm1pbmF0ZVdvcmtlclRpbWVyKSwgd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXShib29s
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0ZVdvcmtl
clRpbWVyLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdvcmtlci0+ZGVjcmVt
ZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3Jl
bWVudEZ1bmN0aW9uYWxFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgdGVybWlu
YXRlV29ya2VyVGltZXItPnN0b3AoKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzMjEsNiAr
MTMyMiw0NSBAQCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogICAgIH0pOwogfQogCit2b2lkIFNX
U2VydmVyOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmIGRhdGEs
IE5vdGlmaWNhdGlvbkV2ZW50VHlwZSB0eXBlKQoreworICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRl
ZElmTmVlZGVkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RG
TW92ZShkYXRhKSwgdHlwZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVVSTChkYXRhLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpOworICAgICAg
ICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSB7IFdURk1vdmUo
b3JpZ2luKSwgVVJMIHsgZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIH0gfTsKKyAg
ICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJl
Z2lzdHJhdGlvbktleSk7CisgICAgICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZlV29y
a2VyKCk7CisgICAgICAgIGlmICghd29ya2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGZpcmVGdW5jdGlvbmFsRXZlbnQoKnJlZ2lzdHJhdGlvbiwgW3dvcmtlciA9IFJlZiB7ICp3
b3JrZXIgfSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0
YSksIHR5cGVdKGF1dG8mJiBjb25uZWN0aW9uT3JTdGF0dXMpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCFjb25uZWN0aW9uT3JTdGF0dXMuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29y
a2VyLT5pZGVudGlmaWVyKCk7CisKKyAgICAgICAgICAgIHdvcmtlci0+aW5jcmVtZW50RnVuY3Rp
b25hbEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3JrZXJUaW1l
ciA9IG1ha2VVbmlxdWU8VGltZXI+KFt3b3JrZXJdIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgaXMgdGFraW5nIHRvbyBt
dWNoIHRpbWUgdG8gcHJvY2VzcyBhIG5vdGlmaWNhdGlvbiBldmVudCIpOworICAgICAgICAgICAg
ICAgIHdvcmtlci0+ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdl
YWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8g
ZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRpb24p
OworICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVOb3RpZmljYXRp
b25FdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgdHlwZSwgW3Rlcm1pbmF0ZVdv
cmtlclRpbWVyID0gV1RGTW92ZSh0ZXJtaW5hdGVXb3JrZXJUaW1lciksIHdvcmtlciA9IFdURk1v
dmUod29ya2VyKV0oYm9vbCAvKiBzdWNjZWVkZWQgKi8pIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBpZiBzdWNjZWVkZWQgaXMgZmFsc2UsIHNob3VsZCB3ZSBpbXBsZW1lbnQg
YSBkZWZhdWx0IGFjdGlvbiBsaWtlIG9wZW5pbmcgYSBuZXcgcGFnZT8KKyAgICAgICAgICAgICAg
ICBpZiAodGVybWluYXRlV29ya2VyVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgd29ya2VyLT5kZWNyZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCk7CisgICAgICAg
ICAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5zdG9wKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiAvLyBodHRw
czovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZmlyZS1mdW5jdGlvbmFsLWV2ZW50LWFs
Z29yaXRobSwganVzdCBmb3IgcHVzaCByaWdodCBub3cuCiB2b2lkIFNXU2VydmVyOjpmaXJlRnVu
Y3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwgU2hv
dWxkU2tpcEV2ZW50Pik+JiYgY2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNmRhMTQ1YWFiODc3YWI4YzQ5NDcy
NDExZWYxZjhmM2M2NTM1YzRiMC4uMWY4OTI3OWQ4MDExZWE2MWQ0YTZhMjY2MjU3NWExZDRlZWM1
ZWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVudFR5cGUu
aCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCkBA
IC02Miw2ICs2Myw3IEBAIGVudW0gY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2VydmljZVdvcmtlclN0YXRlIDogdWludDhfdDsKIHN0
cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOworc3Ry
dWN0IE5vdGlmaWNhdGlvbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE7CkBAIC0yMTksMTIgKzIyMSwxMyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAKICAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0UHVzaE1lc3NhZ2VEdXJhdGlvbiA9IDJf
czsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdEZ1bmN0aW9uYWxFdmVudER1
cmF0aW9uID0gMl9zOwogCiAgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgY2xpZW50
SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpOwogICAgIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVh
ZEZvclRlc3Rpbmc7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1B1c2hNZXNz
YWdlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBVUkwmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzTm90
aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmLCBOb3RpZmljYXRpb25FdmVudFR5cGUp
OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRTa2lwRXZlbnQgOiBib29sIHsgTm8sIFllcyB9Owog
ICAgIHZvaWQgZmlyZUZ1bmN0aW9uYWxFdmVudChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwg
U2hvdWxkU2tpcEV2ZW50Pik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggNjZjYzQ2OWE5M2ZkZTllZDZhZDdkZGJmNDcxODcwMzc0YzI0NzZiZS4uN2NhMTZj
N2FhOGQ3Yjg0ZGVkOTg5NGVlZGViNzA4YjQzYzY1NjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkV2ZW50VHlwZS5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVnaXN0cmFibGVEb21haW4uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oIgpAQCAtMzksNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
cnVjdCBOb3RpZmljYXRpb25EYXRhOwogY2xhc3MgU1dTZXJ2ZXI7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwpAQCAtNjUs
NyArNjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlU2NyaXB0
c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29u
c3QgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGZpcmVOb3RpZmljYXRpb25FdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgTm90
aWZpY2F0aW9uRGF0YSYsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgUHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKICAgICAvLyBNZXNzYWdlcyBiYWNrIGZyb20g
dGhlIFNXIGhvc3QgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA5OTI0ZmJkYmFlNDYxMmNh
ODFlZGFiYjc3Njg3ZmZjNWRmM2NkYTkwLi4wODgxYmM2MjM3MzcxM2FhZTIxZmViMThiNjI2MjRi
NWJhNmU5OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtMzk3LDEwICszOTcsMTAgQEAgc3RkOjpv
cHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gU1dTZXJ2ZXJXb3JrZXI6
OnNlcnZpY2VXb3JrZXJQYWcKICAgICByZXR1cm4gbV9yZWdpc3RyYXRpb24tPnNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcigpOwogfQogCi12b2lkIFNXU2VydmVyV29ya2VyOjpkZWNyZW1lbnRQ
dXNoRXZlbnRDb3VudGVyKCkKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudEZ1bmN0aW9u
YWxFdmVudENvdW50ZXIoKQogewotICAgIEFTU0VSVChtX3B1c2hFdmVudENvdW50ZXIpOwotICAg
IC0tbV9wdXNoRXZlbnRDb3VudGVyOworICAgIEFTU0VSVChtX2Z1bmN0aW9uYWxFdmVudENvdW50
ZXIpOworICAgIC0tbV9mdW5jdGlvbmFsRXZlbnRDb3VudGVyOwogICAgIHRlcm1pbmF0ZUlmUG9z
c2libGUoKTsKIH0KIApAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNl
dEFzSW5zcGVjdGVkKGJvb2wgaXNJbnNwZWN0ZWQpCiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRl
cm1pbmF0ZUlmUG9zc2libGUoKQogewotICAgIGlmIChtX3B1c2hFdmVudENvdW50ZXIgfHwgbV9p
c0luc3BlY3RlZCB8fCAhbV9zZXJ2ZXIgfHwgbV9zZXJ2ZXItPmhhc0NsaWVudHNXaXRoT3JpZ2lu
KG9yaWdpbigpKSkKKyAgICBpZiAobV9mdW5jdGlvbmFsRXZlbnRDb3VudGVyIHx8IG1faXNJbnNw
ZWN0ZWQgfHwgIW1fc2VydmVyIHx8IG1fc2VydmVyLT5oYXNDbGllbnRzV2l0aE9yaWdpbihvcmln
aW4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRlcm1pbmF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmlu
ZGV4IDE2MDA2NWQzNmViZmM1MzBlMmJjODA2MTI0YjdhMmM0MWM3YjJjMTguLjU0ZGYzODQyMjA4
MWFhZTRkODJiYTYyNGZiYTYyOTBhOGY2MzdiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEzNSwxMSAr
MTM1LDExIEBAIHB1YmxpYzoKIAogICAgIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9k
ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBpbmNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKCkgeyArK21f
cHVzaEV2ZW50Q291bnRlcjsgfQotICAgIHZvaWQgZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigp
OworICAgIHZvaWQgaW5jcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpIHsgKyttX2Z1bmN0
aW9uYWxFdmVudENvdW50ZXI7IH0KKyAgICB2b2lkIGRlY3JlbWVudEZ1bmN0aW9uYWxFdmVudENv
dW50ZXIoKTsKICAgICB2b2lkIHNldEFzSW5zcGVjdGVkKGJvb2wpOwogCi0gICAgYm9vbCBzaG91
bGRDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdXNoRXZlbnRDb3VudGVyIHx8IG1faXNJ
bnNwZWN0ZWQ7IH0KKyAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFt
X2Z1bmN0aW9uYWxFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQogCiBwcml2YXRlOgog
ICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25z
dCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV90ZXJtaW5hdGlvbkNhbGxiYWNr
czsKICAgICBUaW1lciBtX3Rlcm1pbmF0aW9uVGltZXI7CiAgICAgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKLSAgICBpbnQgbV9w
dXNoRXZlbnRDb3VudGVyIHsgMCB9OworICAgIGludCBtX2Z1bmN0aW9uYWxFdmVudENvdW50ZXIg
eyAwIH07CiAgICAgYm9vbCBtX2lzSW5zcGVjdGVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTE1MTNh
OGViOGU2YTBhZDU5ZjZiNjlkMmIxOTkxOGQwNzQwMWZjNi4uMDgxN2IxOTVkZTEzZWU2YzVjYjc1
MTlhNmI1NzU5MTY1NTgyZWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CkBAIC0yMjc5
LDYgKzIyODAsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2Vic2l0ZURhdGFPcmlnaW5EaXJl
Y3RvcnlGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NOb3RpZmljYXRpb25F
dmVudChOb3RpZmljYXRpb25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50
VHlwZSkKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKGRhdGEuc291
cmNlU2Vzc2lvbikpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc05v
dGlmaWNhdGlvbkV2ZW50KFdURk1vdmUoZGF0YSksIGV2ZW50VHlwZSk7Cit9CisKICNpZiBFTkFC
TEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVu
ZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNhbGxiYWNrKQpAQCAt
MjMxMCw3ICsyMzE3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UKICAgICB9IGVsc2UKICAg
ICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVz
aCBtZXNzYWdlIGZyb20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Np
b24gZG9lc24ndCBleGlzdCIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KLQogI2Vsc2UKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+
JiYgY2FsbGJhY2spCkBAIC0yMzIzLDYgKzIzMjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBs
ZQogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0KIAorCiAjZW5kaWYgLy8gRU5BQkxFKEJVSUxUX0lO
X05PVElGSUNBVElPTlMpCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNmE5MDBm
ZDFiYjI5MzcwYzhjOTBmZjJiZmE5YWIwZWMzZTZlOTRlZS4uYTI2OGQ4ZmU0MTUyODk5NGVkZTcw
ZGZkYzVlZGZjNjIzOTMxZDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkV2ZW50VHlwZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtODQs
NiArODUsNyBAQCBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDdXJsUHJveHlTZXR0aW5n
czsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsK
K3N0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybjsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6
IHVpbnQ4X3Q7CkBAIC0zNzQsNiArMzc2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYm
KTsKICAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1l
c3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBwcm9j
ZXNzTm90aWZpY2F0aW9uRXZlbnQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYmLCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25FdmVudFR5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hB
bmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYjVhMDMyOGIwYjQ0NTc2MDk3Yzg3M2MwZDY0YmUy
MTRhYTg4ZWFiYS4uMjZjNGViNzMyM2ZiZGU4MGJiN2FiYjljMDgxMjkyNTVhMzMwMzcxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0yMTMsNiArMjEzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRQ
ZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxX
ZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiBtZXNzYWdlcykKICAgICBQcm9jZXNzUHVzaE1lc3NhZ2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBw
dXNoTWVzc2FnZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkKKyAgICBQcm9jZXNzTm90aWZpY2F0aW9u
RXZlbnQoc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgZGF0YSwgZW51bTpib29sIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUpCiAjZW5kaWYKICAgICBEZWxl
dGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcg
ZXJyb3JNZXNzYWdlKQogICAgIEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDAwOTMyMzZmMmY2NmVkNDU3ZmI1OWQ1MjMy
YTM0MGIwN2QyMmI2ZTYuLjdkZmEwZTE4NjQ5YTBmZTEzZDRmNzI2MTVjYTI4MzYwMGM5ZjcwZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRp
b25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAKQEAgLTExNCwxNiArMTE1LDI4IEBAIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGRhdGEsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
JiBkYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghbV9wcm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50KyspCisgICAgaWYgKCFtX3Byb2Nlc3Np
bmdGdW5jdGlvbmFsRXZlbnRDb3VudCsrKQogICAgICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0
YVJlZmVyZW5jZT4gaXBjRGF0YTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgaXBjRGF0YSA9IElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
RmlyZVB1c2hFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXBjRGF0YSksIFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29s
IHdhc1Byb2Nlc3NlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcyAmJiAhLS13ZWFr
VGhpcy0+bV9wcm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50KQorICAgICAgICBpZiAod2Vha1RoaXMg
JiYgIS0td2Vha1RoaXMtPm1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KQorICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYWtUaGlzLT53ZWJQcm9jZXNzSWRl
bnRpZmllcigpIH0sIDApOworICAgICAgICBjYWxsYmFjayh3YXNQcm9jZXNzZWQpOworICAgIH0p
OworfQorCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZU5vdGlmaWNh
dGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZl
bnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAg
IGlmICghbV9wcm9jZXNzaW5nRnVuY3Rpb25hbEV2ZW50Q291bnQrKykKKyAgICAgICAgbV9jb25u
ZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZFByb2Nlc3NpbmcgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Rmly
ZU5vdGlmaWNhdGlvbkV2ZW50IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIGV2ZW50
VHlwZSB9LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCB3YXNQcm9jZXNzZWQpIG11dGFibGUgeworICAgICAgICBpZiAod2Vh
a1RoaXMgJiYgIS0td2Vha1RoaXMtPm1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KQog
ICAgICAgICAgICAgd2Vha1RoaXMtPm1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OkVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYWtUaGlzLT53ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIDApOwogICAgICAgICBjYWxsYmFjayh3YXNQcm9jZXNzZWQpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IDgwYjMwM2U0NGRiZGIzOTFkNWIyNWViMjc5NzM0MWFlZmYwMmEwNDUuLjAxNmE4
Mjc1MzUwYWMxZWMzNDc5MDJiMmZhMzRmODI4NjMwOWQ1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNiArOTcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJM
LCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAgIHZv
aWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSBmaW5hbDsKICAgICB2b2lk
IGZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIGZpbmFsOworICAgIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiwg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAgICAgdm9pZCBmb2N1cyhX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYm
KT4mJik7CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s+PiBt
X29uZ29pbmdEb3dubG9hZHM7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9Owog
ICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKLSAgICBzaXplX3Qg
bV9wcm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50IHsgMCB9OworICAgIHNpemVfdCBtX3Byb2Nlc3Np
bmdGdW5jdGlvbmFsRXZlbnRDb3VudCB7IDAgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDhmZTY1ODFhMDViMDRjNjlmYmQwMWFhNjE1MmZjY2QwYzcyMWYzYzIuLjZiZjdlY2VlNWIy
YWI3NzkzZWYwZDAwNzc3OTlhMzU0Zjc2OWU5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTc4MCw2
ICsxNzgwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNzYWdl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViCiB7CiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vz
c2lvbklELCBwdXNoTWVzc2FnZSB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IE5vdGlmaWNh
dGlvbkRhdGEmIGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NOb3RpZmljYXRpb25FdmVudCB7
IGRhdGEsIGV2ZW50VHlwZSB9LCAwKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1YzFkMDUzZjFmOGNmZjU1NjBmNmRlOWUxNmFhMTUx
ZmFiN2E1ZjY2Li5hZmFiNTJkMzYzM2U1ZDQwNGVmZDk1ZWNlNmZhZTk3MWQxYWZhZGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
aWZpY2F0aW9uRXZlbnRUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTcyLDEz
ICs3MywxNCBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2Ns
YXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51
bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IDogdWludDhfdDsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgTm90aWZpY2F0aW9u
RGF0YTsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMjg0LDYgKzI4Niw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7CiAgICAg
dm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNz
YWdlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOworICAg
IHZvaWQgcHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IGI5MDE4NDIxMTIy
ZThlOTVmNGY2ZGNmMWEyZjAzMzRhODgxYzNhN2MuLjhlY2FjMTIzNmE1ZjE4ZWEzZTdiNzVkNTJj
Y2UzNTg4ZmVlNjRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMxLDE0ICszMSw4IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VDb25uZWN0aW9uKQotICAg
IDogbV90aXRsZShkYXRhLnRpdGxlKQotICAgICwgbV9ib2R5KGRhdGEuYm9keSkKLSAgICAsIG1f
aWNvblVSTChkYXRhLmljb25VUkwpCi0gICAgLCBtX3RhZyhkYXRhLnRhZykKLSAgICAsIG1fbGFu
ZyhkYXRhLmxhbmd1YWdlKQotICAgICwgbV9kaXIoZGF0YS5kaXJlY3Rpb24pCisgICAgOiBtX2Rh
dGEoZGF0YSkKICAgICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcoZGF0YS5vcmlnaW5TdHJpbmcpKQotICAgICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0
YS5ub3RpZmljYXRpb25JRCkKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIp
CiAgICAgLCBtX3NvdXJjZUNvbm5lY3Rpb24oc291cmNlQ29ubmVjdGlvbikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bi5oCmluZGV4IGMxNGYxNGMwYmFiZGMwODE0Y2EwNzkyM2MwOWY3Zjc2MTliZjg3NTIuLjM3YjYy
YjI5YjU4ZGM5Y2YzNDYzMDM0Mzc0MjU5N2RjM2YwNmZkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSWRlbnRpZmll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTQ3LDE3ICs0OCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYk5vdGlmaWNhdGlvbihkYXRhLCBwYWdlSWRlbnRpZmllciwgc291cmNlQ29ubmVj
dGlvbikpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVy
biBtX3RpdGxlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9i
b2R5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29u
VVJMOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQot
ICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQotICAgIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBtX2Rpcjsg
fQorICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGl0bGU7
IH0KKyAgICBjb25zdCBTdHJpbmcmIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYm9keTsg
fQorICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pY29u
VVJMOyB9CisgICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGFn
OyB9CisgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxhbmd1
YWdlOyB9CisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5kaXJlY3Rpb247IH0KKyAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm90aWZpY2F0aW9uSUQ7IH0KKyAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc291cmNlU2Vzc2lv
bjsgfQorCisgICAgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGJvb2wgaXNQZXJzaXN0ZW50Tm90aWZpY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gIW1fZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMLmlzRW1w
dHkoKTsgfQorCiAgICAgY29uc3QgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KICAgICBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4oKSB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0
aW9uSUQoKSBjb25zdCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLSAgICBjb25zdCBVVUlEJiBj
b3JlTm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsg
fQogCiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNv
bm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KQEAg
LTY1LDE1ICs3MSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViTm90aWZpY2F0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb24mKTsKIAotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2Jv
ZHk7Ci0gICAgU3RyaW5nIG1faWNvblVSTDsKLSAgICBTdHJpbmcgbV90YWc7Ci0gICAgU3RyaW5n
IG1fbGFuZzsKLSAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gbV9kaXI7CisgICAg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSBtX2RhdGE7CiAgICAgUmVmUHRyPEFQSTo6U2VjdXJp
dHlPcmlnaW4+IG1fb3JpZ2luOwotICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7Ci0KICAg
ICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggYjNhYzcyYjVmNmNiODE5ZmQ5YTJjMDc2YjBk
NjkyNjFjYmU1MTgwYS4uZmQxOTZkMzBmNDdlOGVjYzdkYjBmYzBjZGIyNzYzNzMzMGIzZTFiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMTg2LDExICsx
ODYsMTYgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNhdGlvbihXZWJOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29u
bmVjdGlvbigpOwotICAgIGlmICghY29ubmVjdGlvbikKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNQZXJzaXN0ZW50Tm90aWZpY2F0aW9uKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5n
RGF0YVN0b3JlRm9yU2Vzc2lvbklEKG5vdGlmaWNhdGlvbi0+c2Vzc2lvbklEKCkpKQorICAgICAg
ICAgICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnByb2Nlc3NOb3RpZmljYXRpb25FdmVu
dChub3RpZmljYXRpb24tPmRhdGEoKSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljayk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIAotICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVj
dGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlm
aWNhdGlvbihub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSwgMCk7CiB9CiAKIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQpAQCAtMjQyLDYgKzI0NywxNCBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNh
dGlvbnMoQVBJOjpBcnJheSogZ2xvYgogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBp
ZiAobm90aWZpY2F0aW9uLT5pc1BlcnNpc3RlbnROb3RpZmljYXRpb24oKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0
b3JlRm9yU2Vzc2lvbklEKG5vdGlmaWNhdGlvbi0+c2Vzc2lvbklEKCkpKQorICAgICAgICAgICAg
ICAgIGRhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQo
bm90aWZpY2F0aW9uLT5kYXRhKCksIE5vdGlmaWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKICAg
ICAgICAgY2xvc2VkTm90aWZpY2F0aW9ucy5hcHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMWUxYTM5YmU3
YzE0NjM3YTdkNjI5M2ZhYjI5MGNkODcxODUzZjhjMC4uNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUx
OGY5YWQwNTVhMDJiNzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NjcsNiArMjY3LDExIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVQ
dXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpCiAgICAgU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuZmlyZVB1c2hFdmVudChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmZpcmVOb3RpZmljYXRpb25FdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBOb3RpZmljYXRpb25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2
ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAg
ICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlTm90aWZpY2F0aW9uRXZlbnQoaWRl
bnRpZmllciwgV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9
CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5h
Z2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKaW5kZXggZjg5NmIxYjBlYjQxN2M2YWNkYTQyMDViMjY0N2JiZDY4NWEx
ZjFmMC4uNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMSw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGZpcmVOb3RpZmljYXRpb25FdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFU
Rk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkws
IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA2ZWYyN2VmYzJhM2Ex
ZTRiNzJiOWY2YWU1NDQzN2I1MmRhNjQ3NjNiLi5mZjQzMDdlNTk2NTdkOTUyMzM1NzBhNTk4MDJh
ZGQwOGMyN2I2ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw2ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgewogICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVQdXNoRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIC0+IChib29sIHJlc3VsdCkKKyAgICBGaXJlTm90
aWZpY2F0aW9uRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgZGF0YSwgZW51bTpib29sIFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSB0eXBlKSAtPiAoYm9vbCByZXN1bHQpCiAKICAgICBU
ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxMThkZGE3OTk1Y2FmNGM2YTk1YjZmMjc5NjZiNmY5MWRmNWVmNDUwLi42MTg1NTM4ZjFk
NzIwYWM1MzY2OGExYzk4OTkzZmNlMGYxNDc4MmQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjItMDMtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBwZXJzaXN0ZW50IG5vdGlmaWNhdGlvbiBoYW5kbGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbDoKKwogMjAyMi0wMy0yOCAgQWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyAmIFdpbiBdIGZhc3Qv
cmVwYWludC9saXN0LWl0ZW0tZXF1YWwtc3R5bGUtY2hhbmdlLW5vLXJlcGFpbnQuaHRtbCBpcyBh
IGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwKaW5k
ZXggYWQ0YTAwMTU2Nzk1ZDI5ODJhMjc0MGEyNDY2ZjU5ZTNiYTc5NjMwOS4uNzY2YWJmZWU1MWNh
M2FkMjRjZWE4NDc4ZjM4OWJlYWFkYTg2YWQxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlv
bi1hbGxvd2VkLmh0bWwKQEAgLTQ1LDEwICs0NSwxNiBAQCBhc3luYyBmdW5jdGlvbiByZWdpc3Rl
clNlcnZpY2VXb3JrZXIoKSB7CiB2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwogdmFyIGdvdENsb3Nl
ZCA9IGZhbHNlOwogCi1uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdt
ZXNzYWdlJywgZXZlbnQgPT4geworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGFzeW5jIGV2ZW50ID0+IHsKICAgICBpZiAoZXZlbnQuZGF0YSA9PSAi
c2hvd0ZhaWxlZCIpIHsKICAgICAgICAgZmFpbFRoZVRlc3QoIlVuZXhwZWN0ZWRseSByZWNlaXZl
ZCB0aGUgZmFpbGVkLXRvLXNob3cgbWVzc2FnZSIpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0
YSA9PSAic2hvd24iKSB7CisgICAgICAgIC8vIFdlIHNpbXVsYXRlIGEgbmV0d29yayBwcm9jZXNz
IGNyYXNoIHNvIHRoYXQgd2UgbWFrZSBzdXJlIHRoYXQgYSBub3RpZmljYXRpb24gY2xpY2sgZW5z
dXJlcyByZXN0YXJ0aW5nIGEgc2VydmljZSB3b3JrZXIKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBhd2FpdCBpbnRlcm5hbHMuc3RvcmVSZWdpc3RyYXRpb25zT25E
aXNrKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKwogICAgICAgICBpZiAodGVzdFJ1bm5l
cikKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0Zv
clNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7CiAgICAgfSBlbHNlIGlmIChldmVudC5kYXRh
ID09ICJjbGlja2VkIikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456104</attachid>
            <date>2022-03-30 02:33:19 -0700</date>
            <delta_ts>2022-03-30 05:21:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238498-20220330113317.patch</filename>
            <type>text/plain</type>
            <size>80136</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4MzRlYTFjZWIxYzE2
MGM2Njg1ZTFjNmJkOTk2MGI3NTgzMjljMy4uYTg4YWQwNmI0MjU4MzNiNWE0ZmE1MDA2ZGJkMGU1
N2NjZDNlM2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb24gaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVp
ZHNvbi4KKworICAgICAgICBCZWZvcmUgdGhlIHBhdGNoLCB3ZSB3ZXJlIGRpcmVjdGx5IGdvaW5n
IGZyb20gVUlQcm9jZXNzIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisgICAgICAgIFRoaXMg
d29ya3MgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIHJ1bm5pbmcgYnV0IGRvZXMgbm90IG90aGVy
d2lzZS4KKyAgICAgICAgVG8gbWFrZSBzdXJlIHdlIG5vdyBnbyB0byBOZXR3b3JrUHJvY2Vzcy4K
KyAgICAgICAgVG8gaW1wbGVtZW50IGh0dHBzOi8vbm90aWZpY2F0aW9ucy5zcGVjLndoYXR3Zy5v
cmcvI3BlcnNpc3RlbnQtbm90aWZpY2F0aW9uLAorICAgICAgICB3ZSBhZGQgYSBzZXJ2aWNlIHdv
cmtlciByZWdpc3RyYXRpb24gVVJMIHRvIE5vdGZpY2F0aW9uRGF0YS4KKyAgICAgICAgV2UgcmVt
b3ZlIHRoZSBub3RmaWNhdGlvbiBoYW5kbGluZyBnb2luZyB0aHJvdWdoIE5vdGlmaWNhdGlvbkV2
ZW50IGFuZCBtYWtlIGl0IERvY3VtZW50IHNwZWNpZmljLgorICAgICAgICBJbnN0ZWFkLCB3ZSBn
byB0aHJvdWdoIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS4KKyAgICAgICAgTWFrZSBzdXJlIFNX
U2VydmVyIHRyZWF0cyBub3RpZmljYXRpb24gZXZlbnRzIGFzIGZ1bmN0aW9uYWwgZXZlbnRzLgor
ICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdC4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6aXNvbGF0
ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZSk6CisgICAgICAgICog
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50Lmg6CisgICAgICAgICogTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50VHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZl
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmZpcmVOb3Rp
ZmljYXRpb25FdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6
cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RnVuY3Rp
b25hbEV2ZW50TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnN0YXJ0UHVzaEV2ZW50TW9uaXRvcmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3Jp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RvcFB1c2hFdmVu
dE1vbml0b3JpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZU5vdGlmaWNhdGlvbkV2
ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cHJvY2Vzc1B1c2hNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudEZ1bmN0aW9uYWxFdmVudENvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZUlmUG9zc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVu
dENvdW50ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjppbmNyZW1l
bnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpzaG91bGRDb250aW51ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldv
cmtlcjo6aW5jcmVtZW50UHVzaEV2ZW50Q291bnRlcik6IERlbGV0ZWQuCisKIDIwMjItMDMtMjgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlZpZGVvIGlzIG1pc2xlYWRpbmcgYXMgaXQgaXMgYWN0dWFsbHkgcmVm
ZXJyaW5nIHRvIGNhbWVyYSBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwMjE5MjEyNWQ3NTkxZTM0MGM2
NjE4YjZiM2VjOWMwZWIxNGMyNmMuLjc1MjIxY2NhOTJjMTgzY2ZiMWZmMjljMDhlNGRlMTRiN2Mx
YTZmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDMtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBwZXJzaXN0ZW50IG5v
dGlmaWNhdGlvbiBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgor
CisgICAgICAgIFdoZW4gcmVjZWl2aW5nIGFuIHVwZGF0ZSBmb3IgYSBub3RpZmljYXRpb24sIGNo
ZWNrIGlmIHRoZSBub3RpZmljYXRpb24gaXMgdGllZCB0byBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lz
dHJhdGlvbi4KKyAgICAgICAgSWYgc28sIGdvIHRvIG5ldHdvcmsgcHJvY2VzcyB0byBmaXJlIGEg
ZnVuY3Rpb25hbCBldmVudCwgYXMgcGVyIGh0dHBzOi8vbm90aWZpY2F0aW9ucy5zcGVjLndoYXR3
Zy5vcmcvI2FjdGl2YXRpbmctYS1ub3RpZmljYXRpb24KKyAgICAgICAgYW5kIGh0dHBzOi8vbm90
aWZpY2F0aW9ucy5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItZmlyZS1hLXNlcnZpY2Utd29ya2Vy
LW5vdGlmaWNhdGlvbi1ldmVudOKRoAorICAgICAgICBVSVByb2Nlc3Mgc2VuZHMgdGhlIGNvcnJl
c3BvbmRpbmcgTm90ZmljYXRpb25EYXRhIHRvIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICBOZXR3
b3JrUHJvY2VzcyBnZXRzIHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24sIHJ1bnMgdGhl
IHNlcnZpY2Ugd29ya2VyIGFzIG5lZWRlZCBhbmQgZmlyZXMgdGhlIGZ1bmN0aW9uYWwgZXZlbnQu
CisgICAgICAgIEFkZCBJUEMgcGx1bWJpbmcgY29kZSB0byBzdXBwb3J0IHRoaXMgZmxvdy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVO
b3RpZmljYXRpb25FdmVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmlj
YXRpb246OnRpdGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpi
b2R5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjppY29uVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjp0YWcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmxhbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb246OmRpciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbjo6Y29yZU5vdGlmaWNhdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uOjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b246OmlzUGVyc2lzdGVudE5vdGlmaWNhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbjo6bm90aWZpY2F0aW9uSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmRpc3BhdGNoRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIw
MjItMDMtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvIGlzIG1pc2xlYWRpbmcgYXMgaXQgaXMgYWN0
dWFsbHkgcmVmZXJyaW5nIHRvIGNhbWVyYSBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAz
ZTA3NTJkMzNkNTkxZGUwYWY5MGE0NjQ4NzMzZWYyZGVkNWViNWI5Li40MDVmNjc0ZjBiMzg2YWUx
YjE3YzIxZGVmZDNmMzJlNjRiZTEzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5MSw2ICsy
OTEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaAogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGlyZWN0aW9uLmgKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRXZlbnRUeXBlLmgKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvbi5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggODdiMmUzYzk0ZTBiNzVkZDdiYzUwNjk1
Mjg0MjVhNzBiZTc3ZmY0Ny4uZDAyZjM3NGQxNTNkMzU4NTc3ZGMzM2UyZDlmODRlYzEwMTFkNDVj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKQEAgLTU3LDcgKzU3LDE1IEBAIFJlZjxOb3RpZmljYXRpb24+IE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYm
CiB7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbihj
b250ZXh0LCBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShvcHRpb25zKSkpOwogICAgIG5vdGlmaWNh
dGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgbm90aWZpY2F0aW9uLT5zaG93U29vbigpOwor
ICAgIHJldHVybiBub3RpZmljYXRpb247Cit9CisKK1JlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNh
dGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE5vdGlmaWNhdGlv
bkRhdGEmJiBkYXRhKQoreworICAgIE9wdGlvbnMgb3B0aW9ucyB7IGRhdGEuZGlyZWN0aW9uLCBX
VEZNb3ZlKGRhdGEubGFuZ3VhZ2UpLCBXVEZNb3ZlKGRhdGEuYm9keSksIFdURk1vdmUoZGF0YS50
YWcpLCBXVEZNb3ZlKGRhdGEuaWNvblVSTCkgfTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IGFk
b3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIFdURk1vdmUoZGF0YS50aXRsZSksIFdU
Rk1vdmUob3B0aW9ucykpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIG5vdGlmaWNhdGlvbi0+bV9yZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmllciA9IGRhdGEu
bm90aWZpY2F0aW9uSUQ7CiAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKIH0KIApAQCAtMTMyLDYg
KzE0MCwxMSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvd1Nvb24oKQogICAgIH0pOwogfQogCit2
b2lkIE5vdGlmaWNhdGlvbjo6bWFya0FzU2hvd24oKQoreworICAgIG1fc3RhdGUgPSBTaG93aW5n
OworfQorCiB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiB7CiAgICAgLy8gcHJldmVudCBkb3Vi
bGUtc2hvd2luZwpAQCAtMjI0LDM3ICsyMzcsMTggQEAgdm9pZCBOb3RpZmljYXRpb246OmRpc3Bh
dGNoU2hvd0V2ZW50KCkKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQoKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzd2l0Y2ggKG1fbm90aWZpY2F0
aW9uU291cmNlKSB7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OgotICAg
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJ
bnRlcmFjdGlvbiwgW3RoaXNdIHsKLSAgICAgICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGlj
YXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6Ci0gICAgICAgIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZTo6ZW5zdXJlT25Db250ZXh0VGhyZWFkKG1fY29udGV4dElkZW50
aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgY29udGV4
dCkgewotICAgICAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS5wb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50VHlw
ZTo6Q2xpY2ssICp0aGlzLCB7IH0pOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvblNvdXJjZSA9PSBOb3RpZmljYXRpb25Tb3VyY2U6
OkRvY3VtZW50KTsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsKKyAgICAgICAgV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dlZDsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9KTsKIH0KIAogdm9pZCBOb3RpZmlj
YXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKLSAgICBjYXNlIE5vdGlm
aWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ6Ci0gICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6
OlNlcnZpY2VXb3JrZXI6Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZW5zdXJl
T25Db250ZXh0VGhyZWFkKG1fY29udGV4dElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAgZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wb3N0VGFza1RvRmlyZU5vdGlmaWNh
dGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2UsICp0aGlzLCB7IH0pOwotICAg
ICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCisgICAgQVNTRVJUKG1fbm90aWZpY2F0
aW9uU291cmNlID09IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQpOworICAgIHF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBmaW5hbGl6ZSgpOwogfQogCkBAIC0zMjQs
OSArMzE4LDE1IEBAIGJvb2wgTm90aWZpY2F0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKIAogTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRpb246OmRhdGEoKSBjb25zdAog
ewotICAgIGF1dG8gc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9u
SUQoKTsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICBhdXRvIHNlc3Npb25JRCA9IGNvbnRleHQuc2Vzc2lvbklEKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc2Vzc2lvbklEKTsKIAorICAgIFVSTCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMOwor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCA9
IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkucmVnaXN0cmF0aW9u
KCkuZGF0YSgpLnNjb3BlVVJMOworI2VuZGlmCiAgICAgcmV0dXJuIHsKICAgICAgICAgbV90aXRs
ZS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9ib2R5Lmlzb2xhdGVkQ29weSgpLApAQCAtMzM1
LDYgKzMzNSw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhKCkgY29uc3QK
ICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2RpcmVjdGlvbiwKICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmlzb2xhdGVkQ29w
eSgpLAorICAgICAgICBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLmlzb2xh
dGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCiAgICAgICAgICpzZXNzaW9uSUQsCiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaAppbmRleCA0YWE5YjM0MWZjMWM0MTNmNzAzNjUyOTk2ZmE2NzAzYjVhMDAyYTNm
Li41ZWRkMzZiMzc2NTAwZTMwNjI5YWIyZGZhYmIzZjZjMGY3MTUzNTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC02
NSw3ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGljb247CiAgICAgfTsKICAgICBz
dGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBT
dHJpbmcmJiB0aXRsZSwgT3B0aW9ucyYmKTsKLSAgICAKKyAgICBzdGF0aWMgUmVmPE5vdGlmaWNh
dGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBOb3RpZmljYXRpb25EYXRhJiYp
OworCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKICAgICB2
b2lkIHNob3coKTsKQEAgLTk5LDYgKzEwMCwxMSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVy
ZWY7CiAKKyAgICB2b2lkIG1hcmtBc1Nob3duKCk7CisgICAgdm9pZCBzaG93U29vbigpOworCisg
ICAgc3RkOjpvcHRpb25hbDxVVUlEPiByZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVsYXRlZE5vdGlmaWNhdGlvbklkZW50aWZpZXI7IH0KKwogcHJpdmF0
ZToKICAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFN0cmluZyYmIHRp
dGxlLCBPcHRpb25zJiYpOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mKTsK
QEAgLTEwOCw4ICsxMTQsNiBAQCBwcml2YXRlOgogICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xp
ZW50RnJvbUNvbnRleHQoKTsKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQogCi0gICAgdm9pZCBzaG93U29vbigpOwotCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKQEAgLTEzOCw2ICsxNDIs
NyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgTm90aWZpY2F0aW9uU291cmNlIG1fbm90aWZpY2F0
aW9uU291cmNlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIG1fY29udGV4
dElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxVVUlEPiBtX3JlbGF0ZWROb3RpZmljYXRp
b25JZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEu
Y3BwCmluZGV4IDYwNDcwODM1NTk1MDYyNTU2MGQwMDA5MmY5MmVmZTRmM2Q1NWI1NmQuLmJmZmIz
OGUwZTQzMWUxYTEyZjMxOGU3NGYzYWIyZGMwMDJlYWZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAK
QEAgLTI4LDQgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTm90aWZpY2F0aW9u
RGF0YSBOb3RpZmljYXRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCit7CisgICAgcmV0
dXJuIHsgdGl0bGUuaXNvbGF0ZWRDb3B5KCksIGJvZHkuaXNvbGF0ZWRDb3B5KCksIGljb25VUkwu
aXNvbGF0ZWRDb3B5KCksIHRhZy5pc29sYXRlZENvcHkoKSwgbGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5
KCksIGRpcmVjdGlvbiwgb3JpZ2luU3RyaW5nLmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uVVJMLmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vz
c2lvbiB9OworfQorCitOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbkRhdGE6Omlzb2xhdGVk
Q29weSgpICYmCit7CisgICAgcmV0dXJuIHsgV1RGTW92ZSh0aXRsZSkuaXNvbGF0ZWRDb3B5KCks
IFdURk1vdmUoYm9keSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaWNvblVSTCkuaXNvbGF0ZWRD
b3B5KCksIFdURk1vdmUodGFnKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShsYW5ndWFnZSkuaXNv
bGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwgV1RGTW92ZShvcmlnaW5TdHJpbmcpLmlzb2xhdGVkQ29w
eSgpLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLmlzb2xhdGVkQ29weSgp
LCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCBiY2RkZTNjMDU4NzY5MGUzNGY1ZTQxZjQxNjAzMjg1
N2Y4MWMwMzE5Li4zMjIwOTgzM2VkYTIwNDE2NGJkNTYxMTc5NmQ0MDBmN2Y3YTI3YzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25EYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNiAr
MzksOSBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiAKKyAgICBOb3RpZmljYXRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7Cisg
ICAgTm90aWZpY2F0aW9uRGF0YSBpc29sYXRlZENvcHkoKSAmJjsKKwogICAgIFN0cmluZyB0aXRs
ZTsKICAgICBTdHJpbmcgYm9keTsKICAgICBTdHJpbmcgaWNvblVSTDsKQEAgLTQ1LDYgKzQ5LDcg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIFN0cmluZyBvcmln
aW5TdHJpbmc7CisgICAgVVJMIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkw7CiAgICAgVVVJ
RCBub3RpZmljYXRpb25JRDsKICAgICBQQUw6OlNlc3Npb25JRCBzb3VyY2VTZXNzaW9uOwogfTsK
QEAgLTUyLDcgKzU3LDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgTm90aWZpY2F0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCB0aXRsZSA8PCBib2R5IDw8IGljb25VUkwgPDwg
dGFnIDw8IGxhbmd1YWdlIDw8IGRpcmVjdGlvbiA8PCBvcmlnaW5TdHJpbmcgPDwgbm90aWZpY2F0
aW9uSUQgPDwgc291cmNlU2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwg
aWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8
PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIDw8IG5vdGlmaWNhdGlvbklEIDw8IHNvdXJj
ZVNlc3Npb247CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC05Myw2ICs5OCwxMSBA
QCBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IE5vdGlmaWNhdGlvbkRhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3JpZ2luU3RyaW5nKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25VUkw7CisgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
VVJMOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gbm90aWZpY2F0aW9u
SUQ7CiAgICAgZGVjb2RlciA+PiBub3RpZmljYXRpb25JRDsKICAgICBpZiAoIW5vdGlmaWNhdGlv
bklEKQpAQCAtMTExLDYgKzEyMSw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9uRGF0YT4g
Tm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIFdURk1v
dmUoKmxhbmd1YWdlKSwKICAgICAgICAgV1RGTW92ZSgqZGlyZWN0aW9uKSwKICAgICAgICAgV1RG
TW92ZSgqb3JpZ2luU3RyaW5nKSwKKyAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvblVSTCksCiAgICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKICAgICAgICAg
V1RGTW92ZSgqc291cmNlU2Vzc2lvbiksCiAgICAgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAppbmRleCBi
MjFjMmVkODRhYzU0MDA4MDU0MTAyMzg3MzFiY2RkMmMwYjBjMWZiLi5hZDMxNTFkN2Y0MjY0ZDgx
ZTRhNjkwN2JlYWI0M2I0OWI3YTQzZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApAQCAtMzAsMTQgKzMw
LDEwIEBACiAjaW5jbHVkZSAiRXh0ZW5kYWJsZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJs
ZUV2ZW50SW5pdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkV2ZW50VHlwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3Mg
Tm90aWZpY2F0aW9uRXZlbnRUeXBlIDogYm9vbCB7Ci0gICAgQ2xpY2ssCi0gICAgQ2xvc2UsCi19
OwotCiBzdHJ1Y3QgTm90aWZpY2F0aW9uRXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7
CiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwogICAgIFN0cmluZyBhY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uRXZlbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uRXZlbnRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMwMjJjN2I4N2RmY2ZlYmU2
YjMwMWRiMGRlMzE3OGFlZDdiNTA4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudFR5cGUuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9u
RXZlbnRUeXBlIDogYm9vbCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSwKKyAgICAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywKKyAgICAg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZQorICAgID47Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNWFiOTMyMWI1MmFiZTJkOThhYzMwMjJiYWNjYTI4YmM2NWJlZTNlZi4uMzY5ZTk1ZWQ2
ZDI2Mjg2M2RiOTQ4ZTMxZWQzMmFmYzU4MTljOWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3NCw2ICsxMDc0LDcgQEAK
IAkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTIyM0MzMjYw
MzU2N0MwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDExMkI1NDMxRjlGOUNBMDAwRTY3
ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1M0YxRjlGOUM5QjAwRTY3ODc1IC8qIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNwUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEx
NEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87IH07CisJCTQx
MjAxRjM3MjdGMkY3NDkwMEQ1NkNDMiAvKiBOb3RpZmljYXRpb25FdmVudFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjAxRjM2MjdGMkY3NDYw
MEQ1NkNDMiAvKiBOb3RpZmljYXRpb25FdmVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyog
V2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki87IH07CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
ODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9
OwogCQk0MTI4MjdCMjI3RTRBQzNDMDA1QURERTIgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2
Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODU4NCw2ICs4NTg1LDcgQEAKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkw
QTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTg5RUY3MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyMDFGMzYyN0YyRjc0NjAwRDU2Q0MyIC8qIE5v
dGlmaWNhdGlvbkV2ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25FdmVudFR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFMjQyNTdBMkZCQjAwMTIw
QUNBIC8qIFNGcmFtZVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNG
cmFtZVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTI2MjU3QTJG
QkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTRnJhbWVVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMjA5RTkxMjE2RDU5M0MwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA5NzYsNiArMjA5NzgsNyBAQAogCQkJCTUxMEUyRjJDMjc2QkUwQzMwMDgwOTMz
MyAvKiBOb3RpZmljYXRpb25FdmVudC5jcHAgKi8sCiAJCQkJNTEwRTJGMjQyNzZCQjRFQzAwODA5
MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50LmggKi8sCiAJCQkJNTEwRTJGMjIyNzZCQTlFODAwODA5
MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50LmlkbCAqLywKKwkJCQk0MTIwMUYzNjI3RjJGNzQ2MDBE
NTZDQzIgLyogTm90aWZpY2F0aW9uRXZlbnRUeXBlLmggKi8sCiAJCQkJNTEwRTJGMjYyNzZCQzE5
RjAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbk9wdGlvbnMuaCAqLywKIAkJCQk1MUUzQUYwQTI3NkIw
NUI3MDA5QjQyOUQgLyogTm90aWZpY2F0aW9uT3B0aW9ucy5pZGwgKi8sCiAJCQkJN0NDMkRERjgx
RUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCAqLywKQEAgLTM2NTk1
LDYgKzM2NTk4LDcgQEAKIAkJCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90aWZpY2F0
aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDMkRFMDMxRUNBMDRBNTAwMjdCNzc0IC8q
IE5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJGMjUyNzZC
QjRFQzAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTIwMUYzNzI3RjJGNzQ5MDBENTZDQzIgLyogTm90aWZpY2F0aW9uRXZlbnRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTBFMkYyNzI3NkJDMTlGMDA4MDkzMzMgLyogTm90aWZpY2F0aW9uT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDMkRERkIxRUM5NDE1QTAwMjdCNzc0IC8qIE5v
dGlmaWNhdGlvblBlcm1pc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRkU2REZBMTUwMDRD
MkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAyNWFhZjY3ODU5NGQyOTYwNzNhMzY5ZGQ2
YWRlZGY3ODIxMjZlYjYwLi43YTU3MjI3YTEwNGQ1ZWE3ZWYzZTUwNzhkYzdmNDEyZDZiNmIwNWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMTk5LDI5ICsxOTksNiBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYg
c2NyaXB0LCBIYXNoTQogICAgIH0KIH0KIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQp
Ci12b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRp
b25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBOb3RpZmljYXRpb24mIG5v
dGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pCi17Ci0gICAgdGhyZWFkKCkucnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmljYXRpb24gPSBS
ZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29weSgpXShhdXRv
JiBzY29wZSkgewotICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJlZiB7IHNjb3Bl
IH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsKLSAgICAgICAg
ICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOwotICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUp
IHsKLSAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljazoKLSAgICAg
ICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xpY2tFdmVu
dDsKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHNj
b3BlKS5yZWNvcmRVc2VyR2VzdHVyZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGU6OkNsb3NlOgotICAgICAgICAgICAgICAg
IGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbG9zZUV2ZW50OwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIGV2ZW50
ID0gTm90aWZpY2F0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHByb3RlY3RlZE5vdGlmaWNh
dGlvbi5wdHIoKSwgYWN0aW9uLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKLSAg
ICAgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwotICAgICAgICB9KTsKLSAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6
cmVjb3JkVXNlckdlc3R1cmUoKQogewogICAgIG1faXNQcm9jZXNzaW5nVXNlckdlc3R1cmUgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDk1MzgwYzM4YWU5NGVjNTk3NTllOGI0ZWQ3MmIx
NmZiZTM4NmJkMDYuLjJmMzUyOTE0MzBkYjBjZDA3Y2FlOTRlYTJkYWRhZDJlZmYwNmFjOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgKQEAgLTgxLDEwICs4MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFBhZ2UqIHNlcnZpY2VXb3JrZXJQYWdlKCk7CiAKLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OX0VWRU5UKQotICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChO
b3RpZmljYXRpb25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9u
KTsKLSNlbmRpZgotCiAgICAgYm9vbCBoYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50OyB9CiAgICAgdm9pZCBzZXRIYXNQ
ZW5kaW5nU2lsZW50UHVzaEV2ZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNQZW5kaW5nU2lsZW50UHVz
aEV2ZW50ID0gdmFsdWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGZiMTAyMjE4
NzE3ZGQ1MWE2ZWUzMTA0MTM4YmRjMWRmYjg3ZjBjOGQuLjFlOGY0ZGVjMTBhODQ3NGZlMTAwMDU4
NDYzZmY4MWY1ZGQ2YTNmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTI5Myw2ICsy
OTMsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAogICAgIC8vIFRoZSBOb3RpZmljYXRpb24g
aXMga2VwdCBhbGl2ZSBieSB2aXJ0dWUgb2YgYmVpbmcgc2hvdygpJ24gc29vbi4KICAgICAvLyBG
SVhNRTogV2hlbiBpbXBsZW1lbnRpbmcgZ2V0Tm90aWZpY2F0aW9ucygpLCBzdG9yZSB0aGlzIE5v
dGlmaWNhdGlvbiBpbiB0aGUgcmVnaXN0cmF0aW9uJ3Mgbm90aWZpY2F0aW9uIGxpc3QuCiAgICAg
YXV0byBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb246OmNyZWF0ZShjb250ZXh0LCBXVEZNb3Zl
KHRpdGxlKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgbm90aWZpY2F0aW9uLT5zaG93U29vbigp
OwogCiAgICAgY29udGV4dC5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIHByb21pc2UucmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlMjYxODJh
ZTkyODNkMjgxZjNhYzQxYzkwZGNiZGEyMjU0MTdlOGRhLi44MWI0NDI4Y2IyMDNlNDBkMjhlYmY5
OWQ0ZjA1ZDQ2OWRhZjEzYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTI4LDYgKzEy
OCwxNCBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaQogICAgIHNlcnZpY2VXb3JrZXItPmZpcmVQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwg
V1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKSk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIE5vdGlmaWNhdGlvbkRhdGEmJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGF1
dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYg
KCFzZXJ2aWNlV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2VyLT5m
aXJlTm90aWZpY2F0aW9uRXZlbnQoV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBlLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4
IGZlZTdjMTVkMmI4N2RjNDYyNWZiNGU3ZDFjODExODljMmI0ZGU3YTUuLjlhMjNjNWFkMDM2Njgw
ZTlkOGVhODgzYjZhMDk2YzViNGE4NTk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTk1LDYg
Kzk1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmly
ZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdT
dWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9s
ZFN1YnNjcmlwdGlvbkRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZU5vdGlmaWNh
dGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBOb3RpZmljYXRpb25EYXRhJiYsIE5v
dGlmaWNhdGlvbkV2ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVk
U2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGI1Y2M4NmFjZDRiMzYy
YWZlNWE2Yjc2OTBkM2Q2MmI1ODg4MzZlZmYuLjlmODJlZWQ2MzEyODllNTBjYzdiZGUxOWJiZmFk
NDM5NTgzZmY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zNiw2ICszNiw4
IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3ku
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCiAjaW5jbHVkZSAiUHVzaEV2ZW50LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlv
bi5oIgpAQCAtMjUwLDggKzI1Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAKIHZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0
aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3Jp
cHRpb25EYXRhKQogewotICAgIFJlZiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUsIG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlv
bkRhdGEpLCBvbGRTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRh
KV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKKyAgICBzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IFJlZiB7IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB9LCBuZXdTdWJz
Y3JpcHRpb25EYXRhID0gV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgb2xkU3Vic2NyaXB0
aW9uRGF0YSA9IFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1
ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmlyaW5nIGV2ZW50IGZvciB3
b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgICAgICBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4g
bmV3U3Vic2NyaXB0aW9uOwpAQCAtMjc1LDYgKzI3Nyw0NSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9w
dGlvbgogICAgIH0pOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90
aWZpY2F0aW9uRGF0YSYmIGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIEZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFs
U2NvcGUoKSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVl
VGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGV2ZW50VHlwZSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZU5vdGlmaWNhdGlv
bkV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdvcmtlckds
b2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICAgICAg
YXV0byBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb246OmNyZWF0ZShzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuZ2V0KCksIFdURk1vdmUoZGF0YSkpOworICAgICAgICBBdG9tU3RyaW5nIGV2ZW50
TmFtZTsKKyAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHsKKyAgICAgICAgY2FzZSBOb3RpZmlj
YXRpb25FdmVudFR5cGU6OkNsaWNrOgorICAgICAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1l
cygpLm5vdGlmaWNhdGlvbmNsaWNrRXZlbnQ7CisgICAgICAgICAgICBub3RpZmljYXRpb24tPm1h
cmtBc1Nob3duKCk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnJlY29y
ZFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb3RpZmlj
YXRpb25FdmVudFR5cGU6OkNsb3NlOgorICAgICAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1l
cygpLm5vdGlmaWNhdGlvbmNsb3NlRXZlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uRXZlbnQgPSBOb3RpZmljYXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZSwgbm90aWZpY2F0aW9uLnB0cigpLCBlbXB0eVN0cmluZygpLCBFeHRl
bmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLT5kaXNwYXRjaEV2ZW50KG5vdGlmaWNhdGlvbkV2ZW50KTsKKworICAgICAgICBub3Rp
ZmljYXRpb25FdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFtz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGJvb2wg
c3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRM
aWZldGltZVByb21pc2VzKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygp
ID09IERPTVByb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KCFzdWNjZXNzLCBTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNr
VG9GaXJlTm90aWZpY2F0aW9uRXZlbnQgZmFpbGVkIHRvIHByb2Nlc3Mgbm90aWZpY2F0aW9uIGV2
ZW50Iik7CisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9CisjZW5kaWYKKwogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEV2YWx1
YXRpbmdTY3JpcHQoKQogewogICAgIEFTU0VSVChnbG9iYWxTY29wZSgpLT5pc0NvbnRleHRUaHJl
YWQoKSk7CkBAIC0zMTEsOSArMzUyLDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFy
dEZldGNoRXZlbnRNb25pdG9yaW5nKCkKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiB9CiAK
LXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKCkKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRGdW5jdGlvbmFsRXZlbnRNb25pdG9yaW5nKCkK
IHsKLSAgICBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgPSB0cnVlOworICAgIG1faXNIYW5kbGluZ0Z1
bmN0aW9uYWxFdmVudCA9IHRydWU7CiAgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOwogfQogCkBA
IC0zMzksNyArMzgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVh
dFRpbWVyKCkKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCgp
CiB7CiAgICAgaWYgKCFtX29uZ29pbmdIZWFydEJlYXRDaGVjaykgewotICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5n
IHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHx8IG1f
cHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgfHwgbV9tZXNzYWdlRXZlbnRDb3VudCkK
KyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBT
dGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5kbGlu
Z0Z1bmN0aW9uYWxFdmVudCB8fCBtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHx8
IG1fbWVzc2FnZUV2ZW50Q291bnQpCiAgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggNzU2
NmI0ZDRhOWQxM2M4MGUwODM2Mjk3MjY2NzdiZTIyNjkzOTJiZi4uNTQwMTIyY2ZjMWJmMjIwOGEw
ZDZjNmIwZGEzNzExMzcyNDhkMTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oIgogI2lu
Y2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aCIKQEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiBzdHJ1Y3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM7CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIAogY2xhc3Mg
U2VydmljZVdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxTZXJ2aWNlV29ya2VyVGhyZWFkLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9u
OjpFYWdlcj4gewogcHVibGljOgpAQCAtNzEsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBx
dWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVQ
dXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0
aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3Jp
cHRpb25EYXRhKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQorICAgIHZvaWQgcXVl
dWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmLCBOb3RpZmlj
YXRpb25FdmVudFR5cGUsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCiAKICAgICBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fam9i
RGF0YUlkZW50aWZpZXI7IH0KQEAgLTc4LDggKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBz
dGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CiAgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1vbml0
b3JpbmcoKSB7IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSBmYWxzZTsgfQotICAgIHZvaWQgc3Rh
cnRQdXNoRXZlbnRNb25pdG9yaW5nKCk7Ci0gICAgdm9pZCBzdG9wUHVzaEV2ZW50TW9uaXRvcmlu
ZygpIHsgbV9pc0hhbmRsaW5nUHVzaEV2ZW50ID0gZmFsc2U7IH0KKyAgICB2b2lkIHN0YXJ0RnVu
Y3Rpb25hbEV2ZW50TW9uaXRvcmluZygpOworICAgIHZvaWQgc3RvcEZ1bmN0aW9uYWxFdmVudE1v
bml0b3JpbmcoKSB7IG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxFdmVudCA9IGZhbHNlOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwpAQCAtMTA5LDcgKzExNCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKICAgICBib29s
IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0hhbmRsaW5n
UHVzaEV2ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxFdmVu
dCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRD
b3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21lc3NhZ2VFdmVudENvdW50IHsgMCB9OwogICAg
IGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBTdGFydGluZywgSW5zdGFsbGluZywgQWN0aXZhdGlu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggOGEyMTk0MTgz
M2JiYThhMGRhNjA0OGMzYmI3NmU4NjAwNTFkNGQ2Zi4uMTIxMmQ1MTM0MjA5ZmFkMmE0Mzk0NGIx
NzUzMzczY2ZmZTA1NmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3Bw
CkBAIC05Miw4ICs5Miw4IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSgpCiAgICAgQVNTRVJUKGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVz
KCkuY29udGFpbnModGhpcykpOwogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCku
cmVtb3ZlKHRoaXMpOwogCi0gICAgYXV0byBwdXNoVGFza3MgPSBXVEZNb3ZlKG1fb25nb2luZ1B1
c2hUYXNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHB1c2hUYXNrcy52YWx1ZXMoKSkK
KyAgICBhdXRvIGZ1bmN0aW9uYWxFdmVudFRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdGdW5jdGlv
bmFsRXZlbnRUYXNrcyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGZ1bmN0aW9uYWxFdmVu
dFRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKQEAgLTI4Mywy
NCArMjgzLDI0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2NyaXB0
c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAKIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgaWYgKG1fb25nb2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHRocmVhZCgpLnN0
YXJ0UHVzaEV2ZW50TW9uaXRvcmluZygpOworICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFsRXZl
bnRUYXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2ZW50
TW9uaXRvcmluZygpOwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gKyttX3B1c2hUYXNrc0NvdW50
ZXI7Ci0gICAgQVNTRVJUKCFtX29uZ29pbmdQdXNoVGFza3MuY29udGFpbnMoaWRlbnRpZmllcikp
OwotICAgIG1fb25nb2luZ1B1c2hUYXNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIGF1dG8gaWRlbnRpZmllciA9ICsrbV9mdW5jdGlvbmFsRXZlbnRUYXNrc0NvdW50
ZXI7CisgICAgQVNTRVJUKCFtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5jb250YWlucyhp
ZGVudGlmaWVyKSk7CisgICAgbV9vbmdvaW5nRnVuY3Rpb25hbEV2ZW50VGFza3MuYWRkKGlkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBib29sIGlzUG9zdGVkID0gcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXShhdXRvJikg
bXV0YWJsZSB7CiAgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChXVEZN
b3ZlKGRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGlkZW50aWZpZXJdKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBp
ZGVudGlmaWVyLCByZXN1bHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBtX29uZ29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tz
LnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fb25nb2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgICAgIHRocmVhZCgpLnN0b3BQdXNoRXZlbnRNb25pdG9yaW5nKCk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgdGhyZWFkKCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3Jp
bmcoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKICAgICBpZiAoIWlzUG9zdGVkKQotICAgICAgICBtX29uZ29pbmdQ
dXNoVGFza3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CisgICAgICAgIG1fb25nb2luZ0Z1bmN0
aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikoZmFsc2UpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0
ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSkK
QEAgLTMxMSw2ICszMTEsMzQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXMKICAgICB9KTsKIH0K
IAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVOb3RpZmljYXRpb25FdmVudChO
b3RpZmljYXRpb25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OX0VWRU5UKQorICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNr
cy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2ZW50TW9uaXRv
cmluZygpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gKyttX2Z1bmN0aW9uYWxFdmVudFRhc2tz
Q291bnRlcjsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5hZGQo
aWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGJvb2wgaXNQb3N0ZWQgPSBwb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwgZGF0YSA9IFdURk1vdmUoZGF0YSkuaXNv
bGF0ZWRDb3B5KCksIGV2ZW50VHlwZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJlYWQo
KS5xdWV1ZVRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChXVEZNb3ZlKGRhdGEpLCBldmVudFR5
cGUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRp
Zmllcl0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZp
ZXIsIHJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikpCisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKG1f
b25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgdGhyZWFkKCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3JpbmcoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsK
KyAgICBpZiAoIWlzUG9zdGVkKQorICAgICAgICBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNr
cy50YWtlKGlkZW50aWZpZXIpKGZhbHNlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OworICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOworICAgIGNhbGxiYWNrKGZhbHNlKTsKKyNl
bmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGU1Y2I1
YzFkZDE0NWIyODE5NWNmODg1NWY4ZjQzZGI2MjllZGMxZGUuLmZmMTMwYjNkYjY2NTQ0OTdjMzZi
MTg3NTA5Yjk0M2VkMDQ3MDc4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
CkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7
CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4m
JiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRh
PiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpOworICAgIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50
KE5vdGlmaWNhdGlvbkRhdGEmJiwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2Ny
aXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRz
KTsKIApAQCAtMTE4LDggKzExOSw4IEBAIHByaXZhdGU6CiAKICAgICBTZXJ2aWNlV29ya2VySW5z
cGVjdG9yUHJveHkgbV9pbnNwZWN0b3JQcm94eTsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXI+LCBSZWY8U2VydmljZVdv
cmtlckZldGNoOjpDbGllbnQ+PiBtX29uZ29pbmdGZXRjaFRhc2tzOwotICAgIHVpbnQ2NF90IG1f
cHVzaFRhc2tzQ291bnRlciB7IDAgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPj4gbV9vbmdvaW5nUHVzaFRhc2tzOworICAgIHVpbnQ2NF90IG1f
ZnVuY3Rpb25hbEV2ZW50VGFza3NDb3VudGVyIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+PiBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRU
YXNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBmNjExMDYxMTZhNGJm
Njc1MjY0NGEyNGVhZTE5ZjU1YjRhYTlmYTM3Li5kNjNhZDBjNGUyN2IxNGIwNGZlMDQ2ZmM5YzMy
NjY5ZjMyYjZiY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25T
dG9yZS5oIgogI2luY2x1ZGUgIlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJTV1NlcnZlckpv
YlF1ZXVlLmgiCkBAIC0xMDQ5LDcgKzEwNTAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
ICAgICAgICAgICAgaWYgKHJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShjbGllbnRS
ZWdpc3RyYWJsZURvbWFpbikgPT0gU2hvdWxkRGVsYXlSZW1vdmFsOjpZZXMpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5maW5k
KGNsaWVudE9yaWdpbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fY2xp
ZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5kKCkpOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9y
LT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1By
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDog
ZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT52
YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogZGVm
YXVsdEZ1bmN0aW9uYWxFdmVudER1cmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKQEAgLTEzMDMsMTUgKzEzMDQsMTUgQEAgdm9pZCBTV1NlcnZlcjo6cHJv
Y2Vzc1B1c2hNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRhdGEsIFVS
TCYmIHIKIAogICAgICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtl
ci0+aWRlbnRpZmllcigpOwogCi0gICAgICAgICAgICB3b3JrZXItPmluY3JlbWVudFB1c2hFdmVu
dENvdW50ZXIoKTsKKyAgICAgICAgICAgIHdvcmtlci0+aW5jcmVtZW50RnVuY3Rpb25hbEV2ZW50
Q291bnRlcigpOwogICAgICAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IG1ha2VV
bmlxdWU8VGltZXI+KFt3b3JrZXJdIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgaXMgdGFraW5nIHRvbyBtdWNoIHRpbWUg
dG8gcHJvY2VzcyBhIHB1c2ggZXZlbnQiKTsKLSAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3Jl
bWVudFB1c2hFdmVudENvdW50ZXIoKTsKKyAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3JlbWVu
dEZ1bmN0aW9uYWxFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
dGVybWluYXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+
bV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRl
bGF5IDogZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgdGVybWluYXRl
V29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9pc1Byb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogZGVm
YXVsdEZ1bmN0aW9uYWxFdmVudER1cmF0aW9uKTsKICAgICAgICAgICAgIGNvbm5lY3Rpb25PclN0
YXR1cy52YWx1ZSgpLT5maXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBkYXRh
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdGVybWluYXRlV29ya2VyVGltZXIgPSBX
VEZNb3ZlKHRlcm1pbmF0ZVdvcmtlclRpbWVyKSwgd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXShi
b29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0ZVdv
cmtlclRpbWVyLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdvcmtlci0+ZGVj
cmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgICAgICAgICB3b3JrZXItPmRl
Y3JlbWVudEZ1bmN0aW9uYWxFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgdGVy
bWluYXRlV29ya2VyVGltZXItPnN0b3AoKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzMjEs
NiArMTMyMiw0NSBAQCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogICAgIH0pOwogfQogCit2b2lk
IFNXU2VydmVyOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmIGRh
dGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSB0eXBlKQoreworICAgIHdoZW5JbXBvcnRJc0NvbXBs
ZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgdHlwZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVVSTChkYXRhLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpOworICAg
ICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSB7IFdURk1v
dmUob3JpZ2luKSwgVVJMIHsgZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIH0gfTsK
KyAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0
KHJlZ2lzdHJhdGlvbktleSk7CisgICAgICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZl
V29ya2VyKCk7CisgICAgICAgIGlmICghd29ya2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGZpcmVGdW5jdGlvbmFsRXZlbnQoKnJlZ2lzdHJhdGlvbiwgW3dvcmtlciA9IFJlZiB7
ICp3b3JrZXIgfSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIHR5cGVdKGF1dG8mJiBjb25uZWN0aW9uT3JTdGF0dXMpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKCFjb25uZWN0aW9uT3JTdGF0dXMuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
d29ya2VyLT5pZGVudGlmaWVyKCk7CisKKyAgICAgICAgICAgIHdvcmtlci0+aW5jcmVtZW50RnVu
Y3Rpb25hbEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3JrZXJU
aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFt3b3JrZXJdIHsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgaXMgdGFraW5nIHRv
byBtdWNoIHRpbWUgdG8gcHJvY2VzcyBhIG5vdGlmaWNhdGlvbiBldmVudCIpOworICAgICAgICAg
ICAgICAgIHdvcmtlci0+ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90
KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
ID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRp
b24pOworICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVOb3RpZmlj
YXRpb25FdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgdHlwZSwgW3Rlcm1pbmF0
ZVdvcmtlclRpbWVyID0gV1RGTW92ZSh0ZXJtaW5hdGVXb3JrZXJUaW1lciksIHdvcmtlciA9IFdU
Rk1vdmUod29ya2VyKV0oYm9vbCAvKiBzdWNjZWVkZWQgKi8pIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBpZiBzdWNjZWVkZWQgaXMgZmFsc2UsIHNob3VsZCB3ZSBpbXBsZW1l
bnQgYSBkZWZhdWx0IGFjdGlvbiBsaWtlIG9wZW5pbmcgYSBuZXcgcGFnZT8KKyAgICAgICAgICAg
ICAgICBpZiAodGVybWluYXRlV29ya2VyVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgd29ya2VyLT5kZWNyZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCk7CisgICAg
ICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5zdG9wKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZmlyZS1mdW5jdGlvbmFsLWV2ZW50
LWFsZ29yaXRobSwganVzdCBmb3IgcHVzaCByaWdodCBub3cuCiB2b2lkIFNXU2VydmVyOjpmaXJl
RnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwg
U2hvdWxkU2tpcEV2ZW50Pik+JiYgY2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNmRhMTQ1YWFiODc3YWI4YzQ5
NDcyNDExZWYxZjhmM2M2NTM1YzRiMC4uOWQ1YWQyYTUyZWNlNmNlYzM4NzIyYmFlZDg0ZDExOTMw
MTQ4M2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaApAQCAtNTgsMTAgKzU4LDEyIEBAIGNsYXNzIFNXU2VydmVySm9iUXVldWU7CiBj
bGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKIGNsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKIGNsYXNzIFRpbWVyOworZW51bSBjbGFzcyBOb3RpZmljYXRpb25FdmVudFR5cGUgOiBi
b29sOwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90
OwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2Vw
dGlvbkRhdGE7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CitzdHJ1Y3QgTm90aWZp
Y2F0aW9uRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOwogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YTsKQEAgLTIxOSwxMiArMjIxLDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEwX3M7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRQdXNoTWVzc2FnZUR1cmF0aW9uID0gMl9zOworICAgIHN0
YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRpb24gPSAy
X3M7CiAKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRp
YXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAg
Ym9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKSBjb25z
dCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGlu
ZzsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NOb3RpZmljYXRpb25F
dmVudChOb3RpZmljYXRpb25EYXRhJiYsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSk7CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBm
aXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lw
RXZlbnQ+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2
NmNjNDY5YTkzZmRlOWVkNmFkN2RkYmY0NzE4NzAzNzRjMjQ3NmJlLi43Y2ExNmM3YWE4ZDdiODRk
ZWQ5ODk0ZWVkZWI3MDhiNDNjNjU2M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRXZlbnRU
eXBlLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3RyYWJs
ZURvbWFpbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgi
CkBAIC0zOSw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IE5vdGlm
aWNhdGlvbkRhdGE7CiBjbGFzcyBTV1NlcnZlcjsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CkBAIC02NSw3ICs2Nyw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFw
PFVSTCwgU2NyaXB0QnVmZmVyPiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBm
aXJlUHVzaEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZU5vdGlm
aWNhdGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBOb3RpZmljYXRpb25E
YXRhJiwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSA9IDA7CiAgICAgdmlydHVhbCBQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllcigpIGNvbnN0ID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9z
dCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDk5MjRmYmRiYWU0NjEyY2E4MWVkYWJiNzc2
ODdmZmM1ZGYzY2RhOTAuLjA4ODFiYzYyMzczNzEzYWFlMjFmZWIxOGI2MjYyNGI1YmE2ZTk5OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0zOTcsMTAgKzM5NywxMCBAQCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2VydmljZVdv
cmtlclBhZwogICAgIHJldHVybiBtX3JlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVudENv
dW50ZXIoKQordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291
bnRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcHVzaEV2ZW50Q291bnRlcik7Ci0gICAgLS1tX3B1c2hF
dmVudENvdW50ZXI7CisgICAgQVNTRVJUKG1fZnVuY3Rpb25hbEV2ZW50Q291bnRlcik7CisgICAg
LS1tX2Z1bmN0aW9uYWxFdmVudENvdW50ZXI7CiAgICAgdGVybWluYXRlSWZQb3NzaWJsZSgpOwog
fQogCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0QXNJbnNwZWN0
ZWQoYm9vbCBpc0luc3BlY3RlZCkKIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlSWZQ
b3NzaWJsZSgpCiB7Ci0gICAgaWYgKG1fcHVzaEV2ZW50Q291bnRlciB8fCBtX2lzSW5zcGVjdGVk
IHx8ICFtX3NlcnZlciB8fCBtX3NlcnZlci0+aGFzQ2xpZW50c1dpdGhPcmlnaW4ob3JpZ2luKCkp
KQorICAgIGlmIChtX2Z1bmN0aW9uYWxFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZCB8fCAh
bV9zZXJ2ZXIgfHwgbV9zZXJ2ZXItPmhhc0NsaWVudHNXaXRoT3JpZ2luKG9yaWdpbigpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdGVybWluYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggMTYwMDY1
ZDM2ZWJmYzUzMGUyYmM4MDYxMjRiN2EyYzQxYzdiMmMxOC4uNTRkZjM4NDIyMDgxYWFlNGQ4MmJh
NjI0ZmJhNjI5MGE4ZjYzN2JiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTM1LDExICsxMzUsMTEgQEAg
cHVibGljOgogCiAgICAgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKCkgY29uc3Q7
CiAKLSAgICB2b2lkIGluY3JlbWVudFB1c2hFdmVudENvdW50ZXIoKSB7ICsrbV9wdXNoRXZlbnRD
b3VudGVyOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CisgICAgdm9p
ZCBpbmNyZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCkgeyArK21fZnVuY3Rpb25hbEV2ZW50
Q291bnRlcjsgfQorICAgIHZvaWQgZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOwog
ICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoYm9vbCk7CiAKLSAgICBib29sIHNob3VsZENvbnRpbnVl
KCkgY29uc3QgeyByZXR1cm4gISFtX3B1c2hFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsg
fQorICAgIGJvb2wgc2hvdWxkQ29udGludWUoKSBjb25zdCB7IHJldHVybiAhIW1fZnVuY3Rpb25h
bEV2ZW50Q291bnRlciB8fCBtX2lzSW5zcGVjdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2
ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0PiYmKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3Rlcm1pbmF0aW9uQ2FsbGJhY2tzOwogICAgIFRp
bWVyIG1fdGVybWluYXRpb25UaW1lcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwotICAgIGludCBtX3B1c2hFdmVudENv
dW50ZXIgeyAwIH07CisgICAgaW50IG1fZnVuY3Rpb25hbEV2ZW50Q291bnRlciB7IDAgfTsKICAg
ICBib29sIG1faXNJbnNwZWN0ZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxMTUxM2E4ZWI4ZTZhMGFk
NTlmNmI2OWQyYjE5OTE4ZDA3NDAxZmM2Li5lMzlhYWI5YTk1MmIyMzY1ZTk5OWQwYWRjYzhlNTBm
NDM5YTRjZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTm90aWZpY2F0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KQEAgLTIyNzksNiArMjI4MCwx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KE5vdGlm
aWNhdGlvbkRhdGEmJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlKQorewor
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oZGF0YS5zb3VyY2VTZXNzaW9u
KSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9jZXNzTm90aWZpY2F0aW9u
RXZlbnQoV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBlKTsKK30KKwogI2lmIEVOQUJMRShCVUlMVF9J
Tl9OT1RJRklDQVRJT05TKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNmE5MDBmZDFiYjI5Mzcw
YzhjOTBmZjJiZmE5YWIwZWMzZTZlOTRlZS4uYTI2OGQ4ZmU0MTUyODk5NGVkZTcwZGZkYzVlZGZj
NjIzOTMxZDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdGlmaWNhdGlvbkV2ZW50VHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtODQsNiArODUsNyBA
QCBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDdXJsUHJveHlTZXR0aW5nczsKIGNsYXNz
IFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK3N0cnVjdCBO
b3RpZmljYXRpb25EYXRhOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFVzZXJDb250ZW50
VVJMUGF0dGVybjsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7
CkBAIC0zNzQsNiArMzc2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmKTsKICAgICB2
b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBwcm9jZXNzTm90aWZp
Y2F0aW9uRXZlbnQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYmLCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25FdmVudFR5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmlj
YXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggYjVhMDMyOGIwYjQ0NTc2MDk3Yzg3M2MwZDY0YmUyMTRhYTg4ZWFi
YS4uMjZjNGViNzMyM2ZiZGU4MGJiN2FiYjljMDgxMjkyNTVhMzMwMzcxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0yMTMsNiArMjEzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRQZW5kaW5nUHVz
aE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiBtZXNzYWdlcykKICAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVzc2Fn
ZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkKKyAgICBQcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoc3Ry
dWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgZGF0YSwgZW51bTpib29sIFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUpCiAjZW5kaWYKICAgICBEZWxldGVQdXNoQW5k
Tm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcgZXJyb3JNZXNz
YWdlKQogICAgIEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IG9yaWdpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCmluZGV4IDAwOTMyMzZmMmY2NmVkNDU3ZmI1OWQ1MjMyYTM0MGIwN2Qy
MmI2ZTYuLjdkZmEwZTE4NjQ5YTBmZTEzZDRmNzI2MTVjYTI4MzYwMGM5ZjcwZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmg+CiAKQEAgLTExNCwxNiArMTE1LDI4IEBAIHZvaWQgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CiB9CiAK
LXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2ZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBkYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghbV9w
cm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50KyspCisgICAgaWYgKCFtX3Byb2Nlc3NpbmdGdW5jdGlv
bmFsRXZlbnRDb3VudCsrKQogICAgICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4gaXBjRGF0YTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgaXBjRGF0YSA9IElQQzo6RGF0YVJl
ZmVyZW5jZSB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZVB1c2hF
dmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXBjRGF0YSksIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHdhc1Byb2Nl
c3NlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcyAmJiAhLS13ZWFrVGhpcy0+bV9w
cm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50KQorICAgICAgICBpZiAod2Vha1RoaXMgJiYgIS0td2Vh
a1RoaXMtPm1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KQorICAgICAgICAgICAgd2Vh
a1RoaXMtPm1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYWtUaGlzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigp
IH0sIDApOworICAgICAgICBjYWxsYmFjayh3YXNQcm9jZXNzZWQpOworICAgIH0pOworfQorCit2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZU5vdGlmaWNhdGlvbkV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBO
b3RpZmljYXRpb25EYXRhJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9w
cm9jZXNzaW5nRnVuY3Rpb25hbEV2ZW50Q291bnQrKykKKyAgICAgICAgbV9jb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZU5vdGlmaWNh
dGlvbkV2ZW50IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIGV2ZW50VHlwZSB9LCBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCB3YXNQcm9jZXNzZWQpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYg
IS0td2Vha1RoaXMtPm1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KQogICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVuZFNlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYWtUaGlzLT53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpIH0sIDApOwogICAgICAgICBjYWxsYmFjayh3YXNQcm9jZXNzZWQpOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4
IDgwYjMwM2U0NGRiZGIzOTFkNWIyNWViMjc5NzM0MWFlZmYwMmEwNDUuLjAxNmE4Mjc1MzUwYWMx
ZWMzNDc5MDJiMmZhMzRmODI4NjMwOWQ1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNiArOTcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAgIHZvaWQgbWF0Y2hB
bGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSBmaW5hbDsKICAgICB2b2lkIGZpcmVQdXNo
RXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOworICAgIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiwgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAgICAgdm9pZCBmb2N1cyhXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJik7CiAK
QEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyLCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s+PiBtX29uZ29pbmdE
b3dubG9hZHM7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9OwogICAgIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKLSAgICBzaXplX3QgbV9wcm9jZXNz
aW5nUHVzaEV2ZW50c0NvdW50IHsgMCB9OworICAgIHNpemVfdCBtX3Byb2Nlc3NpbmdGdW5jdGlv
bmFsRXZlbnRDb3VudCB7IDAgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDhmZTY1
ODFhMDViMDRjNjlmYmQwMWFhNjE1MmZjY2QwYzcyMWYzYzIuLjZiZjdlY2VlNWIyYWI3NzkzZWYw
ZDAwNzc3OTlhMzU0Zjc2OWU5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTc4MCw2ICsxNzgwLDEx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklELCBw
dXNoTWVzc2FnZSB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IE5vdGlmaWNhdGlvbkRhdGEm
IGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NOb3RpZmljYXRpb25FdmVudCB7IGRhdGEsIGV2
ZW50VHlwZSB9LCAwKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCA1YzFkMDUzZjFmOGNmZjU1NjBmNmRlOWUxNmFhMTUxZmFiN2E1ZjY2
Li5hZmFiNTJkMzYzM2U1ZDQwNGVmZDk1ZWNlNmZhZTk3MWQxYWZhZGQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RXZlbnRUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTcyLDEzICs3MywxNCBA
QCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IDogdWludDhfdDsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKK3N0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjg0
LDYgKzI4Niw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9p
ZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7CiAgICAgdm9pZCBwcm9j
ZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOworICAgIHZvaWQgcHJv
Y2Vzc05vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0
ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IGI5MDE4NDIxMTIyZThlOTVmNGY2
ZGNmMWEyZjAzMzRhODgxYzNhN2MuLjhlY2FjMTIzNmE1ZjE4ZWEzZTdiNzVkNTJjY2UzNTg4ZmVl
NjRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMxLDE0ICszMSw4IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRl
bnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VDb25uZWN0aW9uKQotICAgIDogbV90aXRs
ZShkYXRhLnRpdGxlKQotICAgICwgbV9ib2R5KGRhdGEuYm9keSkKLSAgICAsIG1faWNvblVSTChk
YXRhLmljb25VUkwpCi0gICAgLCBtX3RhZyhkYXRhLnRhZykKLSAgICAsIG1fbGFuZyhkYXRhLmxh
bmd1YWdlKQotICAgICwgbV9kaXIoZGF0YS5kaXJlY3Rpb24pCisgICAgOiBtX2RhdGEoZGF0YSkK
ICAgICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoZGF0
YS5vcmlnaW5TdHJpbmcpKQotICAgICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0YS5ub3RpZmlj
YXRpb25JRCkKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIpCiAgICAgLCBt
X3NvdXJjZUNvbm5lY3Rpb24oc291cmNlQ29ubmVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCmluZGV4
IGMxNGYxNGMwYmFiZGMwODE0Y2EwNzkyM2MwOWY3Zjc2MTliZjg3NTIuLjM3YjYyYjI5YjU4ZGM5
Y2YzNDYzMDM0Mzc0MjU5N2RjM2YwNmZkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ3LDE3ICs0OCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
Yk5vdGlmaWNhdGlvbihkYXRhLCBwYWdlSWRlbnRpZmllciwgc291cmNlQ29ubmVjdGlvbikpOwog
ICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxl
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uVVJMOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQotICAgIGNvbnN0
IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQotICAgIFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcjsgfQorICAgIGNv
bnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGl0bGU7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYm9keTsgfQorICAgIGNv
bnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pY29uVVJMOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGFnOyB9CisgICAg
Y29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxhbmd1YWdlOyB9Cisg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5kaXJlY3Rpb247IH0KKyAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEubm90aWZpY2F0aW9uSUQ7IH0KKyAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc291cmNlU2Vzc2lvbjsgfQorCisg
ICAgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIGJvb2wgaXNQZXJzaXN0ZW50Tm90aWZpY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMLmlzRW1wdHkoKTsgfQor
CiAgICAgY29uc3QgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW4uZ2V0KCk7IH0KICAgICBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSB7IHJl
dHVybiBtX29yaWdpbi5nZXQoKTsgfQogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQoKSBj
b25zdCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLSAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZp
Y2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlkZW50aWZpZXI7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KQEAgLTY1LDE1ICs3
MSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBJUEM6OkNvbm5l
Y3Rpb24mKTsKIAotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2JvZHk7Ci0gICAg
U3RyaW5nIG1faWNvblVSTDsKLSAgICBTdHJpbmcgbV90YWc7Ci0gICAgU3RyaW5nIG1fbGFuZzsK
LSAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gbV9kaXI7CisgICAgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSBtX2RhdGE7CiAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwotICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7Ci0KICAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxJUEM6OkNvbm5l
Y3Rpb24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHAKaW5kZXggYjNhYzcyYjVmNmNiODE5ZmQ5YTJjMDc2YjBkNjkyNjFjYmU1
MTgwYS4uZmQxOTZkMzBmNDdlOGVjYzdkYjBmYzBjZGIyNzYzNzMzMGIzZTFiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMTg2LDExICsxODYsMTYgQEAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNhdGlvbihXZWJOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigp
OwotICAgIGlmICghY29ubmVjdGlvbikKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
aWYgKG5vdGlmaWNhdGlvbi0+aXNQZXJzaXN0ZW50Tm90aWZpY2F0aW9uKCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3Jl
Rm9yU2Vzc2lvbklEKG5vdGlmaWNhdGlvbi0+c2Vzc2lvbklEKCkpKQorICAgICAgICAgICAgZGF0
YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnByb2Nlc3NOb3RpZmljYXRpb25FdmVudChub3RpZmlj
YXRpb24tPmRhdGEoKSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljayk7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKIAotICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+
Y29yZU5vdGlmaWNhdGlvbklEKCkpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5v
dGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSwgMCk7CiB9CiAKIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2
NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQpAQCAtMjQyLDYgKzI0NywxNCBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJ
OjpBcnJheSogZ2xvYgogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBpZiAobm90aWZp
Y2F0aW9uLT5pc1BlcnNpc3RlbnROb3RpZmljYXRpb24oKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vz
c2lvbklEKG5vdGlmaWNhdGlvbi0+c2Vzc2lvbklEKCkpKQorICAgICAgICAgICAgICAgIGRhdGFT
dG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQobm90aWZpY2F0
aW9uLT5kYXRhKCksIE5vdGlmaWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2UpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcC5yZW1vdmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKICAgICAgICAgY2xv
c2VkTm90aWZpY2F0aW9ucy5hcHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGFjNDU4Y2JmY2YzZmIyNTcxYzZm
ODUwYTkzMjAwZmFlZjQ1NjAwODQuLjdiYmI1MGUxNDI3MjcwZWQwMjRjZDkwNjUyNmFjMmM0YjY0
MDY5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNzQsMTIgKzE3
NCwxNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24m
IG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGF1dG8gbWFwcGVkTm90aWZpY2F0
aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSk7
Ci0gICAgaWYgKCFtYXBwZWROb3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NF
UlQobWFwcGVkTm90aWZpY2F0aW9uID09ICZub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFzZW5k
Tm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5v
dGlmaWNhdGlvbiwgcGFnZSkpCisgICAgYXV0byBpZGVudGlmaWVyID0gbm90aWZpY2F0aW9uLmlk
ZW50aWZpZXIoKTsKKyAgICBhdXRvIG1hcHBlZE5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9u
SURNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghbWFwcGVkTm90aWZpY2F0aW9uKSB7Cisg
ICAgICAgIGF1dG8gcmVsYXRlZElkZW50aWZpZXIgPSBub3RpZmljYXRpb24ucmVsYXRlZE5vdGlm
aWNhdGlvbklkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFyZWxhdGVkSWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWRlbnRpZmllciA9ICpyZWxhdGVkSWRlbnRpZmll
cjsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUKG1hcHBlZE5vdGlmaWNhdGlvbiA9PSAmbm90
aWZpY2F0aW9uKTsKKworICAgIGlmICghc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6
Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKGlk
ZW50aWZpZXIpLCBub3RpZmljYXRpb24sIHBhZ2UpKQogICAgICAgICByZXR1cm47CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAtMTk0LDEyICsxOTksMTcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNh
dGlvbiYgbm90aWZpY2F0aW9uLAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZiBw
cm90ZWN0ZWROb3RpZmljYXRpb24geyBub3RpZmljYXRpb24gfTsKIAotICAgIGF1dG8gdGFrZW5O
b3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uLmlkZW50
aWZpZXIoKSk7Ci0gICAgaWYgKCF0YWtlbk5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuOwot
ICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKLQotICAgIHNl
bmROb3RpZmljYXRpb25NZXNzYWdlKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIo
KSksIG5vdGlmaWNhdGlvbiwgcGFnZSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gbm90aWZpY2F0
aW9uLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRha2VuTm90aWZpY2F0aW9uID0gbV9ub3RpZmlj
YXRpb25JRE1hcC50YWtlKGlkZW50aWZpZXIpOworICAgIGlmICghdGFrZW5Ob3RpZmljYXRpb24p
IHsKKyAgICAgICAgYXV0byByZWxhdGVkSWRlbnRpZmllciA9IG5vdGlmaWNhdGlvbi5yZWxhdGVk
Tm90aWZpY2F0aW9uSWRlbnRpZmllcigpOworICAgICAgICBpZiAoIXJlbGF0ZWRJZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZGVudGlmaWVyID0gKnJlbGF0ZWRJZGVu
dGlmaWVyOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQodGFrZW5Ob3RpZmljYXRpb24gPT0g
Jm5vdGlmaWNhdGlvbik7CisKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0aW9u
KGlkZW50aWZpZXIpLCBub3RpZmljYXRpb24sIHBhZ2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMWUxYTM5YmU3YzE0NjM3YTdkNjI5M2ZhYjI5MGNk
ODcxODUzZjhjMC4uNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5YWQwNTVhMDJiNzYyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjcsNiArMjY3LDExIEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZmly
ZVB1c2hFdmVudChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVOb3RpZmljYXRp
b25FdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBOb3RpZmljYXRpb25E
YXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5maXJlTm90aWZpY2F0aW9uRXZlbnQoaWRlbnRpZmllciwgV1RGTW92ZShkYXRh
KSwgZXZlbnRUeXBlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlv
blRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXgg
Zjg5NmIxYjBlYjQxN2M2YWNkYTQyMDViMjY0N2JiZDY4NWExZjFmMC4uNTg0MjgyYzEwODNlMTQ4
NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwMSw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlUHVz
aEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIGZpcmVOb3RpZmljYXRpb25FdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYmLCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25FdmVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgppbmRleCA2ZWYyN2VmYzJhM2ExZTRiNzJiOWY2YWU1NDQzN2I1MmRh
NjQ3NjNiLi5mZjQzMDdlNTk2NTdkOTUyMzM1NzBhNTk4MDJhZGQwOGMyN2I2ZTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMSw0ICsx
LDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAg
IEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+
IGRhdGEpIC0+IChib29sIHJlc3VsdCkKKyAgICBGaXJlTm90aWZpY2F0aW9uRXZlbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEgZGF0YSwgZW51bTpib29sIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50
VHlwZSB0eXBlKSAtPiAoYm9vbCByZXN1bHQpCiAKICAgICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMThkZGE3OTk1Y2FmNGM2
YTk1YjZmMjc5NjZiNmY5MWRmNWVmNDUwLi4xNDY3MzNiYmNmODIxNTliYTRlZjI1MzA2OGMwODNk
YThhNmJiYjdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBwZXJzaXN0ZW50IG5v
dGlmaWNhdGlvbiBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgor
CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1h
bGxvd2VkLmh0bWw6CisKIDIwMjItMDMtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFsgbWFjT1MgJiBXaW4gXSBmYXN0L3JlcGFpbnQvbGlzdC1pdGVtLWVxdWFs
LXN0eWxlLWNoYW5nZS1uby1yZXBhaW50Lmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0
aW9uLWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sCmluZGV4IGFkNGEwMDE1Njc5NWQyOTgyYTI3
NDBhMjQ2NmY1OWUzYmE3OTYzMDkuLjc2NmFiZmVlNTFjYTNhZDI0Y2VhODQ3OGYzODliZWFhZGE4
NmFkMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sCkBAIC00NSwx
MCArNDUsMTYgQEAgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgewogdmFy
IGdvdENsaWNrZWQgPSBmYWxzZTsKIHZhciBnb3RDbG9zZWQgPSBmYWxzZTsKIAotbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKK25h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBl
dmVudCA9PiB7CiAgICAgaWYgKGV2ZW50LmRhdGEgPT0gInNob3dGYWlsZWQiKSB7CiAgICAgICAg
IGZhaWxUaGVUZXN0KCJVbmV4cGVjdGVkbHkgcmVjZWl2ZWQgdGhlIGZhaWxlZC10by1zaG93IG1l
c3NhZ2UiKTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInNob3duIikgeworICAgICAg
ICAvLyBXZSBzaW11bGF0ZSBhIG5ldHdvcmsgcHJvY2VzcyBjcmFzaCBzbyB0aGF0IHdlIG1ha2Ug
c3VyZSB0aGF0IGEgbm90aWZpY2F0aW9uIGNsaWNrIGVuc3VyZXMgcmVzdGFydGluZyBhIHNlcnZp
Y2Ugd29ya2VyCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgYXdh
aXQgaW50ZXJuYWxzLnN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CisKICAgICAgICAgaWYgKHRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9ucygpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456114</attachid>
            <date>2022-03-30 05:21:45 -0700</date>
            <delta_ts>2022-03-30 11:41:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238498-20220330142136.patch</filename>
            <type>text/plain</type>
            <size>79227</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4MzRlYTFjZWIxYzE2
MGM2Njg1ZTFjNmJkOTk2MGI3NTgzMjljMy4uYTg4YWQwNmI0MjU4MzNiNWE0ZmE1MDA2ZGJkMGU1
N2NjZDNlM2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb24gaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVp
ZHNvbi4KKworICAgICAgICBCZWZvcmUgdGhlIHBhdGNoLCB3ZSB3ZXJlIGRpcmVjdGx5IGdvaW5n
IGZyb20gVUlQcm9jZXNzIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisgICAgICAgIFRoaXMg
d29ya3MgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIHJ1bm5pbmcgYnV0IGRvZXMgbm90IG90aGVy
d2lzZS4KKyAgICAgICAgVG8gbWFrZSBzdXJlIHdlIG5vdyBnbyB0byBOZXR3b3JrUHJvY2Vzcy4K
KyAgICAgICAgVG8gaW1wbGVtZW50IGh0dHBzOi8vbm90aWZpY2F0aW9ucy5zcGVjLndoYXR3Zy5v
cmcvI3BlcnNpc3RlbnQtbm90aWZpY2F0aW9uLAorICAgICAgICB3ZSBhZGQgYSBzZXJ2aWNlIHdv
cmtlciByZWdpc3RyYXRpb24gVVJMIHRvIE5vdGZpY2F0aW9uRGF0YS4KKyAgICAgICAgV2UgcmVt
b3ZlIHRoZSBub3RmaWNhdGlvbiBoYW5kbGluZyBnb2luZyB0aHJvdWdoIE5vdGlmaWNhdGlvbkV2
ZW50IGFuZCBtYWtlIGl0IERvY3VtZW50IHNwZWNpZmljLgorICAgICAgICBJbnN0ZWFkLCB3ZSBn
byB0aHJvdWdoIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS4KKyAgICAgICAgTWFrZSBzdXJlIFNX
U2VydmVyIHRyZWF0cyBub3RpZmljYXRpb24gZXZlbnRzIGFzIGZ1bmN0aW9uYWwgZXZlbnRzLgor
ICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdC4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6aXNvbGF0
ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZSk6CisgICAgICAgICog
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50Lmg6CisgICAgICAgICogTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50VHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZl
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmZpcmVOb3Rp
ZmljYXRpb25FdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6
cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RnVuY3Rp
b25hbEV2ZW50TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnN0YXJ0UHVzaEV2ZW50TW9uaXRvcmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3Jp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RvcFB1c2hFdmVu
dE1vbml0b3JpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZU5vdGlmaWNhdGlvbkV2
ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cHJvY2Vzc1B1c2hNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudEZ1bmN0aW9uYWxFdmVudENvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZUlmUG9zc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVu
dENvdW50ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjppbmNyZW1l
bnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpzaG91bGRDb250aW51ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldv
cmtlcjo6aW5jcmVtZW50UHVzaEV2ZW50Q291bnRlcik6IERlbGV0ZWQuCisKIDIwMjItMDMtMjgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlZpZGVvIGlzIG1pc2xlYWRpbmcgYXMgaXQgaXMgYWN0dWFsbHkgcmVm
ZXJyaW5nIHRvIGNhbWVyYSBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwMjE5MjEyNWQ3NTkxZTM0MGM2
NjE4YjZiM2VjOWMwZWIxNGMyNmMuLjc1MjIxY2NhOTJjMTgzY2ZiMWZmMjljMDhlNGRlMTRiN2Mx
YTZmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDMtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBwZXJzaXN0ZW50IG5v
dGlmaWNhdGlvbiBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgor
CisgICAgICAgIFdoZW4gcmVjZWl2aW5nIGFuIHVwZGF0ZSBmb3IgYSBub3RpZmljYXRpb24sIGNo
ZWNrIGlmIHRoZSBub3RpZmljYXRpb24gaXMgdGllZCB0byBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lz
dHJhdGlvbi4KKyAgICAgICAgSWYgc28sIGdvIHRvIG5ldHdvcmsgcHJvY2VzcyB0byBmaXJlIGEg
ZnVuY3Rpb25hbCBldmVudCwgYXMgcGVyIGh0dHBzOi8vbm90aWZpY2F0aW9ucy5zcGVjLndoYXR3
Zy5vcmcvI2FjdGl2YXRpbmctYS1ub3RpZmljYXRpb24KKyAgICAgICAgYW5kIGh0dHBzOi8vbm90
aWZpY2F0aW9ucy5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItZmlyZS1hLXNlcnZpY2Utd29ya2Vy
LW5vdGlmaWNhdGlvbi1ldmVudOKRoAorICAgICAgICBVSVByb2Nlc3Mgc2VuZHMgdGhlIGNvcnJl
c3BvbmRpbmcgTm90ZmljYXRpb25EYXRhIHRvIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICBOZXR3
b3JrUHJvY2VzcyBnZXRzIHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24sIHJ1bnMgdGhl
IHNlcnZpY2Ugd29ya2VyIGFzIG5lZWRlZCBhbmQgZmlyZXMgdGhlIGZ1bmN0aW9uYWwgZXZlbnQu
CisgICAgICAgIEFkZCBJUEMgcGx1bWJpbmcgY29kZSB0byBzdXBwb3J0IHRoaXMgZmxvdy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NOb3RpZmljYXRpb25FdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVO
b3RpZmljYXRpb25FdmVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmlj
YXRpb246OnRpdGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpi
b2R5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjppY29uVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjp0YWcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmxhbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb246OmRpciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbjo6Y29yZU5vdGlmaWNhdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uOjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b246OmlzUGVyc2lzdGVudE5vdGlmaWNhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbjo6bm90aWZpY2F0aW9uSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmRpc3BhdGNoRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIw
MjItMDMtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvIGlzIG1pc2xlYWRpbmcgYXMgaXQgaXMgYWN0
dWFsbHkgcmVmZXJyaW5nIHRvIGNhbWVyYSBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAz
ZTA3NTJkMzNkNTkxZGUwYWY5MGE0NjQ4NzMzZWYyZGVkNWViNWI5Li40MDVmNjc0ZjBiMzg2YWUx
YjE3YzIxZGVmZDNmMzJlNjRiZTEzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5MSw2ICsy
OTEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaAogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGlyZWN0aW9uLmgKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRXZlbnRUeXBlLmgKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvbi5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggODdiMmUzYzk0ZTBiNzVkZDdiYzUwNjk1
Mjg0MjVhNzBiZTc3ZmY0Ny4uYTY5N2FmMzlkYmQ3Y2JhOTlhOTI2MWU3ZjM4YWE4NjExNTk1ZDQx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKQEAgLTYxLDYgKzYxLDE1IEBAIFJlZjxOb3RpZmljYXRpb24+IE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYm
CiAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKIH0KIAorUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZp
Y2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTm90aWZpY2F0
aW9uRGF0YSYmIGRhdGEpCit7CisgICAgT3B0aW9ucyBvcHRpb25zIHsgZGF0YS5kaXJlY3Rpb24s
IFdURk1vdmUoZGF0YS5sYW5ndWFnZSksIFdURk1vdmUoZGF0YS5ib2R5KSwgV1RGTW92ZShkYXRh
LnRhZyksIFdURk1vdmUoZGF0YS5pY29uVVJMKSB9OworICAgIGF1dG8gbm90aWZpY2F0aW9uID0g
YWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oY29udGV4dCwgV1RGTW92ZShkYXRhLnRpdGxlKSwg
V1RGTW92ZShvcHRpb25zKSkpOworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgbm90aWZpY2F0aW9uLT5tX3JlbGF0ZWROb3RpZmljYXRpb25JZGVudGlmaWVyID0gZGF0
YS5ub3RpZmljYXRpb25JRDsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uOworfQorCiBOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJp
bmcmJiB0aXRsZSwgT3B0aW9ucyYmIG9wdGlvbnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNv
bnRleHQpCiAgICAgLCBtX3RpdGxlKFdURk1vdmUodGl0bGUpLmlzb2xhdGVkQ29weSgpKQpAQCAt
MTMyLDYgKzE0MSwxMSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvd1Nvb24oKQogICAgIH0pOwog
fQogCit2b2lkIE5vdGlmaWNhdGlvbjo6bWFya0FzU2hvd24oKQoreworICAgIG1fc3RhdGUgPSBT
aG93aW5nOworfQorCiB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiB7CiAgICAgLy8gcHJldmVu
dCBkb3VibGUtc2hvd2luZwpAQCAtMjI0LDM3ICsyMzgsMTggQEAgdm9pZCBOb3RpZmljYXRpb246
OmRpc3BhdGNoU2hvd0V2ZW50KCkKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZl
bnQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzd2l0Y2ggKG1fbm90
aWZpY2F0aW9uU291cmNlKSB7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50
OgotICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsKLSAgICAgICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgICAgICB9KTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6Ci0gICAgICAg
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZW5zdXJlT25Db250ZXh0VGhyZWFkKG1fY29udGV4
dElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYg
Y29udGV4dCkgewotICAgICAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5wb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2
ZW50VHlwZTo6Q2xpY2ssICp0aGlzLCB7IH0pOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvblNvdXJjZSA9PSBOb3RpZmljYXRpb25T
b3VyY2U6OkRvY3VtZW50KTsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsKKyAgICAgICAgV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dlZDsKKyAgICAgICAgZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9KTsKIH0KIAogdm9pZCBO
b3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLQotICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKLSAgICBjYXNl
IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ6Ci0gICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25T
b3VyY2U6OlNlcnZpY2VXb3JrZXI6Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6
ZW5zdXJlT25Db250ZXh0VGhyZWFkKG1fY29udGV4dElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAgZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wb3N0VGFza1RvRmlyZU5v
dGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2UsICp0aGlzLCB7IH0p
OwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCisgICAgQVNTRVJUKG1fbm90
aWZpY2F0aW9uU291cmNlID09IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQpOworICAgIHF1
ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9u
LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBmaW5hbGl6ZSgpOwogfQogCkBA
IC0zMjQsOSArMzE5LDE1IEBAIGJvb2wgTm90aWZpY2F0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIAogTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRpb246OmRhdGEoKSBj
b25zdAogewotICAgIGF1dG8gc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZXNzaW9uSUQoKTsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBhdXRvIHNlc3Npb25JRCA9IGNvbnRleHQuc2Vzc2lvbklEKCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoc2Vzc2lvbklEKTsKIAorICAgIFVSTCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
VVJMOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoaXM8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blVSTCA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkucmVnaXN0
cmF0aW9uKCkuZGF0YSgpLnNjb3BlVVJMOworI2VuZGlmCiAgICAgcmV0dXJuIHsKICAgICAgICAg
bV90aXRsZS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9ib2R5Lmlzb2xhdGVkQ29weSgpLApA
QCAtMzM1LDYgKzMzNiw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhKCkg
Y29uc3QKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2RpcmVjdGlvbiwKICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmlzb2xh
dGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwp
Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCiAgICAgICAgICpzZXNzaW9u
SUQsCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaAppbmRleCA0YWE5YjM0MWZjMWM0MTNmNzAzNjUyOTk2ZmE2NzAzYjVh
MDAyYTNmLi41ZWRkMzZiMzc2NTAwZTMwNjI5YWIyZGZhYmIzZjZjMGY3MTUzNTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
CkBAIC02NSw3ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGljb247CiAgICAgfTsK
ICAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBTdHJpbmcmJiB0aXRsZSwgT3B0aW9ucyYmKTsKLSAgICAKKyAgICBzdGF0aWMgUmVmPE5v
dGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBOb3RpZmljYXRpb25E
YXRhJiYpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAK
ICAgICB2b2lkIHNob3coKTsKQEAgLTk5LDYgKzEwMCwxMSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6ZGVyZWY7CiAKKyAgICB2b2lkIG1hcmtBc1Nob3duKCk7CisgICAgdm9pZCBzaG93U29vbigp
OworCisgICAgc3RkOjpvcHRpb25hbDxVVUlEPiByZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZE5vdGlmaWNhdGlvbklkZW50aWZpZXI7IH0KKwog
cHJpdmF0ZToKICAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFN0cmlu
ZyYmIHRpdGxlLCBPcHRpb25zJiYpOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRp
b24mKTsKQEAgLTEwOCw4ICsxMTQsNiBAQCBwcml2YXRlOgogICAgIE5vdGlmaWNhdGlvbkNsaWVu
dCogY2xpZW50RnJvbUNvbnRleHQoKTsKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFy
Z2V0SW50ZXJmYWNlVHlwZTsgfQogCi0gICAgdm9pZCBzaG93U29vbigpOwotCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKQEAgLTEzOCw2
ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgTm90aWZpY2F0aW9uU291cmNlIG1fbm90
aWZpY2F0aW9uU291cmNlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIG1f
Y29udGV4dElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxVVUlEPiBtX3JlbGF0ZWROb3Rp
ZmljYXRpb25JZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkRhdGEuY3BwCmluZGV4IDYwNDcwODM1NTk1MDYyNTU2MGQwMDA5MmY5MmVmZTRmM2Q1NWI1NmQu
LmJmZmIzOGUwZTQzMWUxYTEyZjMxOGU3NGYzYWIyZGMwMDJlYWZjOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0
YS5jcHAKQEAgLTI4LDQgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTm90aWZp
Y2F0aW9uRGF0YSBOb3RpZmljYXRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCit7Cisg
ICAgcmV0dXJuIHsgdGl0bGUuaXNvbGF0ZWRDb3B5KCksIGJvZHkuaXNvbGF0ZWRDb3B5KCksIGlj
b25VUkwuaXNvbGF0ZWRDb3B5KCksIHRhZy5pc29sYXRlZENvcHkoKSwgbGFuZ3VhZ2UuaXNvbGF0
ZWRDb3B5KCksIGRpcmVjdGlvbiwgb3JpZ2luU3RyaW5nLmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uVVJMLmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25JRCwgc291
cmNlU2Vzc2lvbiB9OworfQorCitOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbkRhdGE6Omlz
b2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgV1RGTW92ZSh0aXRsZSkuaXNvbGF0ZWRD
b3B5KCksIFdURk1vdmUoYm9keSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaWNvblVSTCkuaXNv
bGF0ZWRDb3B5KCksIFdURk1vdmUodGFnKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShsYW5ndWFn
ZSkuaXNvbGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwgV1RGTW92ZShvcmlnaW5TdHJpbmcpLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLmlzb2xhdGVk
Q29weSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiB9OworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCBiY2RkZTNjMDU4NzY5MGUzNGY1ZTQxZjQx
NjAzMjg1N2Y4MWMwMzE5Li4zMjIwOTgzM2VkYTIwNDE2NGJkNTYxMTc5NmQ0MDBmN2Y3YTI3Yzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFs
PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
MzgsNiArMzksOSBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YSB7CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiAKKyAgICBOb3RpZmljYXRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICY7CisgICAgTm90aWZpY2F0aW9uRGF0YSBpc29sYXRlZENvcHkoKSAmJjsKKwogICAgIFN0cmlu
ZyB0aXRsZTsKICAgICBTdHJpbmcgYm9keTsKICAgICBTdHJpbmcgaWNvblVSTDsKQEAgLTQ1LDYg
KzQ5LDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFN0cmluZyBsYW5ndWFnZTsK
ICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIFN0cmlu
ZyBvcmlnaW5TdHJpbmc7CisgICAgVVJMIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkw7CiAg
ICAgVVVJRCBub3RpZmljYXRpb25JRDsKICAgICBQQUw6OlNlc3Npb25JRCBzb3VyY2VTZXNzaW9u
OwogfTsKQEAgLTUyLDcgKzU3LDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTm90aWZpY2F0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCB0aXRsZSA8PCBib2R5IDw8IGljb25V
UkwgPDwgdGFnIDw8IGxhbmd1YWdlIDw8IGRpcmVjdGlvbiA8PCBvcmlnaW5TdHJpbmcgPDwgbm90
aWZpY2F0aW9uSUQgPDwgc291cmNlU2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJv
ZHkgPDwgaWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0
cmluZyA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIDw8IG5vdGlmaWNhdGlvbklEIDw8
IHNvdXJjZVNlc3Npb247CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC05Myw2ICs5
OCwxMSBAQCBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IE5vdGlmaWNhdGlvbkRhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3JpZ2luU3RyaW5nKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25VUkw7CisgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uVVJMOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gbm90aWZp
Y2F0aW9uSUQ7CiAgICAgZGVjb2RlciA+PiBub3RpZmljYXRpb25JRDsKICAgICBpZiAoIW5vdGlm
aWNhdGlvbklEKQpAQCAtMTExLDYgKzEyMSw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9u
RGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IFdURk1vdmUoKmxhbmd1YWdlKSwKICAgICAgICAgV1RGTW92ZSgqZGlyZWN0aW9uKSwKICAgICAg
ICAgV1RGTW92ZSgqb3JpZ2luU3RyaW5nKSwKKyAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblVSTCksCiAgICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKICAg
ICAgICAgV1RGTW92ZSgqc291cmNlU2Vzc2lvbiksCiAgICAgfSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApp
bmRleCBiMjFjMmVkODRhYzU0MDA4MDU0MTAyMzg3MzFiY2RkMmMwYjBjMWZiLi5hZDMxNTFkN2Y0
MjY0ZDgxZTRhNjkwN2JlYWI0M2I0OWI3YTQzZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApAQCAtMzAs
MTQgKzMwLDEwIEBACiAjaW5jbHVkZSAiRXh0ZW5kYWJsZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0
ZW5kYWJsZUV2ZW50SW5pdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0g
Y2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDogYm9vbCB7Ci0gICAgQ2xpY2ssCi0gICAgQ2xv
c2UsCi19OwotCiBzdHJ1Y3QgTm90aWZpY2F0aW9uRXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50
SW5pdCB7CiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwogICAgIFN0cmlu
ZyBhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uRXZlbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMwMjJjN2I4N2Rm
Y2ZlYmU2YjMwMWRiMGRlMzE3OGFlZDdiNTA4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudFR5cGUuaApAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
RW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTm90aWZp
Y2F0aW9uRXZlbnRUeXBlIDogYm9vbCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2
ZW50VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywK
KyAgICAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZQorICAgID47Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNWFiOTMyMWI1MmFiZTJkOThhYzMwMjJiYWNjYTI4YmM2NWJlZTNlZi4uMzY5
ZTk1ZWQ2ZDI2Mjg2M2RiOTQ4ZTMxZWQzMmFmYzU4MTljOWJlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3NCw2ICsxMDc0
LDcgQEAKIAkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5u
ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTIy
M0MzMjYwMzU2N0MwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDExMkI1NDMxRjlGOUNB
MDAwRTY3ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1M0YxRjlGOUM5QjAwRTY3ODc1IC8q
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxMTRGRTMyMjVCRUJEMTkwMDlEOUYyMCAvKiBSVENSdGNw
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExNEZFMkYyNUJFQkQxODAwOUQ5RjIwIC8qIFJUQ1J0Y3BQYXJhbWV0ZXJzLmggKi87IH07
CisJCTQxMjAxRjM3MjdGMkY3NDkwMEQ1NkNDMiAvKiBOb3RpZmljYXRpb25FdmVudFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjAxRjM2MjdG
MkY3NDYwMEQ1NkNDMiAvKiBOb3RpZmljYXRpb25FdmVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NG
Q0EgLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFt
ZXdvcmsgKi87IH07CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
ICovOyB9OwogCQk0MTI4MjdCMjI3RTRBQzNDMDA1QURERTIgLyogVmlkZW9GcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhD
NDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODU4NCw2ICs4NTg1LDcgQEAKIAkJNDExODlFRjcxQUQ4MjMy
ODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyMDFGMzYyN0YyRjc0NjAwRDU2Q0My
IC8qIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25F
dmVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFMjQyNTdBMkZC
QjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNGcmFtZVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTI2
MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTRnJhbWVVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMjA5RTkxMjE2RDU5M0MwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDQ2VydGlmaWNhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjA5NzYsNiArMjA5NzgsNyBAQAogCQkJCTUxMEUyRjJDMjc2QkUwQzMw
MDgwOTMzMyAvKiBOb3RpZmljYXRpb25FdmVudC5jcHAgKi8sCiAJCQkJNTEwRTJGMjQyNzZCQjRF
QzAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50LmggKi8sCiAJCQkJNTEwRTJGMjIyNzZCQTlF
ODAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50LmlkbCAqLywKKwkJCQk0MTIwMUYzNjI3RjJG
NzQ2MDBENTZDQzIgLyogTm90aWZpY2F0aW9uRXZlbnRUeXBlLmggKi8sCiAJCQkJNTEwRTJGMjYy
NzZCQzE5RjAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbk9wdGlvbnMuaCAqLywKIAkJCQk1MUUzQUYw
QTI3NkIwNUI3MDA5QjQyOUQgLyogTm90aWZpY2F0aW9uT3B0aW9ucy5pZGwgKi8sCiAJCQkJN0ND
MkRERjgxRUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCAqLywKQEAg
LTM2NTk1LDYgKzM2NTk4LDcgQEAKIAkJCQk1MTEyM0UyRjI3Njk0MENBMDBGOUQ0MUIgLyogTm90
aWZpY2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDMkRFMDMxRUNBMDRBNTAwMjdC
Nzc0IC8qIE5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJG
MjUyNzZCQjRFQzAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTIwMUYzNzI3RjJGNzQ5MDBENTZDQzIgLyogTm90aWZpY2F0aW9uRXZlbnRUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyNzI3NkJDMTlGMDA4MDkzMzMgLyogTm90aWZpY2F0
aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDMkRERkIxRUM5NDE1QTAwMjdCNzc0
IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRkU2REZB
MTUwMDRDMkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAyNWFhZjY3ODU5NGQyOTYwNzNh
MzY5ZGQ2YWRlZGY3ODIxMjZlYjYwLi43YTU3MjI3YTEwNGQ1ZWE3ZWYzZTUwNzhkYzdmNDEyZDZi
NmIwNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMTk5LDI5ICsxOTksNiBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVm
ZmVyJiYgc2NyaXB0LCBIYXNoTQogICAgIH0KIH0KIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpCi12b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3Rp
ZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pCi17Ci0gICAgdGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmljYXRp
b24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29weSgp
XShhdXRvJiBzY29wZSkgewotICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJlZiB7
IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsKLSAg
ICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOwotICAgICAgICAgICAgc3dpdGNoIChldmVu
dFR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljazoK
LSAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xp
Y2tFdmVudDsKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5yZWNvcmRVc2VyR2VzdHVyZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGU6OkNsb3NlOgotICAgICAgICAg
ICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbG9zZUV2ZW50Owot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRv
IGV2ZW50ID0gTm90aWZpY2F0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHByb3RlY3RlZE5v
dGlmaWNhdGlvbi5wdHIoKSwgYWN0aW9uLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVz
KTsKLSAgICAgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUp
LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotICAgICAgICB9KTsKLSAgICB9LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZTo6cmVjb3JkVXNlckdlc3R1cmUoKQogewogICAgIG1faXNQcm9jZXNzaW5nVXNlckdlc3R1
cmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDk1MzgwYzM4YWU5NGVjNTk3NTllOGI0
ZWQ3MmIxNmZiZTM4NmJkMDYuLjJmMzUyOTE0MzBkYjBjZDA3Y2FlOTRlYTJkYWRhZDJlZmYwNmFj
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTgxLDEwICs4MSw2IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFBhZ2UqIHNlcnZpY2VXb3JrZXJQYWdlKCk7CiAKLSNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OX0VWRU5UKQotICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25F
dmVudChOb3RpZmljYXRpb25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYg
YWN0aW9uKTsKLSNlbmRpZgotCiAgICAgYm9vbCBoYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50OyB9CiAgICAgdm9pZCBz
ZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNQZW5kaW5nU2ls
ZW50UHVzaEV2ZW50ID0gdmFsdWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlMjYx
ODJhZTkyODNkMjgxZjNhYzQxYzkwZGNiZGEyMjU0MTdlOGRhLi44MWI0NDI4Y2IyMDNlNDBkMjhl
YmY5OWQ0ZjA1ZDQ2OWRhZjEzYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTI4LDYg
KzEyOCwxNCBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaQogICAgIHNlcnZpY2VXb3JrZXItPmZp
cmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRh
KSwgV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKSk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6ZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIE5vdGlmaWNhdGlvbkRhdGEmJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZl
bnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAg
IGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAg
aWYgKCFzZXJ2aWNlV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2Vy
LT5maXJlTm90aWZpY2F0aW9uRXZlbnQoV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBlLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7Cit9CiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmlu
ZGV4IGZlZTdjMTVkMmI4N2RjNDYyNWZiNGU3ZDFjODExODljMmI0ZGU3YTUuLjlhMjNjNWFkMDM2
NjgwZTlkOGVhODgzYjZhMDk2YzViNGE4NTk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTk1
LDYgKzk1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBu
ZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYm
IG9sZFN1YnNjcmlwdGlvbkRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZU5vdGlm
aWNhdGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBOb3RpZmljYXRpb25EYXRhJiYs
IE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9y
dGVkU2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGI1Y2M4NmFjZDRi
MzYyYWZlNWE2Yjc2OTBkM2Q2MmI1ODg4MzZlZmYuLjlmODJlZWQ2MzEyODllNTBjYzdiZGUxOWJi
ZmFkNDM5NTgzZmY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zNiw2ICsz
Niw4IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRl
Z3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJh
dGVnaWVzLmgiCiAjaW5jbHVkZSAiUHVzaEV2ZW50LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlw
dGlvbi5oIgpAQCAtMjUwLDggKzI1Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVl
dWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAKIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2Ny
aXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJz
Y3JpcHRpb25EYXRhKQogewotICAgIFJlZiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUsIG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG5ld1N1YnNjcmlw
dGlvbkRhdGEpLCBvbGRTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShvbGRTdWJzY3JpcHRpb25E
YXRhKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKKyAgICBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSA9IFJlZiB7IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB9LCBuZXdT
dWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgb2xkU3Vic2Ny
aXB0aW9uRGF0YSA9IFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmlyaW5nIGV2ZW50IGZv
ciB3b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgICAgICBSZWZQdHI8UHVzaFN1YnNjcmlwdGlv
bj4gbmV3U3Vic2NyaXB0aW9uOwpAQCAtMjc1LDYgKzI3Nyw0NSBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6
Om9wdGlvbgogICAgIH0pOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQo
Tm90aWZpY2F0aW9uRGF0YSYmIGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xv
YmFsU2NvcGUoKSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1
ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGV2ZW50VHlwZSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZU5vdGlmaWNh
dGlvbkV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICAg
ICAgYXV0byBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb246OmNyZWF0ZShzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuZ2V0KCksIFdURk1vdmUoZGF0YSkpOworICAgICAgICBBdG9tU3RyaW5nIGV2
ZW50TmFtZTsKKyAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHsKKyAgICAgICAgY2FzZSBOb3Rp
ZmljYXRpb25FdmVudFR5cGU6OkNsaWNrOgorICAgICAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLm5vdGlmaWNhdGlvbmNsaWNrRXZlbnQ7CisgICAgICAgICAgICBub3RpZmljYXRpb24t
Pm1hcmtBc1Nob3duKCk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnJl
Y29yZFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb3Rp
ZmljYXRpb25FdmVudFR5cGU6OkNsb3NlOgorICAgICAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLm5vdGlmaWNhdGlvbmNsb3NlRXZlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uRXZlbnQgPSBOb3RpZmljYXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZSwgbm90aWZpY2F0aW9uLnB0cigpLCBlbXB0eVN0cmluZygpLCBF
eHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdvcmtlckds
b2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KG5vdGlmaWNhdGlvbkV2ZW50KTsKKworICAgICAgICBu
b3RpZmljYXRpb25FdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVk
KFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGJv
b2wgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRl
bmRMaWZldGltZVByb21pc2VzKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1
cygpID09IERPTVByb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGKCFzdWNjZXNzLCBTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQgZmFpbGVkIHRvIHByb2Nlc3Mgbm90aWZpY2F0aW9u
IGV2ZW50Iik7CisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisjZW5kaWYKKwogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEV2
YWx1YXRpbmdTY3JpcHQoKQogewogICAgIEFTU0VSVChnbG9iYWxTY29wZSgpLT5pc0NvbnRleHRU
aHJlYWQoKSk7CkBAIC0zMTEsOSArMzUyLDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpz
dGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCkKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKCkK
K3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRGdW5jdGlvbmFsRXZlbnRNb25pdG9yaW5n
KCkKIHsKLSAgICBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgPSB0cnVlOworICAgIG1faXNIYW5kbGlu
Z0Z1bmN0aW9uYWxFdmVudCA9IHRydWU7CiAgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOwogfQog
CkBAIC0zMzksNyArMzgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0
QmVhdFRpbWVyKCkKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJl
ZCgpCiB7CiAgICAgaWYgKCFtX29uZ29pbmdIZWFydEJlYXRDaGVjaykgewotICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0
aW5nIHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHx8
IG1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgfHwgbV9tZXNzYWdlRXZlbnRDb3Vu
dCkKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9
PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5k
bGluZ0Z1bmN0aW9uYWxFdmVudCB8fCBtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50
IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCiAgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVy
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXgg
NzU2NmI0ZDRhOWQxM2M4MGUwODM2Mjk3MjY2NzdiZTIyNjkzOTJiZi4uNTQwMTIyY2ZjMWJmMjIw
OGEwZDZjNmIwZGEzNzExMzcyNDhkMTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAt
MjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50VHlwZS5oIgog
I2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiBzdHJ1Y3Qg
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIAogY2xh
c3MgU2VydmljZVdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyVGhyZWFkLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0
aW9uOjpFYWdlcj4gewogcHVibGljOgpAQCAtNzEsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0Zp
cmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2Ny
aXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJz
Y3JpcHRpb25EYXRhKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQorICAgIHZvaWQg
cXVldWVUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYmLCBOb3Rp
ZmljYXRpb25FdmVudFR5cGUsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCiAKICAg
ICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
am9iRGF0YUlkZW50aWZpZXI7IH0KQEAgLTc4LDggKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CiAgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1v
bml0b3JpbmcoKSB7IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSBmYWxzZTsgfQotICAgIHZvaWQg
c3RhcnRQdXNoRXZlbnRNb25pdG9yaW5nKCk7Ci0gICAgdm9pZCBzdG9wUHVzaEV2ZW50TW9uaXRv
cmluZygpIHsgbV9pc0hhbmRsaW5nUHVzaEV2ZW50ID0gZmFsc2U7IH0KKyAgICB2b2lkIHN0YXJ0
RnVuY3Rpb25hbEV2ZW50TW9uaXRvcmluZygpOworICAgIHZvaWQgc3RvcEZ1bmN0aW9uYWxFdmVu
dE1vbml0b3JpbmcoKSB7IG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxFdmVudCA9IGZhbHNlOyB9CiAK
IHByb3RlY3RlZDoKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwpAQCAtMTA5LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKICAgICBi
b29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0hhbmRs
aW5nUHVzaEV2ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNIYW5kbGluZ0Z1bmN0aW9uYWxF
dmVudCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnRDb3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21lc3NhZ2VFdmVudENvdW50IHsgMCB9Owog
ICAgIGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBTdGFydGluZywgSW5zdGFsbGluZywgQWN0aXZh
dGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggOGEyMTk0
MTgzM2JiYThhMGRhNjA0OGMzYmI3NmU4NjAwNTFkNGQ2Zi4uMTIxMmQ1MTM0MjA5ZmFkMmE0Mzk0
NGIxNzUzMzczY2ZmZTA1NmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCkBAIC05Miw4ICs5Miw4IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eSgpCiAgICAgQVNTRVJUKGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
aWVzKCkuY29udGFpbnModGhpcykpOwogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVz
KCkucmVtb3ZlKHRoaXMpOwogCi0gICAgYXV0byBwdXNoVGFza3MgPSBXVEZNb3ZlKG1fb25nb2lu
Z1B1c2hUYXNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHB1c2hUYXNrcy52YWx1ZXMo
KSkKKyAgICBhdXRvIGZ1bmN0aW9uYWxFdmVudFRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdGdW5j
dGlvbmFsRXZlbnRUYXNrcyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGZ1bmN0aW9uYWxF
dmVudFRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKQEAgLTI4
MywyNCArMjgzLDI0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAKIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7
Ci0gICAgaWYgKG1fb25nb2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHRocmVhZCgp
LnN0YXJ0UHVzaEV2ZW50TW9uaXRvcmluZygpOworICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFs
RXZlbnRUYXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2
ZW50TW9uaXRvcmluZygpOwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gKyttX3B1c2hUYXNrc0Nv
dW50ZXI7Ci0gICAgQVNTRVJUKCFtX29uZ29pbmdQdXNoVGFza3MuY29udGFpbnMoaWRlbnRpZmll
cikpOwotICAgIG1fb25nb2luZ1B1c2hUYXNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIGF1dG8gaWRlbnRpZmllciA9ICsrbV9mdW5jdGlvbmFsRXZlbnRUYXNrc0Nv
dW50ZXI7CisgICAgQVNTRVJUKCFtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5jb250YWlu
cyhpZGVudGlmaWVyKSk7CisgICAgbV9vbmdvaW5nRnVuY3Rpb25hbEV2ZW50VGFza3MuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBib29sIGlzUG9zdGVkID0gcG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXShhdXRv
JikgbXV0YWJsZSB7CiAgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChX
VEZNb3ZlKGRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGlkZW50aWZpZXJdKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBpZGVudGlmaWVyLCByZXN1bHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX29uZ29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRh
c2tzLnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fb25nb2luZ1B1c2hUYXNrcy5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIHRocmVhZCgpLnN0b3BQdXNoRXZlbnRNb25pdG9yaW5nKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgdGhyZWFkKCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0
b3JpbmcoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICBpZiAoIWlzUG9zdGVkKQotICAgICAgICBtX29uZ29p
bmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CisgICAgICAgIG1fb25nb2luZ0Z1
bmN0aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikoZmFsc2UpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChz
dGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEs
IHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0
YSkKQEAgLTMxMSw2ICszMTEsMzQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZp
cmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXMKICAgICB9KTsK
IH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVOb3RpZmljYXRpb25FdmVu
dChOb3RpZmljYXRpb25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OX0VWRU5UKQorICAgIGlmIChtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRU
YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RnVuY3Rpb25hbEV2ZW50TW9u
aXRvcmluZygpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gKyttX2Z1bmN0aW9uYWxFdmVudFRh
c2tzQ291bnRlcjsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRUYXNrcy5h
ZGQoaWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGJvb2wgaXNQb3N0ZWQgPSBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwgZGF0YSA9IFdURk1vdmUoZGF0YSku
aXNvbGF0ZWRDb3B5KCksIGV2ZW50VHlwZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJl
YWQoKS5xdWV1ZVRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChXVEZNb3ZlKGRhdGEpLCBldmVu
dFR5cGUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRl
bnRpZmllcl0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50
aWZpZXIsIHJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLnRha2UoaWRlbnRpZmllcikpCisg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYg
KG1fb25nb2luZ0Z1bmN0aW9uYWxFdmVudFRhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgdGhyZWFkKCkuc3RvcEZ1bmN0aW9uYWxFdmVudE1vbml0b3JpbmcoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKKyAgICBpZiAoIWlzUG9zdGVkKQorICAgICAgICBtX29uZ29pbmdGdW5jdGlvbmFsRXZlbnRU
YXNrcy50YWtlKGlkZW50aWZpZXIpKGZhbHNlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOworICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOworICAgIGNhbGxiYWNrKGZhbHNlKTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGU1
Y2I1YzFkZDE0NWIyODE5NWNmODg1NWY4ZjQzZGI2MjllZGMxZGUuLmZmMTMwYjNkYjY2NTQ0OTdj
MzZiMTg3NTA5Yjk0M2VkMDQ3MDc4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50
KCk7CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGZpcmVQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0
YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25E
YXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpOworICAgIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2
ZW50KE5vdGlmaWNhdGlvbkRhdGEmJiwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2so
U2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3Jp
cHRzKTsKIApAQCAtMTE4LDggKzExOSw4IEBAIHByaXZhdGU6CiAKICAgICBTZXJ2aWNlV29ya2Vy
SW5zcGVjdG9yUHJveHkgbV9pbnNwZWN0b3JQcm94eTsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXI+LCBSZWY8U2Vydmlj
ZVdvcmtlckZldGNoOjpDbGllbnQ+PiBtX29uZ29pbmdGZXRjaFRhc2tzOwotICAgIHVpbnQ2NF90
IG1fcHVzaFRhc2tzQ291bnRlciB7IDAgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPj4gbV9vbmdvaW5nUHVzaFRhc2tzOworICAgIHVpbnQ2NF90
IG1fZnVuY3Rpb25hbEV2ZW50VGFza3NDb3VudGVyIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+PiBtX29uZ29pbmdGdW5jdGlvbmFsRXZl
bnRUYXNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBmNjExMDYxMTZh
NGJmNjc1MjY0NGEyNGVhZTE5ZjU1YjRhYTlmYTM3Li5kNjNhZDBjNGUyN2IxNGIwNGZlMDQ2ZmM5
YzMyNjY5ZjMyYjZiY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRp
b25TdG9yZS5oIgogI2luY2x1ZGUgIlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJTV1NlcnZl
ckpvYlF1ZXVlLmgiCkBAIC0xMDQ5LDcgKzEwNTAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
UwogICAgICAgICAgICAgaWYgKHJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShjbGll
bnRSZWdpc3RyYWJsZURvbWFpbikgPT0gU2hvdWxkRGVsYXlSZW1vdmFsOjpZZXMpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5m
aW5kKGNsaWVudE9yaWdpbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1f
Y2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5kKCkpOwotICAgICAgICAgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9p
c1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5
IDogZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgICAgIGl0ZXJhdG9y
LT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1By
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDog
ZGVmYXVsdEZ1bmN0aW9uYWxFdmVudER1cmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKQEAgLTEzMDMsMTUgKzEzMDQsMTUgQEAgdm9pZCBTV1NlcnZlcjo6
cHJvY2Vzc1B1c2hNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRhdGEs
IFVSTCYmIHIKIAogICAgICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdv
cmtlci0+aWRlbnRpZmllcigpOwogCi0gICAgICAgICAgICB3b3JrZXItPmluY3JlbWVudFB1c2hF
dmVudENvdW50ZXIoKTsKKyAgICAgICAgICAgIHdvcmtlci0+aW5jcmVtZW50RnVuY3Rpb25hbEV2
ZW50Q291bnRlcigpOwogICAgICAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KFt3b3JrZXJdIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgaXMgdGFraW5nIHRvbyBtdWNoIHRp
bWUgdG8gcHJvY2VzcyBhIHB1c2ggZXZlbnQiKTsKLSAgICAgICAgICAgICAgICB3b3JrZXItPmRl
Y3JlbWVudFB1c2hFdmVudENvdW50ZXIoKTsKKyAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3Jl
bWVudEZ1bmN0aW9uYWxFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgdGVybWluYXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhp
cy0+bV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlv
bkRlbGF5IDogZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgdGVybWlu
YXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9pc1By
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDog
ZGVmYXVsdEZ1bmN0aW9uYWxFdmVudER1cmF0aW9uKTsKICAgICAgICAgICAgIGNvbm5lY3Rpb25P
clN0YXR1cy52YWx1ZSgpLT5maXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBk
YXRhLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdGVybWluYXRlV29ya2VyVGltZXIg
PSBXVEZNb3ZlKHRlcm1pbmF0ZVdvcmtlclRpbWVyKSwgd29ya2VyID0gV1RGTW92ZSh3b3JrZXIp
XShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0
ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdvcmtlci0+
ZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgICAgICAgICB3b3JrZXIt
PmRlY3JlbWVudEZ1bmN0aW9uYWxFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgICAgICAgICAg
dGVybWluYXRlV29ya2VyVGltZXItPnN0b3AoKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEz
MjEsNiArMTMyMiw0NSBAQCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogICAgIH0pOwogfQogCit2
b2lkIFNXU2VydmVyOjpwcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRGF0YSYm
IGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSB0eXBlKQoreworICAgIHdoZW5JbXBvcnRJc0Nv
bXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgdHlwZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVVSTChkYXRhLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpOwor
ICAgICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSB7IFdU
Rk1vdmUob3JpZ2luKSwgVVJMIHsgZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIH0g
fTsKKyAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAu
Z2V0KHJlZ2lzdHJhdGlvbktleSk7CisgICAgICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0
aXZlV29ya2VyKCk7CisgICAgICAgIGlmICghd29ya2VyKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGZpcmVGdW5jdGlvbmFsRXZlbnQoKnJlZ2lzdHJhdGlvbiwgW3dvcmtlciA9IFJl
ZiB7ICp3b3JrZXIgfSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZGF0YSA9IFdURk1v
dmUoZGF0YSksIHR5cGVdKGF1dG8mJiBjb25uZWN0aW9uT3JTdGF0dXMpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKCFjb25uZWN0aW9uT3JTdGF0dXMuaGFzX3ZhbHVlKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
ID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CisKKyAgICAgICAgICAgIHdvcmtlci0+aW5jcmVtZW50
RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOworICAgICAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3Jr
ZXJUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFt3b3JrZXJdIHsKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgaXMgdGFraW5n
IHRvbyBtdWNoIHRpbWUgdG8gcHJvY2VzcyBhIG5vdGlmaWNhdGlvbiBldmVudCIpOworICAgICAg
ICAgICAgICAgIHdvcmtlci0+ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVT
aG90KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFi
bGVkID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVy
YXRpb24pOworICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVOb3Rp
ZmljYXRpb25FdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgdHlwZSwgW3Rlcm1p
bmF0ZVdvcmtlclRpbWVyID0gV1RGTW92ZSh0ZXJtaW5hdGVXb3JrZXJUaW1lciksIHdvcmtlciA9
IFdURk1vdmUod29ya2VyKV0oYm9vbCAvKiBzdWNjZWVkZWQgKi8pIG11dGFibGUgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBpZiBzdWNjZWVkZWQgaXMgZmFsc2UsIHNob3VsZCB3ZSBpbXBs
ZW1lbnQgYSBkZWZhdWx0IGFjdGlvbiBsaWtlIG9wZW5pbmcgYSBuZXcgcGFnZT8KKyAgICAgICAg
ICAgICAgICBpZiAodGVybWluYXRlV29ya2VyVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgd29ya2VyLT5kZWNyZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5zdG9wKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiAv
LyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZmlyZS1mdW5jdGlvbmFsLWV2
ZW50LWFsZ29yaXRobSwganVzdCBmb3IgcHVzaCByaWdodCBub3cuCiB2b2lkIFNXU2VydmVyOjpm
aXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KiwgU2hvdWxkU2tpcEV2ZW50Pik+JiYgY2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNmRhMTQ1YWFiODc3YWI4
YzQ5NDcyNDExZWYxZjhmM2M2NTM1YzRiMC4uOWQ1YWQyYTUyZWNlNmNlYzM4NzIyYmFlZDg0ZDEx
OTMwMTQ4M2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaApAQCAtNTgsMTAgKzU4LDEyIEBAIGNsYXNzIFNXU2VydmVySm9iUXVldWU7
CiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKIGNsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKIGNsYXNzIFRpbWVyOworZW51bSBjbGFzcyBOb3RpZmljYXRpb25FdmVudFR5cGUg
OiBib29sOwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50
OF90OwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4
Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CitzdHJ1Y3QgTm90
aWZpY2F0aW9uRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YTsKQEAgLTIxOSwxMiArMjIxLDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEwX3M7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRQdXNoTWVzc2FnZUR1cmF0aW9uID0gMl9zOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0RnVuY3Rpb25hbEV2ZW50RHVyYXRpb24g
PSAyX3M7CiAKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcElu
aXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAg
ICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVz
dGluZzsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2Uoc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NOb3RpZmljYXRp
b25FdmVudChOb3RpZmljYXRpb25EYXRhJiYsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSk7CiAKICAg
ICBlbnVtIGNsYXNzIFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9p
ZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRT
a2lwRXZlbnQ+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCA2NmNjNDY5YTkzZmRlOWVkNmFkN2RkYmY0NzE4NzAzNzRjMjQ3NmJlLi43Y2ExNmM3YWE4ZDdi
ODRkZWQ5ODk0ZWVkZWI3MDhiNDNjNjU2M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRXZl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LmgiCkBAIC0zOSw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IE5v
dGlmaWNhdGlvbkRhdGE7CiBjbGFzcyBTV1NlcnZlcjsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CkBAIC02NSw3ICs2Nyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNo
TWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZU5v
dGlmaWNhdGlvbkV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBOb3RpZmljYXRp
b25EYXRhJiwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0ID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cg
aG9zdCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDk5MjRmYmRiYWU0NjEyY2E4MWVkYWJi
Nzc2ODdmZmM1ZGYzY2RhOTAuLjA4ODFiYzYyMzczNzEzYWFlMjFmZWIxOGI2MjYyNGI1YmE2ZTk5
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0zOTcsMTAgKzM5NywxMCBAQCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2Vydmlj
ZVdvcmtlclBhZwogICAgIHJldHVybiBtX3JlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVu
dENvdW50ZXIoKQordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50
Q291bnRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcHVzaEV2ZW50Q291bnRlcik7Ci0gICAgLS1tX3B1
c2hFdmVudENvdW50ZXI7CisgICAgQVNTRVJUKG1fZnVuY3Rpb25hbEV2ZW50Q291bnRlcik7Cisg
ICAgLS1tX2Z1bmN0aW9uYWxFdmVudENvdW50ZXI7CiAgICAgdGVybWluYXRlSWZQb3NzaWJsZSgp
OwogfQogCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0QXNJbnNw
ZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
SWZQb3NzaWJsZSgpCiB7Ci0gICAgaWYgKG1fcHVzaEV2ZW50Q291bnRlciB8fCBtX2lzSW5zcGVj
dGVkIHx8ICFtX3NlcnZlciB8fCBtX3NlcnZlci0+aGFzQ2xpZW50c1dpdGhPcmlnaW4ob3JpZ2lu
KCkpKQorICAgIGlmIChtX2Z1bmN0aW9uYWxFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZCB8
fCAhbV9zZXJ2ZXIgfHwgbV9zZXJ2ZXItPmhhc0NsaWVudHNXaXRoT3JpZ2luKG9yaWdpbigpKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdGVybWluYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggMTYw
MDY1ZDM2ZWJmYzUzMGUyYmM4MDYxMjRiN2EyYzQxYzdiMmMxOC4uNTRkZjM4NDIyMDgxYWFlNGQ4
MmJhNjI0ZmJhNjI5MGE4ZjYzN2JiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTM1LDExICsxMzUsMTEg
QEAgcHVibGljOgogCiAgICAgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGluY3JlbWVudFB1c2hFdmVudENvdW50ZXIoKSB7ICsrbV9wdXNoRXZl
bnRDb3VudGVyOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CisgICAg
dm9pZCBpbmNyZW1lbnRGdW5jdGlvbmFsRXZlbnRDb3VudGVyKCkgeyArK21fZnVuY3Rpb25hbEV2
ZW50Q291bnRlcjsgfQorICAgIHZvaWQgZGVjcmVtZW50RnVuY3Rpb25hbEV2ZW50Q291bnRlcigp
OwogICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoYm9vbCk7CiAKLSAgICBib29sIHNob3VsZENvbnRp
bnVlKCkgY29uc3QgeyByZXR1cm4gISFtX3B1c2hFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3Rl
ZDsgfQorICAgIGJvb2wgc2hvdWxkQ29udGludWUoKSBjb25zdCB7IHJldHVybiAhIW1fZnVuY3Rp
b25hbEV2ZW50Q291bnRlciB8fCBtX2lzSW5zcGVjdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgU1dT
ZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiYmKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3Rlcm1pbmF0aW9uQ2FsbGJhY2tzOwogICAg
IFRpbWVyIG1fdGVybWluYXRpb25UaW1lcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwotICAgIGludCBtX3B1c2hFdmVu
dENvdW50ZXIgeyAwIH07CisgICAgaW50IG1fZnVuY3Rpb25hbEV2ZW50Q291bnRlciB7IDAgfTsK
ICAgICBib29sIG1faXNJbnNwZWN0ZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxMTUxM2E4ZWI4ZTZh
MGFkNTlmNmI2OWQyYjE5OTE4ZDA3NDAxZmM2Li5lMzlhYWI5YTk1MmIyMzY1ZTk5OWQwYWRjYzhl
NTBmNDM5YTRjZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KQEAgLTIyNzksNiArMjI4
MCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KE5v
dGlmaWNhdGlvbkRhdGEmJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlKQor
eworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oZGF0YS5zb3VyY2VTZXNz
aW9uKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9jZXNzTm90aWZpY2F0
aW9uRXZlbnQoV1RGTW92ZShkYXRhKSwgZXZlbnRUeXBlKTsKK30KKwogI2lmIEVOQUJMRShCVUlM
VF9JTl9OT1RJRklDQVRJT05TKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVz
aE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNmE5MDBmZDFiYjI5
MzcwYzhjOTBmZjJiZmE5YWIwZWMzZTZlOTRlZS4uYTI2OGQ4ZmU0MTUyODk5NGVkZTcwZGZkYzVl
ZGZjNjIzOTMxZDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05vdGlmaWNhdGlvbkV2ZW50VHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtODQsNiArODUs
NyBAQCBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDdXJsUHJveHlTZXR0aW5nczsKIGNs
YXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK3N0cnVj
dCBOb3RpZmljYXRpb25EYXRhOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFVzZXJDb250
ZW50VVJMUGF0dGVybjsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4
X3Q7CkBAIC0zNzQsNiArMzc2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmKTsKICAg
ICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBwcm9jZXNzTm90
aWZpY2F0aW9uRXZlbnQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYmLCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25FdmVudFR5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3Rp
ZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggYjVhMDMyOGIwYjQ0NTc2MDk3Yzg3M2MwZDY0YmUyMTRhYTg4
ZWFiYS4uMjZjNGViNzMyM2ZiZGU4MGJiN2FiYjljMDgxMjkyNTVhMzMwMzcxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yMTMsNiArMjEzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6
OldlYlB1c2hNZXNzYWdlPiBtZXNzYWdlcykKICAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVz
c2FnZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkKKyAgICBQcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQo
c3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgZGF0YSwgZW51bTpib29sIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUpCiAjZW5kaWYKICAgICBEZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcgZXJyb3JN
ZXNzYWdlKQogICAgIEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDAwOTMyMzZmMmY2NmVkNDU3ZmI1OWQ1MjMyYTM0MGIw
N2QyMmI2ZTYuLjdkZmEwZTE4NjQ5YTBmZTEzZDRmNzI2MTVjYTI4MzYwMGM5ZjcwZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAKQEAgLTExNCwxNiArMTE1LDI4IEBAIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CiB9
CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGRhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBkYXRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICgh
bV9wcm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50KyspCisgICAgaWYgKCFtX3Byb2Nlc3NpbmdGdW5j
dGlvbmFsRXZlbnRDb3VudCsrKQogICAgICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVy
ZW5jZT4gaXBjRGF0YTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgaXBjRGF0YSA9IElQQzo6RGF0
YVJlZmVyZW5jZSB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZVB1
c2hFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXBjRGF0YSksIFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHdhc1By
b2Nlc3NlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcyAmJiAhLS13ZWFrVGhpcy0+
bV9wcm9jZXNzaW5nUHVzaEV2ZW50c0NvdW50KQorICAgICAgICBpZiAod2Vha1RoaXMgJiYgIS0t
d2Vha1RoaXMtPm1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KQorICAgICAgICAgICAg
d2Vha1RoaXMtPm1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVuZFNlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYWtUaGlzLT53ZWJQcm9jZXNzSWRlbnRpZmll
cigpIH0sIDApOworICAgICAgICBjYWxsYmFjayh3YXNQcm9jZXNzZWQpOworICAgIH0pOworfQor
Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZU5vdGlmaWNhdGlvbkV2
ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
bV9wcm9jZXNzaW5nRnVuY3Rpb25hbEV2ZW50Q291bnQrKykKKyAgICAgICAgbV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZU5vdGlm
aWNhdGlvbkV2ZW50IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIGV2ZW50VHlwZSB9
LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCB3YXNQcm9jZXNzZWQpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMg
JiYgIS0td2Vha1RoaXMtPm1fcHJvY2Vzc2luZ0Z1bmN0aW9uYWxFdmVudENvdW50KQogICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IHdlYWtUaGlzLT53ZWJQcm9jZXNzSWRl
bnRpZmllcigpIH0sIDApOwogICAgICAgICBjYWxsYmFjayh3YXNQcm9jZXNzZWQpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IDgwYjMwM2U0NGRiZGIzOTFkNWIyNWViMjc5NzM0MWFlZmYwMmEwNDUuLjAxNmE4Mjc1MzUw
YWMxZWMzNDc5MDJiMmZhMzRmODI4NjMwOWQ1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNiArOTcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAgIHZvaWQgbWF0
Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSBmaW5hbDsKICAgICB2b2lkIGZpcmVQ
dXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGZpbmFsOworICAgIHZvaWQgZmlyZU5vdGlmaWNhdGlvbkV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiwgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAgICAgdm9pZCBmb2N1cyhXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJik7
CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyLCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s+PiBtX29uZ29p
bmdEb3dubG9hZHM7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9OwogICAgIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKLSAgICBzaXplX3QgbV9wcm9j
ZXNzaW5nUHVzaEV2ZW50c0NvdW50IHsgMCB9OworICAgIHNpemVfdCBtX3Byb2Nlc3NpbmdGdW5j
dGlvbmFsRXZlbnRDb3VudCB7IDAgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDhm
ZTY1ODFhMDViMDRjNjlmYmQwMWFhNjE1MmZjY2QwYzcyMWYzYzIuLjZiZjdlY2VlNWIyYWI3Nzkz
ZWYwZDAwNzc3OTlhMzU0Zjc2OWU5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTc4MCw2ICsxNzgw
LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklE
LCBwdXNoTWVzc2FnZSB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IE5vdGlmaWNhdGlvbkRh
dGEmIGRhdGEsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NOb3RpZmljYXRpb25FdmVudCB7IGRhdGEs
IGV2ZW50VHlwZSB9LCAwKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lz
dHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxi
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCA1YzFkMDUzZjFmOGNmZjU1NjBmNmRlOWUxNmFhMTUxZmFiN2E1
ZjY2Li5hZmFiNTJkMzYzM2U1ZDQwNGVmZDk1ZWNlNmZhZTk3MWQxYWZhZGQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0
aW9uRXZlbnRUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTcyLDEzICs3Mywx
NCBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IDogdWludDhfdDsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsK
K3N0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
Mjg0LDYgKzI4Niw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7CiAgICAgdm9pZCBw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOworICAgIHZvaWQg
cHJvY2Vzc05vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEm
LCBXZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIGRl
bGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IGI5MDE4NDIxMTIyZThlOTVm
NGY2ZGNmMWEyZjAzMzRhODgxYzNhN2MuLjhlY2FjMTIzNmE1ZjE4ZWEzZTdiNzVkNTJjY2UzNTg4
ZmVlNjRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMxLDE0ICszMSw4IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VDb25uZWN0aW9uKQotICAgIDogbV90
aXRsZShkYXRhLnRpdGxlKQotICAgICwgbV9ib2R5KGRhdGEuYm9keSkKLSAgICAsIG1faWNvblVS
TChkYXRhLmljb25VUkwpCi0gICAgLCBtX3RhZyhkYXRhLnRhZykKLSAgICAsIG1fbGFuZyhkYXRh
Lmxhbmd1YWdlKQotICAgICwgbV9kaXIoZGF0YS5kaXJlY3Rpb24pCisgICAgOiBtX2RhdGEoZGF0
YSkKICAgICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
ZGF0YS5vcmlnaW5TdHJpbmcpKQotICAgICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0YS5ub3Rp
ZmljYXRpb25JRCkKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIpCiAgICAg
LCBtX3NvdXJjZUNvbm5lY3Rpb24oc291cmNlQ29ubmVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCmlu
ZGV4IGMxNGYxNGMwYmFiZGMwODE0Y2EwNzkyM2MwOWY3Zjc2MTliZjg3NTIuLjM3YjYyYjI5YjU4
ZGM5Y2YzNDYzMDM0Mzc0MjU5N2RjM2YwNmZkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ3LDE3ICs0OCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYk5vdGlmaWNhdGlvbihkYXRhLCBwYWdlSWRlbnRpZmllciwgc291cmNlQ29ubmVjdGlvbikp
OwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3Rp
dGxlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9
Ci0gICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uVVJMOyB9
Ci0gICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQotICAgIGNv
bnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQotICAgIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcjsgfQorICAg
IGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGl0bGU7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYm9keTsgfQorICAg
IGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pY29uVVJMOyB9
CisgICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGFnOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxhbmd1YWdlOyB9
CisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5kaXJlY3Rpb247IH0KKyAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEubm90aWZpY2F0aW9uSUQ7IH0KKyAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc291cmNlU2Vzc2lvbjsgfQor
CisgICAgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorICAgIGJvb2wgaXNQZXJzaXN0ZW50Tm90aWZpY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gIW1fZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMLmlzRW1wdHkoKTsg
fQorCiAgICAgY29uc3QgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW4uZ2V0KCk7IH0KICAgICBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSB7
IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQo
KSBjb25zdCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLSAgICBjb25zdCBVVUlEJiBjb3JlTm90
aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAg
ICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUlkZW50aWZpZXI7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KQEAgLTY1LDE1
ICs3MSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViTm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBJUEM6OkNv
bm5lY3Rpb24mKTsKIAotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2JvZHk7Ci0g
ICAgU3RyaW5nIG1faWNvblVSTDsKLSAgICBTdHJpbmcgbV90YWc7Ci0gICAgU3RyaW5nIG1fbGFu
ZzsKLSAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gbV9kaXI7CisgICAgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSBtX2RhdGE7CiAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmln
aW4+IG1fb3JpZ2luOwotICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7Ci0KICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5jcHAKaW5kZXggYjNhYzcyYjVmNmNiODE5ZmQ5YTJjMDc2YjBkNjkyNjFj
YmU1MTgwYS4uZmQxOTZkMzBmNDdlOGVjYzdkYjBmYzBjZGIyNzYzNzMzMGIzZTFiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMTg2LDExICsxODYsMTYg
QEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNhdGlvbihXZWJOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlv
bigpOwotICAgIGlmICghY29ubmVjdGlvbikKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNQZXJzaXN0ZW50Tm90aWZpY2F0aW9uKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0
b3JlRm9yU2Vzc2lvbklEKG5vdGlmaWNhdGlvbi0+c2Vzc2lvbklEKCkpKQorICAgICAgICAgICAg
ZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnByb2Nlc3NOb3RpZmljYXRpb25FdmVudChub3Rp
ZmljYXRpb24tPmRhdGEoKSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljayk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKIAotICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlv
bi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9
IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlv
bihub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVp
bnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQpAQCAtMjQyLDYgKzI0NywxNCBAQCB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMo
QVBJOjpBcnJheSogZ2xvYgogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBpZiAobm90
aWZpY2F0aW9uLT5pc1BlcnNpc3RlbnROb3RpZmljYXRpb24oKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9y
U2Vzc2lvbklEKG5vdGlmaWNhdGlvbi0+c2Vzc2lvbklEKCkpKQorICAgICAgICAgICAgICAgIGRh
dGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzTm90aWZpY2F0aW9uRXZlbnQobm90aWZp
Y2F0aW9uLT5kYXRhKCksIE5vdGlmaWNhdGlvbkV2ZW50VHlwZTo6Q2xvc2UpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBtX2dsb2JhbE5vdGlmaWNh
dGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKICAgICAgICAg
Y2xvc2VkTm90aWZpY2F0aW9ucy5hcHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGFjNDU4Y2JmY2YzZmIyNTcx
YzZmODUwYTkzMjAwZmFlZjQ1NjAwODQuLjdiYmI1MGUxNDI3MjcwZWQwMjRjZDkwNjUyNmFjMmM0
YjY0MDY5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNzQsMTIg
KzE3NCwxNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBBU1NFUlQoaXNNYWluUnVuTG9v
cCgpKTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGF1dG8gbWFwcGVkTm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIo
KSk7Ci0gICAgaWYgKCFtYXBwZWROb3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBB
U1NFUlQobWFwcGVkTm90aWZpY2F0aW9uID09ICZub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFz
ZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSks
IG5vdGlmaWNhdGlvbiwgcGFnZSkpCisgICAgYXV0byBpZGVudGlmaWVyID0gbm90aWZpY2F0aW9u
LmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIG1hcHBlZE5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0
aW9uSURNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghbWFwcGVkTm90aWZpY2F0aW9uKSB7
CisgICAgICAgIGF1dG8gcmVsYXRlZElkZW50aWZpZXIgPSBub3RpZmljYXRpb24ucmVsYXRlZE5v
dGlmaWNhdGlvbklkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFyZWxhdGVkSWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWRlbnRpZmllciA9ICpyZWxhdGVkSWRlbnRp
ZmllcjsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUKG1hcHBlZE5vdGlmaWNhdGlvbiA9PSAm
bm90aWZpY2F0aW9uKTsKKworICAgIGlmICghc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2Fn
ZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9u
KGlkZW50aWZpZXIpLCBub3RpZmljYXRpb24sIHBhZ2UpKQogICAgICAgICByZXR1cm47CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAtMTk0LDEyICsxOTksMTcgQEAg
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uLAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJl
ZiBwcm90ZWN0ZWROb3RpZmljYXRpb24geyBub3RpZmljYXRpb24gfTsKIAotICAgIGF1dG8gdGFr
ZW5Ob3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uLmlk
ZW50aWZpZXIoKSk7Ci0gICAgaWYgKCF0YWtlbk5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJu
OwotICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKLQotICAg
IHNlbmROb3RpZmljYXRpb25NZXNzYWdlKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZp
ZXIoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gbm90aWZp
Y2F0aW9uLmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRha2VuTm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25JRE1hcC50YWtlKGlkZW50aWZpZXIpOworICAgIGlmICghdGFrZW5Ob3RpZmljYXRp
b24pIHsKKyAgICAgICAgYXV0byByZWxhdGVkSWRlbnRpZmllciA9IG5vdGlmaWNhdGlvbi5yZWxh
dGVkTm90aWZpY2F0aW9uSWRlbnRpZmllcigpOworICAgICAgICBpZiAoIXJlbGF0ZWRJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZGVudGlmaWVyID0gKnJlbGF0ZWRJ
ZGVudGlmaWVyOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQodGFrZW5Ob3RpZmljYXRpb24g
PT0gJm5vdGlmaWNhdGlvbik7CisKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdl
czo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0
aW9uKGlkZW50aWZpZXIpLCBub3RpZmljYXRpb24sIHBhZ2UpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMWUxYTM5YmU3YzE0NjM3YTdkNjI5M2ZhYjI5
MGNkODcxODUzZjhjMC4uNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5YWQwNTVhMDJiNzYyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjcsNiArMjY3LDExIEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
ZmlyZVB1c2hFdmVudChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVOb3RpZmlj
YXRpb25FdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBOb3RpZmljYXRp
b25EYXRhJiYgZGF0YSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5maXJlTm90aWZpY2F0aW9uRXZlbnQoaWRlbnRpZmllciwgV1RGTW92ZShk
YXRhKSwgZXZlbnRUeXBlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRl
cm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5h
dGlvblRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5k
ZXggZjg5NmIxYjBlYjQxN2M2YWNkYTQyMDViMjY0N2JiZDY4NWExZjFmMC4uNTg0MjgyYzEwODNl
MTQ4NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEwMSw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZh
dGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJl
UHVzaEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKKyAgICB2b2lkIGZpcmVOb3RpZmljYXRpb25FdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYmLCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25FdmVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA2ZWYyN2VmYzJhM2ExZTRiNzJiOWY2YWU1NDQzN2I1
MmRhNjQ3NjNiLi5mZjQzMDdlNTk2NTdkOTUyMzM1NzBhNTk4MDJhZGQwOGMyN2I2ZTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMSw0
ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewog
ICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVu
Y2U+IGRhdGEpIC0+IChib29sIHJlc3VsdCkKKyAgICBGaXJlTm90aWZpY2F0aW9uRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRhdGEgZGF0YSwgZW51bTpib29sIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2
ZW50VHlwZSB0eXBlKSAtPiAoYm9vbCByZXN1bHQpCiAKICAgICBUZXJtaW5hdGVXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMThkZGE3OTk1Y2Fm
NGM2YTk1YjZmMjc5NjZiNmY5MWRmNWVmNDUwLi4xNDY3MzNiYmNmODIxNTliYTRlZjI1MzA2OGMw
ODNkYThhNmJiYjdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBwZXJzaXN0ZW50
IG5vdGlmaWNhdGlvbiBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM4NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29u
LgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlv
bi1hbGxvd2VkLmh0bWw6CisKIDIwMjItMDMtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFsgbWFjT1MgJiBXaW4gXSBmYXN0L3JlcGFpbnQvbGlzdC1pdGVtLWVx
dWFsLXN0eWxlLWNoYW5nZS1uby1yZXBhaW50Lmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93bm90aWZp
Y2F0aW9uLWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sCmluZGV4IGFkNGEwMDE1Njc5NWQyOTgy
YTI3NDBhMjQ2NmY1OWUzYmE3OTYzMDkuLjc2NmFiZmVlNTFjYTNhZDI0Y2VhODQ3OGYzODliZWFh
ZGE4NmFkMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sCkBAIC00
NSwxMCArNDUsMTYgQEAgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgewog
dmFyIGdvdENsaWNrZWQgPSBmYWxzZTsKIHZhciBnb3RDbG9zZWQgPSBmYWxzZTsKIAotbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsK
K25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3lu
YyBldmVudCA9PiB7CiAgICAgaWYgKGV2ZW50LmRhdGEgPT0gInNob3dGYWlsZWQiKSB7CiAgICAg
ICAgIGZhaWxUaGVUZXN0KCJVbmV4cGVjdGVkbHkgcmVjZWl2ZWQgdGhlIGZhaWxlZC10by1zaG93
IG1lc3NhZ2UiKTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInNob3duIikgeworICAg
ICAgICAvLyBXZSBzaW11bGF0ZSBhIG5ldHdvcmsgcHJvY2VzcyBjcmFzaCBzbyB0aGF0IHdlIG1h
a2Ugc3VyZSB0aGF0IGEgbm90aWZpY2F0aW9uIGNsaWNrIGVuc3VyZXMgcmVzdGFydGluZyBhIHNl
cnZpY2Ugd29ya2VyCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
YXdhaXQgaW50ZXJuYWxzLnN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzKCk7CisKICAgICAgICAgaWYgKHRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9ucygpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>