<?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>203472</bug_id>
          
          <creation_ts>2019-10-27 13:17:42 -0700</creation_ts>
          <short_desc>[Quick Look] Clean up LegacyPreviewLoaderClients</short_desc>
          <delta_ts>2019-10-29 21:15:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1584313</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-27 13:17:42 -0700</bug_when>
    <thetext>[Quick Look] Clean up LegacyPreviewLoaderClients</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584323</commentid>
    <comment_count>1</comment_count>
      <attachid>382032</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-27 13:27:27 -0700</bug_when>
    <thetext>Created attachment 382032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585117</commentid>
    <comment_count>2</comment_count>
      <attachid>382230</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-29 14:48:30 -0700</bug_when>
    <thetext>Created attachment 382230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585169</commentid>
    <comment_count>3</comment_count>
      <attachid>382230</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-29 16:35:34 -0700</bug_when>
    <thetext>Comment on attachment 382230
Patch

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

&gt; Source/WebKit/Platform/SharedMemory.cpp:35
&gt; +RefPtr&lt;SharedMemory&gt; SharedMemory::create(const SharedBuffer&amp; buffer)

I was a little confused here, trying to figure out how you could make an existing become &quot;shared memory&quot;

I&apos;d like the name to be more clear that the new SharedMemory object is a copy.

Maybe &quot;createWithCopy&quot; or something explicit like that.

&gt; Source/WebKit/Platform/SharedMemory.h:104
&gt;      static RefPtr&lt;SharedMemory&gt; create(void*, size_t, Protection);
&gt; +    static RefPtr&lt;SharedMemory&gt; create(const WebCore::SharedBuffer&amp;);

I know the existence of this one is just as confusing. I would&apos;ve made the same comment when it was added. (Unless, of course,I am the one who added it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585177</commentid>
    <comment_count>4</comment_count>
      <attachid>382252</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-29 16:51:56 -0700</bug_when>
    <thetext>Created attachment 382252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585267</commentid>
    <comment_count>5</comment_count>
      <attachid>382252</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-29 21:14:47 -0700</bug_when>
    <thetext>Comment on attachment 382252
Patch

Clearing flags on attachment: 382252

Committed r251765: &lt;https://trac.webkit.org/changeset/251765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585268</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-29 21:14:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585269</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-29 21:15:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/56733040&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382032</attachid>
            <date>2019-10-27 13:27:27 -0700</date>
            <delta_ts>2019-10-29 14:48:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203472-20191027132727.patch</filename>
            <type>text/plain</type>
            <size>46591</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZThhMWVhNjdkZGIz
ODM0YzNmNzZjNTJlN2RmOTNjYjEzYmEwOS4uYjNjZWE0ZTliN2E4NDYxMDllNTdjOWJjNmQ3MmZi
NjFhZDkyNDAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUXVpY2sgTG9va10gQ2xlYW4g
dXAgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKwogMjAxOS0xMC0yNyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRG8gbm90IGV4
cGFuZCBydW5zIHdpdGggY29sbGFwc2VkIHRyYWlsaW5nIHdoaXRlc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NWJjZjQ3MmVmODYwM2UxODNjOWE1N2NlOTIyNTZmYWJlZWJjMTA0My4uNjU2OGZhYzg1NjA0NDBk
NTZkZDkzNDdiNDhjYjU4YmY0NGQ2MzJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAx
OS0xMC0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1F1aWNr
IExvb2tdIENsZWFuIHVwIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBRdWlja0xvb2tEb2N1
bWVudERhdGEgd2l0aCBTaGFyZWFibGVSZXNvdXJjZS4KKworICAgICAgICBSZW1vdmVkIG1lc3Nh
Z2VzIFdlYlBhZ2VQcm94eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZSBhbmQKKyAgICAgICAgV2ViUGFnZTo6RGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnQsIHJlcGxhY2luZyB0aGVtIHdpdGggYXN5bmMgbWVzc2FnZQorICAgICAg
ICBXZWJQYWdlUHJveHk6OlJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVxdWVzdFBhc3N3b3JkKToKKyAgICAgICAgKFdlYktpdDo6cGFzc3dvcmRDYWxsYmFja3Mp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2Vi
UHJldmlld0xvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KTogRGVsZXRlZC4K
KwogMjAxOS0xMC0yNiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5mb3JjZSB1c2VyIGdlc3R1cmUgZm9yIGdldFVzZXJNZWRpYSBpbiBjYXNlIGEgcHJldmlv
dXMgZ2V0VXNlck1lZGlhIGNhbGwgd2FzIGRlbmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDUwMjE2NGQ1MzYzYjEzNGJlMmQ4ODM0MzVlYmE2NTE4N2ExMWUwMmMuLmVjNmU5NDcy
NDkyYzVjNGE4NDg1NDhmZDFlNjM4ZmFkMDIzZTRlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1F1aWNrIExvb2tdIENsZWFuIHVwIExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDM0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQpOgorCiAyMDE5
LTEwLTI2ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBQdXQgT2Zm
c2NyZWVuQ2FudmFzIGJlaGluZCBhIGJ1aWxkIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBjN2U3YzhiOTFmYjU0Y2Y4ZTE5
MDE3ZTdjMDhiYzU3YzU0ZWE5MDkwLi42YzlhOWEyMWEwYzYzZjFjOGE2OTUxNmJlOWJlMDgyZWM0
MjdlM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29y
aywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIs
IGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsKICAg
ICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhQXJyYXkoKF9fYnJpZGdlIENGQXJyYXlSZWYpYnVmZmVyLmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBi
YjIxMzc4ODgyZjcwMzRjNDlkMjE3OGVjNmMyZmEzNTgyN2U5ZWE0Li5iYzRkYWFmYmYyMWExNWMw
ZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CkBAIC0zMSwxMCArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFy
ZWRCdWZmZXI7CisKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+TGVnYWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvUXVpY2tMb29r
RG9jdW1lbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1
bWVudERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmJkYTU5NzUxNWY0
NmI2ZWNkNTA0ODBkNmU0OTg4MGMxODRkYjM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1
bWVudERhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIK
LQotI2lmIFVTRShRVUlDS19MT09LKQotCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUg
IkVuY29kZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUXVpY2tMb29rRG9jdW1l
bnREYXRhOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCi17Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRh
KTsKLX0KLQotQ0ZEYXRhUmVmIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlZERhdGEoKSBj
b25zdAotewotICAgIEFTU0VSVChtX2RhdGEuc2l6ZSgpIDw9IDEpOwotICAgIGlmIChtX2RhdGEu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9kYXRhWzBd
LmdldCgpOwotfQotCi1ib29sIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6aXNFbXB0eSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgUXVpY2tMb29rRG9j
dW1lbnREYXRhOjpjbGVhcigpCi17Ci0gICAgbV9kYXRhLmNsZWFyKCk7Ci19Ci0KLXZvaWQgUXVp
Y2tMb29rRG9jdW1lbnREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAot
ewotICAgIHVpbnQ2NF90IHNpemUgPSAwOwotICAgIGZvciAoY29uc3QgYXV0byYgZGF0YSA6IG1f
ZGF0YSkKLSAgICAgICAgc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7Ci0gICAg
ZW5jb2RlciA8PCBzaXplOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBkYXRhIDogbV9kYXRhKQot
ICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShDRkRhdGFHZXRCeXRlUHRyKGRh
dGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSksIDEpOwotfQotCi1ib29sIFF1
aWNrTG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUXVpY2tM
b29rRG9jdW1lbnREYXRhJiBkb2N1bWVudERhdGEpCi17Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdWludDhfdCogY29uc3Qg
YnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KENGQWxsb2NhdG9yQWxsb2NhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc2l6ZSwgMCkpOwotICAgIEFTU0VSVChidWZmZXIpOwotCi0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIsIHNpemUsIDEpKSB7Ci0gICAg
ICAgIENGQWxsb2NhdG9yRGVhbGxvY2F0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZG9jdW1lbnREYXRhLmNsZWFyKCk7
Ci0gICAgZG9jdW1lbnREYXRhLm1fZGF0YS5hcHBlbmQoYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRo
Qnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLCBzaXplLCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0KSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MDE2ZjQxNzAyZTZjMzU4MTIxZDBlMzFlNTQ3M2FkZjlhOTdmMjJiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFF1aWNrTG9va0RvY3VtZW50RGF0YV9oCi0jZGVmaW5l
IFF1aWNrTG9va0RvY3VtZW50RGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7
Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUXVpY2tM
b29rRG9jdW1lbnREYXRhIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwot
ICAgIENGRGF0YVJlZiBkZWNvZGVkRGF0YSgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0OwotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBj
b25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUXVpY2tMb29rRG9j
dW1lbnREYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFJldGFpblB0cjxDRkRhdGFSZWY+
LCAxPiBtX2RhdGE7Ci19OwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBRdWlj
a0xvb2tEb2N1bWVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJjOTUwMTY5ZDY5
YzVjMDZlODIyY2ZlZTdjOWZlZDRhNWI2NjlhZjcuLmQ5MjRhMTNmOWU1ZjE2Y2QxNTQyMDg0MTk0
N2Q2OWYzM2U5MzZiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE3Myw3ICsxNzMsNiBA
QCBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcAogU2hhcmVkL2lv
cy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tCiBTaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNl
RXZlbnRJT1MubW0KIFNoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbQotU2hhcmVk
L2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwCiBTaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0
aW9uRGF0YS5tbQogU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVzLm1tCiBTaGFyZWQvaW9zL1dl
YklPU0V2ZW50RmFjdG9yeS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxv
YWRlckNsaWVudC5oCmluZGV4IGIyZWE0MWQ5ZTJmMmU4MWUyYzllYjNiODc3OTFmYzNlZjhjM2Yw
ZGIuLmMzNjRhZWY1ZDkwNjgyZTcyNGViMzczM2U5OTk3YWJiZmU4YmQ3MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTM4LDcgKzM4LDYg
QEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotY2xhc3MgUXVpY2tMb29rRG9jdW1lbnREYXRhOwog
Y2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAppbmRleCAzOGNjNzUwY2IyYzQxODFjMDhlMDE2NWRmMzYwZDc0Yzgy
OTdhOTVkLi45NGRhMzJmMDhiZWRkOTU0MTM0NzQ3MGQ1MjJlYjUwNTI1NDI1MzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAg
LTQ5LDEyICs0OSwxMiBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
OwotY2xhc3MgUXVpY2tMb29rRG9jdW1lbnREYXRhOwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1l
UHJveHk7CkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRp
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGEmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRmZGU3Yzk4NjgwMWQ4YzE4
NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uOTc4NTEwNjM0OGRjOTUxNjU4MjI3NTQ0NGFkMDFjNDMy
MmU1NTEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KaW5kZXggOTRhZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVlNjhlMTNlNTJlMDFiMy4u
OWFkYTBkOTI2YWM2ZTE3ZDQ4MjFiZmJlNzQwMzVkN2Q5N2Q1NDY1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtODMsMTAgKzgz
LDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0jaW1wb3J0ICJRdWlja0xvb2tEb2N1bWVudERhdGEu
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC0xMDgzLDcgKzEwNzksNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTpmaWxlTmFt
ZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNr
TG9va0RvY3VtZW50RGF0YSYgZGF0YSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwOTIsNyArMTA4OCw3
IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWU6KE5TRGF0YSAqKWRhdGEuZGVjb2RlZERhdGEoKV07CisgICAgW3N0YXRpY19jYXN0
PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAppbmRleCA3ZWM1YTZiMWIwZGU0N2ZhNjdjMjdhMzg3MWEwNjM3OWE4MjUy
N2ExLi4wYjgwNGZhOWE4Y2ZkNDA1YjU1NzZmNzUzY2QxMGUxYjk2YTYzM2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zNTQs
OSArMzU0LDkgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGYKIH0KIAogI2lmIFVTRShRVUlDS19M
T09LKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQordm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcGFnZS5kaWRS
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZpbGVOYW1lKTsKKyAgICBtX3BhZ2UucmVxdWVzdFBhc3N3b3JkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChmaWxlTmFtZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCiAKQEAgLTQ2OSw4ICs0NjksOCBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RAogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVxdWVz
dFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lPihkZWNvZGVyLCB0aGlzLCAm
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94
eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDYzNGZiNzVlODczOGUxNGU0MjdkOTc4YmM4ZGVm
ZjY0NTEyZjFlZjQuLjBmZTI1ZmE4NWVmYzg2YTcwNjA2MGI1ZDBiYTA0NjQ3ZjdlZTQwY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAt
MTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICB2b2lkIGRp
ZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSk7CisgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDVhOTlkMTM5Mjg1NDcyMjFlNmMzYWRlYTUxNjQ1NmYzZWUzZGE4OGQuLmEzYjU5MDNlMTI5NDBk
ZGJkNTFjZGM0YmM0MTAyYTMzMmRiZTk5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIlNoYXJlU2hlZXRDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTdXNw
ZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUu
aCIKICNpbmNsdWRlICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIgpAQCAtMzI5LDEwICszMzAs
NiBAQCBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7CiBlbnVtIGNsYXNz
IFVuZG9PclJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVpbnQ4X3Q7
CiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLWNsYXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YTsKLSNl
bmRpZgotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5
cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4gRWRpdGluZ1JhbmdlQ2FsbGJhY2s7
CkBAIC0xNTU5LDcgKzE1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwg
T3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qg
VXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICB2
b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAg
dm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVk
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZv
aWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CkBAIC0yMDUxLDggKzIwNDgsOCBAQCBwcml2YXRlOgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
dXRpKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpOwotICAgIHZvaWQgZGlkUmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2YzYyMzA3YjAwZjE1ZTVhOTY1
YjNlZThkOTEyY2Q4YjgzYTQ2OTU3Li41YTI3YWEzZTNhNDNkZDc5OWJjNDExMTJlMDNjZmUzNDMz
Y2JjZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC00NjcsOCArNDY3LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIERpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgdXRpKQotICAgIERpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKFdlYktpdDo6UXVpY2tMb29rRG9j
dW1lbnREYXRhIGRhdGEpCi0gICAgRGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShTdHJpbmcgZmlsZU5hbWUpCisgICAgRGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
IHJlc291cmNlKQorICAgIFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoU3RyaW5nIGZpbGVOYW1lKSAtPiAoU3RyaW5nIHBhc3N3b3JkKSBBc3luYwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwNDJiYjVkMzIxNGZlMDAwMTU1NmY5
YTYxMzI5NTkzY2RmOThiMTRkLi40ZDdmOTI0ODg0ZDQ3MzE2MzhlNTdmYTkxZjNhODRmMTk1ODQ4
MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIK
ICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKKyNpbXBvcnQgIlNo
YXJlYWJsZVJlc291cmNlLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckRh
dGEuaCIKICNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKQEAgLTEyNDksNyArMTI1MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDb25jbHVkZURyb3AoKQogI2VuZGlmCiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKLSAgICAKKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0TG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3Ry
aW5nJiB1dGkpCiB7CiAgICAgLy8gRW5zdXJlIHRoYXQgZmlsZU5hbWUgaXNuJ3QgcmVhbGx5IGEg
cGF0aCBuYW1lCkBAIC0xMjU3LDIxICsxMjU4LDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmls
CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5yZXZlcnNlRmluZCgnLycp
ICsgMSksIHV0aSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBRdWlja0xvb2tEb2N1bWVudERhdGEmIGRh
dGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewot
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hh
cmVkQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoKmJ1ZmZlcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGRpZFJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgZmlsZU5hbWUpOworICAgIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVTaGFyZWQoZmlsZU5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQYXNz
d29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBwYWdlQ2xpZW50KCkucmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQoZmlsZU5hbWUsIFtwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKSwgd2ViUGFn
ZUlEID0gbV93ZWJQYWdlSURdKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQocGFzc3dvcmQpLCB3ZWJQYWdlSUQpOwotICAgIH0pOworICAgIHBhZ2VDbGll
bnQoKS5yZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzMjJkOThkOWU4MTZkYTAyMDUz
YjNhOTQzNTg3YzVlZjc5MmM1MzIuLjM3MDViMWY1NDQ3NWExMjU2YTg5OTk5NDJkMGNhYjUyOTk4
YzgyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTM0Myw3ICsxMzQzLDYgQEAKIAkJQTEwMkE3MDgxRUMwRUVFOTAwRDgxRDgyIC8q
IGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiIGluIENvcHkgUGx1Zy1p
biBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
NUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNS
LnBsdWdpbi5zYiAqLzsgfTsKIAkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmll
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNDZF
OUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovOyB9OwogCQlBMTE1REM3MjE5MUQ4
MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIg
LyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNr
TG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0
YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdl
ckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTNCM0RBMjIw
N0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzQjNEQTEyMDdGMzlERTAwOTBDNThEIC8qIE1vYmls
ZVdpRmlTUEkuaCAqLzsgfTsKIAkJQTEzREM2ODIyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEzREM2ODAyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5oICovOyB9OwpAQCAtNDA3Myw4ICs0MDcyLDYgQEAKIAkJQTEwNDZF
QTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdLUERGVmlldy5tbTsgcGF0aCA9IGlvcy9XS1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MTVEQzZFMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAv
KiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tE
b2N1bWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMTE4QTlFRDE5
MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5oOyBwYXRoID0gaW9zL1F1
aWNrTG9va0RvY3VtZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4
QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS05TRmlsZU1hbmFnZXJFeHRyYXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUYxMTkwOEI4RUEwMEY3Qzky
QiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTEzQjNEQTEyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9iaWxlV2lGaVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjA3Miw4ICs2MDY5LDYgQEAKIAkJCQkyREE5NDQ5NzE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLywKIAkJCQkxQzlFQkE1QjIwODdFNzRFMDAwNTQ0Mjkg
LyogTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbSAqLywKIAkJCQkyREE5NDQ5ODE4ODRFNEYwMDBF
RDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLywKLQkJCQlBMTE4QTlFQzE5MDdB
RDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLywKLQkJCQlBMTE4QTlF
RDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8sCiAJCQkJNDQ1
OTk4NDEyMjgzM0U2MDAwRTYxMzczIC8qIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oICov
LAogCQkJCUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQuaCAqLywKIAkJCQlGNDJENjMzRjIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rp
b25EYXRhLmggKi8sCkBAIC05NzUzLDcgKzk3NDgsNiBAQAogCQkJCTg2RTY3QTI1MTkxMEI5RDEw
MDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzA0OEFF
NjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAv
KiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
NDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiNjM1OGExNzhhYTMwMzJiMjE4MjE0NjM0ODAz
M2ViNDg3YWUxOTU1Li45M2QzYTI0MjYzOTcwZTA2Y2EwMjgwMzFiNTRjMGFhMTQwNmI5ODMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMxLDY4ICsz
MSw2MSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1F1aWNr
TG9vay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIFBhc3N3b3JkQ2Fs
bGJhY2tNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYpPj47Ci1zdGF0aWMgUGFzc3dvcmRDYWxsYmFja01hcCYgcGFzc3dvcmRD
YWxsYmFja3MoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXNzd29yZENhbGxiYWNr
TWFwPiBjYWxsYmFja01hcDsKLSAgICByZXR1cm4gY2FsbGJhY2tNYXAuZ2V0KCk7Ci19Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmll
d0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQorV2ViUHJldmlld0xvYWRlckNsaWVudDo6
V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIHV0aSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIDogbV9maWxlTmFtZSB7IGZpbGVO
YW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KKyAg
ICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiB7CiB9CiAKLVdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkKLXsKLSAgICBwYXNzd29y
ZENhbGxiYWNrcygpLnJlbW92ZShtX3BhZ2VJRCk7Ci19CitXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQor
dm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmIChtX2RhdGEuaXNFbXB0eSgpKQotICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkp
LCBtX3BhZ2VJRCk7CisgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShtX3BhZ2VJRCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CiAK
LSAgICBDRkFycmF5QXBwbHlGdW5jdGlvbihkYXRhQXJyYXksIENGUmFuZ2VNYWtlKDAsIENGQXJy
YXlHZXRDb3VudChkYXRhQXJyYXkpKSwgW10oY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRl
eHQpIHsKLSAgICAgICAgQVNTRVJUKENGR2V0VHlwZUlEKHZhbHVlKSA9PSBDRkRhdGFHZXRUeXBl
SUQoKSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFF1aWNrTG9va0RvY3VtZW50RGF0YSo+KGNvbnRl
eHQpLT5hcHBlbmQoKENGRGF0YVJlZil2YWx1ZSk7Ci0gICAgfSwgJm1fZGF0YSk7ICAgIAorICAg
IGlmIChtX2J1ZmZlci0+aXNFbXB0eSgpKQorICAgICAgICB3ZWJQYWdlLT5kaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUsIG1fdXRpKTsKKworICAg
IG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKG1fZGF0YSksIG1fcGFnZUlEKTsKLSAgICBtX2RhdGEuY2xlYXIoKTsK
KyAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFn
ZUlEKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlBhZ2Ut
PmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdl
dCgpKTsKKyAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+
Y2xlYXIoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFz
c3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBBU1NFUlQoIXBhc3N3b3JkQ2FsbGJhY2tzKCkuY29udGFpbnMobV9wYWdlSUQpKTsK
LSAgICBwYXNzd29yZENhbGxiYWNrcygpLmFkZChtX3BhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShtX2ZpbGVOYW1lKSwgbV9wYWdlSUQpOwotfQorICAgIGF1dG8gd2ViUGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOworICAgIGlmICghd2ViUGFnZSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVQYXNzd29yZChjb25z
dCBTdHJpbmcmIHBhc3N3b3JkLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCi17Ci0g
ICAgQVNTRVJUKHBhc3N3b3JkQ2FsbGJhY2tzKCkuY29udGFpbnMocGFnZUlEKSk7Ci0gICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBwYXNzd29yZENhbGxiYWNrcygpLnRha2UocGFnZUlE
KSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFzc3dvcmQpOwotICAgIGVsc2UKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgIkRpc2NhcmRpbmcgYSBwYXNzd29yZCBmb3Ig
YSBwYWdlIHRoYXQgZGlkIG5vdCByZXF1ZXN0IG9uZSBpbiB0aGlzIHByb2Nlc3MiKTsKKyAgICB3
ZWJQYWdlLT5yZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1f
ZmlsZU5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGRh
M2I1MDhmNTI2OWI4YzYzYmJmMzVlMjIzZTVjYTFlODA5Yzc1YzQuLjA0OTJjZWVjMmY5YjljZDg1
MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAotI2lu
Y2x1ZGUgIlF1aWNrTG9va0RvY3VtZW50RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDExICs0Myw5IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgfldlYlByZXZpZXdMb2FkZXJDbGllbnQoKTsKIAotICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7Ci0KIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01Nyw3ICs1NCw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwog
ICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFF1aWNrTG9v
a0RvY3VtZW50RGF0YSBtX2RhdGE7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3MmJiNTYyNDNmY2FmNTQ0MDlkZDM5MjRkMjZm
OWU3MTJiY2JiZjg5Li4xYmYxZGVhZjI1OGQwNTFlNWQ0MzIzYzk2NWFkODIzMjI0MWE1MTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjM1LDYg
KzEyMzUsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3
SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKTsKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAg
dm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE1
OTUsMTAgKzE2MDEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSNpZiBVU0UoUVVJQ0tf
TE9PSykKLSAgICB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNv
bnN0IFN0cmluZyYpOwotI2VuZGlmCi0KICAgICB2b2lkIHNpbXVsYXRlRGV2aWNlT3JpZW50YXRp
b25DaGFuZ2UoZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKTsKIAogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE5ODAyOGEyMTQ1MzE0ZmVlMWRmMTE1
MjRmZjQ3NGI3YjFlZGZiYjcuLjEwYzBhY2MwNDg0NWNjZDllMzNkNDU5N2UyYWFlNjM1MGUxYzcz
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNTMyLDEwICs1MzIsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZQogICAgIEdhbWVwYWRBY3Rpdml0eShWZWN0b3I8V2ViS2l0OjpHYW1lcGFkRGF0YT4gZ2FtZXBh
ZERhdGFzLCBib29sIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpCiAjZW5kaWYKIAotI2lmIFVT
RShRVUlDS19MT09LKQotICAgIERpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
KFN0cmluZyBwYXNzd29yZCkKLSNlbmRpZgotCiAgICAgRnJhbWVCZWNhbWVSZW1vdGUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpHbG9iYWxGcmFtZUlk
ZW50aWZpZXIgcmVtb3RlRnJhbWVJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2lu
ZG93SWRlbnRpZmllciByZW1vdGVXaW5kb3dJZGVudGlmaWVyKQogCiAgICAgUmVnaXN0ZXJVUkxT
Y2hlbWVIYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFN0cmluZyBzY2hlbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IDY2NzNkNjNiODJhYWNlZjYzOGQ0NjUyNzliMmM5ZDAyYjI5MDEyZjQuLmE1MzkyOGUyMzg2YzY5
NDFiYzQ4MTZiZWU3Nzg2ZjkwNmRjOGNiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Miw2ICs0Miw3IEBACiAjaW1w
b3J0ICJQcmludEluZm8uaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgi
CiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTaGFyZWRNZW1vcnkuaCIK
ICNpbXBvcnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMzgzOSwx
MyArMzg0MCw2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU3RyaW5nRm9yRmluZChjb25zdCBTdHJp
bmcmIGZpbmRTdHJpbmcpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVT
dHJpbmdGb3JGaW5kKGZpbmRTdHJpbmcpKTsKIH0KIAotI2lmIFVTRShRVUlDS19MT09LKQotdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBT
dHJpbmcmIHBhc3N3b3JkKQotewotICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVQYXNzd29yZChwYXNzd29yZCwgbV9pZGVudGlmaWVyKTsKLX0KLSNlbmRpZgotCiBib29sIFdl
YlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNv
bnN0CiB7CiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKQEAgLTQwNzQsNiArNDA2OCw0OSBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0Nv
bnRleHRSZXF1ZXN0IHJlcXVlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogfQog
CisjaWYgVVNFKFFVSUNLX0xPT0spCisKK3ZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIHV0aSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOworfQor
Cit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIEFTU0VSVCghYnVmZmVyLmlz
RW1wdHkoKSk7CisKKyAgICAvLyBGSVhNRTogSW4gc29tZSBjYXNlcywgYnVmZmVyIGNvbmFpbnMg
YSBzaW5nbGUgc2VnbWVudCB0aGF0IHdyYXBzIGFuIGV4aXN0aW5nIFNoYXJlYWJsZVJlc291cmNl
LgorICAgIC8vIElmIHdlIGNvdWxkIGNyZWF0ZSBhIGhhbmRsZSBmcm9tIHRoYXQgZXhpc3Rpbmcg
cmVzb3VyY2UgdGhlbiB3ZSBjb3VsZCBhdm9pZCB0aGlzIGV4dHJhCisgICAgLy8gYWxsb2NhdGlv
biBhbmQgY29weS4KKworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxv
Y2F0ZShidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2hhciogY29uc3Qgc2hhcmVkTWVtb3J5UHRyID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOworICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7
CisgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICBhdXRvIGRh
dGEgPSBidWZmZXIuZ2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICBhdXRvIHJlc3VsdCA9
IG1lbWNweShzaGFyZWRNZW1vcnlQdHIgKyBwb3NpdGlvbiwgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaGFyZWRNZW1v
cnlQdHIgKyBwb3NpdGlvbik7CisgICAgICAgIHBvc2l0aW9uICs9IGRhdGEuc2l6ZSgpOworICAg
IH0KKworICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gc2hh
cmVhYmxlUmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5y
ZWxlYXNlTm9uTnVsbCgpLCAwLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAoIXNoYXJlYWJsZVJl
c291cmNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShoYW5kbGUpKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXF1ZXN0UGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggMzdiODI3M2NlOWRkNzczNjI1OGY4MjZlMmFhYTEwN2JiOTE2YmJk
Yi4uMGUyMjNjMGFhM2Q4YWQ4NTY3ZTE0NWZlZDkzODg0MjM3OGFjOTI1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KQEAgLTIyMDYsOSArMjIwNiwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBy
ZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAg
IFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpIG92ZXJyaWRlCisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4g
KE5TQXJyYXkgKilkYXRhQXJyYXkpCisgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZl
ci5jcmVhdGVOU0RhdGFBcnJheSgpOworICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4g
ZGF0YUFycmF5LmdldCgpKQogICAgICAgICAgICAgICAgIFttX2ZpbGVIYW5kbGUgd3JpdGVEYXRh
OmRhdGFdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxZGM4ODkzZGRjMTQ1MjFkZmIxZjZmNTMzYjQxMjEzODk3YTQ2YzQ0
Li5iYzhlOWIxNDU2MmMzYzVhOWJiYWQyZWFiZmNkZjhjYzNmNGEyMDcxIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTktMTAtMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtRdWlj
ayBMb29rXSBDbGVhbiB1cCBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBBUEkgdGVzdHMgdG8g
Y29tcGFyZSBkYXRhIHJlY2VpdmVkIGluCisgICAgICAgIC1fd2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTogd2l0aCBleHBlY3RlZCBkYXRhLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06Cisg
ICAgICAgIChyZWFkRmlsZSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIGluaXRXaXRo
RXhwZWN0ZWRGaWxlVVJMOnJlc3BvbnNlUG9saWN5Ol0pOgorICAgICAgICAoLVtRdWlja0xvb2tE
ZWxlZ2F0ZSBfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgdmVyaWZ5RG93bmxvYWRdKToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTEwLTI2ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBFbmZvcmNlIHVzZXIgZ2VzdHVyZSBmb3IgZ2V0VXNlck1lZGlh
IGluIGNhc2UgYSBwcmV2aW91cyBnZXRVc2VyTWVkaWEgY2FsbCB3YXMgZGVuaWVkCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4
IDgyNjUxZmE2MzMwNGExOGZlM2NjMTMxNDc1NDYyODhmNGNlMThiMTYuLmIyMDc4N2I5Y2Y5OWVm
MmNiY2QyNGIyNzcyMTlmNDYxZGRiYTNkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC03MCw2ICs3MCw3IEBAIEBpbXBs
ZW1lbnRhdGlvbiBRdWlja0xvb2tEZWxlZ2F0ZSB7CiBAcHJvdGVjdGVkCiAgICAgTlNVSW50ZWdl
ciBfZG93bmxvYWRGaWxlU2l6ZTsKICAgICBOU1VJbnRlZ2VyIF9leHBlY3RlZEZpbGVTaXplOwor
ICAgIFJldGFpblB0cjxOU0RhdGE+IF9leHBlY3RlZEZpbGVEYXRhOwogICAgIFJldGFpblB0cjxO
U1N0cmluZz4gX2V4cGVjdGVkRmlsZU5hbWU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZXhw
ZWN0ZWRGaWxlVHlwZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9leHBlY3RlZE1JTUVUeXBl
OwpAQCAtNzcsNyArNzgsNyBAQCBAcHJvdGVjdGVkCiAgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kgX3Jlc3BvbnNlUG9saWN5OwogfQogCi1zdGF0aWMgdm9pZCByZWFkRmlsZShOU1VSTCAq
ZmlsZVVSTCwgTlNVSW50ZWdlciYgZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVO
YW1lLCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYg
bWltZVR5cGUpCitzdGF0aWMgdm9pZCByZWFkRmlsZShOU1VSTCAqZmlsZVVSTCwgTlNVSW50ZWdl
ciYgZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVOYW1lLCBSZXRhaW5QdHI8TlNT
dHJpbmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYgbWltZVR5cGUsIFJldGFpblB0
cjxOU0RhdGE+JiBmaWxlRGF0YSkKIHsKICAgICBpZiAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
ID0gW05TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgYXR0cmlidXRlc09mSXRlbUF0UGF0aDpm
aWxlVVJMLnBhdGggZXJyb3I6bmlsXSkKICAgICAgICAgZmlsZVNpemUgPSBbYXR0cmlidXRlc1tO
U0ZpbGVTaXplXSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CkBAIC04OSw2ICs5MCw3IEBAIHN0YXRp
YyB2b2lkIHJlYWRGaWxlKE5TVVJMICpmaWxlVVJMLCBOU1VJbnRlZ2VyJiBmaWxlU2l6ZSwgUmV0
YWluUHRyPE5TU3RyaW5nPiYKICAgICAgICAgZmlsZVR5cGUgPSB0eXBlSWRlbnRpZmllcjsKIAog
ICAgIG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChf
X2JyaWRnZSBDRlN0cmluZ1JlZil0eXBlSWRlbnRpZmllciwga1VUVGFnQ2xhc3NNSU1FVHlwZSkp
OworICAgIGZpbGVEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZVVSTF07
CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilm
aWxlVVJMIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25z
ZVBvbGljeQpAQCAtOTYsNyArOTgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFeHBlY3Rl
ZEZpbGVVUkw6KE5TVVJMICopZmlsZVVSTCByZXNwb25zZVBvbGljeTooV0tOYXZpZwogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmVh
ZEZpbGUoZmlsZVVSTCwgX2V4cGVjdGVkRmlsZVNpemUsIF9leHBlY3RlZEZpbGVOYW1lLCBfZXhw
ZWN0ZWRGaWxlVHlwZSwgX2V4cGVjdGVkTUlNRVR5cGUpOworICAgIHJlYWRGaWxlKGZpbGVVUkws
IF9leHBlY3RlZEZpbGVTaXplLCBfZXhwZWN0ZWRGaWxlTmFtZSwgX2V4cGVjdGVkRmlsZVR5cGUs
IF9leHBlY3RlZE1JTUVUeXBlLCBfZXhwZWN0ZWRGaWxlRGF0YSk7CiAKICAgICBfcmVzcG9uc2VQ
b2xpY3kgPSByZXNwb25zZVBvbGljeTsKICAgICByZXR1cm4gc2VsZjsKQEAgLTEzOSw2ICsxNDEs
NyBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZToo
TlNEYXRhICopZG9jdW1lbnREYXRhCiB7CiAgICAgRVhQRUNUX0VRKF9leHBlY3RlZEZpbGVTaXpl
LCBkb2N1bWVudERhdGEubGVuZ3RoKTsKKyAgICBFWFBFQ1RfVFJVRShbX2V4cGVjdGVkRmlsZURh
dGEgaXNFcXVhbFRvRGF0YTpkb2N1bWVudERhdGFdKTsKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZp
bmlzaFF1aWNrTG9va0xvYWQpOwogICAgIEVYUEVDVF9UUlVFKF9kaWRTdGFydFF1aWNrTG9va0xv
YWQpOwogICAgIF9kaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gWUVTOwpAQCAtMjE5LDEyICsyMjIs
MTQgQEAgLSAodm9pZCl2ZXJpZnlEb3dubG9hZAogICAgIEVYUEVDVF9UUlVFKFtOU0ZpbGVNYW5h
Z2VyLmRlZmF1bHRNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W19kb3dubG9hZERlc3RpbmF0aW9u
VVJMIHBhdGhdXSk7CiAKICAgICBOU1VJbnRlZ2VyIGRvd25sb2FkRmlsZVNpemU7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gZG93bmxvYWRGaWxlRGF0YTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IGRvd25sb2FkRmlsZU5hbWU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBkb3dubG9hZEZpbGVU
eXBlOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gZG93bmxvYWRNSU1FVHlwZTsKLSAgICByZWFk
RmlsZShfZG93bmxvYWREZXN0aW5hdGlvblVSTC5nZXQoKSwgZG93bmxvYWRGaWxlU2l6ZSwgZG93
bmxvYWRGaWxlTmFtZSwgZG93bmxvYWRGaWxlVHlwZSwgZG93bmxvYWRNSU1FVHlwZSk7CisgICAg
cmVhZEZpbGUoX2Rvd25sb2FkRGVzdGluYXRpb25VUkwuZ2V0KCksIGRvd25sb2FkRmlsZVNpemUs
IGRvd25sb2FkRmlsZU5hbWUsIGRvd25sb2FkRmlsZVR5cGUsIGRvd25sb2FkTUlNRVR5cGUsIGRv
d25sb2FkRmlsZURhdGEpOwogCiAgICAgRVhQRUNUX0VRKF9leHBlY3RlZEZpbGVTaXplLCBkb3du
bG9hZEZpbGVTaXplKTsKKyAgICBFWFBFQ1RfVFJVRShbX2V4cGVjdGVkRmlsZURhdGEgaXNFcXVh
bFRvRGF0YTpkb3dubG9hZEZpbGVEYXRhLmdldCgpXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKF9l
eHBlY3RlZEZpbGVOYW1lLmdldCgpLCBkb3dubG9hZEZpbGVOYW1lLmdldCgpKTsKICAgICBFWFBF
Q1RfV0tfU1RSRVEoX2V4cGVjdGVkRmlsZVR5cGUuZ2V0KCksIGRvd25sb2FkRmlsZVR5cGUuZ2V0
KCkpOwogICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRNSU1FVHlwZS5nZXQoKSwgZG93bmxv
YWRNSU1FVHlwZS5nZXQoKSk7CkBAIC00NjUsMTAgKzQ3MCwxMSBAQCBURVNUKFF1aWNrTG9vaywg
TGVnYWN5UXVpY2tMb29rQ29udGVudCkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKICAgICBOU1VJ
bnRlZ2VyIGV4cGVjdGVkRmlsZVNpemU7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZXhwZWN0ZWRG
aWxlRGF0YTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVkRmlsZU5hbWU7CiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVUeXBlOwogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gZXhwZWN0ZWRNSU1FVHlwZTsKLSAgICByZWFkRmlsZShwYWdlc0RvY3VtZW50VVJMLCBl
eHBlY3RlZEZpbGVTaXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVUeXBlLCBleHBl
Y3RlZE1JTUVUeXBlKTsKKyAgICByZWFkRmlsZShwYWdlc0RvY3VtZW50VVJMLCBleHBlY3RlZEZp
bGVTaXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVUeXBlLCBleHBlY3RlZE1JTUVU
eXBlLCBleHBlY3RlZEZpbGVEYXRhKTsKIAogICAgIE5TRGljdGlvbmFyeSAqcXVpY2tMb29rQ29u
dGVudCA9IG1haW5GcmFtZS5kYXRhU291cmNlLl9xdWlja0xvb2tDb250ZW50OwogICAgIE5TU3Ry
aW5nICpmaWxlUGF0aCA9IHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rRmlsZU5hbWVLZXld
OwpAQCAtNDc4LDYgKzQ4NCw4IEBAIFRFU1QoUXVpY2tMb29rLCBMZWdhY3lRdWlja0xvb2tDb250
ZW50KQogCiAgICAgTlNEaWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2Vy
LmRlZmF1bHRNYW5hZ2VyIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmls
XTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRGaWxlU2l6ZSwgW2ZpbGVBdHRyaWJ1dGVzW05TRmls
ZVNpemVdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgCisgICAgRVhQRUNUX1RSVUUoW2V4
cGVjdGVkRmlsZURhdGEgaXNFcXVhbFRvRGF0YTpbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6ZmlsZVBhdGhdXSk7CiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbbWFpbkZyYW1lIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJhYm91dDpibGFuayJdXV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382230</attachid>
            <date>2019-10-29 14:48:30 -0700</date>
            <delta_ts>2019-10-29 16:51:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203472-20191029144829.patch</filename>
            <type>text/plain</type>
            <size>53770</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZThhMWVhNjdkZGIz
ODM0YzNmNzZjNTJlN2RmOTNjYjEzYmEwOS4uYjNjZWE0ZTliN2E4NDYxMDllNTdjOWJjNmQ3MmZi
NjFhZDkyNDAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUXVpY2sgTG9va10gQ2xlYW4g
dXAgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKwogMjAxOS0xMC0yNyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRG8gbm90IGV4
cGFuZCBydW5zIHdpdGggY29sbGFwc2VkIHRyYWlsaW5nIHdoaXRlc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NWJjZjQ3MmVmODYwM2UxODNjOWE1N2NlOTIyNTZmYWJlZWJjMTA0My4uNjU2OGZhYzg1NjA0NDBk
NTZkZDkzNDdiNDhjYjU4YmY0NGQ2MzJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAx
OS0xMC0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1F1aWNr
IExvb2tdIENsZWFuIHVwIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBRdWlja0xvb2tEb2N1
bWVudERhdGEgd2l0aCBTaGFyZWFibGVSZXNvdXJjZS4KKworICAgICAgICBSZW1vdmVkIG1lc3Nh
Z2VzIFdlYlBhZ2VQcm94eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZSBhbmQKKyAgICAgICAgV2ViUGFnZTo6RGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnQsIHJlcGxhY2luZyB0aGVtIHdpdGggYXN5bmMgbWVzc2FnZQorICAgICAg
ICBXZWJQYWdlUHJveHk6OlJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVxdWVzdFBhc3N3b3JkKToKKyAgICAgICAgKFdlYktpdDo6cGFzc3dvcmRDYWxsYmFja3Mp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2Vi
UHJldmlld0xvYWRlckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KTogRGVsZXRlZC4K
KwogMjAxOS0xMC0yNiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5mb3JjZSB1c2VyIGdlc3R1cmUgZm9yIGdldFVzZXJNZWRpYSBpbiBjYXNlIGEgcHJldmlv
dXMgZ2V0VXNlck1lZGlhIGNhbGwgd2FzIGRlbmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDUwMjE2NGQ1MzYzYjEzNGJlMmQ4ODM0MzVlYmE2NTE4N2ExMWUwMmMuLmVjNmU5NDcy
NDkyYzVjNGE4NDg1NDhmZDFlNjM4ZmFkMDIzZTRlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1F1aWNrIExvb2tdIENsZWFuIHVwIExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDM0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQpOgorCiAyMDE5
LTEwLTI2ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBQdXQgT2Zm
c2NyZWVuQ2FudmFzIGJlaGluZCBhIGJ1aWxkIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBjN2U3YzhiOTFmYjU0Y2Y4ZTE5
MDE3ZTdjMDhiYzU3YzU0ZWE5MDkwLi42YzlhOWEyMWEwYzYzZjFjOGE2OTUxNmJlOWJlMDgyZWM0
MjdlM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29y
aywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIs
IGJ1ZmZlci5zaXplKCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsKICAg
ICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhQXJyYXkoKF9fYnJpZGdlIENGQXJyYXlSZWYpYnVmZmVyLmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBi
YjIxMzc4ODgyZjcwMzRjNDlkMjE3OGVjNmMyZmEzNTgyN2U5ZWE0Li5iYzRkYWFmYmYyMWExNWMw
ZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CkBAIC0zMSwxMCArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFy
ZWRCdWZmZXI7CisKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+TGVnYWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjYwMjdhNWVjNGM3ODM0NWRiN2Q3NTI4MmE4YWYwMzBiNzUxZGYxNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8U2hhcmVk
TWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3sKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IGFsbG9jYXRlKGJ1ZmZlci5zaXplKCkpOworICAgIGlm
ICghc2hhcmVkTWVtb3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNoYXIqIGNv
bnN0IHNoYXJlZE1lbW9yeVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNoYXJlZE1lbW9y
eS0+ZGF0YSgpKTsKKyAgICBzaXplX3QgcG9zaXRpb24gPSAwOworICAgIHdoaWxlIChidWZmZXIu
c2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLmdldFNvbWVE
YXRhKHBvc2l0aW9uKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtZW1jcHkoc2hhcmVkTWVtb3J5
UHRyICsgcG9zaXRpb24sIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2hhcmVkTWVtb3J5UHRyICsgcG9zaXRpb24pOwor
ICAgICAgICBwb3NpdGlvbiArPSBkYXRhLnNpemUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hh
cmVkTWVtb3J5OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5oCmluZGV4IGE4MWIwN2U2YTA4YTYzMjdjZjBhNzkwOTJlNjA0MTEzYjI5
ZjYwY2QuLjA2ZTI0ODM0MTFkZTA1ODU2MTZlODY4NjQ1OTc2MDBhOTdkYWZjMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsMTAgQEAgY2xhc3MgRGVj
b2RlcjsKIGNsYXNzIEVuY29kZXI7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKK30KKwogI2lmIE9TKERBUldJTikKIG5hbWVzcGFjZSBXVEYgewogY2xhc3Mg
TWFjaFNlbmRSaWdodDsKQEAgLTk3LDYgKzEwMSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwogICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBjcmVhdGUodm9pZCosIHNpemVfdCwgUHJvdGVjdGlvbik7CisgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYs
IFByb3RlY3Rpb24pOwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3Jp
cHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvUXVpY2tMb29rRG9j
dW1lbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVu
dERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmJkYTU5NzUxNWY0NmI2
ZWNkNTA0ODBkNmU0OTg4MGMxODRkYjM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVu
dERhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKLQot
I2lmIFVTRShRVUlDS19MT09LKQotCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVu
Y29kZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUXVpY2tMb29rRG9jdW1lbnRE
YXRhOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCi17Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRhKTsK
LX0KLQotQ0ZEYXRhUmVmIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlZERhdGEoKSBjb25z
dAotewotICAgIEFTU0VSVChtX2RhdGEuc2l6ZSgpIDw9IDEpOwotICAgIGlmIChtX2RhdGEuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9kYXRhWzBdLmdl
dCgpOwotfQotCi1ib29sIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6aXNFbXB0eSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fZGF0YS5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgUXVpY2tMb29rRG9jdW1l
bnREYXRhOjpjbGVhcigpCi17Ci0gICAgbV9kYXRhLmNsZWFyKCk7Ci19Ci0KLXZvaWQgUXVpY2tM
b29rRG9jdW1lbnREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewot
ICAgIHVpbnQ2NF90IHNpemUgPSAwOwotICAgIGZvciAoY29uc3QgYXV0byYgZGF0YSA6IG1fZGF0
YSkKLSAgICAgICAgc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7Ci0gICAgZW5j
b2RlciA8PCBzaXplOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBkYXRhIDogbV9kYXRhKQotICAg
ICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShDRkRhdGFHZXRCeXRlUHRyKGRhdGEu
Z2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSksIDEpOwotfQotCi1ib29sIFF1aWNr
TG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUXVpY2tMb29r
RG9jdW1lbnREYXRhJiBkb2N1bWVudERhdGEpCi17Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIXNpemUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdWludDhfdCogY29uc3QgYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KENGQWxsb2NhdG9yQWxsb2NhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgc2l6ZSwgMCkpOwotICAgIEFTU0VSVChidWZmZXIpOwotCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIsIHNpemUsIDEpKSB7Ci0gICAgICAg
IENGQWxsb2NhdG9yRGVhbGxvY2F0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZG9jdW1lbnREYXRhLmNsZWFyKCk7Ci0g
ICAgZG9jdW1lbnREYXRhLm1fZGF0YS5hcHBlbmQoYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLCBzaXplLCBrQ0ZBbGxvY2F0b3JE
ZWZhdWx0KSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3MDE2ZjQxNzAyZTZjMzU4MTIxZDBlMzFlNTQ3M2FkZjlhOTdmMjJiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9RdWlja0xvb2tEb2N1bWVudERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFF1aWNrTG9va0RvY3VtZW50RGF0YV9oCi0jZGVmaW5lIFF1
aWNrTG9va0RvY3VtZW50RGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1j
bGFzcyBFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUXVpY2tMb29r
RG9jdW1lbnREYXRhIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwotICAg
IENGRGF0YVJlZiBkZWNvZGVkRGF0YSgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
OwotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUXVpY2tMb29rRG9jdW1l
bnREYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFJldGFpblB0cjxDRkRhdGFSZWY+LCAx
PiBtX2RhdGE7Ci19OwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBRdWlja0xv
b2tEb2N1bWVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNDk4ZTkxYjAwNzBmYjk2ZTBlYTk0OWQy
ZWE5ZjJkZmEwZTE4Y2Q5ZS4uOWJkNTA4MjNiY2NjOTM2MzI4MTg3NzU1NjQ4YjhkNjE4MjdmMjA5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC05Niw2ICs5Niw3IEBAIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAogLy8gVE9ETzogV2Ugc2hvdWxkIHVuaWZ5IHRoZXNlIGZp
bGVzIG9uY2UgR1RLJ3MgUGx1Z2luUHJvY2VzczIgaXMgcmVtb3ZlZC4KIFBsYXRmb3JtL0xvZ2dp
bmcuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vTW9kdWxlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiAKIC8vIFRPRE86IFdlIHNob3VsZCB1bmlmeSB0
aGVzZSBmaWxlcyBvbmNlIEdUSydzIFBsdWdpblByb2Nlc3MyIGlzIHJlbW92ZWQuCiBQbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDJjOTUwMTY5ZDY5YzVjMDZlODIyY2ZlZTdjOWZlZDRhNWI2NjlhZjcuLmQ5MjRhMTNmOWU1
ZjE2Y2QxNTQyMDg0MTk0N2Q2OWYzM2U5MzZiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTE3Myw3ICsxNzMsNiBAQCBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
LmNwcAogU2hhcmVkL2lvcy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tCiBTaGFyZWQvaW9z
L05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KIFNoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVu
dElPUy5tbQotU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwCiBTaGFyZWQvaW9z
L1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbQogU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVzLm1t
CiBTaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IGIyZWE0MWQ5ZTJmMmU4MWUyYzllYjNi
ODc3OTFmYzNlZjhjM2YwZGIuLmMzNjRhZWY1ZDkwNjgyZTcyNGViMzczM2U5OTk3YWJiZmU4YmQ3
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgK
QEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotY2xhc3MgUXVpY2tMb29r
RG9jdW1lbnREYXRhOwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZy
YW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCAzOGNjNzUwY2IyYzQxODFjMDhl
MDE2NWRmMzYwZDc0YzgyOTdhOTVkLi45NGRhMzJmMDhiZWRkOTU0MTM0NzQ3MGQ1MjJlYjUwNTI1
NDI1MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKQEAgLTQ5LDEyICs0OSwxMiBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVz
dWx0czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5OwotY2xhc3MgUXVpY2tMb29rRG9jdW1lbnREYXRhOwogY2xhc3MgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsK
IGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVu
dERhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6
OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRm
ZGU3Yzk4NjgwMWQ4YzE4NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uOTc4NTEwNjM0OGRjOTUxNjU4
MjI3NTQ0NGFkMDFjNDMyMmU1NTEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTRhZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVl
NjhlMTNlNTJlMDFiMy4uOWFkYTBkOTI2YWM2ZTE3ZDQ4MjFiZmJlNzQwMzVkN2Q5N2Q1NDY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQpAQCAtODMsMTAgKzgzLDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2Vydmlj
ZXNTUEkuaD4KICNlbmRpZgogCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0jaW1wb3J0ICJRdWlja0xv
b2tEb2N1bWVudERhdGEuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDgzLDcgKzEwNzksNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhG
aWxlTmFtZTpmaWxlTmFtZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYgZGF0YSkKK3ZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAg
LTEwOTIsNyArMTA4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZp
Z2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRhdGEuZGVjb2RlZERhdGEoKV07Cisg
ICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA3ZWM1YTZiMWIwZGU0N2ZhNjdjMjdh
Mzg3MWEwNjM3OWE4MjUyN2ExLi4wYjgwNGZhOWE4Y2ZkNDA1YjU1NzZmNzUzY2QxMGUxYjk2YTYz
M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCkBAIC0zNTQsOSArMzU0LDkgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGYKIH0KIAog
I2lmIFVTRShRVUlDS19MT09LKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVxdWVz
dFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIG1fcGFnZS5kaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZpbGVOYW1lKTsKKyAgICBtX3BhZ2UucmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChmaWxlTmFt
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCiAKQEAgLTQ2OSw4ICs0
NjksOCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogICAgIH0KIAogI2lmIFVTRShRVUlDS19M
T09LKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lPihk
ZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92
aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDYzNGZiNzVlODczOGUx
NGU0MjdkOTc4YmM4ZGVmZjY0NTEyZjFlZjQuLjBmZTI1ZmE4NWVmYzg2YTcwNjA2MGI1ZDBiYTA0
NjQ3ZjdlZTQwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9P
SykKLSAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDVhOTlkMTM5Mjg1NDcyMjFlNmMzYWRlYTUxNjQ1NmYzZWUzZGE4OGQu
LmEzYjU5MDNlMTI5NDBkZGJkNTFjZGM0YmM0MTAyYTMzMmRiZTk5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlU2hlZXRDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUuaCIKICNpbmNsdWRlICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIgpA
QCAtMzI5LDEwICszMzAsNiBAQCBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQ7CiBlbnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50
TW9kZSA6IHVpbnQ4X3Q7CiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLWNsYXNzIFF1aWNrTG9va0Rv
Y3VtZW50RGF0YTsKLSNlbmRpZgotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEq
PiBEYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWdu
ZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4gRWRpdGlu
Z1JhbmdlQ2FsbGJhY2s7CkBAIC0xNTU5LDcgKzE1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZy
YW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKLSAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSk7CisgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lU2hhcmVkKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CkBAIC0yMDUxLDggKzIwNDgs
OCBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpOwotICAgIHZv
aWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmKTsKKyAg
ICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2YzYy
MzA3YjAwZjE1ZTVhOTY1YjNlZThkOTEyY2Q4YjgzYTQ2OTU3Li41YTI3YWEzZTNhNDNkZDc5OWJj
NDExMTJlMDNjZmUzNDMzY2JjZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00NjcsOCArNDY3LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIERpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgdXRp
KQotICAgIERpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKFdlYktp
dDo6UXVpY2tMb29rRG9jdW1lbnREYXRhIGRhdGEpCi0gICAgRGlkUmVxdWVzdFBhc3N3b3JkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShTdHJpbmcgZmlsZU5hbWUpCisgICAgRGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoV2ViS2l0OjpTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlKQorICAgIFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoU3RyaW5nIGZpbGVOYW1lKSAtPiAoU3RyaW5nIHBhc3N3b3Jk
KSBBc3luYwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwNDJiYjVk
MzIxNGZlMDAwMTU1NmY5YTYxMzI5NTkzY2RmOThiMTRkLi40ZDdmOTI0ODg0ZDQ3MzE2MzhlNTdm
YTkxZjNhODRmMTk1ODQ4MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
aCIKKyNpbXBvcnQgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgog
I2ltcG9ydCAiVXNlckRhdGEuaCIKICNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKQEAgLTEyNDks
NyArMTI1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb25jbHVkZURyb3AoKQogI2VuZGlm
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICAKKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpCiB7CiAgICAgLy8gRW5zdXJlIHRoYXQgZmlsZU5hbWUg
aXNuJ3QgcmVhbGx5IGEgcGF0aCBuYW1lCkBAIC0xMjU3LDIxICsxMjU4LDIzIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsCiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5y
ZXZlcnNlRmluZCgnLycpICsgMSksIHV0aSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBRdWlja0xvb2tE
b2N1bWVudERhdGEmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSYgaGFuZGxlKQogewotICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoKmJ1ZmZlcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZmlsZU5hbWUpOworICAgIHJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoZmlsZU5hbWUsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNz
d29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwYWdlQ2xpZW50KCkucmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoZmlsZU5hbWUsIFtwcm9jZXNzID0gV1RGTW92ZShw
cm9jZXNzKSwgd2ViUGFnZUlEID0gbV93ZWJQYWdlSURdKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQp
IHsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQocGFzc3dvcmQpLCB3ZWJQYWdlSUQpOwotICAgIH0p
OworICAgIHBhZ2VDbGllbnQoKS5yZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChm
aWxlTmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzMjJk
OThkOWU4MTZkYTAyMDUzYjNhOTQzNTg3YzVlZjc5MmM1MzIuLjMzNjE5ZTIwZTlkZmYwN2ViNmIy
ZjVjOGI2YzRkM2I3NmQ5NzViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM0Myw3ICsxMzQzLDYgQEAKIAkJQTEwMkE3MDgxRUMw
RUVFOTAwRDgxRDgyIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNi
IGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5G
bGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLzsgfTsKIAkJQTEwNDZFQTEyMDc5MjYzMTAwRjBD
NUQ4IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovOyB9Owog
CQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5
MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTExOEE5RUYxOTA3QUQ2RjAw
RjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNr
TG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyog
X1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFn
ZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMTNCM0RBMjIwN0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzQjNEQTEyMDdGMzlERTAw
OTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCAqLzsgfTsKIAkJQTEzREM2ODIyMDdBQTZCMjAwNjZF
RjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzREM2ODAyMDdBQTZCMjAwNjZFRjcyIC8q
IFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oICovOyB9OwpAQCAtMTM2MCw2ICsxMzU5
LDcgQEAKIAkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1NzE4RENFOUZB
MDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMUE0RkU1QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxv
YWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFBNEZFNTkxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLzsg
fTsKIAkJQTFBNEZFNjExOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTYwMThE
RDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFBREFGQjYyMzY4RTZBODAwOUNCNzc2
IC8qIFNoYXJlZE1lbW9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUFEQUZCNTIzNjhFNEI4MDA5Q0I3NzYgLyogU2hhcmVkTWVtb3J5LmNwcCAq
LzsgfTsKIAkJQTFDNTEyQzkxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUx
MkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi87IH07CiAJ
CUExREY2MzEzMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjYzMTExOEUwQjdDODAwM0Ez
RTJBIC8qIERvd25sb2FkQ2xpZW50LmggKi87IH07CiAJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZB
NiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUU2ODg2RjFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oICov
OyB9OwpAQCAtMTczNCw2ICsxNzM0LDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5hcHBsZS5j
b21waWxlcnMucHJveHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJCQlmaWxl
VHlwZSA9IHBhdHRlcm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJCWlzRWRp
dGFibGUgPSAxOwogCQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBVVF9ESVIp
LyQoSU5QVVRfRklMRV9OQU1FKSIsCkBAIC00MDczLDggKzQwNzUsNiBAQAogCQlBMTA0NkVBMDIw
NzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQ
REZWaWV3Lm1tOyBwYXRoID0gaW9zL1dLUERGVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNURD
NkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0gaW9zL1F1aWNrTG9va0RvY3Vt
ZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMThBOUVEMTkwN0FE
NkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7IHBhdGggPSBpb3MvUXVpY2tM
b29rRG9jdW1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUYw
MTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8q
IF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTNCM0RBMTIwN0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2JpbGVXaUZpU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTAy
LDYgKzQxMDIsNyBAQAogCQlBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tEb3dubG9hZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFBNEZFNTkxOERDRTlGQTAwQjVFQThB
IC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQURBRkI1MjM2OEU0QjgwMDlDQjc3NiAvKiBTaGFyZWRN
ZW1vcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkTWVtb3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFCODlCOTIyMjFFMDIzMzAwRUI0Q0VBIC8qIFNES1Zhcmlh
bnQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU0RLVmFyaWFudC54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFCOUNBMzgyMjQ2RTU0QTAw
M0Q2RENBIC8qIFdlYlBheW1lbnRDb29yZGluYXRvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwOyBwYXRoID0gaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA3Miw4ICs2MDczLDYgQEAKIAkJCQkyREE5
NDQ5NzE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLywK
IAkJCQkxQzlFQkE1QjIwODdFNzRFMDAwNTQ0MjkgLyogTmF0aXZlV2ViTW91c2VFdmVudElPUy5t
bSAqLywKIAkJCQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVu
dElPUy5tbSAqLywKLQkJCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9j
dW1lbnREYXRhLmNwcCAqLywKLQkJCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tM
b29rRG9jdW1lbnREYXRhLmggKi8sCiAJCQkJNDQ1OTk4NDEyMjgzM0U2MDAwRTYxMzczIC8qIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oICovLAogCQkJCUY0MEQxQjY4MjIwQkRDMEYwMEI0
OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAqLywKIAkJCQlGNDJENjMzRjIyQTBF
RkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggKi8sCkBAIC04NDI5LDYgKzg0
MjgsNyBAQAogCQkJCTBGRENEN0Y2MUQ0N0U5MkEwMDlGMDhCQyAvKiBMb2dJbml0aWFsaXphdGlv
bi5oICovLAogCQkJCUMwRTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICovLAog
CQkJCUMwRTNBQTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLywKKwkJCQlBMUFEQUZC
NTIzNjhFNEI4MDA5Q0I3NzYgLyogU2hhcmVkTWVtb3J5LmNwcCAqLywKIAkJCQkxQTI0QkVEMzEy
MDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFBs
YXRmb3JtOwpAQCAtOTc1Myw3ICs5NzUzLDYgQEAKIAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRB
QjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNB
NDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBMTE4QTlFRjE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnRE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVk
aXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2
RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTEzNTUsNiArMTEzNTQsNyBAQAog
CQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3
MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTFBREFGQjYyMzY4RTZBODAwOUNCNzc2IC8qIFNoYXJlZE1lbW9yeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERF
RDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM2OEVFREUyMzAzQTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5h
Z2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYjYzNThhMTc4YWEzMDMyYjIxODIxNDYz
NDgwMzNlYjQ4N2FlMTk1NS4uOTNkM2EyNDI2Mzk3MGUwNmNhMDI4MDMxYjU0YzBhYTE0MDZiOTgz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC0zMSw2
OCArMzEsNjEgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9R
dWlja0xvb2suaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi11c2luZyBQYXNzd29y
ZENhbGxiYWNrTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4+Owotc3RhdGljIFBhc3N3b3JkQ2FsbGJhY2tNYXAmIHBhc3N3
b3JkQ2FsbGJhY2tzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGFzc3dvcmRDYWxs
YmFja01hcD4gY2FsbGJhY2tNYXA7Ci0gICAgcmV0dXJuIGNhbGxiYWNrTWFwLmdldCgpOwotfQor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlBy
ZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK1dlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGksIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6IG1fZmlsZU5hbWUgeyBm
aWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9
CisgICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogewogfQogCi1XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpCi17Ci0gICAgcGFz
c3dvcmRDYWxsYmFja3MoKS5yZW1vdmUobV9wYWdlSUQpOwotfQorV2ViUHJldmlld0xvYWRlckNs
aWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJh
eSkKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBpZiAobV9kYXRhLmlzRW1wdHkoKSkKLSAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUsIG1f
dXRpKSwgbV9wYWdlSUQpOworICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2UobV9wYWdlSUQpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgQ0ZBcnJheUFwcGx5RnVuY3Rpb24oZGF0YUFycmF5LCBDRlJhbmdlTWFrZSgwLCBD
RkFycmF5R2V0Q291bnQoZGF0YUFycmF5KSksIFtdKGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBj
b250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChDRkdldFR5cGVJRCh2YWx1ZSkgPT0gQ0ZEYXRhR2V0
VHlwZUlEKCkpOwotICAgICAgICBzdGF0aWNfY2FzdDxRdWlja0xvb2tEb2N1bWVudERhdGEqPihj
b250ZXh0KS0+YXBwZW5kKChDRkRhdGFSZWYpdmFsdWUpOwotICAgIH0sICZtX2RhdGEpOyAgICAK
KyAgICBpZiAobV9idWZmZXItPmlzRW1wdHkoKSkKKyAgICAgICAgd2ViUGFnZS0+ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBtX3V0aSk7CisK
KyAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShtX2RhdGEpLCBtX3BhZ2VJRCk7Ci0gICAgbV9kYXRhLmNsZWFy
KCk7CisgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZSht
X3BhZ2VJRCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQ
YWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZl
ci5nZXQoKSk7CisgICAgbV9idWZmZXItPmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9kYXRhLmNsZWFyKCk7CisgICAgbV9idWZm
ZXItPmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVz
dFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgQVNTRVJUKCFwYXNzd29yZENhbGxiYWNrcygpLmNvbnRhaW5zKG1fcGFnZUlE
KSk7Ci0gICAgcGFzc3dvcmRDYWxsYmFja3MoKS5hZGQobV9wYWdlSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUobV9maWxlTmFtZSksIG1fcGFnZUlEKTsKLX0KKyAgICBhdXRvIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKKyAgICBpZiAoIXdlYlBh
Z2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQo
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQot
ewotICAgIEFTU0VSVChwYXNzd29yZENhbGxiYWNrcygpLmNvbnRhaW5zKHBhZ2VJRCkpOwotICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gcGFzc3dvcmRDYWxsYmFja3MoKS50YWtlKHBh
Z2VJRCkpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBhc3N3b3JkKTsKLSAgICBlbHNlCi0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJEaXNjYXJkaW5nIGEgcGFzc3dvcmQg
Zm9yIGEgcGFnZSB0aGF0IGRpZCBub3QgcmVxdWVzdCBvbmUgaW4gdGhpcyBwcm9jZXNzIik7Cisg
ICAgd2ViUGFnZS0+cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShtX2ZpbGVOYW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRl
eCBkYTNiNTA4ZjUyNjliOGM2M2JiZjM1ZTIyM2U1Y2ExZTgwOWM3NWM0Li4wNDkyY2VlYzJmOWI5
Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAK
LSNpbmNsdWRlICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCwxMSArNDMsOSBA
QCBwdWJsaWM6CiAgICAgfQogICAgIH5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCk7CiAKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwotCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTcsNyArNTQsNyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0
aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBRdWlj
a0xvb2tEb2N1bWVudERhdGEgbV9kYXRhOworICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzJiYjU2MjQzZmNhZjU0NDA5ZGQzOTI0
ZDI2ZjllNzEyYmNiYmY4OS4uMWJmMWRlYWYyNThkMDUxZTVkNDMyM2M5NjVhZDgyMzIyNDFhNTEx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTIz
NSw2ICsxMjM1LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50Jik7
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2lmIFVTRShRVUlDS19MT09LKQor
ICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBA
IC0xNTk1LDEwICsxNjAxLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuUGx1Z2luSGFuZGxl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCi0jaWYgVVNFKFFV
SUNLX0xPT0spCi0gICAgdm9pZCBkaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dChjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgotCiAgICAgdm9pZCBzaW11bGF0ZURldmljZU9yaWVu
dGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSk7CiAK
ICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxOTgwMjhhMjE0NTMxNGZlZTFk
ZjExNTI0ZmY0NzRiN2IxZWRmYmI3Li4xMGMwYWNjMDQ4NDVjY2Q5ZTMzZDQ1OTdlMmFhZTYzNTBl
MWM3MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTUzMiwxMCArNTMyLDYgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBHYW1lcGFkQWN0aXZpdHkoVmVjdG9yPFdlYktpdDo6R2FtZXBhZERhdGE+IGdh
bWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogI2VuZGlmCiAKLSNp
ZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBEaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudChTdHJpbmcgcGFzc3dvcmQpCi0jZW5kaWYKLQogICAgIEZyYW1lQmVjYW1lUmVtb3RlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsRnJh
bWVJZGVudGlmaWVyIHJlbW90ZUZyYW1lSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Okdsb2Jh
bFdpbmRvd0lkZW50aWZpZXIgcmVtb3RlV2luZG93SWRlbnRpZmllcikKIAogICAgIFJlZ2lzdGVy
VVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyLCBTdHJpbmcgc2NoZW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCA2NjczZDYzYjgyYWFjZWY2MzhkNDY1Mjc5YjJjOWQwMmIyOTAxMmY0Li5lZWE3NzhmZDBl
NTAzNzAxOWRlNDQ2NDQ1YjFjZDFhY2ZlOGNlNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDIsNiArNDIsNyBAQAog
I2ltcG9ydCAiUHJpbnRJbmZvLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2hhcmVkTWVtb3J5
LmgiCiAjaW1wb3J0ICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIKICNpbXBvcnQgIlRl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTM4
MzksMTMgKzM4NDAsNiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVN0cmluZ0ZvckZpbmQoY29uc3Qg
U3RyaW5nJiBmaW5kU3RyaW5nKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VXBk
YXRlU3RyaW5nRm9yRmluZChmaW5kU3RyaW5nKSk7CiB9CiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykK
LXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlUGFzc3dvcmQocGFzc3dvcmQsIG1faWRlbnRpZmllcik7Ci19Ci0jZW5kaWYKLQogYm9v
bCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmco
KSBjb25zdAogewogI2lmIFBMQVRGT1JNKFdBVENIT1MpCkBAIC00MDc0LDYgKzQwNjgsNDAgQEAg
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsK
IH0KIAorI2lmIFVTRShRVUlDS19MT09LKQorCit2b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyaW5nJiB1dGkpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1dGkpKTsK
K30KKwordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIWJ1ZmZl
ci5pc0VtcHR5KCkpOworCisgICAgLy8gRklYTUU6IEluIHNvbWUgY2FzZXMsIGJ1ZmZlciBjb25h
aW5zIGEgc2luZ2xlIHNlZ21lbnQgdGhhdCB3cmFwcyBhbiBleGlzdGluZyBTaGFyZWFibGVSZXNv
dXJjZS4KKyAgICAvLyBJZiB3ZSBjb3VsZCBjcmVhdGUgYSBoYW5kbGUgZnJvbSB0aGF0IGV4aXN0
aW5nIHJlc291cmNlIHRoZW4gd2UgY291bGQgYXZvaWQgdGhpcyBleHRyYQorICAgIC8vIGFsbG9j
YXRpb24gYW5kIGNvcHkuCisKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGJ1ZmZlcik7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybjsK
KworICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gc2hhcmVh
YmxlUmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxl
YXNlTm9uTnVsbCgpLCAwLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAoIXNoYXJlYWJsZVJlc291
cmNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShoYW5kbGUpKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggMzdiODI3M2NlOWRkNzczNjI1OGY4MjZlMmFhYTEwN2JiOTE2YmJkYi4u
MGUyMjNjMGFhM2Q4YWQ4NTY3ZTE0NWZlZDkzODg0MjM3OGFjOTI1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KQEAgLTIyMDYsOSArMjIwNiwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZp
ZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJl
dGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
b3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gKE5T
QXJyYXkgKilkYXRhQXJyYXkpCisgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5j
cmVhdGVOU0RhdGFBcnJheSgpOworICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0
YUFycmF5LmdldCgpKQogICAgICAgICAgICAgICAgIFttX2ZpbGVIYW5kbGUgd3JpdGVEYXRhOmRh
dGFdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAxZGM4ODkzZGRjMTQ1MjFkZmIxZjZmNTMzYjQxMjEzODk3YTQ2YzQ0Li5i
YzhlOWIxNDU2MmMzYzVhOWJiYWQyZWFiZmNkZjhjYzNmNGEyMDcxIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTkt
MTAtMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtRdWljayBM
b29rXSBDbGVhbiB1cCBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBBUEkgdGVzdHMgdG8gY29t
cGFyZSBkYXRhIHJlY2VpdmVkIGluCisgICAgICAgIC1fd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTogd2l0aCBleHBlY3RlZCBkYXRhLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06CisgICAg
ICAgIChyZWFkRmlsZSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIGluaXRXaXRoRXhw
ZWN0ZWRGaWxlVVJMOnJlc3BvbnNlUG9saWN5Ol0pOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxl
Z2F0ZSBfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29rRGVsZWdhdGUgdmVyaWZ5RG93bmxvYWRdKToKKyAg
ICAgICAgKFRFU1QpOgorCiAyMDE5LTEwLTI2ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBFbmZvcmNlIHVzZXIgZ2VzdHVyZSBmb3IgZ2V0VXNlck1lZGlhIGlu
IGNhc2UgYSBwcmV2aW91cyBnZXRVc2VyTWVkaWEgY2FsbCB3YXMgZGVuaWVkCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IDgy
NjUxZmE2MzMwNGExOGZlM2NjMTMxNDc1NDYyODhmNGNlMThiMTYuLmIyMDc4N2I5Y2Y5OWVmMmNi
Y2QyNGIyNzcyMTlmNDYxZGRiYTNkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC03MCw2ICs3MCw3IEBAIEBpbXBsZW1l
bnRhdGlvbiBRdWlja0xvb2tEZWxlZ2F0ZSB7CiBAcHJvdGVjdGVkCiAgICAgTlNVSW50ZWdlciBf
ZG93bmxvYWRGaWxlU2l6ZTsKICAgICBOU1VJbnRlZ2VyIF9leHBlY3RlZEZpbGVTaXplOworICAg
IFJldGFpblB0cjxOU0RhdGE+IF9leHBlY3RlZEZpbGVEYXRhOwogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gX2V4cGVjdGVkRmlsZU5hbWU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZXhwZWN0
ZWRGaWxlVHlwZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9leHBlY3RlZE1JTUVUeXBlOwpA
QCAtNzcsNyArNzgsNyBAQCBAcHJvdGVjdGVkCiAgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kgX3Jlc3BvbnNlUG9saWN5OwogfQogCi1zdGF0aWMgdm9pZCByZWFkRmlsZShOU1VSTCAqZmls
ZVVSTCwgTlNVSW50ZWdlciYgZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVOYW1l
LCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYgbWlt
ZVR5cGUpCitzdGF0aWMgdm9pZCByZWFkRmlsZShOU1VSTCAqZmlsZVVSTCwgTlNVSW50ZWdlciYg
ZmlsZVNpemUsIFJldGFpblB0cjxOU1N0cmluZz4mIGZpbGVOYW1lLCBSZXRhaW5QdHI8TlNTdHJp
bmc+JiBmaWxlVHlwZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYgbWltZVR5cGUsIFJldGFpblB0cjxO
U0RhdGE+JiBmaWxlRGF0YSkKIHsKICAgICBpZiAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0g
W05TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXIgYXR0cmlidXRlc09mSXRlbUF0UGF0aDpmaWxl
VVJMLnBhdGggZXJyb3I6bmlsXSkKICAgICAgICAgZmlsZVNpemUgPSBbYXR0cmlidXRlc1tOU0Zp
bGVTaXplXSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CkBAIC04OSw2ICs5MCw3IEBAIHN0YXRpYyB2
b2lkIHJlYWRGaWxlKE5TVVJMICpmaWxlVVJMLCBOU1VJbnRlZ2VyJiBmaWxlU2l6ZSwgUmV0YWlu
UHRyPE5TU3RyaW5nPiYKICAgICAgICAgZmlsZVR5cGUgPSB0eXBlSWRlbnRpZmllcjsKIAogICAg
IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZil0eXBlSWRlbnRpZmllciwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwor
ICAgIGZpbGVEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZVVSTF07CiB9
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDooTlNVUkwgKilmaWxl
VVJMIHJlc3BvbnNlUG9saWN5OihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSlyZXNwb25zZVBv
bGljeQpAQCAtOTYsNyArOTgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFeHBlY3RlZEZp
bGVVUkw6KE5TVVJMICopZmlsZVVSTCByZXNwb25zZVBvbGljeTooV0tOYXZpZwogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmVhZEZp
bGUoZmlsZVVSTCwgX2V4cGVjdGVkRmlsZVNpemUsIF9leHBlY3RlZEZpbGVOYW1lLCBfZXhwZWN0
ZWRGaWxlVHlwZSwgX2V4cGVjdGVkTUlNRVR5cGUpOworICAgIHJlYWRGaWxlKGZpbGVVUkwsIF9l
eHBlY3RlZEZpbGVTaXplLCBfZXhwZWN0ZWRGaWxlTmFtZSwgX2V4cGVjdGVkRmlsZVR5cGUsIF9l
eHBlY3RlZE1JTUVUeXBlLCBfZXhwZWN0ZWRGaWxlRGF0YSk7CiAKICAgICBfcmVzcG9uc2VQb2xp
Y3kgPSByZXNwb25zZVBvbGljeTsKICAgICByZXR1cm4gc2VsZjsKQEAgLTEzOSw2ICsxNDEsNyBA
QCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTooTlNE
YXRhICopZG9jdW1lbnREYXRhCiB7CiAgICAgRVhQRUNUX0VRKF9leHBlY3RlZEZpbGVTaXplLCBk
b2N1bWVudERhdGEubGVuZ3RoKTsKKyAgICBFWFBFQ1RfVFJVRShbX2V4cGVjdGVkRmlsZURhdGEg
aXNFcXVhbFRvRGF0YTpkb2N1bWVudERhdGFdKTsKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZpbmlz
aFF1aWNrTG9va0xvYWQpOwogICAgIEVYUEVDVF9UUlVFKF9kaWRTdGFydFF1aWNrTG9va0xvYWQp
OwogICAgIF9kaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gWUVTOwpAQCAtMjE5LDEyICsyMjIsMTQg
QEAgLSAodm9pZCl2ZXJpZnlEb3dubG9hZAogICAgIEVYUEVDVF9UUlVFKFtOU0ZpbGVNYW5hZ2Vy
LmRlZmF1bHRNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W19kb3dubG9hZERlc3RpbmF0aW9uVVJM
IHBhdGhdXSk7CiAKICAgICBOU1VJbnRlZ2VyIGRvd25sb2FkRmlsZVNpemU7CisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gZG93bmxvYWRGaWxlRGF0YTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRv
d25sb2FkRmlsZU5hbWU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBkb3dubG9hZEZpbGVUeXBl
OwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gZG93bmxvYWRNSU1FVHlwZTsKLSAgICByZWFkRmls
ZShfZG93bmxvYWREZXN0aW5hdGlvblVSTC5nZXQoKSwgZG93bmxvYWRGaWxlU2l6ZSwgZG93bmxv
YWRGaWxlTmFtZSwgZG93bmxvYWRGaWxlVHlwZSwgZG93bmxvYWRNSU1FVHlwZSk7CisgICAgcmVh
ZEZpbGUoX2Rvd25sb2FkRGVzdGluYXRpb25VUkwuZ2V0KCksIGRvd25sb2FkRmlsZVNpemUsIGRv
d25sb2FkRmlsZU5hbWUsIGRvd25sb2FkRmlsZVR5cGUsIGRvd25sb2FkTUlNRVR5cGUsIGRvd25s
b2FkRmlsZURhdGEpOwogCiAgICAgRVhQRUNUX0VRKF9leHBlY3RlZEZpbGVTaXplLCBkb3dubG9h
ZEZpbGVTaXplKTsKKyAgICBFWFBFQ1RfVFJVRShbX2V4cGVjdGVkRmlsZURhdGEgaXNFcXVhbFRv
RGF0YTpkb3dubG9hZEZpbGVEYXRhLmdldCgpXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKF9leHBl
Y3RlZEZpbGVOYW1lLmdldCgpLCBkb3dubG9hZEZpbGVOYW1lLmdldCgpKTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoX2V4cGVjdGVkRmlsZVR5cGUuZ2V0KCksIGRvd25sb2FkRmlsZVR5cGUuZ2V0KCkp
OwogICAgIEVYUEVDVF9XS19TVFJFUShfZXhwZWN0ZWRNSU1FVHlwZS5nZXQoKSwgZG93bmxvYWRN
SU1FVHlwZS5nZXQoKSk7CkBAIC00NjUsMTAgKzQ3MCwxMSBAQCBURVNUKFF1aWNrTG9vaywgTGVn
YWN5UXVpY2tMb29rQ29udGVudCkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKICAgICBOU1VJbnRl
Z2VyIGV4cGVjdGVkRmlsZVNpemU7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZXhwZWN0ZWRGaWxl
RGF0YTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVkRmlsZU5hbWU7CiAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVUeXBlOwogICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gZXhwZWN0ZWRNSU1FVHlwZTsKLSAgICByZWFkRmlsZShwYWdlc0RvY3VtZW50VVJMLCBleHBl
Y3RlZEZpbGVTaXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVUeXBlLCBleHBlY3Rl
ZE1JTUVUeXBlKTsKKyAgICByZWFkRmlsZShwYWdlc0RvY3VtZW50VVJMLCBleHBlY3RlZEZpbGVT
aXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVUeXBlLCBleHBlY3RlZE1JTUVUeXBl
LCBleHBlY3RlZEZpbGVEYXRhKTsKIAogICAgIE5TRGljdGlvbmFyeSAqcXVpY2tMb29rQ29udGVu
dCA9IG1haW5GcmFtZS5kYXRhU291cmNlLl9xdWlja0xvb2tDb250ZW50OwogICAgIE5TU3RyaW5n
ICpmaWxlUGF0aCA9IHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rRmlsZU5hbWVLZXldOwpA
QCAtNDc4LDYgKzQ4NCw4IEBAIFRFU1QoUXVpY2tMb29rLCBMZWdhY3lRdWlja0xvb2tDb250ZW50
KQogCiAgICAgTlNEaWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtOU0ZpbGVNYW5hZ2VyLmRl
ZmF1bHRNYW5hZ2VyIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmlsXTsK
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRGaWxlU2l6ZSwgW2ZpbGVBdHRyaWJ1dGVzW05TRmlsZVNp
emVdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgCisgICAgRVhQRUNUX1RSVUUoW2V4cGVj
dGVkRmlsZURhdGEgaXNFcXVhbFRvRGF0YTpbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6
ZmlsZVBhdGhdXSk7CiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbbWFpbkZyYW1lIGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJhYm91dDpibGFuayJdXV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382252</attachid>
            <date>2019-10-29 16:51:56 -0700</date>
            <delta_ts>2019-10-29 21:14:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203472-20191029165155.patch</filename>
            <type>text/plain</type>
            <size>53774</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZThhMWVhNjdkZGIz
ODM0YzNmNzZjNTJlN2RmOTNjYjEzYmEwOS4uMGNiYTRlYjM0Mzc0ZjFiNGJlZDMxN2Q3NzgwYjYy
OTMxNDBhNjlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUXVpY2sgTG9va10gQ2xlYW4g
dXAgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ3MgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5
IEVpZHNvbi4KKworICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6IERlbGV0ZWQuCisKIDIwMTktMTAtMjcgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIERvIG5vdCBleHBh
bmQgcnVucyB3aXRoIGNvbGxhcHNlZCB0cmFpbGluZyB3aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVi
Y2Y0NzJlZjg2MDNlMTgzYzlhNTdjZTkyMjU2ZmFiZWViYzEwNDMuLjA4MzZlYzM1YWRmYTI3ODQw
MGRiMjE5MTg0ZDQzOTFhMWVlYTgyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTkt
MTAtMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtRdWljayBM
b29rXSBDbGVhbiB1cCBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIFJlcGxhY2VkIFF1aWNrTG9va0RvY3VtZW50
RGF0YSB3aXRoIFNoYXJlYWJsZVJlc291cmNlLgorCisgICAgICAgIFJlbW92ZWQgbWVzc2FnZXMg
V2ViUGFnZVByb3h5OjpEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lIGFuZAorICAgICAgICBXZWJQYWdlOjpEaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudCwgcmVwbGFjaW5nIHRoZW0gd2l0aCBhc3luYyBtZXNzYWdlCisgICAgICAgIFdl
YlBhZ2VQcm94eTo6UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZS4KKworICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oOiBSZW1v
dmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZXF1ZXN0UGFzc3dvcmQpOgorICAgICAgICAoV2ViS2l0OjpwYXNzd29yZENhbGxiYWNrcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVQYXNzd29yZCk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQpOiBEZWxldGVkLgorCiAy
MDE5LTEwLTI2ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmZvcmNlIHVzZXIgZ2VzdHVyZSBmb3IgZ2V0VXNlck1lZGlhIGluIGNhc2UgYSBwcmV2aW91cyBn
ZXRVc2VyTWVkaWEgY2FsbCB3YXMgZGVuaWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggNTAyMTY0ZDUzNjNiMTM0YmUyZDg4MzQzNWViYTY1MTg3YTExZTAyYy4uYjViNWQzYmNjODIx
YjExMWQyZTkwYWViYmI1ZTVmYTFhYzg5ODI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbUXVpY2sgTG9va10gQ2xlYW4gdXAgTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzQ3MgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQpOgorCiAyMDE5LTEwLTI2
ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBQdXQgT2Zmc2NyZWVu
Q2FudmFzIGJlaGluZCBhIGJ1aWxkIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBjN2U3YzhiOTFmYjU0Y2Y4ZTE5MDE3ZTdj
MDhiYzU3YzU0ZWE5MDkwLi42YzlhOWEyMWEwYzYzZjFjOGE2OTUxNmJlOWJlMDgyZWM0MjdlM2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBMT0coTmV0d29yaywgIkxl
Z2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIsIGJ1ZmZl
ci5zaXplKCkpOwogICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2Nv
bnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhQXJyYXkoKF9fYnJpZGdlIENGQXJyYXlSZWYpYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYjIxMzc4
ODgyZjcwMzRjNDlkMjE3OGVjNmMyZmEzNTgyN2U5ZWE0Li5iYzRkYWFmYmYyMWExNWMwZTZkZDFh
Y2Q0NjIyYWZhNTZiN2I4ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0z
MSwxMCArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZm
ZXI7CisKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI3
Zjk4OWI0MDNlNzEyZGM2MWUwZWM2ZjVkYzZhMDVkNTQyYzNlNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7
CisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byBzaGFyZWRNZW1vcnkgPSBhbGxvY2F0ZShidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAo
IXNoYXJlZE1lbW9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjaGFyKiBjb25z
dCBzaGFyZWRNZW1vcnlQdHIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihzaGFyZWRNZW1vcnkt
PmRhdGEoKSk7CisgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAoYnVmZmVyLnNp
emUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci5nZXRTb21lRGF0
YShwb3NpdGlvbik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWVtY3B5KHNoYXJlZE1lbW9yeVB0
ciArIHBvc2l0aW9uLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNoYXJlZE1lbW9yeVB0ciArIHBvc2l0aW9uKTsKKyAg
ICAgICAgcG9zaXRpb24gKz0gZGF0YS5zaXplKCk7CisgICAgfQorCisgICAgcmV0dXJuIHNoYXJl
ZE1lbW9yeTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAppbmRleCBhODFiMDdlNmEwOGE2MzI3Y2YwYTc5MDkyZTYwNDExM2IyOWY2
MGNkLi43NzkwMzIyZjBkOTM0NjgxYmEyNDBhZjE5MWQ5ZGNiMGYwNzk4Yjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIGNsYXNzIERlY29k
ZXI7CiBjbGFzcyBFbmNvZGVyOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7Cit9CisKICNpZiBPUyhEQVJXSU4pCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1h
Y2hTZW5kUmlnaHQ7CkBAIC05Nyw2ICsxMDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKICAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gY3JlYXRlKHZvaWQqLCBzaXplX3QsIFByb3RlY3Rpb24pOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxl
JiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNj
cmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9RdWlja0xvb2tE
b2N1bWVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3Vt
ZW50RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYmRhNTk3NTE1ZjQ2
YjZlY2Q1MDQ4MGQ2ZTQ5ODgwYzE4NGRiMzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3Vt
ZW50RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlF1aWNrTG9va0RvY3VtZW50RGF0YS5oIgot
Ci0jaWYgVVNFKFFVSUNLX0xPT0spCi0KLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAi
RW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBRdWlja0xvb2tEb2N1bWVu
dERhdGE6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKLXsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEp
OwotfQotCi1DRkRhdGFSZWYgUXVpY2tMb29rRG9jdW1lbnREYXRhOjpkZWNvZGVkRGF0YSgpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKG1fZGF0YS5zaXplKCkgPD0gMSk7Ci0gICAgaWYgKG1fZGF0YS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBtX2RhdGFbMF0u
Z2V0KCk7Ci19Ci0KLWJvb2wgUXVpY2tMb29rRG9jdW1lbnREYXRhOjppc0VtcHR5KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9kYXRhLmlzRW1wdHkoKTsKLX0KLQotdm9pZCBRdWlja0xvb2tEb2N1
bWVudERhdGE6OmNsZWFyKCkKLXsKLSAgICBtX2RhdGEuY2xlYXIoKTsKLX0KLQotdm9pZCBRdWlj
a0xvb2tEb2N1bWVudERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBkYXRhIDogbV9k
YXRhKQotICAgICAgICBzaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKTsKLSAgICBl
bmNvZGVyIDw8IHNpemU7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGEgOiBtX2RhdGEpCi0g
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKENGRGF0YUdldEJ5dGVQdHIoZGF0
YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSwgMSk7Ci19Ci0KLWJvb2wgUXVp
Y2tMb29rRG9jdW1lbnREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBRdWlja0xv
b2tEb2N1bWVudERhdGEmIGRvY3VtZW50RGF0YSkKLXsKLSAgICB1aW50NjRfdCBzaXplOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICB1aW50OF90KiBjb25zdCBi
dWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oQ0ZBbGxvY2F0b3JBbGxvY2F0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzaXplLCAwKSk7Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0KLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGJ1ZmZlciwgc2l6ZSwgMSkpIHsKLSAgICAg
ICAgQ0ZBbGxvY2F0b3JEZWFsbG9jYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlcik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkb2N1bWVudERhdGEuY2xlYXIoKTsK
LSAgICBkb2N1bWVudERhdGEubV9kYXRhLmFwcGVuZChhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhC
eXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIsIHNpemUsIGtDRkFsbG9jYXRv
ckRlZmF1bHQpKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDcwMTZmNDE3MDJlNmMzNTgxMjFkMGUzMWU1NDczYWRmOWE5N2YyMmIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUXVpY2tMb29rRG9jdW1lbnREYXRhX2gKLSNkZWZpbmUg
UXVpY2tMb29rRG9jdW1lbnREYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBRdWlja0xv
b2tEb2N1bWVudERhdGEgewotcHVibGljOgotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0g
ICAgQ0ZEYXRhUmVmIGRlY29kZWREYXRhKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7Ci0gICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwotICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBRdWlja0xvb2tEb2N1
bWVudERhdGEmKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8UmV0YWluUHRyPENGRGF0YVJlZj4s
IDE+IG1fZGF0YTsKLX07Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFF1aWNr
TG9va0RvY3VtZW50RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA0OThlOTFiMDA3MGZiOTZlMGVhOTQ5
ZDJlYTlmMmRmYTBlMThjZDllLi45YmQ1MDgyM2JjY2M5MzYzMjgxODc3NTU2NDhiOGQ2MTgyN2Yy
MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTk2LDYgKzk2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCiAvLyBUT0RPOiBXZSBzaG91bGQgdW5pZnkgdGhlc2Ug
ZmlsZXMgb25jZSBHVEsncyBQbHVnaW5Qcm9jZXNzMiBpcyByZW1vdmVkLgogUGxhdGZvcm0vTG9n
Z2luZy5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9Nb2R1bGUuY3BwIEBuby11bmlmeQorUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcCBAbm8tdW5pZnkKIAogLy8gVE9ETzogV2Ugc2hvdWxkIHVuaWZ5
IHRoZXNlIGZpbGVzIG9uY2UgR1RLJ3MgUGx1Z2luUHJvY2VzczIgaXMgcmVtb3ZlZC4KIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMmM5NTAxNjlkNjljNWMwNmU4MjJjZmVlN2M5ZmVkNGE1YjY2OWFmNy4uZDkyNGExM2Y5
ZTVmMTZjZDE1NDIwODQxOTQ3ZDY5ZjMzZTkzNmIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtMTczLDcgKzE3Myw2IEBAIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QuY3BwCiBTaGFyZWQvaW9zL05hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW0KIFNoYXJlZC9p
b3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbQogU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2
ZW50SU9TLm1tCi1TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAKIFNoYXJlZC9p
b3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tCiBTaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMu
bW0KIFNoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggYjJlYTQxZDllMmYyZTgxZTJjOWVi
M2I4Nzc5MWZjM2VmOGMzZjBkYi4uYzM2NGFlZjVkOTA2ODJlNzI0ZWIzNzMzZTk5OTdhYmJmZThi
ZDcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQu
aApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Ci1jbGFzcyBRdWlja0xv
b2tEb2N1bWVudERhdGE7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2Vi
RnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDM4Y2M3NTBjYjJjNDE4MWMw
OGUwMTY1ZGYzNjBkNzRjODI5N2E5NWQuLjk0ZGEzMmYwOGJlZGQ5NTQxMzQ3NDcwZDUyMmViNTA1
MjU0MjUzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaApAQCAtNDksMTIgKzQ5LDEyIEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RS
ZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk7Ci1jbGFzcyBRdWlja0xvb2tEb2N1bWVudERhdGE7CiBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1aWNrTG9va0RvY3Vt
ZW50RGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSB7IH0KICNl
bmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktp
dDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCAw
ZGZkZTdjOTg2ODAxZDhjMTg1ODJjMmE4YTM1NzkyNWFlNmMyMDI4Li45Nzg1MTA2MzQ4ZGM5NTE2
NTgyMjc1NDQ0YWQwMWM0MzIyZTU1MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRh
Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA5NGFlOWIxMzBmYjg5OTkzOGU5Y2UyNjFi
NWU2OGUxM2U1MmUwMWIzLi45YWRhMGQ5MjZhYzZlMTdkNDgyMWJmYmU3NDAzNWQ3ZDk3ZDU0NjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCkBAIC04MywxMCArODMsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2
aWNlc1NQSS5oPgogI2VuZGlmCiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSNpbXBvcnQgIlF1aWNr
TG9va0RvY3VtZW50RGF0YS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwODMsNyArMTA3OSw3IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0
aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQordm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTA5Miw3ICsxMDg4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5h
dmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTooTlNEYXRhICopZGF0YS5kZWNvZGVkRGF0YSgpXTsK
KyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDdlYzVhNmIxYjBkZTQ3ZmE2N2My
N2EzODcxYTA2Mzc5YTgyNTI3YTEuLjBiODA0ZmE5YThjZmQ0MDViNTU3NmY3NTNjZDEwZTFiOTZh
NjMzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKQEAgLTM1NCw5ICszNTQsOSBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZgogfQog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgbV9wYWdlLmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZmlsZU5hbWUpOworICAgIG1fcGFnZS5y
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKGZpbGVO
YW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApAQCAtNDY5LDgg
KzQ2OSw4IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpECiAgICAgfQogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU+
KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0UGFzc3dvcmRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggNjM0ZmI3NWU4NzM4
ZTE0ZTQyN2Q5NzhiYzhkZWZmNjQ1MTJmMWVmNC4uMGZlMjVmYTg1ZWZjODZhNzA2MDYwYjVkMGJh
MDQ2NDdmN2VlNDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVJ
bmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19M
T09LKQotICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICB2b2lkIHJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggNWE5OWQxMzkyODU0NzIyMWU2YzNhZGVhNTE2NDU2ZjNlZTNkYTg4
ZC4uYTNiNTkwM2UxMjk0MGRkYmQ1MWNkYzRiYzQxMDJhMzMyZGJlOTlmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVTaGVldENhbGxiYWNrSUQuaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5o
IgogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgi
CkBAIC0zMjksMTAgKzMzMCw2IEBAIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNvbnRl
bnRNb2RlIDogdWludDhfdDsKIAotI2lmIFVTRShRVUlDS19MT09LKQotY2xhc3MgUXVpY2tMb29r
RG9jdW1lbnREYXRhOwotI2VuZGlmCi0KIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0
YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNp
Z25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1JhbmdlPiBFZGl0
aW5nUmFuZ2VDYWxsYmFjazsKQEAgLTE1NTksNyArMTU1Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
RnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShR
VUlDS19MT09LKQotICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKTsKKyAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWVTaGFyZWQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKQEAgLTIwNTEsOCArMjA0
OCw4IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRhJik7Ci0gICAg
dm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYpOwor
ICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZj
NjIzMDdiMDBmMTVlNWE5NjViM2VlOGQ5MTJjZDhiODNhNDY5NTcuLjVhMjdhYTNlM2E0M2RkNzk5
YmM0MTExMmUwM2NmZTM0MzNjYmNkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ2Nyw4ICs0NjcsOCBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgRGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyB1
dGkpCi0gICAgRGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoV2Vi
S2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGEgZGF0YSkKLSAgICBEaWRSZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKFN0cmluZyBmaWxlTmFtZSkKKyAgICBEaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShXZWJLaXQ6OlNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UpCisgICAgUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShTdHJpbmcgZmlsZU5hbWUpIC0+IChTdHJpbmcgcGFzc3dv
cmQpIEFzeW5jCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDA0MmJi
NWQzMjE0ZmUwMDAxNTU2ZjlhNjEzMjk1OTNjZGY5OGIxNGQuLjRkN2Y5MjQ4ODRkNDczMTYzOGU1
N2ZhOTFmM2E4NGYxOTU4NDgyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5oIgorI2ltcG9ydCAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CiAjaW1wb3J0ICJVc2VyRGF0YS5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpAQCAtMTI0
OSw3ICsxMjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbmNsdWRlRHJvcCgpCiAjZW5k
aWYKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKIHsKICAgICAvLyBFbnN1cmUgdGhhdCBmaWxlTmFt
ZSBpc24ndCByZWFsbHkgYSBwYXRoIG5hbWUKQEAgLTEyNTcsMjEgKzEyNTgsMjMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBmaWwKICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1l
LnJldmVyc2VGaW5kKCcvJykgKyAxKSwgdXRpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9v
a0RvY3VtZW50RGF0YSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlJiBoYW5kbGUpCiB7Ci0gICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhh
bmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSgqYnVmZmVyKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmaWxlTmFtZSk7CisgICAgcmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChmaWxlTmFtZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJl
ZChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHBhZ2VDbGllbnQoKS5yZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgW3Byb2Nlc3MgPSBXVEZNb3Zl
KHByb2Nlc3MpLCB3ZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRF0oY29uc3QgU3RyaW5nJiBwYXNzd29y
ZCkgewotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChwYXNzd29yZCksIHdlYlBhZ2VJRCk7Ci0gICAg
fSk7CisgICAgcGFnZUNsaWVudCgpLnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
KGZpbGVOYW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTMy
MmQ5OGQ5ZTgxNmRhMDIwNTNiM2E5NDM1ODdjNWVmNzkyYzUzMi4uMzM2MTllMjBlOWRmZjA3ZWI2
YjJmNWM4YjZjNGQzYjc2ZDk3NWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQzLDcgKzEzNDMsNiBAQAogCQlBMTAyQTcwODFF
QzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4u
c2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlh
LkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzkyNjMxMDBG
MEM1RDggLyogV0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggKi87IH07
CiAJCUExMTVEQzcyMTkxRDgyREEwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZF
MTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBMTE4QTlFRjE5MDdBRDZG
MDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVp
Y2tMb29rRG9jdW1lbnREYXRhLmggKi87IH07CiAJCUExMThBOUYzMTkwOEI4RUEwMEY3QzkyQiAv
KiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlGMTE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFu
YWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExM0IzREEyMjA3RjM5REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNCM0RBMTIwN0YzOURF
MDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oICovOyB9OwogCQlBMTNEQzY4MjIwN0FBNkIyMDA2
NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2NkVGNzIg
LyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CkBAIC0xMzYwLDYgKzEz
NTksNyBAQAogCQlBMUE0RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5
RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExQTRGRTVDMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oICov
OyB9OwogCQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBNEZFNjAx
OERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUFEQUZCNjIzNjhFNkE4MDA5Q0I3
NzYgLyogU2hhcmVkTWVtb3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQURBRkI1MjM2OEU0QjgwMDlDQjc3NiAvKiBTaGFyZWRNZW1vcnkuY3Bw
ICovOyB9OwogCQlBMUM1MTJDOTE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFD
NTEyQzcxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaCAqLzsgfTsK
IAkJQTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBCN0M4MDAz
QTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKIAkJQTFFNjg4NzAxRjZFMkJBQjAwNzAw
NkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmgg
Ki87IH07CkBAIC0xNzM0LDYgKzE3MzQsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29tLmFwcGxl
LmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsKIAkJCWZp
bGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwogCQkJaXNF
ZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VUUFVUX0RJ
UikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTQwNzMsOCArNDA3NSw2IEBACiAJCUExMDQ2RUEw
MjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S1BERlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTE1REM2RDE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE1
REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBhdGggPSBpb3MvUXVpY2tMb29rRG9j
dW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExOEE5RUQxOTA3
QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuaDsgcGF0aCA9IGlvcy9RdWlj
a0xvb2tEb2N1bWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5
RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlGMTE5MDhCOEVBMDBGN0M5MkIg
LyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExM0IzREExMjA3RjM5REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vYmlsZVdpRmlTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQx
MDIsNiArNDEwMiw3IEBACiAJCUExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0Rvd25sb2Fk
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVB
OEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tEb3dubG9hZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExQTRGRTYwMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFBREFGQjUyMzY4RTRCODAwOUNCNzc2IC8qIFNoYXJl
ZE1lbW9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRNZW1vcnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUI4OUI5MjIyMUUwMjMzMDBFQjRDRUEgLyogU0RLVmFy
aWFudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTREtWYXJpYW50
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUI5Q0EzODIyNDZFNTRB
MDAzRDZEQ0EgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTFDNTEyQzYxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA7IHBhdGggPSBpb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDcyLDggKzYwNzMsNiBAQAogCQkJCTJE
QTk0NDk3MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICov
LAogCQkJCTFDOUVCQTVCMjA4N0U3NEUwMDA1NDQyOSAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50SU9T
Lm1tICovLAogCQkJCTJEQTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2
ZW50SU9TLm1tICovLAotCQkJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tE
b2N1bWVudERhdGEuY3BwICovLAotCQkJCUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlj
a0xvb2tEb2N1bWVudERhdGEuaCAqLywKIAkJCQk0NDU5OTg0MTIyODMzRTYwMDBFNjEzNzMgLyog
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmggKi8sCiAJCQkJRjQwRDFCNjgyMjBCREMwRjAw
QjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovLAogCQkJCUY0MkQ2MzNGMjJB
MEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLywKQEAgLTg0MjksNiAr
ODQyOCw3IEBACiAJCQkJMEZEQ0Q3RjYxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0
aW9uLmggKi8sCiAJCQkJQzBFM0FBNDUxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5jcHAgKi8s
CiAJCQkJQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovLAorCQkJCUExQURB
RkI1MjM2OEU0QjgwMDlDQjc3NiAvKiBTaGFyZWRNZW1vcnkuY3BwICovLAogCQkJCTFBMjRCRUQz
MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
UGxhdGZvcm07CkBAIC05NzUzLDcgKzk3NTMsNiBAQAogCQkJCTg2RTY3QTI1MTkxMEI5RDEwMDAw
NEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzA0OEFFNjFB
Q0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVu
dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBS
ZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdC
NTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM1NSw2ICsxMTM1NCw3IEBA
CiAJCQkJRTE4RTY5MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFERTdDNkMyMjI3OEYxRTAwNTMyQjY1
IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBMUFEQUZCNjIzNjhFNkE4MDA5Q0I3NzYgLyogU2hhcmVkTWVtb3J5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzM0
REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1h
bmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiNjM1OGExNzhhYTMwMzJiMjE4MjE0
NjM0ODAzM2ViNDg3YWUxOTU1Li45M2QzYTI0MjYzOTcwZTA2Y2EwMjgwMzFiNTRjMGFhMTQwNmI5
ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMx
LDY4ICszMSw2MSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1F1aWNrTG9vay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIFBhc3N3
b3JkQ2FsbGJhY2tNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYpPj47Ci1zdGF0aWMgUGFzc3dvcmRDYWxsYmFja01hcCYgcGFz
c3dvcmRDYWxsYmFja3MoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXNzd29yZENh
bGxiYWNrTWFwPiBjYWxsYmFja01hcDsKLSAgICByZXR1cm4gY2FsbGJhY2tNYXAuZ2V0KCk7Ci19
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQorV2ViUHJldmlld0xvYWRlckNs
aWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBTdHJpbmcmIHV0aSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIDogbV9maWxlTmFtZSB7
IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlE
IH0KKyAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiB7CiB9CiAKLVdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkKLXsKLSAgICBw
YXNzd29yZENhbGxiYWNrcygpLnJlbW92ZShtX3BhZ2VJRCk7Ci19CitXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmIChtX2RhdGEuaXNFbXB0eSgpKQotICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwg
bV91dGkpLCBtX3BhZ2VJRCk7CisgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1
cm47CiAKLSAgICBDRkFycmF5QXBwbHlGdW5jdGlvbihkYXRhQXJyYXksIENGUmFuZ2VNYWtlKDAs
IENGQXJyYXlHZXRDb3VudChkYXRhQXJyYXkpKSwgW10oY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQq
IGNvbnRleHQpIHsKLSAgICAgICAgQVNTRVJUKENGR2V0VHlwZUlEKHZhbHVlKSA9PSBDRkRhdGFH
ZXRUeXBlSUQoKSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFF1aWNrTG9va0RvY3VtZW50RGF0YSo+
KGNvbnRleHQpLT5hcHBlbmQoKENGRGF0YVJlZil2YWx1ZSk7Ci0gICAgfSwgJm1fZGF0YSk7ICAg
IAorICAgIGlmIChtX2J1ZmZlci0+aXNFbXB0eSgpKQorICAgICAgICB3ZWJQYWdlLT5kaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUsIG1fdXRpKTsK
KworICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZGF0YSksIG1fcGFnZUlEKTsKLSAgICBtX2RhdGEuY2xl
YXIoKTsKKyAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KG1fcGFnZUlEKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHdl
YlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVm
ZmVyLmdldCgpKTsKKyAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICBtX2J1
ZmZlci0+Y2xlYXIoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1
ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBBU1NFUlQoIXBhc3N3b3JkQ2FsbGJhY2tzKCkuY29udGFpbnMobV9wYWdl
SUQpKTsKLSAgICBwYXNzd29yZENhbGxiYWNrcygpLmFkZChtX3BhZ2VJRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShtX2ZpbGVOYW1lKSwgbV9wYWdlSUQpOwotfQorICAgIGF1dG8gd2ViUGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOworICAgIGlmICghd2Vi
UGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVQYXNzd29y
ZChjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
Ci17Ci0gICAgQVNTRVJUKHBhc3N3b3JkQ2FsbGJhY2tzKCkuY29udGFpbnMocGFnZUlEKSk7Ci0g
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBwYXNzd29yZENhbGxiYWNrcygpLnRha2Uo
cGFnZUlEKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFzc3dvcmQpOwotICAgIGVsc2UK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgIkRpc2NhcmRpbmcgYSBwYXNzd29y
ZCBmb3IgYSBwYWdlIHRoYXQgZGlkIG5vdCByZXF1ZXN0IG9uZSBpbiB0aGlzIHByb2Nlc3MiKTsK
KyAgICB3ZWJQYWdlLT5yZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKG1fZmlsZU5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmlu
ZGV4IGRhM2I1MDhmNTI2OWI4YzYzYmJmMzVlMjIzZTVjYTFlODA5Yzc1YzQuLjA0OTJjZWVjMmY5
YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
IAotI2luY2x1ZGUgIlF1aWNrTG9va0RvY3VtZW50RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDExICs0Myw5
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfldlYlByZXZpZXdMb2FkZXJDbGllbnQoKTsKIAotICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7Ci0KIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50
cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01Nyw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1f
dXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFF1
aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3MmJiNTYyNDNmY2FmNTQ0MDlkZDM5
MjRkMjZmOWU3MTJiY2JiZjg5Li4xYmYxZGVhZjI1OGQwNTFlNWQ0MzIzYzk2NWFkODIzMjI0MWE1
MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
MjM1LDYgKzEyMzUsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHJv
b3RWaWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQm
KTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaWYgVVNFKFFVSUNLX0xPT0sp
CisgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKKyAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
QEAgLTE1OTUsMTAgKzE2MDEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjYW5QbHVnaW5IYW5k
bGVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSNpZiBVU0Uo
UVVJQ0tfTE9PSykKLSAgICB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3Vt
ZW50KGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCi0KICAgICB2b2lkIHNpbXVsYXRlRGV2aWNlT3Jp
ZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKTsK
IAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE5ODAyOGEyMTQ1MzE0ZmVl
MWRmMTE1MjRmZjQ3NGI3YjFlZGZiYjcuLjEwYzBhY2MwNDg0NWNjZDllMzNkNDU5N2UyYWFlNjM1
MGUxYzczMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTMyLDEwICs1MzIsNiBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogICAgIEdhbWVwYWRBY3Rpdml0eShWZWN0b3I8V2ViS2l0OjpHYW1lcGFkRGF0YT4g
Z2FtZXBhZERhdGFzLCBib29sIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpCiAjZW5kaWYKIAot
I2lmIFVTRShRVUlDS19MT09LKQotICAgIERpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0Rv
Y3VtZW50KFN0cmluZyBwYXNzd29yZCkKLSNlbmRpZgotCiAgICAgRnJhbWVCZWNhbWVSZW1vdGUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpHbG9iYWxG
cmFtZUlkZW50aWZpZXIgcmVtb3RlRnJhbWVJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllciByZW1vdGVXaW5kb3dJZGVudGlmaWVyKQogCiAgICAgUmVnaXN0
ZXJVUkxTY2hlbWVIYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFN0cmluZyBzY2hlbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDY2NzNkNjNiODJhYWNlZjYzOGQ0NjUyNzliMmM5ZDAyYjI5MDEyZjQuLjdkNDQ4ZmRi
YjBkMWFiMzFlODg5OTNjODlkZTBiOGQyN2Y4NTIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW1wb3J0ICJQcmludEluZm8uaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTaGFyZWRNZW1v
cnkuaCIKICNpbXBvcnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAi
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAt
MzgzOSwxMyArMzg0MCw2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU3RyaW5nRm9yRmluZChjb25z
dCBTdHJpbmcmIGZpbmRTdHJpbmcpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpV
cGRhdGVTdHJpbmdGb3JGaW5kKGZpbmRTdHJpbmcpKTsKIH0KIAotI2lmIFVTRShRVUlDS19MT09L
KQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChj
b25zdCBTdHJpbmcmIHBhc3N3b3JkKQotewotICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVQYXNzd29yZChwYXNzd29yZCwgbV9pZGVudGlmaWVyKTsKLX0KLSNlbmRpZgotCiBi
b29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGlu
ZygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKQEAgLTQwNzQsNiArNDA2OCw0MCBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogfQogCisjaWYgVVNFKFFVSUNLX0xPT0spCisKK3ZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkp
OworfQorCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIEFTU0VSVCghYnVm
ZmVyLmlzRW1wdHkoKSk7CisKKyAgICAvLyBGSVhNRTogSW4gc29tZSBjYXNlcywgYnVmZmVyIGNv
bmFpbnMgYSBzaW5nbGUgc2VnbWVudCB0aGF0IHdyYXBzIGFuIGV4aXN0aW5nIFNoYXJlYWJsZVJl
c291cmNlLgorICAgIC8vIElmIHdlIGNvdWxkIGNyZWF0ZSBhIGhhbmRsZSBmcm9tIHRoYXQgZXhp
c3RpbmcgcmVzb3VyY2UgdGhlbiB3ZSBjb3VsZCBhdm9pZCB0aGlzIGV4dHJhCisgICAgLy8gYWxs
b2NhdGlvbiBhbmQgY29weS4KKworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOworICAgIGF1dG8g
c2hhcmVhYmxlUmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpLCAwLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAoIXNoYXJlYWJs
ZVJlc291cmNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShoYW5kbGUpKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXF1ZXN0UGFz
c3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggMzdiODI3M2NlOWRkNzczNjI1OGY4MjZlMmFhYTEwN2JiOTE2
YmJkYi4uMGUyMjNjMGFhM2Q4YWQ4NTY3ZTE0NWZlZDkzODg0MjM3OGFjOTI1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIyMDYsOSArMjIwNiwxMCBAQCBSZWZQdHI8V2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAg
ICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEg
aW4gKE5TQXJyYXkgKilkYXRhQXJyYXkpCisgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1
ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOworICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEg
aW4gZGF0YUFycmF5LmdldCgpKQogICAgICAgICAgICAgICAgIFttX2ZpbGVIYW5kbGUgd3JpdGVE
YXRhOmRhdGFdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAxZGM4ODkzZGRjMTQ1MjFkZmIxZjZmNTMzYjQxMjEzODk3YTQ2
YzQ0Li5hNjMwYjI4MzkzOTM0MTY0NDZiOWEyOGRiMDE0NjBjNGFlMDRjZDUwIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTktMTAtMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtR
dWljayBMb29rXSBDbGVhbiB1cCBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIFVwZGF0ZWQgQVBJIHRlc3RzIHRv
IGNvbXBhcmUgZGF0YSByZWNlaXZlZCBpbgorICAgICAgICAtX3dlYlZpZXc6ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6IHdpdGggZXhwZWN0ZWQgZGF0YS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgor
ICAgICAgICAocmVhZEZpbGUpOgorICAgICAgICAoLVtRdWlja0xvb2tEZWxlZ2F0ZSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpyZXNwb25zZVBvbGljeTpdKToKKyAgICAgICAgKC1bUXVpY2tMb29r
RGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWU6XSk6CisgICAgICAgICgtW1F1aWNrTG9va0RlbGVnYXRlIHZlcmlmeURvd25sb2FkXSk6
CisgICAgICAgIChURVNUKToKKwogMjAxOS0xMC0yNiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgRW5mb3JjZSB1c2VyIGdlc3R1cmUgZm9yIGdldFVzZXJNZWRp
YSBpbiBjYXNlIGEgcHJldmlvdXMgZ2V0VXNlck1lZGlhIGNhbGwgd2FzIGRlbmllZApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRl
eCA4MjY1MWZhNjMzMDRhMThmZTNjYzEzMTQ3NTQ2Mjg4ZjRjZTE4YjE2Li5iMjA3ODdiOWNmOTll
ZjJjYmNkMjRiMjc3MjE5ZjQ2MWRkYmEzZDg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQpAQCAtNzAsNiArNzAsNyBAQCBAaW1w
bGVtZW50YXRpb24gUXVpY2tMb29rRGVsZWdhdGUgewogQHByb3RlY3RlZAogICAgIE5TVUludGVn
ZXIgX2Rvd25sb2FkRmlsZVNpemU7CiAgICAgTlNVSW50ZWdlciBfZXhwZWN0ZWRGaWxlU2l6ZTsK
KyAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZXhwZWN0ZWRGaWxlRGF0YTsKICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IF9leHBlY3RlZEZpbGVOYW1lOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2V4
cGVjdGVkRmlsZVR5cGU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZXhwZWN0ZWRNSU1FVHlw
ZTsKQEAgLTc3LDcgKzc4LDcgQEAgQHByb3RlY3RlZAogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5IF9yZXNwb25zZVBvbGljeTsKIH0KIAotc3RhdGljIHZvaWQgcmVhZEZpbGUoTlNVUkwg
KmZpbGVVUkwsIE5TVUludGVnZXImIGZpbGVTaXplLCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBmaWxl
TmFtZSwgUmV0YWluUHRyPE5TU3RyaW5nPiYgZmlsZVR5cGUsIFJldGFpblB0cjxOU1N0cmluZz4m
IG1pbWVUeXBlKQorc3RhdGljIHZvaWQgcmVhZEZpbGUoTlNVUkwgKmZpbGVVUkwsIE5TVUludGVn
ZXImIGZpbGVTaXplLCBSZXRhaW5QdHI8TlNTdHJpbmc+JiBmaWxlTmFtZSwgUmV0YWluUHRyPE5T
U3RyaW5nPiYgZmlsZVR5cGUsIFJldGFpblB0cjxOU1N0cmluZz4mIG1pbWVUeXBlLCBSZXRhaW5Q
dHI8TlNEYXRhPiYgZmlsZURhdGEpCiB7CiAgICAgaWYgKE5TRGljdGlvbmFyeSAqYXR0cmlidXRl
cyA9IFtOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6
ZmlsZVVSTC5wYXRoIGVycm9yOm5pbF0pCiAgICAgICAgIGZpbGVTaXplID0gW2F0dHJpYnV0ZXNb
TlNGaWxlU2l6ZV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwpAQCAtODksNiArOTAsNyBAQCBzdGF0
aWMgdm9pZCByZWFkRmlsZShOU1VSTCAqZmlsZVVSTCwgTlNVSW50ZWdlciYgZmlsZVNpemUsIFJl
dGFpblB0cjxOU1N0cmluZz4mCiAgICAgICAgIGZpbGVUeXBlID0gdHlwZUlkZW50aWZpZXI7CiAK
ICAgICBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZUlkZW50aWZpZXIsIGtVVFRhZ0NsYXNzTUlNRVR5cGUp
KTsKKyAgICBmaWxlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVVUkxd
OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6KE5TVVJMICop
ZmlsZVVSTCByZXNwb25zZVBvbGljeTooV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpcmVzcG9u
c2VQb2xpY3kKQEAgLTk2LDcgKzk4LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOihOU1VSTCAqKWZpbGVVUkwgcmVzcG9uc2VQb2xpY3k6KFdLTmF2aWcKICAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
YWRGaWxlKGZpbGVVUkwsIF9leHBlY3RlZEZpbGVTaXplLCBfZXhwZWN0ZWRGaWxlTmFtZSwgX2V4
cGVjdGVkRmlsZVR5cGUsIF9leHBlY3RlZE1JTUVUeXBlKTsKKyAgICByZWFkRmlsZShmaWxlVVJM
LCBfZXhwZWN0ZWRGaWxlU2l6ZSwgX2V4cGVjdGVkRmlsZU5hbWUsIF9leHBlY3RlZEZpbGVUeXBl
LCBfZXhwZWN0ZWRNSU1FVHlwZSwgX2V4cGVjdGVkRmlsZURhdGEpOwogCiAgICAgX3Jlc3BvbnNl
UG9saWN5ID0gcmVzcG9uc2VQb2xpY3k7CiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMzksNiArMTQx
LDcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW0KIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6
KE5TRGF0YSAqKWRvY3VtZW50RGF0YQogewogICAgIEVYUEVDVF9FUShfZXhwZWN0ZWRGaWxlU2l6
ZSwgZG9jdW1lbnREYXRhLmxlbmd0aCk7CisgICAgRVhQRUNUX1RSVUUoW19leHBlY3RlZEZpbGVE
YXRhIGlzRXF1YWxUb0RhdGE6ZG9jdW1lbnREYXRhXSk7CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRG
aW5pc2hRdWlja0xvb2tMb2FkKTsKICAgICBFWFBFQ1RfVFJVRShfZGlkU3RhcnRRdWlja0xvb2tM
b2FkKTsKICAgICBfZGlkRmluaXNoUXVpY2tMb29rTG9hZCA9IFlFUzsKQEAgLTIxOSwxMiArMjIy
LDE0IEBAIC0gKHZvaWQpdmVyaWZ5RG93bmxvYWQKICAgICBFWFBFQ1RfVFJVRShbTlNGaWxlTWFu
YWdlci5kZWZhdWx0TWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOltfZG93bmxvYWREZXN0aW5hdGlv
blVSTCBwYXRoXV0pOwogCiAgICAgTlNVSW50ZWdlciBkb3dubG9hZEZpbGVTaXplOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IGRvd25sb2FkRmlsZURhdGE7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBkb3dubG9hZEZpbGVOYW1lOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gZG93bmxvYWRGaWxl
VHlwZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRvd25sb2FkTUlNRVR5cGU7Ci0gICAgcmVh
ZEZpbGUoX2Rvd25sb2FkRGVzdGluYXRpb25VUkwuZ2V0KCksIGRvd25sb2FkRmlsZVNpemUsIGRv
d25sb2FkRmlsZU5hbWUsIGRvd25sb2FkRmlsZVR5cGUsIGRvd25sb2FkTUlNRVR5cGUpOworICAg
IHJlYWRGaWxlKF9kb3dubG9hZERlc3RpbmF0aW9uVVJMLmdldCgpLCBkb3dubG9hZEZpbGVTaXpl
LCBkb3dubG9hZEZpbGVOYW1lLCBkb3dubG9hZEZpbGVUeXBlLCBkb3dubG9hZE1JTUVUeXBlLCBk
b3dubG9hZEZpbGVEYXRhKTsKIAogICAgIEVYUEVDVF9FUShfZXhwZWN0ZWRGaWxlU2l6ZSwgZG93
bmxvYWRGaWxlU2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoW19leHBlY3RlZEZpbGVEYXRhIGlzRXF1
YWxUb0RhdGE6ZG93bmxvYWRGaWxlRGF0YS5nZXQoKV0pOwogICAgIEVYUEVDVF9XS19TVFJFUShf
ZXhwZWN0ZWRGaWxlTmFtZS5nZXQoKSwgZG93bmxvYWRGaWxlTmFtZS5nZXQoKSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKF9leHBlY3RlZEZpbGVUeXBlLmdldCgpLCBkb3dubG9hZEZpbGVUeXBlLmdl
dCgpKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX2V4cGVjdGVkTUlNRVR5cGUuZ2V0KCksIGRvd25s
b2FkTUlNRVR5cGUuZ2V0KCkpOwpAQCAtNDY1LDEwICs0NzAsMTEgQEAgVEVTVChRdWlja0xvb2ss
IExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiAgICAgV2ViVGhyZWFkTG9jaygpOwogCiAgICAgTlNV
SW50ZWdlciBleHBlY3RlZEZpbGVTaXplOworICAgIFJldGFpblB0cjxOU0RhdGE+IGV4cGVjdGVk
RmlsZURhdGE7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVOYW1lOwogICAg
IFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlVHlwZTsKICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IGV4cGVjdGVkTUlNRVR5cGU7Ci0gICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTCwg
ZXhwZWN0ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhw
ZWN0ZWRNSU1FVHlwZSk7CisgICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTCwgZXhwZWN0ZWRG
aWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhwZWN0ZWRNSU1F
VHlwZSwgZXhwZWN0ZWRGaWxlRGF0YSk7CiAKICAgICBOU0RpY3Rpb25hcnkgKnF1aWNrTG9va0Nv
bnRlbnQgPSBtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tMb29rQ29udGVudDsKICAgICBOU1N0
cmluZyAqZmlsZVBhdGggPSBxdWlja0xvb2tDb250ZW50W1dlYlF1aWNrTG9va0ZpbGVOYW1lS2V5
XTsKQEAgLTQ3OCw2ICs0ODQsOCBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tMb29rQ29u
dGVudCkKIAogICAgIE5TRGljdGlvbmFyeSAqZmlsZUF0dHJpYnV0ZXMgPSBbTlNGaWxlTWFuYWdl
ci5kZWZhdWx0TWFuYWdlciBhdHRyaWJ1dGVzT2ZJdGVtQXRQYXRoOmZpbGVQYXRoIGVycm9yOm5p
bF07CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRmlsZVNpemUsIFtmaWxlQXR0cmlidXRlc1tOU0Zp
bGVTaXplXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOworICAgIAorICAgIEVYUEVDVF9UUlVFKFtl
eHBlY3RlZEZpbGVEYXRhIGlzRXF1YWxUb0RhdGE6W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZG
aWxlOmZpbGVQYXRoXV0pOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW21haW5GcmFtZSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiYWJvdXQ6YmxhbmsiXV1dOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>