<?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>190341</bug_id>
          
          <creation_ts>2018-10-07 15:10:53 -0700</creation_ts>
          <short_desc>Have DOMWindowProperty get is frame from its associated DOMWindow</short_desc>
          <delta_ts>2018-10-08 10:17:42 -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>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1466956</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-07 15:10:53 -0700</bug_when>
    <thetext>Have DOMWindowProperty get is frame from its associated DOMWindow, instead of having its own m_frame that can potentially get out-of-sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466957</commentid>
    <comment_count>1</comment_count>
      <attachid>351745</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-07 15:12:32 -0700</bug_when>
    <thetext>Created attachment 351745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466961</commentid>
    <comment_count>2</comment_count>
      <attachid>351747</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-07 15:53:33 -0700</bug_when>
    <thetext>Created attachment 351747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467064</commentid>
    <comment_count>3</comment_count>
      <attachid>351747</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-08 09:40:13 -0700</bug_when>
    <thetext>Comment on attachment 351747
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:686
&gt; -Screen* DOMWindow::screen() const
&gt; +Screen* DOMWindow::screen()

Does this change really introduce mutating the DOMWindow when we access its screen?  Same for other const removals.  I see no good reason for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467065</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 09:41:27 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 351747 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=351747&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:686
&gt; &gt; -Screen* DOMWindow::screen() const
&gt; &gt; +Screen* DOMWindow::screen()
&gt; 
&gt; Does this change really introduce mutating the DOMWindow when we access its
&gt; screen?  Same for other const removals.  I see no good reason for them.

I needed to drop the const for correctness because the DOMWindow passes itself to the DOMWindowProperties when constructing them as a DOMWindow&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467079</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 09:55:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; Comment on attachment 351747 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=351747&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/DOMWindow.cpp:686
&gt; &gt; &gt; -Screen* DOMWindow::screen() const
&gt; &gt; &gt; +Screen* DOMWindow::screen()
&gt; &gt; 
&gt; &gt; Does this change really introduce mutating the DOMWindow when we access its
&gt; &gt; screen?  Same for other const removals.  I see no good reason for them.
&gt; 
&gt; I needed to drop the const for correctness because the DOMWindow passes
&gt; itself to the DOMWindowProperties when constructing them as a DOMWindow&amp;.

The only reason they were const before is because the DOMWindow was passing its frame to the DOMWindowProperties when constructing them and the frame() getter is marked const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467089</commentid>
    <comment_count>6</comment_count>
      <attachid>351747</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 10:12:45 -0700</bug_when>
    <thetext>Comment on attachment 351747
Patch

Clearing flags on attachment: 351747

Committed r236917: &lt;https://trac.webkit.org/changeset/236917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467090</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 10:12:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467091</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-08 10:14:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/45091778&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351745</attachid>
            <date>2018-10-07 15:12:32 -0700</date>
            <delta_ts>2018-10-07 15:53:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190341-20181007151231.patch</filename>
            <type>text/plain</type>
            <size>109705</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FhNWViYWYxODJjMGNj
NjdhZDFmODQ0ZGVlN2M4MWU3NjgxYjE5OS4uZjFiNjhjMzFhZmFjOGMyMDEwMTg2N2JiZjZkMmFi
YTlkNGYzMDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOSBAQAorMjAxOC0xMC0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgRE9NV2luZG93UHJv
cGVydHkgZ2V0IGlzIGZyYW1lIGZyb20gaXRzIGFzc29jaWF0ZWQgRE9NV2luZG93CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAzNDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZlIERPTVdpbmRvd1By
b3BlcnR5IGdldCBpcyBmcmFtZSBmcm9tIGl0cyBhc3NvY2lhdGVkIERPTVdpbmRvdywgaW5zdGVh
ZCBvZiBoYXZpbmcgaXRzIG93bgorICAgICAgICBtX2ZyYW1lIHRoYXQgY2FuIHBvdGVudGlhbGx5
IGdldCBvdXQtb2Ytc3luYy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2Fj
aGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6RE9NV2luZG93Q2Fj
aGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdlb2xvY2F0aW9uOjpOYXZpZ2F0b3JH
ZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OkRPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzOjpOYXZpZ2F0b3JNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
TWVkaWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5oOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVvdGE6OkRPTVdpbmRvd1F1b3Rh
KToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6Ok5hdmlnYXRvclN0b3JhZ2VR
dW90YSk6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpET01XaW5kb3dTcGVl
Y2hTeW50aGVzaXMpOgorICAgICAgICAqIGNzcy9TdHlsZU1lZGlhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlTWVkaWE6OlN0eWxlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVN
ZWRpYTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjptYXRjaE1l
ZGl1bSBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
Lmg6CisgICAgICAgICogcGFnZS9CYXJQcm9wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhclBy
b3A6OkJhclByb3ApOgorICAgICAgICAoV2ViQ29yZTo6QmFyUHJvcDo6dmlzaWJsZSBjb25zdCk6
CisgICAgICAgICogcGFnZS9CYXJQcm9wLmg6CisgICAgICAgIChXZWJDb3JlOjpCYXJQcm9wOjpj
cmVhdGUpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNl
bGVjdGlvbjo6dmlzaWJsZVNlbGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01T
ZWxlY3Rpb246OmFuY2hvck5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0
aW9uOjphbmNob3JPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
Ojpmb2N1c05vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpmb2N1
c09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmJhc2VOb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6YmFzZU9mZnNldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4dGVudE5vZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpleHRlbnRPZmZzZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjppc0NvbGxhcHNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpET01TZWxlY3Rpb246OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjpyYW5nZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNl
bGVjdGlvbjo6Y29sbGFwc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpjb2xs
YXBzZVRvRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2VUb1N0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZW1wdHkpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2Vs
ZWN0aW9uOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpleHRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpnZXRSYW5nZUF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6cmVtb3ZlQWxsUmFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6YWRkUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0
aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
Ojpjb250YWluc05vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjp0
b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNoYWRvd0FkanVzdGVk
Tm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNoYWRvd0FkanVz
dGVkT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6aXNWYWxp
ZEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmxvY2F0aW9uYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bWVudWJh
cik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBlcnNvbmFsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnN0YXR1c2Jhcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnRvb2xiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphcHBsaWNhdGlvbkNhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bmF2aWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6bG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp2aXN1YWxW
aWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdE5hbWVzcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnN0eWxlTWVkaWEpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dF
eHRlbnNpb246OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6On5ET01XaW5kb3dQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1l
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3Bl
cnR5OjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5
Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd1Byb3BlcnR5OjpmcmFtZSBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3dQ
cm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6OndpbmRvdyBj
b25zdCk6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3Rvcnk6Okhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6bGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnNjcm9sbFJlc3RvcmF0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnNldFNjcm9sbFJlc3RvcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0YXRlSW50ZXJuYWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeTo6Z28pOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6dXJsRm9yU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6CisgICAg
ICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aHJlZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cHJvdG9jb2wgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYXRpb246Omhvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246Omhvc3RuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwYXRobmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2VhcmNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OmFuY2VzdG9yT3JpZ2lucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aGFz
aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SHJlZik6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3RuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6
c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjphc3NpZ24pOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRp
b246OnJlcGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnJlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIHBhZ2UvTG9j
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6TmF2aWdh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6YXBwVmVyc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnVzZXJBZ2VudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6Om1pbWVUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmNvb2tpZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmF2aWdhdG9yOjpqYXZhRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3I6OnN0YW5kYWxvbmUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
Lmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZTo6bmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6
dGltaW5nKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OlBlcmZvcm1hbmNlTmF2aWdhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OnR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpyZWRpcmVjdENvdW50
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
VGltaW5nOjpkb2N1bWVudExvYWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9jdW1lbnRUaW1pbmcgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjcmVh
dGUpOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
bjo6U2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6aGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuOjpjb2xvckRlcHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6cGl4
ZWxEZXB0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmF2YWlsTGVmdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmF2YWlsVG9wIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmVlbjo6YXZhaWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuOjphdmFpbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1NjcmVlbi5oOgorICAg
ICAgICAqIHBhZ2UvVmlzdWFsVmlld3BvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFs
Vmlld3BvcnQ6OlZpc3VhbFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdw
b3J0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
c3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3Vh
bFZpZXdwb3J0Ojp1cGRhdGVGcmFtZUxheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXN1YWxWaWV3cG9ydDo6b2Zmc2V0TGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1
YWxWaWV3cG9ydDo6b2Zmc2V0VG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZp
ZXdwb3J0OjpwYWdlTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9y
dDo6cGFnZVRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6d2lk
dGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OmhlaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6c2NhbGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaXN1YWxWaWV3cG9ydDo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvVmlz
dWFsVmlld3BvcnQuaDoKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVzcGFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6OldlYktpdE5hbWVzcGFjZSk6CisgICAgICAg
ICogcGFnZS9XZWJLaXROYW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVz
cGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheTo6RE9NTWltZVR5cGVBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZUFycmF5OjppdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01N
aW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk6OmNy
ZWF0ZSk6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NUGx1Z2luQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luQXJy
YXk6Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6cmVmcmVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6cGx1Z2luRGF0YSBjb25zdCk6
CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGx1Z2luQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlOjpTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OnNldEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmg6CisKIDIwMTgt
MTAtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBi
dWlsZGluZyB3aXRoIHRoZSBsYXRlc3QgbWFjT1MgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRiYTVjMDhjZThl
ZjYwNWM4NzAwODRlMWNmMGQ5ZmZkY2NiNDlmYzMuLjRkY2RiZmYzM2ZkYmIxZWNiMTViM2VlZGVi
MGMzZTg0MzkxODM0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMTAtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIERPTVdpbmRvd1By
b3BlcnR5IGdldCBpcyBmcmFtZSBmcm9tIGl0cyBhc3NvY2lhdGVkIERPTVdpbmRvdworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uKToKKwogMjAxOC0xMC0wNyAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyaWVkIHRvIGZpeCBIQVZFKExJTktfUFJFVklFVykg
aU9TIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
V2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93
Q2FjaGVzLmNwcAppbmRleCBlMGI5MTA5NjBmNDZiMDgxNDJlMDQzNzFmZWM4NjliNzU3MGMzN2E5
Li41ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNlMDZjODM3MjQ1NjhhMmZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTVdpbmRvd0NhY2hlczo6RE9NV2luZG93
Q2FjaGVzKERPTVdpbmRvdyogd2luZG93KQotICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93
LT5mcmFtZSgpKQorICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93KQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9y
R2VvbG9jYXRpb24uY3BwCmluZGV4IDUxMjMyNTU2MjljYmE1MjYyMDBlY2FkNjllMmNhYjhmYTUx
MTA0MTAuLjY0ZGY3MzVhNzExNTgzNmQ0NWQxYThjZGI1MTA5ZjhhYTQyMThlZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9y
R2VvbG9jYXRpb24uY3BwCkBAIC0zMyw4ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotTmF2aWdhdG9yR2VvbG9jYXRpb246Ok5hdmlnYXRvckdlb2xvY2F0aW9uKEZyYW1lKiBmcmFt
ZSkKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorTmF2aWdhdG9yR2VvbG9jYXRpb246
Ok5hdmlnYXRvckdlb2xvY2F0aW9uKERPTVdpbmRvdyogd2luZG93KQorICAgIDogRE9NV2luZG93
UHJvcGVydHkod2luZG93KQogewogfQogCkBAIC00OSw3ICs0OSw3IEBAIE5hdmlnYXRvckdlb2xv
Y2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JHZW9sb2NhdGlvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5h
dmlnYXRvckdlb2xvY2F0aW9uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9u
PihuYXZpZ2F0b3ItPmZyYW1lKCkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3ItPndpbmRvdygpKTsK
ICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3Zp
ZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
TmF2aWdhdG9yR2VvbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaAppbmRleCA4M2Y4ZTI1YzBlYjQzZTZkMTFlYzU3MWE5
OGZlZThhMjg4YzE5ODNhLi5mYjA5OWEwNGNjZTYyOTU1MGM5ZWY4OGVmNzg5NGY5ZTc0NmIwNDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRv
ckdlb2xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5oCkBAIC0yNiwxNCArMjYsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBGcmFtZTsKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgTmF2aWdh
dG9yOwogCiBjbGFzcyBOYXZpZ2F0b3JHZW9sb2NhdGlvbiA6IHB1YmxpYyBTdXBwbGVtZW50PE5h
dmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9yR2VvbG9jYXRpb24oRnJh
bWUqKTsKKyAgICBleHBsaWNpdCBOYXZpZ2F0b3JHZW9sb2NhdGlvbihET01XaW5kb3cqKTsKICAg
ICB2aXJ0dWFsIH5OYXZpZ2F0b3JHZW9sb2NhdGlvbigpOwogICAgIHN0YXRpYyBOYXZpZ2F0b3JH
ZW9sb2NhdGlvbiogZnJvbShOYXZpZ2F0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAK
aW5kZXggODljMWM4NTExZjlmYmY3MzM3OTljOGU3YTgwNzg2YmZjYTM3MGU0Ny4uNWFhM2Y5ZjY3
OGU0YWQyNDk4MDFhZTMzYWVhYjI5MzhkNTA5NmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2Uu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNlKERPTVdpbmRvdyogd2luZG93
KQotICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93LT5mcmFtZSgpKQorICAgIDogRE9NV2lu
ZG93UHJvcGVydHkod2luZG93KQogICAgICwgbV93aW5kb3cod2luZG93KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURl
dmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JN
ZWRpYURldmljZXMuY3BwCmluZGV4IDM0MDE1YWQ3ODU4ZmY5NjE5NmYyYjEwYWVjMzU5YmZhZDNh
NWY0NjcuLmU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNiZTc4ZjhmNGFhOGFlNTI1OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAKQEAgLTQwLDggKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1OYXZpZ2F0b3JNZWRpYURldmljZXM6Ok5hdmlnYXRvck1lZGlhRGV2aWNlcyhGcmFtZSog
ZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK05hdmlnYXRvck1lZGlhRGV2
aWNlczo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzKERPTVdpbmRvdyogd2luZG93KQorICAgIDogRE9N
V2luZG93UHJvcGVydHkod2luZG93KQogewogfQogCkBAIC01MSw3ICs1MSw3IEBAIE5hdmlnYXRv
ck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JN
ZWRpYURldmljZXM+KG5hdmlnYXRvci0+ZnJhbWUoKSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3It
PndpbmRvdygpKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5oCmluZGV4IDY3N2RkYmJkZjQ2
MmYxZDliOTJiZTk5M2Q0ODk3ZDQ3NjNhYThiYzMuLjA5M2U3NGNjMmYwMDFkMDA2OTFhNjg1OWE5
YmY0MjVkOGFkOTQ4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaApAQCAtMzcsMTMgKzM3LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBNZWRpYURldmlj
ZXM7CiBjbGFzcyBOYXZpZ2F0b3I7CiAKIGNsYXNzIE5hdmlnYXRvck1lZGlhRGV2aWNlcyA6IHB1
YmxpYyBTdXBwbGVtZW50PE5hdmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKEZyYW1lKik7CisgICAg
ZXhwbGljaXQgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKERPTVdpbmRvdyopOwogICAgIHZpcnR1YWwg
fk5hdmlnYXRvck1lZGlhRGV2aWNlcygpOwogICAgIHN0YXRpYyBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMqIGZyb20oTmF2aWdhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90
YS9ET01XaW5kb3dRdW90YS5jcHAKaW5kZXggOWQ0ZWI4NTY0OTM3ODBhZGI2YTlmYjIzYzc1MTJj
ZWNlYmRkNjA1NS4uMDNmZTllMzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NV2luZG93UXVvdGE6OkRP
TVdpbmRvd1F1b3RhKERPTVdpbmRvdyogd2luZG93KQotICAgIDogRE9NV2luZG93UHJvcGVydHko
d2luZG93LT5mcmFtZSgpKQorICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93KQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAKaW5kZXggMzk1NzFjOTc2OWY3ZDVjMjEwM2QyMjUzMWYxY2NhMTNhMGExNWI2
My4uN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1MzhiOGFkOWI3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNw
cApAQCAtMzksOCArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdmlnYXRvclN0
b3JhZ2VRdW90YTo6TmF2aWdhdG9yU3RvcmFnZVF1b3RhKEZyYW1lKiBmcmFtZSkKLSAgICA6IERP
TVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpOYXZpZ2F0b3JT
dG9yYWdlUXVvdGEoRE9NV2luZG93KiB3aW5kb3cpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3
aW5kb3cpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
TmF2aWdhdG9yU3RvcmFnZVF1b3RhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05h
dmlnYXRvclN0b3JhZ2VRdW90YS5oCmluZGV4IDhlYjVkNDIzYWFkN2YxNjAzNGJhMmM3NWJkMTZh
NDg5MTA0ZmQ0M2UuLmY4OGFjN2Y2Y2RjNDNkMjNmOGUyODZjNDE2M2I5NmQwZjM5YTRjZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1
b3RhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdl
UXVvdGEuaApAQCAtMzcsMTMgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRnJhbWU7CiBjbGFzcyBTdG9yYWdlUXVvdGE7CiBjbGFzcyBOYXZpZ2F0b3I7CiAKIGNsYXNz
IE5hdmlnYXRvclN0b3JhZ2VRdW90YSA6IHB1YmxpYyBTdXBwbGVtZW50PE5hdmlnYXRvcj4sIHB1
YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKEZyYW1lKik7CisgICAgZXhwbGljaXQgTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
KERPTVdpbmRvdyopOwogICAgIHZpcnR1YWwgfk5hdmlnYXRvclN0b3JhZ2VRdW90YSgpOwogICAg
IHN0YXRpYyBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIGZyb20oTmF2aWdhdG9yKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hT
eW50aGVzaXMuY3BwCmluZGV4IGI2NTUzYjllZDQzYmZkZGM5Y2ZmMjk1NDZmNDVhMTI2OGFmNjFl
ZWMuLmRjZGRhNDlkYmI5YmZlZDYwNjNhNDJkYjVkMzIzYThmNzJiNTQwZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3lu
dGhlc2lzLmNwcApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01X
aW5kb3dTcGVlY2hTeW50aGVzaXM6OkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyhET01XaW5kb3cq
IHdpbmRvdykKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdy0+ZnJhbWUoKSkKKyAgICA6
IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEu
Y3BwCmluZGV4IGJlNjRkMTRjMzYzODBlZDRmZDNiZGE3MzQ4NTJlYjY3NWIzZjY5YzguLmE2MTQy
YWFiMmZlMzdjMTVkMGIwMTRmZGMzMjljNzQzZDQ2MGQ5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVN
ZWRpYS5jcHAKQEAgLTM5LDE0ICszOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0
eWxlTWVkaWE6OlN0eWxlTWVkaWEoRnJhbWUqIGZyYW1lKQotICAgIDogRE9NV2luZG93UHJvcGVy
dHkoZnJhbWUpCitTdHlsZU1lZGlhOjpTdHlsZU1lZGlhKERPTVdpbmRvdyYgd2luZG93KQorICAg
IDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKIH0KIAogU3RyaW5nIFN0eWxlTWVkaWE6
OnR5cGUoKSBjb25zdAogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUgPyBtX2ZyYW1l
LT52aWV3KCkgOiAwOworICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRyOwogICAgIGlmICh2
aWV3KQogICAgICAgICByZXR1cm4gdmlldy0+bWVkaWFUeXBlKCk7CiAKQEAgLTU1LDEwICs1Niwx
MSBAQCBTdHJpbmcgU3R5bGVNZWRpYTo6dHlwZSgpIGNvbnN0CiAKIGJvb2wgU3R5bGVNZWRpYTo6
bWF0Y2hNZWRpdW0oY29uc3QgU3RyaW5nJiBxdWVyeSkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBk
b2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlTWVkaWEuaAppbmRleCBiMmNiZDVmOGM5ODBkZWJmYzIxNDIwNDNiOGMzNTNi
ZTMzMjUxZGU1Li5mMGY5OGJlM2Y4MzRmOGI1NGQ5N2Y2YjlmNzJlNjIxZGRjNjg2ZDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZU1lZGlhLmgKQEAgLTMyLDE3ICszMiwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEZyYW1lOwotCiBjbGFzcyBTdHlsZU1lZGlhIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVNZWRpYT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZU1lZGlhPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTWVkaWEoZnJhbWUpKTsgfQorICAgIHN0YXRpYyBSZWY8
U3R5bGVNZWRpYT4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlTWVkaWEod2luZG93KSk7IH0KIAogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAg
ICAgYm9vbCBtYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBTdHlsZU1lZGlhKEZyYW1lKik7CisgICAgZXhwbGljaXQgU3R5bGVNZWRpYShE
T01XaW5kb3cmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRl
eCAzMzYxMDkzOWUwYjQwMDhiYjI2NmExMzIzMjczN2I0ZTdhYzU4MTJjLi4yNTI5OWI1Y2JkYzFi
MjA0ZjQzN2E1MDIwOWI3ZDJhNTY3ODVmNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0zNCw4ICszNCw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NQXBwbGljYXRpb25DYWNoZTo6RE9NQXBw
bGljYXRpb25DYWNoZShGcmFtZSYgZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmZnJh
bWUpCitET01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKERPTVdpbmRvdyYg
d2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKICAgICBpZiAoYXV0
byogaG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkpCiAgICAgICAgIGhvc3QtPnNldERPTUFw
cGxpY2F0aW9uQ2FjaGUodGhpcyk7CkBAIC02NCw5ICs2NCwxMCBAQCB2b2lkIERPTUFwcGxpY2F0
aW9uQ2FjaGU6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCiAKIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0KiBET01BcHBsaWNhdGlvbkNhY2hlOjphcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAg
YXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gJmRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwpAQCAtMTA0LDkg
KzEwNSwxMCBAQCB2b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmFib3J0KCkKIAogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogRE9NQXBwbGljYXRpb25DYWNoZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IGNmNmQyYTlkOTlmNzA2
OGMwNmNjMmY0YTI3MTExZTJkY2RjMWU2NzUuLmUzMjAzNWM1ZmU4YjBiYmVmODRhZTEwMWI4MzBh
OWZkYzFiNDZjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9E
T01BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBGcmFtZTsKIAog
Y2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUFw
cGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGlj
IERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERPTUFwcGxpY2F0
aW9uQ2FjaGU+IGNyZWF0ZShGcmFtZSYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9N
QXBwbGljYXRpb25DYWNoZShmcmFtZSkpOyB9Ci0gICAgdmlydHVhbCB+RE9NQXBwbGljYXRpb25D
YWNoZSgpIHsgQVNTRVJUKCFtX2ZyYW1lKTsgfQorICAgIHN0YXRpYyBSZWY8RE9NQXBwbGljYXRp
b25DYWNoZT4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERPTUFwcGxpY2F0aW9uQ2FjaGUod2luZG93KSk7IH0KKyAgICB2aXJ0dWFsIH5ET01BcHBsaWNh
dGlvbkNhY2hlKCkgeyBBU1NFUlQoIWZyYW1lKCkpOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBz
dGF0dXMoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGUoKTsKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IERPTUFwcGxpY2F0aW9uQ2FjaGUoRnJhbWUmKTsKKyAgICBleHBsaWNp
dCBET01BcHBsaWNhdGlvbkNhY2hlKERPTVdpbmRvdyYpOwogCiAgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFyUHJvcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3BwCmluZGV4IDk0NDY2MzRlMzZkZGY4
YzkxMDEyNmE5YmJlZmViNTg0ZWRhNDczN2QuLjhkNzkxOGQyZTY3MzA1YmFkOThhNDdkMTE3Yzdk
MTRjZjI3MzhjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFyUHJvcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9CYXJQcm9wLmNwcApAQCAtMzUsOCArMzUsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJhclByb3A6OkJhclByb3AoRnJhbWUqIGZyYW1lLCBU
eXBlIHR5cGUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK0JhclByb3A6OkJhclBy
b3AoRE9NV2luZG93JiB3aW5kb3csIFR5cGUgdHlwZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5
KCZ3aW5kb3cpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KQEAgLTQ4LDkgKzQ4LDEwIEBAIEJh
clByb3A6OlR5cGUgQmFyUHJvcDo6dHlwZSgpIGNvbnN0CiAKIGJvb2wgQmFyUHJvcDo6dmlzaWJs
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9CYXJQcm9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclBy
b3AuaAppbmRleCA3OGQ3ZDFlNzM4ZmYzOTVhNjc3YTljMzIwOGRiMzdjM2NmNDFjNzdkLi4xYjEy
MTJiMjQ5ZDFiNGY5N2ZhMGYxOTRjM2I5Zjc1MzExOTEzY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0JhclByb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3Au
aApAQCAtMzUsMTkgKzM1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJh
bWU7Ci0KIGNsYXNzIEJhclByb3AgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxCYXJQcm9wPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAg
ICBlbnVtIFR5cGUgeyBMb2NhdGlvbmJhciwgTWVudWJhciwgUGVyc29uYWxiYXIsIFNjcm9sbGJh
cnMsIFN0YXR1c2JhciwgVG9vbGJhciB9OwogCi0gICAgc3RhdGljIFJlZjxCYXJQcm9wPiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBUeXBlIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFyUHJv
cChmcmFtZSwgdHlwZSkpOyB9CisgICAgc3RhdGljIFJlZjxCYXJQcm9wPiBjcmVhdGUoRE9NV2lu
ZG93JiB3aW5kb3csIFR5cGUgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXJQcm9wKHdp
bmRvdywgdHlwZSkpOyB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBib29sIHZpc2li
bGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBCYXJQcm9wKEZyYW1lKiwgVHlwZSk7CisgICAg
QmFyUHJvcChET01XaW5kb3cmLCBUeXBlKTsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCBlOGJhMjdjYmFlYWYzODE5YjAwNDBhNDBi
NmExY2U1ZDZhZDdmY2MzLi41ZTA2N2NmNzJmZWE5Yjk0ZTM1NTUyOTljYWEwZDliNTdiNzMwMTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC01MSwxNSArNTEsMTUgQEAg
c3RhdGljIE5vZGUqIHNlbGVjdGlvblNoYWRvd0FuY2VzdG9yKEZyYW1lJiBmcmFtZSkKICAgICBy
ZXR1cm4gZnJhbWUuZG9jdW1lbnQoKS0+YW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUobm9kZSk7CiB9
CiAKLURPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSkKLSAgICA6IERPTVdp
bmRvd1Byb3BlcnR5KCZmcmFtZSkKK0RPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKERPTVdpbmRv
dyYgd2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKIH0KIAogY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgRE9NU2VsZWN0aW9uOjp2aXNpYmxlU2VsZWN0aW9uKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobV9mcmFtZSk7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpOworICAgIEFTU0VSVChmcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWUo
KS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiB9CiAKIHN0YXRpYyBQb3NpdGlvbiBhbmNob3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCkBAIC04Niw3MiArODYs
NzQgQEAgc3RhdGljIFBvc2l0aW9uIGV4dGVudFBvc2l0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbikKIAogTm9kZSogRE9NU2VsZWN0aW9uOjphbmNob3JOb2RlKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghZnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHNoYWRvd0FkanVzdGVkTm9k
ZShhbmNob3JQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0KIAogdW5zaWduZWQgRE9N
U2VsZWN0aW9uOjphbmNob3JPZmZzZXQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAg
ICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFkb3dBZGp1
c3RlZE9mZnNldChhbmNob3JQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0KIAogTm9k
ZSogRE9NU2VsZWN0aW9uOjpmb2N1c05vZGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkK
KyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBz
aGFkb3dBZGp1c3RlZE5vZGUoZm9jdXNQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0K
IAogdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpmb2N1c09mZnNldCgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIHNoYWRvd0FkanVzdGVkT2Zmc2V0KGZvY3VzUG9zaXRpb24odmlzaWJsZVNlbGVjdGlvbigp
KSk7CiB9CiAKIE5vZGUqIERPTVNlbGVjdGlvbjo6YmFzZU5vZGUoKSBjb25zdAogewotICAgIGlm
ICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc2hhZG93QWRqdXN0ZWROb2RlKGJhc2VQb3Np
dGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0KIAogdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpi
YXNlT2Zmc2V0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gc2hhZG93QWRqdXN0ZWRPZmZzZXQoYmFz
ZVBvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24oKSkpOwogfQogCiBOb2RlKiBET01TZWxlY3Rpb246
OmV4dGVudE5vZGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gc2hhZG93QWRqdXN0ZWROb2RlKGV4dGVudFBvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24oKSkp
OwogfQogCiB1bnNpZ25lZCBET01TZWxlY3Rpb246OmV4dGVudE9mZnNldCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIHNoYWRvd0FkanVzdGVkT2Zmc2V0KGV4dGVudFBvc2l0aW9uKHZpc2libGVTZWxl
Y3Rpb24oKSkpOwogfQogCiBib29sIERPTVNlbGVjdGlvbjo6aXNDb2xsYXBzZWQoKSBjb25zdAog
ewotICAgIGlmICghbV9mcmFtZSB8fCBzZWxlY3Rpb25TaGFkb3dBbmNlc3RvcigqbV9mcmFtZSkp
CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgc2Vs
ZWN0aW9uU2hhZG93QW5jZXN0b3IoKmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS5pc1JhbmdlKCk7CisgICAgcmV0dXJuICFmcmFt
ZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpOwogfQogCiBTdHJpbmcgRE9NU2VsZWN0aW9uOjp0eXBl
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAiTm9uZSJfczsKLSAgICBh
dXRvJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAg
ICAgICAgcmV0dXJuICJOb25lIl9zOwogICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKQpAQCAt
MTYxLDcgKzE2Myw4IEBAIFN0cmluZyBET01TZWxlY3Rpb246OnR5cGUoKSBjb25zdAogCiB1bnNp
Z25lZCBET01TZWxlY3Rpb246OnJhbmdlQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiAhbV9m
cmFtZSB8fCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5pc05vbmUoKSA/IDAgOiAxOworICAgIGF1dG8q
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICByZXR1cm4gIWZyYW1lIHx8IGZyYW1lLT5zZWxl
Y3Rpb24oKS5pc05vbmUoKSA/IDAgOiAxOwogfQogCiB2b2lkIERPTVNlbGVjdGlvbjo6Y29sbGFw
c2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtMTY5LDQxICsxNzIsNDQgQEAgdm9p
ZCBET01TZWxlY3Rpb246OmNvbGxhcHNlKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKICAg
ICBpZiAoIWlzVmFsaWRGb3JQb3NpdGlvbihub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmPEZyYW1lPiBwcm90ZWN0b3IoKm1fZnJhbWUpOwotICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
Lm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgb2Zmc2V0KSwgRE9XTlNU
UkVBTSk7CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZSgqZnJhbWUoKSk7CisgICAgcHJv
dGVjdGVkRnJhbWUtPnNlbGVjdGlvbigpLm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obm9kZSwgb2Zmc2V0KSwgRE9XTlNUUkVBTSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TVNlbGVjdGlvbjo6Y29sbGFwc2VUb0VuZCgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1
dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4geyB9OwotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOworICAg
IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9u
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKIAotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKKyAgICBSZWY8RnJhbWU+
IHByb3RlY3RvcigqZnJhbWUpOwogICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVj
dGlvbigpLmVuZCgpLCBET1dOU1RSRUFNKTsKICAgICByZXR1cm4geyB9OwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmNvbGxhcHNlVG9TdGFydCgpCiB7Ci0gICAgaWYgKCFt
X2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNl
bGVjdGlvbigpOworICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAg
ICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKIAotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
KyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwogICAgIHNlbGVjdGlvbi5tb3ZlVG8o
c2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pOwogICAgIHJldHVybiB7
IH07CiB9CiAKIHZvaWQgRE9NU2VsZWN0aW9uOjplbXB0eSgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1l
KQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246OnNldEJhc2VB
bmRFeHRlbnQoTm9kZSogYmFzZU5vZGUsIHVuc2lnbmVkIGJhc2VPZmZzZXQsIE5vZGUqIGV4dGVu
dE5vZGUsIHVuc2lnbmVkIGV4dGVudE9mZnNldCkKQEAgLTIxMSw4ICsyMTcsOCBAQCB2b2lkIERP
TVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudChOb2RlKiBiYXNlTm9kZSwgdW5zaWduZWQgYmFz
ZU9mZnNldCwgTm9kZSogZQogICAgIGlmICghaXNWYWxpZEZvclBvc2l0aW9uKGJhc2VOb2RlKSB8
fCAhaXNWYWxpZEZvclBvc2l0aW9uKGV4dGVudE5vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWY8RnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihiYXNlTm9kZSwgYmFzZU9mZnNl
dCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihleHRlbnROb2RlLCBleHRlbnRPZmZzZXQp
LCBET1dOU1RSRUFNKTsKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKCpmcmFtZSgpKTsK
KyAgICBwcm90ZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihiYXNlTm9kZSwgYmFzZU9mZnNldCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihleHRlbnROb2RlLCBleHRlbnRPZmZzZXQpLCBET1dOU1RSRUFNKTsKIH0KIAogdm9pZCBE
T01TZWxlY3Rpb246OnNldFBvc2l0aW9uKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKQEAg
LTIyMCwxMyArMjI2LDE0IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpzZXRQb3NpdGlvbihOb2RlKiBu
b2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgaWYgKCFpc1ZhbGlkRm9yUG9zaXRpb24obm9kZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
LSAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVk
RnJhbWUoKmZyYW1lKCkpOworICAgIHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8o
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOwog
fQogCiB2b2lkIERPTVNlbGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgYWx0ZXJTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBjb25zdCBTdHJpbmcmIGdyYW51bGFyaXR5
U3RyaW5nKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVTZWxl
Y3Rpb246OkVBbHRlcmF0aW9uIGFsdGVyOwpAQCAtMjcxLDIxICsyNzgsMjIgQEAgdm9pZCBET01T
ZWxlY3Rpb246Om1vZGlmeShjb25zdCBTdHJpbmcmIGFsdGVyU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvblN0cmkKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5tb2RpZnko
YWx0ZXIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9y
KCpmcmFtZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLm1vZGlmeShhbHRlciwgZGlyZWN0aW9u
LCBncmFudWxhcml0eSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVNlbGVjdGlvbjo6ZXh0
ZW5kKE5vZGUmIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisg
ICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgaWYgKG9mZnNldCA+IChub2RlLmlzQ2hhcmFjdGVyRGF0YU5vZGUo
KSA/IGNhcmV0TWF4T2Zmc2V0KG5vZGUpIDogbm9kZS5jb3VudENoaWxkTm9kZXMoKSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogICAgIGlmICghaXNWYWxp
ZEZvclBvc2l0aW9uKCZub2RlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5zZXRFeHRl
bnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZub2RlLCBvZmZzZXQpLCBET1dOU1RSRUFN
KTsKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRFeHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZub2RlLCBvZmZzZXQp
LCBET1dOU1RSRUFNKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yOTcsMTMgKzMwNSwxNCBA
QCBFeGNlcHRpb25PcjxSZWY8UmFuZ2U+PiBET01TZWxlY3Rpb246OmdldFJhbmdlQXQodW5zaWdu
ZWQgaW5kZXgpCiAgICAgLy8gSWYgeW91J3JlIGhpdHRpbmcgdGhpcywgeW91J3ZlIGFkZGVkIGJy
b2tlbiBtdWx0aS1yYW5nZSBzZWxlY3Rpb24gc3VwcG9ydC4KICAgICBBU1NFUlQocmFuZ2VDb3Vu
dCgpID09IDEpOwogCi0gICAgaWYgKGF1dG8qIHNoYWRvd0FuY2VzdG9yID0gc2VsZWN0aW9uU2hh
ZG93QW5jZXN0b3IoKm1fZnJhbWUpKSB7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgp
OworICAgIGlmIChhdXRvKiBzaGFkb3dBbmNlc3RvciA9IHNlbGVjdGlvblNoYWRvd0FuY2VzdG9y
KCpmcmFtZSkpIHsKICAgICAgICAgYXV0byogY29udGFpbmVyID0gc2hhZG93QW5jZXN0b3ItPnBh
cmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0g
c2hhZG93QW5jZXN0b3ItPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICAgICAgcmV0dXJuIFJhbmdl
OjpjcmVhdGUoc2hhZG93QW5jZXN0b3ItPmRvY3VtZW50KCksIGNvbnRhaW5lciwgb2Zmc2V0LCBj
b250YWluZXIsIG9mZnNldCk7CiAgICAgfQogCi0gICAgYXV0byBmaXJzdFJhbmdlID0gbV9mcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOworICAgIGF1dG8gZmlyc3RS
YW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CiAgICAg
QVNTRVJUKGZpcnN0UmFuZ2UpOwogICAgIGlmICghZmlyc3RSYW5nZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CkBAIC0zMTIsMTkgKzMyMSwyMSBAQCBFeGNl
cHRpb25PcjxSZWY8UmFuZ2U+PiBET01TZWxlY3Rpb246OmdldFJhbmdlQXQodW5zaWduZWQgaW5k
ZXgpCiAKIHZvaWQgRE9NU2VsZWN0aW9uOjpyZW1vdmVBbGxSYW5nZXMoKQogewotICAgIGlmICgh
bV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CiB9CiAKIHZvaWQgRE9NU2VsZWN0aW9uOjph
ZGRSYW5nZShSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7CisgICAgUmVmPEZyYW1lPiBwcm90
ZWN0b3IoKmZyYW1lKTsKIAotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlv
bigpOworICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICBpZiAo
c2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIHNlbGVjdGlvbi5tb3ZlVG8oJnJhbmdlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzY2LDEwICszNzcsMTEgQEAgdm9pZCBET01TZWxlY3Rpb246
OmFkZFJhbmdlKFJhbmdlJiByYW5nZSkKIAogdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21E
b2N1bWVudCgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBz
ZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zNzcsMTggKzM4OSwxOSBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZGVsZXRl
RnJvbURvY3VtZW50KCkKICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UgfHwgc2VsZWN0ZWRSYW5nZS0+
c2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8RnJhbWU+IHByb3RlY3Rv
cigqbV9mcmFtZSk7CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsKICAgICBzZWxl
Y3RlZFJhbmdlLT5kZWxldGVDb250ZW50cygpOwogICAgIHNldEJhc2VBbmRFeHRlbnQoJnNlbGVj
dGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KCks
ICZzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9m
ZnNldCgpKTsKIH0KIAogYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZShOb2RlJiBub2Rl
LCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0
byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOwot
ICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICE9ICZub2RlLmRvY3VtZW50KCkgfHwgc2VsZWN0
aW9uLmlzTm9uZSgpKQorICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsK
KyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgIT0gJm5vZGUuZG9jdW1lbnQoKSB8fCBzZWxlY3Rp
b24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZjxOb2RlPiBwcm90
ZWN0ZWROb2RlKG5vZGUpOwpAQCAtNDMwLDkgKzQ0MywxMCBAQCB2b2lkIERPTVNlbGVjdGlvbjo6
c2VsZWN0QWxsQ2hpbGRyZW4oTm9kZSYgbm9kZSkKIAogU3RyaW5nIERPTVNlbGVjdGlvbjo6dG9T
dHJpbmcoKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBwbGFpblRleHQobV9mcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYWluVGV4dChmcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAKIE5vZGUqIERP
TVNlbGVjdGlvbjo6c2hhZG93QWRqdXN0ZWROb2RlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikg
Y29uc3QKQEAgLTQ0MSw3ICs0NTUsNyBAQCBOb2RlKiBET01TZWxlY3Rpb246OnNoYWRvd0FkanVz
dGVkTm9kZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYXV0byogY29udGFpbmVyTm9kZSA9IHBvc2l0aW9uLmNvbnRhaW5lck5v
ZGUoKTsKLSAgICBhdXRvKiBhZGp1c3RlZE5vZGUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hbmNl
c3Rvck5vZGVJblRoaXNTY29wZShjb250YWluZXJOb2RlKTsKKyAgICBhdXRvKiBhZGp1c3RlZE5v
ZGUgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShjb250YWlu
ZXJOb2RlKTsKICAgICBpZiAoIWFkanVzdGVkTm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTQ1Nyw3ICs0NzEsNyBAQCB1bnNpZ25lZCBET01TZWxlY3Rpb246OnNoYWRvd0FkanVz
dGVkT2Zmc2V0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBhdXRvKiBjb250YWluZXJOb2RlID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgp
OwotICAgIGF1dG8qIGFkanVzdGVkTm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmFuY2VzdG9y
Tm9kZUluVGhpc1Njb3BlKGNvbnRhaW5lck5vZGUpOworICAgIGF1dG8qIGFkanVzdGVkTm9kZSA9
IGZyYW1lKCktPmRvY3VtZW50KCktPmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKGNvbnRhaW5lck5v
ZGUpOwogICAgIGlmICghYWRqdXN0ZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNDY5
LDExICs0ODMsMTIgQEAgdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3RlZE9mZnNl
dChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAKIGJvb2wgRE9NU2VsZWN0aW9uOjpp
c1ZhbGlkRm9yUG9zaXRpb24oTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUp
CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiAmbm9kZS0+ZG9jdW1lbnQoKSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAg
IHJldHVybiAmbm9kZS0+ZG9jdW1lbnQoKSA9PSBmcmFtZS0+ZG9jdW1lbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKaW5kZXggNjU4
MzZhOWM4M2YyOGY2ODljZmI3ZjE1ZmE3ZDFjNmZjMzc3YjUxMy4uMTE4ZTk0ZWYwMDc0NzJkZjFh
NTRhNjJhMDAxZDc3MjhmMGYwMGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIGNsYXNzIERPTVNlbGVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVNlbGVjdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQ
cm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01TZWxlY3Rpb24+IGNyZWF0ZShG
cmFtZSYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NU2VsZWN0aW9uKGZyYW1lKSk7
IH0KKyAgICBzdGF0aWMgUmVmPERPTVNlbGVjdGlvbj4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERPTVNlbGVjdGlvbih3aW5kb3cpKTsgfQogCiAgICAg
Tm9kZSogYmFzZU5vZGUoKSBjb25zdDsKICAgICBOb2RlKiBleHRlbnROb2RlKCkgY29uc3Q7CkBA
IC04MCw5ICs4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtcHR5KCk7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgRE9NU2VsZWN0aW9uKEZyYW1lJik7CisgICAgZXhwbGljaXQgRE9NU2VsZWN0
aW9uKERPTVdpbmRvdyYpOwogCi0gICAgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBhY2Nlc3Nv
cnMsIGNhbGxlciBtdXN0IG51bGwtY2hlY2sgbV9mcmFtZS4KKyAgICAvLyBDb252ZW5pZW5jZSBt
ZXRob2QgZm9yIGFjY2Vzc29ycywgY2FsbGVyIG11c3QgbnVsbC1jaGVjayBmcmFtZSgpLgogICAg
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHZpc2libGVTZWxlY3Rpb24oKSBjb25zdDsKIAogICAg
IE5vZGUqIHNoYWRvd0FkanVzdGVkTm9kZShjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGYwYzAyZDVkZjgxM2FmMTE3OTFhYzE3ZjFjZGI1YjE5
MjFkZmExYjIuLmFiNWU5OTdiOTA3MTI0NjQxM2VkYzdkNGJkZjczNDQ3NWNjMmQzNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTY4MywyMSArNjgzLDIxIEBAIGludCBET01XaW5k
b3c6Om9yaWVudGF0aW9uKCkgY29uc3QKIAogI2VuZGlmCiAKLVNjcmVlbiogRE9NV2luZG93Ojpz
Y3JlZW4oKSBjb25zdAorU2NyZWVuKiBET01XaW5kb3c6OnNjcmVlbigpCiB7CiAgICAgaWYgKCFp
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgaWYgKCFtX3NjcmVlbikKLSAgICAgICAgbV9zY3JlZW4gPSBTY3JlZW46OmNyZWF0ZShtX2Zy
YW1lKTsKKyAgICAgICAgbV9zY3JlZW4gPSBTY3JlZW46OmNyZWF0ZSgqdGhpcyk7CiAgICAgcmV0
dXJuIG1fc2NyZWVuLmdldCgpOwogfQogCi1IaXN0b3J5KiBET01XaW5kb3c6Omhpc3RvcnkoKSBj
b25zdAorSGlzdG9yeSogRE9NV2luZG93OjpoaXN0b3J5KCkKIHsKICAgICBpZiAoIWlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
IW1faGlzdG9yeSkKLSAgICAgICAgbV9oaXN0b3J5ID0gSGlzdG9yeTo6Y3JlYXRlKCptX2ZyYW1l
KTsKKyAgICAgICAgbV9oaXN0b3J5ID0gSGlzdG9yeTo6Y3JlYXRlKCp0aGlzKTsKICAgICByZXR1
cm4gbV9oaXN0b3J5LmdldCgpOwogfQogCkBAIC03MTEsNTcgKzcxMSw1NyBAQCBDcnlwdG8qIERP
TVdpbmRvdzo6Y3J5cHRvKCkgY29uc3QKICAgICByZXR1cm4gbV9jcnlwdG8uZ2V0KCk7CiB9CiAK
LUJhclByb3AqIERPTVdpbmRvdzo6bG9jYXRpb25iYXIoKSBjb25zdAorQmFyUHJvcCogRE9NV2lu
ZG93Ojpsb2NhdGlvbmJhcigpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX2xvY2F0aW9uYmFyKQot
ICAgICAgICBtX2xvY2F0aW9uYmFyID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6
OkxvY2F0aW9uYmFyKTsKKyAgICAgICAgbV9sb2NhdGlvbmJhciA9IEJhclByb3A6OmNyZWF0ZSgq
dGhpcywgQmFyUHJvcDo6TG9jYXRpb25iYXIpOwogICAgIHJldHVybiBtX2xvY2F0aW9uYmFyLmdl
dCgpOwogfQogCi1CYXJQcm9wKiBET01XaW5kb3c6Om1lbnViYXIoKSBjb25zdAorQmFyUHJvcCog
RE9NV2luZG93OjptZW51YmFyKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fbWVudWJhcikKLSAg
ICAgICAgbV9tZW51YmFyID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6Ok1lbnVi
YXIpOworICAgICAgICBtX21lbnViYXIgPSBCYXJQcm9wOjpjcmVhdGUoKnRoaXMsIEJhclByb3A6
Ok1lbnViYXIpOwogICAgIHJldHVybiBtX21lbnViYXIuZ2V0KCk7CiB9CiAKLUJhclByb3AqIERP
TVdpbmRvdzo6cGVyc29uYWxiYXIoKSBjb25zdAorQmFyUHJvcCogRE9NV2luZG93OjpwZXJzb25h
bGJhcigpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3BlcnNvbmFsYmFyKQotICAgICAgICBtX3Bl
cnNvbmFsYmFyID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6OlBlcnNvbmFsYmFy
KTsKKyAgICAgICAgbV9wZXJzb25hbGJhciA9IEJhclByb3A6OmNyZWF0ZSgqdGhpcywgQmFyUHJv
cDo6UGVyc29uYWxiYXIpOwogICAgIHJldHVybiBtX3BlcnNvbmFsYmFyLmdldCgpOwogfQogCi1C
YXJQcm9wKiBET01XaW5kb3c6OnNjcm9sbGJhcnMoKSBjb25zdAorQmFyUHJvcCogRE9NV2luZG93
OjpzY3JvbGxiYXJzKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fc2Nyb2xsYmFycykKLSAgICAg
ICAgbV9zY3JvbGxiYXJzID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6OlNjcm9s
bGJhcnMpOworICAgICAgICBtX3Njcm9sbGJhcnMgPSBCYXJQcm9wOjpjcmVhdGUoKnRoaXMsIEJh
clByb3A6OlNjcm9sbGJhcnMpOwogICAgIHJldHVybiBtX3Njcm9sbGJhcnMuZ2V0KCk7CiB9CiAK
LUJhclByb3AqIERPTVdpbmRvdzo6c3RhdHVzYmFyKCkgY29uc3QKK0JhclByb3AqIERPTVdpbmRv
dzo6c3RhdHVzYmFyKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fc3RhdHVzYmFyKQotICAgICAg
ICBtX3N0YXR1c2JhciA9IEJhclByb3A6OmNyZWF0ZShtX2ZyYW1lLCBCYXJQcm9wOjpTdGF0dXNi
YXIpOworICAgICAgICBtX3N0YXR1c2JhciA9IEJhclByb3A6OmNyZWF0ZSgqdGhpcywgQmFyUHJv
cDo6U3RhdHVzYmFyKTsKICAgICByZXR1cm4gbV9zdGF0dXNiYXIuZ2V0KCk7CiB9CiAKLUJhclBy
b3AqIERPTVdpbmRvdzo6dG9vbGJhcigpIGNvbnN0CitCYXJQcm9wKiBET01XaW5kb3c6OnRvb2xi
YXIoKQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmICghbV90b29sYmFyKQotICAgICAgICBtX3Rvb2xiYXIg
PSBCYXJQcm9wOjpjcmVhdGUobV9mcmFtZSwgQmFyUHJvcDo6VG9vbGJhcik7CisgICAgICAgIG1f
dG9vbGJhciA9IEJhclByb3A6OmNyZWF0ZSgqdGhpcywgQmFyUHJvcDo6VG9vbGJhcik7CiAgICAg
cmV0dXJuIG1fdG9vbGJhci5nZXQoKTsKIH0KIApAQCAtNzcyLDIzICs3NzIsMjMgQEAgUGFnZUNv
bnNvbGVDbGllbnQqIERPTVdpbmRvdzo6Y29uc29sZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJh
bWUtPnBhZ2UoKSA/ICZtX2ZyYW1lLT5wYWdlKCktPmNvbnNvbGUoKSA6IG51bGxwdHI7CiB9CiAK
LURPTUFwcGxpY2F0aW9uQ2FjaGUqIERPTVdpbmRvdzo6YXBwbGljYXRpb25DYWNoZSgpIGNvbnN0
CitET01BcHBsaWNhdGlvbkNhY2hlKiBET01XaW5kb3c6OmFwcGxpY2F0aW9uQ2FjaGUoKQogewog
ICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmICghbV9hcHBsaWNhdGlvbkNhY2hlKQotICAgICAgICBtX2FwcGxpY2F0
aW9uQ2FjaGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKm1fZnJhbWUpOworICAgICAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKnRoaXMp
OwogICAgIHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGUuZ2V0KCk7CiB9CiAKLU5hdmlnYXRvciog
RE9NV2luZG93OjpuYXZpZ2F0b3IoKSBjb25zdAorTmF2aWdhdG9yKiBET01XaW5kb3c6Om5hdmln
YXRvcigpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fbmF2aWdhdG9yKSB7CiAgICAgICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgICAgICBtX25hdmlnYXRvciA9IE5h
dmlnYXRvcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICptX2ZyYW1lKTsKKyAg
ICAgICAgbV9uYXZpZ2F0b3IgPSBOYXZpZ2F0b3I6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqdGhpcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOwpA
QCAtODEwLDIxICs4MTAsMjEgQEAgZG91YmxlIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29u
c3QKICAgICByZXR1cm4gcGVyZm9ybWFuY2UoKSA/IHBlcmZvcm1hbmNlKCktPm5vdygpIC8gMTAw
MCA6IDA7CiB9CiAKLUxvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QKK0xvY2F0
aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxh
eWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fbG9jYXRp
b24pCi0gICAgICAgIG1fbG9jYXRpb24gPSBMb2NhdGlvbjo6Y3JlYXRlKG1fZnJhbWUpOworICAg
ICAgICBtX2xvY2F0aW9uID0gTG9jYXRpb246OmNyZWF0ZSgqdGhpcyk7CiAgICAgcmV0dXJuIG1f
bG9jYXRpb24uZ2V0KCk7CiB9CiAKLVZpc3VhbFZpZXdwb3J0KiBET01XaW5kb3c6OnZpc3VhbFZp
ZXdwb3J0KCkgY29uc3QKK1Zpc3VhbFZpZXdwb3J0KiBET01XaW5kb3c6OnZpc3VhbFZpZXdwb3J0
KCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fdmlzdWFsVmlld3BvcnQgJiYgIW1fc3VzcGVuZGVk
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKQotICAgICAgICBtX3Zpc3VhbFZpZXdwb3J0ID0gVmlzdWFs
Vmlld3BvcnQ6OmNyZWF0ZShtX2ZyYW1lKTsKKyAgICAgICAgbV92aXN1YWxWaWV3cG9ydCA9IFZp
c3VhbFZpZXdwb3J0OjpjcmVhdGUoKnRoaXMpOwogICAgIHJldHVybiBtX3Zpc3VhbFZpZXdwb3J0
LmdldCgpOwogfQogCkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBET01XaW5kb3c6OnNob3VsZEhh
dmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHJl
dHVybiBoYXNVc2VyTWVzc2FnZUhhbmRsZXI7CiB9CiAKLVdlYktpdE5hbWVzcGFjZSogRE9NV2lu
ZG93Ojp3ZWJraXROYW1lc3BhY2UoKSBjb25zdAorV2ViS2l0TmFtZXNwYWNlKiBET01XaW5kb3c6
OndlYmtpdE5hbWVzcGFjZSgpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCBXZWJL
aXROYW1lc3BhY2UqIERPTVdpbmRvdzo6d2Via2l0TmFtZXNwYWNlKCkgY29uc3QKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV93ZWJraXROYW1lc3Bh
Y2UpCi0gICAgICAgIG1fd2Via2l0TmFtZXNwYWNlID0gV2ViS2l0TmFtZXNwYWNlOjpjcmVhdGUo
Km1fZnJhbWUsIHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKSk7CisgICAgICAgIG1fd2Via2l0
TmFtZXNwYWNlID0gV2ViS2l0TmFtZXNwYWNlOjpjcmVhdGUoKnRoaXMsIHBhZ2UtPnVzZXJDb250
ZW50UHJvdmlkZXIoKSk7CiAgICAgcmV0dXJuIG1fd2Via2l0TmFtZXNwYWNlLmdldCgpOwogfQog
CiAjZW5kaWYKIAotRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3Jh
Z2UoKSBjb25zdAorRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3Jh
Z2UoKQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtODg0LDExICs4ODQsMTEgQEAgRXhjZXB0aW9uT3I8U3RvcmFn
ZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5z
dG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotICAgIG1fc2Vz
c2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJl
YSkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoc3RvcmFnZUFyZWEpKTsKICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZS5nZXQoKTsKIH0K
IAotRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29uc3QK
K0V4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpCiB7CiAgICAg
aWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC05MTgsNyArOTE4LDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6
bG9jYWxTdG9yYWdlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRv
IHN0b3JhZ2VBcmVhID0gcGFnZS0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkubG9jYWxTdG9y
YWdlQXJlYSgqZG9jdW1lbnQpOwotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRl
KG1fZnJhbWUsIFdURk1vdmUoc3RvcmFnZUFyZWEpKTsKKyAgICBtX2xvY2FsU3RvcmFnZSA9IFN0
b3JhZ2U6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBt
X2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApAQCAtMTAwOSw3ICsxMDA5LDcgQEAgRE9NU2VsZWN0
aW9uKiBET01XaW5kb3c6OmdldFNlbGVjdGlvbigpCiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3Bs
YXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3NlbGVj
dGlvbikKLSAgICAgICAgbV9zZWxlY3Rpb24gPSBET01TZWxlY3Rpb246OmNyZWF0ZSgqbV9mcmFt
ZSk7CisgICAgICAgIG1fc2VsZWN0aW9uID0gRE9NU2VsZWN0aW9uOjpjcmVhdGUoKnRoaXMpOwog
ICAgIHJldHVybiBtX3NlbGVjdGlvbi5nZXQoKTsKIH0KIApAQCAtMTQ5NSwxMiArMTQ5NSwxMiBA
QCBEb2N1bWVudCogRE9NV2luZG93Ojpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25j
YXN0PERvY3VtZW50PihDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKIH0KIAotUmVmUHRyPFN0eWxlTWVkaWE+IERPTVdpbmRvdzo6c3R5bGVNZWRp
YSgpIGNvbnN0CitSZWZQdHI8U3R5bGVNZWRpYT4gRE9NV2luZG93OjpzdHlsZU1lZGlhKCkKIHsK
ICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fbWVkaWEpCi0gICAgICAgIG1fbWVkaWEgPSBTdHlsZU1lZGlh
OjpjcmVhdGUobV9mcmFtZSk7CisgICAgICAgIG1fbWVkaWEgPSBTdHlsZU1lZGlhOjpjcmVhdGUo
KnRoaXMpOwogICAgIHJldHVybiBtX21lZGlhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApp
bmRleCAzZWQ0NzAzN2Y4MWMyNTExZWExNDE4NDIwZThhOTJhYWIyMDI5MjYwLi43YWU4OTE1ZmMz
MWYwOTNhOWI5YmRlODUxMzViMTZiNzJjMTc2MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
QEAgLTEzMSwyMCArMTMxLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjYW5TaG93TW9k
YWxEaWFsb2coY29uc3QgRnJhbWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblNo
b3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2wpOwogCi0gICAgU2NyZWVuKiBzY3JlZW4oKSBjb25z
dDsKLSAgICBIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7CisgICAgU2NyZWVuKiBzY3JlZW4oKTsK
KyAgICBIaXN0b3J5KiBoaXN0b3J5KCk7CiAgICAgQ3J5cHRvKiBjcnlwdG8oKSBjb25zdDsKLSAg
ICBCYXJQcm9wKiBsb2NhdGlvbmJhcigpIGNvbnN0OwotICAgIEJhclByb3AqIG1lbnViYXIoKSBj
b25zdDsKLSAgICBCYXJQcm9wKiBwZXJzb25hbGJhcigpIGNvbnN0OwotICAgIEJhclByb3AqIHNj
cm9sbGJhcnMoKSBjb25zdDsKLSAgICBCYXJQcm9wKiBzdGF0dXNiYXIoKSBjb25zdDsKLSAgICBC
YXJQcm9wKiB0b29sYmFyKCkgY29uc3Q7Ci0gICAgTmF2aWdhdG9yKiBuYXZpZ2F0b3IoKSBjb25z
dDsKKyAgICBCYXJQcm9wKiBsb2NhdGlvbmJhcigpOworICAgIEJhclByb3AqIG1lbnViYXIoKTsK
KyAgICBCYXJQcm9wKiBwZXJzb25hbGJhcigpOworICAgIEJhclByb3AqIHNjcm9sbGJhcnMoKTsK
KyAgICBCYXJQcm9wKiBzdGF0dXNiYXIoKTsKKyAgICBCYXJQcm9wKiB0b29sYmFyKCk7CisgICAg
TmF2aWdhdG9yKiBuYXZpZ2F0b3IoKTsKICAgICBOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KLSAgICBOYXZpZ2F0b3IqIGNs
aWVudEluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbmF2aWdhdG9yKCk7IH0KKyAgICBOYXZp
Z2F0b3IqIGNsaWVudEluZm9ybWF0aW9uKCkgeyByZXR1cm4gbmF2aWdhdG9yKCk7IH0KIAotICAg
IExvY2F0aW9uKiBsb2NhdGlvbigpIGNvbnN0OworICAgIExvY2F0aW9uKiBsb2NhdGlvbigpOwog
ICAgIHZvaWQgc2V0TG9jYXRpb24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYg
Zmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgbG9jYXRpb24sIFNldExvY2F0aW9uTG9ja2luZyA9
IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSk7CiAKICAgICBET01TZWxlY3Rpb24qIGdl
dFNlbGVjdGlvbigpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENTU09N
IFZpZXcgTW9kdWxlCiAKLSAgICBSZWZQdHI8U3R5bGVNZWRpYT4gc3R5bGVNZWRpYSgpIGNvbnN0
OworICAgIFJlZlB0cjxTdHlsZU1lZGlhPiBzdHlsZU1lZGlhKCk7CiAKICAgICAvLyBET00gTGV2
ZWwgMiBTdHlsZSBJbnRlcmZhY2UKIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2l6ZUJ5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0OwogICAgIHZvaWQgcmVzaXplVG8o
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgY29uc3Q7CiAKLSAgICBWaXN1YWxWaWV3cG9ydCog
dmlzdWFsVmlld3BvcnQoKSBjb25zdDsKKyAgICBWaXN1YWxWaWV3cG9ydCogdmlzdWFsVmlld3Bv
cnQoKTsKIAogICAgIC8vIFRpbWVycwogICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0VGltZW91dChK
U0M6OkV4ZWNTdGF0ZSYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGlt
ZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKQEAg
LTI4MywxMiArMjgzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZygpOwog
CiAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCi0gICAgRXhjZXB0aW9uT3I8U3RvcmFn
ZSo+IHNlc3Npb25TdG9yYWdlKCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IGxv
Y2FsU3RvcmFnZSgpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBzZXNzaW9uU3Rv
cmFnZSgpOworICAgIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBsb2NhbFN0b3JhZ2UoKTsKICAgICBT
dG9yYWdlKiBvcHRpb25hbFNlc3Npb25TdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
U3RvcmFnZS5nZXQoKTsgfQogICAgIFN0b3JhZ2UqIG9wdGlvbmFsTG9jYWxTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2UuZ2V0KCk7IH0KIAotICAgIERPTUFwcGxpY2F0aW9u
Q2FjaGUqIGFwcGxpY2F0aW9uQ2FjaGUoKSBjb25zdDsKKyAgICBET01BcHBsaWNhdGlvbkNhY2hl
KiBhcHBsaWNhdGlvbkNhY2hlKCk7CiAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogb3B0aW9uYWxB
cHBsaWNhdGlvbkNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlLmdldCgp
OyB9CiAKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIGN1c3RvbUVsZW1lbnRSZWdpc3RyeSgp
IHsgcmV0dXJuIG1fY3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmdldCgpOyB9CkBAIC0zMjEsNyArMzIx
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBi
b29sIHNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZChET01XcmFwcGVyV29ybGQmKTsK
LSAgICBXZWJLaXROYW1lc3BhY2UqIHdlYmtpdE5hbWVzcGFjZSgpIGNvbnN0OworICAgIFdlYktp
dE5hbWVzcGFjZSogd2Via2l0TmFtZXNwYWNlKCk7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBX
aGVuIHRoaXMgRE9NV2luZG93IGlzIG5vIGxvbmdlciB0aGUgYWN0aXZlIERPTVdpbmRvdyAoaS5l
LiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCA4MGUy
MWMyN2E0NzExYmE4N2FjYzkwZjY5ZTYxOGQ3MzVhNTUyYjA1Li5mNTRlODE2MThlYmM3YjJiYzRk
MWY5NzJmYWU3ODM2Mzk3ZjU2ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd0V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dF
eHRlbnNpb24uY3BwCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RE9NV2luZG93RXh0ZW5zaW9uOjpET01XaW5kb3dFeHRlbnNpb24oRnJhbWUqIGZyYW1lLCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQotICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCitET01X
aW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihET01XaW5kb3cqIHdpbmRvdywgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdykKICAg
ICAsIG1fd29ybGQod29ybGQpCiAgICAgLCBtX3dhc0RldGFjaGVkKGZhbHNlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKaW5kZXggZGRlMGQ2YzIwYjJlNmQxMzY1
ODNlNjkyODZjZDkwYTI0MjkxOTAyMi4uMzg2NzEyNjk4YjRkYzdhODhmYWI2M2FiMTYzYzY3NzI0
YTQ3NTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oCkBAIC0z
Nyw5ICszNyw5IEBAIGNsYXNzIEZyYW1lOwogCiBjbGFzcyBET01XaW5kb3dFeHRlbnNpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxET01XaW5kb3dFeHRlbnNpb24+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgIHN0YXRpYyBSZWY8
RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVhdGUoRE9NV2luZG93KiB3aW5kb3csIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01XaW5k
b3dFeHRlbnNpb24oZnJhbWUsIHdvcmxkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERPTVdpbmRvd0V4dGVuc2lvbih3aW5kb3csIHdvcmxkKSk7CiAgICAgfQogCiAgICAgdm9pZCBk
aXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZTsKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93
RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
RE9NV2luZG93RXh0ZW5zaW9uKERPTVdpbmRvdyosIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAg
UmVmPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICBSZWZQdHI8RnJhbWU+IG1fZGlzY29u
bmVjdGVkRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1By
b3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCmlu
ZGV4IDJjMjE4ZWRiYTMzNDdjNDkzMzg1ZDEyNzJlMzQxYThhNDE2MTMxYWYuLjRlYjk2MjRkMmYy
ZDlmMmU1Yjg0OGViZDY2OWJiN2M3MjIyYjU0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93UHJvcGVydHkuY3BwCkBAIC0zMywzMyArMzMsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1l
KQotICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fYXNzb2NpYXRlZERPTVdpbmRvdyhudWxs
cHRyKQorRE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5KERPTVdpbmRvdyogd2lu
ZG93KQorICAgIDogbV93aW5kb3cod2luZG93KQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IGl0
ICppcyogYWNjZXB0YWJsZSBmb3IgYSBET01XaW5kb3dQcm9wZXJ0eSB0byBiZSBjcmVhdGVkIHdp
dGggYSBudWxsIGZyYW1lLgotICAgIC8vIFNlZSBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2guaHRtbCBmb3IgdGhlIHJlY2lwZS4KLSAgICAvLyBXZSBzaG91bGQgZml4IHRoYXQu
ICA8cmRhcjovL3Byb2JsZW0vMTE1NjcxMzI+Ci0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAg
bV9hc3NvY2lhdGVkRE9NV2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7
Ci0gICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdy0+cmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7
Ci0gICAgfQorICAgIGlmIChtX3dpbmRvdykKKyAgICAgICAgbV93aW5kb3ctPnJlZ2lzdGVyUHJv
cGVydHkoKnRoaXMpOwogfQogCiBET01XaW5kb3dQcm9wZXJ0eTo6fkRPTVdpbmRvd1Byb3BlcnR5
KCkKIHsKLSAgICBpZiAobV9hc3NvY2lhdGVkRE9NV2luZG93KQotICAgICAgICBtX2Fzc29jaWF0
ZWRET01XaW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7CisgICAgaWYgKG1fd2luZG93
KQorICAgICAgICBtX3dpbmRvdy0+dW5yZWdpc3RlclByb3BlcnR5KCp0aGlzKTsKIAotICAgIG1f
YXNzb2NpYXRlZERPTVdpbmRvdyA9IG51bGxwdHI7Ci0gICAgbV9mcmFtZSA9IG51bGxwdHI7Cisg
ICAgbV93aW5kb3cgPSBudWxscHRyOwogfQogCiB2b2lkIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNj
b25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKQogewotICAgIEFTU0VSVChtX2Fzc29j
aWF0ZWRET01XaW5kb3cpOwotCi0gICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAgQVNTRVJUKG1f
d2luZG93KTsKIH0KIAogdm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9t
RG9jdW1lbnRTdXNwZW5zaW9uKEZyYW1lKiBmcmFtZSkKQEAgLTY3LDQyICs1OCw0MCBAQCB2b2lk
IERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24o
RnJhbWUqIGZyYW1lKQogICAgIC8vIElmIHRoaXMgcHJvcGVydHkgaXMgYmVpbmcgcmVjb25uZWN0
ZWQgdG8gaXRzIEZyYW1lIHRvIGVudGVyIHRoZSBQYWdlQ2FjaGUsIGl0IG11c3QgaGF2ZQogICAg
IC8vIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gaXRzIEZyYW1lIGluIHRoZSBmaXJzdCBwbGFjZSBh
bmQgaXQgc2hvdWxkIHN0aWxsIGhhdmUgYW4gYXNzb2NpYXRlZCBET01XaW5kb3cuCiAgICAgQVNT
RVJUKGZyYW1lKTsKLSAgICBBU1NFUlQoIW1fZnJhbWUpOwotICAgIEFTU0VSVChmcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2luZG93KTsKLQotICAgIG1f
ZnJhbWUgPSBmcmFtZTsKKyAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
ID09IG1fd2luZG93KTsKIH0KIAogdm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKIHsKICAgICAvLyBJZiB0aGUgcHJvcGVydHkgaGFz
IGJlZW4gZGlzY29ubmVjdGVkIGZyb20gaXRzIEZyYW1lIGZvciB0aGUgcGFnZSBjYWNoZSwgdGhl
biBpdCBtdXN0IGhhdmUgb3JpZ2luYWxseSBoYWQgYSBGcmFtZQogICAgIC8vIGFuZCB0aGVyZWZv
cmUgc2hvdWxkIHN0aWxsIGhhdmUgYW4gYXNzb2NpYXRlZCBET01XaW5kb3cuCi0gICAgQVNTRVJU
KCFtX2ZyYW1lKTsKLSAgICBBU1NFUlQobV9hc3NvY2lhdGVkRE9NV2luZG93KTsKKyAgICBBU1NF
UlQobV93aW5kb3cpOwogCiAgICAgLy8gRE9NV2luZG93UHJvcGVydHkgbGlmZXRpbWUgaXNuJ3Qg
dGllZCBkaXJlY3RseSB0byB0aGUgRE9NV2luZG93IGl0c2VsZiBzbyBpdCBpcyBpbXBvcnRhbnQg
dGhhdCBpdCB1bnJlZ2lzdGVyCiAgICAgLy8gaXRzZWxmIGZyb20gYW55IERPTVdpbmRvdyBpdCBp
cyBhc3NvY2lhdGVkIHdpdGggaWYgdGhhdCBET01XaW5kb3cgaXMgZ29pbmcgYXdheS4KLSAgICBp
ZiAobV9hc3NvY2lhdGVkRE9NV2luZG93KQotICAgICAgICBtX2Fzc29jaWF0ZWRET01XaW5kb3ct
PnVucmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7Ci0gICAgbV9hc3NvY2lhdGVkRE9NV2luZG93ID0g
bnVsbHB0cjsKLSAgICBtX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAobV93aW5kb3cpCisgICAg
ICAgIG1fd2luZG93LT51bnJlZ2lzdGVyUHJvcGVydHkoKnRoaXMpOworICAgIG1fd2luZG93ID0g
bnVsbHB0cjsKIH0KIAogdm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RJbkZyYW1lKCkKIHsKLSAgICBBU1NFUlQobV9hc3NvY2lhdGVkRE9NV2luZG93KTsKKyAg
ICBBU1NFUlQobV93aW5kb3cpOwogCiAgICAgLy8gRE9NV2luZG93UHJvcGVydHkgbGlmZXRpbWUg
aXNuJ3QgdGllZCBkaXJlY3RseSB0byB0aGUgRE9NV2luZG93IGl0c2VsZiBzbyBpdCBpcyBpbXBv
cnRhbnQgdGhhdCBpdCB1bnJlZ2lzdGVyCiAgICAgLy8gaXRzZWxmIGZyb20gYW55IERPTVdpbmRv
dyBpdCBpcyBhc3NvY2lhdGVkIHdpdGggaWYgdGhhdCBET01XaW5kb3cgaXMgZ29pbmcgYXdheS4K
LSAgICBpZiAobV9hc3NvY2lhdGVkRE9NV2luZG93KQotICAgICAgICBtX2Fzc29jaWF0ZWRET01X
aW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7Ci0gICAgbV9hc3NvY2lhdGVkRE9NV2lu
ZG93ID0gbnVsbHB0cjsKLSAgICBtX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAobV93aW5kb3cp
CisgICAgICAgIG1fd2luZG93LT51bnJlZ2lzdGVyUHJvcGVydHkoKnRoaXMpOworICAgIG1fd2lu
ZG93ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaEds
b2JhbE9iamVjdEZyb21GcmFtZSgpCiB7Ci0gICAgbV9mcmFtZSA9IG51bGxwdHI7Cit9CisKK0Zy
YW1lKiBET01XaW5kb3dQcm9wZXJ0eTo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dp
bmRvdyA/IG1fd2luZG93LT5mcmFtZSgpIDogbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCmluZGV4IGM0YmRkODBkNjk0ZWE0YmRhMmQ2NWEwNDc4
ZTExMGY5NmU3MjJmYjUuLjZjZDc4NDc3ZWZiZjg4MTEwMTFlYzMxYTMzNTMxMWE5ZDUyODYzYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgKQEAgLTMyLDcgKzMyLDcg
QEAgY2xhc3MgRnJhbWU7CiAKIGNsYXNzIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBET01XaW5kb3dQcm9wZXJ0eShGcmFtZSopOworICAgIGV4cGxpY2l0IERPTVdp
bmRvd1Byb3BlcnR5KERPTVdpbmRvdyopOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RG
cmFtZUZvckRvY3VtZW50U3VzcGVuc2lvbigpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RG
cmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oRnJhbWUqKTsKQEAgLTQwLDEzICs0MCwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgp
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7CiAK
LSAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CisgICAgRE9NV2luZG93KiB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+RE9N
V2luZG93UHJvcGVydHkoKTsKIAotICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIERPTVdpbmRvdyog
bV9hc3NvY2lhdGVkRE9NV2luZG93OworICAgIERPTVdpbmRvdyogbV93aW5kb3c7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA4ZTFiYjE0
YTQ2MzFmZjdmM2JlZmMzNGIwN2M1MGRlNDkwMmI5MTg5Li43ZDgwYzFmM2E4MzhkOGQyOWRiMTZi
NWFlYjcwMTVlOWVhNDg0ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTQzLDE2ICs0
MywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhpc3Rvcnk6Okhpc3RvcnkoRnJhbWUm
IGZyYW1lKQotICAgIDogRE9NV2luZG93UHJvcGVydHkoJmZyYW1lKQorSGlzdG9yeTo6SGlzdG9y
eShET01XaW5kb3cmIHdpbmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiB7
CiB9CiAKIHVuc2lnbmVkIEhpc3Rvcnk6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2Zy
YW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIHBhZ2UtPmJhY2tGb3J3YXJkKCkuY291bnQoKTsKQEAgLTYwLDEw
ICs2MSwxMSBAQCB1bnNpZ25lZCBIaXN0b3J5OjpsZW5ndGgoKSBjb25zdAogCiBFeGNlcHRpb25P
cjxIaXN0b3J5OjpTY3JvbGxSZXN0b3JhdGlvbj4gSGlzdG9yeTo6c2Nyb2xsUmVzdG9yYXRpb24o
KSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IgfTsKIAotICAgIGF1dG8qIGhpc3RvcnlJdGVtID0gbV9mcmFtZS0+bG9hZGVyKCku
aGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7CisgICAgYXV0byogaGlzdG9yeUl0ZW0gPSBmcmFtZS0+
bG9hZGVyKCkuaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7CiAgICAgaWYgKCFoaXN0b3J5SXRlbSkK
ICAgICAgICAgcmV0dXJuIFNjcm9sbFJlc3RvcmF0aW9uOjpBdXRvOwogICAgIApAQCAtNzIsMTAg
Kzc0LDExIEBAIEV4Y2VwdGlvbk9yPEhpc3Rvcnk6OlNjcm9sbFJlc3RvcmF0aW9uPiBIaXN0b3J5
OjpzY3JvbGxSZXN0b3JhdGlvbigpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6
OnNldFNjcm9sbFJlc3RvcmF0aW9uKFNjcm9sbFJlc3RvcmF0aW9uIHNjcm9sbFJlc3RvcmF0aW9u
KQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IgfTsKIAotICAgIGF1dG8qIGhpc3RvcnlJdGVtID0gbV9mcmFtZS0+bG9hZGVyKCkuaGlzdG9y
eSgpLmN1cnJlbnRJdGVtKCk7CisgICAgYXV0byogaGlzdG9yeUl0ZW0gPSBmcmFtZS0+bG9hZGVy
KCkuaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7CiAgICAgaWYgKGhpc3RvcnlJdGVtKQogICAgICAg
ICBoaXN0b3J5SXRlbS0+c2V0U2hvdWxkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKHNjcm9sbFJlc3Rv
cmF0aW9uID09IFNjcm9sbFJlc3RvcmF0aW9uOjpBdXRvKTsKIApAQCAtOTAsOSArOTMsMTAgQEAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBIaXN0b3J5OjpzdGF0ZSgpCiAKIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogSGlzdG9yeTo6c3RhdGVJbnRlcm5hbCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2Zy
YW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBoaXN0b3J5SXRlbSA9IG1fZnJhbWUt
PmxvYWRlcigpLmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOworICAgIGF1dG8qIGhpc3RvcnlJdGVt
ID0gZnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOwogICAgIGlmICghaGlz
dG9yeUl0ZW0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBoaXN0b3J5SXRl
bS0+c3RhdGVPYmplY3QoKTsKQEAgLTEzNywzNCArMTQxLDM3IEBAIHZvaWQgSGlzdG9yeTo6Zm9y
d2FyZChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHZvaWQgSGlzdG9yeTo6Z28oaW50IGRpc3RhbmNl
KQogewotICAgIExPRyhIaXN0b3J5LCAiSGlzdG9yeSAlcCBnbyglZCkgZnJhbWUgJXAgKG1haW4g
ZnJhbWUgJWQpIiwgdGhpcywgZGlzdGFuY2UsIG1fZnJhbWUsIG1fZnJhbWUgPyBtX2ZyYW1lLT5p
c01haW5GcmFtZSgpIDogZmFsc2UpOworICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsK
KyAgICBMT0coSGlzdG9yeSwgIkhpc3RvcnkgJXAgZ28oJWQpIGZyYW1lICVwIChtYWluIGZyYW1l
ICVkKSIsIHRoaXMsIGRpc3RhbmNlLCBmcmFtZSwgZnJhbWUgPyBmcmFtZS0+aXNNYWluRnJhbWUo
KSA6IGZhbHNlKTsKIAotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVI
aXN0b3J5TmF2aWdhdGlvbihkaXN0YW5jZSk7CisgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVs
ZXIoKS5zY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGRpc3RhbmNlKTsKIH0KIAogdm9pZCBIaXN0
b3J5OjpnbyhEb2N1bWVudCYgZG9jdW1lbnQsIGludCBkaXN0YW5jZSkKIHsKLSAgICBMT0coSGlz
dG9yeSwgIkhpc3RvcnkgJXAgZ28oJWQpIGluIGRvY3VtZW50ICVwIGZyYW1lICVwIChtYWluIGZy
YW1lICVkKSIsIHRoaXMsIGRpc3RhbmNlLCAmZG9jdW1lbnQsIG1fZnJhbWUsIG1fZnJhbWUgPyBt
X2ZyYW1lLT5pc01haW5GcmFtZSgpIDogZmFsc2UpOworICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBMT0coSGlzdG9yeSwgIkhpc3RvcnkgJXAgZ28oJWQpIGluIGRvY3VtZW50
ICVwIGZyYW1lICVwIChtYWluIGZyYW1lICVkKSIsIHRoaXMsIGRpc3RhbmNlLCAmZG9jdW1lbnQs
IGZyYW1lLCBmcmFtZSA/IGZyYW1lLT5pc01haW5GcmFtZSgpIDogZmFsc2UpOwogCi0gICAgaWYg
KCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoIWRvY3VtZW50LmNhbk5hdmlnYXRlKG1fZnJh
bWUpKQorICAgIGlmICghZG9jdW1lbnQuY2FuTmF2aWdhdGUoZnJhbWUpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVIaXN0b3J5
TmF2aWdhdGlvbihkaXN0YW5jZSk7CisgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5z
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGRpc3RhbmNlKTsKIH0KIAogVVJMIEhpc3Rvcnk6OnVy
bEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogeworICAgIGF1dG8qIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKICAgICBpZiAodXJsU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TCh1cmxTdHJpbmcpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVj
dEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0YXRlT2JqZWN0VHlwZSBzdGF0ZU9i
amVjdFR5cGUpCkBAIC0xNzYsMTQgKzE4MywxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5
OjpzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQog
ICAgIHN0YXRpYyBTZWNvbmRzIHN0YXRlT2JqZWN0VGltZVNwYW4geyAzMF9zIH07CiAgICAgc3Rh
dGljIHVuc2lnbmVkIHBlclN0YXRlT2JqZWN0VGltZVNwYW5MaW1pdCA9IDEwMDsKIAotICAgIGlm
ICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgVVJMIGZ1bGxVUkwgPSB1cmxGb3JTdGF0ZSh1cmxTdHJpbmcpOwogICAg
IGlmICghZnVsbFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1
cml0eUVycm9yIH07CiAKLSAgICBjb25zdCBVUkwmIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiBkb2N1bWVudFVSTCA9IGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKIAogICAgIGF1dG8gY3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JX
aXRoTWVzc2FnZVN1ZmZpeCA9IFsmXSAoY29uc3QgY2hhciogc3VmZml4KSB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSA9IHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVjdFR5
cGU6OlJlcGxhY2UgPyAiaGlzdG9yeS5yZXBsYWNlU3RhdGUoKSIgOiAiaGlzdG9yeS5wdXNoU3Rh
dGUoKSI7CkBAIC0xOTIsNyArMjAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3Rh
dGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICBp
ZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChmdWxsVVJMLCBkb2N1bWVudFVSTCkgfHwg
ZnVsbFVSTC51c2VyKCkgIT0gZG9jdW1lbnRVUkwudXNlcigpIHx8IGZ1bGxVUkwucGFzcygpICE9
IGRvY3VtZW50VVJMLnBhc3MoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1
cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlByb3RvY29scywgZG9tYWlucywgcG9ydHMsIHVz
ZXJuYW1lcywgYW5kIHBhc3N3b3JkcyBtdXN0IG1hdGNoLiIpOwogCi0gICAgY29uc3QgYXV0byYg
ZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgY29uc3QgYXV0byYgZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgIC8vIFdlIGFsbG93IHNhbmRib3hlZCBk
b2N1bWVudHMsICdkYXRhOicvJ2ZpbGU6JyBVUkxzLCBldGMuIHRvIHVzZSAncHVzaFN0YXRlJy8n
cmVwbGFjZVN0YXRlJyB0byBtb2RpZnkgdGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21lbnRzLgogICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDI4IGZv
ciB0aGUgY29tcGF0aWJpbGl0eSBjb25jZXJucy4KICAgICBib29sIGFsbG93U2FuZGJveEV4Y2Vw
dGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLmlzVW5pcXVlKCkpICYmIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGRv
Y3VtZW50VVJMLCBmdWxsVVJMKTsKQEAgLTIwMCw3ICsyMDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgZGF0YQogICAgIGlmICghYWxsb3dTYW5kYm94RXhjZXB0aW9uICYmICFkb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0aCgpICE9IGRvY3Vt
ZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRVUkwucXVlcnkoKSkp
CiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdl
U3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3QgbWF0Y2ggZm9yIGEgc2FuZGJveGVkIGRv
Y3VtZW50LiIpOwogCi0gICAgRG9jdW1lbnQqIG1haW5Eb2N1bWVudCA9IG1fZnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogbWFpbkRvY3VtZW50ID0g
ZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBIaXN0b3J5KiBtYWlu
SGlzdG9yeSA9IG51bGxwdHI7CiAgICAgaWYgKG1haW5Eb2N1bWVudCkgewogICAgICAgICBpZiAo
YXV0byogbWFpbkRPTVdpbmRvdyA9IG1haW5Eb2N1bWVudC0+ZG9tV2luZG93KCkpCkBAIC0yNTAs
MTQgKzI1OCwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVk
KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQogICAgICsrbWFpbkhpc3Rvcnkt
Pm1fY3VycmVudFN0YXRlT2JqZWN0VGltZVNwYW5PYmplY3RzQWRkZWQ7CiAKICAgICBpZiAoIXVy
bFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVVS
TEZvclB1c2hPclJlcGxhY2VTdGF0ZShmdWxsVVJMKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShmdWxsVVJMKTsKIAogICAgIGlmIChz
dGF0ZU9iamVjdFR5cGUgPT0gU3RhdGVPYmplY3RUeXBlOjpQdXNoKSB7Ci0gICAgICAgIG1fZnJh
bWUtPmxvYWRlcigpLmhpc3RvcnkoKS5wdXNoU3RhdGUoV1RGTW92ZShkYXRhKSwgdGl0bGUsIGZ1
bGxVUkwuc3RyaW5nKCkpOwotICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmhp
c3RvcnkoKS5wdXNoU3RhdGUoV1RGTW92ZShkYXRhKSwgdGl0bGUsIGZ1bGxVUkwuc3RyaW5nKCkp
OworICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRQdXNoU3RhdGVX
aXRoaW5QYWdlKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZU9iamVjdFR5cGUgPT0gU3RhdGVPYmpl
Y3RUeXBlOjpSZXBsYWNlKSB7Ci0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5y
ZXBsYWNlU3RhdGUoV1RGTW92ZShkYXRhKSwgdGl0bGUsIGZ1bGxVUkwuc3RyaW5nKCkpOwotICAg
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdp
dGhpblBhZ2UoKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZXBsYWNlU3Rh
dGUoV1RGTW92ZShkYXRhKSwgdGl0bGUsIGZ1bGxVUkwuc3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggMDVmZTJi
M2Y2NzBkZTJmZmI1YjBkNmE5MGQ4ZDc0ZjkyYTg0NjU3Mi4uODdhMGYzZDE3ODc4ZDE3MTExMTg0
YTI2NDIwOTJmYzdmZjUxMGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKQEAgLTM1LDEyICszNSwx
MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEZyYW1l
OwogY2xhc3MgVVJMOwogCiBjbGFzcyBIaXN0b3J5IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBw
YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0
eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxIaXN0b3J5PiBjcmVhdGUoRnJhbWUmIGZyYW1l
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnkoZnJhbWUpKTsgfQorICAgIHN0YXRpYyBS
ZWY8SGlzdG9yeT4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEhpc3Rvcnkod2luZG93KSk7IH0KIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owog
ICAgIApAQCAtNjksNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVw
bGFjZVN0YXRlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IEhpc3RvcnkoRnJhbWUmKTsKKyAgICBleHBsaWNpdCBIaXN0b3J5KERPTVdpbmRvdyYp
OwogCiAgICAgZW51bSBjbGFzcyBTdGF0ZU9iamVjdFR5cGUgeyBQdXNoLCBSZXBsYWNlIH07CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgU3Rh
dGVPYmplY3RUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5
MzZjZDZmZDYyOTQwMTIyY2FjYzlhODU4Njc2Ni4uODJmZWE2MDYyOWY2YzRhZTUwYjE4OTNjN2U2
NjA0NjUyYzFmYzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM5LDE2ICszOSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxvY2F0aW9uOjpMb2NhdGlvbihGcmFtZSog
ZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK0xvY2F0aW9uOjpMb2NhdGlv
bihET01XaW5kb3cmIHdpbmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiB7
CiB9CiAKIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewotICAgIEFT
U0VSVChtX2ZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUoKSk7CiAKLSAgICBjb25zdCBVUkwmIHVy
bCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gYmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIgd2hpbGUgdGhlIHBhZ2Ug
aXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSkuCiAKQEAgLTU3LDcgKzU3
LDcgQEAgaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiAKIFN0cmluZyBM
b2NhdGlvbjo6aHJlZigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgYXV0byYgdXJsID0gdGhpcy0+
dXJsKCk7CkBAIC03Myw3ICs3Myw3IEBAIFN0cmluZyBMb2NhdGlvbjo6aHJlZigpIGNvbnN0CiAK
IFN0cmluZyBMb2NhdGlvbjo6cHJvdG9jb2woKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkK
KyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVy
biBtYWtlU3RyaW5nKHVybCgpLnByb3RvY29sKCksICI6Iik7CkBAIC04MSw3ICs4MSw3IEBAIFN0
cmluZyBMb2NhdGlvbjo6cHJvdG9jb2woKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246Omhvc3Qo
KSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIC8vIE5vdGU6IHRoaXMgaXMgdGhlIElFIHNwZWMuIFRo
ZSBOUyBzcGVjIHN3YXBzIHRoZSB0d28sIGl0IHNheXMKQEAgLTkxLDcgKzkxLDcgQEAgU3RyaW5n
IExvY2F0aW9uOjpob3N0KCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpob3N0bmFtZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIHVybCgpLmhvc3QoKS50b1N0cmluZygpOwpAQCAt
OTksNyArOTksNyBAQCBTdHJpbmcgTG9jYXRpb246Omhvc3RuYW1lKCkgY29uc3QKIAogU3RyaW5n
IExvY2F0aW9uOjpwb3J0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFm
cmFtZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCA9
IHRoaXMtPnVybCgpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFN0cmluZyBMb2NhdGlvbjo6cG9ydCgp
IGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6cGF0aG5hbWUoKSBjb25zdAogewotICAgIGlmICgh
bV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgU3Ry
aW5nIExvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6c2VhcmNo
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwpA
QCAtMTI2LDcgKzEyNiw3IEBAIFN0cmluZyBMb2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIAogU3Ry
aW5nIExvY2F0aW9uOjpvcmlnaW4oKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBp
ZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwoKSktPnRvU3RyaW5nKCk7CiB9CkBAIC0xMzQsMTYgKzEzNCwx
NyBAQCBTdHJpbmcgTG9jYXRpb246Om9yaWdpbigpIGNvbnN0CiBSZWY8RE9NU3RyaW5nTGlzdD4g
TG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNvbnN0CiB7CiAgICAgYXV0byBvcmlnaW5zID0g
RE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gb3Jp
Z2luczsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgb3JpZ2lucy0+
YXBwZW5kKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwor
ICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpOyBhbmNlc3Rv
cjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLnBhcmVudCgpKQorICAgICAgICBvcmlnaW5z
LT5hcHBlbmQoYW5jZXN0b3ItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmco
KSk7CiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6aGFzaCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIgPSB1
cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKQEAgLTE1MiwxNiArMTUzLDE3IEBAIFN0cmluZyBM
b2NhdGlvbjo6aGFzaCgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRI
cmVmKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25z
dCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgpKQog
ICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3cs
IGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0
UHJvdG9jb2woRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8q
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
eyB9OwotICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwg
dXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29s
KHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAg
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CkBAIC0xNjksMjcgKzE3MSwzMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0UHJvdG9jb2woRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlycwogCiBF
eGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIGlm
ICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAg
ICB1cmwuc2V0SG9zdEFuZFBvcnQoaG9zdCk7CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2
ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IExvY2F0aW9uOjpzZXRIb3N0bmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBpZiAoIW1f
ZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOworICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJs
LnNldEhvc3QoaG9zdG5hbWUpOwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3cs
IGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2Nh
dGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdp
bmRvdywgY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nKQogewotICAgIGlmICghbV9mcmFtZSkKKyAg
ICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Cisg
ICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpbnQgcG9ydCA9IHBv
cnRTdHJpbmcudG9JbnQoKTsKICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4RkZGRiB8fCBw
b3J0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKQEAgLTIwMCwy
OCArMjA1LDMxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRQYXRobmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93
JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwYXRobmFtZSkKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOworICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNl
dFBhdGgocGF0aG5hbWUpOwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZp
cnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlv
bjo6c2V0U2VhcmNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2lu
ZG93LCBjb25zdCBTdHJpbmcmIHNlYXJjaCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0
byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVS
TCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJj
aCk7CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJp
bmcmIGhhc2gpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwotICAgIEFTU0VS
VChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBhdXRvIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgYXV0byB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgYXV0byBvbGRGcmFnbWVudElkZW50aWZp
ZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgYXV0byBuZXdGcmFnbWVudElkZW50
aWZpZXIgPSBoYXNoOwogICAgIGlmIChoYXNoWzBdID09ICcjJykKQEAgLTIzNywzMiArMjQ1LDM0
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZl
V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
Ojphc3NpZ24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1l
KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIHZvaWQgTG9jYXRpb246OnJlcGxhY2UoRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmlu
ZyYgdXJsKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChtX2Zy
YW1lLT5kb2N1bWVudCgpKTsKLSAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CiAgICAgLy8gV2UgY2FsbCBET01XaW5kb3c6OnNl
dExvY2F0aW9uIGRpcmVjdGx5IGhlcmUgYmVjYXVzZSByZXBsYWNlKCkgYWx3YXlzIG9wZXJhdGVz
IG9uIHRoZSBjdXJyZW50IGZyYW1lLgotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5zZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwsIExvY2tIaXN0
b3J5QW5kQmFja0ZvcndhcmRMaXN0KTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPnNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCwgTG9ja0hpc3Rv
cnlBbmRCYWNrRm9yd2FyZExpc3QpOwogfQogCiB2b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3cpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoYWN0aXZlV2luZG93LmRvY3VtZW50KCkpOwotICAgIEFTU0VSVChtX2ZyYW1lLT5k
b2N1bWVudCgpKTsKLSAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkp
OworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKSk7CiAKICAgICBhdXRvJiBhY3RpdmVEb2N1bWVudCA9ICphY3Rp
dmVXaW5kb3cuZG9jdW1lbnQoKTsKLSAgICBhdXRvJiB0YXJnZXREb2N1bWVudCA9ICptX2ZyYW1l
LT5kb2N1bWVudCgpOworICAgIGF1dG8mIHRhcmdldERvY3VtZW50ID0gKmZyYW1lLT5kb2N1bWVu
dCgpOwogCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgY3Jvc3Mtb3JpZ2luIHNl
Y3VyaXR5IGNoZWNrIGlzIHZhbHVhYmxlLgogICAgIC8vIFdlIGFsbG93IG9uZSBwYWdlIHRvIGNo
YW5nZSB0aGUgbG9jYXRpb24gb2YgYW5vdGhlci4gV2h5IGJsb2NrIGF0dGVtcHRzIHRvIHJlbG9h
ZD8KQEAgLTI3NiwxNyArMjg2LDE4IEBAIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdykKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1l
bnQudXJsKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2No
ZWR1bGVyKCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKKyAgICBmcmFtZS0+bmF2
aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVmcmVzaChhY3RpdmVEb2N1bWVudCk7CiB9CiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRMb2NhdGlvbihET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0g
ICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIGlmICghYWN0aXZlV2luZG93LmRvY3VtZW50KCktPmNh
bk5hdmlnYXRlKG1fZnJhbWUpKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBBU1NFUlQoZnJhbWUpOworICAgIGlmICghYWN0aXZlV2luZG93LmRvY3VtZW50KCktPmNhbk5h
dmlnYXRlKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3Ig
fTsKLSAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKTsKLSAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAg
ICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCkpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0
TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKICAgICByZXR1cm4geyB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKaW5kZXggYmI3ZDJkMWQzM2VlZmY2YzlkMTY2NmFi
MDAxMDE3ODMyYTRmMmFmOC4uNjk2OTFiYzYxYTdhZDdjYjhhMGIzYTNhN2ZlZmI5Yjc2ODY3NmRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaApAQCAtMzYsMTIgKzM2LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIEZyYW1lOwogY2xhc3MgVVJMOwog
CiBjbGFzcyBMb2NhdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3Vu
dGVkPExvY2F0aW9uPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPExvY2F0aW9uPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IExvY2F0aW9uKGZyYW1lKSk7IH0KKyAgICBzdGF0aWMgUmVmPExvY2F0aW9uPiBjcmVh
dGUoRE9NV2luZG93JiB3aW5kb3cpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9jYXRpb24od2lu
ZG93KSk7IH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEhyZWYoRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYpOwogICAgIFN0
cmluZyBocmVmKCkgY29uc3Q7CkBAIC03MSw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBSZWY8RE9N
U3RyaW5nTGlzdD4gYW5jZXN0b3JPcmlnaW5zKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgTG9jYXRpb24oRnJhbWUqKTsKKyAgICBleHBsaWNpdCBMb2NhdGlvbihET01XaW5kb3cm
KTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldExvY2F0aW9uKERPTVdpbmRvdyYgYWN0aXZl
V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDIxZjllM2U0NmE0Y2I0YTI4ZjkwNjFmZDFhODQzMzkx
OTBlYmZkOTkuLmNkMWY0OWZmNmU5N2I3YmM4MmU5NDViNTI2NThmZDhiZTFkZTljNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLU5hdmlnYXRvcjo6TmF2aWdhdG9yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZyYW1lJiBmcmFtZSkKK05hdmlnYXRvcjo6TmF2
aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTVdpbmRvdyYgd2luZG93
KQogICAgIDogTmF2aWdhdG9yQmFzZShjb250ZXh0KQotICAgICwgRE9NV2luZG93UHJvcGVydHko
JmZyYW1lKQorICAgICwgRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKIH0KIApAQCAtNzMs
MjQgKzczLDI2IEBAIHN0YXRpYyBib29sIHNob3VsZEhpZGVGb3VyRG90KEZyYW1lJiBmcmFtZSkK
IAogU3RyaW5nIE5hdmlnYXRvcjo6YXBwVmVyc2lvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2Zy
YW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKCptX2Zy
YW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEk6OkFw
cFZlcnNpb24pOworICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2
aWdhdG9yQVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpOYXZpZ2F0b3JBUEk6OkFwcFZlcnNpb24pOwogICAgIFN0cmluZyBhcHBWZXJzaW9uID0g
TmF2aWdhdG9yQmFzZTo6YXBwVmVyc2lvbigpOwotICAgIGlmIChzaG91bGRIaWRlRm91ckRvdCgq
bV9mcmFtZSkpCisgICAgaWYgKHNob3VsZEhpZGVGb3VyRG90KCpmcmFtZSkpCiAgICAgICAgIGFw
cFZlcnNpb24ucmVwbGFjZSgiNC4iLCAiNF8iKTsKICAgICByZXR1cm4gYXBwVmVyc2lvbjsKIH0K
IAogY29uc3QgU3RyaW5nJiBOYXZpZ2F0b3I6OnVzZXJBZ2VudCgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVy
biBtX3VzZXJBZ2VudDsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKm1fZnJhbWUtPmRvY3Vt
ZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6VXNlckFnZW50KTsK
KyAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ05hdmlnYXRvckFQSUFj
Y2Vzc2VkKCpmcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdh
dG9yQVBJOjpVc2VyQWdlbnQpOwogICAgIGlmIChtX3VzZXJBZ2VudC5pc051bGwoKSkKLSAgICAg
ICAgbV91c2VyQWdlbnQgPSBtX2ZyYW1lLT5sb2FkZXIoKS51c2VyQWdlbnQobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkpOworICAgICAgICBtX3VzZXJBZ2VudCA9IGZyYW1lLT5sb2FkZXIoKS51
c2VyQWdlbnQoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKICAgICByZXR1cm4gbV91c2VyQWdl
bnQ7CiB9CiAKQEAgLTEwNiw3ICsxMDgsOCBAQCBib29sIE5hdmlnYXRvcjo6b25MaW5lKCkgY29u
c3QKIAogdm9pZCBOYXZpZ2F0b3I6OnNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFNoYXJlRGF0YSBkYXRhLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICBhdXRvKiBmcmFtZSA9
IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEzMiw3ICsxMzUsNyBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgU2hhcmVEYXRhIGRhdGEsIFJlZjxEZWZlcgogICAgICAgICB1cmws
CiAgICAgfTsKIAotICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd1NoYXJlU2hlZXQo
c2hhcmVEYXRhLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIGNvbXBsZXRlZCkg
eworICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBjb21wbGV0ZWQpIHsKICAgICAgICAg
aWYgKGNvbXBsZXRlZCkgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ0LDM3ICsxNDcsMzggQEAgdm9pZCBOYXZpZ2F0b3I6OnNoYXJl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNoYXJlRGF0YSBkYXRhLCBSZWY8RGVm
ZXIKIERPTVBsdWdpbkFycmF5JiBOYXZpZ2F0b3I6OnBsdWdpbnMoKQogewogICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFi
bGVkKCkpIHsKLSAgICAgICAgaWYgKG1fZnJhbWUpCi0gICAgICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKm1fZnJhbWUtPmRvY3Vt
ZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6UGx1Z2lucyk7Cisg
ICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisgICAgICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKmZyYW1l
LT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEk6OlBsdWdp
bnMpOwogICAgIH0KICAgICBpZiAoIW1fcGx1Z2lucykKLSAgICAgICAgbV9wbHVnaW5zID0gRE9N
UGx1Z2luQXJyYXk6OmNyZWF0ZShtX2ZyYW1lKTsKKyAgICAgICAgbV9wbHVnaW5zID0gRE9NUGx1
Z2luQXJyYXk6OmNyZWF0ZShtX3dpbmRvdyk7CiAgICAgcmV0dXJuICptX3BsdWdpbnM7CiB9CiAK
IERPTU1pbWVUeXBlQXJyYXkmIE5hdmlnYXRvcjo6bWltZVR5cGVzKCkKIHsKICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5h
YmxlZCgpKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKCptX2ZyYW1lLT5kb2N1
bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEk6Ok1pbWVUeXBlcyk7
CisgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisgICAgICAgICAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKmZy
YW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEk6Ok1p
bWVUeXBlcyk7CiAgICAgfQogICAgIGlmICghbV9taW1lVHlwZXMpCi0gICAgICAgIG1fbWltZVR5
cGVzID0gRE9NTWltZVR5cGVBcnJheTo6Y3JlYXRlKG1fZnJhbWUpOworICAgICAgICBtX21pbWVU
eXBlcyA9IERPTU1pbWVUeXBlQXJyYXk6OmNyZWF0ZShtX3dpbmRvdyk7CiAgICAgcmV0dXJuICpt
X21pbWVUeXBlczsKIH0KIAogYm9vbCBOYXZpZ2F0b3I6OmNvb2tpZUVuYWJsZWQoKSBjb25zdAog
ewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQo
KSkKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ05hdmlnYXRvckFQ
SUFjY2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpO
YXZpZ2F0b3JBUEk6OkNvb2tpZUVuYWJsZWQpOworICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVudCgpLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEk6OkNvb2tpZUVuYWJsZWQpOwogCi0g
ICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSAmJiAhbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmNv
b2tpZUVuYWJsZWQoKSkKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiAhZnJhbWUtPnBhZ2UoKS0+
c2V0dGluZ3MoKS5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBkb2N1bWVu
dCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTgzLDE1ICsxODcsMTYgQEAgYm9vbCBOYXZpZ2F0b3I6OmNvb2tpZUVu
YWJsZWQoKSBjb25zdAogCiBib29sIE5hdmlnYXRvcjo6amF2YUVuYWJsZWQoKSBjb25zdAogewot
ICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkK
LSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ05hdmlnYXRvckFQSUFj
Y2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZp
Z2F0b3JBUEk6OkphdmFFbmFibGVkKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKCpmcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJOjpKYXZhRW5hYmxlZCk7CiAKLSAgICBpZiAo
IW1fZnJhbWUtPnNldHRpbmdzKCkuaXNKYXZhRW5hYmxlZCgpKQorICAgIGlmICghZnJhbWUtPnNl
dHRpbmdzKCkuaXNKYXZhRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuaXNMb2NhbCgpICYmICFtX2Zy
YW1lLT5zZXR0aW5ncygpLmlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKCkpCisgICAgaWYgKGZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmlzTG9jYWwoKSAmJiAhZnJhbWUtPnNl
dHRpbmdzKCkuaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDEsNyArMjA2LDggQEAgYm9vbCBOYXZpZ2F0
b3I6OmphdmFFbmFibGVkKCkgY29uc3QKIAogYm9vbCBOYXZpZ2F0b3I6OnN0YW5kYWxvbmUoKSBj
b25zdAogewotICAgIHJldHVybiBtX2ZyYW1lICYmIG1fZnJhbWUtPnNldHRpbmdzKCkuc3RhbmRh
bG9uZSgpOworICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJh
bWUgJiYgZnJhbWUtPnNldHRpbmdzKCkuc3RhbmRhbG9uZSgpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5oCmluZGV4IGJkMjYwZGY3ZmE3MDdhMjY1MDEzYzAzMmMyYmNmMjA0NTk3
ODNjMmIuLmRkNGQzYzE5MmUzZmZiOTE5ZmU0NjY1MzM4YzAxYzlmZGVhYjRjYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBET01QbHVnaW5BcnJheTsK
IAogY2xhc3MgTmF2aWdhdG9yIGZpbmFsIDogcHVibGljIE5hdmlnYXRvckJhc2UsIHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSwgcHVibGljIFN1cHBsZW1l
bnRhYmxlPE5hdmlnYXRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmF2aWdhdG9yPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRnJhbWUmIGZyYW1lKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE5hdmlnYXRvcihjb250ZXh0LCBmcmFtZSkpOyB9CisgICAgc3Rh
dGljIFJlZjxOYXZpZ2F0b3I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBET01XaW5kb3cmIHdpbmRvdykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0b3IoY29u
dGV4dCwgd2luZG93KSk7IH0KICAgICB2aXJ0dWFsIH5OYXZpZ2F0b3IoKTsKIAogICAgIFN0cmlu
ZyBhcHBWZXJzaW9uKCkgY29uc3Q7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGcmFtZSYpOworICAgIGV4cGxpY2l0IE5hdmlnYXRv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRE9NV2luZG93Jik7CiAKICAgICBtdXRhYmxlIFJl
ZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1p
bWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApp
bmRleCAwMWIxZDcyNjBhOGIwNjMxNTZhODZhNjQ1YTBlN2E2OWJlYTQwYjEzLi40MjE1ZDE2NDFl
NjFmOGNjNTJiNzhiNTNiYmE0MjY1YTJiYTg1NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIFBlcmZvcm1h
bmNlOjpuYXZpZ2F0aW9uKCkKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYg
KCFtX25hdmlnYXRpb24pCi0gICAgICAgIG1fbmF2aWdhdGlvbiA9IFBlcmZvcm1hbmNlTmF2aWdh
dGlvbjo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS5mcmFtZSgpKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uID0gUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
OjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLmRv
bVdpbmRvdygpKTsKICAgICByZXR1cm4gbV9uYXZpZ2F0aW9uLmdldCgpOwogfQogCkBAIC0xMDQs
NyArMTA0LDcgQEAgUGVyZm9ybWFuY2VUaW1pbmcqIFBlcmZvcm1hbmNlOjp0aW1pbmcoKQogCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fdGltaW5nKQotICAgICAgICBt
X3RpbWluZyA9IFBlcmZvcm1hbmNlVGltaW5nOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLmZyYW1lKCkpOworICAgICAgICBtX3RpbWluZyA9IFBl
cmZvcm1hbmNlVGltaW5nOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLmRvbVdpbmRvdygpKTsKICAgICByZXR1cm4gbV90aW1pbmcuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcAppbmRl
eCA2OWM4YjZhMTgwNDVlNmE3MjhjMTJjNzI2MjE3Mzg4NzNhOTFhMDg3Li4zZGJkZWI4OWU3OWEy
OWI1NGQwZTRkZGUzMjdkYjY0YWIzYTE1Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCkBAIC0zOCwxNyArMzgsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QZXJmb3JtYW5jZU5hdmlnYXRpb246OlBlcmZvcm1hbmNlTmF2aWdhdGlv
bihGcmFtZSogZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK1BlcmZvcm1h
bmNlTmF2aWdhdGlvbjo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKERPTVdpbmRvdyogd2luZG93KQor
ICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93KQogewogfQogCiB1bnNpZ25lZCBzaG9ydCBQ
ZXJmb3JtYW5jZU5hdmlnYXRpb246OnR5cGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkK
KyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIFRZUEVfTkFWSUdBVEU7CiAKLSAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
OwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBUWVBFX05BVklHQVRF
OwogCkBAIC02NSwxMCArNjYsMTEgQEAgdW5zaWduZWQgc2hvcnQgUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uOjp0eXBlKCkgY29uc3QKIAogdW5zaWduZWQgc2hvcnQgUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
OjpyZWRpcmVjdENvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gMDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmgKaW5kZXggYzBi
MDAxZTlhZGQ2NTQ1ZjViODU2ODQ5YjA4MWE0N2ViZGU4ZGUyNC4uZjA2MWNkODdhZWFkOTc3Zjk3
MDE1ZjZmN2VkZGUyMzRiZmNkYzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU5hdmlnYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTmF2aWdhdGlvbi5oCkBAIC0zNiwxMSArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEZyYW1lOwotCiBjbGFzcyBQZXJmb3JtYW5jZU5hdmlnYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxQZXJmb3JtYW5jZU5hdmlnYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVy
dHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiBjcmVh
dGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBlcmZvcm1hbmNlTmF2aWdh
dGlvbihmcmFtZSkpOyB9CisgICAgc3RhdGljIFJlZjxQZXJmb3JtYW5jZU5hdmlnYXRpb24+IGNy
ZWF0ZShET01XaW5kb3cqIHdpbmRvdykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZXJmb3JtYW5j
ZU5hdmlnYXRpb24od2luZG93KSk7IH0KIAogICAgIGVudW0gUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
VHlwZSB7CiAgICAgICAgIFRZUEVfTkFWSUdBVEUsCkBAIC01Myw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBzaG9ydCByZWRpcmVjdENvdW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uKEZyYW1lKik7CisgICAgZXhwbGljaXQg
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKERPTVdpbmRvdyopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAppbmRleCBm
MzEzNjE2NzM5ZTJhYmI4MTk1ZTE3NWE3ZTg3OGI4NWJmYmRiODVjLi40ZWZkNTRlMDJkNjhmYTMy
ZTZjZWZmMDlmMzVlNDRlNzc4YTlkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlVGltaW5nLmNwcApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBlcmZvcm1hbmNlVGltaW5nOjpQZXJmb3JtYW5jZVRpbWluZyhGcmFtZSogZnJhbWUpCi0gICAg
OiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK1BlcmZvcm1hbmNlVGltaW5nOjpQZXJmb3JtYW5j
ZVRpbWluZyhET01XaW5kb3cqIHdpbmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRv
dykKIHsKIH0KIApAQCAtMjk2LDE4ICsyOTYsMjAgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZv
cm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdAogCiBEb2N1bWVudExvYWRlciogUGVy
Zm9ybWFuY2VUaW1pbmc6OmRvY3VtZW50TG9hZGVyKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpOwogfQogCiBjb25zdCBEb2N1bWVudFRpbWluZyogUGVyZm9ybWFuY2VUaW1pbmc6OmRvY3Vt
ZW50VGltaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZVRpbWluZy5oCmluZGV4IDZmN2IxYzU3ZjgyNGY1ZGI2NjBkZWFjM2E5NzEzMmExNjBkOGU2YTAu
LjY2NDVkODBiNTZhZDI1YTViZjYwMWE1N2QwMDc0ZTYzMjg4ZTM0NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKQEAgLTM4LDEzICszOCwxMiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudExvYWRlcjsKLWNsYXNzIEZyYW1lOwogY2xhc3Mg
TG9hZFRpbWluZzsKIHN0cnVjdCBEb2N1bWVudFRpbWluZzsKIAogY2xhc3MgUGVyZm9ybWFuY2VU
aW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3JtYW5jZVRpbWluZz4sIHB1YmxpYyBET01X
aW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQZXJmb3JtYW5jZVRpbWlu
Zz4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZXJmb3JtYW5j
ZVRpbWluZyhmcmFtZSkpOyB9CisgICAgc3RhdGljIFJlZjxQZXJmb3JtYW5jZVRpbWluZz4gY3Jl
YXRlKERPTVdpbmRvdyogd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBlcmZvcm1hbmNl
VGltaW5nKHdpbmRvdykpOyB9CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmF2aWdhdGlvblN0
YXJ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVubG9hZEV2ZW50U3RhcnQoKSBj
b25zdDsKQEAgLTY5LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBs
b2FkRXZlbnRFbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQZXJmb3JtYW5j
ZVRpbWluZyhGcmFtZSopOworICAgIGV4cGxpY2l0IFBlcmZvcm1hbmNlVGltaW5nKERPTVdpbmRv
dyopOwogCiAgICAgY29uc3QgRG9jdW1lbnRUaW1pbmcqIGRvY3VtZW50VGltaW5nKCkgY29uc3Q7
CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nj
cmVlbi5jcHAKaW5kZXggYjIwYWJlNDA2NDEwMjBmMGE2MTk2MjBjMzBmMmMxM2E5OGEzMTdlZC4u
OTQ5ZTU2ZDY5ZTQyNDViYmIzMWRmMzM2MmI0NTc4OGMyY2Q3YTY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Ny
ZWVuLmNwcApAQCAtMzgsODMgKzM4LDkxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Ny
ZWVuOjpTY3JlZW4oRnJhbWUqIGZyYW1lKQotICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUp
CitTY3JlZW46OlNjcmVlbihET01XaW5kb3cmIHdpbmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3Bl
cnR5KCZ3aW5kb3cpCiB7CiB9CiAKIHVuc2lnbmVkIFNjcmVlbjo6aGVpZ2h0KCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAg
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3JlZW5BUElBY2Nlc3NlZCgq
bV9mcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpI
ZWlnaHQpOwotICAgIGxvbmcgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8bG9uZz4oc2NyZWVuUmVjdCht
X2ZyYW1lLT52aWV3KCkpLmhlaWdodCgpKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCpmcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpIZWlnaHQpOworICAgIGxvbmcgaGVpZ2h0ID0g
c3RhdGljX2Nhc3Q8bG9uZz4oc2NyZWVuUmVjdChmcmFtZS0+dmlldygpKS5oZWlnaHQoKSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWlnaHQpOwogfQogCiB1bnNpZ25lZCBT
Y3JlZW46OndpZHRoKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0
YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS5sb2dTY3JlZW5BUElBY2Nlc3NlZCgqbV9mcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6U2NyZWVuQVBJOjpXaWR0aCk7Ci0gICAgbG9uZyB3aWR0aCA9IHN0YXRpY19j
YXN0PGxvbmc+KHNjcmVlblJlY3QobV9mcmFtZS0+dmlldygpKS53aWR0aCgpKTsKKyAgICAgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCpmcmFt
ZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpXaWR0aCk7
CisgICAgbG9uZyB3aWR0aCA9IHN0YXRpY19jYXN0PGxvbmc+KHNjcmVlblJlY3QoZnJhbWUtPnZp
ZXcoKSkud2lkdGgoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3aWR0aCk7
CiB9CiAKIHVuc2lnbmVkIFNjcmVlbjo6Y29sb3JEZXB0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKm1fZnJhbWUtPmRv
Y3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSTo6Q29sb3JEZXB0aCk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JlZW5EZXB0aChtX2ZyYW1lLT52
aWV3KCkpKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVl
bkFQSUFjY2Vzc2VkKCpmcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
U2NyZWVuQVBJOjpDb2xvckRlcHRoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNjcmVlbkRlcHRoKGZyYW1lLT52aWV3KCkpKTsKIH0KIAogdW5zaWduZWQgU2NyZWVuOjpwaXhl
bERlcHRoKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3Rp
Y3NFbmFibGVkKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dT
Y3JlZW5BUElBY2Nlc3NlZCgqbV9mcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6U2NyZWVuQVBJOjpQaXhlbERlcHRoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNjcmVlbkRlcHRoKG1fZnJhbWUtPnZpZXcoKSkpOworICAgICAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVu
dCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6OlBpeGVsRGVwdGgpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyZWVuRGVwdGgoZnJhbWUtPnZpZXcoKSkp
OwogfQogCiBpbnQgU2NyZWVuOjphdmFpbExlZnQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFt
ZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVu
dCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6OkF2YWlsTGVmdCk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oc2NyZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3
KCkpLngoKSk7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3Jl
ZW5BUElBY2Nlc3NlZCgqZnJhbWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OlNjcmVlbkFQSTo6QXZhaWxMZWZ0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzY3Jl
ZW5BdmFpbGFibGVSZWN0KGZyYW1lLT52aWV3KCkpLngoKSk7CiB9CiAKIGludCBTY3JlZW46OmF2
YWlsVG9wKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3Rp
Y3NFbmFibGVkKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dT
Y3JlZW5BUElBY2Nlc3NlZCgqbV9mcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6U2NyZWVuQVBJOjpBdmFpbFRvcCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
c2NyZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3KCkpLnkoKSk7CisgICAgICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3JlZW5BUElBY2Nlc3NlZCgqZnJhbWUtPmRv
Y3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSTo6QXZhaWxUb3ApOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHNjcmVlbkF2YWlsYWJsZVJlY3QoZnJhbWUtPnZp
ZXcoKSkueSgpKTsKIH0KIAogdW5zaWduZWQgU2NyZWVuOjphdmFpbEhlaWdodCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQo
Km1fZnJhbWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSTo6
QXZhaWxIZWlnaHQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyZWVuQXZh
aWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3KCkpLmhlaWdodCgpKTsKKyAgICAgICAgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCpmcmFtZS0+ZG9jdW1l
bnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpBdmFpbEhlaWdodCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JlZW5BdmFpbGFibGVSZWN0KGZyYW1l
LT52aWV3KCkpLmhlaWdodCgpKTsKIH0KIAogdW5zaWduZWQgU2NyZWVuOjphdmFpbFdpZHRoKCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVk
KCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3JlZW5BUElB
Y2Nlc3NlZCgqbV9mcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2Ny
ZWVuQVBJOjpBdmFpbFdpZHRoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNj
cmVlbkF2YWlsYWJsZVJlY3QobV9mcmFtZS0+dmlldygpKS53aWR0aCgpKTsKKyAgICAgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCpmcmFtZS0+
ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpBdmFpbFdpZHRo
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmVlbkF2YWlsYWJsZVJlY3Qo
ZnJhbWUtPnZpZXcoKSkud2lkdGgoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NjcmVlbi5oCmluZGV4IGM1NmZmNjgwNGU5NzFjZjMzZmZlZDA1ZjIwYjU2OGI1ZmI0NDA5
ZjYuLmU3YWFmZjI4OTNhMzA2NWUwOTQ4ZmY5YTdiZjlmMWQzZTYxZmI2MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
Y3JlZW4uaApAQCAtMzYsMTEgKzM2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBGcmFtZTsKLQogY2xhc3MgU2NyZWVuIGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwg
cHVibGljIFJlZkNvdW50ZWQ8U2NyZWVuPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNjcmVlbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTY3JlZW4oZnJhbWUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2NyZWVu
PiBjcmVhdGUoRE9NV2luZG93JiB3aW5kb3cpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyZWVu
KHdpbmRvdykpOyB9CiAKICAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKICAgICB1bnNpZ25l
ZCB3aWR0aCgpIGNvbnN0OwpAQCAtNTIsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
YXZhaWxXaWR0aCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNjcmVlbihGcmFt
ZSopOworICAgIGV4cGxpY2l0IFNjcmVlbihET01XaW5kb3cmKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3Bv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAKaW5kZXggZTVh
MTM4YWI3ODI1ZGY2YjkyN2YzZTJjZDQ0YjI1ZjEzODBjZjA0ZC4uYzkxOTk0ZWVkZDQ3MjJmODMy
NzFlMGNkNzk2ZTk4MWIzMzRmMTAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9W
aXN1YWxWaWV3cG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9y
dC5jcHAKQEAgLTM4LDggKzM4LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WaXN1YWxW
aWV3cG9ydDo6VmlzdWFsVmlld3BvcnQoRnJhbWUqIGZyYW1lKQotICAgIDogRE9NV2luZG93UHJv
cGVydHkoZnJhbWUpCitWaXN1YWxWaWV3cG9ydDo6VmlzdWFsVmlld3BvcnQoRE9NV2luZG93JiB3
aW5kb3cpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmd2luZG93KQogewogfQogCkBAIC01MCw5
ICs1MCw5IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFZpc3VhbFZpZXdwb3J0OjpldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFZpc3VhbFZpZXdw
b3J0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fYXNzb2Np
YXRlZERPTVdpbmRvdykKKyAgICBpZiAoIW1fd2luZG93KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIqPiht
X2Fzc29jaWF0ZWRET01XaW5kb3cpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj4obV93aW5kb3cpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKIGJvb2wgVmlzdWFsVmlld3BvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3Rl
bmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykK
QEAgLTYwLDIwICs2MCwyMCBAQCBib29sIFZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogICAgIGlmICghRXZl
bnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
b3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKQotICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChldmVudFR5
cGUpOworICAgIGlmIChhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChldmVudFR5cGUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiB2b2lkIFZpc3VhbFZpZXdwb3J0Ojp1cGRhdGVGcmFtZUxheW91dCgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExh
eW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKKyAgICBBU1NFUlQoZnJhbWUoKSk7CisgICAgZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERv
Y3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkpOwogfQogCiBkb3VibGUg
VmlzdWFsVmlld3BvcnQ6Om9mZnNldExlZnQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkK
KyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdXBkYXRlRnJhbWVM
YXlvdXQoKTsKQEAgLTgyLDcgKzgyLDcgQEAgZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpvZmZzZXRM
ZWZ0KCkgY29uc3QKIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpvZmZzZXRUb3AoKSBjb25zdAog
ewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgdXBkYXRlRnJhbWVMYXlvdXQoKTsKQEAgLTkxLDcgKzkxLDcgQEAgZG91YmxlIFZp
c3VhbFZpZXdwb3J0OjpvZmZzZXRUb3AoKSBjb25zdAogCiBkb3VibGUgVmlzdWFsVmlld3BvcnQ6
OnBhZ2VMZWZ0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgp
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVwZGF0ZUZyYW1lTGF5b3V0KCk7CkBAIC0xMDAs
NyArMTAwLDcgQEAgZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpwYWdlTGVmdCgpIGNvbnN0CiAKIGRv
dWJsZSBWaXN1YWxWaWV3cG9ydDo6cGFnZVRvcCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1l
KQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1cGRhdGVGcmFt
ZUxheW91dCgpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6cGFn
ZVRvcCgpIGNvbnN0CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6d2lkdGgoKSBjb25zdAogewot
ICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgdXBkYXRlRnJhbWVMYXlvdXQoKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBkb3VibGUgVmlz
dWFsVmlld3BvcnQ6OndpZHRoKCkgY29uc3QKIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpoZWln
aHQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgdXBkYXRlRnJhbWVMYXlvdXQoKTsKQEAgLTEyOCw3ICsxMjgs
OCBAQCBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OmhlaWdodCgpIGNvbnN0CiBkb3VibGUgVmlzdWFs
Vmlld3BvcnQ6OnNjYWxlKCkgY29uc3QKIHsKICAgICAvLyBTdWJmcmFtZXMgYWx3YXlzIGhhdmUg
c2NhbGUgMSBzaW5jZSB0aGV5IGFyZW4ndCBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlaXIgcGFyZW50
IGZyYW1lLgotICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAg
ICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgdXBkYXRlRnJhbWVMYXlv
dXQoKTsKQEAgLTE0NSwxMSArMTQ2LDExIEBAIHZvaWQgVmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSgp
CiAgICAgZG91YmxlIGhlaWdodCA9IDA7CiAgICAgZG91YmxlIHNjYWxlID0gMTsKIAotICAgIGlm
IChtX2ZyYW1lKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKSB7
CisgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgeworICAgICAgICBpZiAoYXV0
byogdmlldyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIGF1dG8gdmlzdWFsVmlld3Bv
cnRSZWN0ID0gdmlldy0+dmlzdWFsVmlld3BvcnRSZWN0KCk7CiAgICAgICAgICAgICBhdXRvIGxh
eW91dFZpZXdwb3J0UmVjdCA9IHZpZXctPmxheW91dFZpZXdwb3J0UmVjdCgpOwotICAgICAgICAg
ICAgYXV0byBwYWdlWm9vbUZhY3RvciA9IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAg
ICAgICAgICBhdXRvIHBhZ2Vab29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CiAg
ICAgICAgICAgICBBU1NFUlQocGFnZVpvb21GYWN0b3IpOwogICAgICAgICAgICAgb2Zmc2V0TGVm
dCA9ICh2aXN1YWxWaWV3cG9ydFJlY3QueCgpIC0gbGF5b3V0Vmlld3BvcnRSZWN0LngoKSkgLyBw
YWdlWm9vbUZhY3RvcjsKICAgICAgICAgICAgIG9mZnNldFRvcCA9ICh2aXN1YWxWaWV3cG9ydFJl
Y3QueSgpIC0gbGF5b3V0Vmlld3BvcnRSZWN0LnkoKSkgLyBwYWdlWm9vbUZhY3RvcjsKQEAgLTE1
OCw3ICsxNTksNyBAQCB2b2lkIFZpc3VhbFZpZXdwb3J0Ojp1cGRhdGUoKQogICAgICAgICAgICAg
d2lkdGggPSB2aXN1YWxWaWV3cG9ydFJlY3Qud2lkdGgoKSAvIHBhZ2Vab29tRmFjdG9yOwogICAg
ICAgICAgICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnRSZWN0LmhlaWdodCgpIC8gcGFnZVpvb21G
YWN0b3I7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAg
IHNjYWxlID0gcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgfQogCkBAIC0xNzcsMTggKzE3
OCwyMCBAQCB2b2lkIFZpc3VhbFZpZXdwb3J0Ojp1cGRhdGUoKQogCiB2b2lkIFZpc3VhbFZpZXdw
b3J0OjplbnF1ZXVlUmVzaXplRXZlbnQoKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRv
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLmVucXVldWVSZXNpemVF
dmVudCgqdGhpcywgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLmVucXVldWVSZXNpemVFdmVu
dCgqdGhpcywgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsK
IH0KIAogdm9pZCBWaXN1YWxWaWV3cG9ydDo6ZW5xdWV1ZVNjcm9sbEV2ZW50KCkKIHsKLSAgICBp
ZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50
UXVldWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVl
dWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuaAppbmRleCA0NzcyN2QzNWFjYTU5MTljNWFiZjMzMTE1
MDg3MTFlOTViNjRjMjNkLi5lODEwNjVhZjQwZTQ5YzdmYzAzODBiZDk2MzYyZGUxY2MxZDNmNmM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCkBAIC0zMSwxMSArMzEsOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwotCiBjbGFzcyBWaXN1YWxWaWV3
cG9ydCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc3VhbFZpZXdwb3J0PiwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxWaXN1YWxWaWV3cG9ydD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaXN1YWxWaWV3cG9ydChmcmFtZSkpOyB9CisgICAgc3Rh
dGljIFJlZjxWaXN1YWxWaWV3cG9ydD4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFZpc3VhbFZpZXdwb3J0KHdpbmRvdykpOyB9CiAKICAgICAvLyBFdmVu
dFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CkBAIC01Niw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaXN1YWxWaWV3cG9ydChGcmFt
ZSopOworICAgIGV4cGxpY2l0IFZpc3VhbFZpZXdwb3J0KERPTVdpbmRvdyYpOwogCiAgICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2ViS2l0TmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNw
YWNlLmNwcAppbmRleCA1ZjlkYjBhZWNlNTQ0NDRiNjM2MzVmNmY3YzlhMjBmZTkzNGNjYWFlLi45
MzA5NGZjNGFmYzMxNDNlODRhMDY1MDRhZDhjODdkZGVmNWM3ZDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCkBAIC0zMywxMCArMzMsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1XZWJLaXROYW1lc3BhY2U6OldlYktpdE5hbWVzcGFjZShGcmFtZSYgZnJh
bWUsIFVzZXJDb250ZW50UHJvdmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIpCi0gICAgOiBET01X
aW5kb3dQcm9wZXJ0eSgmZnJhbWUpCi0gICAgLCBtX21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlKFVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmNyZWF0ZShmcmFtZSwgdXNlckNvbnRlbnRQcm92
aWRlcikpCitXZWJLaXROYW1lc3BhY2U6OldlYktpdE5hbWVzcGFjZShET01XaW5kb3cmIHdpbmRv
dywgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQcm92aWRlcikKKyAgICA6IERPTVdp
bmRvd1Byb3BlcnR5KCZ3aW5kb3cpCisgICAgLCBtX21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlKFVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmNyZWF0ZSgqd2luZG93LmZyYW1lKCksIHVzZXJD
b250ZW50UHJvdmlkZXIpKQogeworICAgIEFTU0VSVCh3aW5kb3cuZnJhbWUoKSk7CiB9CiAKIFdl
YktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1dlYktpdE5hbWVzcGFjZS5oCmluZGV4IGNlODE4YjM3NWNlYjE1NzI0ZGE3NmVkMGU2ZDQ2
Y2JjOTgzODk3MzUuLjFmYTFjNDQwZDdhYzIzNWVjN2Y1N2Q4MjczMWU4NTQ4MjRmYWQzZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuaApAQCAtMzMsMTUgKzMzLDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBVc2VyQ29udGVudFBy
b3ZpZGVyOwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTsKIAogY2xhc3MgV2Vi
S2l0TmFtZXNwYWNlIDogcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJLaXROYW1lc3BhY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYktpdE5hbWVz
cGFjZT4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRl
bnRQcm92aWRlcikKKyAgICBzdGF0aWMgUmVmPFdlYktpdE5hbWVzcGFjZT4gY3JlYXRlKERPTVdp
bmRvdyYgd2luZG93LCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVyKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0TmFtZXNwYWNlKGZyYW1l
LCB1c2VyQ29udGVudFByb3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YktpdE5hbWVzcGFjZSh3aW5kb3csIHVzZXJDb250ZW50UHJvdmlkZXIpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5XZWJLaXROYW1lc3BhY2UoKTsKQEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIG1lc3NhZ2VIYW5kbGVycygpOwogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFdlYktpdE5hbWVzcGFjZShGcmFtZSYsIFVzZXJDb250ZW50
UHJvdmlkZXImKTsKKyAgICBleHBsaWNpdCBXZWJLaXROYW1lc3BhY2UoRE9NV2luZG93JiwgVXNl
ckNvbnRlbnRQcm92aWRlciYpOwogCiAgICAgUmVmPFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U+IG1fbWVzc2FnZUhhbmRsZXJOYW1lc3BhY2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NTWltZVR5cGVBcnJheS5jcHAKaW5kZXggMmIwOTAzMjUxZjNmZmQwZjhmODAxMmVlOTI2
ZDUxMTRlZmQyODk1OC4uZTljY2Y5M2IxNDFjMTIwNjY4OTZiYWYzNzE4YjYyZTJiZDQwNTI0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCkBAIC0yOCw4
ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NTWltZVR5cGVBcnJheTo6RE9N
TWltZVR5cGVBcnJheShGcmFtZSogZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFt
ZSkKK0RPTU1pbWVUeXBlQXJyYXk6OkRPTU1pbWVUeXBlQXJyYXkoRE9NV2luZG93KiB3aW5kb3cp
CisgICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5kb3cpCiB7CiB9CiAKQEAgLTU5LDcgKzU5LDcg
QEAgUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KQogCiAgICAgaWYgKGluZGV4ID49IG1pbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaW5k
ZXgpOworICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIGZyYW1lKCksIGluZGV4
KTsKIH0KIAogUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC03Myw3ICs3Myw3IEBAIFJlZlB0
cjxET01NaW1lVHlwZT4gRE9NTWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlOYW1lCiAgICAgZGF0YS0+Z2V0V2ViVmlzaWJsZU1pbWVzQW5kUGx1Z2lu
SW5kaWNlcyhtaW1lcywgbWltZVBsdWdpbkluZGljZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9
PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShk
YXRhLCBtX2ZyYW1lLCBpKTsKKyAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRl
KGRhdGEsIGZyYW1lKCksIGkpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTk4
LDE2ICs5OCwxNSBAQCBWZWN0b3I8QXRvbWljU3RyaW5nPiBET01NaW1lVHlwZUFycmF5OjpzdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCkKIAogUGx1Z2luRGF0YSogRE9NTWltZVR5cGVBcnJheTo6Z2V0
UGx1Z2luRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSAmcGFnZS0+cGx1Z2luRGF0YSgpOwotCi0g
ICAgcmV0dXJuIHBsdWdpbkRhdGE7CisgICAgcmV0dXJuICZwYWdlLT5wbHVnaW5EYXRhKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1l
VHlwZUFycmF5LmgKaW5kZXggNmEzNzRiMGEyZDU2OGRhMTU3MDc3Yjc4YmNmYTYwMmY3MGFlMGVj
Zi4uNTI1YmRlYjA4MDRmMThmYWFjMWViODMyZDc2YjliNTA2N2UzMWRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmgKQEAgLTI3LDEyICsyNywxMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwogY2xhc3MgUGx1Z2luRGF0YTsKIAog
Y2xhc3MgRE9NTWltZVR5cGVBcnJheSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPERPTU1pbWVUeXBlQXJyYXk+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9NTWltZVR5cGVBcnJheT4gY3JlYXRlKEZyYW1lKiBm
cmFtZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01NaW1lVHlwZUFycmF5KGZyYW1lKSk7IH0K
KyAgICBzdGF0aWMgUmVmPERPTU1pbWVUeXBlQXJyYXk+IGNyZWF0ZShET01XaW5kb3cqIHdpbmRv
dykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01NaW1lVHlwZUFycmF5KHdpbmRvdykpOyB9CiAg
ICAgfkRPTU1pbWVUeXBlQXJyYXkoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpA
QCAtNDEsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9y
dGVkUHJvcGVydHlOYW1lcygpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERPTU1pbWVUeXBl
QXJyYXkoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBET01NaW1lVHlwZUFycmF5KERPTVdpbmRvdyop
OwogICAgIFBsdWdpbkRhdGEqIGdldFBsdWdpbkRhdGEoKSBjb25zdDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKaW5kZXggY2NlMzYxZTI3MzJkMjFiMzU4
NjA5MTE3NDBiZDRkZWU2NTNiYWZjNS4uMTA1ZjVjYzdkNTgzYjU3OThmMGNhZjVmY2FjZTgwMmFm
NTMyYzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKQEAg
LTI4LDggKzI4LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01QbHVnaW5BcnJheTo6
RE9NUGx1Z2luQXJyYXkoRnJhbWUqIGZyYW1lKQotICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJh
bWUpCitET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkoRE9NV2luZG93KiB3aW5kb3cpCisg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5kb3cpCiB7CiB9CiAKQEAgLTUzLDcgKzUzLDcgQEAg
UmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2luQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAg
ICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zID0gZGF0YS0+cHVibGljbHlWaXNp
YmxlUGx1Z2lucygpOwogICAgIGlmIChpbmRleCA+PSBwbHVnaW5zLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEsIG1fZnJh
bWUsIHBsdWdpbnNbaW5kZXhdKTsKKyAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwg
ZnJhbWUoKSwgcGx1Z2luc1tpbmRleF0pOwogfQogCiBSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVn
aW5BcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAt
NjQsNyArNjQsNyBAQCBSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6bmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogCiAgICAgZm9yIChhdXRvJiBwbHVn
aW4gOiBkYXRhLT53ZWJWaXNpYmxlUGx1Z2lucygpKSB7CiAgICAgICAgIGlmIChwbHVnaW4ubmFt
ZSA9PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUo
ZGF0YSwgbV9mcmFtZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIHJldHVybiBET01QbHVnaW46OmNy
ZWF0ZShkYXRhLCBmcmFtZSgpLCBwbHVnaW4pOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KQEAgLTg3LDEwICs4NywxMSBAQCBWZWN0b3I8QXRvbWljU3RyaW5nPiBET01QbHVnaW5BcnJh
eTo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpCiAKIHZvaWQgRE9NUGx1Z2luQXJyYXk6OnJlZnJl
c2goYm9vbCByZWxvYWRQYWdlcykKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQorICAgIGlmICghZnJhbWUtPnBhZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUGFnZTo6cmVmcmVzaFBsdWdpbnMocmVsb2FkUGFnZXMpOwpAQCAt
OTgsMTAgKzk5LDExIEBAIHZvaWQgRE9NUGx1Z2luQXJyYXk6OnJlZnJlc2goYm9vbCByZWxvYWRQ
YWdlcykKIAogUGx1Z2luRGF0YSogRE9NUGx1Z2luQXJyYXk6OnBsdWdpbkRhdGEoKSBjb25zdAog
ewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBQYWdlKiBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luQXJyYXkuaAppbmRleCA5YjgwM2ZkZWEwODgyYzE1Y2ZiOWJlNDljMDNhMDM2
ZjhjNjcxMTcyLi5iYTBkOWMwOGEzMjBjZDVlODAwYjczYTNlZWYxMGViNTc3ZGUyNmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oCkBAIC0yNywxMiArMjcsMTEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKIGNsYXNzIFBsdWdpbkRhdGE7
CiAKIGNsYXNzIERPTVBsdWdpbkFycmF5IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8RE9NUGx1Z2luQXJyYXk+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9NUGx1Z2luQXJyYXk+IGNyZWF0ZShGcmFtZSogZnJh
bWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NUGx1Z2luQXJyYXkoZnJhbWUpKTsgfQorICAg
IHN0YXRpYyBSZWY8RE9NUGx1Z2luQXJyYXk+IGNyZWF0ZShET01XaW5kb3cqIHdpbmRvdykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBET01QbHVnaW5BcnJheSh3aW5kb3cpKTsgfQogICAgIH5ET01Q
bHVnaW5BcnJheSgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC00Myw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZnJlc2goYm9vbCByZWxvYWRQYWdlcyk7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgRE9NUGx1Z2luQXJyYXkoRnJhbWUqKTsKKyAgICBleHBsaWNp
dCBET01QbHVnaW5BcnJheShET01XaW5kb3cqKTsKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRh
KCkgY29uc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCBhZGIxOTU0
NWM1MDdkZTlkM2I1YTI3MWE2NTFkNzAzYTg2MDExNTI1Li41Njg3MjM4ODkyNzhlYzdhYjI0NGI1
Yzk1YTRmNmI1ZWQyNWRmZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTM3
LDE2ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTdG9yYWdlPiBTdG9y
YWdlOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFy
ZWEpCitSZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWZQ
dHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZShmcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsKIH0KIAot
U3RvcmFnZTo6U3RvcmFnZShGcmFtZSogZnJhbWUsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorU3RvcmFnZTo6U3RvcmFn
ZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQor
ICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RG
TW92ZShzdG9yYWdlQXJlYSkpCiB7Ci0gICAgQVNTRVJUKG1fZnJhbWUpOworICAgIEFTU0VSVChm
cmFtZSgpKTsKICAgICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVh
LT5pbmNyZW1lbnRBY2Nlc3NDb3VudCgpOwpAQCAtNzQsMTEgKzc0LDEyIEBAIFN0cmluZyBTdG9y
YWdlOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogCiBFeGNlcHRpb25Pcjx2b2lk
PiBTdG9yYWdlOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwogCiAgICAgYm9vbCBxdW90YUV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIG1fc3Rv
cmFnZUFyZWEtPnNldEl0ZW0obV9mcmFtZSwga2V5LCB2YWx1ZSwgcXVvdGFFeGNlcHRpb24pOwor
ICAgIG1fc3RvcmFnZUFyZWEtPnNldEl0ZW0oZnJhbWUsIGtleSwgdmFsdWUsIHF1b3RhRXhjZXB0
aW9uKTsKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKICAgICByZXR1cm4geyB9OwpAQCAtODYsMTkgKzg3LDIx
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3JhZ2U6OnJlbW92
ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8q
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKLSAgICBtX3N0b3JhZ2VBcmVhLT5y
ZW1vdmVJdGVtKG1fZnJhbWUsIGtleSk7CisgICAgbV9zdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShm
cmFtZSwga2V5KTsKICAgICByZXR1cm4geyB9OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTdG9y
YWdlOjpjbGVhcigpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhp
cy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKLSAgICBtX3N0b3JhZ2VBcmVhLT5jbGVhcihtX2ZyYW1l
KTsKKyAgICBtX3N0b3JhZ2VBcmVhLT5jbGVhcihmcmFtZSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4OWM0NzgxNDVhMjczNjM0NDAxNWY4NjZj
ODhlMTNkMWE2Mzg4NThlLi44MzY2YmJjMWI1OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzEsMTIgKzMxLDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xh
c3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0
b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZT4gY3JlYXRlKEZyYW1lKiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWZQdHI8U3RvcmFnZUFyZWE+
JiYpOwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAg
LTU0LDcgKzUzLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyBy
ZXR1cm4gKm1fc3RvcmFnZUFyZWE7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKEZyYW1lKiwg
UmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBTdG9yYWdlKERPTVdpbmRvdyYsIFJlZlB0cjxT
dG9yYWdlQXJlYT4mJik7CiAKICAgICBjb25zdCBSZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFn
ZUFyZWE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAKaW5kZXggZjg3MWZkZTczYWIzNGU5Yjg3YWNjNDEyNGVkODQ1MmE4YWY2Y2IyNC4u
MzZmZTBlMDVkMDRkZTAzOTQ5ODU1NGMxZWJhMjU2MDgzN2NhM2NiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC01OCw3ICs1OCw3
IEBAIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBJbmplY3RlZEJ1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbjo6Z2V0KERPTVdpbmRvCiB9CiAKIEluamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uOjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbihXZWJGcmFtZSogZnJh
bWUsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQotICAgIDogbV9jb3JlRXh0ZW5z
aW9uKERPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKSwgd29ybGQt
PmNvcmVXb3JsZCgpKSkKKyAgICA6IG1fY29yZUV4dGVuc2lvbihET01XaW5kb3dFeHRlbnNpb246
OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCkgPyBmcmFtZS0+Y29yZUZyYW1lKCktPndpbmRvdygp
IDogbnVsbHB0ciwgd29ybGQtPmNvcmVXb3JsZCgpKSkKIHsKICAgICBhbGxFeHRlbnNpb25zKCku
YWRkKG1fY29yZUV4dGVuc2lvbi5nZXQoKSwgdGhpcyk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351747</attachid>
            <date>2018-10-07 15:53:33 -0700</date>
            <delta_ts>2018-10-08 10:12:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190341-20181007155332.patch</filename>
            <type>text/plain</type>
            <size>111797</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FhNWViYWYxODJjMGNj
NjdhZDFmODQ0ZGVlN2M4MWU3NjgxYjE5OS4uZjFiNjhjMzFhZmFjOGMyMDEwMTg2N2JiZjZkMmFi
YTlkNGYzMDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOSBAQAorMjAxOC0xMC0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgRE9NV2luZG93UHJv
cGVydHkgZ2V0IGlzIGZyYW1lIGZyb20gaXRzIGFzc29jaWF0ZWQgRE9NV2luZG93CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAzNDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZlIERPTVdpbmRvd1By
b3BlcnR5IGdldCBpcyBmcmFtZSBmcm9tIGl0cyBhc3NvY2lhdGVkIERPTVdpbmRvdywgaW5zdGVh
ZCBvZiBoYXZpbmcgaXRzIG93bgorICAgICAgICBtX2ZyYW1lIHRoYXQgY2FuIHBvdGVudGlhbGx5
IGdldCBvdXQtb2Ytc3luYy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2Fj
aGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6RE9NV2luZG93Q2Fj
aGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdlb2xvY2F0aW9uOjpOYXZpZ2F0b3JH
ZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OkRPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzOjpOYXZpZ2F0b3JNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
TWVkaWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5oOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVvdGE6OkRPTVdpbmRvd1F1b3Rh
KToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6Ok5hdmlnYXRvclN0b3JhZ2VR
dW90YSk6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpET01XaW5kb3dTcGVl
Y2hTeW50aGVzaXMpOgorICAgICAgICAqIGNzcy9TdHlsZU1lZGlhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlTWVkaWE6OlN0eWxlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVN
ZWRpYTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjptYXRjaE1l
ZGl1bSBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
Lmg6CisgICAgICAgICogcGFnZS9CYXJQcm9wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhclBy
b3A6OkJhclByb3ApOgorICAgICAgICAoV2ViQ29yZTo6QmFyUHJvcDo6dmlzaWJsZSBjb25zdCk6
CisgICAgICAgICogcGFnZS9CYXJQcm9wLmg6CisgICAgICAgIChXZWJDb3JlOjpCYXJQcm9wOjpj
cmVhdGUpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNl
bGVjdGlvbjo6dmlzaWJsZVNlbGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01T
ZWxlY3Rpb246OmFuY2hvck5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0
aW9uOjphbmNob3JPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
Ojpmb2N1c05vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpmb2N1
c09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmJhc2VOb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6YmFzZU9mZnNldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4dGVudE5vZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpleHRlbnRPZmZzZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjppc0NvbGxhcHNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpET01TZWxlY3Rpb246OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjpyYW5nZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNl
bGVjdGlvbjo6Y29sbGFwc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpjb2xs
YXBzZVRvRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2VUb1N0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZW1wdHkpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2Vs
ZWN0aW9uOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpleHRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpnZXRSYW5nZUF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6cmVtb3ZlQWxsUmFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6YWRkUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0
aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
Ojpjb250YWluc05vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjp0
b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNoYWRvd0FkanVzdGVk
Tm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNoYWRvd0FkanVz
dGVkT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6aXNWYWxp
ZEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmxvY2F0aW9uYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bWVudWJh
cik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBlcnNvbmFsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnN0YXR1c2Jhcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnRvb2xiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphcHBsaWNhdGlvbkNhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bmF2aWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6bG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp2aXN1YWxW
aWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdE5hbWVzcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnN0eWxlTWVkaWEpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dF
eHRlbnNpb246OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6On5ET01XaW5kb3dQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1l
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3Bl
cnR5OjpyZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5
Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd1Byb3BlcnR5OjpmcmFtZSBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3dQ
cm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6OndpbmRvdyBj
b25zdCk6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3Rvcnk6Okhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6bGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnNjcm9sbFJlc3RvcmF0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnNldFNjcm9sbFJlc3RvcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0YXRlSW50ZXJuYWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeTo6Z28pOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6dXJsRm9yU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6CisgICAg
ICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aHJlZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cHJvdG9jb2wgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYXRpb246Omhvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246Omhvc3RuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwYXRobmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2VhcmNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OmFuY2VzdG9yT3JpZ2lucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aGFz
aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SHJlZik6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3RuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6
c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjphc3NpZ24pOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRp
b246OnJlcGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnJlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIHBhZ2UvTG9j
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6TmF2aWdh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6YXBwVmVyc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnVzZXJBZ2VudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6Om1pbWVUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmNvb2tpZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmF2aWdhdG9yOjpqYXZhRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3I6OnN0YW5kYWxvbmUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
Lmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZTo6bmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6
dGltaW5nKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OlBlcmZvcm1hbmNlTmF2aWdhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OnR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpyZWRpcmVjdENvdW50
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
VGltaW5nOjpkb2N1bWVudExvYWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9jdW1lbnRUaW1pbmcgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjcmVh
dGUpOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
bjo6U2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6aGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuOjpjb2xvckRlcHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6cGl4
ZWxEZXB0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmF2YWlsTGVmdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmF2YWlsVG9wIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmVlbjo6YXZhaWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuOjphdmFpbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1NjcmVlbi5oOgorICAg
ICAgICAqIHBhZ2UvVmlzdWFsVmlld3BvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFs
Vmlld3BvcnQ6OlZpc3VhbFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdw
b3J0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
c3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3Vh
bFZpZXdwb3J0Ojp1cGRhdGVGcmFtZUxheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXN1YWxWaWV3cG9ydDo6b2Zmc2V0TGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1
YWxWaWV3cG9ydDo6b2Zmc2V0VG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZp
ZXdwb3J0OjpwYWdlTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9y
dDo6cGFnZVRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6d2lk
dGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OmhlaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6c2NhbGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaXN1YWxWaWV3cG9ydDo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvVmlz
dWFsVmlld3BvcnQuaDoKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVzcGFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6OldlYktpdE5hbWVzcGFjZSk6CisgICAgICAg
ICogcGFnZS9XZWJLaXROYW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVz
cGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheTo6RE9NTWltZVR5cGVBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZUFycmF5OjppdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01N
aW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk6OmNy
ZWF0ZSk6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NUGx1Z2luQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luQXJy
YXk6Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6cmVmcmVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6cGx1Z2luRGF0YSBjb25zdCk6
CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGx1Z2luQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlOjpTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OnNldEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmg6CisKIDIwMTgt
MTAtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBi
dWlsZGluZyB3aXRoIHRoZSBsYXRlc3QgbWFjT1MgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRiYTVjMDhjZThl
ZjYwNWM4NzAwODRlMWNmMGQ5ZmZkY2NiNDlmYzMuLjRkY2RiZmYzM2ZkYmIxZWNiMTViM2VlZGVi
MGMzZTg0MzkxODM0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMTAtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIERPTVdpbmRvd1By
b3BlcnR5IGdldCBpcyBmcmFtZSBmcm9tIGl0cyBhc3NvY2lhdGVkIERPTVdpbmRvdworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OkluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uKToKKwogMjAxOC0xMC0wNyAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyaWVkIHRvIGZpeCBIQVZFKExJTktfUFJFVklFVykg
aU9TIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
V2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93
Q2FjaGVzLmNwcAppbmRleCBlMGI5MTA5NjBmNDZiMDgxNDJlMDQzNzFmZWM4NjliNzU3MGMzN2E5
Li41ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNlMDZjODM3MjQ1NjhhMmZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTVdpbmRvd0NhY2hlczo6RE9NV2luZG93
Q2FjaGVzKERPTVdpbmRvdyogd2luZG93KQotICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93
LT5mcmFtZSgpKQorICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93KQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9y
R2VvbG9jYXRpb24uY3BwCmluZGV4IDUxMjMyNTU2MjljYmE1MjYyMDBlY2FkNjllMmNhYjhmYTUx
MTA0MTAuLjY0ZGY3MzVhNzExNTgzNmQ0NWQxYThjZGI1MTA5ZjhhYTQyMThlZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9y
R2VvbG9jYXRpb24uY3BwCkBAIC0zMyw4ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotTmF2aWdhdG9yR2VvbG9jYXRpb246Ok5hdmlnYXRvckdlb2xvY2F0aW9uKEZyYW1lKiBmcmFt
ZSkKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorTmF2aWdhdG9yR2VvbG9jYXRpb246
Ok5hdmlnYXRvckdlb2xvY2F0aW9uKERPTVdpbmRvdyogd2luZG93KQorICAgIDogRE9NV2luZG93
UHJvcGVydHkod2luZG93KQogewogfQogCkBAIC00OSw3ICs0OSw3IEBAIE5hdmlnYXRvckdlb2xv
Y2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JHZW9sb2NhdGlvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5h
dmlnYXRvckdlb2xvY2F0aW9uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9u
PihuYXZpZ2F0b3ItPmZyYW1lKCkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3ItPndpbmRvdygpKTsK
ICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3Zp
ZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
TmF2aWdhdG9yR2VvbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaAppbmRleCA4M2Y4ZTI1YzBlYjQzZTZkMTFlYzU3MWE5
OGZlZThhMjg4YzE5ODNhLi5mYjA5OWEwNGNjZTYyOTU1MGM5ZWY4OGVmNzg5NGY5ZTc0NmIwNDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRv
ckdlb2xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5oCkBAIC0yNiwxNCArMjYsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBGcmFtZTsKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgTmF2aWdh
dG9yOwogCiBjbGFzcyBOYXZpZ2F0b3JHZW9sb2NhdGlvbiA6IHB1YmxpYyBTdXBwbGVtZW50PE5h
dmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9yR2VvbG9jYXRpb24oRnJh
bWUqKTsKKyAgICBleHBsaWNpdCBOYXZpZ2F0b3JHZW9sb2NhdGlvbihET01XaW5kb3cqKTsKICAg
ICB2aXJ0dWFsIH5OYXZpZ2F0b3JHZW9sb2NhdGlvbigpOwogICAgIHN0YXRpYyBOYXZpZ2F0b3JH
ZW9sb2NhdGlvbiogZnJvbShOYXZpZ2F0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAK
aW5kZXggODljMWM4NTExZjlmYmY3MzM3OTljOGU3YTgwNzg2YmZjYTM3MGU0Ny4uNWFhM2Y5ZjY3
OGU0YWQyNDk4MDFhZTMzYWVhYjI5MzhkNTA5NmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2Uu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNlKERPTVdpbmRvdyogd2luZG93
KQotICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93LT5mcmFtZSgpKQorICAgIDogRE9NV2lu
ZG93UHJvcGVydHkod2luZG93KQogICAgICwgbV93aW5kb3cod2luZG93KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURl
dmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JN
ZWRpYURldmljZXMuY3BwCmluZGV4IDM0MDE1YWQ3ODU4ZmY5NjE5NmYyYjEwYWVjMzU5YmZhZDNh
NWY0NjcuLmU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNiZTc4ZjhmNGFhOGFlNTI1OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAKQEAgLTQwLDggKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1OYXZpZ2F0b3JNZWRpYURldmljZXM6Ok5hdmlnYXRvck1lZGlhRGV2aWNlcyhGcmFtZSog
ZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK05hdmlnYXRvck1lZGlhRGV2
aWNlczo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzKERPTVdpbmRvdyogd2luZG93KQorICAgIDogRE9N
V2luZG93UHJvcGVydHkod2luZG93KQogewogfQogCkBAIC01MSw3ICs1MSw3IEBAIE5hdmlnYXRv
ck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JN
ZWRpYURldmljZXM+KG5hdmlnYXRvci0+ZnJhbWUoKSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3It
PndpbmRvdygpKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5oCmluZGV4IDY3N2RkYmJkZjQ2
MmYxZDliOTJiZTk5M2Q0ODk3ZDQ3NjNhYThiYzMuLjA5M2U3NGNjMmYwMDFkMDA2OTFhNjg1OWE5
YmY0MjVkOGFkOTQ4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaApAQCAtMzcsMTMgKzM3LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBNZWRpYURldmlj
ZXM7CiBjbGFzcyBOYXZpZ2F0b3I7CiAKIGNsYXNzIE5hdmlnYXRvck1lZGlhRGV2aWNlcyA6IHB1
YmxpYyBTdXBwbGVtZW50PE5hdmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKEZyYW1lKik7CisgICAg
ZXhwbGljaXQgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKERPTVdpbmRvdyopOwogICAgIHZpcnR1YWwg
fk5hdmlnYXRvck1lZGlhRGV2aWNlcygpOwogICAgIHN0YXRpYyBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMqIGZyb20oTmF2aWdhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90
YS9ET01XaW5kb3dRdW90YS5jcHAKaW5kZXggOWQ0ZWI4NTY0OTM3ODBhZGI2YTlmYjIzYzc1MTJj
ZWNlYmRkNjA1NS4uMDNmZTllMzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NV2luZG93UXVvdGE6OkRP
TVdpbmRvd1F1b3RhKERPTVdpbmRvdyogd2luZG93KQotICAgIDogRE9NV2luZG93UHJvcGVydHko
d2luZG93LT5mcmFtZSgpKQorICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93KQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAKaW5kZXggMzk1NzFjOTc2OWY3ZDVjMjEwM2QyMjUzMWYxY2NhMTNhMGExNWI2
My4uN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1MzhiOGFkOWI3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNw
cApAQCAtMzksOCArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdmlnYXRvclN0
b3JhZ2VRdW90YTo6TmF2aWdhdG9yU3RvcmFnZVF1b3RhKEZyYW1lKiBmcmFtZSkKLSAgICA6IERP
TVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpOYXZpZ2F0b3JT
dG9yYWdlUXVvdGEoRE9NV2luZG93KiB3aW5kb3cpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3
aW5kb3cpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
TmF2aWdhdG9yU3RvcmFnZVF1b3RhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05h
dmlnYXRvclN0b3JhZ2VRdW90YS5oCmluZGV4IDhlYjVkNDIzYWFkN2YxNjAzNGJhMmM3NWJkMTZh
NDg5MTA0ZmQ0M2UuLmY4OGFjN2Y2Y2RjNDNkMjNmOGUyODZjNDE2M2I5NmQwZjM5YTRjZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1
b3RhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdl
UXVvdGEuaApAQCAtMzcsMTMgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRnJhbWU7CiBjbGFzcyBTdG9yYWdlUXVvdGE7CiBjbGFzcyBOYXZpZ2F0b3I7CiAKIGNsYXNz
IE5hdmlnYXRvclN0b3JhZ2VRdW90YSA6IHB1YmxpYyBTdXBwbGVtZW50PE5hdmlnYXRvcj4sIHB1
YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKEZyYW1lKik7CisgICAgZXhwbGljaXQgTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
KERPTVdpbmRvdyopOwogICAgIHZpcnR1YWwgfk5hdmlnYXRvclN0b3JhZ2VRdW90YSgpOwogICAg
IHN0YXRpYyBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIGZyb20oTmF2aWdhdG9yKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hT
eW50aGVzaXMuY3BwCmluZGV4IGI2NTUzYjllZDQzYmZkZGM5Y2ZmMjk1NDZmNDVhMTI2OGFmNjFl
ZWMuLmRjZGRhNDlkYmI5YmZlZDYwNjNhNDJkYjVkMzIzYThmNzJiNTQwZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3lu
dGhlc2lzLmNwcApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01X
aW5kb3dTcGVlY2hTeW50aGVzaXM6OkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyhET01XaW5kb3cq
IHdpbmRvdykKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdy0+ZnJhbWUoKSkKKyAgICA6
IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEu
Y3BwCmluZGV4IGJlNjRkMTRjMzYzODBlZDRmZDNiZGE3MzQ4NTJlYjY3NWIzZjY5YzguLmE2MTQy
YWFiMmZlMzdjMTVkMGIwMTRmZGMzMjljNzQzZDQ2MGQ5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVN
ZWRpYS5jcHAKQEAgLTM5LDE0ICszOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0
eWxlTWVkaWE6OlN0eWxlTWVkaWEoRnJhbWUqIGZyYW1lKQotICAgIDogRE9NV2luZG93UHJvcGVy
dHkoZnJhbWUpCitTdHlsZU1lZGlhOjpTdHlsZU1lZGlhKERPTVdpbmRvdyYgd2luZG93KQorICAg
IDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKIH0KIAogU3RyaW5nIFN0eWxlTWVkaWE6
OnR5cGUoKSBjb25zdAogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUgPyBtX2ZyYW1l
LT52aWV3KCkgOiAwOworICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRyOwogICAgIGlmICh2
aWV3KQogICAgICAgICByZXR1cm4gdmlldy0+bWVkaWFUeXBlKCk7CiAKQEAgLTU1LDEwICs1Niwx
MSBAQCBTdHJpbmcgU3R5bGVNZWRpYTo6dHlwZSgpIGNvbnN0CiAKIGJvb2wgU3R5bGVNZWRpYTo6
bWF0Y2hNZWRpdW0oY29uc3QgU3RyaW5nJiBxdWVyeSkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBk
b2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlTWVkaWEuaAppbmRleCBiMmNiZDVmOGM5ODBkZWJmYzIxNDIwNDNiOGMzNTNi
ZTMzMjUxZGU1Li5mMGY5OGJlM2Y4MzRmOGI1NGQ5N2Y2YjlmNzJlNjIxZGRjNjg2ZDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZU1lZGlhLmgKQEAgLTMyLDE3ICszMiwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEZyYW1lOwotCiBjbGFzcyBTdHlsZU1lZGlhIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVNZWRpYT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZU1lZGlhPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTWVkaWEoZnJhbWUpKTsgfQorICAgIHN0YXRpYyBSZWY8
U3R5bGVNZWRpYT4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlTWVkaWEod2luZG93KSk7IH0KIAogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAg
ICAgYm9vbCBtYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBTdHlsZU1lZGlhKEZyYW1lKik7CisgICAgZXhwbGljaXQgU3R5bGVNZWRpYShE
T01XaW5kb3cmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRl
eCAzMzYxMDkzOWUwYjQwMDhiYjI2NmExMzIzMjczN2I0ZTdhYzU4MTJjLi4yNTI5OWI1Y2JkYzFi
MjA0ZjQzN2E1MDIwOWI3ZDJhNTY3ODVmNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0zNCw4ICszNCw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NQXBwbGljYXRpb25DYWNoZTo6RE9NQXBw
bGljYXRpb25DYWNoZShGcmFtZSYgZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmZnJh
bWUpCitET01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKERPTVdpbmRvdyYg
d2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKICAgICBpZiAoYXV0
byogaG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkpCiAgICAgICAgIGhvc3QtPnNldERPTUFw
cGxpY2F0aW9uQ2FjaGUodGhpcyk7CkBAIC02NCw5ICs2NCwxMCBAQCB2b2lkIERPTUFwcGxpY2F0
aW9uQ2FjaGU6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCiAKIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0KiBET01BcHBsaWNhdGlvbkNhY2hlOjphcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAg
YXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gJmRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwpAQCAtMTA0LDkg
KzEwNSwxMCBAQCB2b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmFib3J0KCkKIAogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogRE9NQXBwbGljYXRpb25DYWNoZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IGNmNmQyYTlkOTlmNzA2
OGMwNmNjMmY0YTI3MTExZTJkY2RjMWU2NzUuLmUzMjAzNWM1ZmU4YjBiYmVmODRhZTEwMWI4MzBh
OWZkYzFiNDZjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9E
T01BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBGcmFtZTsKIAog
Y2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUFw
cGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGlj
IERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERPTUFwcGxpY2F0
aW9uQ2FjaGU+IGNyZWF0ZShGcmFtZSYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9N
QXBwbGljYXRpb25DYWNoZShmcmFtZSkpOyB9Ci0gICAgdmlydHVhbCB+RE9NQXBwbGljYXRpb25D
YWNoZSgpIHsgQVNTRVJUKCFtX2ZyYW1lKTsgfQorICAgIHN0YXRpYyBSZWY8RE9NQXBwbGljYXRp
b25DYWNoZT4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERPTUFwcGxpY2F0aW9uQ2FjaGUod2luZG93KSk7IH0KKyAgICB2aXJ0dWFsIH5ET01BcHBsaWNh
dGlvbkNhY2hlKCkgeyBBU1NFUlQoIWZyYW1lKCkpOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBz
dGF0dXMoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGUoKTsKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IERPTUFwcGxpY2F0aW9uQ2FjaGUoRnJhbWUmKTsKKyAgICBleHBsaWNp
dCBET01BcHBsaWNhdGlvbkNhY2hlKERPTVdpbmRvdyYpOwogCiAgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFyUHJvcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3BwCmluZGV4IDk0NDY2MzRlMzZkZGY4
YzkxMDEyNmE5YmJlZmViNTg0ZWRhNDczN2QuLjhkNzkxOGQyZTY3MzA1YmFkOThhNDdkMTE3Yzdk
MTRjZjI3MzhjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFyUHJvcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9CYXJQcm9wLmNwcApAQCAtMzUsOCArMzUsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJhclByb3A6OkJhclByb3AoRnJhbWUqIGZyYW1lLCBU
eXBlIHR5cGUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKK0JhclByb3A6OkJhclBy
b3AoRE9NV2luZG93JiB3aW5kb3csIFR5cGUgdHlwZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5
KCZ3aW5kb3cpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KQEAgLTQ4LDkgKzQ4LDEwIEBAIEJh
clByb3A6OlR5cGUgQmFyUHJvcDo6dHlwZSgpIGNvbnN0CiAKIGJvb2wgQmFyUHJvcDo6dmlzaWJs
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9CYXJQcm9wLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclBy
b3AuaAppbmRleCA3OGQ3ZDFlNzM4ZmYzOTVhNjc3YTljMzIwOGRiMzdjM2NmNDFjNzdkLi4xYjEy
MTJiMjQ5ZDFiNGY5N2ZhMGYxOTRjM2I5Zjc1MzExOTEzY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0JhclByb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3Au
aApAQCAtMzUsMTkgKzM1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJh
bWU7Ci0KIGNsYXNzIEJhclByb3AgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxCYXJQcm9wPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAg
ICBlbnVtIFR5cGUgeyBMb2NhdGlvbmJhciwgTWVudWJhciwgUGVyc29uYWxiYXIsIFNjcm9sbGJh
cnMsIFN0YXR1c2JhciwgVG9vbGJhciB9OwogCi0gICAgc3RhdGljIFJlZjxCYXJQcm9wPiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBUeXBlIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFyUHJv
cChmcmFtZSwgdHlwZSkpOyB9CisgICAgc3RhdGljIFJlZjxCYXJQcm9wPiBjcmVhdGUoRE9NV2lu
ZG93JiB3aW5kb3csIFR5cGUgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXJQcm9wKHdp
bmRvdywgdHlwZSkpOyB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBib29sIHZpc2li
bGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBCYXJQcm9wKEZyYW1lKiwgVHlwZSk7CisgICAg
QmFyUHJvcChET01XaW5kb3cmLCBUeXBlKTsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCBlOGJhMjdjYmFlYWYzODE5YjAwNDBhNDBi
NmExY2U1ZDZhZDdmY2MzLi41ZTA2N2NmNzJmZWE5Yjk0ZTM1NTUyOTljYWEwZDliNTdiNzMwMTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC01MSwxNSArNTEsMTUgQEAg
c3RhdGljIE5vZGUqIHNlbGVjdGlvblNoYWRvd0FuY2VzdG9yKEZyYW1lJiBmcmFtZSkKICAgICBy
ZXR1cm4gZnJhbWUuZG9jdW1lbnQoKS0+YW5jZXN0b3JOb2RlSW5UaGlzU2NvcGUobm9kZSk7CiB9
CiAKLURPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSkKLSAgICA6IERPTVdp
bmRvd1Byb3BlcnR5KCZmcmFtZSkKK0RPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKERPTVdpbmRv
dyYgd2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsKIH0KIAogY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgRE9NU2VsZWN0aW9uOjp2aXNpYmxlU2VsZWN0aW9uKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobV9mcmFtZSk7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpOworICAgIEFTU0VSVChmcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWUo
KS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiB9CiAKIHN0YXRpYyBQb3NpdGlvbiBhbmNob3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCkBAIC04Niw3MiArODYs
NzQgQEAgc3RhdGljIFBvc2l0aW9uIGV4dGVudFBvc2l0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbikKIAogTm9kZSogRE9NU2VsZWN0aW9uOjphbmNob3JOb2RlKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghZnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHNoYWRvd0FkanVzdGVkTm9k
ZShhbmNob3JQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0KIAogdW5zaWduZWQgRE9N
U2VsZWN0aW9uOjphbmNob3JPZmZzZXQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAg
ICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFkb3dBZGp1
c3RlZE9mZnNldChhbmNob3JQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0KIAogTm9k
ZSogRE9NU2VsZWN0aW9uOjpmb2N1c05vZGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkK
KyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBz
aGFkb3dBZGp1c3RlZE5vZGUoZm9jdXNQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0K
IAogdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpmb2N1c09mZnNldCgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIHNoYWRvd0FkanVzdGVkT2Zmc2V0KGZvY3VzUG9zaXRpb24odmlzaWJsZVNlbGVjdGlvbigp
KSk7CiB9CiAKIE5vZGUqIERPTVNlbGVjdGlvbjo6YmFzZU5vZGUoKSBjb25zdAogewotICAgIGlm
ICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc2hhZG93QWRqdXN0ZWROb2RlKGJhc2VQb3Np
dGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpKTsKIH0KIAogdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpi
YXNlT2Zmc2V0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gc2hhZG93QWRqdXN0ZWRPZmZzZXQoYmFz
ZVBvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24oKSkpOwogfQogCiBOb2RlKiBET01TZWxlY3Rpb246
OmV4dGVudE5vZGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gc2hhZG93QWRqdXN0ZWROb2RlKGV4dGVudFBvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24oKSkp
OwogfQogCiB1bnNpZ25lZCBET01TZWxlY3Rpb246OmV4dGVudE9mZnNldCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIHNoYWRvd0FkanVzdGVkT2Zmc2V0KGV4dGVudFBvc2l0aW9uKHZpc2libGVTZWxl
Y3Rpb24oKSkpOwogfQogCiBib29sIERPTVNlbGVjdGlvbjo6aXNDb2xsYXBzZWQoKSBjb25zdAog
ewotICAgIGlmICghbV9mcmFtZSB8fCBzZWxlY3Rpb25TaGFkb3dBbmNlc3RvcigqbV9mcmFtZSkp
CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgc2Vs
ZWN0aW9uU2hhZG93QW5jZXN0b3IoKmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS5pc1JhbmdlKCk7CisgICAgcmV0dXJuICFmcmFt
ZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpOwogfQogCiBTdHJpbmcgRE9NU2VsZWN0aW9uOjp0eXBl
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAiTm9uZSJfczsKLSAgICBh
dXRvJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAg
ICAgICAgcmV0dXJuICJOb25lIl9zOwogICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKQpAQCAt
MTYxLDcgKzE2Myw4IEBAIFN0cmluZyBET01TZWxlY3Rpb246OnR5cGUoKSBjb25zdAogCiB1bnNp
Z25lZCBET01TZWxlY3Rpb246OnJhbmdlQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiAhbV9m
cmFtZSB8fCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5pc05vbmUoKSA/IDAgOiAxOworICAgIGF1dG8q
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICByZXR1cm4gIWZyYW1lIHx8IGZyYW1lLT5zZWxl
Y3Rpb24oKS5pc05vbmUoKSA/IDAgOiAxOwogfQogCiB2b2lkIERPTVNlbGVjdGlvbjo6Y29sbGFw
c2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtMTY5LDQxICsxNzIsNDQgQEAgdm9p
ZCBET01TZWxlY3Rpb246OmNvbGxhcHNlKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKICAg
ICBpZiAoIWlzVmFsaWRGb3JQb3NpdGlvbihub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmPEZyYW1lPiBwcm90ZWN0b3IoKm1fZnJhbWUpOwotICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
Lm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgb2Zmc2V0KSwgRE9XTlNU
UkVBTSk7CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZSgqZnJhbWUoKSk7CisgICAgcHJv
dGVjdGVkRnJhbWUtPnNlbGVjdGlvbigpLm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obm9kZSwgb2Zmc2V0KSwgRE9XTlNUUkVBTSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TVNlbGVjdGlvbjo6Y29sbGFwc2VUb0VuZCgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1
dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4geyB9OwotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOworICAg
IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9u
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKIAotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKKyAgICBSZWY8RnJhbWU+
IHByb3RlY3RvcigqZnJhbWUpOwogICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVj
dGlvbigpLmVuZCgpLCBET1dOU1RSRUFNKTsKICAgICByZXR1cm4geyB9OwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmNvbGxhcHNlVG9TdGFydCgpCiB7Ci0gICAgaWYgKCFt
X2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNl
bGVjdGlvbigpOworICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAg
ICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKIAotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
KyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwogICAgIHNlbGVjdGlvbi5tb3ZlVG8o
c2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pOwogICAgIHJldHVybiB7
IH07CiB9CiAKIHZvaWQgRE9NU2VsZWN0aW9uOjplbXB0eSgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1l
KQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246OnNldEJhc2VB
bmRFeHRlbnQoTm9kZSogYmFzZU5vZGUsIHVuc2lnbmVkIGJhc2VPZmZzZXQsIE5vZGUqIGV4dGVu
dE5vZGUsIHVuc2lnbmVkIGV4dGVudE9mZnNldCkKQEAgLTIxMSw4ICsyMTcsOCBAQCB2b2lkIERP
TVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudChOb2RlKiBiYXNlTm9kZSwgdW5zaWduZWQgYmFz
ZU9mZnNldCwgTm9kZSogZQogICAgIGlmICghaXNWYWxpZEZvclBvc2l0aW9uKGJhc2VOb2RlKSB8
fCAhaXNWYWxpZEZvclBvc2l0aW9uKGV4dGVudE5vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWY8RnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihiYXNlTm9kZSwgYmFzZU9mZnNl
dCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihleHRlbnROb2RlLCBleHRlbnRPZmZzZXQp
LCBET1dOU1RSRUFNKTsKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKCpmcmFtZSgpKTsK
KyAgICBwcm90ZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihiYXNlTm9kZSwgYmFzZU9mZnNldCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihleHRlbnROb2RlLCBleHRlbnRPZmZzZXQpLCBET1dOU1RSRUFNKTsKIH0KIAogdm9pZCBE
T01TZWxlY3Rpb246OnNldFBvc2l0aW9uKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKQEAg
LTIyMCwxMyArMjI2LDE0IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpzZXRQb3NpdGlvbihOb2RlKiBu
b2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgaWYgKCFpc1ZhbGlkRm9yUG9zaXRpb24obm9kZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
LSAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVk
RnJhbWUoKmZyYW1lKCkpOworICAgIHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8o
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOwog
fQogCiB2b2lkIERPTVNlbGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgYWx0ZXJTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBjb25zdCBTdHJpbmcmIGdyYW51bGFyaXR5
U3RyaW5nKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVTZWxl
Y3Rpb246OkVBbHRlcmF0aW9uIGFsdGVyOwpAQCAtMjcxLDIxICsyNzgsMjIgQEAgdm9pZCBET01T
ZWxlY3Rpb246Om1vZGlmeShjb25zdCBTdHJpbmcmIGFsdGVyU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvblN0cmkKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5tb2RpZnko
YWx0ZXIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9y
KCpmcmFtZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLm1vZGlmeShhbHRlciwgZGlyZWN0aW9u
LCBncmFudWxhcml0eSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVNlbGVjdGlvbjo6ZXh0
ZW5kKE5vZGUmIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisg
ICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgaWYgKG9mZnNldCA+IChub2RlLmlzQ2hhcmFjdGVyRGF0YU5vZGUo
KSA/IGNhcmV0TWF4T2Zmc2V0KG5vZGUpIDogbm9kZS5jb3VudENoaWxkTm9kZXMoKSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogICAgIGlmICghaXNWYWxp
ZEZvclBvc2l0aW9uKCZub2RlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5zZXRFeHRl
bnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZub2RlLCBvZmZzZXQpLCBET1dOU1RSRUFN
KTsKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRFeHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZub2RlLCBvZmZzZXQp
LCBET1dOU1RSRUFNKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yOTcsMTMgKzMwNSwxNCBA
QCBFeGNlcHRpb25PcjxSZWY8UmFuZ2U+PiBET01TZWxlY3Rpb246OmdldFJhbmdlQXQodW5zaWdu
ZWQgaW5kZXgpCiAgICAgLy8gSWYgeW91J3JlIGhpdHRpbmcgdGhpcywgeW91J3ZlIGFkZGVkIGJy
b2tlbiBtdWx0aS1yYW5nZSBzZWxlY3Rpb24gc3VwcG9ydC4KICAgICBBU1NFUlQocmFuZ2VDb3Vu
dCgpID09IDEpOwogCi0gICAgaWYgKGF1dG8qIHNoYWRvd0FuY2VzdG9yID0gc2VsZWN0aW9uU2hh
ZG93QW5jZXN0b3IoKm1fZnJhbWUpKSB7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgp
OworICAgIGlmIChhdXRvKiBzaGFkb3dBbmNlc3RvciA9IHNlbGVjdGlvblNoYWRvd0FuY2VzdG9y
KCpmcmFtZSkpIHsKICAgICAgICAgYXV0byogY29udGFpbmVyID0gc2hhZG93QW5jZXN0b3ItPnBh
cmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0g
c2hhZG93QW5jZXN0b3ItPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICAgICAgcmV0dXJuIFJhbmdl
OjpjcmVhdGUoc2hhZG93QW5jZXN0b3ItPmRvY3VtZW50KCksIGNvbnRhaW5lciwgb2Zmc2V0LCBj
b250YWluZXIsIG9mZnNldCk7CiAgICAgfQogCi0gICAgYXV0byBmaXJzdFJhbmdlID0gbV9mcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOworICAgIGF1dG8gZmlyc3RS
YW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CiAgICAg
QVNTRVJUKGZpcnN0UmFuZ2UpOwogICAgIGlmICghZmlyc3RSYW5nZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CkBAIC0zMTIsMTkgKzMyMSwyMSBAQCBFeGNl
cHRpb25PcjxSZWY8UmFuZ2U+PiBET01TZWxlY3Rpb246OmdldFJhbmdlQXQodW5zaWduZWQgaW5k
ZXgpCiAKIHZvaWQgRE9NU2VsZWN0aW9uOjpyZW1vdmVBbGxSYW5nZXMoKQogewotICAgIGlmICgh
bV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CiB9CiAKIHZvaWQgRE9NU2VsZWN0aW9uOjph
ZGRSYW5nZShSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7CisgICAgUmVmPEZyYW1lPiBwcm90
ZWN0b3IoKmZyYW1lKTsKIAotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlv
bigpOworICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICBpZiAo
c2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIHNlbGVjdGlvbi5tb3ZlVG8oJnJhbmdlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzY2LDEwICszNzcsMTEgQEAgdm9pZCBET01TZWxlY3Rpb246
OmFkZFJhbmdlKFJhbmdlJiByYW5nZSkKIAogdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21E
b2N1bWVudCgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBz
ZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zNzcsMTggKzM4OSwxOSBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZGVsZXRl
RnJvbURvY3VtZW50KCkKICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UgfHwgc2VsZWN0ZWRSYW5nZS0+
c2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8RnJhbWU+IHByb3RlY3Rv
cigqbV9mcmFtZSk7CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsKICAgICBzZWxl
Y3RlZFJhbmdlLT5kZWxldGVDb250ZW50cygpOwogICAgIHNldEJhc2VBbmRFeHRlbnQoJnNlbGVj
dGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KCks
ICZzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9m
ZnNldCgpKTsKIH0KIAogYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZShOb2RlJiBub2Rl
LCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0
byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOwot
ICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICE9ICZub2RlLmRvY3VtZW50KCkgfHwgc2VsZWN0
aW9uLmlzTm9uZSgpKQorICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsK
KyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgIT0gJm5vZGUuZG9jdW1lbnQoKSB8fCBzZWxlY3Rp
b24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZjxOb2RlPiBwcm90
ZWN0ZWROb2RlKG5vZGUpOwpAQCAtNDMwLDkgKzQ0MywxMCBAQCB2b2lkIERPTVNlbGVjdGlvbjo6
c2VsZWN0QWxsQ2hpbGRyZW4oTm9kZSYgbm9kZSkKIAogU3RyaW5nIERPTVNlbGVjdGlvbjo6dG9T
dHJpbmcoKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBwbGFpblRleHQobV9mcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYWluVGV4dChmcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAKIE5vZGUqIERP
TVNlbGVjdGlvbjo6c2hhZG93QWRqdXN0ZWROb2RlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikg
Y29uc3QKQEAgLTQ0MSw3ICs0NTUsNyBAQCBOb2RlKiBET01TZWxlY3Rpb246OnNoYWRvd0FkanVz
dGVkTm9kZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYXV0byogY29udGFpbmVyTm9kZSA9IHBvc2l0aW9uLmNvbnRhaW5lck5v
ZGUoKTsKLSAgICBhdXRvKiBhZGp1c3RlZE5vZGUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hbmNl
c3Rvck5vZGVJblRoaXNTY29wZShjb250YWluZXJOb2RlKTsKKyAgICBhdXRvKiBhZGp1c3RlZE5v
ZGUgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT5hbmNlc3Rvck5vZGVJblRoaXNTY29wZShjb250YWlu
ZXJOb2RlKTsKICAgICBpZiAoIWFkanVzdGVkTm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTQ1Nyw3ICs0NzEsNyBAQCB1bnNpZ25lZCBET01TZWxlY3Rpb246OnNoYWRvd0FkanVz
dGVkT2Zmc2V0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBhdXRvKiBjb250YWluZXJOb2RlID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgp
OwotICAgIGF1dG8qIGFkanVzdGVkTm9kZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmFuY2VzdG9y
Tm9kZUluVGhpc1Njb3BlKGNvbnRhaW5lck5vZGUpOworICAgIGF1dG8qIGFkanVzdGVkTm9kZSA9
IGZyYW1lKCktPmRvY3VtZW50KCktPmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKGNvbnRhaW5lck5v
ZGUpOwogICAgIGlmICghYWRqdXN0ZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNDY5
LDExICs0ODMsMTIgQEAgdW5zaWduZWQgRE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3RlZE9mZnNl
dChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAKIGJvb2wgRE9NU2VsZWN0aW9uOjpp
c1ZhbGlkRm9yUG9zaXRpb24oTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUp
CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiAmbm9kZS0+ZG9jdW1lbnQoKSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAg
IHJldHVybiAmbm9kZS0+ZG9jdW1lbnQoKSA9PSBmcmFtZS0+ZG9jdW1lbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKaW5kZXggNjU4
MzZhOWM4M2YyOGY2ODljZmI3ZjE1ZmE3ZDFjNmZjMzc3YjUxMy4uMTE4ZTk0ZWYwMDc0NzJkZjFh
NTRhNjJhMDAxZDc3MjhmMGYwMGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIGNsYXNzIERPTVNlbGVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVNlbGVjdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQ
cm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01TZWxlY3Rpb24+IGNyZWF0ZShG
cmFtZSYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NU2VsZWN0aW9uKGZyYW1lKSk7
IH0KKyAgICBzdGF0aWMgUmVmPERPTVNlbGVjdGlvbj4gY3JlYXRlKERPTVdpbmRvdyYgd2luZG93
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERPTVNlbGVjdGlvbih3aW5kb3cpKTsgfQogCiAgICAg
Tm9kZSogYmFzZU5vZGUoKSBjb25zdDsKICAgICBOb2RlKiBleHRlbnROb2RlKCkgY29uc3Q7CkBA
IC04MCw5ICs4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtcHR5KCk7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgRE9NU2VsZWN0aW9uKEZyYW1lJik7CisgICAgZXhwbGljaXQgRE9NU2VsZWN0
aW9uKERPTVdpbmRvdyYpOwogCi0gICAgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBhY2Nlc3Nv
cnMsIGNhbGxlciBtdXN0IG51bGwtY2hlY2sgbV9mcmFtZS4KKyAgICAvLyBDb252ZW5pZW5jZSBt
ZXRob2QgZm9yIGFjY2Vzc29ycywgY2FsbGVyIG11c3QgbnVsbC1jaGVjayBmcmFtZSgpLgogICAg
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHZpc2libGVTZWxlY3Rpb24oKSBjb25zdDsKIAogICAg
IE5vZGUqIHNoYWRvd0FkanVzdGVkTm9kZShjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGYwYzAyZDVkZjgxM2FmMTE3OTFhYzE3ZjFjZGI1YjE5
MjFkZmExYjIuLmFiNWU5OTdiOTA3MTI0NjQxM2VkYzdkNGJkZjczNDQ3NWNjMmQzNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTY4MywyMSArNjgzLDIxIEBAIGludCBET01XaW5k
b3c6Om9yaWVudGF0aW9uKCkgY29uc3QKIAogI2VuZGlmCiAKLVNjcmVlbiogRE9NV2luZG93Ojpz
Y3JlZW4oKSBjb25zdAorU2NyZWVuKiBET01XaW5kb3c6OnNjcmVlbigpCiB7CiAgICAgaWYgKCFp
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgaWYgKCFtX3NjcmVlbikKLSAgICAgICAgbV9zY3JlZW4gPSBTY3JlZW46OmNyZWF0ZShtX2Zy
YW1lKTsKKyAgICAgICAgbV9zY3JlZW4gPSBTY3JlZW46OmNyZWF0ZSgqdGhpcyk7CiAgICAgcmV0
dXJuIG1fc2NyZWVuLmdldCgpOwogfQogCi1IaXN0b3J5KiBET01XaW5kb3c6Omhpc3RvcnkoKSBj
b25zdAorSGlzdG9yeSogRE9NV2luZG93OjpoaXN0b3J5KCkKIHsKICAgICBpZiAoIWlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
IW1faGlzdG9yeSkKLSAgICAgICAgbV9oaXN0b3J5ID0gSGlzdG9yeTo6Y3JlYXRlKCptX2ZyYW1l
KTsKKyAgICAgICAgbV9oaXN0b3J5ID0gSGlzdG9yeTo6Y3JlYXRlKCp0aGlzKTsKICAgICByZXR1
cm4gbV9oaXN0b3J5LmdldCgpOwogfQogCkBAIC03MTEsNTcgKzcxMSw1NyBAQCBDcnlwdG8qIERP
TVdpbmRvdzo6Y3J5cHRvKCkgY29uc3QKICAgICByZXR1cm4gbV9jcnlwdG8uZ2V0KCk7CiB9CiAK
LUJhclByb3AqIERPTVdpbmRvdzo6bG9jYXRpb25iYXIoKSBjb25zdAorQmFyUHJvcCogRE9NV2lu
ZG93Ojpsb2NhdGlvbmJhcigpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX2xvY2F0aW9uYmFyKQot
ICAgICAgICBtX2xvY2F0aW9uYmFyID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6
OkxvY2F0aW9uYmFyKTsKKyAgICAgICAgbV9sb2NhdGlvbmJhciA9IEJhclByb3A6OmNyZWF0ZSgq
dGhpcywgQmFyUHJvcDo6TG9jYXRpb25iYXIpOwogICAgIHJldHVybiBtX2xvY2F0aW9uYmFyLmdl
dCgpOwogfQogCi1CYXJQcm9wKiBET01XaW5kb3c6Om1lbnViYXIoKSBjb25zdAorQmFyUHJvcCog
RE9NV2luZG93OjptZW51YmFyKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fbWVudWJhcikKLSAg
ICAgICAgbV9tZW51YmFyID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6Ok1lbnVi
YXIpOworICAgICAgICBtX21lbnViYXIgPSBCYXJQcm9wOjpjcmVhdGUoKnRoaXMsIEJhclByb3A6
Ok1lbnViYXIpOwogICAgIHJldHVybiBtX21lbnViYXIuZ2V0KCk7CiB9CiAKLUJhclByb3AqIERP
TVdpbmRvdzo6cGVyc29uYWxiYXIoKSBjb25zdAorQmFyUHJvcCogRE9NV2luZG93OjpwZXJzb25h
bGJhcigpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3BlcnNvbmFsYmFyKQotICAgICAgICBtX3Bl
cnNvbmFsYmFyID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6OlBlcnNvbmFsYmFy
KTsKKyAgICAgICAgbV9wZXJzb25hbGJhciA9IEJhclByb3A6OmNyZWF0ZSgqdGhpcywgQmFyUHJv
cDo6UGVyc29uYWxiYXIpOwogICAgIHJldHVybiBtX3BlcnNvbmFsYmFyLmdldCgpOwogfQogCi1C
YXJQcm9wKiBET01XaW5kb3c6OnNjcm9sbGJhcnMoKSBjb25zdAorQmFyUHJvcCogRE9NV2luZG93
OjpzY3JvbGxiYXJzKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fc2Nyb2xsYmFycykKLSAgICAg
ICAgbV9zY3JvbGxiYXJzID0gQmFyUHJvcDo6Y3JlYXRlKG1fZnJhbWUsIEJhclByb3A6OlNjcm9s
bGJhcnMpOworICAgICAgICBtX3Njcm9sbGJhcnMgPSBCYXJQcm9wOjpjcmVhdGUoKnRoaXMsIEJh
clByb3A6OlNjcm9sbGJhcnMpOwogICAgIHJldHVybiBtX3Njcm9sbGJhcnMuZ2V0KCk7CiB9CiAK
LUJhclByb3AqIERPTVdpbmRvdzo6c3RhdHVzYmFyKCkgY29uc3QKK0JhclByb3AqIERPTVdpbmRv
dzo6c3RhdHVzYmFyKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fc3RhdHVzYmFyKQotICAgICAg
ICBtX3N0YXR1c2JhciA9IEJhclByb3A6OmNyZWF0ZShtX2ZyYW1lLCBCYXJQcm9wOjpTdGF0dXNi
YXIpOworICAgICAgICBtX3N0YXR1c2JhciA9IEJhclByb3A6OmNyZWF0ZSgqdGhpcywgQmFyUHJv
cDo6U3RhdHVzYmFyKTsKICAgICByZXR1cm4gbV9zdGF0dXNiYXIuZ2V0KCk7CiB9CiAKLUJhclBy
b3AqIERPTVdpbmRvdzo6dG9vbGJhcigpIGNvbnN0CitCYXJQcm9wKiBET01XaW5kb3c6OnRvb2xi
YXIoKQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmICghbV90b29sYmFyKQotICAgICAgICBtX3Rvb2xiYXIg
PSBCYXJQcm9wOjpjcmVhdGUobV9mcmFtZSwgQmFyUHJvcDo6VG9vbGJhcik7CisgICAgICAgIG1f
dG9vbGJhciA9IEJhclByb3A6OmNyZWF0ZSgqdGhpcywgQmFyUHJvcDo6VG9vbGJhcik7CiAgICAg
cmV0dXJuIG1fdG9vbGJhci5nZXQoKTsKIH0KIApAQCAtNzcyLDIzICs3NzIsMjMgQEAgUGFnZUNv
bnNvbGVDbGllbnQqIERPTVdpbmRvdzo6Y29uc29sZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJh
bWUtPnBhZ2UoKSA/ICZtX2ZyYW1lLT5wYWdlKCktPmNvbnNvbGUoKSA6IG51bGxwdHI7CiB9CiAK
LURPTUFwcGxpY2F0aW9uQ2FjaGUqIERPTVdpbmRvdzo6YXBwbGljYXRpb25DYWNoZSgpIGNvbnN0
CitET01BcHBsaWNhdGlvbkNhY2hlKiBET01XaW5kb3c6OmFwcGxpY2F0aW9uQ2FjaGUoKQogewog
ICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmICghbV9hcHBsaWNhdGlvbkNhY2hlKQotICAgICAgICBtX2FwcGxpY2F0
aW9uQ2FjaGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKm1fZnJhbWUpOworICAgICAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKnRoaXMp
OwogICAgIHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGUuZ2V0KCk7CiB9CiAKLU5hdmlnYXRvciog
RE9NV2luZG93OjpuYXZpZ2F0b3IoKSBjb25zdAorTmF2aWdhdG9yKiBET01XaW5kb3c6Om5hdmln
YXRvcigpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fbmF2aWdhdG9yKSB7CiAgICAgICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgICAgICBtX25hdmlnYXRvciA9IE5h
dmlnYXRvcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICptX2ZyYW1lKTsKKyAg
ICAgICAgbV9uYXZpZ2F0b3IgPSBOYXZpZ2F0b3I6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqdGhpcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOwpA
QCAtODEwLDIxICs4MTAsMjEgQEAgZG91YmxlIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29u
c3QKICAgICByZXR1cm4gcGVyZm9ybWFuY2UoKSA/IHBlcmZvcm1hbmNlKCktPm5vdygpIC8gMTAw
MCA6IDA7CiB9CiAKLUxvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QKK0xvY2F0
aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxh
eWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fbG9jYXRp
b24pCi0gICAgICAgIG1fbG9jYXRpb24gPSBMb2NhdGlvbjo6Y3JlYXRlKG1fZnJhbWUpOworICAg
ICAgICBtX2xvY2F0aW9uID0gTG9jYXRpb246OmNyZWF0ZSgqdGhpcyk7CiAgICAgcmV0dXJuIG1f
bG9jYXRpb24uZ2V0KCk7CiB9CiAKLVZpc3VhbFZpZXdwb3J0KiBET01XaW5kb3c6OnZpc3VhbFZp
ZXdwb3J0KCkgY29uc3QKK1Zpc3VhbFZpZXdwb3J0KiBET01XaW5kb3c6OnZpc3VhbFZpZXdwb3J0
KCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fdmlzdWFsVmlld3BvcnQgJiYgIW1fc3VzcGVuZGVk
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKQotICAgICAgICBtX3Zpc3VhbFZpZXdwb3J0ID0gVmlzdWFs
Vmlld3BvcnQ6OmNyZWF0ZShtX2ZyYW1lKTsKKyAgICAgICAgbV92aXN1YWxWaWV3cG9ydCA9IFZp
c3VhbFZpZXdwb3J0OjpjcmVhdGUoKnRoaXMpOwogICAgIHJldHVybiBtX3Zpc3VhbFZpZXdwb3J0
LmdldCgpOwogfQogCkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBET01XaW5kb3c6OnNob3VsZEhh
dmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHJl
dHVybiBoYXNVc2VyTWVzc2FnZUhhbmRsZXI7CiB9CiAKLVdlYktpdE5hbWVzcGFjZSogRE9NV2lu
ZG93Ojp3ZWJraXROYW1lc3BhY2UoKSBjb25zdAorV2ViS2l0TmFtZXNwYWNlKiBET01XaW5kb3c6
OndlYmtpdE5hbWVzcGFjZSgpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCBXZWJL
aXROYW1lc3BhY2UqIERPTVdpbmRvdzo6d2Via2l0TmFtZXNwYWNlKCkgY29uc3QKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV93ZWJraXROYW1lc3Bh
Y2UpCi0gICAgICAgIG1fd2Via2l0TmFtZXNwYWNlID0gV2ViS2l0TmFtZXNwYWNlOjpjcmVhdGUo
Km1fZnJhbWUsIHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKSk7CisgICAgICAgIG1fd2Via2l0
TmFtZXNwYWNlID0gV2ViS2l0TmFtZXNwYWNlOjpjcmVhdGUoKnRoaXMsIHBhZ2UtPnVzZXJDb250
ZW50UHJvdmlkZXIoKSk7CiAgICAgcmV0dXJuIG1fd2Via2l0TmFtZXNwYWNlLmdldCgpOwogfQog
CiAjZW5kaWYKIAotRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3Jh
Z2UoKSBjb25zdAorRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3Jh
Z2UoKQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtODg0LDExICs4ODQsMTEgQEAgRXhjZXB0aW9uT3I8U3RvcmFn
ZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5z
dG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotICAgIG1fc2Vz
c2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJl
YSkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoc3RvcmFnZUFyZWEpKTsKICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZS5nZXQoKTsKIH0K
IAotRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29uc3QK
K0V4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpCiB7CiAgICAg
aWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC05MTgsNyArOTE4LDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6
bG9jYWxTdG9yYWdlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRv
IHN0b3JhZ2VBcmVhID0gcGFnZS0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkubG9jYWxTdG9y
YWdlQXJlYSgqZG9jdW1lbnQpOwotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRl
KG1fZnJhbWUsIFdURk1vdmUoc3RvcmFnZUFyZWEpKTsKKyAgICBtX2xvY2FsU3RvcmFnZSA9IFN0
b3JhZ2U6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBt
X2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApAQCAtMTAwOSw3ICsxMDA5LDcgQEAgRE9NU2VsZWN0
aW9uKiBET01XaW5kb3c6OmdldFNlbGVjdGlvbigpCiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3Bs
YXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3NlbGVj
dGlvbikKLSAgICAgICAgbV9zZWxlY3Rpb24gPSBET01TZWxlY3Rpb246OmNyZWF0ZSgqbV9mcmFt
ZSk7CisgICAgICAgIG1fc2VsZWN0aW9uID0gRE9NU2VsZWN0aW9uOjpjcmVhdGUoKnRoaXMpOwog
ICAgIHJldHVybiBtX3NlbGVjdGlvbi5nZXQoKTsKIH0KIApAQCAtMTQ5NSwxMiArMTQ5NSwxMiBA
QCBEb2N1bWVudCogRE9NV2luZG93Ojpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25j
YXN0PERvY3VtZW50PihDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKIH0KIAotUmVmUHRyPFN0eWxlTWVkaWE+IERPTVdpbmRvdzo6c3R5bGVNZWRp
YSgpIGNvbnN0CitSZWZQdHI8U3R5bGVNZWRpYT4gRE9NV2luZG93OjpzdHlsZU1lZGlhKCkKIHsK
ICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fbWVkaWEpCi0gICAgICAgIG1fbWVkaWEgPSBTdHlsZU1lZGlh
OjpjcmVhdGUobV9mcmFtZSk7CisgICAgICAgIG1fbWVkaWEgPSBTdHlsZU1lZGlhOjpjcmVhdGUo
KnRoaXMpOwogICAgIHJldHVybiBtX21lZGlhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApp
bmRleCAzZWQ0NzAzN2Y4MWMyNTExZWExNDE4NDIwZThhOTJhYWIyMDI5MjYwLi43YWU4OTE1ZmMz
MWYwOTNhOWI5YmRlODUxMzViMTZiNzJjMTc2MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
QEAgLTEzMSwyMCArMTMxLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjYW5TaG93TW9k
YWxEaWFsb2coY29uc3QgRnJhbWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblNo
b3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2wpOwogCi0gICAgU2NyZWVuKiBzY3JlZW4oKSBjb25z
dDsKLSAgICBIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7CisgICAgU2NyZWVuKiBzY3JlZW4oKTsK
KyAgICBIaXN0b3J5KiBoaXN0b3J5KCk7CiAgICAgQ3J5cHRvKiBjcnlwdG8oKSBjb25zdDsKLSAg
ICBCYXJQcm9wKiBsb2NhdGlvbmJhcigpIGNvbnN0OwotICAgIEJhclByb3AqIG1lbnViYXIoKSBj
b25zdDsKLSAgICBCYXJQcm9wKiBwZXJzb25hbGJhcigpIGNvbnN0OwotICAgIEJhclByb3AqIHNj
cm9sbGJhcnMoKSBjb25zdDsKLSAgICBCYXJQcm9wKiBzdGF0dXNiYXIoKSBjb25zdDsKLSAgICBC
YXJQcm9wKiB0b29sYmFyKCkgY29uc3Q7Ci0gICAgTmF2aWdhdG9yKiBuYXZpZ2F0b3IoKSBjb25z
dDsKKyAgICBCYXJQcm9wKiBsb2NhdGlvbmJhcigpOworICAgIEJhclByb3AqIG1lbnViYXIoKTsK
KyAgICBCYXJQcm9wKiBwZXJzb25hbGJhcigpOworICAgIEJhclByb3AqIHNjcm9sbGJhcnMoKTsK
KyAgICBCYXJQcm9wKiBzdGF0dXNiYXIoKTsKKyAgICBCYXJQcm9wKiB0b29sYmFyKCk7CisgICAg
TmF2aWdhdG9yKiBuYXZpZ2F0b3IoKTsKICAgICBOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KLSAgICBOYXZpZ2F0b3IqIGNs
aWVudEluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbmF2aWdhdG9yKCk7IH0KKyAgICBOYXZp
Z2F0b3IqIGNsaWVudEluZm9ybWF0aW9uKCkgeyByZXR1cm4gbmF2aWdhdG9yKCk7IH0KIAotICAg
IExvY2F0aW9uKiBsb2NhdGlvbigpIGNvbnN0OworICAgIExvY2F0aW9uKiBsb2NhdGlvbigpOwog
ICAgIHZvaWQgc2V0TG9jYXRpb24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYg
Zmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgbG9jYXRpb24sIFNldExvY2F0aW9uTG9ja2luZyA9
IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSk7CiAKICAgICBET01TZWxlY3Rpb24qIGdl
dFNlbGVjdGlvbigpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENTU09N
IFZpZXcgTW9kdWxlCiAKLSAgICBSZWZQdHI8U3R5bGVNZWRpYT4gc3R5bGVNZWRpYSgpIGNvbnN0
OworICAgIFJlZlB0cjxTdHlsZU1lZGlhPiBzdHlsZU1lZGlhKCk7CiAKICAgICAvLyBET00gTGV2
ZWwgMiBTdHlsZSBJbnRlcmZhY2UKIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2l6ZUJ5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0OwogICAgIHZvaWQgcmVzaXplVG8o
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgY29uc3Q7CiAKLSAgICBWaXN1YWxWaWV3cG9ydCog
dmlzdWFsVmlld3BvcnQoKSBjb25zdDsKKyAgICBWaXN1YWxWaWV3cG9ydCogdmlzdWFsVmlld3Bv
cnQoKTsKIAogICAgIC8vIFRpbWVycwogICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0VGltZW91dChK
U0M6OkV4ZWNTdGF0ZSYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGlt
ZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKQEAg
LTI4MywxMiArMjgzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZygpOwog
CiAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCi0gICAgRXhjZXB0aW9uT3I8U3RvcmFn
ZSo+IHNlc3Npb25TdG9yYWdlKCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IGxv
Y2FsU3RvcmFnZSgpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBzZXNzaW9uU3Rv
cmFnZSgpOworICAgIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBsb2NhbFN0b3JhZ2UoKTsKICAgICBT
dG9yYWdlKiBvcHRpb25hbFNlc3Npb25TdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
U3RvcmFnZS5nZXQoKTsgfQogICAgIFN0b3JhZ2UqIG9wdGlvbmFsTG9jYWxTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2UuZ2V0KCk7IH0KIAotICAgIERPTUFwcGxpY2F0aW9u
Q2FjaGUqIGFwcGxpY2F0aW9uQ2FjaGUoKSBjb25zdDsKKyAgICBET01BcHBsaWNhdGlvbkNhY2hl
KiBhcHBsaWNhdGlvbkNhY2hlKCk7CiAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogb3B0aW9uYWxB
cHBsaWNhdGlvbkNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlLmdldCgp
OyB9CiAKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIGN1c3RvbUVsZW1lbnRSZWdpc3RyeSgp
IHsgcmV0dXJuIG1fY3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmdldCgpOyB9CkBAIC0zMjEsNyArMzIx
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBi
b29sIHNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZChET01XcmFwcGVyV29ybGQmKTsK
LSAgICBXZWJLaXROYW1lc3BhY2UqIHdlYmtpdE5hbWVzcGFjZSgpIGNvbnN0OworICAgIFdlYktp
dE5hbWVzcGFjZSogd2Via2l0TmFtZXNwYWNlKCk7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBX
aGVuIHRoaXMgRE9NV2luZG93IGlzIG5vIGxvbmdlciB0aGUgYWN0aXZlIERPTVdpbmRvdyAoaS5l
LiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCA4MGUy
MWMyN2E0NzExYmE4N2FjYzkwZjY5ZTYxOGQ3MzVhNTUyYjA1Li5mNTRlODE2MThlYmM3YjJiYzRk
MWY5NzJmYWU3ODM2Mzk3ZjU2ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd0V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dF
eHRlbnNpb24uY3BwCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RE9NV2luZG93RXh0ZW5zaW9uOjpET01XaW5kb3dFeHRlbnNpb24oRnJhbWUqIGZyYW1lLCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQotICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCitET01X
aW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihET01XaW5kb3cqIHdpbmRvdywgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdykKICAg
ICAsIG1fd29ybGQod29ybGQpCiAgICAgLCBtX3dhc0RldGFjaGVkKGZhbHNlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKaW5kZXggZGRlMGQ2YzIwYjJlNmQxMzY1
ODNlNjkyODZjZDkwYTI0MjkxOTAyMi4uMzg2NzEyNjk4YjRkYzdhODhmYWI2M2FiMTYzYzY3NzI0
YTQ3NTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oCkBAIC0z
Nyw5ICszNyw5IEBAIGNsYXNzIEZyYW1lOwogCiBjbGFzcyBET01XaW5kb3dFeHRlbnNpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxET01XaW5kb3dFeHRlbnNpb24+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgIHN0YXRpYyBSZWY8
RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVhdGUoRE9NV2luZG93KiB3aW5kb3csIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01XaW5k
b3dFeHRlbnNpb24oZnJhbWUsIHdvcmxkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERPTVdpbmRvd0V4dGVuc2lvbih3aW5kb3csIHdvcmxkKSk7CiAgICAgfQogCiAgICAgdm9pZCBk
aXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZTsKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93
RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
RE9NV2luZG93RXh0ZW5zaW9uKERPTVdpbmRvdyosIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAg
UmVmPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICBSZWZQdHI8RnJhbWU+IG1fZGlzY29u
bmVjdGVkRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1By
b3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCmlu
ZGV4IDJjMjE4ZWRiYTMzNDdjNDkzMzg1ZDEyNzJlMzQxYThhNDE2MTMxYWYuLmE4M2MxMGJlM2U3
OGEwNmIzMTg3MDI2NDlhNGU3NTllNzI2Njk0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93UHJvcGVydHkuY3BwCkBAIC0zMyw3NiArMzMsNjUgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1l
KQotICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fYXNzb2NpYXRlZERPTVdpbmRvdyhudWxs
cHRyKQorRE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5KERPTVdpbmRvdyogd2lu
ZG93KQorICAgIDogbV93aW5kb3cod2luZG93KQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IGl0
ICppcyogYWNjZXB0YWJsZSBmb3IgYSBET01XaW5kb3dQcm9wZXJ0eSB0byBiZSBjcmVhdGVkIHdp
dGggYSBudWxsIGZyYW1lLgotICAgIC8vIFNlZSBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2guaHRtbCBmb3IgdGhlIHJlY2lwZS4KLSAgICAvLyBXZSBzaG91bGQgZml4IHRoYXQu
ICA8cmRhcjovL3Byb2JsZW0vMTE1NjcxMzI+Ci0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAg
bV9hc3NvY2lhdGVkRE9NV2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7
Ci0gICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdy0+cmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7
Ci0gICAgfQorICAgIGlmIChtX3dpbmRvdykKKyAgICAgICAgbV93aW5kb3ctPnJlZ2lzdGVyUHJv
cGVydHkoKnRoaXMpOwogfQogCiBET01XaW5kb3dQcm9wZXJ0eTo6fkRPTVdpbmRvd1Byb3BlcnR5
KCkKIHsKLSAgICBpZiAobV9hc3NvY2lhdGVkRE9NV2luZG93KQotICAgICAgICBtX2Fzc29jaWF0
ZWRET01XaW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7CisgICAgaWYgKG1fd2luZG93
KQorICAgICAgICBtX3dpbmRvdy0+dW5yZWdpc3RlclByb3BlcnR5KCp0aGlzKTsKIAotICAgIG1f
YXNzb2NpYXRlZERPTVdpbmRvdyA9IG51bGxwdHI7Ci0gICAgbV9mcmFtZSA9IG51bGxwdHI7Cisg
ICAgbV93aW5kb3cgPSBudWxscHRyOwogfQogCiB2b2lkIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNj
b25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKQogewotICAgIEFTU0VSVChtX2Fzc29j
aWF0ZWRET01XaW5kb3cpOwotCi0gICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAgQVNTRVJUKG1f
d2luZG93KTsKIH0KIAogdm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9t
RG9jdW1lbnRTdXNwZW5zaW9uKEZyYW1lKiBmcmFtZSkKIHsKICAgICAvLyBJZiB0aGlzIHByb3Bl
cnR5IGlzIGJlaW5nIHJlY29ubmVjdGVkIHRvIGl0cyBGcmFtZSB0byBlbnRlciB0aGUgUGFnZUNh
Y2hlLCBpdCBtdXN0IGhhdmUKICAgICAvLyBiZWVuIGRpc2Nvbm5lY3RlZCBmcm9tIGl0cyBGcmFt
ZSBpbiB0aGUgZmlyc3QgcGxhY2UgYW5kIGl0IHNob3VsZCBzdGlsbCBoYXZlIGFuIGFzc29jaWF0
ZWQgRE9NV2luZG93LgotICAgIEFTU0VSVChmcmFtZSk7Ci0gICAgQVNTRVJUKCFtX2ZyYW1lKTsK
LSAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpID09IG1fYXNzb2NpYXRl
ZERPTVdpbmRvdyk7Ci0KLSAgICBtX2ZyYW1lID0gZnJhbWU7CisgICAgQVNTRVJUX1VOVVNFRChm
cmFtZSwgZnJhbWUpOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkg
PT0gbV93aW5kb3cpOwogfQogCiB2b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUds
b2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKQogewogICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBoYXMg
YmVlbiBkaXNjb25uZWN0ZWQgZnJvbSBpdHMgRnJhbWUgZm9yIHRoZSBwYWdlIGNhY2hlLCB0aGVu
IGl0IG11c3QgaGF2ZSBvcmlnaW5hbGx5IGhhZCBhIEZyYW1lCiAgICAgLy8gYW5kIHRoZXJlZm9y
ZSBzaG91bGQgc3RpbGwgaGF2ZSBhbiBhc3NvY2lhdGVkIERPTVdpbmRvdy4KLSAgICBBU1NFUlQo
IW1fZnJhbWUpOwotICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRET01XaW5kb3cpOworICAgIEFTU0VS
VChtX3dpbmRvdyk7CiAKICAgICAvLyBET01XaW5kb3dQcm9wZXJ0eSBsaWZldGltZSBpc24ndCB0
aWVkIGRpcmVjdGx5IHRvIHRoZSBET01XaW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9ydGFudCB0
aGF0IGl0IHVucmVnaXN0ZXIKICAgICAvLyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93IGl0IGlz
IGFzc29jaWF0ZWQgd2l0aCBpZiB0aGF0IERPTVdpbmRvdyBpcyBnb2luZyBhd2F5LgotICAgIGlm
IChtX2Fzc29jaWF0ZWRET01XaW5kb3cpCi0gICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdy0+
dW5yZWdpc3RlclByb3BlcnR5KCp0aGlzKTsKLSAgICBtX2Fzc29jaWF0ZWRET01XaW5kb3cgPSBu
dWxscHRyOwotICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX3dpbmRvdykKKyAgICAg
ICAgbV93aW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7CisgICAgbV93aW5kb3cgPSBu
dWxscHRyOwogfQogCiB2b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9i
amVjdEluRnJhbWUoKQogewotICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRET01XaW5kb3cpOworICAg
IEFTU0VSVChtX3dpbmRvdyk7CiAKICAgICAvLyBET01XaW5kb3dQcm9wZXJ0eSBsaWZldGltZSBp
c24ndCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBET01XaW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9y
dGFudCB0aGF0IGl0IHVucmVnaXN0ZXIKICAgICAvLyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93
IGl0IGlzIGFzc29jaWF0ZWQgd2l0aCBpZiB0aGF0IERPTVdpbmRvdyBpcyBnb2luZyBhd2F5Lgot
ICAgIGlmIChtX2Fzc29jaWF0ZWRET01XaW5kb3cpCi0gICAgICAgIG1fYXNzb2NpYXRlZERPTVdp
bmRvdy0+dW5yZWdpc3RlclByb3BlcnR5KCp0aGlzKTsKLSAgICBtX2Fzc29jaWF0ZWRET01XaW5k
b3cgPSBudWxscHRyOwotICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX3dpbmRvdykK
KyAgICAgICAgbV93aW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSgqdGhpcyk7CisgICAgbV93aW5k
b3cgPSBudWxscHRyOwogfQogCiB2b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0YWNoR2xv
YmFsT2JqZWN0RnJvbUZyYW1lKCkKIHsKLSAgICBtX2ZyYW1lID0gbnVsbHB0cjsKK30KKworRnJh
bWUqIERPTVdpbmRvd1Byb3BlcnR5OjpmcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2lu
ZG93ID8gbV93aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgKaW5kZXggYzRiZGQ4MGQ2OTRlYTRiZGEyZDY1YTA0Nzhl
MTEwZjk2ZTcyMmZiNS4uNmNkNzg0NzdlZmJmODgxMTAxMWVjMzFhMzM1MzExYTlkNTI4NjNiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaApAQCAtMzIsNyArMzIsNyBA
QCBjbGFzcyBGcmFtZTsKIAogY2xhc3MgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgotICAg
IGV4cGxpY2l0IERPTVdpbmRvd1Byb3BlcnR5KEZyYW1lKik7CisgICAgZXhwbGljaXQgRE9NV2lu
ZG93UHJvcGVydHkoRE9NV2luZG93Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZy
YW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZy
YW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbihGcmFtZSopOwpAQCAtNDAsMTMgKzQwLDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKTsKIAot
ICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBGcmFtZSogZnJhbWUoKSBjb25zdDsKKyAgICBET01XaW5kb3cqIHdpbmRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fd2luZG93OyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5ET01X
aW5kb3dQcm9wZXJ0eSgpOwogCi0gICAgRnJhbWUqIG1fZnJhbWU7Ci0gICAgRE9NV2luZG93KiBt
X2Fzc29jaWF0ZWRET01XaW5kb3c7CisgICAgRE9NV2luZG93KiBtX3dpbmRvdzsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDhlMWJiMTRh
NDYzMWZmN2YzYmVmYzM0YjA3YzUwZGU0OTAyYjkxODkuLjdkODBjMWYzYTgzOGQ4ZDI5ZGIxNmI1
YWViNzAxNWU5ZWE0ODRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtNDMsMTYgKzQz
LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGlzdG9yeTo6SGlzdG9yeShGcmFtZSYg
ZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmZnJhbWUpCitIaXN0b3J5OjpIaXN0b3J5
KERPTVdpbmRvdyYgd2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsK
IH0KIAogdW5zaWduZWQgSGlzdG9yeTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
YXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gcGFnZS0+YmFja0ZvcndhcmQoKS5jb3VudCgpOwpAQCAtNjAsMTAg
KzYxLDExIEBAIHVuc2lnbmVkIEhpc3Rvcnk6Omxlbmd0aCgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9y
PEhpc3Rvcnk6OlNjcm9sbFJlc3RvcmF0aW9uPiBIaXN0b3J5OjpzY3JvbGxSZXN0b3JhdGlvbigp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciB9OwogCi0gICAgYXV0byogaGlzdG9yeUl0ZW0gPSBtX2ZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKKyAgICBhdXRvKiBoaXN0b3J5SXRlbSA9IGZyYW1lLT5s
b2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKICAgICBpZiAoIWhpc3RvcnlJdGVtKQog
ICAgICAgICByZXR1cm4gU2Nyb2xsUmVzdG9yYXRpb246OkF1dG87CiAgICAgCkBAIC03MiwxMCAr
NzQsMTEgQEAgRXhjZXB0aW9uT3I8SGlzdG9yeTo6U2Nyb2xsUmVzdG9yYXRpb24+IEhpc3Rvcnk6
OnNjcm9sbFJlc3RvcmF0aW9uKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6
c2V0U2Nyb2xsUmVzdG9yYXRpb24oU2Nyb2xsUmVzdG9yYXRpb24gc2Nyb2xsUmVzdG9yYXRpb24p
CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJv
ciB9OwogCi0gICAgYXV0byogaGlzdG9yeUl0ZW0gPSBtX2ZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5
KCkuY3VycmVudEl0ZW0oKTsKKyAgICBhdXRvKiBoaXN0b3J5SXRlbSA9IGZyYW1lLT5sb2FkZXIo
KS5oaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKICAgICBpZiAoaGlzdG9yeUl0ZW0pCiAgICAgICAg
IGhpc3RvcnlJdGVtLT5zZXRTaG91bGRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oc2Nyb2xsUmVzdG9y
YXRpb24gPT0gU2Nyb2xsUmVzdG9yYXRpb246OkF1dG8pOwogCkBAIC05MCw5ICs5MywxMCBAQCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIEhpc3Rvcnk6OnN0YXRlKCkKIAogU2VyaWFsaXplZFNjcmlw
dFZhbHVlKiBIaXN0b3J5OjpzdGF0ZUludGVybmFsKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIGhpc3RvcnlJdGVtID0gbV9mcmFtZS0+
bG9hZGVyKCkuaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7CisgICAgYXV0byogaGlzdG9yeUl0ZW0g
PSBmcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7CiAgICAgaWYgKCFoaXN0
b3J5SXRlbSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGhpc3RvcnlJdGVt
LT5zdGF0ZU9iamVjdCgpOwpAQCAtMTM3LDM0ICsxNDEsMzcgQEAgdm9pZCBIaXN0b3J5Ojpmb3J3
YXJkKERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBIaXN0b3J5OjpnbyhpbnQgZGlzdGFuY2Up
CiB7Ci0gICAgTE9HKEhpc3RvcnksICJIaXN0b3J5ICVwIGdvKCVkKSBmcmFtZSAlcCAobWFpbiBm
cmFtZSAlZCkiLCB0aGlzLCBkaXN0YW5jZSwgbV9mcmFtZSwgbV9mcmFtZSA/IG1fZnJhbWUtPmlz
TWFpbkZyYW1lKCkgOiBmYWxzZSk7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwor
ICAgIExPRyhIaXN0b3J5LCAiSGlzdG9yeSAlcCBnbyglZCkgZnJhbWUgJXAgKG1haW4gZnJhbWUg
JWQpIiwgdGhpcywgZGlzdGFuY2UsIGZyYW1lLCBmcmFtZSA/IGZyYW1lLT5pc01haW5GcmFtZSgp
IDogZmFsc2UpOwogCi0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUhp
c3RvcnlOYXZpZ2F0aW9uKGRpc3RhbmNlKTsKKyAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxl
cigpLnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oZGlzdGFuY2UpOwogfQogCiB2b2lkIEhpc3Rv
cnk6OmdvKERvY3VtZW50JiBkb2N1bWVudCwgaW50IGRpc3RhbmNlKQogewotICAgIExPRyhIaXN0
b3J5LCAiSGlzdG9yeSAlcCBnbyglZCkgaW4gZG9jdW1lbnQgJXAgZnJhbWUgJXAgKG1haW4gZnJh
bWUgJWQpIiwgdGhpcywgZGlzdGFuY2UsICZkb2N1bWVudCwgbV9mcmFtZSwgbV9mcmFtZSA/IG1f
ZnJhbWUtPmlzTWFpbkZyYW1lKCkgOiBmYWxzZSk7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIExPRyhIaXN0b3J5LCAiSGlzdG9yeSAlcCBnbyglZCkgaW4gZG9jdW1lbnQg
JXAgZnJhbWUgJXAgKG1haW4gZnJhbWUgJWQpIiwgdGhpcywgZGlzdGFuY2UsICZkb2N1bWVudCwg
ZnJhbWUsIGZyYW1lID8gZnJhbWUtPmlzTWFpbkZyYW1lKCkgOiBmYWxzZSk7CiAKLSAgICBpZiAo
IW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICghZG9jdW1lbnQuY2FuTmF2aWdhdGUobV9mcmFt
ZSkpCisgICAgaWYgKCFkb2N1bWVudC5jYW5OYXZpZ2F0ZShmcmFtZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUhpc3RvcnlO
YXZpZ2F0aW9uKGRpc3RhbmNlKTsKKyAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNj
aGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oZGlzdGFuY2UpOwogfQogCiBVUkwgSGlzdG9yeTo6dXJs
Rm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CisgICAgYXV0byogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOwogICAgIGlmICh1cmxTdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKKyAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KHVybFN0cmluZyk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRlT2JqZWN0
QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RhdGVPYmplY3RUeXBlIHN0YXRlT2Jq
ZWN0VHlwZSkKQEAgLTE3NiwxNCArMTgzLDE1IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6
OnN0YXRlT2JqZWN0QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAg
ICAgc3RhdGljIFNlY29uZHMgc3RhdGVPYmplY3RUaW1lU3BhbiB7IDMwX3MgfTsKICAgICBzdGF0
aWMgdW5zaWduZWQgcGVyU3RhdGVPYmplY3RUaW1lU3BhbkxpbWl0ID0gMTAwOwogCi0gICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7CiAgICAg
aWYgKCFmdWxsVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IgfTsKIAotICAgIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIGRvY3VtZW50VVJMID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpOwogCiAgICAgYXV0byBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldp
dGhNZXNzYWdlU3VmZml4ID0gWyZdIChjb25zdCBjaGFyKiBzdWZmaXgpIHsKICAgICAgICAgY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lID0gc3RhdGVPYmplY3RUeXBlID09IFN0YXRlT2JqZWN0VHlw
ZTo6UmVwbGFjZSA/ICJoaXN0b3J5LnJlcGxhY2VTdGF0ZSgpIiA6ICJoaXN0b3J5LnB1c2hTdGF0
ZSgpIjsKQEAgLTE5Miw3ICsyMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0
ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQogICAgIGlm
ICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBm
dWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0g
ZG9jdW1lbnRVUkwucGFzcygpKQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVSTFNlY3Vy
aXR5RXJyb3JXaXRoTWVzc2FnZVN1ZmZpeCgiUHJvdG9jb2xzLCBkb21haW5zLCBwb3J0cywgdXNl
cm5hbWVzLCBhbmQgcGFzc3dvcmRzIG11c3QgbWF0Y2guIik7CiAKLSAgICBjb25zdCBhdXRvJiBk
b2N1bWVudFNlY3VyaXR5T3JpZ2luID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKTsKKyAgICBjb25zdCBhdXRvJiBkb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgLy8gV2UgYWxsb3cgc2FuZGJveGVkIGRv
Y3VtZW50cywgJ2RhdGE6Jy8nZmlsZTonIFVSTHMsIGV0Yy4gdG8gdXNlICdwdXNoU3RhdGUnLydy
ZXBsYWNlU3RhdGUnIHRvIG1vZGlmeSB0aGUgVVJMIHF1ZXJ5IGFuZCBmcmFnbWVudHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwMjggZm9y
IHRoZSBjb21wYXRpYmlsaXR5IGNvbmNlcm5zLgogICAgIGJvb2wgYWxsb3dTYW5kYm94RXhjZXB0
aW9uID0gKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNMb2NhbCgpIHx8IGRvY3VtZW50U2VjdXJp
dHlPcmlnaW4uaXNVbmlxdWUoKSkgJiYgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoZG9j
dW1lbnRVUkwsIGZ1bGxVUkwpOwpAQCAtMjAwLDcgKzIwOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiBkYXRhCiAgICAgaWYgKCFhbGxvd1NhbmRib3hFeGNlcHRpb24gJiYgIWRvY3VtZW50U2VjdXJp
dHlPcmlnaW4uY2FuUmVxdWVzdChmdWxsVVJMKSAmJiAoZnVsbFVSTC5wYXRoKCkgIT0gZG9jdW1l
bnRVUkwucGF0aCgpIHx8IGZ1bGxVUkwucXVlcnkoKSAhPSBkb2N1bWVudFVSTC5xdWVyeSgpKSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1cml0eUVycm9yV2l0aE1lc3NhZ2VT
dWZmaXgoIlBhdGhzIGFuZCBmcmFnbWVudHMgbXVzdCBtYXRjaCBmb3IgYSBzYW5kYm94ZWQgZG9j
dW1lbnQuIik7CiAKLSAgICBEb2N1bWVudCogbWFpbkRvY3VtZW50ID0gbV9mcmFtZS0+cGFnZSgp
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBtYWluRG9jdW1lbnQgPSBm
cmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIEhpc3RvcnkqIG1haW5I
aXN0b3J5ID0gbnVsbHB0cjsKICAgICBpZiAobWFpbkRvY3VtZW50KSB7CiAgICAgICAgIGlmIChh
dXRvKiBtYWluRE9NV2luZG93ID0gbWFpbkRvY3VtZW50LT5kb21XaW5kb3coKSkKQEAgLTI1MCwx
NCArMjU4LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQo
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAgICAgKyttYWluSGlzdG9yeS0+
bV9jdXJyZW50U3RhdGVPYmplY3RUaW1lU3Bhbk9iamVjdHNBZGRlZDsKIAogICAgIGlmICghdXJs
U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlVVJM
Rm9yUHVzaE9yUmVwbGFjZVN0YXRlKGZ1bGxVUkwpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGZ1bGxVUkwpOwogCiAgICAgaWYgKHN0
YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVjdFR5cGU6OlB1c2gpIHsKLSAgICAgICAgbV9mcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnB1c2hTdGF0ZShXVEZNb3ZlKGRhdGEpLCB0aXRsZSwgZnVs
bFVSTC5zdHJpbmcoKSk7Ci0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkuaGlz
dG9yeSgpLnB1c2hTdGF0ZShXVEZNb3ZlKGRhdGEpLCB0aXRsZSwgZnVsbFVSTC5zdHJpbmcoKSk7
CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVj
dFR5cGU6OlJlcGxhY2UpIHsKLSAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJl
cGxhY2VTdGF0ZShXVEZNb3ZlKGRhdGEpLCB0aXRsZSwgZnVsbFVSTC5zdHJpbmcoKSk7Ci0gICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0
aGluUGFnZSgpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlcGxhY2VTdGF0
ZShXVEZNb3ZlKGRhdGEpLCB0aXRsZSwgZnVsbFVSTC5zdHJpbmcoKSk7CisgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKTsK
ICAgICB9CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIz
ZjY3MGRlMmZmYjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi44N2EwZjNkMTc4NzhkMTcxMTExODRh
MjY0MjA5MmZjN2ZmNTEwYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzUsMTIgKzM1LDEx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRnJhbWU7
CiBjbGFzcyBVUkw7CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhpc3Rvcnk+IGNyZWF0ZShGcmFtZSYgZnJhbWUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGlzdG9yeShmcmFtZSkpOyB9CisgICAgc3RhdGljIFJl
ZjxIaXN0b3J5PiBjcmVhdGUoRE9NV2luZG93JiB3aW5kb3cpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSGlzdG9yeSh3aW5kb3cpKTsgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAg
ICAgCkBAIC02OSw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBs
YWNlU3RhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgSGlzdG9yeShGcmFtZSYpOworICAgIGV4cGxpY2l0IEhpc3RvcnkoRE9NV2luZG93Jik7
CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlT2JqZWN0VHlwZSB7IFB1c2gsIFJlcGxhY2UgfTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBTdGF0
ZU9iamVjdFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCA3Yjk4YTA2MzZjNDkz
NmNkNmZkNjI5NDAxMjJjYWNjOWE4NTg2NzY2Li44MmZlYTYwNjI5ZjZjNGFlNTBiMTg5M2M3ZTY2
MDQ2NTJjMWZjMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMzksMTYgKzM5LDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jYXRpb246OkxvY2F0aW9uKEZyYW1lKiBm
cmFtZSkKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorTG9jYXRpb246OkxvY2F0aW9u
KERPTVdpbmRvdyYgd2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKIHsK
IH0KIAogaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKG1fZnJhbWUpOworICAgIEFTU0VSVChmcmFtZSgpKTsKIAotICAgIGNvbnN0IFVSTCYgdXJs
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBmcmFt
ZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBp
cyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KIApAQCAtNTcsNyArNTcs
NyBAQCBpbmxpbmUgY29uc3QgVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIAogU3RyaW5nIExv
Y2F0aW9uOjpocmVmKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFt
ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBhdXRvJiB1cmwgPSB0aGlzLT51
cmwoKTsKQEAgLTczLDcgKzczLDcgQEAgU3RyaW5nIExvY2F0aW9uOjpocmVmKCkgY29uc3QKIAog
U3RyaW5nIExvY2F0aW9uOjpwcm90b2NvbCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQor
ICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJu
IG1ha2VTdHJpbmcodXJsKCkucHJvdG9jb2woKSwgIjoiKTsKQEAgLTgxLDcgKzgxLDcgQEAgU3Ry
aW5nIExvY2F0aW9uOjpwcm90b2NvbCgpIGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6aG9zdCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCiAgICAgLy8gTm90ZTogdGhpcyBpcyB0aGUgSUUgc3BlYy4gVGhl
IE5TIHNwZWMgc3dhcHMgdGhlIHR3bywgaXQgc2F5cwpAQCAtOTEsNyArOTEsNyBAQCBTdHJpbmcg
TG9jYXRpb246Omhvc3QoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246Omhvc3RuYW1lKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gdXJsKCkuaG9zdCgpLnRvU3RyaW5nKCk7CkBAIC05
OSw3ICs5OSw3IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcg
TG9jYXRpb246OnBvcnQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZy
YW1lKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsID0g
dGhpcy0+dXJsKCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkg
Y29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBTdHJp
bmcgTG9jYXRpb246OnBhdGhuYW1lKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpzZWFyY2go
KSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7CkBA
IC0xMjYsNyArMTI2LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpzZWFyY2goKSBjb25zdAogCiBTdHJp
bmcgTG9jYXRpb246Om9yaWdpbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlm
ICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHVybCgpKS0+dG9TdHJpbmcoKTsKIH0KQEAgLTEzNCwxNiArMTM0LDE3
IEBAIFN0cmluZyBMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKIFJlZjxET01TdHJpbmdMaXN0PiBM
b2NhdGlvbjo6YW5jZXN0b3JPcmlnaW5zKCkgY29uc3QKIHsKICAgICBhdXRvIG9yaWdpbnMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBvcmln
aW5zOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKQotICAgICAgICBvcmlnaW5zLT5h
cHBlbmQoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7Cisg
ICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGZyYW1lLT50cmVlKCkucGFyZW50KCk7IGFuY2VzdG9y
OyBhbmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCkucGFyZW50KCkpCisgICAgICAgIG9yaWdpbnMt
PmFwcGVuZChhbmNlc3Rvci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygp
KTsKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpoYXNoKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllciA9IHVy
bCgpLmZyYWdtZW50SWRlbnRpZmllcigpOwpAQCAtMTUyLDE2ICsxNTMsMTcgQEAgU3RyaW5nIExv
Y2F0aW9uOjpoYXNoKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhy
ZWYoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0
IFN0cmluZyYgdXJsKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywg
Zmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQ
cm90b2NvbChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1
cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9jb2wo
cHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKICAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmlu
ZygpKTsKQEAgLTE2OSwyNyArMTcxLDMwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRQcm90b2NvbChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgaWYg
KCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAg
IHVybC5zZXRIb3N0QW5kUG9ydChob3N0KTsKICAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZl
V2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gTG9jYXRpb246OnNldEhvc3RuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5k
b3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIGlmICghbV9m
cmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwu
c2V0SG9zdChob3N0bmFtZSk7CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywg
Zmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0
aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2lu
ZG93LCBjb25zdCBTdHJpbmcmIHBvcnRTdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAg
IGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAg
ICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGludCBwb3J0ID0gcG9y
dFN0cmluZy50b0ludCgpOwogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGIHx8IHBv
cnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwpAQCAtMjAwLDI4
ICsyMDUsMzEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KIAogRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cm
IGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBhdGhuYW1lKQogewotICAgIGlmICghbV9mcmFt
ZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0
UGF0aChwYXRobmFtZSk7CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmly
c3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRTZWFyY2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5k
b3csIGNvbnN0IFN0cmluZyYgc2VhcmNoKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRv
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJM
IHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UXVlcnkoc2VhcmNo
KTsKICAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmlu
ZyYgaGFzaCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGF1dG8gdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CisgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBhdXRvIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBhdXRvIG9sZEZyYWdtZW50SWRlbnRpZmll
ciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBhdXRvIG5ld0ZyYWdtZW50SWRlbnRp
ZmllciA9IGhhc2g7CiAgICAgaWYgKGhhc2hbMF0gPT0gJyMnKQpAQCAtMjM3LDMyICsyNDUsMzQg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OmFzc2lnbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywg
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUo
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogdm9pZCBMb2NhdGlvbjo6cmVwbGFjZShET01X
aW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5n
JiB1cmwpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKSk7CisgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKTsKICAgICAvLyBXZSBjYWxsIERPTVdpbmRvdzo6c2V0
TG9jYXRpb24gZGlyZWN0bHkgaGVyZSBiZWNhdXNlIHJlcGxhY2UoKSBhbHdheXMgb3BlcmF0ZXMg
b24gdGhlIGN1cnJlbnQgZnJhbWUuCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPnNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCwgTG9ja0hpc3Rv
cnlBbmRCYWNrRm9yd2FyZExpc3QpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLCBMb2NrSGlzdG9y
eUFuZEJhY2tGb3J3YXJkTGlzdCk7CiB9CiAKIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdykKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEFTU0VSVChhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7
CisgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpKTsKIAogICAgIGF1dG8mIGFjdGl2ZURvY3VtZW50ID0gKmFjdGl2
ZVdpbmRvdy5kb2N1bWVudCgpOwotICAgIGF1dG8mIHRhcmdldERvY3VtZW50ID0gKm1fZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgYXV0byYgdGFyZ2V0RG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50
KCk7CiAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBjcm9zcy1vcmlnaW4gc2Vj
dXJpdHkgY2hlY2sgaXMgdmFsdWFibGUuCiAgICAgLy8gV2UgYWxsb3cgb25lIHBhZ2UgdG8gY2hh
bmdlIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyLiBXaHkgYmxvY2sgYXR0ZW1wdHMgdG8gcmVsb2Fk
PwpAQCAtMjc2LDE3ICsyODYsMTggQEAgdm9pZCBMb2NhdGlvbjo6cmVsb2FkKERPTVdpbmRvdyYg
YWN0aXZlV2luZG93KQogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVu
dC51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hl
ZHVsZXIoKS5zY2hlZHVsZVJlZnJlc2goYWN0aXZlRG9jdW1lbnQpOworICAgIGZyYW1lLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldExvY2F0aW9uKERPTVdpbmRvdyYgYWN0aXZl
V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAg
ICBBU1NFUlQobV9mcmFtZSk7Ci0gICAgaWYgKCFhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+Y2Fu
TmF2aWdhdGUobV9mcmFtZSkpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAg
IEFTU0VSVChmcmFtZSk7CisgICAgaWYgKCFhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+Y2FuTmF2
aWdhdGUoZnJhbWUpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9
OwotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBBU1NFUlQobV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5zZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAg
IEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRM
b2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogICAgIHJldHVybiB7IH07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCBiYjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIw
MDEwMTc4MzJhNGYyYWY4Li42OTY5MWJjNjFhN2FkN2NiOGEwYjNhM2E3ZmVmYjliNzY4Njc2ZGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNiwxMiArMzYsMTEgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwotY2xhc3MgRnJhbWU7CiBjbGFzcyBVUkw7CiAK
IGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8TG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTG9jYXRpb24oZnJhbWUpKTsgfQorICAgIHN0YXRpYyBSZWY8TG9jYXRpb24+IGNyZWF0
ZShET01XaW5kb3cmIHdpbmRvdykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2NhdGlvbih3aW5k
b3cpKTsgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0SHJlZihET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGhyZWYoKSBjb25zdDsKQEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgIFJlZjxET01T
dHJpbmdMaXN0PiBhbmNlc3Rvck9yaWdpbnMoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBMb2NhdGlvbihGcmFtZSopOworICAgIGV4cGxpY2l0IExvY2F0aW9uKERPTVdpbmRvdyYp
OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TG9jYXRpb24oRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAKaW5kZXggMjFmOWUzZTQ2YTRjYjRhMjhmOTA2MWZkMWE4NDMzOTE5
MGViZmQ5OS4uY2QxZjQ5ZmY2ZTk3YjdiYzgyZTk0NWI1MjY1OGZkOGJlMWRlOWM0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNDksOSArNDksOSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotTmF2aWdhdG9yOjpOYXZpZ2F0b3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRnJhbWUmIGZyYW1lKQorTmF2aWdhdG9yOjpOYXZp
Z2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV2luZG93JiB3aW5kb3cp
CiAgICAgOiBOYXZpZ2F0b3JCYXNlKGNvbnRleHQpCi0gICAgLCBET01XaW5kb3dQcm9wZXJ0eSgm
ZnJhbWUpCisgICAgLCBET01XaW5kb3dQcm9wZXJ0eSgmd2luZG93KQogewogfQogCkBAIC03Mywy
NCArNzMsMjYgQEAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZUZvdXJEb3QoRnJhbWUmIGZyYW1lKQog
CiBTdHJpbmcgTmF2aWdhdG9yOjphcHBWZXJzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKm1fZnJh
bWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6QXBw
VmVyc2lvbik7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dOYXZp
Z2F0b3JBUElBY2Nlc3NlZCgqZnJhbWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6Ok5hdmlnYXRvckFQSTo6QXBwVmVyc2lvbik7CiAgICAgU3RyaW5nIGFwcFZlcnNpb24gPSBO
YXZpZ2F0b3JCYXNlOjphcHBWZXJzaW9uKCk7Ci0gICAgaWYgKHNob3VsZEhpZGVGb3VyRG90KCpt
X2ZyYW1lKSkKKyAgICBpZiAoc2hvdWxkSGlkZUZvdXJEb3QoKmZyYW1lKSkKICAgICAgICAgYXBw
VmVyc2lvbi5yZXBsYWNlKCI0LiIsICI0XyIpOwogICAgIHJldHVybiBhcHBWZXJzaW9uOwogfQog
CiBjb25zdCBTdHJpbmcmIE5hdmlnYXRvcjo6dXNlckFnZW50KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJu
IG1fdXNlckFnZW50OwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZCgqbV9mcmFtZS0+ZG9jdW1l
bnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJOjpVc2VyQWdlbnQpOwor
ICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNj
ZXNzZWQoKmZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0
b3JBUEk6OlVzZXJBZ2VudCk7CiAgICAgaWYgKG1fdXNlckFnZW50LmlzTnVsbCgpKQotICAgICAg
ICBtX3VzZXJBZ2VudCA9IG1fZnJhbWUtPmxvYWRlcigpLnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSk7CisgICAgICAgIG1fdXNlckFnZW50ID0gZnJhbWUtPmxvYWRlcigpLnVz
ZXJBZ2VudChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwogICAgIHJldHVybiBtX3VzZXJBZ2Vu
dDsKIH0KIApAQCAtMTA2LDcgKzEwOCw4IEBAIGJvb2wgTmF2aWdhdG9yOjpvbkxpbmUoKSBjb25z
dAogCiB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgU2hhcmVEYXRhIGRhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAg
ICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkgeworICAgIGF1dG8qIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKSB7CiAgICAg
ICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTMyLDcgKzEzNSw3IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBTaGFyZURhdGEgZGF0YSwgUmVmPERlZmVyCiAgICAgICAgIHVybCwK
ICAgICB9OwogCi0gICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChz
aGFyZURhdGEsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgY29tcGxldGVkKSB7
CisgICAgZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIGNvbXBsZXRlZCkgewogICAgICAgICBp
ZiAoY29tcGxldGVkKSB7CiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNDQsMzcgKzE0NywzOCBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU2hhcmVEYXRhIGRhdGEsIFJlZjxEZWZl
cgogRE9NUGx1Z2luQXJyYXkmIE5hdmlnYXRvcjo6cGx1Z2lucygpCiB7CiAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJs
ZWQoKSkgewotICAgICAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZCgqbV9mcmFtZS0+ZG9jdW1l
bnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJOjpQbHVnaW5zKTsKKyAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKKyAgICAgICAgICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZCgqZnJhbWUt
PmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6UGx1Z2lu
cyk7CiAgICAgfQogICAgIGlmICghbV9wbHVnaW5zKQotICAgICAgICBtX3BsdWdpbnMgPSBET01Q
bHVnaW5BcnJheTo6Y3JlYXRlKG1fZnJhbWUpOworICAgICAgICBtX3BsdWdpbnMgPSBET01QbHVn
aW5BcnJheTo6Y3JlYXRlKG1fd2luZG93KTsKICAgICByZXR1cm4gKm1fcGx1Z2luczsKIH0KIAog
RE9NTWltZVR5cGVBcnJheSYgTmF2aWdhdG9yOjptaW1lVHlwZXMoKQogewogICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFi
bGVkKCkpIHsKLSAgICAgICAgaWYgKG1fZnJhbWUpCi0gICAgICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKm1fZnJhbWUtPmRvY3Vt
ZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6TWltZVR5cGVzKTsK
KyAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKKyAgICAgICAgICAgIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZCgqZnJh
bWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6TWlt
ZVR5cGVzKTsKICAgICB9CiAgICAgaWYgKCFtX21pbWVUeXBlcykKLSAgICAgICAgbV9taW1lVHlw
ZXMgPSBET01NaW1lVHlwZUFycmF5OjpjcmVhdGUobV9mcmFtZSk7CisgICAgICAgIG1fbWltZVR5
cGVzID0gRE9NTWltZVR5cGVBcnJheTo6Y3JlYXRlKG1fd2luZG93KTsKICAgICByZXR1cm4gKm1f
bWltZVR5cGVzOwogfQogCiBib29sIE5hdmlnYXRvcjo6Y29va2llRW5hYmxlZCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgp
KQotICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJ
QWNjZXNzZWQoKm1fZnJhbWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5h
dmlnYXRvckFQSTo6Q29va2llRW5hYmxlZCk7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKS5sb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZCgqZnJhbWUtPmRvY3VtZW50KCksIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSTo6Q29va2llRW5hYmxlZCk7CiAKLSAg
ICBpZiAobV9mcmFtZS0+cGFnZSgpICYmICFtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCkuY29v
a2llRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZS0+cGFnZSgpICYmICFmcmFtZS0+cGFnZSgpLT5z
ZXR0aW5ncygpLmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0xODMsMTUgKzE4NywxNiBAQCBib29sIE5hdmlnYXRvcjo6Y29va2llRW5h
YmxlZCgpIGNvbnN0CiAKIGJvb2wgTmF2aWdhdG9yOjpqYXZhRW5hYmxlZCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQot
ICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nTmF2aWdhdG9yQVBJQWNj
ZXNzZWQoKm1fZnJhbWUtPmRvY3VtZW50KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmln
YXRvckFQSTo6SmF2YUVuYWJsZWQpOworICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKCkubG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEk6OkphdmFFbmFibGVkKTsKIAotICAgIGlmICgh
bV9mcmFtZS0+c2V0dGluZ3MoKS5pc0phdmFFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+c2V0
dGluZ3MoKS5pc0phdmFFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5pc0xvY2FsKCkgJiYgIW1fZnJh
bWUtPnNldHRpbmdzKCkuaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoKSkKKyAgICBpZiAoZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuaXNMb2NhbCgpICYmICFmcmFtZS0+c2V0
dGluZ3MoKS5pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMSw3ICsyMDYsOCBAQCBib29sIE5hdmlnYXRv
cjo6amF2YUVuYWJsZWQoKSBjb25zdAogCiBib29sIE5hdmlnYXRvcjo6c3RhbmRhbG9uZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS5zdGFuZGFs
b25lKCk7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5zdGFuZGFsb25lKCk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmgKaW5kZXggYmQyNjBkZjdmYTcwN2EyNjUwMTNjMDMyYzJiY2YyMDQ1OTc4
M2MyYi4uZGQ0ZDNjMTkyZTNmZmI5MTlmZTQ2NjUzMzhjMDFjOWZkZWFiNGNiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIERPTVBsdWdpbkFycmF5Owog
CiBjbGFzcyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVu
dGFibGU8TmF2aWdhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOYXZpZ2F0b3I+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGcmFtZSYgZnJhbWUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTmF2aWdhdG9yKGNvbnRleHQsIGZyYW1lKSk7IH0KKyAgICBzdGF0
aWMgUmVmPE5hdmlnYXRvcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5hdmlnYXRvcihjb250
ZXh0LCB3aW5kb3cpKTsgfQogICAgIHZpcnR1YWwgfk5hdmlnYXRvcigpOwogCiAgICAgU3RyaW5n
IGFwcFZlcnNpb24oKSBjb25zdDsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0U3RvcmFnZVVwZGF0ZXMoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBOYXZpZ2F0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZyYW1lJik7CisgICAgZXhwbGljaXQgTmF2aWdhdG9y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01XaW5kb3cmKTsKIAogICAgIG11dGFibGUgUmVm
UHRyPERPTVBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NTWlt
ZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmlu
ZGV4IDAxYjFkNzI2MGE4YjA2MzE1NmE4NmE2NDVhMGU3YTY5YmVhNDBiMTMuLjQyMTVkMTY0MWU2
MWY4Y2M1MmI3OGI1M2JiYTQyNjVhMmJhODU0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiogUGVyZm9ybWFu
Y2U6Om5hdmlnYXRpb24oKQogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
IW1fbmF2aWdhdGlvbikKLSAgICAgICAgbV9uYXZpZ2F0aW9uID0gUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LmZyYW1lKCkpOworICAgICAgICBtX25hdmlnYXRpb24gPSBQZXJmb3JtYW5jZU5hdmlnYXRpb246
OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkuZG9t
V2luZG93KCkpOwogICAgIHJldHVybiBtX25hdmlnYXRpb24uZ2V0KCk7CiB9CiAKQEAgLTEwNCw3
ICsxMDQsNyBAQCBQZXJmb3JtYW5jZVRpbWluZyogUGVyZm9ybWFuY2U6OnRpbWluZygpCiAKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV90aW1pbmcpCi0gICAgICAgIG1f
dGltaW5nID0gUGVyZm9ybWFuY2VUaW1pbmc6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkuZnJhbWUoKSk7CisgICAgICAgIG1fdGltaW5nID0gUGVy
Zm9ybWFuY2VUaW1pbmc6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkuZG9tV2luZG93KCkpOwogICAgIHJldHVybiBtX3RpbWluZy5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCmluZGV4
IDY5YzhiNmExODA0NWU2YTcyOGMxMmM3MjYyMTczODg3M2E5MWEwODcuLjNkYmRlYjg5ZTc5YTI5
YjU0ZDBlNGRkZTMyN2RiNjRhYjNhMTU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKQEAgLTM4LDE3ICszOCwxOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9u
KEZyYW1lKiBmcmFtZSkKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorUGVyZm9ybWFu
Y2VOYXZpZ2F0aW9uOjpQZXJmb3JtYW5jZU5hdmlnYXRpb24oRE9NV2luZG93KiB3aW5kb3cpCisg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5kb3cpCiB7CiB9CiAKIHVuc2lnbmVkIHNob3J0IFBl
cmZvcm1hbmNlTmF2aWdhdGlvbjo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQor
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gVFlQRV9OQVZJR0FURTsKIAotICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAgRG9jdW1lbnRM
b2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFRZUEVfTkFWSUdBVEU7
CiAKQEAgLTY1LDEwICs2NiwxMSBAQCB1bnNpZ25lZCBzaG9ydCBQZXJmb3JtYW5jZU5hdmlnYXRp
b246OnR5cGUoKSBjb25zdAogCiB1bnNpZ25lZCBzaG9ydCBQZXJmb3JtYW5jZU5hdmlnYXRpb246
OnJlZGlyZWN0Q291bnQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBm
cmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKTsKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaAppbmRleCBjMGIw
MDFlOWFkZDY1NDVmNWI4NTY4NDliMDgxYTQ3ZWJkZThkZTI0Li5mMDYxY2Q4N2FlYWQ5NzdmOTcw
MTVmNmY3ZWRkZTIzNGJmY2RjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VOYXZpZ2F0aW9uLmgKQEAgLTM2LDExICszNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRnJhbWU7Ci0KIGNsYXNzIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBlcmZvcm1hbmNlTmF2aWdhdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0
eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQZXJmb3JtYW5jZU5hdmlnYXRpb24+IGNyZWF0
ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uKGZyYW1lKSk7IH0KKyAgICBzdGF0aWMgUmVmPFBlcmZvcm1hbmNlTmF2aWdhdGlvbj4gY3Jl
YXRlKERPTVdpbmRvdyogd2luZG93KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBlcmZvcm1hbmNl
TmF2aWdhdGlvbih3aW5kb3cpKTsgfQogCiAgICAgZW51bSBQZXJmb3JtYW5jZU5hdmlnYXRpb25U
eXBlIHsKICAgICAgICAgVFlQRV9OQVZJR0FURSwKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHVuc2lnbmVkIHNob3J0IHJlZGlyZWN0Q291bnQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBQZXJmb3JtYW5jZU5hdmlnYXRpb24oRnJhbWUqKTsKKyAgICBleHBsaWNpdCBQ
ZXJmb3JtYW5jZU5hdmlnYXRpb24oRE9NV2luZG93Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IGYz
MTM2MTY3MzllMmFiYjgxOTVlMTc1YTdlODc4Yjg1YmZiZGI4NWMuLjRlZmQ1NGUwMmQ2OGZhMzJl
NmNlZmYwOWYzNWU0NGU3NzhhOWQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VUaW1pbmcuY3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGVyZm9ybWFuY2VUaW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKEZyYW1lKiBmcmFtZSkKLSAgICA6
IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorUGVyZm9ybWFuY2VUaW1pbmc6OlBlcmZvcm1hbmNl
VGltaW5nKERPTVdpbmRvdyogd2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93
KQogewogfQogCkBAIC0yOTYsMTggKzI5NiwyMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6OmxvYWRFdmVudEVuZCgpIGNvbnN0CiAKIERvY3VtZW50TG9hZGVyKiBQZXJm
b3JtYW5jZVRpbWluZzo6ZG9jdW1lbnRMb2FkZXIoKSBjb25zdAogewotICAgIGlmICghbV9mcmFt
ZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKTsKKyAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCk7CiB9CiAKIGNvbnN0IERvY3VtZW50VGltaW5nKiBQZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1l
bnRUaW1pbmcoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9
IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmgKaW5kZXggNmY3YjFjNTdmODI0ZjVkYjY2MGRlYWMzYTk3MTMyYTE2MGQ4ZTZhMC4u
NjY0NWQ4MGI1NmFkMjVhNWJmNjAxYTU3ZDAwNzRlNjMyODhlMzQ2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaApAQCAtMzgsMTMgKzM4LDEyIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9hZGVyOwotY2xhc3MgRnJhbWU7CiBjbGFzcyBM
b2FkVGltaW5nOwogc3RydWN0IERvY3VtZW50VGltaW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZVRp
bWluZyA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZvcm1hbmNlVGltaW5nPiwgcHVibGljIERPTVdp
bmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBlcmZvcm1hbmNlVGltaW5n
PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBlcmZvcm1hbmNl
VGltaW5nKGZyYW1lKSk7IH0KKyAgICBzdGF0aWMgUmVmPFBlcmZvcm1hbmNlVGltaW5nPiBjcmVh
dGUoRE9NV2luZG93KiB3aW5kb3cpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGVyZm9ybWFuY2VU
aW1pbmcod2luZG93KSk7IH0KIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXZpZ2F0aW9uU3Rh
cnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5sb2FkRXZlbnRTdGFydCgpIGNv
bnN0OwpAQCAtNjksNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGxv
YWRFdmVudEVuZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBlcmZvcm1hbmNl
VGltaW5nKEZyYW1lKik7CisgICAgZXhwbGljaXQgUGVyZm9ybWFuY2VUaW1pbmcoRE9NV2luZG93
Kik7CiAKICAgICBjb25zdCBEb2N1bWVudFRpbWluZyogZG9jdW1lbnRUaW1pbmcoKSBjb25zdDsK
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Ny
ZWVuLmNwcAppbmRleCBiMjBhYmU0MDY0MTAyMGYwYTYxOTYyMGMzMGYyYzEzYTk4YTMxN2VkLi45
NDllNTZkNjllNDI0NWJiYjMxZGYzMzYyYjQ1Nzg4YzJjZDdhNjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TY3Jl
ZW4uY3BwCkBAIC0zOCw4MyArMzgsOTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3Jl
ZW46OlNjcmVlbihGcmFtZSogZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkK
K1NjcmVlbjo6U2NyZWVuKERPTVdpbmRvdyYgd2luZG93KQorICAgIDogRE9NV2luZG93UHJvcGVy
dHkoJndpbmRvdykKIHsKIH0KIAogdW5zaWduZWQgU2NyZWVuOjpoZWlnaHQoKSBjb25zdAogewot
ICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCpt
X2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6Okhl
aWdodCk7Ci0gICAgbG9uZyBoZWlnaHQgPSBzdGF0aWNfY2FzdDxsb25nPihzY3JlZW5SZWN0KG1f
ZnJhbWUtPnZpZXcoKSkuaGVpZ2h0KCkpOworICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6OkhlaWdodCk7CisgICAgbG9uZyBoZWlnaHQgPSBz
dGF0aWNfY2FzdDxsb25nPihzY3JlZW5SZWN0KGZyYW1lLT52aWV3KCkpLmhlaWdodCgpKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhlaWdodCk7CiB9CiAKIHVuc2lnbmVkIFNj
cmVlbjo6d2lkdGgoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3Rh
dGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpTY3JlZW5BUEk6OldpZHRoKTsKLSAgICBsb25nIHdpZHRoID0gc3RhdGljX2Nh
c3Q8bG9uZz4oc2NyZWVuUmVjdChtX2ZyYW1lLT52aWV3KCkpLndpZHRoKCkpOworICAgICAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKmZyYW1l
LT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6OldpZHRoKTsK
KyAgICBsb25nIHdpZHRoID0gc3RhdGljX2Nhc3Q8bG9uZz4oc2NyZWVuUmVjdChmcmFtZS0+dmll
dygpKS53aWR0aCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZHRoKTsK
IH0KIAogdW5zaWduZWQgU2NyZWVuOjpjb2xvckRlcHRoKCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
ZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3JlZW5BUElBY2Nlc3NlZCgqbV9mcmFtZS0+ZG9j
dW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpDb2xvckRlcHRoKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmVlbkRlcHRoKG1fZnJhbWUtPnZp
ZXcoKSkpOworICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVu
QVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpT
Y3JlZW5BUEk6OkNvbG9yRGVwdGgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2NyZWVuRGVwdGgoZnJhbWUtPnZpZXcoKSkpOwogfQogCiB1bnNpZ25lZCBTY3JlZW46OnBpeGVs
RGVwdGgoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGlj
c0VuYWJsZWQoKSkKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1Nj
cmVlbkFQSUFjY2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpTY3JlZW5BUEk6OlBpeGVsRGVwdGgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2NyZWVuRGVwdGgobV9mcmFtZS0+dmlldygpKSk7CisgICAgICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3JlZW5BUElBY2Nlc3NlZCgqZnJhbWUtPmRvY3VtZW50
KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSTo6UGl4ZWxEZXB0aCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JlZW5EZXB0aChmcmFtZS0+dmlldygpKSk7
CiB9CiAKIGludCBTY3JlZW46OmF2YWlsTGVmdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1l
KQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKm1fZnJhbWUtPmRvY3VtZW50
KCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSTo6QXZhaWxMZWZ0KTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzY3JlZW5BdmFpbGFibGVSZWN0KG1fZnJhbWUtPnZpZXco
KSkueCgpKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVl
bkFQSUFjY2Vzc2VkKCpmcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
U2NyZWVuQVBJOjpBdmFpbExlZnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHNjcmVl
bkF2YWlsYWJsZVJlY3QoZnJhbWUtPnZpZXcoKSkueCgpKTsKIH0KIAogaW50IFNjcmVlbjo6YXZh
aWxUb3AoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGlj
c0VuYWJsZWQoKSkKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1Nj
cmVlbkFQSUFjY2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpTY3JlZW5BUEk6OkF2YWlsVG9wKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihz
Y3JlZW5BdmFpbGFibGVSZWN0KG1fZnJhbWUtPnZpZXcoKSkueSgpKTsKKyAgICAgICAgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKCpmcmFtZS0+ZG9j
dW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpBdmFpbFRvcCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc2NyZWVuQXZhaWxhYmxlUmVjdChmcmFtZS0+dmll
dygpKS55KCkpOwogfQogCiB1bnNpZ25lZCBTY3JlZW46OmF2YWlsSGVpZ2h0KCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAg
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTY3JlZW5BUElBY2Nlc3NlZCgq
bV9mcmFtZS0+ZG9jdW1lbnQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJOjpB
dmFpbEhlaWdodCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JlZW5BdmFp
bGFibGVSZWN0KG1fZnJhbWUtPnZpZXcoKSkuaGVpZ2h0KCkpOworICAgICAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKmZyYW1lLT5kb2N1bWVu
dCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6OkF2YWlsSGVpZ2h0KTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmVlbkF2YWlsYWJsZVJlY3QoZnJhbWUt
PnZpZXcoKSkuaGVpZ2h0KCkpOwogfQogCiB1bnNpZ25lZCBTY3JlZW46OmF2YWlsV2lkdGgoKSBj
b25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQo
KSkKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1NjcmVlbkFQSUFj
Y2Vzc2VkKCptX2ZyYW1lLT5kb2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3Jl
ZW5BUEk6OkF2YWlsV2lkdGgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Ny
ZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3KCkpLndpZHRoKCkpOworICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU2NyZWVuQVBJQWNjZXNzZWQoKmZyYW1lLT5k
b2N1bWVudCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEk6OkF2YWlsV2lkdGgp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyZWVuQXZhaWxhYmxlUmVjdChm
cmFtZS0+dmlldygpKS53aWR0aCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2NyZWVuLmgKaW5kZXggYzU2ZmY2ODA0ZTk3MWNmMzNmZmVkMDVmMjBiNTY4YjVmYjQ0MDlm
Ni4uZTdhYWZmMjg5M2EzMDY1ZTA5NDhmZjlhN2JmOWYxZDNlNjFmYjYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nj
cmVlbi5oCkBAIC0zNiwxMSArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEZyYW1lOwotCiBjbGFzcyBTY3JlZW4gZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxTY3JlZW4+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8U2NyZWVuPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNjcmVlbihmcmFtZSkpOyB9CisgICAgc3RhdGljIFJlZjxTY3JlZW4+
IGNyZWF0ZShET01XaW5kb3cmIHdpbmRvdykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JlZW4o
d2luZG93KSk7IH0KIAogICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0OwogICAgIHVuc2lnbmVk
IHdpZHRoKCkgY29uc3Q7CkBAIC01Miw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBh
dmFpbFdpZHRoKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2NyZWVuKEZyYW1l
Kik7CisgICAgZXhwbGljaXQgU2NyZWVuKERPTVdpbmRvdyYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAppbmRleCBlNWEx
MzhhYjc4MjVkZjZiOTI3ZjNlMmNkNDRiMjVmMTM4MGNmMDRkLi5jOTE5OTRlZWRkNDcyMmY4MzI3
MWUwY2Q3OTZlOTgxYjMzNGYxMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zp
c3VhbFZpZXdwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0
LmNwcApAQCAtMzgsOCArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZpc3VhbFZp
ZXdwb3J0OjpWaXN1YWxWaWV3cG9ydChGcmFtZSogZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9w
ZXJ0eShmcmFtZSkKK1Zpc3VhbFZpZXdwb3J0OjpWaXN1YWxWaWV3cG9ydChET01XaW5kb3cmIHdp
bmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiB7CiB9CiAKQEAgLTUwLDkg
KzUwLDkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgVmlzdWFsVmlld3BvcnQ6OmV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVmlzdWFsVmlld3Bv
cnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIGlmICghbV9hc3NvY2lh
dGVkRE9NV2luZG93KQorICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcio+KG1f
YXNzb2NpYXRlZERPTVdpbmRvdyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIqPihtX3dpbmRvdyktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAogYm9vbCBWaXN1YWxWaWV3cG9ydDo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVu
ZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQpA
QCAtNjAsMjAgKzYwLDIwIEBAIGJvb2wgVmlzdWFsVmlld3BvcnQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpCiAgICAgaWYgKCFFdmVu
dFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBv
cHRpb25zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpCi0gICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGV2ZW50VHlw
ZSk7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKKyAgICAgICAgZnJhbWUt
PmRvY3VtZW50KCktPmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGV2ZW50VHlwZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgVmlzdWFsVmlld3BvcnQ6OnVwZGF0ZUZyYW1lTGF5b3V0KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5
b3V0VGFza3M6OlN5bmNocm9ub3VzbHkpOworICAgIEFTU0VSVChmcmFtZSgpKTsKKyAgICBmcmFt
ZSgpLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9j
dW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25vdXNseSk7CiB9CiAKIGRvdWJsZSBW
aXN1YWxWaWV3cG9ydDo6b2Zmc2V0TGVmdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQor
ICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1cGRhdGVGcmFtZUxh
eW91dCgpOwpAQCAtODIsNyArODIsNyBAQCBkb3VibGUgVmlzdWFsVmlld3BvcnQ6Om9mZnNldExl
ZnQoKSBjb25zdAogCiBkb3VibGUgVmlzdWFsVmlld3BvcnQ6Om9mZnNldFRvcCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICB1cGRhdGVGcmFtZUxheW91dCgpOwpAQCAtOTEsNyArOTEsNyBAQCBkb3VibGUgVmlz
dWFsVmlld3BvcnQ6Om9mZnNldFRvcCgpIGNvbnN0CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6
cGFnZUxlZnQoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdXBkYXRlRnJhbWVMYXlvdXQoKTsKQEAgLTEwMCw3
ICsxMDAsNyBAQCBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OnBhZ2VMZWZ0KCkgY29uc3QKIAogZG91
YmxlIFZpc3VhbFZpZXdwb3J0OjpwYWdlVG9wKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUp
CisgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVwZGF0ZUZyYW1l
TGF5b3V0KCk7CkBAIC0xMDksNyArMTA5LDcgQEAgZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpwYWdl
VG9wKCkgY29uc3QKIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0Ojp3aWR0aCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICB1cGRhdGVGcmFtZUxheW91dCgpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGRvdWJsZSBWaXN1
YWxWaWV3cG9ydDo6d2lkdGgoKSBjb25zdAogCiBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OmhlaWdo
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGlmICghZnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICB1cGRhdGVGcmFtZUxheW91dCgpOwpAQCAtMTI4LDcgKzEyOCw4
IEBAIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6aGVpZ2h0KCkgY29uc3QKIGRvdWJsZSBWaXN1YWxW
aWV3cG9ydDo6c2NhbGUoKSBjb25zdAogewogICAgIC8vIFN1YmZyYW1lcyBhbHdheXMgaGF2ZSBz
Y2FsZSAxIHNpbmNlIHRoZXkgYXJlbid0IHNjYWxlZCByZWxhdGl2ZSB0byB0aGVpciBwYXJlbnQg
ZnJhbWUuCi0gICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQorICAg
IGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICB1cGRhdGVGcmFtZUxheW91
dCgpOwpAQCAtMTQ1LDExICsxNDYsMTEgQEAgdm9pZCBWaXN1YWxWaWV3cG9ydDo6dXBkYXRlKCkK
ICAgICBkb3VibGUgaGVpZ2h0ID0gMDsKICAgICBkb3VibGUgc2NhbGUgPSAxOwogCi0gICAgaWYg
KG1fZnJhbWUpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsK
KyAgICBpZiAoYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRv
KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgYXV0byB2aXN1YWxWaWV3cG9y
dFJlY3QgPSB2aWV3LT52aXN1YWxWaWV3cG9ydFJlY3QoKTsKICAgICAgICAgICAgIGF1dG8gbGF5
b3V0Vmlld3BvcnRSZWN0ID0gdmlldy0+bGF5b3V0Vmlld3BvcnRSZWN0KCk7Ci0gICAgICAgICAg
ICBhdXRvIHBhZ2Vab29tRmFjdG9yID0gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKKyAgICAg
ICAgICAgIGF1dG8gcGFnZVpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKICAg
ICAgICAgICAgIEFTU0VSVChwYWdlWm9vbUZhY3Rvcik7CiAgICAgICAgICAgICBvZmZzZXRMZWZ0
ID0gKHZpc3VhbFZpZXdwb3J0UmVjdC54KCkgLSBsYXlvdXRWaWV3cG9ydFJlY3QueCgpKSAvIHBh
Z2Vab29tRmFjdG9yOwogICAgICAgICAgICAgb2Zmc2V0VG9wID0gKHZpc3VhbFZpZXdwb3J0UmVj
dC55KCkgLSBsYXlvdXRWaWV3cG9ydFJlY3QueSgpKSAvIHBhZ2Vab29tRmFjdG9yOwpAQCAtMTU4
LDcgKzE1OSw3IEBAIHZvaWQgVmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSgpCiAgICAgICAgICAgICB3
aWR0aCA9IHZpc3VhbFZpZXdwb3J0UmVjdC53aWR0aCgpIC8gcGFnZVpvb21GYWN0b3I7CiAgICAg
ICAgICAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydFJlY3QuaGVpZ2h0KCkgLyBwYWdlWm9vbUZh
Y3RvcjsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAg
c2NhbGUgPSBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKICAgICB9CiAKQEAgLTE3NywxOCArMTc4
LDIwIEBAIHZvaWQgVmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSgpCiAKIHZvaWQgVmlzdWFsVmlld3Bv
cnQ6OmVucXVldWVSZXNpemVFdmVudCgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8q
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVJlc2l6ZUV2
ZW50KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVJlc2l6ZUV2ZW50
KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwog
fQogCiB2b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQoKQogewotICAgIGlm
ICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRR
dWV1ZSgpLmVucXVldWVTY3JvbGxFdmVudCgqdGhpcywgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1
ZSgpLmVucXVldWVTY3JvbGxFdmVudCgqdGhpcywgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCmluZGV4IDQ3NzI3ZDM1YWNhNTkxOWM1YWJmMzMxMTUw
ODcxMWU5NWI2NGMyM2QuLmU4MTA2NWFmNDBlNDljN2ZjMDM4MGJkOTYzNjJkZTFjYzFkM2Y2YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmgKQEAgLTMxLDExICszMSw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7Ci0KIGNsYXNzIFZpc3VhbFZpZXdw
b3J0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8VmlzdWFsVmlld3BvcnQ+LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFZpc3VhbFZpZXdwb3J0PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFZpc3VhbFZpZXdwb3J0KGZyYW1lKSk7IH0KKyAgICBzdGF0
aWMgUmVmPFZpc3VhbFZpZXdwb3J0PiBjcmVhdGUoRE9NV2luZG93JiB3aW5kb3cpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlzdWFsVmlld3BvcnQod2luZG93KSk7IH0KIAogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTU2LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OmRlcmVmOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFZpc3VhbFZpZXdwb3J0KEZyYW1l
Kik7CisgICAgZXhwbGljaXQgVmlzdWFsVmlld3BvcnQoRE9NV2luZG93Jik7CiAKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9XZWJLaXROYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3Bh
Y2UuY3BwCmluZGV4IDVmOWRiMGFlY2U1NDQ0NGI2MzYzNWY2ZjdjOWEyMGZlOTM0Y2NhYWUuLjkz
MDk0ZmM0YWZjMzE0M2U4NGEwNjUwNGFkOGM4N2RkZWY1YzdkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1dlYktpdE5hbWVzcGFjZS5jcHAKQEAgLTMzLDEwICszMywxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdlYktpdE5hbWVzcGFjZTo6V2ViS2l0TmFtZXNwYWNlKEZyYW1lJiBmcmFt
ZSwgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQcm92aWRlcikKLSAgICA6IERPTVdp
bmRvd1Byb3BlcnR5KCZmcmFtZSkKLSAgICAsIG1fbWVzc2FnZUhhbmRsZXJOYW1lc3BhY2UoVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTo6Y3JlYXRlKGZyYW1lLCB1c2VyQ29udGVudFByb3Zp
ZGVyKSkKK1dlYktpdE5hbWVzcGFjZTo6V2ViS2l0TmFtZXNwYWNlKERPTVdpbmRvdyYgd2luZG93
LCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVyKQorICAgIDogRE9NV2lu
ZG93UHJvcGVydHkoJndpbmRvdykKKyAgICAsIG1fbWVzc2FnZUhhbmRsZXJOYW1lc3BhY2UoVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTo6Y3JlYXRlKCp3aW5kb3cuZnJhbWUoKSwgdXNlckNv
bnRlbnRQcm92aWRlcikpCiB7CisgICAgQVNTRVJUKHdpbmRvdy5mcmFtZSgpKTsKIH0KIAogV2Vi
S2l0TmFtZXNwYWNlOjp+V2ViS2l0TmFtZXNwYWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2ViS2l0TmFtZXNwYWNlLmgKaW5kZXggY2U4MThiMzc1Y2ViMTU3MjRkYTc2ZWQwZTZkNDZj
YmM5ODM4OTczNS4uMWZhMWM0NDBkN2FjMjM1ZWM3ZjU3ZDgyNzMxZTg1NDgyNGZhZDNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5oCkBAIC0zMywxNSArMzMsMTQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKIGNsYXNzIFVzZXJDb250ZW50UHJv
dmlkZXI7CiBjbGFzcyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOwogCiBjbGFzcyBXZWJL
aXROYW1lc3BhY2UgOiBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBSZWZDb3VudGVk
PFdlYktpdE5hbWVzcGFjZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0TmFtZXNw
YWNlPiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVu
dFByb3ZpZGVyKQorICAgIHN0YXRpYyBSZWY8V2ViS2l0TmFtZXNwYWNlPiBjcmVhdGUoRE9NV2lu
ZG93JiB3aW5kb3csIFVzZXJDb250ZW50UHJvdmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXROYW1lc3BhY2UoZnJhbWUs
IHVzZXJDb250ZW50UHJvdmlkZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
S2l0TmFtZXNwYWNlKHdpbmRvdywgdXNlckNvbnRlbnRQcm92aWRlcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfldlYktpdE5hbWVzcGFjZSgpOwpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSogbWVzc2FnZUhhbmRsZXJzKCk7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViS2l0TmFtZXNwYWNlKEZyYW1lJiwgVXNlckNvbnRlbnRQ
cm92aWRlciYpOworICAgIGV4cGxpY2l0IFdlYktpdE5hbWVzcGFjZShET01XaW5kb3cmLCBVc2Vy
Q29udGVudFByb3ZpZGVyJik7CiAKICAgICBSZWY8VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZT4gbV9tZXNzYWdlSGFuZGxlck5hbWVzcGFjZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01NaW1lVHlwZUFycmF5LmNwcAppbmRleCAyYjA5MDMyNTFmM2ZmZDBmOGY4MDEyZWU5MjZk
NTExNGVmZDI4OTU4Li5lOWNjZjkzYjE0MWMxMjA2Njg5NmJhZjM3MThiNjJlMmJkNDA1MjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKQEAgLTI4LDgg
KzI4LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01NaW1lVHlwZUFycmF5OjpET01N
aW1lVHlwZUFycmF5KEZyYW1lKiBmcmFtZSkKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1l
KQorRE9NTWltZVR5cGVBcnJheTo6RE9NTWltZVR5cGVBcnJheShET01XaW5kb3cqIHdpbmRvdykK
KyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdykKIHsKIH0KIApAQCAtNTksNyArNTksNyBA
QCBSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpCiAKICAgICBpZiAoaW5kZXggPj0gbWltZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpbmRl
eCk7CisgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgZnJhbWUoKSwgaW5kZXgp
OwogfQogCiBSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbShj
b25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTczLDcgKzczLDcgQEAgUmVmUHRy
PERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUKICAgICBkYXRhLT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5J
bmRpY2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09
IHByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKGRh
dGEsIG1fZnJhbWUsIGkpOworICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUo
ZGF0YSwgZnJhbWUoKSwgaSk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtOTgs
MTYgKzk4LDE1IEBAIFZlY3RvcjxBdG9taWNTdHJpbmc+IERPTU1pbWVUeXBlQXJyYXk6OnN1cHBv
cnRlZFByb3BlcnR5TmFtZXMoKQogCiBQbHVnaW5EYXRhKiBET01NaW1lVHlwZUFycmF5OjpnZXRQ
bHVnaW5EYXRhKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9ICZwYWdlLT5wbHVnaW5EYXRhKCk7Ci0KLSAg
ICByZXR1cm4gcGx1Z2luRGF0YTsKKyAgICByZXR1cm4gJnBhZ2UtPnBsdWdpbkRhdGEoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ET01NaW1lVHlwZUFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVU
eXBlQXJyYXkuaAppbmRleCA2YTM3NGIwYTJkNTY4ZGExNTcwNzdiNzhiY2ZhNjAyZjcwYWUwZWNm
Li41MjViZGViMDgwNGYxOGZhYWMxZWI4MzJkNzZiOWI1MDY3ZTMxZGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaApAQCAtMjcsMTIgKzI3LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBQbHVnaW5EYXRhOwogCiBj
bGFzcyBET01NaW1lVHlwZUFycmF5IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJl
ZkNvdW50ZWQ8RE9NTWltZVR5cGVBcnJheT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01NaW1lVHlwZUFycmF5PiBjcmVhdGUoRnJhbWUqIGZy
YW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERPTU1pbWVUeXBlQXJyYXkoZnJhbWUpKTsgfQor
ICAgIHN0YXRpYyBSZWY8RE9NTWltZVR5cGVBcnJheT4gY3JlYXRlKERPTVdpbmRvdyogd2luZG93
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERPTU1pbWVUeXBlQXJyYXkod2luZG93KSk7IH0KICAg
ICB+RE9NTWltZVR5cGVBcnJheSgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBA
IC00MSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0
ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRE9NTWltZVR5cGVB
cnJheShGcmFtZSopOworICAgIGV4cGxpY2l0IERPTU1pbWVUeXBlQXJyYXkoRE9NV2luZG93Kik7
CiAgICAgUGx1Z2luRGF0YSogZ2V0UGx1Z2luRGF0YSgpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAppbmRleCBjY2UzNjFlMjczMmQyMWIzNTg2
MDkxMTc0MGJkNGRlZTY1M2JhZmM1Li4xMDVmNWNjN2Q1ODNiNTc5OGYwY2FmNWZjYWNlODAyYWY1
MzJjOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcApAQCAt
MjgsOCArMjgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTVBsdWdpbkFycmF5OjpE
T01QbHVnaW5BcnJheShGcmFtZSogZnJhbWUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFt
ZSkKK0RPTVBsdWdpbkFycmF5OjpET01QbHVnaW5BcnJheShET01XaW5kb3cqIHdpbmRvdykKKyAg
ICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdykKIHsKIH0KIApAQCAtNTMsNyArNTMsNyBAQCBS
ZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAg
ICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSBkYXRhLT5wdWJsaWNseVZpc2li
bGVQbHVnaW5zKCk7CiAgICAgaWYgKGluZGV4ID49IHBsdWdpbnMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwgbV9mcmFt
ZSwgcGx1Z2luc1tpbmRleF0pOworICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShkYXRhLCBm
cmFtZSgpLCBwbHVnaW5zW2luZGV4XSk7CiB9CiAKIFJlZlB0cjxET01QbHVnaW4+IERPTVBsdWdp
bkFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC02
NCw3ICs2NCw3IEBAIFJlZlB0cjxET01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAKICAgICBmb3IgKGF1dG8mIHBsdWdp
biA6IGRhdGEtPndlYlZpc2libGVQbHVnaW5zKCkpIHsKICAgICAgICAgaWYgKHBsdWdpbi5uYW1l
ID09IHByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShk
YXRhLCBtX2ZyYW1lLCBwbHVnaW4pOworICAgICAgICAgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3Jl
YXRlKGRhdGEsIGZyYW1lKCksIHBsdWdpbik7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtODcsMTAgKzg3LDExIEBAIFZlY3RvcjxBdG9taWNTdHJpbmc+IERPTVBsdWdpbkFycmF5
OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKIAogdm9pZCBET01QbHVnaW5BcnJheTo6cmVmcmVz
aChib29sIHJlbG9hZFBhZ2VzKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCisgICAgaWYgKCFmcmFtZS0+cGFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBQYWdlOjpyZWZyZXNoUGx1Z2lucyhyZWxvYWRQYWdlcyk7CkBAIC05
OCwxMCArOTksMTEgQEAgdm9pZCBET01QbHVnaW5BcnJheTo6cmVmcmVzaChib29sIHJlbG9hZFBh
Z2VzKQogCiBQbHVnaW5EYXRhKiBET01QbHVnaW5BcnJheTo6cGx1Z2luRGF0YSgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW5BcnJheS5oCmluZGV4IDliODAzZmRlYTA4ODJjMTVjZmI5YmU0OWMwM2EwMzZm
OGM2NzExNzIuLmJhMGQ5YzA4YTMyMGNkNWU4MDBiNzNhM2VlZjEwZWI1NzdkZTI2ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgKQEAgLTI3LDEyICsyNywxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwogY2xhc3MgUGx1Z2luRGF0YTsK
IAogY2xhc3MgRE9NUGx1Z2luQXJyYXkgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
UmVmQ291bnRlZDxET01QbHVnaW5BcnJheT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01QbHVnaW5BcnJheT4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01QbHVnaW5BcnJheShmcmFtZSkpOyB9CisgICAg
c3RhdGljIFJlZjxET01QbHVnaW5BcnJheT4gY3JlYXRlKERPTVdpbmRvdyogd2luZG93KSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERPTVBsdWdpbkFycmF5KHdpbmRvdykpOyB9CiAgICAgfkRPTVBs
dWdpbkFycmF5KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTQzLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaChib29sIHJlbG9hZFBhZ2VzKTsKIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBET01QbHVnaW5BcnJheShGcmFtZSopOworICAgIGV4cGxpY2l0
IERPTVBsdWdpbkFycmF5KERPTVdpbmRvdyopOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEo
KSBjb25zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IGFkYjE5NTQ1
YzUwN2RlOWQzYjVhMjcxYTY1MWQ3MDNhODYwMTE1MjUuLjU2ODcyMzg4OTI3OGVjN2FiMjQ0YjVj
OTVhNGY2YjVlZDI1ZGZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtMzcs
MTYgKzM3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFN0b3JhZ2U+IFN0b3Jh
Z2U6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJl
YSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0
cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdG9yYWdlKGZyYW1lLCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0b3JhZ2Uod2luZG93LCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkpOwogfQogCi1T
dG9yYWdlOjpTdG9yYWdlKEZyYW1lKiBmcmFtZSwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3Jh
Z2VBcmVhKQotICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCitTdG9yYWdlOjpTdG9yYWdl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCisg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmd2luZG93KQogICAgICwgbV9zdG9yYWdlQXJlYShXVEZN
b3ZlKHN0b3JhZ2VBcmVhKSkKIHsKLSAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKGZy
YW1lKCkpOwogICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1fc3RvcmFnZUFyZWEt
PmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CkBAIC03NCwxMSArNzQsMTIgQEAgU3RyaW5nIFN0b3Jh
Z2U6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IFN0b3JhZ2U6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vz
c0Vycm9yIH07CiAKICAgICBib29sIHF1b3RhRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgbV9zdG9y
YWdlQXJlYS0+c2V0SXRlbShtX2ZyYW1lLCBrZXksIHZhbHVlLCBxdW90YUV4Y2VwdGlvbik7Cisg
ICAgbV9zdG9yYWdlQXJlYS0+c2V0SXRlbShmcmFtZSwga2V5LCB2YWx1ZSwgcXVvdGFFeGNlcHRp
b24pOwogICAgIGlmIChxdW90YUV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFF1b3RhRXhjZWVkZWRFcnJvciB9OwogICAgIHJldHVybiB7IH07CkBAIC04NiwxOSArODcsMjEg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gU3RvcmFnZTo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogRXhjZXB0aW9uT3I8dm9pZD4gU3RvcmFnZTo6cmVtb3Zl
SXRlbShjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAotICAgIG1fc3RvcmFnZUFyZWEtPnJl
bW92ZUl0ZW0obV9mcmFtZSwga2V5KTsKKyAgICBtX3N0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKGZy
YW1lLCBrZXkpOwogICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFN0b3Jh
Z2U6OmNsZWFyKCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkQWNjZXNzRXJyb3IgfTsKIAotICAgIG1fc3RvcmFnZUFyZWEtPmNsZWFyKG1fZnJhbWUp
OworICAgIG1fc3RvcmFnZUFyZWEtPmNsZWFyKGZyYW1lKTsKICAgICByZXR1cm4geyB9OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDg5YzQ3ODE0NWEyNzM2MzQ0MDE1Zjg2NmM4
OGUxM2QxYTYzODg1OGUuLjgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC0zMSwxMiArMzEsMTEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFz
cyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3Rv
cmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTdG9yYWdlPiBjcmVhdGUoRnJhbWUqLCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRvdyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4m
Jik7CiAgICAgflN0b3JhZ2UoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpAQCAt
NTQsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7IHJl
dHVybiAqbV9zdG9yYWdlQXJlYTsgfQogCiBwcml2YXRlOgotICAgIFN0b3JhZ2UoRnJhbWUqLCBS
ZWZQdHI8U3RvcmFnZUFyZWE+JiYpOworICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0
b3JhZ2VBcmVhPiYmKTsKIAogICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdl
QXJlYTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IDBlNzkwZjljOGRkNDAyN2Y1YmU3MzU5NDRlZjIwYWQ2NTEzM2RiMTAuLmQ3NmZjMzJjMWY4
YjM1NmNiNzZiZTI0ODM0MmJmZmNkMmU0NWNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9E
T00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC0xMDIsMTAgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCghbV9vYmplY3RzLmNvbnRhaW5zKCZkYXRhKSk7CiAKICAgICAgICAgV2ViQ29y
ZTo6RE9NV2luZG93KiBkb21XaW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KTsKLSAgICAgICAgaWYgKGRvbVdpbmRvdyAmJiAoIW1fZG9tV2luZG93T2JzZXJ2ZXIgfHwgbV9k
b21XaW5kb3dPYnNlcnZlci0+ZG9tV2luZG93KCkgIT0gZG9tV2luZG93KSkgeworICAgICAgICBp
ZiAoZG9tV2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZlciB8fCBtX2RvbVdpbmRvd09ic2Vy
dmVyLT53aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAgICAgICAgICAvLyBOZXcgRE9NV2lu
ZG93LCBjbGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5ldyBET01XaW5kb3dPYnNlcnZlci4K
ICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKm1fZnJhbWUsICp0aGlzLCBkb21X
aW5kb3cpOworICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAgfQogCiAg
ICAgICAgIG1fb2JqZWN0cy5hcHBlbmQoJmRhdGEpOwpAQCAtMTE2LDIwICsxMTYsMTYgQEAgcHJp
dmF0ZToKICAgICBjbGFzcyBET01XaW5kb3dPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6
OkRPTVdpbmRvd1Byb3BlcnR5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgotICAgICAgICBET01XaW5kb3dPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJh
bWUsIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZnJhbWVPYnNlcnZlciwgV2ViQ29yZTo6
RE9NV2luZG93KiB3aW5kb3cpCi0gICAgICAgICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZmcmFt
ZSkKKyAgICAgICAgRE9NV2luZG93T2JzZXJ2ZXIoV2ViQ29yZTo6RE9NV2luZG93JiB3aW5kb3cs
IERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZnJhbWVPYnNlcnZlcikKKyAgICAgICAgICAg
IDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKICAgICAgICAgICAgICwgbV9mcmFtZU9ic2Vy
dmVyKGZyYW1lT2JzZXJ2ZXIpCi0gICAgICAgICAgICAsIG1fZG9tV2luZG93KHdpbmRvdykKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fZG9tV2luZG93KTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZpcnR1YWwgfkRPTVdpbmRvd09ic2VydmVyKCkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgV2ViQ29yZTo6RE9NV2luZG93KiBkb21XaW5kb3coKSBjb25zdCB7IHJldHVy
biBtX2RvbVdpbmRvdzsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB3aWxsRGV0YWNo
R2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkgb3ZlcnJpZGUKICAgICAgICAgewpAQCAtMTM5LDcgKzEz
NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBET01PYmplY3RDYWNoZUZyYW1l
T2JzZXJ2ZXImIG1fZnJhbWVPYnNlcnZlcjsKLSAgICAgICAgV2ViQ29yZTo6RE9NV2luZG93KiBt
X2RvbVdpbmRvdzsKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgb2JqZWN0RmluYWxpemVkQ2Fs
bGJhY2soZ3BvaW50ZXIgdXNlckRhdGEsIEdPYmplY3QqIGZpbmFsaXplZE9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCmluZGV4IGY4
NzFmZGU3M2FiMzRlOWI4N2FjYzQxMjRlZDg0NTJhOGFmNmNiMjQuLjM2ZmUwZTA1ZDA0ZGUwMzk0
OTg1NTRjMWViYTI1NjA4MzdjYTNjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBJbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbiogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246Omdl
dChET01XaW5kbwogfQogCiBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6SW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24oV2ViRnJhbWUqIGZyYW1lLCBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkKiB3b3JsZCkKLSAgICA6IG1fY29yZUV4dGVuc2lvbihET01XaW5kb3dFeHRl
bnNpb246OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCksIHdvcmxkLT5jb3JlV29ybGQoKSkpCisg
ICAgOiBtX2NvcmVFeHRlbnNpb24oRE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUoZnJhbWUtPmNv
cmVGcmFtZSgpID8gZnJhbWUtPmNvcmVGcmFtZSgpLT53aW5kb3coKSA6IG51bGxwdHIsIHdvcmxk
LT5jb3JlV29ybGQoKSkpCiB7CiAgICAgYWxsRXh0ZW5zaW9ucygpLmFkZChtX2NvcmVFeHRlbnNp
b24uZ2V0KCksIHRoaXMpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>