<?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>202081</bug_id>
          
          <creation_ts>2019-09-21 16:38:54 -0700</creation_ts>
          <short_desc>Require a WebsiteDataStore when creating or resuming downloads</short_desc>
          <delta_ts>2019-09-24 06:59:21 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573102</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 16:38:54 -0700</bug_when>
    <thetext>Move DownloadClient from WebProcessPool to WebsiteDataStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573103</commentid>
    <comment_count>1</comment_count>
      <attachid>379324</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 16:41:13 -0700</bug_when>
    <thetext>Created attachment 379324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573104</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 16:43:40 -0700</bug_when>
    <thetext>I&apos;m assuming this will break some API that GTK already has.  That API should be deprecated and replaced by one on WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573106</commentid>
    <comment_count>3</comment_count>
      <attachid>379325</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 16:52:27 -0700</bug_when>
    <thetext>Created attachment 379325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573107</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-21 16:53:02 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573110</commentid>
    <comment_count>5</comment_count>
      <attachid>379326</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 17:53:02 -0700</bug_when>
    <thetext>Created attachment 379326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573111</commentid>
    <comment_count>6</comment_count>
      <attachid>379327</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 17:57:25 -0700</bug_when>
    <thetext>Created attachment 379327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573112</commentid>
    <comment_count>7</comment_count>
      <attachid>379328</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 18:01:37 -0700</bug_when>
    <thetext>Created attachment 379328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573113</commentid>
    <comment_count>8</comment_count>
      <attachid>379329</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-21 18:04:59 -0700</bug_when>
    <thetext>Created attachment 379329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573353</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-23 10:53:33 -0700</bug_when>
    <thetext>iOS test failure unrelated.  This is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573395</commentid>
    <comment_count>10</comment_count>
      <attachid>379329</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-23 13:32:51 -0700</bug_when>
    <thetext>Comment on attachment 379329
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKContext.h:116
&gt; +WK_EXPORT void WKContextSetDownloadClient(WKContextRef context, const WKContextDownloadClientBase* client) WK_C_API_DEPRECATED_WITH_REPLACEMENT(WKWebsiteDataStoreSetDownloadClient);

Not quite ready.  I need to shim WKContextSetDownloadClient onto WKWebsiteDataStoreSetDownloadClient for an internal client during the transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573423</commentid>
    <comment_count>11</comment_count>
      <attachid>379397</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-23 14:45:55 -0700</bug_when>
    <thetext>Created attachment 379397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573485</commentid>
    <comment_count>12</comment_count>
      <attachid>379409</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-23 17:11:43 -0700</bug_when>
    <thetext>Created attachment 379409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573486</commentid>
    <comment_count>13</comment_count>
      <attachid>379410</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-23 17:14:20 -0700</bug_when>
    <thetext>Created attachment 379410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573509</commentid>
    <comment_count>14</comment_count>
      <attachid>379414</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-23 18:28:31 -0700</bug_when>
    <thetext>Created attachment 379414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573603</commentid>
    <comment_count>15</comment_count>
      <attachid>379414</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-24 00:57:56 -0700</bug_when>
    <thetext>Comment on attachment 379414
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1661
&gt; -    return webkitWebContextGetOrCreateDownload(&amp;context-&gt;priv-&gt;processPool-&gt;download(initiatingPage, request));
&gt; +    return webkitWebContextGetOrCreateDownload(&amp;context-&gt;priv-&gt;processPool-&gt;download(WebKit::WebsiteDataStore::defaultDataStore().get(), initiatingPage, request));

We never use the default data store in the GLib API. Here we should use the web context data store. So this should be:

return webkitWebContextGetOrCreateDownload(&amp;context-&gt;priv-&gt;processPool-&gt;download(webkitWebsiteDataManagerGetDataStore(context-&gt;priv-&gt;websiteDataManager.get()), initiatingPage, request));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573622</commentid>
    <comment_count>16</comment_count>
      <attachid>379414</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-24 05:32:24 -0700</bug_when>
    <thetext>Comment on attachment 379414
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1330
&gt; +    PAL::SessionID sessionID = dataStore.sessionID();

auto

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1362
&gt; +    PAL::SessionID sessionID = dataStore.sessionID();

auto

&gt; Source/WebKit/UIProcess/API/C/WKContext.cpp:175
&gt; +        explicit DownloadClient(const WKContextDownloadClientBase* client, WKContextRef context)

no need for explicit anymore

&gt; Source/WebKit/UIProcess/API/glib/WebKitDownloadClient.cpp:43
&gt; +    void didStart(DownloadProxy&amp; downloadProxy) override

final here and below.

&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.h:60
&gt; +    static Ref&lt;DownloadProxy&gt; create(DownloadProxyMap&amp;, WebsiteDataStore&amp;, WebProcessPool&amp;, const WebCore::ResourceRequest&amp;);

Could take Ref&lt;WebsiteDataStore&gt;&amp;&amp;, ditto for WebProcessPool.

&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.h:103
&gt; +    explicit DownloadProxy(DownloadProxyMap&amp;, WebsiteDataStore&amp;, WebProcessPool&amp;, const WebCore::ResourceRequest&amp;);

No need of explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573626</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-24 06:18:50 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #15)
&gt; Comment on attachment 379414 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379414&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1661
&gt; &gt; -    return webkitWebContextGetOrCreateDownload(&amp;context-&gt;priv-&gt;processPool-&gt;download(initiatingPage, request));
&gt; &gt; +    return webkitWebContextGetOrCreateDownload(&amp;context-&gt;priv-&gt;processPool-&gt;download(WebKit::WebsiteDataStore::defaultDataStore().get(), initiatingPage, request));
&gt; 
&gt; We never use the default data store in the GLib API. Here we should use the
&gt; web context data store. So this should be:
&gt; 
&gt; return
&gt; webkitWebContextGetOrCreateDownload(&amp;context-&gt;priv-&gt;processPool-
&gt; &gt;download(webkitWebsiteDataManagerGetDataStore(context-&gt;priv-
&gt; &gt;websiteDataManager.get()), initiatingPage, request));

I&apos;m about to remove the context&apos;s WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573641</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-24 06:58:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/r250292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573642</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-24 06:59:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/55661326&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379324</attachid>
            <date>2019-09-21 16:41:13 -0700</date>
            <delta_ts>2019-09-21 16:52:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190921164112.patch</filename>
            <type>text/plain</type>
            <size>114549</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgYWJzdHJhY3Rpb25zIGFyb3VuZCBXZWJzaXRlRGF0YVN0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJT
Y3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dG
ZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDE3
MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTMs
NyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgot
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsKKyAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25sb2Fk
UHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRv
d25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgp
KTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFr
ZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgmcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwog
ICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVz
dFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywg
VVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQu
bGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3du
bG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcgKzIx
Myw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAg
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92
aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0ICsz
NTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAgICAg
IG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGllbnQp
Ci0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3du
bG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xp
ZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMTEsNTUgKzEyOTksNiBA
QCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVh
dGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAoaW5p
dGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8vIFJl
cXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJM
IG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRv
IHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7
Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0
aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWlu
c0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAgICBp
ZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNl
ckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpV
c2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNl
c3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdn
ZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25s
b2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0KLQot
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CkBAIC0xNjA0LDEzICsxNTQzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVm
YXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7CiB9
CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5Owot
fQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhp
c3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0g
ICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2Jq
ZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdvcmtQ
cm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAgCi0g
ICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAg
V2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3
ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAg
V2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwxNyAr
NTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRv
d25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgpAQCAtNTUsOSArNTMs
NiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7
CiB9OwpAQCAtMTY4LDEwNyArMTYzLDggQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiB3a0NsaWVudCkKK3ZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqKQogewotICAgIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRTdGFydChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNz
UG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShXZWJLaXQ6OnRvQVBJKCZwcm9j
ZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKLQotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZh
bHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vz
c1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0
Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCks
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wp
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNzYsMTQgKzE3MiwxNCBAQCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9h
ZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5kb3dubG9hZCgwLCBX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVm
IHBhdGgpCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJl
ZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIFdlYktp
dDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGgpKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxMSBAQCBXS19FWFBP
UlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlv
bkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERv
d25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QpOwotV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBw
YXRoKTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVS
TFJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxv
YWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1Jl
ZiBwYXRoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVzdW1lRG93bmxvYWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbml0
aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
d2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLV2Vic2l0ZURhdGFT
dG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaykoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZpbmlzaENh
bGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWREaWRDYW5jZWwpKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
KShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50VjAgeworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2g7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGYWlsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2FuY2VsOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Rp
ZENyYXNoOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
OworfSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLy8gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1
ZGUgIldLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtNDYsNiArNTAsMTIgQEAKICNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCiBXS1R5cGVJRCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CkBAIC03MjUsMyArNzM1LDExNSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGlj
IEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93
bmxvYWRDbGllbnQoY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFs
bG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVz
dGluYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OnRvQVBJ
KCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QoV2Vi
S2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPERvd25sb2FkQ2xpZW50
PihjbGllbnQpKTsKK30KKworV0tEb3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZFVSTFJlcXVlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlKS0+ZG93bmxvYWQobnVsbHB0ciwgbnVsbHB0ciwgV2ViS2l0Ojp0b0ltcGwocmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7Cit9CisKK1dLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlKS0+cmVzdW1lRG93bmxvYWQobnVs
bHB0ciwgbnVsbHB0ciwgKldlYktpdDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RG
U3RyaW5nKHBhdGgpKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CkBAIC0xNDMsNiArMTQ0LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWwKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNs
ZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0
aW9uIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgY29uc3QgV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVSTFJlcXVlc3QoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5n
UmVmIHBhdGgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtNDIsOCArNDEs
NiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTYyLDggKzU5LDYgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFBy
b2Nlc3NQb29sOwogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09i
akNQdHI8aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7Ci0g
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0
ZTsKLQogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNz
aW9uOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC0zNjcsMTMgKzM2MiwxMSBA
QCAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpCiAKIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewotICAgIHJldHVybiBfZG93bmxv
YWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewotICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpE
b3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC02MTUsMTIgKzYwOCwxMiBAQCAt
ICh2b2lkKV9zZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKIC0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gKF9XS0Rvd25sb2Fk
ICopX3Byb2Nlc3NQb29sLT5kb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpLndyYXBw
ZXIoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5wdHIoKSwgcGF0aCkpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNl
bmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERl
bGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04MSw4ICs4MSw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
LS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
LSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVD
QVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkVVJMUmVx
dWVzdCIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkp
OworCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJz
aXRlRGF0YVN0b3JlLl9yZXN1bWVEb3dubG9hZEZyb21EYXRhIiwgbWFjb3MoMTAuMTQuNCwgV0tf
TUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAK
KyNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTM4LDYgKzQw
LDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CkBAIC00NTUsNiArNDU4LDI3IEBAIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKKy0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZG93bmxvYWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKK30K
KworLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KWRvd25sb2FkRGVsZWdhdGUKK3sKKyAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVs
ZWdhdGU7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWVSZWY8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworfQorCist
IChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJu
IHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmRvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9w
YWdlXSwgcmVxdWVzdCkpOworfQorCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5h
dGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gd3JhcHBlcihf
d2Vic2l0ZURhdGFTdG9yZS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7Cit9CisKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnk6KEJPT0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZUQKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2Rvd25sb2FkRGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI1
MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tEb3dubG9hZDsKIEBjbGFzcyBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wg
X1dLRG93bmxvYWREZWxlZ2F0ZTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZTsKIApAQCAtNTksNiArNjEsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOikgTlNTdHJpbmcgKl9zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyIiwgbWFjb3MoMTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4y
LCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxl
Z2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
IF9OdWxsYWJsZSl3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogCiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTAxNzAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NywxNyArNDcsMTcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAg
ICAvLyBGcm9tIEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERv
d25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2
b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlz
aChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZh
aWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93
bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZENyZWF0ZURlc3Rp
bmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYpIGZp
bmFsOwotICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25s
b2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJzaXRlRGF0
YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3du
bG9hZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFBy
b3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoV2Vi
c2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDYW5jZWwoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25s
b2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJzaXRlRGF0YVN0
b3JlJiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiwgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJzaXRlRGF0YVN0b3JlJiwgRG93
bmxvYWRQcm94eSYpIGZpbmFsOwogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIHZvaWQg
dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0JKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIERvd25sb2FkQ2xpZW50OjpEb3dubG9hZENsaWVu
dChpZCA8X1dLRG8KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFz
aCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFByb2Nl
c3NEaWRDcmFzaDopXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENs
aWVudDo6ZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5
LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViUHJvY2VzcwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2Vic2l0ZURhdGFT
dG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBp
ZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpICYmIHJlc3BvbnNlLmlz
U3VjY2Vzc2Z1bCgpKSB7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSgKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKQordm9p
ZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkKIHsKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxv
YWQoKSkgewpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFdlYlAKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQb29sJiwgRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBTeXN0ZW0gUHJldmlldyBuZWVkcyBjb2Rl
IGhlcmUuCiAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0xNDcsNyArMTQ3LDcg
QEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0pLmdldCgp
XTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vi
c2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb24pCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3du
bG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTE2MCw3ICsxNjAsNyBA
QCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvCiAgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3RpbmF0
aW9uOmRlc3RpbmF0aW9uXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENy
YXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKK3ZvaWQg
RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
aWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMTc1LDcg
KzE3NSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWIKICAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndyYXBwZXIoZG93bmxvYWRQ
cm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2FkQ2xpZW50Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJzaXRlRGF0YVN0b3JlJiwg
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVu
Y3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgRG93bmxvYWRD
bGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2kKICAgICB9CiB9CiAKLXZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTIy
NCw3ICsyMjQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2ViUHJvY2VzCiAg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJzaXRlRGF0YVN0b3Jl
JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTIzOSw3ICsyMzksNyBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQCiAgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJy
b3IubnNFcnJvcigpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZENhbmNlbChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJv
eHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXMKICAgICAgICAgW21fZGVsZWdhdGUg
X2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lkIERv
d25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERv
d25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTCkKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0
cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCShyZXZpc2lvbiAyNTAx
NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0ICs1MSwxNSBAQCBzdGF0aWMgdWludDY0X3QgZ2Vu
ZXJhdGVEb3dubG9hZElEKCkKICAgICByZXR1cm4gKyt1bmlxdWVEb3dubG9hZElEOwogfQogICAg
IAotUmVmPERvd25sb2FkUHJveHk+IERvd25sb2FkUHJveHk6OmNyZWF0ZShEb3dubG9hZFByb3h5
TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorUmVmPERvd25sb2FkUHJveHk+IERv
d25sb2FkUHJveHk6OmNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRG93bmxvYWRQcm94eShkb3dubG9hZFByb3h5TWFwLCBwcm9jZXNzUG9vbCwg
cmVzb3VyY2VSZXF1ZXN0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG93bmxvYWRQcm94
eShkb3dubG9hZFByb3h5TWFwLCBkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVl
c3QpKTsKIH0KIAotRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFw
JiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorRG93bmxvYWRQcm94eTo6RG93bmxvYWRQ
cm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAgICAgOiBtX2Rvd25sb2FkUHJveHlNYXAoZG93bmxv
YWRQcm94eU1hcCkKICAgICAsIG1fcHJvY2Vzc1Bvb2woJnByb2Nlc3NQb29sKQorICAgICwgbV9k
YXRhU3RvcmUoJmRhdGFTdG9yZSkKICAgICAsIG1fZG93bmxvYWRJRChnZW5lcmF0ZURvd25sb2Fk
SUQoKSkKICAgICAsIG1fcmVxdWVzdChyZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC02Nyw2ICs2OCw3
IEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm8KIERvd25sb2FkUHJv
eHk6On5Eb3dubG9hZFByb3h5KCkKIHsKICAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2wpOworICAg
IEFTU0VSVCghbV9kYXRhU3RvcmUpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmNhbmNlbCgp
CkBAIC04MiwxNCArODQsMTYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKCkKIHsK
ICAgICBBU1NFUlQobV9wcm9jZXNzUG9vbCk7CiAgICAgbV9wcm9jZXNzUG9vbCA9IG51bGxwdHI7
CisgICAgQVNTRVJUKG1fZGF0YVN0b3JlKTsKKyAgICBtX2RhdGFTdG9yZSA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKIHsKLSAgICBpZiAoIW1f
cHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5wcm9jZXNzRGlkQ3Jhc2goKm1fcHJv
Y2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5wcm9j
ZXNzRGlkQ3Jhc2goKm1fZGF0YVN0b3JlLCAqdGhpcyk7CiB9CiAKIFdlYlBhZ2VQcm94eSogRG93
bmxvYWRQcm94eTo6b3JpZ2luYXRpbmdQYWdlKCkgY29uc3QKQEAgLTEyNSwxMCArMTI5LDEwIEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3UKICAgICBpZiAobV9yZWRp
cmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHJlcXVlc3Qu
dXJsKCkpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQocmVxdWVzdC51cmwoKSk7CiAK
LSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRTdGFydCgq
bV9wcm9jZXNzUG9vbCwgKnRoaXMpOworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgp
LmRpZFN0YXJ0KCptX2RhdGFTdG9yZSwgKnRoaXMpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTEz
OCw3ICsxNDIsMTIgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYQog
CiAgICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5ID0gQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBj
aGFsbGVuZ2VJRCwgbWFrZVJlZigqbV9wcm9jZXNzUG9vbC0+bmV0d29ya2luZ1Byb2Nlc3NDb25u
ZWN0aW9uKCkpLCBudWxscHRyKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCptX3Byb2Nlc3NQb29sLCAqdGhp
cywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5nZXQoKSk7CisgICAgaWYgKCFtX2RhdGFT
dG9yZSkgeworICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LT5saXN0ZW5lcigp
LmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNh
bmNlbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9kYXRhU3RvcmUtPmRv
d25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCptX2RhdGFT
dG9yZSwgKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuZ2V0KCkpOwogfQogCiB2
b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9w
b3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkBA
IC0xNDYsNyArMTU1LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoUmVz
bwogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QoKm1fcHJvY2Vzc1Bvb2ws
ICp0aGlzLCBXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QpIHsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVl
c3QoKm1fZGF0YVN0b3JlLCAqdGhpcywgV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVj
dFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQo
bmV3UmVxdWVzdC51cmwoKSk7CiAKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Byb2Nl
c3NQb29sKQpAQCAtMTYyLDI2ICsxNzEsMjYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2Vu
ZFJlcXVlc3QoUmVzbwogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKm1fcHJvY2Vzc1Bv
b2wsICp0aGlzLCByZXNwb25zZSk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCku
ZGlkUmVjZWl2ZVJlc3BvbnNlKCptX2RhdGFTdG9yZSwgKnRoaXMsIHJlc3BvbnNlKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCiB7Ci0g
ICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURh
dGEoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBsZW5ndGgpOworICAgIG1fZGF0YVN0b3JlLT5kb3du
bG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX2RhdGFTdG9yZSwgKnRoaXMsIGxlbmd0aCk7
CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRh
U3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9h
ZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCptX3Byb2Nl
c3NQb29sLCAqdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRvd25sb2FkSUQgPSBkb3dubG9hZElEXSAoQWxsb3dPdmVyd3JpdGUg
YWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgeworICAgIG1fZGF0YVN0b3JlLT5k
b3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCpt
X2RhdGFTdG9yZSwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJRF0gKEFsbG93T3Zlcndy
aXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICgh
ZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CkBAIC0xOTYsMTggKzIwNSwxOCBAQCB2b2lkIERvd25s
b2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlk
Q3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGlmICghbV9wcm9j
ZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uKCptX3By
b2Nlc3NQb29sLCAqdGhpcywgcGF0aCk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50
KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24oKm1fZGF0YVN0b3JlLCAqdGhpcywgcGF0aCk7CiB9CiAK
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmluaXNoKCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKm1fcHJvY2Vzc1Bvb2wsICp0aGlz
KTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKm1fZGF0YVN0
b3JlLCAqdGhpcyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBv
YmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5p
c2hlZCgqdGhpcyk7CkBAIC0yMjMsMTIgKzIzMiwxMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0
YT4gY3JlYXRlRGF0YShjb25zCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
KQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3Jlc3VtZURhdGEgPSBjcmVhdGVEYXRhKHJlc3VtZURhdGEp
OwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKCptX3Byb2Nl
c3NQb29sLCAqdGhpcywgZXJyb3IpOworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgp
LmRpZEZhaWwoKm1fZGF0YVN0b3JlLCAqdGhpcywgZXJyb3IpOwogCiAgICAgLy8gVGhpcyBjYW4g
Y2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3du
bG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjM4LDcgKzI0Nyw3IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IElQQzoKIHsKICAgICBtX3Jlc3Vt
ZURhdGEgPSBjcmVhdGVEYXRhKHJlc3VtZURhdGEpOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS5kaWRDYW5jZWwoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBtX2Rh
dGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRDYW5jZWwoKm1fZGF0YVN0b3JlLCAqdGhpcyk7
CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUg
ZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEwICs1MywxMSBA
QCBjbGFzcyBEb3dubG9hZElEOwogY2xhc3MgRG93bmxvYWRQcm94eU1hcDsKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsK
IAogY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPERvd25sb2FkUHJveHk+IGNyZWF0ZShEb3dubG9hZFByb3h5TWFw
JiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBzdGF0aWMgUmVmPERvd25sb2FkUHJveHk+IGNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiwgV2Vi
c2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgfkRvd25sb2FkUHJveHkoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxv
YWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQpAQCAtOTksNyArMTAwLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShE
b3dubG9hZFByb3h5TWFwJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAm
LCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKQEAgLTExOSw2ICsxMjAsNyBAQCBwcml2YXRlOgogCiAgICAgRG93bmxvYWRQcm94eU1hcCYg
bV9kb3dubG9hZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNz
UG9vbDsKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7CiAgICAgRG93
bmxvYWRJRCBtX2Rvd25sb2FkSUQ7CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBtX3Jlc3VtZURh
dGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHlNYXAuY3BwCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBEb3dubG9hZFByb3h5TWFwOjphcHBsaWNhdGlvbldpbGxF
bgogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSwgMCk7CiB9CiAKLURvd25sb2FkUHJveHkmIERv
d25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkK
K0Rvd25sb2FkUHJveHkmIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIGF1
dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2Vzc1Bv
b2wsIHJlc291cmNlUmVxdWVzdCk7CisgICAgYXV0byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVl
c3QpOwogICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRv
d25sb2FkUHJveHkuY29weVJlZigpKTsKIAogICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJBZGRp
bmcgZG93bmxvYWQgJSIgUFJJdTY0ICIgdG8gVUlQcm9jZXNzIERvd25sb2FkUHJveHlNYXAiLCBk
b3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAko
cmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBE
b3dubG9hZFByb3h5OwogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIFByb2Nlc3NB
c3NlcnRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
CiAKIGNsYXNzIERvd25sb2FkUHJveHlNYXAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RG93bmxv
YWRQcm94eU1hcD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTQsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eU1hcChOZXR3b3JrUHJvY2Vz
c1Byb3h5Jik7CiAgICAgfkRvd25sb2FkUHJveHlNYXAoKTsKIAotICAgIERvd25sb2FkUHJveHkm
IGNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdl
YnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZFByb3h5Jik7CiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0LmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpZiBF
TkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTE3NiwxMiArMTc3LDEyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcEkKICAgICB9CiB9CiAKLURv
d25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5JiBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAg
aWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1h
a2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4oKnRoaXMpOwogCi0gICAgcmV0dXJuIG1fZG93bmxv
YWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJl
cXVlc3QpOworICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkoZGF0YVN0b3JlLCBtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkm
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmKTsKIAotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJv
eHkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWRQcm94eSYg
Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAy
NTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNs
dWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5Lmgi
CiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cy5oIgpAQCAtMTA3LDYgKzEwOSw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3Rv
cmUoUmVmPFcKICAgICAsIG1fYXV0aGVudGljYXRvck1hbmFnZXIobWFrZVVuaXF1ZVJlZjxBdXRo
ZW50aWNhdG9yTWFuYWdlcj4oKSkKICNlbmRpZgogICAgICwgbV9jbGllbnQobWFrZVVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtl
VW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCiAjaWYgSEFWRShBUFBfU1NPKQogICAg
ICwgbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvcihtYWtlVW5pcXVlUmVmPFNPQXV0aG9yaXph
dGlvbkNvb3JkaW5hdG9yPigpKQogI2VuZGlmCkBAIC0xMjgsNiArMTMxLDcgQEAgV2Vic2l0ZURh
dGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShQQUw6OgogICAgICwgbV9hdXRoZW50aWNhdG9yTWFu
YWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigpKQogI2VuZGlmCiAgICAg
LCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KCkpCisgICAg
LCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4oKSkK
ICNpZiBIQVZFKEFQUF9TU08pCiAgICAgLCBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yKG1h
a2VVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+KCkpCiAjZW5kaWYKQEAgLTIw
NzQsNiArMjA3OCw4NSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpZENyZWF0ZU5ldHdvcmtQ
CiB7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0RG93bmxvYWRDbGllbnQoVW5pcXVl
UmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fZG93bmxvYWRDbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK0Rvd25sb2FkUHJveHkqIFdlYnNpdGVEYXRhU3Rv
cmU6OmRvd25sb2FkKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQoreworICAgIGlmICghcHJvY2Vzc1Bvb2wpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBwb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7
CisgICAgICAgICAgICBwcm9jZXNzUG9vbCA9IHBvb2w7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb2Nlc3NQb29sKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KCpw
cm9jZXNzUG9vbCwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UpOworICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgp
IDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKworICAgIGlmIChpbml0aWF0
aW5nUGFnZSkKKyAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2FkUmVxdWVzdChk
b3dubG9hZFByb3h5KTsKKworICAgIGlmIChwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkg
eworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIC8vIFJlcXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3Jp
Z2luYWwgVVJMIG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgorICAgICAgICAvLyBXZSBzZXQgdGhl
IHZhbHVlIHRvIHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KKyAgICAgICAgaWYgKGluaXRpYXRp
bmdQYWdlKSB7CisgICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwg
eyB9LCBpbml0aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07CisgICAgICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVS
TCk7CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJh
YmxlRG9tYWluc0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7CisgICAg
ICAgICAgICBpZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6VXNlckFnZW50KSkKKyAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQ
VXNlckFnZW50KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwo
KSk7CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKKyAg
ICAgICAgICAgIGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpVc2VyQWdlbnQpKQorICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhU
VFBVc2VyQWdlbnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKKyAgICAgICAg
fQorICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOworICAgICAgICBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkRvd25sb2FkUmVxdWVzdChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgp
LCB1cGRhdGVkUmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpLCAwKTsKKyAgICAgICAgcmV0dXJu
ICZkb3dubG9hZFByb3h5OworICAgIH0KKworICAgIHJldHVybiAmZG93bmxvYWRQcm94eTsKK30K
KworRG93bmxvYWRQcm94eSogV2Vic2l0ZURhdGFTdG9yZTo6cmVzdW1lRG93bmxvYWQoV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAo
IXByb2Nlc3NQb29sKSB7CisgICAgICAgIGZvciAoYXV0byYgcG9vbCA6IFdlYlByb2Nlc3NQb29s
OjphbGxQcm9jZXNzUG9vbHMoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wgPSBwb29sOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwcm9jZXNzUG9v
bCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0g
Y3JlYXRlRG93bmxvYWRQcm94eSgqcHJvY2Vzc1Bvb2wsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0
aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGluZ1Bh
Z2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOworCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRl
bnNpb25IYW5kbGU7CisgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICBpZiAocHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChzZXNzaW9uSUQs
IGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwg
cGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgICAgICByZXR1cm4gJmRvd25s
b2FkUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuICZkb3dubG9hZFByb3h5OworfQorCitEb3du
bG9hZFByb3h5JiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nl
c3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJQ
YWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSkKK3sKKyAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0g
cHJvY2Vzc1Bvb2wuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5jcmVhdGVEb3dubG9hZFByb3h5KCp0
aGlzLCByZXF1ZXN0KTsKKyAgICBkb3dubG9hZFByb3h5LnNldE9yaWdpbmF0aW5nUGFnZShvcmln
aW5hdGluZ1BhZ2UpOworICAgIHJldHVybiBkb3dubG9hZFByb3h5OworfQorCiBib29sIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihTdHJp
bmcmJiBpZGVudGlmaWVyKQogewogICAgIGlmIChtX25ldHdvcmtpbmdIYXNCZWd1bikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiAr
NTgsOCBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xhc3MgRGF0YTsKK2NsYXNzIERv
d25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogfQogCkBAIC02OSw2ICs3MSw3
IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOworY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIFNlY0tleVBy
b3h5U3RvcmU7CiBjbGFzcyBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTsKIGNsYXNzIFNPQXV0aG9y
aXphdGlvbkNvb3JkaW5hdG9yOwpAQCAtMjU5LDYgKzI2MiwxMSBAQCBwdWJsaWM6CiAgICAgV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4mJiBj
bGllbnQpIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KIAorICAgIEFQSTo6RG93bmxv
YWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9kb3dubG9hZENsaWVudC5nZXQo
KTsgfQorICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRD
bGllbnQ+JiYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkq
IG9yaWdpbmF0aW5nUGFnZSk7CisgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWQoV2ViUHJvY2Vz
c1Bvb2wqLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7
IH0pOworICAgIERvd25sb2FkUHJveHkqIHJlc3VtZURvd25sb2FkKFdlYlByb2Nlc3NQb29sKiwg
V2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIEFQSTo6SFRUUENvb2tpZVN0b3JlJiBjb29raWVT
dG9yZSgpOwogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTM2MCw2ICszNjgs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNs
aWVudD4gbV9jbGllbnQ7CisgICAgVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93
bmxvYWRDbGllbnQ7CiAKICAgICBSZWZQdHI8QVBJOjpIVFRQQ29va2llU3RvcmU+IG1fY29va2ll
U3RvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEzOCw2ICsxMTM4LDcg
QEAKIAkJNUNFOTEyMTIyMjkzQzI3ODAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBG
MjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgKi87IH07CiAJCTVD
RTkxMjEzMjI5M0MyNzkwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwRjIyOTNDMjVG
MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1Q0U5MTIxNDIy
OTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwQjIyOTNDMUUwMDA1QkVDNzggLyogV0tNYWluLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUNFQUJBMzMy
MzM2MEQzOTAwNzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0VBQkEzMjIzMzYw
Q0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2MTdBNTJEODFGNDNB
OURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3
MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk2MzEwOEY5NjFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRp
b25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2MzEwOEY5
OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5ODFGOTY3
MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi87IH07CkBA
IC0zNjk0LDYgKzM2OTUsNyBAQAogCQk1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxp
YXJ5UHJvY2Vzc01haW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBwYXRoID0gQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc01h
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0VBQkEyQTIzMzMyNDc3MDA3
OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUdsb2JhbFNldHRp
bmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNFQUJBMzIyMzM2MENFQzAw
Nzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRkVDQjAzMUUxRUQxQzgwMEY4ODUwNCAv
KiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJn
ZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjE3QTUyRDcxRjQzQTlCNjAw
RENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtODEyNyw2ICs4MTI5LDcgQEAKIAkJCQk3Qzg5RDJBMjFB
Njc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggKi8sCiAJCQkJNUM2RTdEODcyMzIz
NjFFNzAwQzIxNTlEIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuY3BwICov
LAogCQkJCTVDNkU3RDg2MjMyMzYxRTcwMEMyMTU5RCAvKiBXS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uUmVmLmggKi8sCisJCQkJNUNFQUJBMzIyMzM2MENFQzAwNzk3Nzk3IC8qIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMUE1NzEwOUMxQUJBMDAyNzAw
MkZBQkJFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgKi8sCiAJCQkJMUE1NzEwOUQxQUJB
MDAyNzAwMkZBQkJFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVJlZi5oICovLAogCQkJCTVDOUU1Njgw
MURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi8sCkBAIC0xMDQyMSw2
ICsxMDQyNCw3IEBACiAJCQkJMUFBNjU0RDExQjE0RjcxNDAwQkYxRDNFIC8qIFdLV2Vic2l0ZURh
dGFSZWNvcmRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NUE4RDJDODE4N0NDRkFCMDBD
MzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzZFN0Q4
ODIzMjM2MjA1MDBDMjE1OUQgLyogV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUNFQUJBMzMyMzM2MEQzOTAwNzk3Nzk3IC8qIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NUE4RDJENjE4
N0QxQzBFMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRTI4NjdBMUM3RjdCQTYwMDY5QUM0RiAvKiBXS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MTA5RjFBQkEwMDI3MDAyRkFCQkUgLyog
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDE4NykKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA5
LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTW92ZSBEb3dubG9hZENsaWVudCBmcm9tIFdlYlByb2Nlc3NQb29sIHRvIFdlYnNpdGVEYXRh
U3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjA4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNo
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldERvd25sb2FkQ2xpZW50
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6c2V0Q29udGV4dERvd25sb2FkQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nLm1tOgorICAgICAgICAoZG93bmxvYWRUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
IChydW5UZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoRG93bmxvYWRN
b25pdG9yU3BlZWRNdWx0aXBsaWVyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHRlYXJEb3duXSk6CisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHN0YXJ0RG93bmxvYWQ6ZXhwZWN0ZWRMZW5ndGg6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06CisgICAgICAgIChydW5UZXN0
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbCk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbCk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisKIDIwMTktMDktMjAg
IEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtFV1NdIEpT
QyBxdWV1ZXMgc2hvdWxkIHJlLWJ1aWxkIFRvVCBhbmQgY29tcGFyZSByZXN1bHRzIG9uIGJ1aWxk
IGZhaWx1cmUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAkocmV2
aXNpb24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxv
YWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1X
ZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbmNsdWRlIDxXZWJL
aXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IApAQCAtNDAsMjIgKzQxLDIzIEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3QKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChsaXN0ZW5lcik7CiB9CiAK
LXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29s
KiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBXS1N0cmluZ1JlZiwgYm9vbCosIGNvbnN0IHZvaWQqKQogewogICAgIGRpZERlY2lk
ZURlc3RpbmF0aW9uID0gdHJ1ZTsKICAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKICAg
ICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0Rvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25DcmFzaCIpLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0Q29udGV4dERv
d25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQorc3RhdGljIHZvaWQgc2V0RG93bmxv
YWRDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRW
MCBjbGllbnQ7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7
CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKIAogICAgIGNsaWVudC5i
YXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwogCi0g
ICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCwgJmNsaWVudC5iYXNlKTsKKyAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0gV0tQYWdlQ29uZmlndXJhdGlvbkdl
dFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24ocGFn
ZSkpLmdldCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXREb3dubG9hZENsaWVudChkYXRh
U3RvcmUsICZjbGllbnQuYmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VQb2xpY3lDbGll
bnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC03Miw5ICs3NCw5IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VQ
b2xpY3lDbGllbnQoV0tQYWdlUmUKIFRFU1QoV2ViS2l0LCBEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uQ3Jhc2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRv
cHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihudWxscHRyKSk7Ci0gICAgc2V0
Q29udGV4dERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgUGxhdGZvcm1XZWJW
aWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0RG93bmxvYWRDbGllbnQod2ViVmll
dy5wYWdlKCkpOwogICAgIHNldFBhZ2VQb2xpY3lDbGllbnQod2ViVmlldy5wYWdlKCkpOwogCiAg
ICAgLy8gVGhlIGxlbmd0aCBvZiB0aGlzIGZpbGVuYW1lIHdhcyBzcGVjaWFsbHkgY2hvc2VuIHRv
IHRyaWdnZXIgdGhlIGNyYXNoIGNvbmRpdGlvbnMgaW4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2Fk
Lm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VDb250ZXh0TWVudUNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KICNp
bmNsdWRlIDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewpAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3Nl
ZE1lCiAgICAgfQogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGlj
IFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1cmUg
dGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFsdWUg
b2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTC4KICAgICBFWFBFQ1RfV0tfU1RS
RVEoImRvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwpAQCAt
ODIsMTQgKzgzLDE2IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd24K
IHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHREb3du
bG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVu
dFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogICAg
IGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCksICZjbGll
bnQuYmFzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0g
YWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3Jv
dXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCks
IHBhZ2VHcm91cC5nZXQoKSk7CisgICAgCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0b3JlKGFkb3B0V0soV0tQ
YWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcucGFnZSgpKSkuZ2V0KCkpOworICAgIFdL
V2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KGRhdGFTdG9yZSwgJmNsaWVudC5iYXNl
KTsKIAogICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7CiAgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKQEAgLTExNCw3ICsx
MTcsNyBAQCBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3duCiAgICAgVXRp
bDo6cnVuKCZkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTsKIH0KIAotc3RhdGljIFdLU3Ry
aW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1Ns
YXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBz
dWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVm
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1Jl
ZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQogewogICAgIC8vIE1ha2Ug
c3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVkIGFuZCBtYXRjaGVzIHRoZSB2
YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBIVE1MLCBhZnRlciBzYW5pdGl6
YXRpb24uCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90ZXN0Ml9kb3dubG9hZEF0dHJpYnV0
ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTEyOSwxNSArMTMyLDE3IEBAIFRF
U1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd24KIHsKICAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRo
SW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVu
dDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBt
ZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogICAgIGNsaWVudC5iYXNlLnZlcnNp
b24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNo
ZXM7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSwgJmNsaWVu
dC5iYXNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBh
ZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91
cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwg
cGFnZUdyb3VwLmdldCgpKTsKIAorICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUg
PSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShhZG9wdFdLKFdLUGFnZUNv
cHlQYWdlQ29uZmlndXJhdGlvbih3ZWJWaWV3LnBhZ2UoKSkpLmdldCgpKTsKKyAgICBXS1dlYnNp
dGVEYXRhU3RvcmVTZXREb3dubG9hZENsaWVudChkYXRhU3RvcmUsICZjbGllbnQuYmFzZSk7CisK
ICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50
LmJhc2UudmVyc2lvbiA9IDA7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyNTAx
NzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxl
Z2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CkBAIC0xNzYsNyArMTc3LDcg
QEAgc3RhdGljIHZvaWQgZG93bmxvYWRUZXN0KERlY2lzaW9uIGRlY2lzaQogCiAgICAgICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25XaXRoQ29udGVudEZpbHRlclNldHRpbmdz
KGRlY2lzaW9uLCBkZWNpc2lvblBvaW50KTsKICAgICAgICAgYXV0byBkb3dubG9hZERlbGVnYXRl
ID0gYWRvcHROUyhbW0NvbnRlbnRGaWx0ZXJpbmdEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
XSk7Ci0gICAgICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVs
ZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtbY29uZmlndXJhdGlvbiB3
ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdl
dCgpXTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tCZWNvbWVE
b3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZpc2lv
biAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWQu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CkBAIC0xMjEsMjMgKzEyMiwyMyBAQCAt
ICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgCiAKIFRFU1QoX1dLRG93bmxv
YWQsIERvd25sb2FkRGVsZWdhdGUpCiB7Ci0gICAgUmV0YWluUHRyPFdLUHJvY2Vzc1Bvb2w+IHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKTsKKyAgICBX
S1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVy
c2lzdGVudERhdGFTdG9yZV07CiAgICAgRG93bmxvYWREZWxlZ2F0ZSAqZG93bmxvYWREZWxlZ2F0
ZSA9IFtbRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW3Byb2Nlc3NQb29sIF9z
ZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGVdOworICAgIFtkYXRhU3RvcmUgX3Nl
dERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CiAKICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKLSAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkRGVsZWdhdGUsIFtwcm9jZXNzUG9vbCBf
ZG93bmxvYWREZWxlZ2F0ZV0pOworICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWREZWxlZ2F0ZSwg
W2RhdGFTdG9yZSBfZG93bmxvYWREZWxlZ2F0ZV0pOwogICAgIH0KIAogICAgIFtkb3dubG9hZERl
bGVnYXRlIHJlbGVhc2VdOwotICAgIEVYUEVDVF9OVUxMKFtwcm9jZXNzUG9vbCBfZG93bmxvYWRE
ZWxlZ2F0ZV0pOworICAgIEVYUEVDVF9OVUxMKFtkYXRhU3RvcmUgX2Rvd25sb2FkRGVsZWdhdGVd
KTsKIH0KIAogc3RhdGljIHZvaWQgcnVuVGVzdChpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IG5h
dmlnYXRpb25EZWxlZ2F0ZSwgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRvd25sb2FkRGVsZWdh
dGUsIE5TVVJMICp1cmwpCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlv
bkRlbGVnYXRlXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBf
c2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlXTsKKyAgICBbW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25s
b2FkRGVsZWdhdGVdOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgaGFzUmVjZWl2ZWRSZXNw
b25zZSA9IGZhbHNlOwpAQCAtMjc4LDcgKzI3OSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIE9yaWdp
bmF0aW5nV2ViVmlldykKICAgICAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAgICAgICAgIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5T
KFtbT3JpZ2luYXRpbmdXZWJWaWV3RG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhXZWJW
aWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICAgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBw
cm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07
CisgICAgICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3Nl
dERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c291cmNlVVJMXV07
CiAgICAgfQogCkBAIC0zNDgsNyArMzQ5LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRS
ZXF1ZXN0T3JpZ2luYQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6W1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVS
TE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF1dOwotICAgIFtbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOltbRG93bmxvYWRSZXF1
ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZE9yaWdpbmFsVVJM
OnNvdXJjZVVSTF1dOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFT
dG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6W1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxVUkw6c291cmNlVVJMXV07CiAK
ICAgICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwogICAgIE5TVVJMICpjb250
ZW50VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwpAQCAtNTA4LDcgKzUwOSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlZGlyZWN0ZWRE
b3dubG9hZCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZG93bmxv
YWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXRE
b3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93
bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBEbyAyIGxvYWRzIGluIHRoZSBzYW1lIHZp
ZXcgdG8gbWFrZSBzdXJlIHRoZSByZWRpcmVjdCBjaGFpbiBpcyBwcm9wZXJseSBjbGVhcmVkIGJl
dHdlZW4gbG9hZHMuCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
PGRpdj5GaXJzdCBsb2FkPC9kaXY+Il07CkBAIC01MzcsNyArNTM4LDcgQEAgVEVTVChfV0tEb3du
bG9hZCwgUmVkaXJlY3RlZExvYWRDb252ZXJ0ZQogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCldOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xd
IF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dl
YlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdh
dGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBleHBlY3RlZE9yaWdpbmF0aW5nV2Vi
VmlldyA9IHdlYlZpZXcuZ2V0KCk7CiAgICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBm
YWxzZTsKQEAgLTU2MCw3ICs1NjEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkU3Vi
ZnJhbWVMb2FkCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0gICAg
W1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdh
dGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9u
XSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRl
LmdldCgpXTsKIAogICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJWaWV3ID0gd2ViVmlldy5nZXQo
KTsKICAgICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwpAQCAtNjE1LDcgKzYx
Niw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkQ2FuY2VsZWRXaGlsZUQKIAogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRl
LmdldCgpXTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVd
IF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgaXNE
b25lID0gZmFsc2U7CiAgICAgZG93bmxvYWRIYXNEZWNpZGVkRGVzdGluYXRpb24gPSBmYWxzZTsK
QEAgLTcxNSw3ICs3MTYsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZEF0dHJpYnV0ZURv
ZXNOCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9hZEF0dHJpYnV0ZVRlc3RE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsK
ICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAg
IFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFT
dG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCI8YSBpZD0nbGluaycgaHJlZj0nZGF0YTosdGVzdCcgZG93bmxvYWQ+
Q2xpY2sgbWUhPC9hPiIgYmFzZVVSTDpuaWxdOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CkBAIC03MzAsNyArNzMxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgU3Rh
cnREb3dubG9hZFdpdGhEb3dubAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRG93bmxv
YWRBdHRyaWJ1dGVUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93
bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGEgaWQ9J2xpbmsnIGhyZWY9J2RhdGE6
LHRlc3QnIGRvd25sb2FkPkNsaWNrIG1lITwvYT4iIGJhc2VVUkw6bmlsXTsKICAgICBbZGVsZWdh
dGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtNzcwLDcgKzc3MSw3IEBAIFRFU1Qo
X1dLRG93bmxvYWQsIENyYXNoQWZ0ZXJEb3dubG9hZERpZEYKICAgICAgICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAgICAgICAgIHByb2Nl
c3NQb29sID0gW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2w7Ci0gICAgICAgIFt3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZG93
bmxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vi
c2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVsZWdhdGUuZ2V0KCk7
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6c291cmNlVVJMXV07CiAKICAgICAgICAgZGlkRG93bmxvYWRTdGFydCA9IGZhbHNlOwpAQCAt
ODU1LDcgKzg1Niw3IEBAIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdXaXRoRG93bmxvYWQK
ICAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0
KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3
Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
LnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsK
KyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERl
bGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICByZXR1cm4gd2ViVmlldzsKIH0K
IApAQCAtOTczLDcgKzk3NCw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRpb25SZXNw
b25zZUYKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3REb3dubG9hZE5hdmlnYXRp
b25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3du
bG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBOU1VSTCAqZmlyc3RVUkwgPSBb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmlsZS9zaW1wbGUuaHRtbCJdOwog
ICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93XTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWRQcm9ncmVzcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oPgpAQCAtMTY3LDcgKzE2OCw3IEBA
IC0gKHZvaWQpc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOihEb3dubG8KIC0gKHZvaWQpdGVhckRv
d24KIHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIG1fd2ViVmlldy5nZXQoKS5jb25m
aWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gbnVsbHB0cjsKKyAgICAg
ICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxv
YWREZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgICAgIFttX3dlYlZpZXcuZ2V0KCkgcmVtb3ZlRnJv
bVN1cGVydmlld107CiAgICAgICAgIG1fd2ViVmlldyA9IG51bGxwdHI7CiAgICAgfQpAQCAtMjM4
LDcgKzIzOSw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93bmxvYWRTdGFydFR5cGUKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIG1fd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgbV93ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHNlbGY7
Ci0gICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX2Rvd25sb2Fk
RGVsZWdhdGUgPSBzZWxmOworICAgIG1fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOwogCiAgICAgYXV0byByZXF1ZXN0
ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vZmlsZSJdXSk7CiAKQEAgLTI0OCw3ICsyNDksNyBAQCAtICh2b2lk
KXN0YXJ0RG93bmxvYWQ6KERvd25sb2FkU3RhcnRUeXBlCiAgICAgICAgIFttX3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG93bmxv
YWRTdGFydFR5cGU6OlN0YXJ0SW5Qcm9jZXNzUG9vbDoKLSAgICAgICAgW21fd2ViVmlldy5nZXQo
KS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6cmVxdWVzdC5n
ZXQoKSBvcmlnaW5hdGluZ1dlYlZpZXc6bnVsbHB0cl07CisgICAgICAgIFttX3dlYlZpZXcuZ2V0
KCkuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9kb3dubG9hZFVSTFJlcXVlc3Q6cmVx
dWVzdC5nZXQoKSBvcmlnaW5hdGluZ1dlYlZpZXc6bnVsbHB0cl07CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9RdWlja0xvb2subW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
MTIgKzIzMiw5IEBAIC0gKHZvaWQpdmVyaWZ5RG93bmxvYWQKIAogc3RhdGljIFJldGFpblB0cjxX
S1dlYlZpZXc+IHJ1blRlc3QoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QsIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsKLSAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRd
KTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZGVsZWdhdGVdOwotCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRlUG9saWN5
QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ107Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0
KCldOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTpkZWxlZ2F0ZV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDggKzcyMiw4IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3AKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0
aW9uQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJh
c2UpOwogCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsK
LSAgICAgICAgeyAxLCB0aGlzIH0sCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGll
bnRWMCBkb3dubG9hZENsaWVudCA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0sCiAgICAgICAgIGRv
d25sb2FkRGlkU3RhcnQsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZQogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKQEAgLTczNyw4ICs3Mzcs
OCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAgICAgICAgIDAs
IC8vIHByb2Nlc3NEaWRDcmFzaDsKICAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTAogICAgIH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4
dCgpLCAmZG93bmxvYWRDbGllbnQuYmFzZSk7Ci0gICAgCisgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgJmRv
d25sb2FkQ2xpZW50LmJhc2UpOworCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25lIG9u
IHRoZSBwYWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAtMjM5MCw0NCArMjM5MCw0NiBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgCiAvLyBXS0Nv
bnRleHREb3dubG9hZENsaWVudAogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0
YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRl
eHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChkYXRhU3RvcmUsIGRvd25s
b2FkKTsKIH0KICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1l
LCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnRleHQs
IGRvd25sb2FkLCBmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZGF0YVN0b3JlLCBkb3dubG9hZCwg
ZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93
bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRl
c3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERp
ZEZpbmlzaChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGRh
dGFTdG9yZSwgZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJy
b3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJvcik7
CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChkYXRhU3RvcmUsIGRvd25sb2FkLCBlcnJvcik7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRDYW5jZWwoY29udGV4dCwgZG93bmxvYWQpOwor
ICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kb3dubG9hZERpZENhbmNlbChkYXRhU3RvcmUsIGRvd25sb2FkKTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJs
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwoZGF0YVN0b3JlLCBkb3dubG9hZCwgdXJsKTsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3Rh
cnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0
YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxuIik7
CiB9CiAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVm
IGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0Q29udHJv
bGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUs
IGJvb2wqJiBhbGxvd092ZXJ3cml0ZSkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RD
b250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsKIAogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25s
b2FkQ2FsbGJhY2tzKSB7CkBAIC0yNDUwLDIxICsyNDUyLDI0IEBAIFdLU3RyaW5nUmVmIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW4KICAgICByZXR1cm4gdG9XSyh0ZW1wb3JhcnlGb2xkZXIg
KyAiLyIgKyBzdWdnZXN0ZWRGaWxlbmFtZSkubGVha1JlZigpOwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCit2
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUgPT0g
VGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxkTG9n
RG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRl
eHQoIkRvd25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5v
dGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwg
V0tVUkxSZWYgdXJsKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25s
b2FkUmVmLCBXS1VSTFJlZiB1cmwpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29u
dHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9h
ZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtYWtl
U3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFkb3B0
V0soV0tVUkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vy
cm9yUmVmIGVycm9yKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJy
b3IpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURh
dGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykgewogICAg
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBmYWlsZWQuXG4i
X3MpOwogCkBAIC0yNDc3LDggKzI0ODIsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZEZhaWwoV0tDCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25l
KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2Fu
Y2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYpCiB7Cisg
ICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgp
KTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY2FuY2VsbGVkLlxuIik7CiAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
NSwxOCArNDA1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdL
UGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmKTsKIAogICAgIC8vIFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250
ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
LCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwotICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmls
ZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWRE
aWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAg
dm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAg
IHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYs
IFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRv
d25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCop
OwotICAgIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
KTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsKLSAg
ICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRT
dGFydChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25s
b2FkUmVmKTsKKyAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0
cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYg
ZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7CisgICAgc3RhdGljIHZvaWQgZG93bmxv
YWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2
b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYs
IFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxv
YWRSZWYsIFdLRXJyb3JSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZv
aWQgZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVm
KTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZv
aWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379325</attachid>
            <date>2019-09-21 16:52:27 -0700</date>
            <delta_ts>2019-09-21 17:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190921165226.patch</filename>
            <type>text/plain</type>
            <size>120648</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgYWJzdHJhY3Rpb25zIGFyb3VuZCBXZWJzaXRlRGF0YVN0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJT
Y3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dG
ZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDE3
MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTMs
NyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgot
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsKKyAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25sb2Fk
UHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRv
d25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgp
KTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFr
ZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgmcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwog
ICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVz
dFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywg
VVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQu
bGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3du
bG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcgKzIx
Myw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAg
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92
aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0ICsz
NTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAgICAg
IG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGllbnQp
Ci0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3du
bG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xp
ZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMTEsNTUgKzEyOTksNiBA
QCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVh
dGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAoaW5p
dGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8vIFJl
cXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJM
IG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRv
IHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7
Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0
aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWlu
c0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAgICBp
ZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNl
ckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpV
c2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNl
c3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdn
ZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25s
b2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0KLQot
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CkBAIC0xNjA0LDEzICsxNTQzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVm
YXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7CiB9
CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5Owot
fQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhp
c3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0g
ICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2Jq
ZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdvcmtQ
cm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAgCi0g
ICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAg
V2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3
ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAg
V2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwxNyAr
NTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRv
d25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgpAQCAtNTUsOSArNTMs
NiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7
CiB9OwpAQCAtMTY4LDEwNyArMTYzLDggQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiB3a0NsaWVudCkKK3ZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqKQogewotICAgIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRTdGFydChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNz
UG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShXZWJLaXQ6OnRvQVBJKCZwcm9j
ZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKLQotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZh
bHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vz
c1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0
Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCks
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wp
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNzYsMTQgKzE3MiwxNCBAQCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9h
ZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5kb3dubG9hZCgwLCBX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVm
IHBhdGgpCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJl
ZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIFdlYktp
dDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGgpKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxMSBAQCBXS19FWFBP
UlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlv
bkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERv
d25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QpOwotV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBw
YXRoKTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVS
TFJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxv
YWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1Jl
ZiBwYXRoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVzdW1lRG93bmxvYWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbml0
aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
d2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLV2Vic2l0ZURhdGFT
dG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaykoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZpbmlzaENh
bGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWREaWRDYW5jZWwpKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
KShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50VjAgeworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2g7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGYWlsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2FuY2VsOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Rp
ZENyYXNoOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
OworfSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLy8gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1
ZGUgIldLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtNDYsNiArNTAsMTIgQEAKICNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCiBXS1R5cGVJRCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CkBAIC03MjUsMyArNzM1LDExNSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGlj
IEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93
bmxvYWRDbGllbnQoY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFs
bG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVz
dGluYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OnRvQVBJ
KCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QoV2Vi
S2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPERvd25sb2FkQ2xpZW50
PihjbGllbnQpKTsKK30KKworV0tEb3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZFVSTFJlcXVlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlKS0+ZG93bmxvYWQobnVsbHB0ciwgbnVsbHB0ciwgV2ViS2l0Ojp0b0ltcGwocmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7Cit9CisKK1dLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlKS0+cmVzdW1lRG93bmxvYWQobnVs
bHB0ciwgbnVsbHB0ciwgKldlYktpdDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RG
U3RyaW5nKHBhdGgpKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CkBAIC0xNDMsNiArMTQ0LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWwKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNs
ZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0
aW9uIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgY29uc3QgV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVSTFJlcXVlc3QoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5n
UmVmIHBhdGgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtNDIsOCArNDEs
NiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTYyLDggKzU5LDYgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFBy
b2Nlc3NQb29sOwogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09i
akNQdHI8aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7Ci0g
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0
ZTsKLQogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNz
aW9uOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC0zNjcsMTMgKzM2MiwxMSBA
QCAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpCiAKIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewotICAgIHJldHVybiBfZG93bmxv
YWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewotICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpE
b3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC02MTUsMTIgKzYwOCwxMiBAQCAt
ICh2b2lkKV9zZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKIC0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gKF9XS0Rvd25sb2Fk
ICopX3Byb2Nlc3NQb29sLT5kb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpLndyYXBw
ZXIoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5wdHIoKSwgcGF0aCkpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNl
bmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERl
bGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04MSw4ICs4MSw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
LS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
LSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVD
QVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkVVJMUmVx
dWVzdCIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkp
OworCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJz
aXRlRGF0YVN0b3JlLl9yZXN1bWVEb3dubG9hZEZyb21EYXRhIiwgbWFjb3MoMTAuMTQuNCwgV0tf
TUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAK
KyNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTM4LDYgKzQw
LDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CkBAIC00NTUsNiArNDU4LDI3IEBAIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKKy0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZG93bmxvYWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKK30K
KworLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KWRvd25sb2FkRGVsZWdhdGUKK3sKKyAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVs
ZWdhdGU7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWVSZWY8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworfQorCist
IChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJu
IHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmRvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9w
YWdlXSwgcmVxdWVzdCkpOworfQorCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5h
dGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gd3JhcHBlcihf
d2Vic2l0ZURhdGFTdG9yZS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7Cit9CisKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnk6KEJPT0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZUQKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2Rvd25sb2FkRGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI1
MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tEb3dubG9hZDsKIEBjbGFzcyBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wg
X1dLRG93bmxvYWREZWxlZ2F0ZTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZTsKIApAQCAtNTksNiArNjEsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOikgTlNTdHJpbmcgKl9zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyIiwgbWFjb3MoMTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4y
LCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxl
Z2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
IF9OdWxsYWJsZSl3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogCiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFy
dGVkKGRvd25sb2FkLmdldCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3Rh
cnRlZChtX3dlYkNvbnRleHQsIGRvd25sb2FkLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQo
KSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERv
d25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQpAQCAtNjgsMTMgKzY4LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdERvd25sb2FkU2V0UmVzcG9uc2UoZG93bmxvYWQuZ2V0KCks
IHJlc3BvbnNlLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3Ro
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJr
aXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRvd25sb2FkLmdldCgpLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRv
d25sb2FkLmdldCgpLCBwYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgpKSkgewpA
QCAtOTksMTQgKzk5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDYW5jZWwo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgIHZvaWQgZGlkQ2FuY2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgp
KTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFByb3h5
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0
RG93bmxvYWRGaW5pc2hlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgcHJp
dmF0ZToKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiB9OwogCi12b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
Cit2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAg
Ly8gRklYTUU6IEZvciBjb21wYXRpYmlsaXR5LCB5b3UgbWF5IHdhbnQgdG8gc2hpbSB0aGlzIG9u
dG8gdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAvLyBidXQgdGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZCBhbmQgYSByZXBsYWNlbWVudCBBUEkgb24gdGhlIFdlYnNpdGVEYXRhU3Rv
cmUgc2hvdWxkIGJlIGFkZGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlzcG9zZShHT2JqCiAgICAgaWYgKCFwcml2LT5jbGllbnRzRGV0YWNoZWQpIHsKICAg
ICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG51bGxwdHIpOwotICAgICAgICBwcml2LT5w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobnVsbHB0cik7CiAgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNyBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVu
dAotICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgdWludDY0
X3QgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZp
bmFsOwotICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3du
bG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ3Jh
c2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBkaWRT
dGFydChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCB1aW50NjRfdCBsZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
V2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYp
IGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENh
bmNlbChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vic2l0ZURh
dGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Jikg
ZmluYWw7CisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJzaXRlRGF0YVN0b3JlJiwg
RG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CiAKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgdm9pZCB0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFBy
b3h5Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5tbQkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAg
RG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xpZW50KGlkIDxfV0tEbwogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNoID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOildOwogfQogCi12b2lkIERv
d25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJzaXRlRGF0YVN0
b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkg
ewpAQCAtODIsNyArODIsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJQcm9j
ZXNzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxv
YWRQcm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkgJiYgcmVzcG9uc2UuaXNTdWNjZXNzZnVsKCkpIHsKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVz
cG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWlu
dDY0X3QgbGVuZ3RoKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxv
YWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0xMTMsNyArMTEzLDcgQEAg
dm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2ViUAogICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpsZW5n
dGhdOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3Zv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJz
aXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklY
TUU6IFN5c3RlbSBQcmV2aWV3IG5lZWRzIGNvZGUgaGVyZS4KICAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpIHsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit2b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKICNpZiBVU0Uo
U1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93
bmxvYWQoKSkgewpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENy
ZWF0ZURlc3RpbmF0aW8KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCi12b2lk
IERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENy
YXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewog
I2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVBy
ZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBEb3dubG9hZENsaWVu
dDo6cHJvY2Vzc0RpZENyYXNoKFdlYgogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9j
ZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykK
ICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0y
MDUsNyArMjA1LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaQog
ICAgIH0KIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZEZpbmlzaChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
IHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXMKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
RGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRGYWlsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxv
YWQoKSkgewpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwo
V2ViUHJvY2Vzc1AKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOwogfQogCi12b2lkIERv
d25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdlYnNpdGVEYXRh
U3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1f
UFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgp
KSB7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdl
YlByb2NlcwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihk
b3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVz
dChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVz
dChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQogICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCld
XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQg
KzUxLDE1IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZURvd25sb2FkSUQoKQogICAgIHJldHVy
biArK3VuaXF1ZURvd25sb2FkSUQ7CiB9CiAgICAgCi1SZWY8RG93bmxvYWRQcm94eT4gRG93bmxv
YWRQcm94eTo6Y3JlYXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCitSZWY8RG93bmxvYWRQcm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25sb2Fk
UHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwg
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3dubG9hZFByb3h5KGRv
d25sb2FkUHJveHlNYXAsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEb3dubG9hZFByb3h5KGRvd25sb2FkUHJveHlNYXAsIGRhdGFTdG9y
ZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOwogfQogCi1Eb3dubG9hZFByb3h5OjpE
b3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlByb2Nl
c3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCitEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25s
b2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAg
ICA6IG1fZG93bmxvYWRQcm94eU1hcChkb3dubG9hZFByb3h5TWFwKQogICAgICwgbV9wcm9jZXNz
UG9vbCgmcHJvY2Vzc1Bvb2wpCisgICAgLCBtX2RhdGFTdG9yZSgmZGF0YVN0b3JlKQogICAgICwg
bV9kb3dubG9hZElEKGdlbmVyYXRlRG93bmxvYWRJRCgpKQogICAgICwgbV9yZXF1ZXN0KHJlc291
cmNlUmVxdWVzdCkKIHsKQEAgLTY3LDYgKzY4LDcgQEAgRG93bmxvYWRQcm94eTo6RG93bmxvYWRQ
cm94eShEb3dubG9hZFBybwogRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKQogewogICAg
IEFTU0VSVCghbV9wcm9jZXNzUG9vbCk7CisgICAgQVNTRVJUKCFtX2RhdGFTdG9yZSk7CiB9CiAK
IHZvaWQgRG93bmxvYWRQcm94eTo6Y2FuY2VsKCkKQEAgLTgyLDE0ICs4NCwxNiBAQCB2b2lkIERv
d25sb2FkUHJveHk6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3NQb29sKTsK
ICAgICBtX3Byb2Nlc3NQb29sID0gbnVsbHB0cjsKKyAgICBBU1NFUlQobV9kYXRhU3RvcmUpOwor
ICAgIG1fZGF0YVN0b3JlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojpwcm9j
ZXNzRGlkQ2xvc2UoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0
YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENs
aWVudCgpLnByb2Nlc3NEaWRDcmFzaCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOworICAgIG1fZGF0
YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLnByb2Nlc3NEaWRDcmFzaCgqbV9kYXRhU3RvcmUsICp0
aGlzKTsKIH0KIAogV2ViUGFnZVByb3h5KiBEb3dubG9hZFByb3h5OjpvcmlnaW5hdGluZ1BhZ2Uo
KSBjb25zdApAQCAtMTI1LDEwICsxMjksMTAgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFy
dChjb25zdCBSZXNvdQogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpIHx8IG1fcmVk
aXJlY3RDaGFpbi5sYXN0KCkgIT0gcmVxdWVzdC51cmwoKSkKICAgICAgICAgbV9yZWRpcmVjdENo
YWluLmFwcGVuZChyZXF1ZXN0LnVybCgpKTsKIAotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAg
ICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29s
LT5kb3dubG9hZENsaWVudCgpLmRpZFN0YXJ0KCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAg
bV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQoKm1fZGF0YVN0b3JlLCAqdGhp
cyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMTM4LDcgKzE0MiwxMiBAQCB2b2lkIERvd25sb2Fk
UHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhCiAKICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92
ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoYWxsZW5nZUlELCBtYWtlUmVmKCptX3Byb2Nl
c3NQb29sLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKSksIG51bGxwdHIpOwogCi0gICAg
bV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmdldCgpKTsKKyAgICBpZiAoIW1fZGF0YVN0b3JlKSB7CisgICAgICAgIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHktPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKm1fZGF0YVN0b3JlLCAqdGhpcywgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5nZXQoKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTE0Niw3ICsxNTUsNyBAQCB2b2lkIERvd25s
b2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChSZXNvCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndp
bGxTZW5kUmVxdWVzdCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1
ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgeworICAgIG1fZGF0YVN0b3JlLT5k
b3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVxdWVzdCgqbV9kYXRhU3RvcmUsICp0aGlzLCBXVEZN
b3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpIHsKICAg
ICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChuZXdSZXF1ZXN0LnVybCgpKTsKIAogICAgICAg
ICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fcHJvY2Vzc1Bvb2wpCkBAIC0xNjIsMjYgKzE3MSwyNiBA
QCB2b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChSZXNvCiAKIHZvaWQgRG93bmxv
YWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRp
ZFJlY2VpdmVSZXNwb25zZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHJlc3BvbnNlKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKm1fZGF0YVN0
b3JlLCAqdGhpcywgcmVzcG9uc2UpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAg
aWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+
ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGxl
bmd0aCk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEo
Km1fZGF0YVN0b3JlLCAqdGhpcywgbGVuZ3RoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKLSAgICBpZiAoIW1f
cHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBzdWdnZXN0ZWRGaWxl
bmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJRCA9
IGRvd25sb2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3Rp
bmF0aW9uKSB7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKm1fZGF0YVN0b3JlLCAqdGhpcywgc3VnZ2VzdGVk
RmlsZW5hbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvd25sb2Fk
SUQgPSBkb3dubG9hZElEXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBk
ZXN0aW5hdGlvbikgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKQEAg
LTE5NiwxOCArMjA1LDE4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25X
aXQKIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3Rv
cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24oKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBwYXRoKTsKKyAg
ICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9k
YXRhU3RvcmUsICp0aGlzLCBwYXRoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5p
c2goKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRp
ZEZpbmlzaCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9h
ZENsaWVudCgpLmRpZEZpbmlzaCgqbV9kYXRhU3RvcmUsICp0aGlzKTsKIAogICAgIC8vIFRoaXMg
Y2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1f
ZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKQEAgLTIyMywxMiArMjMy
LDEyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEYXRhPiBjcmVhdGVEYXRhKGNvbnMKIAogdm9pZCBE
b3dubG9hZFByb3h5OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29s
KQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVzdW1l
RGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3du
bG9hZENsaWVudCgpLmRpZEZhaWwoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBlcnJvcik7CisgICAg
bV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmFpbCgqbV9kYXRhU3RvcmUsICp0aGlz
LCBlcnJvcik7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmpl
Y3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hl
ZCgqdGhpcyk7CkBAIC0yMzgsNyArMjQ3LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDYW5j
ZWwoY29uc3QgSVBDOgogewogICAgIG1fcmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0
YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENhbmNlbCgqbV9w
cm9jZXNzUG9vbCwgKnRoaXMpOworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRp
ZENhbmNlbCgqbV9kYXRhU3RvcmUsICp0aGlzKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRo
ZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94
eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsMTAgKzUzLDExIEBAIGNsYXNzIERvd25sb2FkSUQ7CiBjbGFzcyBE
b3dubG9hZFByb3h5TWFwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5IDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RG93bmxvYWQ+LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RG93bmxvYWRQ
cm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBSZWY8RG93bmxvYWRQcm94eT4g
Y3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bv
b2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB+RG93bmxvYWRQcm94
eSgpOwogCiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9kb3du
bG9hZElEOyB9CkBAIC05OSw3ICsxMDAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9jZXNz
UG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtMTE5LDYgKzEyMCw3IEBAIHByaXZh
dGU6CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CiAgICAgUmVm
UHRyPFdlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOworICAgIFJlZlB0cjxXZWJzaXRlRGF0
YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKIAogICAg
IFJlZlB0cjxBUEk6OkRhdGE+IG1fcmVzdW1lRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJKHJldmlz
aW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsOSBAQCB2b2lkIERvd25s
b2FkUHJveHlNYXA6OmFwcGxpY2F0aW9uV2lsbEVuCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgp
LCAwKTsKIH0KIAotRG93bmxvYWRQcm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxv
YWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorRG93bmxvYWRQcm94eSYgRG93bmxvYWRQcm94
eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgYXV0byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBh
dXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIGRhdGFTdG9y
ZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiAgICAgbV9kb3dubG9hZHMuc2V0KGRv
d25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5jb3B5UmVmKCkpOwogCiAg
ICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkFkZGluZyBkb3dubG9hZCAlIiBQUkl1NjQgIiB0byBV
SVByb2Nlc3MgRG93bmxvYWRQcm94eU1hcCIsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5k
b3dubG9hZElEKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OwogY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbjsKIGNsYXNzIFdlYlByb2Nlc3NQ
b29sOworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgRG93bmxvYWRQcm94eU1hcCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEb3dubG9hZFByb3h5TWFwPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBE
b3dubG9hZFByb3h5TWFwKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKICAgICB+RG93bmxvYWRQcm94
eU1hcCgpOwogCi0gICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIERvd25sb2Fk
UHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQ
b29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkb3dubG9h
ZEZpbmlzaGVkKERvd25sb2FkUHJveHkmKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fZG93bmxvYWRzLmlzRW1wdHkoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRv
d25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09M
X01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgpAQCAtMTc2LDEyICsxNzcsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
eW50aGVzaXplQXBwSQogICAgIH0KIH0KIAotRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKK0Rvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25s
b2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKICAg
ICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigq
dGhpcyk7CiAKLSAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFBy
b3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CisgICAgcmV0dXJuIG1fZG93bmxv
YWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIG1fcHJvY2Vzc1Bvb2ws
IHJlc291cmNlUmVxdWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNo
T3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCi0gICAgRG93
bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVE
YXRhU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIHZvaWQg
ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUg
IkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5o
IgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJNb2NrQXV0aGVudGljYXRv
ck1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCkBAIC0xMDcsNiArMTA5LDcgQEAgV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8VwogICAgICwgbV9hdXRoZW50aWNh
dG9yTWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigpKQogI2VuZGlm
CiAgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KCkp
CisgICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgLCBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5h
dG9yKG1ha2VVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+KCkpCiAjZW5kaWYK
QEAgLTEyOCw2ICsxMzEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBB
TDo6CiAgICAgLCBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGlj
YXRvck1hbmFnZXI+KCkpCiAjZW5kaWYKICAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNsaWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1
ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAsIG1f
c29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxTT0F1dGhvcml6YXRpb25D
b29yZGluYXRvcj4oKSkKICNlbmRpZgpAQCAtMjA3NCw2ICsyMDc4LDg1IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1AKIHsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXREb3dubG9hZENsaWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBj
bGllbnQpCit7CisgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKwor
RG93bmxvYWRQcm94eSogV2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWQoV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit7Cisg
ICAgaWYgKCFwcm9jZXNzUG9vbCkgeworICAgICAgICBmb3IgKGF1dG8mIHBvb2wgOiBXZWJQcm9j
ZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sID0g
cG9vbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmICghcHJv
Y2Vzc1Bvb2wpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZG93bmxvYWRQ
cm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoKnByb2Nlc3NQb29sLCByZXF1ZXN0LCBpbml0aWF0
aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGluZ1BhZ2Ug
PyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpOworCisgICAgaWYgKGluaXRpYXRpbmdQYWdlKQorICAgICAgICBpbml0aWF0aW5n
UGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOworCisgICAgaWYgKHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCB1
cGRhdGVkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgLy8gUmVxdWVzdCdzIGZpcnN0UGFydHlG
b3JDb29raWVzIHdpbGwgYmUgdXNlZCBhcyBPcmlnaW5hbCBVUkwgb2YgdGhlIGRvd25sb2FkIHJl
cXVlc3QuCisgICAgICAgIC8vIFdlIHNldCB0aGUgdmFsdWUgdG8gdG9wIGxldmVsIGRvY3VtZW50
J3MgVVJMLgorICAgICAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpIHsKKyAgICAgICAgICAgIFVSTCBp
bml0aWF0aW5nUGFnZVVSTCA9IFVSTCB7IFVSTCB7IH0sIGluaXRpYXRpbmdQYWdlLT5wYWdlTG9h
ZFN0YXRlKCkudXJsKCkgfTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEZpcnN0UGFy
dHlGb3JDb29raWVzKGluaXRpYXRpbmdQYWdlVVJMKTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1
ZXN0LnNldElzU2FtZVNpdGUoYXJlUmVnaXN0cmFibGVEb21haW5zRXF1YWwoaW5pdGlhdGluZ1Bh
Z2VVUkwsIHJlcXVlc3QudXJsKCkpKTsKKyAgICAgICAgICAgIGlmICghdXBkYXRlZFJlcXVlc3Qu
aGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpVc2VyQWdlbnQpKQorICAgICAgICAg
ICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoaW5pdGlhdGluZ1BhZ2UtPnVz
ZXJBZ2VudCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0
LnNldEZpcnN0UGFydHlGb3JDb29raWVzKFVSTCgpKTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1
ZXN0LnNldElzU2FtZVNpdGUoZmFsc2UpOworICAgICAgICAgICAgaWYgKCF1cGRhdGVkUmVxdWVz
dC5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlVzZXJBZ2VudCkpCisgICAgICAg
ICAgICAgICAgdXBkYXRlZFJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudChXZWJQYWdlUHJveHk6OnN0
YW5kYXJkVXNlckFnZW50KCkpOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNl
dElzVG9wU2l0ZShmYWxzZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNlc3Npb25J
RCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdnZXN0ZWRG
aWxlbmFtZSksIDApOworICAgICAgICByZXR1cm4gJmRvd25sb2FkUHJveHk7CisgICAgfQorCisg
ICAgcmV0dXJuICZkb3dubG9hZFByb3h5OworfQorCitEb3dubG9hZFByb3h5KiBXZWJzaXRlRGF0
YVN0b3JlOjpyZXN1bWVEb3dubG9hZChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmICghcHJvY2Vzc1Bvb2wpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBwb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAg
ICAgICAgICBwcm9jZXNzUG9vbCA9IHBvb2w7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIXByb2Nlc3NQb29sKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KCpwcm9jZXNz
UG9vbCwgUmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlKTsKKyAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisKKyAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIXBhdGgu
aXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKKworICAgIGlmIChwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCks
IHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KSwgMCk7CisgICAgICAgIHJldHVybiAmZG93bmxvYWRQcm94eTsKKyAgICB9CisKKyAgICByZXR1
cm4gJmRvd25sb2FkUHJveHk7Cit9CisKK0Rvd25sb2FkUHJveHkmIFdlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQor
eworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBwcm9jZXNzUG9vbC5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkoKnRoaXMsIHJlcXVlc3QpOworICAgIGRvd25sb2Fk
UHJveHkuc2V0T3JpZ2luYXRpbmdQYWdlKG9yaWdpbmF0aW5nUGFnZSk7CisgICAgcmV0dXJuIGRv
d25sb2FkUHJveHk7Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6c2V0U291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpCiB7CiAgICAgaWYg
KG1fbmV0d29ya2luZ0hhc0JlZ3VuKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjUwMTcw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBACiAjZW5kaWYKIAogbmFtZXNwYWNl
IEFQSSB7CitjbGFzcyBEYXRhOworY2xhc3MgRG93bmxvYWRDbGllbnQ7CiBjbGFzcyBIVFRQQ29v
a2llU3RvcmU7CiB9CiAKQEAgLTY5LDYgKzcxLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXI7CitjbGFzcyBE
b3dubG9hZFByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKIGNsYXNzIERldmljZUlkSGFz
aFNhbHRTdG9yYWdlOwogY2xhc3MgU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I7CkBAIC0yNTks
NiArMjYyLDExIEBAIHB1YmxpYzoKICAgICBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50JiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsgfQogCisgICAgQVBJOjpEb3dubG9hZENsaWVudCYgZG93bmxvYWRDbGllbnQoKSB7
IHJldHVybiBtX2Rvd25sb2FkQ2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXREb3dubG9hZENs
aWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7CisgICAgRG93bmxvYWRQcm94
eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBEb3du
bG9hZFByb3h5KiBkb3dubG9hZChXZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VQcm94eSogaW5pdGlh
dGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CisgICAgRG93bmxvYWRQcm94eSogcmVz
dW1lRG93bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdl
LCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAg
QVBJOjpIVFRQQ29va2llU3RvcmUmIGNvb2tpZVN0b3JlKCk7CiAKICNpZiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQpAQCAtMzYwLDYgKzM2OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IFVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBVbmlxdWVS
ZWY8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKIAogICAgIFJlZlB0cjxB
UEk6OkhUVFBDb29raWVTdG9yZT4gbV9jb29raWVTdG9yZTsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTAxNzAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTM4LDYgKzExMzgsNyBAQAogCQk1Q0U5MTIxMjIyOTNDMjc4MDA1QkVD
NzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFy
eVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTMyMjkzQzI3OTAwNUJFQzc4IC8qIEF1
eGlsaWFyeVByb2Nlc3NNYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNz
TWFpbi5jcHAgKi87IH07CiAJCTVDRTkxMjE0MjI5M0MyODAwMDVCRUM3OCAvKiBXS01haW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBCMjI5
M0MxRTAwMDVCRUM3OCAvKiBXS01haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1Q0VBQkEzMzIzMzYwRDM5MDA3OTc3OTcgLyogV0tXZWJzaXRl
RGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDRUFCQTMyMjMzNjBDRUMwMDc5Nzc5NyAvKiBXS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5
NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTM2OTQsNiArMzY5NSw3IEBACiAJCTVDRTkx
MjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHA7IHBh
dGggPSBDb2NvYS9BdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDRUFCQTJBMjMzMzI0NzcwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5n
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0aW5n
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3
OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0VBQkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3Jl
RG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNGRUNCMDMxRTFFRDFDODAwRjg4NTA0IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzNG
MTExNkZGOTBDMDBFRTUzOTYgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVu
dEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC04MTI3
LDYgKzgxMjksNyBAQAogCQkJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3Jp
cHRSZWYuaCAqLywKIAkJCQk1QzZFN0Q4NzIzMjM2MUU3MDBDMjE1OUQgLyogV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvblJlZi5jcHAgKi8sCiAJCQkJNUM2RTdEODYyMzIzNjFFNzAwQzIx
NTlEIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaCAqLywKKwkJCQk1Q0VB
QkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQu
aCAqLywKIAkJCQkxQTU3MTA5QzFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcCAqLywKIAkJCQkxQTU3MTA5RDFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmggKi8sCiAJCQkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0
ZVBvbGljaWVzLmNwcCAqLywKQEAgLTEwNDIxLDYgKzEwNDI0LDcgQEAKIAkJCQkxQUE2NTREMTFC
MTRGNzE0MDBCRjFEM0UgLyogV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDNkU3RDg4MjMyMzYyMDUwMEMyMTU5RCAvKiBXS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0VBQkEz
MzIzMzYwRDM5MDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTc1QThEMkQ2MTg3RDFDMEUwMEMzOUM5RSAvKiBXS1dlYnNpdGVE
YXRhU3RvcmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2N0ExQzdGN0JBNjAw
NjlBQzRGIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTcxMDlGMUFCQTAwMjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjUwMTg3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTktMDktMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIERvd25sb2FkQ2xpZW50IGZyb20g
V2ViUHJvY2Vzc1Bvb2wgdG8gV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9E
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRDb250ZXh0RG93bmxvYWRDbGllbnQp
OiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250
ZXh0TWVudURvd25sb2FkLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAgIChkb3dubG9hZFRl
c3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6d2ViVmlld1dpdGhEb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5t
bToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgdGVhckRvd25dKToKKyAg
ICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3dubG9hZDpleHBlY3Rl
ZExlbmd0aDpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1
aWNrTG9vay5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRGaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRGYWlsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaDoKKwogMjAxOS0wOS0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gSlNDIHF1ZXVlcyBzaG91bGQgcmUtYnVpbGQgVG9U
IGFuZCBjb21wYXJlIHJlc3VsdHMgb24gYnVpbGQgZmFpbHVyZQpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERl
Y2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlIDxXZWJLaXQv
V0tEb3dubG9hZC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4K
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC00MCwyMiArNDEsMjMgQEAgc3RhdGlj
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdAogICAgIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lckRvd25sb2FkKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0
cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29sKiwg
Y29uc3Qgdm9pZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOwogICAgIFdL
RG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dl
YktpdEFQSVRlc3QvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIikubGVha1JlZigpOwog
fQogCi1zdGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQpCitzdGF0aWMgdm9pZCBzZXREb3dubG9hZENsaWVudChXS1BhZ2VSZWYgcGFnZSkKIHsK
LSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6
ZW9mKGNsaWVudCkpOwogCiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CiAKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChjb250ZXh0LCAmY2xpZW50LmJhc2UpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmUgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShhZG9wdFdLKFdL
UGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihwYWdlKSkuZ2V0KCkpOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZVNldERvd25sb2FkQ2xpZW50KGRhdGFTdG9yZSwgJmNsaWVudC5iYXNlKTsKIH0KIAog
c3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTcyLDkg
Kzc0LDkgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZQogVEVTVChX
ZWJLaXQsIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCkKIHsKICAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25m
aWd1cmF0aW9uKG51bGxwdHIpKTsKLSAgICBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoY29udGV4
dC5nZXQoKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsK
KyAgICBzZXREb3dubG9hZENsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CiAgICAgc2V0UGFnZVBvbGlj
eUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CiAKICAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoaXMgZmls
ZW5hbWUgd2FzIHNwZWNpYWxseSBjaG9zZW4gdG8gdHJpZ2dlciB0aGUgY3Jhc2ggY29uZGl0aW9u
cyBpbgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRN
ZW51RG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFn
ZUNvbnRleHRNZW51Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9fV0tEb3dubG9hZC5o
PgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyB2
b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWUKICAgICB9CiB9CiAKLXN0YXRpYyBXS1N0
cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0
IHZvaWQqKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHBy
b3ZpZGVkIGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGlu
IHRoZSBIVE1MLgogICAgIEVYUEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50
eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC04MiwxNCArODMsMTYgQEAgVEVTVChXZWJLaXQs
IENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bgogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4
dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1
bmRsZSgpKTsKIAotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xp
ZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAg
ICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxv
YWRDbGllbnQoY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUmV0YWluUHRy
PFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0
aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1X
ZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKKyAgICAKKyAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0gV0tQYWdlQ29uZmlndXJhdGlvbkdl
dFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24od2Vi
Vmlldy5wYWdlKCkpKS5nZXQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRD
bGllbnQoZGF0YVN0b3JlLCAmY2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNs
aWVudFYwIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOwpAQCAtMTE0LDcgKzExNyw3IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0
TWVudURvd25sb2FkSFRNTERvd24KICAgICBVdGlsOjpydW4oJmRpZERlY2lkZURvd25sb2FkRGVz
dGluYXRpb24pOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0NvbnRleHRSZWYsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwgY29u
c3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwg
Y29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUg
aXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRyaWJ1
dGUgaW4gdGhlIEhUTUwsIGFmdGVyIHNhbml0aXphdGlvbi4KICAgICBFWFBFQ1RfV0tfU1RSRVEo
InRlc3QxX3Rlc3QyX2Rvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5h
bWUpOwpAQCAtMTI5LDE1ICsxMzIsMTcgQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxv
YWRIVE1MRG93bgogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAgIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURv
d25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xp
ZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0NvbnRleHRTZXREb3dubG9h
ZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogCiAgICAgV0tSZXRhaW5QdHI8
V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRo
SWRlbnRpZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCisgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJz
aXRlRGF0YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcu
cGFnZSgpKSkuZ2V0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50
KGRhdGFTdG9yZSwgJmNsaWVudC5iYXNlKTsKKwogICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRW
MCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2Fk
ZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
UmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaD4KQEAgLTE3Niw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBkb3dubG9hZFRlc3Qo
RGVjaXNpb24gZGVjaXNpCiAKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmlndXJh
dGlvbldpdGhDb250ZW50RmlsdGVyU2V0dGluZ3MoZGVjaXNpb24sIGRlY2lzaW9uUG9pbnQpOwog
ICAgICAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudEZpbHRlcmlu
Z0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW1tjb25maWd1cmF0aW9u
IHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgp
XTsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9h
ZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gYWRvcHROUyhbW0JlY29tZURvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWQubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25s
b2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaD4KQEAgLTEyMSwyMyArMTIyLDIzIEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihf
V0tEb3dubG9hZCAKIAogVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWREZWxlZ2F0ZSkKIHsKLSAg
ICBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gaW5pdF0pOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3Jl
ID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKICAgICBEb3du
bG9hZERlbGVnYXRlICpkb3dubG9hZERlbGVnYXRlID0gW1tEb3dubG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWRE
ZWxlZ2F0ZV07CisgICAgW2RhdGFTdG9yZSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERl
bGVnYXRlXTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBFWFBFQ1RfRVEoZG93
bmxvYWREZWxlZ2F0ZSwgW3Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgICAg
IEVYUEVDVF9FUShkb3dubG9hZERlbGVnYXRlLCBbZGF0YVN0b3JlIF9kb3dubG9hZERlbGVnYXRl
XSk7CiAgICAgfQogCiAgICAgW2Rvd25sb2FkRGVsZWdhdGUgcmVsZWFzZV07Ci0gICAgRVhQRUNU
X05VTEwoW3Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgRVhQRUNUX05VTEwo
W2RhdGFTdG9yZSBfZG93bmxvYWREZWxlZ2F0ZV0pOwogfQogCiBzdGF0aWMgdm9pZCBydW5UZXN0
KGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlLCBpZCA8X1dLRG93
bmxvYWREZWxlZ2F0ZT4gZG93bmxvYWREZWxlZ2F0ZSwgTlNVUkwgKnVybCkKIHsKICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGVdOwotICAgIFtbW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2Fk
RGVsZWdhdGVdOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9y
ZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CiAKICAgICBpc0RvbmUg
PSBmYWxzZTsKICAgICBoYXNSZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CkBAIC0yNzgsNyArMjc5
LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgT3JpZ2luYXRpbmdXZWJWaWV3KQogICAgICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgICAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKICAgICAg
ICAgZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tPcmlnaW5hdGluZ1dlYlZpZXdEb3dubG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgICAg
ICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxl
Z2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW1tbd2ViVmlldyBjb25maWd1
cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERl
bGVnYXRlLmdldCgpXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpzb3VyY2VVUkxdXTsKICAgICB9CiAKQEAgLTM0OCw3ICszNDksNyBA
QCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpbW0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERv
d25sb2FkRGVsZWdhdGU6W1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxVUkw6c291cmNlVVJMXV07CisgICAgW1tbd2ViVmll
dyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpb
W0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdXTsKIAogICAgIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0
YXRlID0gZmFsc2U7CiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC01MDgsNyArNTA5LDcgQEAg
VEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZERvd25sb2FkKQogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1JlZGly
ZWN0ZWREb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxl
Z2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0
b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAg
IC8vIERvIDIgbG9hZHMgaW4gdGhlIHNhbWUgdmlldyB0byBtYWtlIHN1cmUgdGhlIHJlZGlyZWN0
IGNoYWluIGlzIHByb3Blcmx5IGNsZWFyZWQgYmV0d2VlbiBsb2Fkcy4KICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2PkZpcnN0IGxvYWQ8L2Rpdj4iXTsKQEAg
LTUzNyw3ICs1MzgsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkTG9hZENvbnZlcnRl
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW1tbd2ViVmll
dyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRl
RGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsK
IAogICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJWaWV3ID0gd2ViVmlldy5nZXQoKTsKICAgICBl
eHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwpAQCAtNTYwLDcgKzU2MSw3IEBAIFRF
U1QoX1dLRG93bmxvYWQsIFJlZGlyZWN0ZWRTdWJmcmFtZUxvYWQKIAogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHBy
b2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsK
KyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3du
bG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRPcmln
aW5hdGluZ1dlYlZpZXcgPSB3ZWJWaWV3LmdldCgpOwogICAgIGV4cGVjdGVkVXNlckluaXRpYXRl
ZFN0YXRlID0gZmFsc2U7CkBAIC02MTUsNyArNjE2LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93
bmxvYWRDYW5jZWxlZFdoaWxlRAogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwog
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCldOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3du
bG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dlYlZpZXcgY29u
ZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBkb3dubG9hZEhh
c0RlY2lkZWREZXN0aW5hdGlvbiA9IGZhbHNlOwpAQCAtNzE1LDcgKzcxNiw3IEBAIFRFU1QoX1dL
RG93bmxvYWQsIERvd25sb2FkQXR0cmlidXRlRG9lc04KICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW0Rvd25sb2FkQXR0cmlidXRlVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJv
Y2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmll
dyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CiAKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxhIGlkPSdsaW5r
JyBocmVmPSdkYXRhOix0ZXN0JyBkb3dubG9hZD5DbGljayBtZSE8L2E+IiBiYXNlVVJMOm5pbF07
CiAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTczMCw3ICs3
MzEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBTdGFydERvd25sb2FkV2l0aERvd25sCiAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9hZEF0dHJpYnV0ZVRlc3REZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxv
YWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6QCI8YSBpZD0nbGluaycgaHJlZj0nZGF0YTosdGVzdCcgZG93bmxvYWQ+Q2xpY2sgbWUhPC9h
PiIgYmFzZVVSTDpuaWxdOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CkBAIC03NzAsNyArNzcxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgQ3Jhc2hBZnRlckRvd25s
b2FkRGlkRgogICAgICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KV0pOwogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpXTsKICAgICAgICAgcHJvY2Vzc1Bvb2wgPSBbd2ViVmlldyBjb25maWd1cmF0
aW9uXS5wcm9jZXNzUG9vbDsKLSAgICAgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vz
c1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOworICAgICAg
ICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVn
YXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzb3VyY2VVUkxdXTsKIAogICAgICAgICBk
aWREb3dubG9hZFN0YXJ0ID0gZmFsc2U7CkBAIC04NTUsNyArODU2LDcgQEAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlld1dpdGhEb3dubG9hZAogICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07
Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdh
dGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
LndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdl
dCgpOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCkBAIC05NzMsNyArOTc0LDcgQEAgVEVTVChX
ZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRgogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5f
ZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKIAogICAgIE5TVVJMICpmaXJzdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2J1bmRsZS1maWxlL3NpbXBsZS5odG1sIl07CiAgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9s
aWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVz
cy5tbQkocmV2aXNpb24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dy
ZXNzU1BJLmg+CkBAIC0xNjcsNyArMTY4LDcgQEAgLSAodm9pZClzdGFydExvYWRpbmdXaXRoUHJv
dG9jb2w6KERvd25sbwogLSAodm9pZCl0ZWFyRG93bgogewogICAgIGlmIChtX3dlYlZpZXcpIHsK
LSAgICAgICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX2Rvd25s
b2FkRGVsZWdhdGUgPSBudWxscHRyOworICAgICAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gbnVsbHB0cjsKICAgICAg
ICAgW21fd2ViVmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbV93ZWJW
aWV3ID0gbnVsbHB0cjsKICAgICB9CkBAIC0yMzgsNyArMjM5LDcgQEAgLSAodm9pZClzdGFydERv
d25sb2FkOihEb3dubG9hZFN0YXJ0VHlwZQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgbV93ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBtX3dlYlZpZXcuZ2V0
KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gc2VsZjsKLSAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IHNlbGY7CisgICAgbV93ZWJW
aWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0
ZSA9IHNlbGY7CiAKICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFs
bG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9maWxlIl1dKTsK
IApAQCAtMjQ4LDcgKzI0OSw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93bmxvYWRTdGFy
dFR5cGUKICAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRJblByb2Nlc3NQ
b29sOgotICAgICAgICBbbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wg
X2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5nV2ViVmlldzpudWxs
cHRyXTsKKyAgICAgICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5nV2ViVmll
dzpudWxscHRyXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQkocmV2aXNpb24g
MjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xv
b2subW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYktpdC9X
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+CkBAIC0yMzIs
MTIgKzIzMyw5IEBAIC0gKHZvaWQpdmVyaWZ5RG93bmxvYWQKIAogc3RhdGljIFJldGFpblB0cjxX
S1dlYlZpZXc+IHJ1blRlc3QoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QsIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsKLSAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRd
KTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZGVsZWdhdGVdOwotCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRlUG9saWN5
QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ107Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0
KCldOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTpkZWxlZ2F0ZV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDggKzcyMiw4IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3AKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0
aW9uQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJh
c2UpOwogCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsK
LSAgICAgICAgeyAxLCB0aGlzIH0sCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGll
bnRWMCBkb3dubG9hZENsaWVudCA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0sCiAgICAgICAgIGRv
d25sb2FkRGlkU3RhcnQsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZQogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKQEAgLTczNyw4ICs3Mzcs
OCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAgICAgICAgIDAs
IC8vIHByb2Nlc3NEaWRDcmFzaDsKICAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTAogICAgIH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4
dCgpLCAmZG93bmxvYWRDbGllbnQuYmFzZSk7Ci0gICAgCisgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgJmRv
d25sb2FkQ2xpZW50LmJhc2UpOworCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25lIG9u
IHRoZSBwYWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAtMjM5MCw0NCArMjM5MCw0NiBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgCiAvLyBXS0Nv
bnRleHREb3dubG9hZENsaWVudAogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0
YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRl
eHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChkYXRhU3RvcmUsIGRvd25s
b2FkKTsKIH0KICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1l
LCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnRleHQs
IGRvd25sb2FkLCBmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZGF0YVN0b3JlLCBkb3dubG9hZCwg
ZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93
bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRl
c3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERp
ZEZpbmlzaChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGRh
dGFTdG9yZSwgZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJy
b3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJvcik7
CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChkYXRhU3RvcmUsIGRvd25sb2FkLCBlcnJvcik7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRDYW5jZWwoY29udGV4dCwgZG93bmxvYWQpOwor
ICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kb3dubG9hZERpZENhbmNlbChkYXRhU3RvcmUsIGRvd25sb2FkKTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJs
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwoZGF0YVN0b3JlLCBkb3dubG9hZCwgdXJsKTsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3Rh
cnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0
YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxuIik7
CiB9CiAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVm
IGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0Q29udHJv
bGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUs
IGJvb2wqJiBhbGxvd092ZXJ3cml0ZSkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RD
b250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsKIAogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25s
b2FkQ2FsbGJhY2tzKSB7CkBAIC0yNDUwLDIxICsyNDUyLDI0IEBAIFdLU3RyaW5nUmVmIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW4KICAgICByZXR1cm4gdG9XSyh0ZW1wb3JhcnlGb2xkZXIg
KyAiLyIgKyBzdWdnZXN0ZWRGaWxlbmFtZSkubGVha1JlZigpOwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCit2
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUgPT0g
VGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxkTG9n
RG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRl
eHQoIkRvd25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5v
dGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwg
V0tVUkxSZWYgdXJsKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25s
b2FkUmVmLCBXS1VSTFJlZiB1cmwpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29u
dHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9h
ZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtYWtl
U3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFkb3B0
V0soV0tVUkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vy
cm9yUmVmIGVycm9yKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJy
b3IpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURh
dGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykgewogICAg
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBmYWlsZWQuXG4i
X3MpOwogCkBAIC0yNDc3LDggKzI0ODIsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZEZhaWwoV0tDCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25l
KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2Fu
Y2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYpCiB7Cisg
ICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgp
KTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY2FuY2VsbGVkLlxuIik7CiAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
NSwxOCArNDA1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdL
UGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmKTsKIAogICAgIC8vIFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250
ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
LCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwotICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmls
ZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWRE
aWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAg
dm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAg
IHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYs
IFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRv
d25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCop
OwotICAgIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
KTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsKLSAg
ICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRT
dGFydChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25s
b2FkUmVmKTsKKyAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0
cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYg
ZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7CisgICAgc3RhdGljIHZvaWQgZG93bmxv
YWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2
b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYs
IFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxv
YWRSZWYsIFdLRXJyb3JSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZv
aWQgZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVm
KTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZv
aWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379326</attachid>
            <date>2019-09-21 17:53:02 -0700</date>
            <delta_ts>2019-09-21 17:57:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190921175301.patch</filename>
            <type>text/plain</type>
            <size>121147</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgYWJzdHJhY3Rpb25zIGFyb3VuZCBXZWJzaXRlRGF0YVN0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJT
Y3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dG
ZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDE3
MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTMs
NyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgot
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsKKyAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25sb2Fk
UHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRv
d25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgp
KTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFr
ZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgmcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwog
ICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVz
dFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywg
VVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQu
bGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3du
bG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcgKzIx
Myw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAg
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92
aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0ICsz
NTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAgICAg
IG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGllbnQp
Ci0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3du
bG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xp
ZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMTEsNTUgKzEyOTksNiBA
QCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVh
dGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAoaW5p
dGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8vIFJl
cXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJM
IG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRv
IHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7
Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0
aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWlu
c0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAgICBp
ZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNl
ckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpV
c2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNl
c3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdn
ZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25s
b2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0KLQot
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CkBAIC0xNjA0LDEzICsxNTQzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVm
YXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7CiB9
CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5Owot
fQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhp
c3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0g
ICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2Jq
ZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdvcmtQ
cm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAgCi0g
ICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAg
V2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3
ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAg
V2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwxNyAr
NTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRv
d25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgpAQCAtNTUsOSArNTMs
NiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7
CiB9OwpAQCAtMTY4LDEwNyArMTYzLDggQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiB3a0NsaWVudCkKK3ZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqKQogewotICAgIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRTdGFydChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNz
UG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShXZWJLaXQ6OnRvQVBJKCZwcm9j
ZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKLQotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZh
bHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vz
c1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0
Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCks
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wp
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNzYsMTQgKzE3MiwxNCBAQCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9h
ZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5kb3dubG9hZCgwLCBX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVm
IHBhdGgpCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJl
ZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIFdlYktp
dDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGgpKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxMSBAQCBXS19FWFBP
UlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlv
bkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERv
d25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QpOwotV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBw
YXRoKTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVS
TFJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxv
YWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1Jl
ZiBwYXRoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVzdW1lRG93bmxvYWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbml0
aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
d2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLV2Vic2l0ZURhdGFT
dG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaykoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZpbmlzaENh
bGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWREaWRDYW5jZWwpKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
KShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50VjAgeworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2g7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGYWlsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2FuY2VsOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Rp
ZENyYXNoOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
OworfSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLy8gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1
ZGUgIldLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtNDYsNiArNTAsMTIgQEAKICNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCiBXS1R5cGVJRCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CkBAIC03MjUsMyArNzM1LDExNSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGlj
IEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93
bmxvYWRDbGllbnQoY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFs
bG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVz
dGluYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OnRvQVBJ
KCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QoV2Vi
S2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPERvd25sb2FkQ2xpZW50
PihjbGllbnQpKTsKK30KKworV0tEb3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZFVSTFJlcXVlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlKS0+ZG93bmxvYWQobnVsbHB0ciwgbnVsbHB0ciwgV2ViS2l0Ojp0b0ltcGwocmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7Cit9CisKK1dLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlKS0+cmVzdW1lRG93bmxvYWQobnVs
bHB0ciwgbnVsbHB0ciwgKldlYktpdDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RG
U3RyaW5nKHBhdGgpKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CkBAIC0xNDMsNiArMTQ0LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWwKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNs
ZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0
aW9uIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgY29uc3QgV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVSTFJlcXVlc3QoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5n
UmVmIHBhdGgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtNDIsOCArNDEs
NiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTYyLDggKzU5LDYgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFBy
b2Nlc3NQb29sOwogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09i
akNQdHI8aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7Ci0g
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0
ZTsKLQogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNz
aW9uOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC0zNjcsMTMgKzM2MiwxMSBA
QCAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpCiAKIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewotICAgIHJldHVybiBfZG93bmxv
YWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewotICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpE
b3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC02MTUsMTIgKzYwOCwxMiBAQCAt
ICh2b2lkKV9zZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKIC0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gKF9XS0Rvd25sb2Fk
ICopX3Byb2Nlc3NQb29sLT5kb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpLndyYXBw
ZXIoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5wdHIoKSwgcGF0aCkpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNl
bmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERl
bGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04MSw4ICs4MSw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
LS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
LSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVD
QVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkVVJMUmVx
dWVzdCIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkp
OworCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJz
aXRlRGF0YVN0b3JlLl9yZXN1bWVEb3dubG9hZEZyb21EYXRhIiwgbWFjb3MoMTAuMTQuNCwgV0tf
TUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAK
KyNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTM4LDYgKzQw
LDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CkBAIC00NTUsNiArNDU4LDI3IEBAIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKKy0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZG93bmxvYWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKK30K
KworLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KWRvd25sb2FkRGVsZWdhdGUKK3sKKyAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVs
ZWdhdGU7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWVSZWY8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworfQorCist
IChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJu
IHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmRvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9w
YWdlXSwgcmVxdWVzdCkpOworfQorCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5h
dGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gd3JhcHBlcihf
d2Vic2l0ZURhdGFTdG9yZS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7Cit9CisKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnk6KEJPT0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZUQKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2Rvd25sb2FkRGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI1
MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tEb3dubG9hZDsKIEBjbGFzcyBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wg
X1dLRG93bmxvYWREZWxlZ2F0ZTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZTsKIApAQCAtNTksNiArNjEsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOikgTlNTdHJpbmcgKl9zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyIiwgbWFjb3MoMTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4y
LCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxl
Z2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
IF9OdWxsYWJsZSl3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogCiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFy
dGVkKGRvd25sb2FkLmdldCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3Rh
cnRlZChtX3dlYkNvbnRleHQsIGRvd25sb2FkLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQo
KSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERv
d25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQpAQCAtNjgsMTMgKzY4LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdERvd25sb2FkU2V0UmVzcG9uc2UoZG93bmxvYWQuZ2V0KCks
IHJlc3BvbnNlLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3Ro
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJr
aXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRvd25sb2FkLmdldCgpLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRv
d25sb2FkLmdldCgpLCBwYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgpKSkgewpA
QCAtOTksMTQgKzk5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDYW5jZWwo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgIHZvaWQgZGlkQ2FuY2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgp
KTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFByb3h5
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0
RG93bmxvYWRGaW5pc2hlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgcHJp
dmF0ZToKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiB9OwogCi12b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
Cit2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAg
Ly8gRklYTUU6IEZvciBjb21wYXRpYmlsaXR5LCB5b3UgbWF5IHdhbnQgdG8gc2hpbSB0aGlzIG9u
dG8gdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAvLyBidXQgdGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZCBhbmQgYSByZXBsYWNlbWVudCBBUEkgb24gdGhlIFdlYnNpdGVEYXRhU3Rv
cmUgc2hvdWxkIGJlIGFkZGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlzcG9zZShHT2JqCiAgICAgaWYgKCFwcml2LT5jbGllbnRzRGV0YWNoZWQpIHsKICAg
ICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG51bGxwdHIpOwotICAgICAgICBwcml2LT5w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobnVsbHB0cik7CiAgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7
CiAgICAgfQogCkBAIC04MjYsOCArODI1LDkgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93ZWJf
Y29udGV4dF9kb3dubAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09O
VEVYVChjb250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBu
dWxscHRyKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoY29udGV4dCwgdXJpLCBudWxscHRyKTsKLSAgICByZXR1
cm4gZG93bmxvYWQubGVha1JlZigpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXBy
ZWNhdGVkIGFuZCByZXBsYWNlZCBieSBhIGZ1bmN0aW9uIG9uIFdlYnNpdGVEYXRhU3RvcmUuCisg
ICAgLy8gSWYgY29tcGF0aWJpbGl0eSBpcyBuZWVkZWQsIHNoaW0gdGhpcyBvbnRvIHRoZSBkZWZh
dWx0IFdlYnNpdGVEYXRhU3RvcmUuCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC8qKgpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShy
ZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNyArNDcsMTcgQEAgcHVibGljOgogICAg
IAogcHJpdmF0ZToKICAgICAvLyBGcm9tIEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRp
ZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQ
cm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNv
bnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURh
dGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYnNpdGVE
YXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYnNpdGVEYXRhU3Rv
cmUmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgRnVu
Y3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CisgICAgdm9pZCBk
aWRGaW5pc2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDYW5jZWwoV2Vic2l0ZURh
dGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3du
bG9hZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOworICAgIHZv
aWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkm
LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJzaXRl
RGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwogCiAjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQogICAgIHZvaWQgdGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIERvd25sb2FkQ2xpZW50
OjpEb3dubG9hZENsaWVudChpZCA8X1dLRG8KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZFByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDopXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6
ZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQor
dm9pZCBEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlm
IChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViUHJvY2VzcwogICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0K
IAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lmIFVTRShTWVNURU1f
UFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgp
ICYmIHJlc3BvbnNlLmlzU3VjY2Vzc2Z1bCgpKSB7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSgKICAgICAgICAgW21fZGVsZWdhdGUgX2Rv
d25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0
X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURh
dGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkK
IHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFdlYlAKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoXTsKIH0KIAotdm9p
ZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBTeXN0ZW0gUHJl
dmlldyBuZWVkcyBjb2RlIGhlcmUuCiAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRp
YwogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAg
LTE2MCw3ICsxNjAsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlv
CiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRp
ZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVu
dDo6cHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJzaXRlRGF0
YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVN
X1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQo
KSkgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRD
cmFzaChXZWIKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndy
YXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZv
aWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERv
d25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJz
aXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25s
b2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBA
IHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2kKICAgICB9CiB9CiAKLXZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25s
b2FkKCkpIHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5p
c2goV2ViUHJvY2VzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChX
ZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTIz
OSw3ICsyMzksNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQCiAg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZh
aWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
K3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
aWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjU0LDcg
KzI1NCw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXMKICAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSld
OwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2Vic2l0ZURhdGFT
dG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTCkKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93
ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
CShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0ICs1MSwxNSBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVEb3dubG9hZElEKCkKICAgICByZXR1cm4gKyt1bmlxdWVEb3du
bG9hZElEOwogfQogICAgIAotUmVmPERvd25sb2FkUHJveHk+IERvd25sb2FkUHJveHk6OmNyZWF0
ZShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorUmVmPERv
d25sb2FkUHJveHk+IERvd25sb2FkUHJveHk6OmNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiBkb3du
bG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG93bmxvYWRQcm94eShkb3dubG9hZFByb3h5TWFw
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRG93bmxvYWRQcm94eShkb3dubG9hZFByb3h5TWFwLCBkYXRhU3RvcmUsIHByb2Nlc3NQb29s
LCByZXNvdXJjZVJlcXVlc3QpKTsKIH0KIAotRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShE
b3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorRG93bmxvYWRQ
cm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAgICAgOiBtX2Rvd25sb2Fk
UHJveHlNYXAoZG93bmxvYWRQcm94eU1hcCkKICAgICAsIG1fcHJvY2Vzc1Bvb2woJnByb2Nlc3NQ
b29sKQorICAgICwgbV9kYXRhU3RvcmUoJmRhdGFTdG9yZSkKICAgICAsIG1fZG93bmxvYWRJRChn
ZW5lcmF0ZURvd25sb2FkSUQoKSkKICAgICAsIG1fcmVxdWVzdChyZXNvdXJjZVJlcXVlc3QpCiB7
CkBAIC02Nyw2ICs2OCw3IEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQ
cm8KIERvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkKIHsKICAgICBBU1NFUlQoIW1fcHJv
Y2Vzc1Bvb2wpOworICAgIEFTU0VSVCghbV9kYXRhU3RvcmUpOwogfQogCiB2b2lkIERvd25sb2Fk
UHJveHk6OmNhbmNlbCgpCkBAIC04MiwxNCArODQsMTYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpp
bnZhbGlkYXRlKCkKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzUG9vbCk7CiAgICAgbV9wcm9jZXNz
UG9vbCA9IG51bGxwdHI7CisgICAgQVNTRVJUKG1fZGF0YVN0b3JlKTsKKyAgICBtX2RhdGFTdG9y
ZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkK
IHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5wcm9jZXNz
RGlkQ3Jhc2goKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxv
YWRDbGllbnQoKS5wcm9jZXNzRGlkQ3Jhc2goKm1fZGF0YVN0b3JlLCAqdGhpcyk7CiB9CiAKIFdl
YlBhZ2VQcm94eSogRG93bmxvYWRQcm94eTo6b3JpZ2luYXRpbmdQYWdlKCkgY29uc3QKQEAgLTEy
NSwxMCArMTI5LDEwIEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3UK
ICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFz
dCgpICE9IHJlcXVlc3QudXJsKCkpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQocmVx
dWVzdC51cmwoKSk7CiAKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFT
dG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGll
bnQoKS5kaWRTdGFydCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOworICAgIG1fZGF0YVN0b3JlLT5k
b3dubG9hZENsaWVudCgpLmRpZFN0YXJ0KCptX2RhdGFTdG9yZSwgKnRoaXMpOwogfQogCiB2b2lk
IERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFs
bGVuZ2VJRCkKQEAgLTEzOCw3ICsxNDIsMTIgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYQogCiAgICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5ID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpLCBjaGFsbGVuZ2VJRCwgbWFrZVJlZigqbV9wcm9jZXNzUG9vbC0+bmV0d29y
a2luZ1Byb2Nlc3NDb25uZWN0aW9uKCkpLCBudWxscHRyKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wt
PmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCptX3By
b2Nlc3NQb29sLCAqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5nZXQoKSk7Cisg
ICAgaWYgKCFtX2RhdGFTdG9yZSkgeworICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb246OkNhbmNlbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
bV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCptX2RhdGFTdG9yZSwgKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
Z2V0KCkpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCkBAIC0xNDYsNyArMTU1LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxs
U2VuZFJlcXVlc3QoUmVzbwogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3Qo
Km1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0
UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QpIHsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQo
KS53aWxsU2VuZFJlcXVlc3QoKm1fZGF0YVN0b3JlLCAqdGhpcywgV1RGTW92ZShwcm9wb3NlZFJl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CiAgICAgICAgIG1fcmVkaXJl
Y3RDaGFpbi5hcHBlbmQobmV3UmVxdWVzdC51cmwoKSk7CiAKICAgICAgICAgaWYgKCFwcm90ZWN0
ZWRUaGlzLT5tX3Byb2Nlc3NQb29sKQpAQCAtMTYyLDI2ICsxNzEsMjYgQEAgdm9pZCBEb3dubG9h
ZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoUmVzbwogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBp
ZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9u
c2UoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCByZXNwb25zZSk7CisgICAgbV9kYXRhU3RvcmUtPmRv
d25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKCptX2RhdGFTdG9yZSwgKnRoaXMsIHJl
c3BvbnNlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBsZW5ndGgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3Rv
cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkuZGlkUmVjZWl2ZURhdGEoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBsZW5ndGgpOworICAgIG1f
ZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX2RhdGFTdG9yZSwg
KnRoaXMsIGxlbmd0aCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQor
ICAgIGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nl
c3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvd25sb2FkSUQgPSBkb3dubG9hZElEXSAo
QWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgeworICAg
IG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKCptX2RhdGFTdG9yZSwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJ
RF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
CiAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CkBAIC0xOTYsMTggKzIwNSwx
OCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0CiAKIHZvaWQgRG93
bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewot
ICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURl
c3RpbmF0aW9uKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgcGF0aCk7CisgICAgbV9kYXRhU3RvcmUt
PmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24oKm1fZGF0YVN0b3JlLCAqdGhp
cywgcGF0aCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmluaXNoKCkKIHsKLSAgICBp
ZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKm1fcHJv
Y2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRG
aW5pc2goKm1fZGF0YVN0b3JlLCAqdGhpcyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUg
RG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlN
YXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CkBAIC0yMjMsMTIgKzIzMiwxMiBAQCBzdGF0aWMg
UmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1f
ZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Jlc3VtZURhdGEgPSBjcmVhdGVE
YXRhKHJlc3VtZURhdGEpOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5k
aWRGYWlsKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgZXJyb3IpOworICAgIG1fZGF0YVN0b3JlLT5k
b3dubG9hZENsaWVudCgpLmRpZEZhaWwoKm1fZGF0YVN0b3JlLCAqdGhpcywgZXJyb3IpOwogCiAg
ICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0
ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAt
MjM4LDcgKzI0Nyw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IElQQzoK
IHsKICAgICBtX3Jlc3VtZURhdGEgPSBjcmVhdGVEYXRhKHJlc3VtZURhdGEpOwogCi0gICAgbV9w
cm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRDYW5jZWwoKm1fcHJvY2Vzc1Bvb2wsICp0
aGlzKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRDYW5jZWwoKm1fZGF0
YVN0b3JlLCAqdGhpcyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94
eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRG
aW5pc2hlZCgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDEwICs1MywxMSBAQCBjbGFzcyBEb3dubG9hZElEOwogY2xhc3MgRG93bmxvYWRQcm94eU1h
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERvd25sb2FkUHJveHk+IGNyZWF0ZShE
b3dubG9hZFByb3h5TWFwJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgUmVmPERvd25sb2FkUHJveHk+IGNyZWF0ZShEb3dubG9h
ZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgfkRvd25sb2FkUHJveHkoKTsKIAogICAgIERv
d25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQpAQCAt
OTksNyArMTAwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERv
d25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKQEAgLTExOSw2ICsxMjAsNyBAQCBwcml2YXRlOgogCiAgICAgRG93
bmxvYWRQcm94eU1hcCYgbV9kb3dubG9hZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJQcm9jZXNz
UG9vbD4gbV9wcm9jZXNzUG9vbDsKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRh
U3RvcmU7CiAgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7CiAKICAgICBSZWZQdHI8QVBJOjpE
YXRhPiBtX3Jlc3VtZURhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCShyZXZpc2lvbiAyNTAxNzApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBEb3dubG9hZFByb3h5TWFwOjph
cHBsaWNhdGlvbldpbGxFbgogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSwgMCk7CiB9CiAKLURv
d25sb2FkUHJveHkmIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKK0Rvd25sb2FkUHJveHkmIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURv
d25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0KQogewotICAgIGF1dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgq
dGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CisgICAgYXV0byBkb3dubG9hZFBy
b3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBkYXRhU3RvcmUsIHByb2Nlc3NQb29s
LCByZXNvdXJjZVJlcXVlc3QpOwogICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5k
b3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuY29weVJlZigpKTsKIAogICAgIFJFTEVBU0VfTE9H
KExvYWRpbmcsICJBZGRpbmcgZG93bmxvYWQgJSIgUFJJdTY0ICIgdG8gVUlQcm9jZXNzIERvd25s
b2FkUHJveHlNYXAiLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsK
IGNsYXNzIFByb2Nlc3NBc3NlcnRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIERvd25sb2FkUHJveHlNYXAgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8RG93bmxvYWRQcm94eU1hcD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eU1h
cChOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAgICAgfkRvd25sb2FkUHJveHlNYXAoKTsKIAotICAg
IERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVE
b3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3du
bG9hZFByb3h5Jik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Rvd25s
b2Fkcy5pc0VtcHR5KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQ29udGVu
dFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgor
I2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2lu
Y2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTE3
NiwxMiArMTc3LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcEkK
ICAgICB9CiB9CiAKLURvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURv
d25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitEb3du
bG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7CiAgICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4oKnRoaXMpOwogCi0gICAg
cmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX3Byb2Nlc3NQ
b29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNy
ZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVl
c3QpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyAr
ODksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAotICAgIERvd25sb2FkUHJveHkmIGNy
ZWF0ZURvd25sb2FkUHJveHkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
RG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURh
dGEpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgog
CisjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2ll
U3RvcmUuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNs
dWRlICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcy5oIgpAQCAtMTA3LDYgKzEwOSw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6
OldlYnNpdGVEYXRhU3RvcmUoUmVmPFcKICAgICAsIG1fYXV0aGVudGljYXRvck1hbmFnZXIobWFr
ZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yTWFuYWdlcj4oKSkKICNlbmRpZgogICAgICwgbV9jbGll
bnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PigpKQorICAgICwgbV9kb3du
bG9hZENsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCiAjaWYgSEFW
RShBUFBfU1NPKQogICAgICwgbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvcihtYWtlVW5pcXVl
UmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yPigpKQogI2VuZGlmCkBAIC0xMjgsNiArMTMx
LDcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShQQUw6OgogICAgICwgbV9h
dXRoZW50aWNhdG9yTWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigp
KQogI2VuZGlmCiAgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVD
bGllbnQ+KCkpCisgICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3du
bG9hZENsaWVudD4oKSkKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgLCBtX3NvQXV0aG9yaXphdGlv
bkNvb3JkaW5hdG9yKG1ha2VVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+KCkp
CiAjZW5kaWYKQEAgLTIwNzQsNiArMjA3OCw4NSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRp
ZENyZWF0ZU5ldHdvcmtQCiB7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0RG93bmxv
YWRDbGllbnQoVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAg
IG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK0Rvd25sb2FkUHJveHkq
IFdlYnNpdGVEYXRhU3RvcmU6OmRvd25sb2FkKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwg
V2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQoreworICAgIGlmICghcHJvY2Vz
c1Bvb2wpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFBy
b2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbCA9IHBvb2w7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb2Nlc3NQb29sKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVE
b3dubG9hZFByb3h5KCpwcm9jZXNzUG9vbCwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UpOworICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1Bh
Z2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKwor
ICAgIGlmIChpbml0aWF0aW5nUGFnZSkKKyAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURv
d25sb2FkUmVxdWVzdChkb3dubG9hZFByb3h5KTsKKworICAgIGlmIChwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3Qo
cmVxdWVzdCk7CisgICAgICAgIC8vIFJlcXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxs
IGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJMIG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgorICAgICAg
ICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRvIHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KKyAgICAg
ICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7CisgICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VV
UkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgp
IH07CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhp
bml0aWF0aW5nUGFnZVVSTCk7CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVT
aXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0
LnVybCgpKSk7CisgICAgICAgICAgICBpZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6VXNlckFnZW50KSkKKyAgICAgICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhVUkwoKSk7CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVT
aXRlKGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpVc2VyQWdlbnQpKQorICAgICAgICAgICAgICAgIHVwZGF0
ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2Vu
dCgpKTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFs
c2UpOworICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNzaW9uSUQsIGRvd25sb2FkUHJv
eHkuZG93bmxvYWRJRCgpLCB1cGRhdGVkUmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpLCAwKTsK
KyAgICAgICAgcmV0dXJuICZkb3dubG9hZFByb3h5OworICAgIH0KKworICAgIHJldHVybiAmZG93
bmxvYWRQcm94eTsKK30KKworRG93bmxvYWRQcm94eSogV2Vic2l0ZURhdGFTdG9yZTo6cmVzdW1l
RG93bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBpZiAoIXByb2Nlc3NQb29sKSB7CisgICAgICAgIGZvciAoYXV0byYgcG9vbCA6
IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wgPSBwb29sOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFwcm9jZXNzUG9vbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBk
b3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eSgqcHJvY2Vzc1Bvb2wsIFJlc291cmNl
UmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
ID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICBpZiAo
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3du
bG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgICAg
ICByZXR1cm4gJmRvd25sb2FkUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuICZkb3dubG9hZFBy
b3h5OworfQorCitEb3dubG9hZFByb3h5JiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVEb3dubG9h
ZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSkKK3sKKyAgICBhdXRvJiBk
b3dubG9hZFByb3h5ID0gcHJvY2Vzc1Bvb2wuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5jcmVhdGVE
b3dubG9hZFByb3h5KCp0aGlzLCByZXF1ZXN0KTsKKyAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOworICAgIHJldHVybiBkb3dubG9hZFByb3h5Owor
fQorCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVyKQogewogICAgIGlmIChtX25ldHdvcmtpbmdI
YXNCZWd1bikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsOCBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xhc3Mg
RGF0YTsKK2NsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogfQog
CkBAIC02OSw2ICs3MSw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOworY2xhc3MgRG93bmxvYWRQcm94eTsK
IGNsYXNzIFNlY0tleVByb3h5U3RvcmU7CiBjbGFzcyBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTsK
IGNsYXNzIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yOwpAQCAtMjU5LDYgKzI2MiwxMSBAQCBw
dWJsaWM6CiAgICAgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9j
bGllbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2Vic2l0ZURhdGFT
dG9yZUNsaWVudD4mJiBjbGllbnQpIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KIAor
ICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9kb3du
bG9hZENsaWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoVW5pcXVlUmVm
PEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25s
b2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7CisgICAgRG93bmxvYWRQcm94eSogZG93
bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSB7IH0pOworICAgIERvd25sb2FkUHJveHkqIHJlc3VtZURvd25sb2FkKFdl
YlByb2Nlc3NQb29sKiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpE
YXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIEFQSTo6SFRUUENvb2tp
ZVN0b3JlJiBjb29raWVTdG9yZSgpOwogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
QEAgLTM2MCw2ICszNjgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBVbmlxdWVSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNsaWVudD4gbV9jbGllbnQ7CisgICAgVW5pcXVlUmVmPEFQSTo6RG93bmxv
YWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAKICAgICBSZWZQdHI8QVBJOjpIVFRQQ29va2ll
U3RvcmU+IG1fY29va2llU3RvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTEzOCw2ICsxMTM4LDcgQEAKIAkJNUNFOTEyMTIyMjkzQzI3ODAwNUJFQzc4IC8qIEF1eGlsaWFy
eVByb2Nlc3NNYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgKi87IH07CiAJCTVDRTkxMjEzMjI5M0MyNzkwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNz
TWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9
OwogCQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwQjIyOTNDMUUwMDA1QkVDNzgg
LyogV0tNYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNUNFQUJBMzMyMzM2MEQzOTAwNzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25s
b2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0VBQkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk2MzEwOEY5NjFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2MzEwOEY5ODFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmggKi87IH07CkBAIC0zNjk0LDYgKzM2OTUsNyBAQAogCQk1Q0U5MTIwRjIyOTNDMjVGMDA1
QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBwYXRoID0gQ29jb2EvQXV4
aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0VB
QkEyQTIzMzMyNDc3MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUds
b2JhbFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExl
Z2FjeUdsb2JhbFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNF
QUJBMzIyMzM2MENFQzAwNzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZURv
d25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRkVDQjAzMUUx
RUQxQzgwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDczRjExMTZGRjkwQzAwRUU1
Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRo
ID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtODEyNyw2ICs4MTI5LDcgQEAK
IAkJCQk3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggKi8sCiAJ
CQkJNUM2RTdEODcyMzIzNjFFNzAwQzIxNTlEIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25SZWYuY3BwICovLAogCQkJCTVDNkU3RDg2MjMyMzYxRTcwMEMyMTU5RCAvKiBXS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmggKi8sCisJCQkJNUNFQUJBMzIyMzM2MENFQzAw
Nzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMUE1
NzEwOUMxQUJBMDAyNzAwMkZBQkJFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgKi8sCiAJ
CQkJMUE1NzEwOUQxQUJBMDAyNzAwMkZBQkJFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVJlZi5oICov
LAogCQkJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAg
Ki8sCkBAIC0xMDQyMSw2ICsxMDQyNCw3IEBACiAJCQkJMUFBNjU0RDExQjE0RjcxNDAwQkYxRDNF
IC8qIFdLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NUE4
RDJDODE4N0NDRkFCMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzZFN0Q4ODIzMjM2MjA1MDBDMjE1OUQgLyogV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNFQUJBMzMyMzM2MEQzOTAwNzk3
Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3NUE4RDJENjE4N0QxQzBFMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4NjdBMUM3RjdCQTYwMDY5QUM0RiAvKiBXS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MTA5RjFBQkEw
MDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1MDE4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQwIEBACisyMDE5LTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgTW92ZSBEb3dubG9hZENsaWVudCBmcm9tIFdlYlByb2Nlc3NQb29s
IHRvIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjA4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVE
ZXN0aW5hdGlvbkNyYXNoLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNl
dERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6c2V0Q29udGV4dERvd25sb2FkQ2xpZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9h
ZC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250
YWluaW5nU2xhc2hlcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAoZG93bmxvYWRUZXN0KToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAo
VEVTVCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZp
ZXdXaXRoRG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHRlYXJEb3duXSk6CisgICAgICAgICgtW0Rvd25s
b2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0RG93bmxvYWQ6ZXhwZWN0ZWRMZW5ndGg6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06Cisg
ICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRo
T3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFp
bCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdFRvVVJMKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6
CisKIDIwMTktMDktMjAgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtFV1NdIEpTQyBxdWV1ZXMgc2hvdWxkIHJlLWJ1aWxkIFRvVCBhbmQgY29tcGFyZSBy
ZXN1bHRzIG9uIGJ1aWxkIGZhaWx1cmUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bkNyYXNoLmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWQuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIApAQCAtNDAsMjIgKzQxLDIzIEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3QKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChs
aXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
U3RyaW5nUmVmLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiwgYm9vbCosIGNvbnN0IHZvaWQqKQog
ewogICAgIGRpZERlY2lkZURlc3RpbmF0aW9uID0gdHJ1ZTsKICAgICBXS0Rvd25sb2FkQ2FuY2Vs
KGRvd25sb2FkKTsKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0Rv
d25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCIpLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIHZv
aWQgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQorc3RhdGlj
IHZvaWQgc2V0RG93bmxvYWRDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgV0tDb250ZXh0
RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRD
bGllbnRWMCBjbGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsK
IAogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOwogCi0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCwgJmNs
aWVudC5iYXNlKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0gV0tQYWdl
Q29uZmlndXJhdGlvbkdldFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5UGFnZUNv
bmZpZ3VyYXRpb24ocGFnZSkpLmdldCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXREb3du
bG9hZENsaWVudChkYXRhU3RvcmUsICZjbGllbnQuYmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNl
dFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC03Miw5ICs3NCw5IEBAIHN0YXRp
YyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmUKIFRFU1QoV2ViS2l0LCBEb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVm
PiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihudWxs
cHRyKSk7Ci0gICAgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwogCiAg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0RG93bmxv
YWRDbGllbnQod2ViVmlldy5wYWdlKCkpOwogICAgIHNldFBhZ2VQb2xpY3lDbGllbnQod2ViVmll
dy5wYWdlKCkpOwogCiAgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGlzIGZpbGVuYW1lIHdhcyBzcGVj
aWFsbHkgY2hvc2VuIHRvIHRyaWdnZXIgdGhlIGNyYXNoIGNvbmRpdGlvbnMgaW4KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250
ZXh0TWVudURvd25sb2FkLm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VDb250ZXh0TWVudUNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewpAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXRDb250ZXh0
TWVudUZyb21Qcm9wb3NlZE1lCiAgICAgfQogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0
IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKIHsKICAg
ICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0
Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTC4KICAg
ICBFWFBFQ1RfV0tfU1RSRVEoImRvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVk
RmlsZW5hbWUpOwpAQCAtODIsMTQgKzgzLDE2IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURv
d25sb2FkSFRNTERvd24KIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQg
PSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAg
ICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRhU3Rv
cmVEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9m
KGNsaWVudCkpOwogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRl
eHQuZ2V0KCksICZjbGllbnQuYmFzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJl
Zj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0
aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3
KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CisgICAgCisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0
b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcucGFnZSgpKSku
Z2V0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KGRhdGFTdG9y
ZSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJD
bGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQp
KTsKQEAgLTExNCw3ICsxMTcsNyBAQCBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhU
TUxEb3duCiAgICAgVXRpbDo6cnVuKCZkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTsKIH0K
IAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lQ29udGFpbmluZ1NsYXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3Rh
dGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29u
dGFpbmluZ1NsYXNoZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQog
ewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVkIGFu
ZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBIVE1M
LCBhZnRlciBzYW5pdGl6YXRpb24uCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90ZXN0Ml9k
b3dubG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTEyOSwx
NSArMTMyLDE3IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd24KIHsK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHREb3dubG9h
ZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYw
IGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogICAgIGNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
Q29udGFpbmluZ1NsYXNoZXM7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4
dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVm
PiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRp
bDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAorICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmUgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShh
ZG9wdFdLKFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbih3ZWJWaWV3LnBhZ2UoKSkpLmdldCgp
KTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXREb3dubG9hZENsaWVudChkYXRhU3RvcmUsICZj
bGllbnQuYmFzZSk7CisKICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50
OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CiAg
ICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1t
CShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CkBA
IC0xNzYsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZG93bmxvYWRUZXN0KERlY2lzaW9uIGRlY2lz
aQogCiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25XaXRoQ29udGVu
dEZpbHRlclNldHRpbmdzKGRlY2lzaW9uLCBkZWNpc2lvblBvaW50KTsKICAgICAgICAgYXV0byBk
b3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRGaWx0ZXJpbmdEb3dubG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0g
X3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtb
Y29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3du
bG9hZERlbGVnYXRlLmdldCgpXTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tCZWNvbWVEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAj
aW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CkBAIC0xMjEs
MjMgKzEyMiwyMyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgCiAK
IFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkRGVsZWdhdGUpCiB7Ci0gICAgUmV0YWluUHRyPFdL
UHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IGluaXRdKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgRG93bmxvYWREZWxlZ2F0ZSAq
ZG93bmxvYWREZWxlZ2F0ZSA9IFtbRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAg
W3Byb2Nlc3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGVdOworICAg
IFtkYXRhU3RvcmUgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CiAKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkRGVsZWdhdGUs
IFtwcm9jZXNzUG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0pOworICAgICAgICBFWFBFQ1RfRVEoZG93
bmxvYWREZWxlZ2F0ZSwgW2RhdGFTdG9yZSBfZG93bmxvYWREZWxlZ2F0ZV0pOwogICAgIH0KIAog
ICAgIFtkb3dubG9hZERlbGVnYXRlIHJlbGVhc2VdOwotICAgIEVYUEVDVF9OVUxMKFtwcm9jZXNz
UG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0pOworICAgIEVYUEVDVF9OVUxMKFtkYXRhU3RvcmUgX2Rv
d25sb2FkRGVsZWdhdGVdKTsKIH0KIAogc3RhdGljIHZvaWQgcnVuVGVzdChpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25EZWxlZ2F0ZSwgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
IGRvd25sb2FkRGVsZWdhdGUsIE5TVVJMICp1cmwpCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
IHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlXTsKKyAg
ICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9h
ZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGVdOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAg
aGFzUmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNlOwpAQCAtMjc4LDcgKzI3OSw3IEBAIFRFU1QoX1dL
RG93bmxvYWQsIE9yaWdpbmF0aW5nV2ViVmlldykKICAgICAgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAgICAgICAgIGRvd25sb2FkRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbT3JpZ2luYXRpbmdXZWJWaWV3RG93bmxvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICAgICAgW1tbd2ViVmlldyBj
b25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWRE
ZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0
ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6c291cmNlVVJMXV07CiAgICAgfQogCkBAIC0zNDgsNyArMzQ5LDcgQEAgVEVTVChfV0tEb3du
bG9hZCwgRG93bmxvYWRSZXF1ZXN0T3JpZ2luYQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6W1tEb3dubG9hZFJl
cXVlc3RPcmlnaW5hbFVSTE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF1dOwotICAgIFtb
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRl
OltbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBl
Y3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF1dOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6W1tEb3dubG9hZFJlcXVl
c3RPcmlnaW5hbFVSTERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxVUkw6
c291cmNlVVJMXV07CiAKICAgICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwog
ICAgIE5TVVJMICpjb250ZW50VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtNTA4LDcgKzUwOSw3IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFJlZGlyZWN0ZWREb3dubG9hZCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJv
Y2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwor
ICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25s
b2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBEbyAyIGxvYWRz
IGluIHRoZSBzYW1lIHZpZXcgdG8gbWFrZSBzdXJlIHRoZSByZWRpcmVjdCBjaGFpbiBpcyBwcm9w
ZXJseSBjbGVhcmVkIGJldHdlZW4gbG9hZHMuCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPGRpdj5GaXJzdCBsb2FkPC9kaXY+Il07CkBAIC01MzcsNyArNTM4LDcg
QEAgVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZExvYWRDb252ZXJ0ZQogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0
KCldOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3Nl
dERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBleHBlY3Rl
ZE9yaWdpbmF0aW5nV2ViVmlldyA9IHdlYlZpZXcuZ2V0KCk7CiAgICAgZXhwZWN0ZWRVc2VySW5p
dGlhdGVkU3RhdGUgPSBmYWxzZTsKQEAgLTU2MCw3ICs1NjEsNyBAQCBURVNUKF9XS0Rvd25sb2Fk
LCBSZWRpcmVjdGVkU3ViZnJhbWVMb2FkCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0
ZS5nZXQoKV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3Nl
dERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmll
dyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpk
b3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJWaWV3
ID0gd2ViVmlldy5nZXQoKTsKICAgICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNl
OwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkQ2FuY2VsZWRX
aGlsZUQKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpk
b3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdl
YnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0
KCldOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgZG93bmxvYWRIYXNEZWNpZGVkRGVzdGlu
YXRpb24gPSBmYWxzZTsKQEAgLTcxNSw3ICs3MTYsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3du
bG9hZEF0dHJpYnV0ZURvZXNOCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9h
ZEF0dHJpYnV0ZVRlc3REZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3du
bG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwog
CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8YSBpZD0nbGluaycgaHJlZj0nZGF0YTos
dGVzdCcgZG93bmxvYWQ+Q2xpY2sgbWUhPC9hPiIgYmFzZVVSTDpuaWxdOwogICAgIFtkZWxlZ2F0
ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC03MzAsNyArNzMxLDcgQEAgVEVTVChf
V0tEb3dubG9hZCwgU3RhcnREb3dubG9hZFdpdGhEb3dubAogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRG93bmxvYWRBdHRyaWJ1dGVUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5w
cm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGEgaWQ9J2xp
bmsnIGhyZWY9J2RhdGE6LHRlc3QnIGRvd25sb2FkPkNsaWNrIG1lITwvYT4iIGJhc2VVUkw6bmls
XTsKICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtNzcwLDcg
Kzc3MSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIENyYXNoQWZ0ZXJEb3dubG9hZERpZEYKICAgICAg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICAgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07
CiAgICAgICAgIHByb2Nlc3NQb29sID0gW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bv
b2w7Ci0gICAgICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9h
ZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcgY29u
ZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6c291cmNlVVJMXV07CiAKICAgICAgICAgZGlkRG93bmxvYWRTdGFy
dCA9IGZhbHNlOwpAQCAtODU1LDcgKzg1Niw3IEBAIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXdXaXRoRG93bmxvYWQKICAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6
cHJvY2Vzc1Bvb2wuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWRE
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0
b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICByZXR1
cm4gd2ViVmlldzsKIH0KIApAQCAtOTczLDcgKzk3NCw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9h
ZE5hdmlnYXRpb25SZXNwb25zZUYKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RE
b3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdh
dGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRl
RGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBOU1VS
TCAqZmlyc3RVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmlsZS9z
aW1wbGUuaHRtbCJdOwogICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93XTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0JKHJldmlzaW9u
IDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWRQcm9ncmVzcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2Fk
RGVsZWdhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oPgpAQCAt
MTY3LDcgKzE2OCw3IEBAIC0gKHZvaWQpc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOihEb3dubG8K
IC0gKHZvaWQpdGVhckRvd24KIHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIG1fd2Vi
Vmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0g
bnVsbHB0cjsKKyAgICAgICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgICAgIFttX3dlYlZpZXcu
Z2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgIG1fd2ViVmlldyA9IG51bGxwdHI7
CiAgICAgfQpAQCAtMjM4LDcgKzIzOSw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93bmxv
YWRTdGFydFR5cGUKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIG1fd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgbV93ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IHNlbGY7Ci0gICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOworICAgIG1fd2ViVmlldy5nZXQoKS5jb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOwogCiAg
ICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZmlsZSJdXSk7CiAKQEAgLTI0OCw3ICsy
NDksNyBAQCAtICh2b2lkKXN0YXJ0RG93bmxvYWQ6KERvd25sb2FkU3RhcnRUeXBlCiAgICAgICAg
IFttX3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0SW5Qcm9jZXNzUG9vbDoKLSAgICAgICAg
W21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9kb3dubG9hZFVSTFJl
cXVlc3Q6cmVxdWVzdC5nZXQoKSBvcmlnaW5hdGluZ1dlYlZpZXc6bnVsbHB0cl07CisgICAgICAg
IFttX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9kb3dubG9h
ZFVSTFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSBvcmlnaW5hdGluZ1dlYlZpZXc6bnVsbHB0cl07CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJEYXRhU291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oPgpAQCAtMjMyLDEyICsyMzMsOSBAQCAt
ICh2b2lkKXZlcmlmeURvd25sb2FkCiAKIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBydW5U
ZXN0KFF1aWNrTG9va0RlbGVnYXRlICpkZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBC
T09MIHNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcpCiB7Ci0gICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nl
c3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKLQogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CiAgICAgW2NvbmZpZ3VyYXRpb24gX3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdR
dWlja0xvb2tQcmV2aWV3OnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOwotICAgIFtj
b25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBbW2Nv
bmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZGVsZWdh
dGVdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjUwMTcw
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyMiw4ICs3MjIsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJW
aWV3V2l0aE9wCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChtX21h
aW5XZWJWaWV3LT5wYWdlKCksICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIAotICAgIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50VjEgZG93bmxvYWRDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwg
dGhpcyB9LAorICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50VjAgZG93bmxvYWRD
bGllbnQgPSB7CisgICAgICAgIHsgMCwgdGhpcyB9LAogICAgICAgICBkb3dubG9hZERpZFN0YXJ0
LAogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKICAgICAg
ICAgMCwgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlCkBAIC03MzcsOCArNzM3LDggQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgICAgICAwLCAvLyBwcm9jZXNzRGlk
Q3Jhc2g7CiAgICAgICAgIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwKICAg
ICB9OwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQoKSwgJmRvd25sb2Fk
Q2xpZW50LmJhc2UpOwotICAgIAorICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xp
ZW50KFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksICZkb3dubG9hZENsaWVudC5i
YXNlKTsKKwogICAgIC8vIHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8KICAg
ICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewog
ICAgICAgICB7IDEsIHRoaXMgfSwKQEAgLTIzOTAsNDQgKzIzOTAsNDYgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIAogLy8gV0tDb250ZXh0RG93bmxvYWRD
bGllbnQKIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChjb250ZXh0LCBkb3dubG9hZCk7
CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQoZGF0YVN0b3JlLCBkb3dubG9hZCk7CiB9CiAgICAg
Ci1XS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dP
dmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb250ZXh0LCBkb3dubG9hZCwgZmls
ZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRhdGFTdG9yZSwgZG93bmxvYWQsIGZpbGVuYW1lLCBhbGxv
d092ZXJ3cml0ZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNo
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2goY29udGV4
dCwgZG93bmxvYWQpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChkYXRhU3RvcmUsIGRvd25s
b2FkKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRG
YWlsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3Rh
dGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PmRvd25sb2FkRGlkRmFpbChjb250ZXh0LCBkb3dubG9hZCwgZXJyb3IpOworICAgIHN0YXRpY19j
YXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3du
bG9hZERpZEZhaWwoZGF0YVN0b3JlLCBkb3dubG9hZCwgZXJyb3IpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUs
IFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRvd25sb2FkRGlkQ2FuY2VsKGNvbnRleHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2Fz
dDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxv
YWREaWRDYW5jZWwoZGF0YVN0b3JlLCBkb3dubG9hZCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGNvbnRleHQsIGRv
d25sb2FkLCB1cmwpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKGRhdGFTdG9yZSwgZG93bmxvYWQsIHVybCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7CisgICAgQVNT
RVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAg
ICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgc3RhcnRlZC5cbiIpOwogfQogCi1XS1N0cmlu
Z1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9v
bComIGFsbG93T3ZlcndyaXRlKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dP
dmVyd3JpdGUpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vi
c2l0ZURhdGFTdG9yZSgpKTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSB0b1dURlN0
cmluZyhmaWxlbmFtZSk7CiAKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykg
ewpAQCAtMjQ1MCwyMSArMjQ1MiwyNCBAQCBXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVj
aWRlRGVzdGluCiAgICAgcmV0dXJuIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3VnZ2Vz
dGVkRmlsZW5hbWUpLmxlYWtSZWYoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQordm9pZCBUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEb3dubG9hZFJlZikKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9sbGVy
Ojp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJh
Y2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBj
b21wbGV0ZWQuXG4iKTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERv
bmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVybCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiwgV0tVUkxS
ZWYgdXJsKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6OndlYnNp
dGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCiAg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxv
YWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0
cmluZyh1cmwpKSksICJcIi5cbiIpKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnJvcikK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQogeworICAgIEFT
U0VSVChkYXRhU3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAg
ICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpIHsKICAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgZmFpbGVkLlxuIl9zKTsKIApAQCAtMjQ3
Nyw4ICsyNDgyLDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQwog
ICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxv
YWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmKQogeworICAgIEFTU0VSVChkYXRh
U3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1f
c2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24t
Pm91dHB1dFRleHQoIkRvd25sb2FkIGNhbmNlbGxlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9j
YXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjUwMTcwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsMTggKzQwNSwxOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2
aWdhdGlvblJlZik7CiAKICAgICAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudAotICAgIHN0YXRp
YyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25z
dCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZik7Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYg
ZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LSAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYg
YWxsb3dPdmVyd3JpdGUpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWRE
aWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBk
b3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBj
b25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENhbmNl
bChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRv
d25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYs
IFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tVUkxSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3du
bG9hZERpZFN0YXJ0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZik7CisgICAg
c3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5h
bWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKyAgICBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29s
KiYgYWxsb3dPdmVyd3JpdGUpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZv
aWQgZG93bmxvYWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVm
KTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3du
bG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9y
UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlk
Q2FuY2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRh
U3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9p
ZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379327</attachid>
            <date>2019-09-21 17:57:25 -0700</date>
            <delta_ts>2019-09-21 18:01:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190921175724.patch</filename>
            <type>text/plain</type>
            <size>121928</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgYWJzdHJhY3Rpb25zIGFyb3VuZCBXZWJzaXRlRGF0YVN0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJT
Y3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dG
ZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDE3
MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTMs
NyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgot
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsKKyAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25sb2Fk
UHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRv
d25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgp
KTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFr
ZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgmcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwog
ICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVz
dFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywg
VVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQu
bGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3du
bG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcgKzIx
Myw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAg
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92
aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0ICsz
NTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAgICAg
IG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGllbnQp
Ci0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3du
bG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xp
ZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMTEsNTUgKzEyOTksNiBA
QCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVh
dGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAoaW5p
dGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8vIFJl
cXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJM
IG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRv
IHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7
Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0
aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWlu
c0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAgICBp
ZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNl
ckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpV
c2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNl
c3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdn
ZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25s
b2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0KLQot
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CkBAIC0xNjA0LDEzICsxNTQzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVm
YXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7CiB9
CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5Owot
fQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhp
c3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0g
ICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2Jq
ZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdvcmtQ
cm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAgCi0g
ICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAg
V2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3
ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAg
V2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwxNyAr
NTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRv
d25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgpAQCAtNTUsOSArNTMs
NiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7
CiB9OwpAQCAtMTY4LDEwNyArMTYzLDggQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiB3a0NsaWVudCkKK3ZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqKQogewotICAgIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRTdGFydChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNz
UG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShXZWJLaXQ6OnRvQVBJKCZwcm9j
ZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKLQotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZh
bHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vz
c1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0
Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCks
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wp
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNzYsMTQgKzE3MiwxNCBAQCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9h
ZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5kb3dubG9hZCgwLCBX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVm
IHBhdGgpCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJl
ZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIFdlYktp
dDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGgpKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxMSBAQCBXS19FWFBP
UlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlv
bkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERv
d25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QpOwotV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBw
YXRoKTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVS
TFJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxv
YWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1Jl
ZiBwYXRoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVzdW1lRG93bmxvYWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbml0
aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
d2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLV2Vic2l0ZURhdGFT
dG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaykoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZpbmlzaENh
bGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWREaWRDYW5jZWwpKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
KShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50VjAgeworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2g7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGYWlsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2FuY2VsOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Rp
ZENyYXNoOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
OworfSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLy8gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1
ZGUgIldLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtNDYsNiArNTAsMTIgQEAKICNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCiBXS1R5cGVJRCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CkBAIC03MjUsMyArNzM1LDExNSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGlj
IEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93
bmxvYWRDbGllbnQoY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFs
bG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVz
dGluYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OnRvQVBJ
KCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QoV2Vi
S2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPERvd25sb2FkQ2xpZW50
PihjbGllbnQpKTsKK30KKworV0tEb3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZFVSTFJlcXVlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlKS0+ZG93bmxvYWQobnVsbHB0ciwgbnVsbHB0ciwgV2ViS2l0Ojp0b0ltcGwocmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7Cit9CisKK1dLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlKS0+cmVzdW1lRG93bmxvYWQobnVs
bHB0ciwgbnVsbHB0ciwgKldlYktpdDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RG
U3RyaW5nKHBhdGgpKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CkBAIC0xNDMsNiArMTQ0LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWwKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNs
ZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0
aW9uIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgY29uc3QgV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVSTFJlcXVlc3QoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5n
UmVmIHBhdGgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtNDIsOCArNDEs
NiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTYyLDggKzU5LDYgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFBy
b2Nlc3NQb29sOwogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09i
akNQdHI8aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7Ci0g
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0
ZTsKLQogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNz
aW9uOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC0zNjcsMTMgKzM2MiwxMSBA
QCAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpCiAKIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewotICAgIHJldHVybiBfZG93bmxv
YWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewotICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpE
b3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC02MTUsMTIgKzYwOCwxMiBAQCAt
ICh2b2lkKV9zZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKIC0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gKF9XS0Rvd25sb2Fk
ICopX3Byb2Nlc3NQb29sLT5kb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpLndyYXBw
ZXIoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5wdHIoKSwgcGF0aCkpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNl
bmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERl
bGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04MSw4ICs4MSw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
LS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
LSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVD
QVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkVVJMUmVx
dWVzdCIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkp
OworCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJz
aXRlRGF0YVN0b3JlLl9yZXN1bWVEb3dubG9hZEZyb21EYXRhIiwgbWFjb3MoMTAuMTQuNCwgV0tf
TUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAK
KyNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTM4LDYgKzQw
LDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CkBAIC00NTUsNiArNDU4LDI3IEBAIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKKy0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZG93bmxvYWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKK30K
KworLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KWRvd25sb2FkRGVsZWdhdGUKK3sKKyAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVs
ZWdhdGU7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWVSZWY8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworfQorCist
IChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJu
IHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmRvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9w
YWdlXSwgcmVxdWVzdCkpOworfQorCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5h
dGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gd3JhcHBlcihf
d2Vic2l0ZURhdGFTdG9yZS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7Cit9CisKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnk6KEJPT0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZUQKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2Rvd25sb2FkRGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI1
MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tEb3dubG9hZDsKIEBjbGFzcyBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wg
X1dLRG93bmxvYWREZWxlZ2F0ZTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZTsKIApAQCAtNTksNiArNjEsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOikgTlNTdHJpbmcgKl9zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyIiwgbWFjb3MoMTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4y
LCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxl
Z2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
IF9OdWxsYWJsZSl3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogCiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFy
dGVkKGRvd25sb2FkLmdldCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3Rh
cnRlZChtX3dlYkNvbnRleHQsIGRvd25sb2FkLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQo
KSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERv
d25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQpAQCAtNjgsMTMgKzY4LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdERvd25sb2FkU2V0UmVzcG9uc2UoZG93bmxvYWQuZ2V0KCks
IHJlc3BvbnNlLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3Ro
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJr
aXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRvd25sb2FkLmdldCgpLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRv
d25sb2FkLmdldCgpLCBwYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgpKSkgewpA
QCAtOTksMTQgKzk5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDYW5jZWwo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgIHZvaWQgZGlkQ2FuY2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgp
KTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFByb3h5
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0
RG93bmxvYWRGaW5pc2hlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgcHJp
dmF0ZToKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiB9OwogCi12b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
Cit2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAg
Ly8gRklYTUU6IEZvciBjb21wYXRpYmlsaXR5LCB5b3UgbWF5IHdhbnQgdG8gc2hpbSB0aGlzIG9u
dG8gdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAvLyBidXQgdGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZCBhbmQgYSByZXBsYWNlbWVudCBBUEkgb24gdGhlIFdlYnNpdGVEYXRhU3Rv
cmUgc2hvdWxkIGJlIGFkZGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlzcG9zZShHT2JqCiAgICAgaWYgKCFwcml2LT5jbGllbnRzRGV0YWNoZWQpIHsKICAg
ICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG51bGxwdHIpOwotICAgICAgICBwcml2LT5w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobnVsbHB0cik7CiAgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7
CiAgICAgfQogCkBAIC04MjYsOCArODI1LDkgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93ZWJf
Y29udGV4dF9kb3dubAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09O
VEVYVChjb250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBu
dWxscHRyKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoY29udGV4dCwgdXJpLCBudWxscHRyKTsKLSAgICByZXR1
cm4gZG93bmxvYWQubGVha1JlZigpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXBy
ZWNhdGVkIGFuZCByZXBsYWNlZCBieSBhIGZ1bmN0aW9uIG9uIFdlYnNpdGVEYXRhU3RvcmUuCisg
ICAgLy8gSWYgY29tcGF0aWJpbGl0eSBpcyBuZWVkZWQsIHNoaW0gdGhpcyBvbnRvIHRoZSBkZWZh
dWx0IFdlYnNpdGVEYXRhU3RvcmUuCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC8qKgpAQCAt
MTY1NSwxMCArMTY1NSwxMSBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9y
Q3JlCiAgICAgcmV0dXJuIGRvd25sb2FkLmdldCgpOwogfQogCi1XZWJLaXREb3dubG9hZCogd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogdXJpLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlKQorV2ViS2l0RG93bmxv
YWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRleHQqLCBjb25z
dCBjaGFyKiwgV2ViUGFnZVByb3h5KikKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwotICAgIHJldHVybiB3ZWJraXRXZWJDb250
ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmRvd25s
b2FkKGluaXRpYXRpbmdQYWdlLCByZXF1ZXN0KSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IGEgZnVuY3Rpb24gb24gV2Vic2l0ZURhdGFT
dG9yZS4KKyAgICAvLyBJZiBjb21wYXRpYmlsaXR5IGlzIG5lZWRlZCwgc2hpbSB0aGlzIG9udG8g
dGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZS4KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTcgKzQ3LDE3IEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50
Ci0gICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCB1aW50NjRf
dCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHByb2Nlc3NEaWRDcmFz
aChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0
YXJ0KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkRmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5Jikg
ZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkQ2Fu
Y2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJzaXRlRGF0
YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYnNpdGVEYXRhU3RvcmUmLCBE
b3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAogI2lmIFVT
RShTWVNURU1fUFJFVklFVykKICAgICB2b2lkIHRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJv
eHkmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBE
b3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYnNpdGVEYXRhU3Rv
cmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nl
c3MKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5pc1N1Y2Nlc3NmdWwoKSkgewpAQCAtOTgsNyArOTgs
NyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50
NjRfdCBsZW5ndGgpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQCiAgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0
aF07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQordm9p
ZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYnNp
dGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhN
RTogU3lzdGVtIFByZXZpZXcgbmVlZHMgY29kZSBoZXJlLgogICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikgewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWMKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQogewogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpbwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKLXZvaWQg
RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jh
c2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50
Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nl
c3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTIw
NSw3ICsyMDUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpCiAg
ICAgfQogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
RmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
ewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3Rl
bVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEb3dubG9hZENs
aWVudDo6ZGlkRmluaXNoKFdlYlByb2NlcwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRE
aWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpKSB7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChX
ZWJQcm9jZXNzUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vic2l0ZURhdGFT
dG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkp
IHsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vi
UHJvY2VzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCiAgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1d
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsMTUgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlRG93bmxvYWRJRCgpCiAgICAgcmV0dXJu
ICsrdW5pcXVlRG93bmxvYWRJRDsKIH0KICAgICAKLVJlZjxEb3dubG9hZFByb3h5PiBEb3dubG9h
ZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKK1JlZjxEb3dubG9hZFByb3h5PiBEb3dubG9hZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQ
cm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvd25sb2FkUHJveHkoZG93
bmxvYWRQcm94eU1hcCwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94eU1hcCwgZGF0YVN0b3Jl
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KSk7CiB9CiAKLURvd25sb2FkUHJveHk6OkRv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKK0Rvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxv
YWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogICAg
IDogbV9kb3dubG9hZFByb3h5TWFwKGRvd25sb2FkUHJveHlNYXApCiAgICAgLCBtX3Byb2Nlc3NQ
b29sKCZwcm9jZXNzUG9vbCkKKyAgICAsIG1fZGF0YVN0b3JlKCZkYXRhU3RvcmUpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZ2VuZXJhdGVEb3dubG9hZElEKCkpCiAgICAgLCBtX3JlcXVlc3QocmVzb3Vy
Y2VSZXF1ZXN0KQogewpAQCAtNjcsNiArNjgsNyBAQCBEb3dubG9hZFByb3h5OjpEb3dubG9hZFBy
b3h5KERvd25sb2FkUHJvCiBEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCiB7CiAgICAg
QVNTRVJUKCFtX3Byb2Nlc3NQb29sKTsKKyAgICBBU1NFUlQoIW1fZGF0YVN0b3JlKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpjYW5jZWwoKQpAQCAtODIsMTQgKzg0LDE2IEBAIHZvaWQgRG93
bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwog
ICAgIG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOworICAgIEFTU0VSVChtX2RhdGFTdG9yZSk7Cisg
ICAgbV9kYXRhU3RvcmUgPSBudWxscHRyOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRh
U3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xp
ZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRh
U3RvcmUtPmRvd25sb2FkQ2xpZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX2RhdGFTdG9yZSwgKnRo
aXMpOwogfQogCiBXZWJQYWdlUHJveHkqIERvd25sb2FkUHJveHk6Om9yaWdpbmF0aW5nUGFnZSgp
IGNvbnN0CkBAIC0xMjUsMTAgKzEyOSwxMCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0
KGNvbnN0IFJlc291CiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRp
cmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hh
aW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAg
IGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wt
PmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRTdGFydCgqbV9kYXRhU3RvcmUsICp0aGlz
KTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
dWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xMzgsNyArMTQyLDEyIEBAIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKIAogICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1ha2VSZWYoKm1fcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKSwgbnVsbHB0cik7CiAKLSAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuZ2V0KCkpOworICAgIGlmICghbV9kYXRhU3RvcmUpIHsKKyAgICAgICAgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgqbV9kYXRhU3RvcmUsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTQ2LDcgKzE1NSw3IEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkud2ls
bFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9wb3NlZFJlcXVl
c3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CisgICAgbV9kYXRhU3RvcmUtPmRv
d25sb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0KCptX2RhdGFTdG9yZSwgKnRoaXMsIFdURk1v
dmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAg
ICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCiAgICAgICAg
IGlmICghcHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9vbCkKQEAgLTE2MiwyNiArMTcxLDI2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KIAogdm9pZCBEb3dubG9h
ZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgcmVzcG9uc2UpOworICAgIG1f
ZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqbV9kYXRhU3Rv
cmUsICp0aGlzLCByZXNwb25zZSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgbGVuZ3RoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBp
ZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5k
b3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbGVu
Z3RoKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgq
bV9kYXRhU3RvcmUsICp0aGlzLCBsZW5ndGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewotICAgIGlmICghbV9w
cm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVu
YW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0g
ZG93bmxvYWRJRF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGlu
YXRpb24pIHsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9kYXRhU3RvcmUsICp0aGlzLCBzdWdnZXN0ZWRG
aWxlbmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJ
RCA9IGRvd25sb2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRl
c3RpbmF0aW9uKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQogICAgICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwpAQCAt
MTk2LDE4ICsyMDUsMTggQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldp
dAogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9y
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHBhdGgpOworICAg
IG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uKCptX2Rh
dGFTdG9yZSwgKnRoaXMsIHBhdGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlz
aCgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
RmluaXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkRmluaXNoKCptX2RhdGFTdG9yZSwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBj
YW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9k
b3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjIzLDEyICsyMzIs
MTIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29ucwogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wp
CisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9yZXN1bWVE
YXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25s
b2FkQ2xpZW50KCkuZGlkRmFpbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGVycm9yKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKCptX2RhdGFTdG9yZSwgKnRoaXMs
IGVycm9yKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKQEAgLTIzOCw3ICsyNDcsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNl
bChjb25zdCBJUEM6CiB7CiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRh
KTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCptX3By
b2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlk
Q2FuY2VsKCptX2RhdGFTdG9yZSwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhl
IERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5
TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAyNTAxNzApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxMCArNTMsMTEgQEAgY2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIERv
d25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb3dubG9hZFBy
b3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBj
cmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9v
bCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3dubG9hZFByb3h5
KCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25s
b2FkSUQ7IH0KQEAgLTk5LDcgKzEwMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQ
b29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgRG93
bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMTksNiArMTIwLDcgQEAgcHJpdmF0
ZToKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQ
dHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRh
U3RvcmU+IG1fZGF0YVN0b3JlOwogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwogCiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gbV9yZXN1bWVEYXRhOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkocmV2aXNp
b24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgRG93bmxv
YWRQcm94eU1hcDo6YXBwbGljYXRpb25XaWxsRW4KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCks
IDApOwogfQogCi1Eb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9h
ZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5
TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIGF1
dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3Jl
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93
bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKICAg
ICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQWRkaW5nIGRvd25sb2FkICUiIFBSSXU2NCAiIHRvIFVJ
UHJvY2VzcyBEb3dubG9hZFByb3h5TWFwIiwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRv
d25sb2FkSUQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHk7CiBjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5TWFwIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPERvd25sb2FkUHJveHlNYXA+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHlNYXAoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogICAgIH5Eb3dubG9hZFByb3h5
TWFwKCk7CiAKLSAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWRQ
cm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bv
b2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRvd25sb2Fk
RmluaXNoZWQoRG93bmxvYWRQcm94eSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0xNzYsMTIgKzE3NywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5
bnRoZXNpemVBcHBJCiAgICAgfQogfQogCi1Eb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQorRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxv
YWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQogICAg
ICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0
aGlzKTsKIAotICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkobV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgbV9wcm9jZXNzUG9vbCwg
cmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKLSAgICBEb3du
bG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURh
dGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKIAorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgi
CisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKQEAgLTEwNyw2ICsxMDksNyBAQCBXZWJz
aXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXCiAgICAgLCBtX2F1dGhlbnRpY2F0
b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvck1hbmFnZXI+KCkpCiAjZW5kaWYK
ICAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oKSkK
KyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50
PigpKQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAsIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0
b3IobWFrZVVuaXF1ZVJlZjxTT0F1dGhvcml6YXRpb25Db29yZGluYXRvcj4oKSkKICNlbmRpZgpA
QCAtMTI4LDYgKzEzMSw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUEFM
OjoKICAgICAsIG1fYXV0aGVudGljYXRvck1hbmFnZXIobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNh
dG9yTWFuYWdlcj4oKSkKICNlbmRpZgogICAgICwgbV9jbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJz
aXRlRGF0YVN0b3JlQ2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVl
UmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCiAjaWYgSEFWRShBUFBfU1NPKQogICAgICwgbV9z
b0F1dGhvcml6YXRpb25Db29yZGluYXRvcihtYWtlVW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNv
b3JkaW5hdG9yPigpKQogI2VuZGlmCkBAIC0yMDc0LDYgKzIwNzgsODUgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUAogewogfQogCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldERvd25sb2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGNs
aWVudCkKK3sKKyAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCitE
b3dubG9hZFByb3h5KiBXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZChXZWJQcm9jZXNzUG9vbCog
cHJvY2Vzc1Bvb2wsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKK3sKKyAgICBpZiAoIXByb2Nlc3NQb29sKSB7CisgICAgICAgIGZvciAoYXV0byYgcG9vbCA6
IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wgPSBwb29sOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFwcm9jZXNzUG9vbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBk
b3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eSgqcHJvY2Vzc1Bvb2wsIHJlcXVlc3Qs
IGluaXRpYXRpbmdQYWdlKTsKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBpbml0aWF0
aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCk7CisKKyAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpCisgICAgICAgIGlu
aXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWRQcm94eSk7CisKKyAg
ICBpZiAocHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHVwZGF0ZWRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICAvLyBSZXF1ZXN0J3MgZmly
c3RQYXJ0eUZvckNvb2tpZXMgd2lsbCBiZSB1c2VkIGFzIE9yaWdpbmFsIFVSTCBvZiB0aGUgZG93
bmxvYWQgcmVxdWVzdC4KKyAgICAgICAgLy8gV2Ugc2V0IHRoZSB2YWx1ZSB0byB0b3AgbGV2ZWwg
ZG9jdW1lbnQncyBVUkwuCisgICAgICAgIGlmIChpbml0aWF0aW5nUGFnZSkgeworICAgICAgICAg
ICAgVVJMIGluaXRpYXRpbmdQYWdlVVJMID0gVVJMIHsgVVJMIHsgfSwgaW5pdGlhdGluZ1BhZ2Ut
PnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OworICAgICAgICAgICAgdXBkYXRlZFJlcXVlc3Quc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoaW5pdGlhdGluZ1BhZ2VVUkwpOworICAgICAgICAgICAgdXBk
YXRlZFJlcXVlc3Quc2V0SXNTYW1lU2l0ZShhcmVSZWdpc3RyYWJsZURvbWFpbnNFcXVhbChpbml0
aWF0aW5nUGFnZVVSTCwgcmVxdWVzdC51cmwoKSkpOworICAgICAgICAgICAgaWYgKCF1cGRhdGVk
UmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlVzZXJBZ2VudCkpCisg
ICAgICAgICAgICAgICAgdXBkYXRlZFJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudChpbml0aWF0aW5n
UGFnZS0+dXNlckFnZW50KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXBkYXRl
ZFJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoVVJMKCkpOworICAgICAgICAgICAgdXBk
YXRlZFJlcXVlc3Quc2V0SXNTYW1lU2l0ZShmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXVwZGF0
ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNlckFnZW50KSkK
KyAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KFdlYlBhZ2VQ
cm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlZFJl
cXVlc3Quc2V0SXNUb3BTaXRlKGZhbHNlKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQ
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3Qo
c2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgdXBkYXRlZFJlcXVlc3QsIHN1
Z2dlc3RlZEZpbGVuYW1lKSwgMCk7CisgICAgICAgIHJldHVybiAmZG93bmxvYWRQcm94eTsKKyAg
ICB9CisKKyAgICByZXR1cm4gJmRvd25sb2FkUHJveHk7Cit9CisKK0Rvd25sb2FkUHJveHkqIFdl
YnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25sb2FkKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKCFwcm9jZXNzUG9vbCkgeworICAg
ICAgICBmb3IgKGF1dG8mIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkp
IHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sID0gcG9vbDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmICghcHJvY2Vzc1Bvb2wpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHko
KnByb2Nlc3NQb29sLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2Up
OworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlh
dGluZ1BhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KTsKKworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
OworICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworCisgICAgaWYgKHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKSB7CisgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFBy
b3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICAgICAgcmV0dXJuICZkb3dubG9hZFByb3h5Owor
ICAgIH0KKworICAgIHJldHVybiAmZG93bmxvYWRQcm94eTsKK30KKworRG93bmxvYWRQcm94eSYg
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFn
ZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpCit7CisgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IHBy
b2Nlc3NQb29sLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuY3JlYXRlRG93bmxvYWRQcm94eSgqdGhp
cywgcmVxdWVzdCk7CisgICAgZG93bmxvYWRQcm94eS5zZXRPcmlnaW5hdGluZ1BhZ2Uob3JpZ2lu
YXRpbmdQYWdlKTsKKyAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKK30KKwogYm9vbCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoU3RyaW5n
JiYgaWRlbnRpZmllcikKIHsKICAgICBpZiAobV9uZXR3b3JraW5nSGFzQmVndW4pCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4
LDggQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgQVBJIHsKK2NsYXNzIERhdGE7CitjbGFzcyBEb3du
bG9hZENsaWVudDsKIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIH0KIApAQCAtNjksNiArNzEsNyBA
QCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRo
ZW50aWNhdG9yTWFuYWdlcjsKK2NsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94
eVN0b3JlOwogY2xhc3MgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U7CiBjbGFzcyBTT0F1dGhvcml6
YXRpb25Db29yZGluYXRvcjsKQEAgLTI1OSw2ICsyNjIsMTEgQEAgcHVibGljOgogICAgIFdlYnNp
dGVEYXRhU3RvcmVDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+JiYgY2xp
ZW50KSB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAKKyAgICBBUEk6OkRvd25sb2Fk
Q2xpZW50JiBkb3dubG9hZENsaWVudCgpIHsgcmV0dXJuIG1fZG93bmxvYWRDbGllbnQuZ2V0KCk7
IH0KKyAgICB2b2lkIHNldERvd25sb2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xp
ZW50PiYmKTsKKyAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBv
cmlnaW5hdGluZ1BhZ2UpOworICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkKFdlYlByb2Nlc3NQ
b29sKiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9
KTsKKyAgICBEb3dubG9hZFByb3h5KiByZXN1bWVEb3dubG9hZChXZWJQcm9jZXNzUG9vbCosIFdl
YlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICBBUEk6OkhUVFBDb29raWVTdG9yZSYgY29va2llU3Rv
cmUoKTsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC0zNjAsNiArMzY4LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGll
bnQ+IG1fY2xpZW50OworICAgIFVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25s
b2FkQ2xpZW50OwogCiAgICAgUmVmUHRyPEFQSTo6SFRUUENvb2tpZVN0b3JlPiBtX2Nvb2tpZVN0
b3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMzgsNiArMTEzOCw3IEBA
CiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwRjIy
OTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1Q0U5
MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1RjAw
NUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQyMjkz
QzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDRUFCQTMzMjMz
NjBEMzkwMDc5Nzc5NyAvKiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFQUJBMzIyMzM2MENF
QzAwNzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjE3QTUyRDgxRjQzQTlE
QTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFG
NDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJNjMxMDhGOTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9u
TWFuaWZlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDYzMTA4Rjk0MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjMxMDhGOTkx
Rjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTgxRjk2NzFG
NzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovOyB9OwpAQCAt
MzY5NCw2ICszNjk1LDcgQEAKIAkJNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFy
eVByb2Nlc3NNYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1
eGlsaWFyeVByb2Nlc3NNYWluLmNwcDsgcGF0aCA9IENvY29hL0F1eGlsaWFyeVByb2Nlc3NNYWlu
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUJBMkEyMzMzMjQ3NzAwNzk3
Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExlZ2FjeUdsb2JhbFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDRUFCQTJCMjMzMzI1MTQwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0aW5n
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDRUFCQTMyMjMzNjBDRUMwMDc5
Nzc5NyAvKiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5NiAvKiBCYXNlVGFyZ2V0
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2VUYXJnZXQueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYxN0E1MkQ3MUY0M0E5QjYwMERD
REMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTgxMjcsNiArODEyOSw3IEBACiAJCQkJN0M4OUQyQTIxQTY3
ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICovLAogCQkJCTVDNkU3RDg3MjMyMzYx
RTcwMEMyMTU5RCAvKiBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmNwcCAqLywK
IAkJCQk1QzZFN0Q4NjIzMjM2MUU3MDBDMjE1OUQgLyogV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvblJlZi5oICovLAorCQkJCTVDRUFCQTMyMjMzNjBDRUMwMDc5Nzc5NyAvKiBXS1dlYnNp
dGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oICovLAogCQkJCTFBNTcxMDlDMUFCQTAwMjcwMDJG
QUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwICovLAogCQkJCTFBNTcxMDlEMUFCQTAw
MjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCAqLywKIAkJCQk1QzlFNTY4MDFE
RjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovLApAQCAtMTA0MjEsNiAr
MTA0MjQsNyBAQAogCQkJCTFBQTY1NEQxMUIxNEY3MTQwMEJGMUQzRSAvKiBXS1dlYnNpdGVEYXRh
UmVjb3JkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzVBOEQyQzgxODdDQ0ZBQjAwQzM5
QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2RTdEODgy
MzIzNjIwNTAwQzIxNTlEIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaCBp
biBIZWFkZXJzICovLAorCQkJCTVDRUFCQTMzMjMzNjBEMzkwMDc5Nzc5NyAvKiBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzVBOEQyRDYxODdE
MUMwRTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUUyODY3QTFDN0Y3QkE2MDA2OUFDNEYgLyogV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzEwOUYxQUJBMDAyNzAwMkZBQkJFIC8qIFdL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxODcpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxOS0wOS0y
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IE1vdmUgRG93bmxvYWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIw
ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXREb3dubG9hZENsaWVudCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldENvbnRleHREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmlu
Zy5tbToKKyAgICAgICAgKGRvd25sb2FkVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAo
cnVuVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3V2l0aERvd25sb2FkTW9u
aXRvclNwZWVkTXVsdGlwbGllcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOgorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNz
VGVzdFJ1bm5lciB0ZWFyRG93bl0pOgorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciBzdGFydERvd25sb2FkOmV4cGVjdGVkTGVuZ3RoOl0pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAgICAocnVuVGVzdCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydCk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorCiAyMDE5LTA5LTIwICBB
YWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBKU0Mg
cXVldWVzIHNob3VsZCByZS1idWlsZCBUb1QgYW5kIGNvbXBhcmUgcmVzdWx0cyBvbiBidWlsZCBm
YWlsdXJlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERl
Y2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAJKHJldmlz
aW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2Vi
Vmlldy5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
QEAgLTQwLDIyICs0MSwyMyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0CiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQobGlzdGVuZXIpOwogfQogCi1z
dGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
V0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiwgYm9vbCos
IGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lkKikKIHsKICAgICBkaWREZWNpZGVE
ZXN0aW5hdGlvbiA9IHRydWU7CiAgICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CiAgICAg
cmV0dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Eb3dubG9hZERlY2lkZURlc3Rp
bmF0aW9uQ3Jhc2giKS5sZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldENvbnRleHREb3du
bG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCkKK3N0YXRpYyB2b2lkIHNldERvd25sb2Fk
Q2xpZW50KFdLUGFnZVJlZiBwYWdlKQogewotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAg
Y2xpZW50OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50VjAgY2xpZW50Owog
ICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKICAgICBjbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKICAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKIAotICAg
IFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQsICZjbGllbnQuYmFzZSk7CisgICAg
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHBhZ2Up
KS5nZXQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoZGF0YVN0
b3JlLCAmY2xpZW50LmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlUG9saWN5Q2xpZW50
KFdLUGFnZVJlZiBwYWdlKQpAQCAtNzIsOSArNzQsOSBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlUG9s
aWN5Q2xpZW50KFdLUGFnZVJlCiBURVNUKFdlYktpdCwgRG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bkNyYXNoKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24obnVsbHB0cikpOwotICAgIHNldENv
bnRleHREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgpKTsKIAogICAgIFBsYXRmb3JtV2ViVmll
dyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldERvd25sb2FkQ2xpZW50KHdlYlZpZXcu
cGFnZSgpKTsKICAgICBzZXRQYWdlUG9saWN5Q2xpZW50KHdlYlZpZXcucGFnZSgpKTsKIAogICAg
IC8vIFRoZSBsZW5ndGggb2YgdGhpcyBmaWxlbmFtZSB3YXMgc3BlY2lhbGx5IGNob3NlbiB0byB0
cmlnZ2VyIHRoZSBjcmFzaCBjb25kaXRpb25zIGluCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5t
bQkocmV2aXNpb24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
bWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlQ29udGV4dE1lbnVDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
QEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZQogICAgIH0KIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tT
dHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBib29sKiwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBzdWdnZXN0ZWQgZmlsZW5hbWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9m
IHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgaW4gdGhlIEhUTUwuCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJkb3dubG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTgy
LDE0ICs4MywxNiBAQCBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3duCiB7
CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpj
cmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkpOwogCi0gICAgV0tDb250ZXh0RG93bmxv
YWRDbGllbnRWMCBjbGllbnQ7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRW
MCBjbGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKICAgICBj
bGllbnQuYmFzZS52ZXJzaW9uID0gMDsKICAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50
LmJhc2UpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFk
b3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJNeUdyb3Vw
IikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBw
YWdlR3JvdXAuZ2V0KCkpOworICAgIAorICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmUgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShhZG9wdFdLKFdLUGFn
ZUNvcHlQYWdlQ29uZmlndXJhdGlvbih3ZWJWaWV3LnBhZ2UoKSkpLmdldCgpKTsKKyAgICBXS1dl
YnNpdGVEYXRhU3RvcmVTZXREb3dubG9hZENsaWVudChkYXRhU3RvcmUsICZjbGllbnQuYmFzZSk7
CiAKICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNl
dCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CkBAIC0xMTQsNyArMTE3
LDcgQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bgogICAgIFV0aWw6
OnJ1bigmZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbik7CiB9CiAKLXN0YXRpYyBXS1N0cmlu
Z1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFz
aGVzKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1JlZiBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1
cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFs
dWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTCwgYWZ0ZXIgc2FuaXRpemF0
aW9uLgogICAgIEVYUEVDVF9XS19TVFJFUSgidGVzdDFfdGVzdDJfZG93bmxvYWRBdHRyaWJ1dGVW
YWx1ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC0xMjksMTUgKzEzMiwxNyBAQCBURVNU
KFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3duCiB7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aElu
amVjdGVkQnVuZGxlKCkpOwogCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7
CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CiAgICAgbWVt
c2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKICAgICBjbGllbnQuYmFzZS52ZXJzaW9u
ID0gMDsKICAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUg
PSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVz
OwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCksICZjbGllbnQu
YmFzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRv
cHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3JvdXAi
KS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBh
Z2VHcm91cC5nZXQoKSk7CiAKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0g
V0tQYWdlQ29uZmlndXJhdGlvbkdldFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5
UGFnZUNvbmZpZ3VyYXRpb24od2ViVmlldy5wYWdlKCkpKS5nZXQoKSk7CisgICAgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoZGF0YVN0b3JlLCAmY2xpZW50LmJhc2UpOworCiAg
ICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxv
YWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwogICAgIGxvYWRlckNsaWVudC5i
YXNlLnZlcnNpb24gPSAwOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjUwMTcw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgpAQCAtMTc2LDcgKzE3Nyw3IEBA
IHN0YXRpYyB2b2lkIGRvd25sb2FkVGVzdChEZWNpc2lvbiBkZWNpc2kKIAogICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uV2l0aENvbnRlbnRGaWx0ZXJTZXR0aW5ncyhk
ZWNpc2lvbiwgZGVjaXNpb25Qb2ludCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tDb250ZW50RmlsdGVyaW5nRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVn
YXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gd2Vi
c2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQo
KV07CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQmVjb21lRG93
bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQkocmV2aXNpb24g
MjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dL
VUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgpAQCAtMTIxLDIzICsxMjIsMjMgQEAgLSAo
dm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkIAogCiBURVNUKF9XS0Rvd25sb2Fk
LCBEb3dubG9hZERlbGVnYXRlKQogewotICAgIFJldGFpblB0cjxXS1Byb2Nlc3NQb29sPiBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSk7CisgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNp
c3RlbnREYXRhU3RvcmVdOwogICAgIERvd25sb2FkRGVsZWdhdGUgKmRvd25sb2FkRGVsZWdhdGUg
PSBbW0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFtwcm9jZXNzUG9vbCBfc2V0
RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlXTsKKyAgICBbZGF0YVN0b3JlIF9zZXRE
b3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGVdOwogCiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgIEVYUEVDVF9FUShkb3dubG9hZERlbGVnYXRlLCBbcHJvY2Vzc1Bvb2wgX2Rv
d25sb2FkRGVsZWdhdGVdKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkRGVsZWdhdGUsIFtk
YXRhU3RvcmUgX2Rvd25sb2FkRGVsZWdhdGVdKTsKICAgICB9CiAKICAgICBbZG93bmxvYWREZWxl
Z2F0ZSByZWxlYXNlXTsKLSAgICBFWFBFQ1RfTlVMTChbcHJvY2Vzc1Bvb2wgX2Rvd25sb2FkRGVs
ZWdhdGVdKTsKKyAgICBFWFBFQ1RfTlVMTChbZGF0YVN0b3JlIF9kb3dubG9hZERlbGVnYXRlXSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHJ1blRlc3QoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBuYXZp
Z2F0aW9uRGVsZWdhdGUsIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBkb3dubG9hZERlbGVnYXRl
LCBOU1VSTCAqdXJsKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25E
ZWxlZ2F0ZV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3Nl
dERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CisgICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9h
ZERlbGVnYXRlXTsKIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIGhhc1JlY2VpdmVkUmVzcG9u
c2UgPSBmYWxzZTsKQEAgLTI3OCw3ICsyNzksNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBPcmlnaW5h
dGluZ1dlYlZpZXcpCiAgICAgICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CiAgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhb
W09yaWdpbmF0aW5nV2ViVmlld0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJv
Y2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwor
ICAgICAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXRE
b3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNvdXJjZVVSTF1dOwog
ICAgIH0KIApAQCAtMzQ4LDcgKzM0OSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVx
dWVzdE9yaWdpbmEKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOltbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxO
YXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpbW0Rvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRPcmlnaW5hbFVSTDpz
b3VyY2VVUkxdXTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3Rv
cmVdIF9zZXREb3dubG9hZERlbGVnYXRlOltbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF1dOwogCiAg
ICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBOU1VSTCAqY29udGVu
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKQEAgLTUwOCw3ICs1MDksNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkRG93
bmxvYWQpCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIGRvd25sb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbUmVkaXJlY3RlZERvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93
bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBbW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25s
b2FkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgLy8gRG8gMiBsb2FkcyBpbiB0aGUgc2FtZSB2aWV3
IHRvIG1ha2Ugc3VyZSB0aGUgcmVkaXJlY3QgY2hhaW4gaXMgcHJvcGVybHkgY2xlYXJlZCBiZXR3
ZWVuIGxvYWRzLgogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxk
aXY+Rmlyc3QgbG9hZDwvZGl2PiJdOwpAQCAtNTM3LDcgKzUzOCw3IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFJlZGlyZWN0ZWRMb2FkQ29udmVydGUKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBf
c2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBbW1t3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVnYXRl
OmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRPcmlnaW5hdGluZ1dlYlZp
ZXcgPSB3ZWJWaWV3LmdldCgpOwogICAgIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlID0gZmFs
c2U7CkBAIC01NjAsNyArNTYxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZFN1YmZy
YW1lTG9hZAogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFtb
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRl
OmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0g
d2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5n
ZXQoKV07CiAKICAgICBleHBlY3RlZE9yaWdpbmF0aW5nV2ViVmlldyA9IHdlYlZpZXcuZ2V0KCk7
CiAgICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKQEAgLTYxNSw3ICs2MTYs
NyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZENhbmNlbGVkV2hpbGVECiAKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0
aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5n
ZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBf
c2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIGlzRG9u
ZSA9IGZhbHNlOwogICAgIGRvd25sb2FkSGFzRGVjaWRlZERlc3RpbmF0aW9uID0gZmFsc2U7CkBA
IC03MTUsNyArNzE2LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRBdHRyaWJ1dGVEb2Vz
TgogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRG93bmxvYWRBdHRyaWJ1dGVUZXN0RGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBb
d2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRl
bGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3Rv
cmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPGEgaWQ9J2xpbmsnIGhyZWY9J2RhdGE6LHRlc3QnIGRvd25sb2FkPkNs
aWNrIG1lITwvYT4iIGJhc2VVUkw6bmlsXTsKICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlz
aE5hdmlnYXRpb25dOwpAQCAtNzMwLDcgKzczMSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFN0YXJ0
RG93bmxvYWRXaXRoRG93bmwKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0Rvd25sb2Fk
QXR0cmlidXRlVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25s
b2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9u
XS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxhIGlkPSdsaW5rJyBocmVmPSdkYXRhOix0
ZXN0JyBkb3dubG9hZD5DbGljayBtZSE8L2E+IiBiYXNlVVJMOm5pbF07CiAgICAgW2RlbGVnYXRl
IHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTc3MCw3ICs3NzEsNyBAQCBURVNUKF9X
S0Rvd25sb2FkLCBDcmFzaEFmdGVyRG93bmxvYWREaWRGCiAgICAgICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBwcm9jZXNz
UG9vbCA9IFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sOwotICAgICAgICBbd2Vi
VmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25s
b2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNp
dGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOwog
ICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnNvdXJjZVVSTF1dOwogCiAgICAgICAgIGRpZERvd25sb2FkU3RhcnQgPSBmYWxzZTsKQEAgLTg1
NSw3ICs4NTYsNyBAQCBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3V2l0aERvd25sb2FkCiAg
ICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgp
XTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0Nv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5w
cm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVsZWdhdGUuZ2V0KCk7Cisg
ICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxl
Z2F0ZSA9IGRvd25sb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CiAK
QEAgLTk3Myw3ICs5NzQsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9u
c2VGCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0RG93bmxvYWROYXZpZ2F0aW9u
UmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGVEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxv
YWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgTlNVUkwgKmZpcnN0VVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vYnVuZGxlLWZpbGUvc2ltcGxlLmh0bWwiXTsKICAg
ICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvd107CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkUHJvZ3Jlc3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
RG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaD4KQEAgLTE2Nyw3ICsxNjgsNyBAQCAt
ICh2b2lkKXN0YXJ0TG9hZGluZ1dpdGhQcm90b2NvbDooRG93bmxvCiAtICh2b2lkKXRlYXJEb3du
CiB7CiAgICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgICAg
IG1fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2Fk
RGVsZWdhdGUgPSBudWxscHRyOwogICAgICAgICBbbV93ZWJWaWV3LmdldCgpIHJlbW92ZUZyb21T
dXBlcnZpZXddOwogICAgICAgICBtX3dlYlZpZXcgPSBudWxscHRyOwogICAgIH0KQEAgLTIzOCw3
ICsyMzksNyBAQCAtICh2b2lkKXN0YXJ0RG93bmxvYWQ6KERvd25sb2FkU3RhcnRUeXBlCiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBtX3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgIG1fd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBzZWxmOwot
ICAgIG1fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERl
bGVnYXRlID0gc2VsZjsKKyAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gc2VsZjsKIAogICAgIGF1dG8gcmVxdWVzdCA9
IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL2ZpbGUiXV0pOwogCkBAIC0yNDgsNyArMjQ5LDcgQEAgLSAodm9pZClz
dGFydERvd25sb2FkOihEb3dubG9hZFN0YXJ0VHlwZQogICAgICAgICBbbV93ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvd25sb2Fk
U3RhcnRUeXBlOjpTdGFydEluUHJvY2Vzc1Bvb2w6Ci0gICAgICAgIFttX3dlYlZpZXcuZ2V0KCku
Y29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OnJlcXVlc3QuZ2V0
KCkgb3JpZ2luYXRpbmdXZWJWaWV3Om51bGxwdHJdOworICAgICAgICBbbV93ZWJWaWV3LmdldCgp
LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfZG93bmxvYWRVUkxSZXF1ZXN0OnJlcXVl
c3QuZ2V0KCkgb3JpZ2luYXRpbmdXZWJWaWV3Om51bGxwdHJdOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tM
b29rLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KQEAgLTIzMiwxMiArMjMzLDkgQEAgLSAodm9pZCl2ZXJpZnlEb3du
bG9hZAogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gcnVuVGVzdChRdWlja0xvb2tEZWxl
Z2F0ZSAqZGVsZWdhdGUsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgQk9PTCBzaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbCBfc2V0RG93bmxv
YWREZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0KICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0
aW9uIF9zZXRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzpz
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nXTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRQ
cm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNp
dGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjIsOCAr
NzIyLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgIH07
CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgp
LCAmcGFnZU5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiAKLSAgICBXS0NvbnRleHREb3dubG9hZENs
aWVudFYxIGRvd25sb2FkQ2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKKyAgICBXS1dl
YnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwIGRvd25sb2FkQ2xpZW50ID0geworICAgICAg
ICB7IDAsIHRoaXMgfSwKICAgICAgICAgZG93bmxvYWREaWRTdGFydCwKICAgICAgICAgMCwgLy8g
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCiAgICAgICAgIDAsIC8vIGRpZFJlY2Vp
dmVSZXNwb25zZQpAQCAtNzM3LDggKzczNyw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0
ZVdlYlZpZXdXaXRoT3AKICAgICAgICAgMCwgLy8gcHJvY2Vzc0RpZENyYXNoOwogICAgICAgICBk
b3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMCiAgICAgfTsKLSAgICBXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudChjb250ZXh0KCksICZkb3dubG9hZENsaWVudC5iYXNlKTsKLSAg
ICAKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXREb3dubG9hZENsaWVudChUZXN0Q29udHJvbGxl
cjo6d2Vic2l0ZURhdGFTdG9yZSgpLCAmZG93bmxvYWRDbGllbnQuYmFzZSk7CisKICAgICAvLyB0
aGlzIHNob3VsZCBqdXN0IGJlIGRvbmUgb24gdGhlIHBhZ2U/CiAgICAgV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKICAgICAgICAgeyAxLCB0aGlz
IH0sCkBAIC0yMzkwLDQ0ICsyMzkwLDQ2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWMKICAgICAKIC8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250
cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUs
IFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRvd25sb2FkRGlkU3RhcnQoY29udGV4dCwgZG93bmxvYWQpOworICAgIHN0YXRpY19jYXN0
PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9h
ZERpZFN0YXJ0KGRhdGFTdG9yZSwgZG93bmxvYWQpOwogfQogICAgIAotV0tTdHJpbmdSZWYgVGVz
dENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitXS1N0
cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoY29udGV4dCwgZG93bmxvYWQsIGZpbGVuYW1lLCBhbGxvd092ZXJ3
cml0ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShkYXRhU3RvcmUsIGRvd25sb2FkLCBmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOwogfQog
Ci12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGNvbnRleHQsIGRvd25sb2FkKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKS0+ZG93bmxvYWREaWRGaW5pc2goZGF0YVN0b3JlLCBkb3dubG9hZCk7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVy
cm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250
cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZhaWwo
Y29udGV4dCwgZG93bmxvYWQsIGVycm9yKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGRhdGFT
dG9yZSwgZG93bmxvYWQsIGVycm9yKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRDYW5jZWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZENhbmNlbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RD
b250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZENh
bmNlbChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkQ2FuY2VsKGRhdGFT
dG9yZSwgZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lk
IFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
VVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxU
ZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChjb250ZXh0LCBkb3dubG9hZCwgdXJsKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKS0+ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkYXRhU3RvcmUsIGRv
d25sb2FkLCB1cmwpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQordm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUgPT0g
VGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxkTG9n
RG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRl
eHQoIkRvd25sb2FkIHN0YXJ0ZWQuXG4iKTsKIH0KIAotV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xs
ZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0
ZSkKK1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2Fk
UmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKQogeworICAg
IEFTU0VSVChkYXRhU3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7
CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gdG9XVEZTdHJpbmcoZmlsZW5hbWUpOwog
CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpIHsKQEAgLTI0NTAsMjEgKzI0
NTIsMjQgQEAgV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbgogICAgIHJl
dHVybiB0b1dLKHRlbXBvcmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lKS5sZWFr
UmVmKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
RmluaXNoKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYpCiB7
CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY29tcGxldGVkLlxuIik7CiAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tD
b250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZiB1cmwpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVybCkKIHsKKyAgICBB
U1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwog
ICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVjdGVk
IHRvIFwiIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkpLCAiXCIu
XG4iKSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyb3IpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tE
b3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnJvcikKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09
IFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExv
Z0Rvd25sb2FkQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1
dFRleHQoIkRvd25sb2FkIGZhaWxlZC5cbiJfcyk7CiAKQEAgLTI0NzcsOCArMjQ4Miw5IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0MKICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQordm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZSwgV0tEb3dubG9hZFJlZikKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250
cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2Fk
Q2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3du
bG9hZCBjYW5jZWxsZWQuXG4iKTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3du
bG9hZERvbmUoKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDE4ICs0MDUsMTggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYpOwogCiAg
ICAgLy8gV0tDb250ZXh0RG93bmxvYWRDbGllbnQKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERp
ZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZv
aWQgZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0
YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBh
bGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0gICAgV0tTdHJpbmdSZWYg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKTsK
LSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxv
YWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGYWlsKFdL
Q29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCopOwotICAg
IHZvaWQgZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJv
clJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZENhbmNlbChX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBX
S1VSTFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmKTsKKyAg
ICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tE
b3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRTdGFydChXS1dl
YnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092
ZXJ3cml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBX
S0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRl
KTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkRmlu
aXNoKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIHZv
aWQgZG93bmxvYWREaWRGYWlsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwg
V0tFcnJvclJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZik7CisgICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS1dlYnNpdGVE
YXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25s
b2FkUmVmLCBXS1VSTFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRS
ZWYsIFdLVVJMUmVmKTsKICAgICAKICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV0tQ
YWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICB2b2lkIHByb2Nlc3NEaWRDcmFz
aCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379328</attachid>
            <date>2019-09-21 18:01:37 -0700</date>
            <delta_ts>2019-09-21 18:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190921180136.patch</filename>
            <type>text/plain</type>
            <size>122238</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgYWJzdHJhY3Rpb25zIGFyb3VuZCBXZWJzaXRlRGF0YVN0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJT
Y3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dG
ZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDE3
MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTMs
NyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgot
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsKKyAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25sb2Fk
UHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRv
d25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgp
KTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFr
ZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgmcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwog
ICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVz
dFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywg
VVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQu
bGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3du
bG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcgKzIx
Myw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAg
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92
aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0ICsz
NTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAgICAg
IG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGllbnQp
Ci0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3du
bG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xp
ZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMTEsNTUgKzEyOTksNiBA
QCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVh
dGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAoaW5p
dGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8vIFJl
cXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJM
IG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRv
IHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7
Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0
aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWlu
c0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAgICBp
ZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNl
ckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpV
c2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNl
c3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdn
ZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25s
b2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0KLQot
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CkBAIC0xNjA0LDEzICsxNTQzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVm
YXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7CiB9
CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5Owot
fQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhp
c3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0g
ICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2Jq
ZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdvcmtQ
cm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAgCi0g
ICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAg
V2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3
ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAg
V2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwxNyAr
NTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRv
d25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgpAQCAtNTUsOSArNTMs
NiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7
CiB9OwpAQCAtMTY4LDEwNyArMTYzLDggQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiB3a0NsaWVudCkKK3ZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqKQogewotICAgIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRTdGFydChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNz
UG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShXZWJLaXQ6OnRvQVBJKCZwcm9j
ZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKLQotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZh
bHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vz
c1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0
Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCks
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wp
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNzYsMTQgKzE3MiwxNCBAQCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9h
ZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5kb3dubG9hZCgwLCBX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVm
IHBhdGgpCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJl
ZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIFdlYktp
dDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGgpKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxMSBAQCBXS19FWFBP
UlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlv
bkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERv
d25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QpOwotV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBw
YXRoKTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVS
TFJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxv
YWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1Jl
ZiBwYXRoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVzdW1lRG93bmxvYWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbml0
aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
d2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLV2Vic2l0ZURhdGFT
dG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaykoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZpbmlzaENh
bGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWREaWRDYW5jZWwpKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
KShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50VjAgeworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2g7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGYWlsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2FuY2VsOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Rp
ZENyYXNoOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
OworfSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLy8gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1
ZGUgIldLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtNDYsNiArNTAsMTIgQEAKICNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCiBXS1R5cGVJRCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CkBAIC03MjUsMyArNzM1LDExNSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGlj
IEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93
bmxvYWRDbGllbnQoY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFs
bG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVz
dGluYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OnRvQVBJ
KCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QoV2Vi
S2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPERvd25sb2FkQ2xpZW50
PihjbGllbnQpKTsKK30KKworV0tEb3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZFVSTFJlcXVlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlKS0+ZG93bmxvYWQobnVsbHB0ciwgbnVsbHB0ciwgV2ViS2l0Ojp0b0ltcGwocmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7Cit9CisKK1dLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlKS0+cmVzdW1lRG93bmxvYWQobnVs
bHB0ciwgbnVsbHB0ciwgKldlYktpdDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RG
U3RyaW5nKHBhdGgpKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CkBAIC0xNDMsNiArMTQ0LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWwKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNs
ZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0
aW9uIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgY29uc3QgV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVSTFJlcXVlc3QoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5n
UmVmIHBhdGgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtNDIsOCArNDEs
NiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTYyLDggKzU5LDYgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFBy
b2Nlc3NQb29sOwogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09i
akNQdHI8aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7Ci0g
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0
ZTsKLQogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNz
aW9uOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC0zNjcsMTMgKzM2MiwxMSBA
QCAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpCiAKIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewotICAgIHJldHVybiBfZG93bmxv
YWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewotICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpE
b3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC02MTUsMTIgKzYwOCwxMiBAQCAt
ICh2b2lkKV9zZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKIC0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gKF9XS0Rvd25sb2Fk
ICopX3Byb2Nlc3NQb29sLT5kb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpLndyYXBw
ZXIoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5wdHIoKSwgcGF0aCkpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNl
bmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERl
bGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04MSw4ICs4MSw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
LS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
LSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVD
QVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkVVJMUmVx
dWVzdCIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkp
OworCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJz
aXRlRGF0YVN0b3JlLl9yZXN1bWVEb3dubG9hZEZyb21EYXRhIiwgbWFjb3MoMTAuMTQuNCwgV0tf
TUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAK
KyNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTM4LDYgKzQw
LDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CkBAIC00NTUsNiArNDU4LDI3IEBAIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKKy0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZG93bmxvYWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKK30K
KworLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KWRvd25sb2FkRGVsZWdhdGUKK3sKKyAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVs
ZWdhdGU7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWVSZWY8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworfQorCist
IChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJu
IHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmRvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9w
YWdlXSwgcmVxdWVzdCkpOworfQorCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5h
dGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gd3JhcHBlcihf
d2Vic2l0ZURhdGFTdG9yZS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7Cit9CisKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnk6KEJPT0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZUQKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2Rvd25sb2FkRGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI1
MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tEb3dubG9hZDsKIEBjbGFzcyBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wg
X1dLRG93bmxvYWREZWxlZ2F0ZTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZTsKIApAQCAtNTksNiArNjEsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOikgTlNTdHJpbmcgKl9zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyIiwgbWFjb3MoMTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4y
LCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxl
Z2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
IF9OdWxsYWJsZSl3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogCiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFy
dGVkKGRvd25sb2FkLmdldCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3Rh
cnRlZChtX3dlYkNvbnRleHQsIGRvd25sb2FkLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQo
KSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERv
d25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQpAQCAtNjgsMTMgKzY4LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdERvd25sb2FkU2V0UmVzcG9uc2UoZG93bmxvYWQuZ2V0KCks
IHJlc3BvbnNlLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3Ro
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJr
aXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRvd25sb2FkLmdldCgpLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRv
d25sb2FkLmdldCgpLCBwYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgpKSkgewpA
QCAtOTksMTQgKzk5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDYW5jZWwo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgIHZvaWQgZGlkQ2FuY2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgp
KTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFByb3h5
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0
RG93bmxvYWRGaW5pc2hlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgcHJp
dmF0ZToKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiB9OwogCi12b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
Cit2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAg
Ly8gRklYTUU6IEZvciBjb21wYXRpYmlsaXR5LCB5b3UgbWF5IHdhbnQgdG8gc2hpbSB0aGlzIG9u
dG8gdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAvLyBidXQgdGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZCBhbmQgYSByZXBsYWNlbWVudCBBUEkgb24gdGhlIFdlYnNpdGVEYXRhU3Rv
cmUgc2hvdWxkIGJlIGFkZGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlzcG9zZShHT2JqCiAgICAgaWYgKCFwcml2LT5jbGllbnRzRGV0YWNoZWQpIHsKICAg
ICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG51bGxwdHIpOwotICAgICAgICBwcml2LT5w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobnVsbHB0cik7CiAgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7
CiAgICAgfQogCkBAIC04MjYsOCArODI1LDkgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93ZWJf
Y29udGV4dF9kb3dubAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09O
VEVYVChjb250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBu
dWxscHRyKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoY29udGV4dCwgdXJpLCBudWxscHRyKTsKLSAgICByZXR1
cm4gZG93bmxvYWQubGVha1JlZigpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXBy
ZWNhdGVkIGFuZCByZXBsYWNlZCBieSBhIGZ1bmN0aW9uIG9uIFdlYnNpdGVEYXRhU3RvcmUuCisg
ICAgLy8gSWYgY29tcGF0aWJpbGl0eSBpcyBuZWVkZWQsIHNoaW0gdGhpcyBvbnRvIHRoZSBkZWZh
dWx0IFdlYnNpdGVEYXRhU3RvcmUuCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC8qKgpAQCAt
MTY1NSwxMCArMTY1NSwxMSBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9y
Q3JlCiAgICAgcmV0dXJuIGRvd25sb2FkLmdldCgpOwogfQogCi1XZWJLaXREb3dubG9hZCogd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogdXJpLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlKQorV2ViS2l0RG93bmxv
YWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRleHQqLCBjb25z
dCBjaGFyKiwgV2ViUGFnZVByb3h5KikKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwotICAgIHJldHVybiB3ZWJraXRXZWJDb250
ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmRvd25s
b2FkKGluaXRpYXRpbmdQYWdlLCByZXF1ZXN0KSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IGEgZnVuY3Rpb24gb24gV2Vic2l0ZURhdGFT
dG9yZS4KKyAgICAvLyBJZiBjb21wYXRpYmlsaXR5IGlzIG5lZWRlZCwgc2hpbSB0aGlzIG9udG8g
dGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZS4KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTcgKzQ3LDE3IEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50
Ci0gICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCB1aW50NjRf
dCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHByb2Nlc3NEaWRDcmFz
aChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0
YXJ0KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkRmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5Jikg
ZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkQ2Fu
Y2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJzaXRlRGF0
YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYnNpdGVEYXRhU3RvcmUmLCBE
b3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAogI2lmIFVT
RShTWVNURU1fUFJFVklFVykKICAgICB2b2lkIHRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJv
eHkmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBE
b3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYnNpdGVEYXRhU3Rv
cmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nl
c3MKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5pc1N1Y2Nlc3NmdWwoKSkgewpAQCAtOTgsNyArOTgs
NyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50
NjRfdCBsZW5ndGgpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQCiAgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0
aF07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQordm9p
ZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYnNp
dGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhN
RTogU3lzdGVtIFByZXZpZXcgbmVlZHMgY29kZSBoZXJlLgogICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikgewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWMKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQogewogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpbwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKLXZvaWQg
RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jh
c2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50
Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nl
c3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTIw
NSw3ICsyMDUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpCiAg
ICAgfQogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
RmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
ewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3Rl
bVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEb3dubG9hZENs
aWVudDo6ZGlkRmluaXNoKFdlYlByb2NlcwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRE
aWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpKSB7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChX
ZWJQcm9jZXNzUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vic2l0ZURhdGFT
dG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkp
IHsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vi
UHJvY2VzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCiAgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1d
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsMTUgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlRG93bmxvYWRJRCgpCiAgICAgcmV0dXJu
ICsrdW5pcXVlRG93bmxvYWRJRDsKIH0KICAgICAKLVJlZjxEb3dubG9hZFByb3h5PiBEb3dubG9h
ZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKK1JlZjxEb3dubG9hZFByb3h5PiBEb3dubG9hZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQ
cm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvd25sb2FkUHJveHkoZG93
bmxvYWRQcm94eU1hcCwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94eU1hcCwgZGF0YVN0b3Jl
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KSk7CiB9CiAKLURvd25sb2FkUHJveHk6OkRv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKK0Rvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxv
YWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogICAg
IDogbV9kb3dubG9hZFByb3h5TWFwKGRvd25sb2FkUHJveHlNYXApCiAgICAgLCBtX3Byb2Nlc3NQ
b29sKCZwcm9jZXNzUG9vbCkKKyAgICAsIG1fZGF0YVN0b3JlKCZkYXRhU3RvcmUpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZ2VuZXJhdGVEb3dubG9hZElEKCkpCiAgICAgLCBtX3JlcXVlc3QocmVzb3Vy
Y2VSZXF1ZXN0KQogewpAQCAtNjcsNiArNjgsNyBAQCBEb3dubG9hZFByb3h5OjpEb3dubG9hZFBy
b3h5KERvd25sb2FkUHJvCiBEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCiB7CiAgICAg
QVNTRVJUKCFtX3Byb2Nlc3NQb29sKTsKKyAgICBBU1NFUlQoIW1fZGF0YVN0b3JlKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpjYW5jZWwoKQpAQCAtODIsMTQgKzg0LDE2IEBAIHZvaWQgRG93
bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwog
ICAgIG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOworICAgIEFTU0VSVChtX2RhdGFTdG9yZSk7Cisg
ICAgbV9kYXRhU3RvcmUgPSBudWxscHRyOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRh
U3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xp
ZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRh
U3RvcmUtPmRvd25sb2FkQ2xpZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX2RhdGFTdG9yZSwgKnRo
aXMpOwogfQogCiBXZWJQYWdlUHJveHkqIERvd25sb2FkUHJveHk6Om9yaWdpbmF0aW5nUGFnZSgp
IGNvbnN0CkBAIC0xMjUsMTAgKzEyOSwxMCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0
KGNvbnN0IFJlc291CiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRp
cmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hh
aW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAg
IGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wt
PmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRTdGFydCgqbV9kYXRhU3RvcmUsICp0aGlz
KTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
dWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xMzgsNyArMTQyLDEyIEBAIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKIAogICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1ha2VSZWYoKm1fcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKSwgbnVsbHB0cik7CiAKLSAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuZ2V0KCkpOworICAgIGlmICghbV9kYXRhU3RvcmUpIHsKKyAgICAgICAgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgqbV9kYXRhU3RvcmUsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTQ2LDcgKzE1NSw3IEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkud2ls
bFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9wb3NlZFJlcXVl
c3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CisgICAgbV9kYXRhU3RvcmUtPmRv
d25sb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0KCptX2RhdGFTdG9yZSwgKnRoaXMsIFdURk1v
dmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAg
ICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCiAgICAgICAg
IGlmICghcHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9vbCkKQEAgLTE2MiwyNiArMTcxLDI2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KIAogdm9pZCBEb3dubG9h
ZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgcmVzcG9uc2UpOworICAgIG1f
ZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqbV9kYXRhU3Rv
cmUsICp0aGlzLCByZXNwb25zZSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgbGVuZ3RoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBp
ZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5k
b3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbGVu
Z3RoKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgq
bV9kYXRhU3RvcmUsICp0aGlzLCBsZW5ndGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewotICAgIGlmICghbV9w
cm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVu
YW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0g
ZG93bmxvYWRJRF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGlu
YXRpb24pIHsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9kYXRhU3RvcmUsICp0aGlzLCBzdWdnZXN0ZWRG
aWxlbmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJ
RCA9IGRvd25sb2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRl
c3RpbmF0aW9uKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQogICAgICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwpAQCAt
MTk2LDE4ICsyMDUsMTggQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldp
dAogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9y
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHBhdGgpOworICAg
IG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uKCptX2Rh
dGFTdG9yZSwgKnRoaXMsIHBhdGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlz
aCgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
RmluaXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkRmluaXNoKCptX2RhdGFTdG9yZSwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBj
YW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9k
b3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjIzLDEyICsyMzIs
MTIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29ucwogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wp
CisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9yZXN1bWVE
YXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25s
b2FkQ2xpZW50KCkuZGlkRmFpbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGVycm9yKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKCptX2RhdGFTdG9yZSwgKnRoaXMs
IGVycm9yKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKQEAgLTIzOCw3ICsyNDcsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNl
bChjb25zdCBJUEM6CiB7CiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRh
KTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCptX3By
b2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlk
Q2FuY2VsKCptX2RhdGFTdG9yZSwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhl
IERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5
TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAyNTAxNzApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxMCArNTMsMTEgQEAgY2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIERv
d25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb3dubG9hZFBy
b3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBj
cmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9v
bCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3dubG9hZFByb3h5
KCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25s
b2FkSUQ7IH0KQEAgLTk5LDcgKzEwMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQ
b29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgRG93
bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMTksNiArMTIwLDcgQEAgcHJpdmF0
ZToKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQ
dHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRh
U3RvcmU+IG1fZGF0YVN0b3JlOwogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwogCiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gbV9yZXN1bWVEYXRhOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkocmV2aXNp
b24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgRG93bmxv
YWRQcm94eU1hcDo6YXBwbGljYXRpb25XaWxsRW4KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCks
IDApOwogfQogCi1Eb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9h
ZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5
TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIGF1
dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3Jl
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93
bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKICAg
ICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQWRkaW5nIGRvd25sb2FkICUiIFBSSXU2NCAiIHRvIFVJ
UHJvY2VzcyBEb3dubG9hZFByb3h5TWFwIiwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRv
d25sb2FkSUQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHk7CiBjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5TWFwIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPERvd25sb2FkUHJveHlNYXA+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHlNYXAoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogICAgIH5Eb3dubG9hZFByb3h5
TWFwKCk7CiAKLSAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWRQ
cm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bv
b2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRvd25sb2Fk
RmluaXNoZWQoRG93bmxvYWRQcm94eSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0xNzYsMTIgKzE3NywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5
bnRoZXNpemVBcHBJCiAgICAgfQogfQogCi1Eb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQorRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxv
YWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQogICAg
ICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0
aGlzKTsKIAotICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkobV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgbV9wcm9jZXNzUG9vbCwg
cmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKLSAgICBEb3du
bG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURh
dGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKIAorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgi
CisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKQEAgLTQ4LDYgKzUwLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3Jp
Z2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0xMDcsNiArMTEwLDcgQEAgV2Vic2l0
ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8VwogICAgICwgbV9hdXRoZW50aWNhdG9y
TWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigpKQogI2VuZGlmCiAg
ICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KCkpCisg
ICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4o
KSkKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgLCBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9y
KG1ha2VVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+KCkpCiAjZW5kaWYKQEAg
LTEyOCw2ICsxMzIsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6
CiAgICAgLCBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRv
ck1hbmFnZXI+KCkpCiAjZW5kaWYKICAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0
ZURhdGFTdG9yZUNsaWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAsIG1fc29B
dXRob3JpemF0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxTT0F1dGhvcml6YXRpb25Db29y
ZGluYXRvcj4oKSkKICNlbmRpZgpAQCAtMjA3NCw2ICsyMDc5LDg1IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1AKIHsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXREb3dubG9hZENsaWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBjbGll
bnQpCit7CisgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKworRG93
bmxvYWRQcm94eSogV2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
Cit7CisgICAgaWYgKCFwcm9jZXNzUG9vbCkgeworICAgICAgICBmb3IgKGF1dG8mIHBvb2wgOiBX
ZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29sID0gcG9vbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghcHJvY2Vzc1Bvb2wpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZG93
bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoKnByb2Nlc3NQb29sLCByZXF1ZXN0LCBp
bml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGlu
Z1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOworCisgICAgaWYgKGluaXRpYXRpbmdQYWdlKQorICAgICAgICBpbml0
aWF0aW5nUGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOworCisgICAg
aWYgKHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCB1cGRhdGVkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgLy8gUmVxdWVz
dCdzIGZpcnN0UGFydHlGb3JDb29raWVzIHdpbGwgYmUgdXNlZCBhcyBPcmlnaW5hbCBVUkwgb2Yg
dGhlIGRvd25sb2FkIHJlcXVlc3QuCisgICAgICAgIC8vIFdlIHNldCB0aGUgdmFsdWUgdG8gdG9w
IGxldmVsIGRvY3VtZW50J3MgVVJMLgorICAgICAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpIHsKKyAg
ICAgICAgICAgIFVSTCBpbml0aWF0aW5nUGFnZVVSTCA9IFVSTCB7IFVSTCB7IH0sIGluaXRpYXRp
bmdQYWdlLT5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1
ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKGluaXRpYXRpbmdQYWdlVVJMKTsKKyAgICAgICAg
ICAgIHVwZGF0ZWRSZXF1ZXN0LnNldElzU2FtZVNpdGUoV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVE
b21haW5zRXF1YWwoaW5pdGlhdGluZ1BhZ2VVUkwsIHJlcXVlc3QudXJsKCkpKTsKKyAgICAgICAg
ICAgIGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lOjpVc2VyQWdlbnQpKQorICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNl
dEhUVFBVc2VyQWdlbnQoaW5pdGlhdGluZ1BhZ2UtPnVzZXJBZ2VudCgpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVz
KFVSTCgpKTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldElzU2FtZVNpdGUoZmFsc2Up
OworICAgICAgICAgICAgaWYgKCF1cGRhdGVkUmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OlVzZXJBZ2VudCkpCisgICAgICAgICAgICAgICAgdXBkYXRlZFJlcXVlc3Qu
c2V0SFRUUFVzZXJBZ2VudChXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KCkpOworICAg
ICAgICB9CisgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldElzVG9wU2l0ZShmYWxzZSk7CisgICAg
ICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9h
ZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSksIDApOworICAgICAgICBy
ZXR1cm4gJmRvd25sb2FkUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuICZkb3dubG9hZFByb3h5
OworfQorCitEb3dubG9hZFByb3h5KiBXZWJzaXRlRGF0YVN0b3JlOjpyZXN1bWVEb3dubG9hZChX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IGlmICghcHJvY2Vzc1Bvb2wpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwb29sIDogV2ViUHJvY2Vz
c1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbCA9IHBv
b2w7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb2Nl
c3NQb29sKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGRvd25sb2FkUHJv
eHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KCpwcm9jZXNzUG9vbCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlKTsKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQg
PSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQorICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKworICAgIGlmIChw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25s
b2FkKHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0
YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgICAg
IHJldHVybiAmZG93bmxvYWRQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gJmRvd25sb2FkUHJv
eHk7Cit9CisKK0Rvd25sb2FkUHJveHkmIFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZURvd25sb2Fk
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQoreworICAg
IGF1dG8mIGRvd25sb2FkUHJveHkgPSBwcm9jZXNzUG9vbC5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LmNyZWF0ZURvd25sb2FkUHJveHkoKnRoaXMsIHJlcXVlc3QpOworICAgIGRvd25sb2FkUHJveHku
c2V0T3JpZ2luYXRpbmdQYWdlKG9yaWdpbmF0aW5nUGFnZSk7CisgICAgcmV0dXJuIGRvd25sb2Fk
UHJveHk7Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6c2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKG1fbmV0
d29ya2luZ0hhc0JlZ3VuKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7
CitjbGFzcyBEYXRhOworY2xhc3MgRG93bmxvYWRDbGllbnQ7CiBjbGFzcyBIVFRQQ29va2llU3Rv
cmU7CiB9CiAKQEAgLTY5LDYgKzcxLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXI7CitjbGFzcyBEb3dubG9h
ZFByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKIGNsYXNzIERldmljZUlkSGFzaFNhbHRT
dG9yYWdlOwogY2xhc3MgU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I7CkBAIC0yNTksNiArMjYy
LDExIEBAIHB1YmxpYzoKICAgICBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50JiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJlZjxXZWJz
aXRlRGF0YVN0b3JlQ2xpZW50PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsgfQogCisgICAgQVBJOjpEb3dubG9hZENsaWVudCYgZG93bmxvYWRDbGllbnQoKSB7IHJldHVy
biBtX2Rvd25sb2FkQ2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXREb3dubG9hZENsaWVudChV
bmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7CisgICAgRG93bmxvYWRQcm94eSYgY3Jl
YXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBEb3dubG9hZFBy
b3h5KiBkb3dubG9hZChXZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1Bh
Z2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CisgICAgRG93bmxvYWRQcm94eSogcmVzdW1lRG93
bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgQVBJOjpI
VFRQQ29va2llU3RvcmUmIGNvb2tpZVN0b3JlKCk7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQpAQCAtMzYwLDYgKzM2OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFVuaXF1
ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBVbmlxdWVSZWY8QVBJ
OjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKIAogICAgIFJlZlB0cjxBUEk6OkhU
VFBDb29raWVTdG9yZT4gbV9jb29raWVTdG9yZTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTAxNzApCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTM4LDYgKzExMzgsNyBAQAogCQk1Q0U5MTIxMjIyOTNDMjc4MDA1QkVDNzggLyog
QXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nl
c3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTMyMjkzQzI3OTAwNUJFQzc4IC8qIEF1eGlsaWFy
eVByb2Nlc3NNYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgKi87IH07CiAJCTVDRTkxMjE0MjI5M0MyODAwMDVCRUM3OCAvKiBXS01haW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBCMjI5M0MxRTAw
MDVCRUM3OCAvKiBXS01haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1Q0VBQkEzMzIzMzYwRDM5MDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDRUFCQTMyMjMzNjBDRUMwMDc5Nzc5NyAvKiBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMw
MEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dL
QXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTM2OTQsNiArMzY5NSw3IEBACiAJCTVDRTkxMjBGMjI5
M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHA7IHBhdGggPSBD
b2NvYS9BdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDRUFCQTJBMjMzMzI0NzcwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0aW5ncy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyog
TGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0VBQkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxv
YWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNG
RUNCMDMxRTFFRDFDODAwRjg4NTA0IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzNGMTExNkZG
OTBDMDBFRTUzOTYgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC04MTI3LDYgKzgx
MjksNyBAQAogCQkJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYu
aCAqLywKIAkJCQk1QzZFN0Q4NzIzMjM2MUU3MDBDMjE1OUQgLyogV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvblJlZi5jcHAgKi8sCiAJCQkJNUM2RTdEODYyMzIzNjFFNzAwQzIxNTlEIC8q
IFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaCAqLywKKwkJCQk1Q0VBQkEzMjIz
MzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaCAqLywK
IAkJCQkxQTU3MTA5QzFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cCAqLywKIAkJCQkxQTU3MTA5RDFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmggKi8sCiAJCQkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGlj
aWVzLmNwcCAqLywKQEAgLTEwNDIxLDYgKzEwNDI0LDcgQEAKIAkJCQkxQUE2NTREMTFCMTRGNzE0
MDBCRjFEM0UgLyogV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNkU3RDg4MjMyMzYyMDUwMEMyMTU5RCAvKiBXS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0VBQkEzMzIzMzYw
RDM5MDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc1QThEMkQ2MTg3RDFDMEUwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3Rv
cmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2N0ExQzdGN0JBNjAwNjlBQzRG
IC8qIFdLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcx
MDlGMUFCQTAwMjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjUwMTg3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTktMDktMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIERvd25sb2FkQ2xpZW50IGZyb20gV2ViUHJv
Y2Vzc1Bvb2wgdG8gV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRDb250ZXh0RG93bmxvYWRDbGllbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVu
dURvd25sb2FkLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAgIChkb3dubG9hZFRlc3QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06Cisg
ICAgICAgIChURVNUKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6d2ViVmlld1dpdGhEb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAg
ICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgdGVhckRvd25dKToKKyAgICAgICAg
KC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3dubG9hZDpleHBlY3RlZExlbmd0
aDpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9v
ay5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2Vi
Vmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRGaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRGYWlsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2Fu
Y2VsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKwogMjAxOS0wOS0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0VXU10gSlNDIHF1ZXVlcyBzaG91bGQgcmUtYnVpbGQgVG9UIGFuZCBj
b21wYXJlIHJlc3VsdHMgb24gYnVpbGQgZmFpbHVyZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uQ3Jhc2guY3BwCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tEb3du
bG9hZC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC00MCwyMiArNDEsMjMgQEAgc3RhdGljIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdAogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRv
d25sb2FkKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29sKiwgY29uc3Qg
dm9pZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOwogICAgIFdLRG93bmxv
YWRDYW5jZWwoZG93bmxvYWQpOwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQ
SVRlc3QvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIikubGVha1JlZigpOwogfQogCi1z
dGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQp
CitzdGF0aWMgdm9pZCBzZXREb3dubG9hZENsaWVudChXS1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBX
S0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNs
aWVudCkpOwogCiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xpZW50LmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU7CiAKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250
ZXh0LCAmY2xpZW50LmJhc2UpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUg
PSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShhZG9wdFdLKFdLUGFnZUNv
cHlQYWdlQ29uZmlndXJhdGlvbihwYWdlKSkuZ2V0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldERvd25sb2FkQ2xpZW50KGRhdGFTdG9yZSwgJmNsaWVudC5iYXNlKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTcyLDkgKzc0LDkg
QEAgc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZQogVEVTVChXZWJLaXQs
IERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCkKIHsKICAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0
aW9uKG51bGxwdHIpKTsKLSAgICBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoY29udGV4dC5nZXQo
KSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKKyAgICBz
ZXREb3dubG9hZENsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CiAgICAgc2V0UGFnZVBvbGljeUNsaWVu
dCh3ZWJWaWV3LnBhZ2UoKSk7CiAKICAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoaXMgZmlsZW5hbWUg
d2FzIHNwZWNpYWxseSBjaG9zZW4gdG8gdHJpZ2dlciB0aGUgY3Jhc2ggY29uZGl0aW9ucyBpbgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93
bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
bWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUNvbnRl
eHRNZW51Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWUKICAgICB9CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29s
KiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQq
KQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVk
IGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBI
VE1MLgogICAgIEVYUEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQiLCBz
dWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC04MiwxNCArODMsMTYgQEAgVEVTVChXZWJLaXQsIENvbnRl
eHRNZW51RG93bmxvYWRIVE1MRG93bgogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4g
Y29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgp
KTsKIAotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAw
LCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQoY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLUGFn
ZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50
aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3
IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKKyAgICAKKyAgICBXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0gV0tQYWdlQ29uZmlndXJhdGlvbkdldFdlYnNp
dGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24od2ViVmlldy5w
YWdlKCkpKS5nZXQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQo
ZGF0YVN0b3JlLCAmY2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYw
IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOwpAQCAtMTE0LDcgKzExNyw3IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURv
d25sb2FkSFRNTERvd24KICAgICBVdGlsOjpydW4oJmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRp
b24pOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwgY29uc3Qgdm9p
ZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwgY29uc3Qg
dm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgaXMgcHJv
dmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgaW4g
dGhlIEhUTUwsIGFmdGVyIHNhbml0aXphdGlvbi4KICAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3Qx
X3Rlc3QyX2Rvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwpA
QCAtMTI5LDE1ICsxMzIsMTcgQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1M
RG93bgogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0so
VXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAgIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdl
R3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRp
ZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCisgICAgV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0
YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcucGFnZSgp
KSkuZ2V0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KGRhdGFT
dG9yZSwgJmNsaWVudC5iYXNlKTsKKwogICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2Fk
ZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGll
bnQpKTsKICAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3Rl
T2JqZWN0SW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaD4KQEAgLTE3Niw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBkb3dubG9hZFRlc3QoRGVjaXNp
b24gZGVjaXNpCiAKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbldp
dGhDb250ZW50RmlsdGVyU2V0dGluZ3MoZGVjaXNpb24sIGRlY2lzaW9uUG9pbnQpOwogICAgICAg
ICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudEZpbHRlcmluZ0Rvd25s
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW1tjb25maWd1cmF0aW9uIHByb2Nl
c3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAg
ICAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVn
YXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gYWRvcHROUyhbW0JlY29tZURvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWQubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVs
ZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4K
QEAgLTEyMSwyMyArMTIyLDIzIEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3du
bG9hZCAKIAogVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWREZWxlZ2F0ZSkKIHsKLSAgICBSZXRh
aW5QdHI8V0tQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9v
bCBhbGxvY10gaW5pdF0pOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW1dL
V2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKICAgICBEb3dubG9hZERl
bGVnYXRlICpkb3dubG9hZERlbGVnYXRlID0gW1tEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
XTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0
ZV07CisgICAgW2RhdGFTdG9yZSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRl
XTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWRE
ZWxlZ2F0ZSwgW3Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgICAgIEVYUEVD
VF9FUShkb3dubG9hZERlbGVnYXRlLCBbZGF0YVN0b3JlIF9kb3dubG9hZERlbGVnYXRlXSk7CiAg
ICAgfQogCiAgICAgW2Rvd25sb2FkRGVsZWdhdGUgcmVsZWFzZV07Ci0gICAgRVhQRUNUX05VTEwo
W3Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgRVhQRUNUX05VTEwoW2RhdGFT
dG9yZSBfZG93bmxvYWREZWxlZ2F0ZV0pOwogfQogCiBzdGF0aWMgdm9pZCBydW5UZXN0KGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlLCBpZCA8X1dLRG93bmxvYWRE
ZWxlZ2F0ZT4gZG93bmxvYWREZWxlZ2F0ZSwgTlNVUkwgKnVybCkKIHsKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGVdOwotICAgIFtbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdh
dGVdOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3Nl
dERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CiAKICAgICBpc0RvbmUgPSBmYWxz
ZTsKICAgICBoYXNSZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CkBAIC0yNzgsNyArMjc5LDcgQEAg
VEVTVChfV0tEb3dubG9hZCwgT3JpZ2luYXRpbmdXZWJWaWV3KQogICAgICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgICAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKICAgICAgICAgZG93
bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tPcmlnaW5hdGluZ1dlYlZpZXdEb3dubG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgICAgICBbW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpk
b3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9u
XSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRl
LmdldCgpXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpzb3VyY2VVUkxdXTsKICAgICB9CiAKQEAgLTM0OCw3ICszNDksNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hCiB7CiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpbW0Rv
d25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XV07
Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2Fk
RGVsZWdhdGU6W1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkT3JpZ2luYWxVUkw6c291cmNlVVJMXV07CisgICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpbW0Rvd25s
b2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRPcmln
aW5hbFVSTDpzb3VyY2VVUkxdXTsKIAogICAgIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlID0g
ZmFsc2U7CiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC01MDgsNyArNTA5LDcgQEAgVEVTVChf
V0tEb3dubG9hZCwgUmVkaXJlY3RlZERvd25sb2FkKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1JlZGlyZWN0ZWRE
b3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0
aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5n
ZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBf
c2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIC8vIERv
IDIgbG9hZHMgaW4gdGhlIHNhbWUgdmlldyB0byBtYWtlIHN1cmUgdGhlIHJlZGlyZWN0IGNoYWlu
IGlzIHByb3Blcmx5IGNsZWFyZWQgYmV0d2VlbiBsb2Fkcy4KICAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2PkZpcnN0IGxvYWQ8L2Rpdj4iXTsKQEAgLTUzNyw3
ICs1MzgsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkTG9hZENvbnZlcnRlCiAKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxl
Z2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0
b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAg
IGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJWaWV3ID0gd2ViVmlldy5nZXQoKTsKICAgICBleHBlY3Rl
ZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwpAQCAtNTYwLDcgKzU2MSw3IEBAIFRFU1QoX1dL
RG93bmxvYWQsIFJlZGlyZWN0ZWRTdWJmcmFtZUxvYWQKIAogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQ
b29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBb
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERl
bGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRPcmlnaW5hdGlu
Z1dlYlZpZXcgPSB3ZWJWaWV3LmdldCgpOwogICAgIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRl
ID0gZmFsc2U7CkBAIC02MTUsNyArNjE2LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRD
YW5jZWxlZFdoaWxlRAogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwot
ICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERl
bGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJh
dGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxl
Z2F0ZS5nZXQoKV07CiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBkb3dubG9hZEhhc0RlY2lk
ZWREZXN0aW5hdGlvbiA9IGZhbHNlOwpAQCAtNzE1LDcgKzcxNiw3IEBAIFRFU1QoX1dLRG93bmxv
YWQsIERvd25sb2FkQXR0cmlidXRlRG9lc04KICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W0Rvd25sb2FkQXR0cmlidXRlVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bv
b2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBjb25m
aWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUu
Z2V0KCk7CiAKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxhIGlkPSdsaW5rJyBocmVm
PSdkYXRhOix0ZXN0JyBkb3dubG9hZD5DbGljayBtZSE8L2E+IiBiYXNlVVJMOm5pbF07CiAgICAg
W2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTczMCw3ICs3MzEsNyBA
QCBURVNUKF9XS0Rvd25sb2FkLCBTdGFydERvd25sb2FkV2l0aERvd25sCiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9hZEF0dHJpYnV0ZVRlc3REZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8
YSBpZD0nbGluaycgaHJlZj0nZGF0YTosdGVzdCcgZG93bmxvYWQ+Q2xpY2sgbWUhPC9hPiIgYmFz
ZVVSTDpuaWxdOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBA
IC03NzAsNyArNzcxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgQ3Jhc2hBZnRlckRvd25sb2FkRGlk
RgogICAgICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwog
ICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpXTsKICAgICAgICAgcHJvY2Vzc1Bvb2wgPSBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5w
cm9jZXNzUG9vbDsKLSAgICAgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wu
X2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOworICAgICAgICBbd2Vi
VmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0g
ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzb3VyY2VVUkxdXTsKIAogICAgICAgICBkaWREb3du
bG9hZFN0YXJ0ID0gZmFsc2U7CkBAIC04NTUsNyArODU2LDcgQEAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlld1dpdGhEb3dubG9hZAogICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0gICAg
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBk
b3dubG9hZERlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNp
dGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOwog
ICAgIHJldHVybiB3ZWJWaWV3OwogfQogCkBAIC05NzMsNyArOTc0LDcgQEAgVEVTVChXZWJLaXQs
IERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRgogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93bmxv
YWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
LndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIE5TVVJMICpmaXJzdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2J1bmRs
ZS1maWxlL3NpbXBsZS5odG1sIl07CiAgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5OldL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQko
cmV2aXNpb24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZFByb2dyZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
RG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJ
Lmg+CkBAIC0xNjcsNyArMTY4LDcgQEAgLSAodm9pZClzdGFydExvYWRpbmdXaXRoUHJvdG9jb2w6
KERvd25sbwogLSAodm9pZCl0ZWFyRG93bgogewogICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAg
ICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVs
ZWdhdGUgPSBudWxscHRyOworICAgICAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gbnVsbHB0cjsKICAgICAgICAgW21f
d2ViVmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbV93ZWJWaWV3ID0g
bnVsbHB0cjsKICAgICB9CkBAIC0yMzgsNyArMjM5LDcgQEAgLSAodm9pZClzdGFydERvd25sb2Fk
OihEb3dubG9hZFN0YXJ0VHlwZQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgbV93ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBtX3dlYlZpZXcuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gc2VsZjsKLSAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IHNlbGY7CisgICAgbV93ZWJWaWV3Lmdl
dCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IHNl
bGY7CiAKICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBp
bml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9maWxlIl1dKTsKIApAQCAt
MjQ4LDcgKzI0OSw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93bmxvYWRTdGFydFR5cGUK
ICAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRJblByb2Nlc3NQb29sOgot
ICAgICAgICBbbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX2Rvd25s
b2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5nV2ViVmlldzpudWxscHRyXTsK
KyAgICAgICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUg
X2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5nV2ViVmlldzpudWxs
cHRyXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQkocmV2aXNpb24gMjUwMTcw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0J
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+CkBAIC0yMzIsMTIgKzIz
Myw5IEBAIC0gKHZvaWQpdmVyaWZ5RG93bmxvYWQKIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHJ1blRlc3QoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QsIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKTsKLSAg
ICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZGVsZWdhdGVdOwotCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3Jl
TG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ107
Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwor
ICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0
ZTpkZWxlZ2F0ZV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyNTAxNzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIyLDggKzcyMiw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZVdlYlZpZXdXaXRoT3AKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xp
ZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwog
Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsKLSAgICAg
ICAgeyAxLCB0aGlzIH0sCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRWMCBk
b3dubG9hZENsaWVudCA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0sCiAgICAgICAgIGRvd25sb2Fk
RGlkU3RhcnQsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZQogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKQEAgLTczNyw4ICs3MzcsOCBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAgICAgICAgIDAsIC8vIHBy
b2Nlc3NEaWRDcmFzaDsKICAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTAogICAgIH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCgpLCAm
ZG93bmxvYWRDbGllbnQuYmFzZSk7Ci0gICAgCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgJmRvd25sb2Fk
Q2xpZW50LmJhc2UpOworCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25lIG9uIHRoZSBw
YWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5kbGVDbGll
bnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAtMjM5MCw0NCArMjM5MCw0NiBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgCiAvLyBXS0NvbnRleHRE
b3dubG9hZENsaWVudAogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRleHQsIGRv
d25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChkYXRhU3RvcmUsIGRvd25sb2FkKTsK
IH0KICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29s
KiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnRleHQsIGRvd25s
b2FkLCBmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
ZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZGF0YVN0b3JlLCBkb3dubG9hZCwgZmlsZW5h
bWUsIGFsbG93T3ZlcndyaXRlKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZp
bmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250
cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlz
aChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGRhdGFTdG9y
ZSwgZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYg
ZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJvcik7CisgICAg
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRvd25sb2FkRGlkRmFpbChkYXRhU3RvcmUsIGRvd25sb2FkLCBlcnJvcik7CiB9CiAKLXZv
aWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
IHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZG93bmxvYWREaWRDYW5jZWwoY29udGV4dCwgZG93bmxvYWQpOworICAgIHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kb3dubG9hZERpZENhbmNlbChkYXRhU3RvcmUsIGRvd25sb2FkKTsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoY29u
dGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwoZGF0YVN0b3JlLCBkb3dubG9hZCwgdXJsKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsK
KyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3Jl
KCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxuIik7CiB9CiAK
LVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVu
YW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wq
JiBhbGxvd092ZXJ3cml0ZSkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9s
bGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9
IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsKIAogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2Fs
bGJhY2tzKSB7CkBAIC0yNDUwLDIxICsyNDUyLDI0IEBAIFdLU3RyaW5nUmVmIFRlc3RDb250cm9s
bGVyOjpkZWNpZGVEZXN0aW4KICAgICByZXR1cm4gdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyAiLyIg
KyBzdWdnZXN0ZWRGaWxlbmFtZSkubGVha1JlZigpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCit2b2lkIFRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlLCBXS0Rvd25sb2FkUmVmKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUgPT0gVGVzdENv
bnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxv
YWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRv
d25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURv
d25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxS
ZWYgdXJsKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVm
LCBXS1VSTFJlZiB1cmwpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxl
cjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxi
YWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtYWtlU3RyaW5n
KCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFkb3B0V0soV0tV
UkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVm
IGVycm9yKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyb3IpCiB7
CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykgewogICAgICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBmYWlsZWQuXG4iX3MpOwog
CkBAIC0yNDc3LDggKzI0ODIsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZh
aWwoV0tDCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYpCiB7CisgICAgQVNT
RVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAg
ICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY2FuY2VsbGVkLlxuIik7CiAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNSwxOCAr
NDA1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJl
ZiwgV0tOYXZpZ2F0aW9uUmVmKTsKIAogICAgIC8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Ci0g
ICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0
cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwotICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUs
IGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGaW5p
c2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBk
b3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRp
YyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJy
b3JSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2Fk
RGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAg
IHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAg
ICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lk
IGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBXS1VSTFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRTdGFydChX
S1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2
b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVm
KTsKKyAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1Jl
ZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5h
bWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRG
aW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7
CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93
bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRh
U3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2
b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYs
IFdLRXJyb3JSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93
bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmKTsKKyAg
ICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CiAgICAgCiAgICAgc3RhdGlj
IHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379329</attachid>
            <date>2019-09-21 18:04:59 -0700</date>
            <delta_ts>2019-09-23 14:45:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190921180459.patch</filename>
            <type>text/plain</type>
            <size>122247</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgYWJzdHJhY3Rpb25zIGFyb3VuZCBXZWJzaXRlRGF0YVN0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJT
Y3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dG
ZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDE3
MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTMs
NyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgot
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsKKyAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25sb2Fk
UHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRv
d25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgp
KTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFr
ZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgmcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwog
ICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVz
dFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywg
VVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQu
bGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3du
bG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcgKzIx
Myw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAg
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92
aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0ICsz
NTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAgICAg
IG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGllbnQp
Ci0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3du
bG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xp
ZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMTEsNTUgKzEyOTksNiBA
QCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVh
dGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAoaW5p
dGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8vIFJl
cXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJM
IG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRv
IHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7
Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0
aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRhdGVk
UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9tYWlu
c0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAgICBp
ZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6VXNl
ckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpV
c2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNl
c3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdn
ZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGF1
dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25s
b2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0KLQot
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CkBAIC0xNjA0LDEzICsxNTQzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVm
YXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7CiB9
CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9yaWdp
bmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5Owot
fQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhp
c3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0g
ICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2Jq
ZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdvcmtQ
cm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAgCi0g
ICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAg
V2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3
ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAg
V2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwxNyAr
NTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRv
d25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgpAQCAtNTUsOSArNTMs
NiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7
CiB9OwpAQCAtMTY4LDEwNyArMTYzLDggQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiB3a0NsaWVudCkKK3ZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqKQogewotICAgIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRTdGFydChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNz
UG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShXZWJLaXQ6OnRvQVBJKCZwcm9j
ZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKLQotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZh
bHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vz
c1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxl
bmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0
Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCks
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wp
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNzYsMTQgKzE3MiwxNCBAQCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9h
ZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5kb3dubG9hZCgwLCBX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVm
IHBhdGgpCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJl
ZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIFdlYktp
dDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGgpKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTEgKzExMywxMSBAQCBXS19FWFBP
UlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlv
bkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERv
d25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QpOwotV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBw
YXRoKTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVS
TFJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxv
YWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1Jl
ZiBwYXRoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVzdW1lRG93bmxvYWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbml0
aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRh
U3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
d2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLV2Vic2l0ZURhdGFT
dG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaykoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZpbmlzaENh
bGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWREaWRDYW5jZWwpKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
KShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50VjAgeworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2g7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGYWlsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2FuY2VsOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Rp
ZENyYXNoOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
OworfSBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLy8gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1
ZGUgIldLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtNDYsNiArNTAsMTIgQEAKICNpbmNsdWRlIDx3dGYv
Q2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCituYW1lc3BhY2Ug
QVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1dlYnNpdGVEYXRhU3RvcmVE
b3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tXZWJzaXRlRGF0
YVN0b3JlRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCiBXS1R5cGVJRCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CkBAIC03MjUsMyArNzM1LDExNSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGlj
IEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93
bmxvYWRDbGllbnQoY29uc3QgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFs
bG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVz
dGluYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWwoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OnRvQVBJ
KCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QoV2Vi
S2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPERvd25sb2FkQ2xpZW50
PihjbGllbnQpKTsKK30KKworV0tEb3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZFVSTFJlcXVlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlKS0+ZG93bmxvYWQobnVsbHB0ciwgbnVsbHB0ciwgV2ViS2l0Ojp0b0ltcGwocmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7Cit9CisKK1dLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwg
V0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlKS0+cmVzdW1lRG93bmxvYWQobnVs
bHB0ciwgbnVsbHB0ciwgKldlYktpdDo6dG9JbXBsKHJlc3VtZURhdGEpLCBXZWJLaXQ6OnRvV1RG
U3RyaW5nKHBhdGgpKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjUwMTcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CkBAIC0xNDMsNiArMTQ0LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWwKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNs
ZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0
aW9uIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93
bmxvYWRDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgY29uc3QgV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFVSTFJlcXVlc3QoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlUmVzdW1lRG93bmxvYWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5n
UmVmIHBhdGgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtNDIsOCArNDEs
NiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTYyLDggKzU5LDYgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFBy
b2Nlc3NQb29sOwogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09i
akNQdHI8aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7Ci0g
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0
ZTsKLQogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNz
aW9uOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC0zNjcsMTMgKzM2MiwxMSBA
QCAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpCiAKIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewotICAgIHJldHVybiBfZG93bmxv
YWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewotICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpE
b3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC02MTUsMTIgKzYwOCwxMiBAQCAt
ICh2b2lkKV9zZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKIC0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gKF9XS0Rvd25sb2Fk
ICopX3Byb2Nlc3NQb29sLT5kb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpLndyYXBw
ZXIoKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5wdHIoKSwgcGF0aCkpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNl
bmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERl
bGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04MSw4ICs4MSw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
LS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
LSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVD
QVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkVVJMUmVx
dWVzdCIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkp
OworCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJz
aXRlRGF0YVN0b3JlLl9yZXN1bWVEb3dubG9hZEZyb21EYXRhIiwgbWFjb3MoMTAuMTQuNCwgV0tf
TUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAK
KyNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTM4LDYgKzQw
LDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CkBAIC00NTUsNiArNDU4LDI3IEBAIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKKy0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZG93bmxvYWREZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKTsKK30K
KworLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KWRvd25sb2FkRGVsZWdhdGUKK3sKKyAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVs
ZWdhdGU7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWVSZWY8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworfQorCist
IChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJu
IHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmRvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9w
YWdlXSwgcmVxdWVzdCkpOworfQorCistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5h
dGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gd3JhcHBlcihf
d2Vic2l0ZURhdGFTdG9yZS0+cmVzdW1lRG93bmxvYWQobnVsbHB0ciwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7Cit9CisKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnk6KEJPT0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI1MDE3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZUQKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2Rvd25sb2FkRGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI1
MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tEb3dubG9hZDsKIEBjbGFzcyBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wg
X1dLRG93bmxvYWREZWxlZ2F0ZTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZTsKIApAQCAtNTksNiArNjEsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOikgTlNTdHJpbmcgKl9zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyIiwgbWFjb3MoMTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4y
LCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxl
Z2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
IF9OdWxsYWJsZSl3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogCiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnQoV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFy
dGVkKGRvd25sb2FkLmdldCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3Rh
cnRlZChtX3dlYkNvbnRleHQsIGRvd25sb2FkLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQo
KSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERv
d25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQpAQCAtNjgsMTMgKzY4LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdERvd25sb2FkU2V0UmVzcG9uc2UoZG93bmxvYWQuZ2V0KCks
IHJlc3BvbnNlLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3Ro
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJr
aXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRvd25sb2FkLmdldCgpLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRv
d25sb2FkLmdldCgpLCBwYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgpKSkgewpA
QCAtOTksMTQgKzk5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDYW5jZWwo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgIHZvaWQgZGlkQ2FuY2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgp
KTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFByb3h5
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goV2Vic2l0
ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0
RG93bmxvYWRGaW5pc2hlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgcHJp
dmF0ZToKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiB9OwogCi12b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
Cit2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAg
Ly8gRklYTUU6IEZvciBjb21wYXRpYmlsaXR5LCB5b3UgbWF5IHdhbnQgdG8gc2hpbSB0aGlzIG9u
dG8gdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAvLyBidXQgdGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZCBhbmQgYSByZXBsYWNlbWVudCBBUEkgb24gdGhlIFdlYnNpdGVEYXRhU3Rv
cmUgc2hvdWxkIGJlIGFkZGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlzcG9zZShHT2JqCiAgICAgaWYgKCFwcml2LT5jbGllbnRzRGV0YWNoZWQpIHsKICAg
ICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG51bGxwdHIpOwotICAgICAgICBwcml2LT5w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobnVsbHB0cik7CiAgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7
CiAgICAgfQogCkBAIC04MjYsOCArODI1LDkgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93ZWJf
Y29udGV4dF9kb3dubAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09O
VEVYVChjb250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBu
dWxscHRyKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoY29udGV4dCwgdXJpLCBudWxscHRyKTsKLSAgICByZXR1
cm4gZG93bmxvYWQubGVha1JlZigpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXBy
ZWNhdGVkIGFuZCByZXBsYWNlZCBieSBhIGZ1bmN0aW9uIG9uIFdlYnNpdGVEYXRhU3RvcmUuCisg
ICAgLy8gSWYgY29tcGF0aWJpbGl0eSBpcyBuZWVkZWQsIHNoaW0gdGhpcyBvbnRvIHRoZSBkZWZh
dWx0IFdlYnNpdGVEYXRhU3RvcmUuCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC8qKgpAQCAt
MTY1NSwxMCArMTY1NSwxMSBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9y
Q3JlCiAgICAgcmV0dXJuIGRvd25sb2FkLmdldCgpOwogfQogCi1XZWJLaXREb3dubG9hZCogd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogdXJpLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlKQorV2ViS2l0RG93bmxv
YWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRleHQqLCBjb25z
dCBjaGFyKiwgV2ViUGFnZVByb3h5KikKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwotICAgIHJldHVybiB3ZWJraXRXZWJDb250
ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmRvd25s
b2FkKGluaXRpYXRpbmdQYWdlLCByZXF1ZXN0KSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IGEgZnVuY3Rpb24gb24gV2Vic2l0ZURhdGFT
dG9yZS4KKyAgICAvLyBJZiBjb21wYXRpYmlsaXR5IGlzIG5lZWRlZCwgc2hpbSB0aGlzIG9udG8g
dGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZS4KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTcgKzQ3LDE3IEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50
Ci0gICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCB1aW50NjRf
dCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHByb2Nlc3NEaWRDcmFz
aChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0
YXJ0KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkRmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5Jikg
ZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkQ2Fu
Y2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJzaXRlRGF0
YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYnNpdGVEYXRhU3RvcmUmLCBE
b3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAogI2lmIFVT
RShTWVNURU1fUFJFVklFVykKICAgICB2b2lkIHRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJv
eHkmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCShyZXZpc2lvbiAyNTAxNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBE
b3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYnNpdGVEYXRhU3Rv
cmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nl
c3MKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5pc1N1Y2Nlc3NmdWwoKSkgewpAQCAtOTgsNyArOTgs
NyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50
NjRfdCBsZW5ndGgpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQCiAgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0
aF07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQordm9p
ZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYnNp
dGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhN
RTogU3lzdGVtIFByZXZpZXcgbmVlZHMgY29kZSBoZXJlLgogICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikgewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWMKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQogewogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpbwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKLXZvaWQg
RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jh
c2goV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50
Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nl
c3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTIw
NSw3ICsyMDUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpCiAg
ICAgfQogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
RmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
ewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3Rl
bVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEb3dubG9hZENs
aWVudDo6ZGlkRmluaXNoKFdlYlByb2NlcwogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRE
aWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpKSB7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChX
ZWJQcm9jZXNzUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vic2l0ZURhdGFT
dG9yZSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkp
IHsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vi
UHJvY2VzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCiAgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1d
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsMTUgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlRG93bmxvYWRJRCgpCiAgICAgcmV0dXJu
ICsrdW5pcXVlRG93bmxvYWRJRDsKIH0KICAgICAKLVJlZjxEb3dubG9hZFByb3h5PiBEb3dubG9h
ZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKK1JlZjxEb3dubG9hZFByb3h5PiBEb3dubG9hZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQ
cm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvd25sb2FkUHJveHkoZG93
bmxvYWRQcm94eU1hcCwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94eU1hcCwgZGF0YVN0b3Jl
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KSk7CiB9CiAKLURvd25sb2FkUHJveHk6OkRv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKK0Rvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxv
YWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogICAg
IDogbV9kb3dubG9hZFByb3h5TWFwKGRvd25sb2FkUHJveHlNYXApCiAgICAgLCBtX3Byb2Nlc3NQ
b29sKCZwcm9jZXNzUG9vbCkKKyAgICAsIG1fZGF0YVN0b3JlKCZkYXRhU3RvcmUpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZ2VuZXJhdGVEb3dubG9hZElEKCkpCiAgICAgLCBtX3JlcXVlc3QocmVzb3Vy
Y2VSZXF1ZXN0KQogewpAQCAtNjcsNiArNjgsNyBAQCBEb3dubG9hZFByb3h5OjpEb3dubG9hZFBy
b3h5KERvd25sb2FkUHJvCiBEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCiB7CiAgICAg
QVNTRVJUKCFtX3Byb2Nlc3NQb29sKTsKKyAgICBBU1NFUlQoIW1fZGF0YVN0b3JlKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpjYW5jZWwoKQpAQCAtODIsMTQgKzg0LDE2IEBAIHZvaWQgRG93
bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwog
ICAgIG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOworICAgIEFTU0VSVChtX2RhdGFTdG9yZSk7Cisg
ICAgbV9kYXRhU3RvcmUgPSBudWxscHRyOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRh
U3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xp
ZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRh
U3RvcmUtPmRvd25sb2FkQ2xpZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX2RhdGFTdG9yZSwgKnRo
aXMpOwogfQogCiBXZWJQYWdlUHJveHkqIERvd25sb2FkUHJveHk6Om9yaWdpbmF0aW5nUGFnZSgp
IGNvbnN0CkBAIC0xMjUsMTAgKzEyOSwxMCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0
KGNvbnN0IFJlc291CiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRp
cmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hh
aW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAg
IGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wt
PmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRTdGFydCgqbV9kYXRhU3RvcmUsICp0aGlz
KTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
dWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xMzgsNyArMTQyLDEyIEBAIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKIAogICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1ha2VSZWYoKm1fcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKSwgbnVsbHB0cik7CiAKLSAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuZ2V0KCkpOworICAgIGlmICghbV9kYXRhU3RvcmUpIHsKKyAgICAgICAgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgqbV9kYXRhU3RvcmUsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTQ2LDcgKzE1NSw3IEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkud2ls
bFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9wb3NlZFJlcXVl
c3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CisgICAgbV9kYXRhU3RvcmUtPmRv
d25sb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0KCptX2RhdGFTdG9yZSwgKnRoaXMsIFdURk1v
dmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAg
ICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCiAgICAgICAg
IGlmICghcHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9vbCkKQEAgLTE2MiwyNiArMTcxLDI2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KIAogdm9pZCBEb3dubG9h
ZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgcmVzcG9uc2UpOworICAgIG1f
ZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqbV9kYXRhU3Rv
cmUsICp0aGlzLCByZXNwb25zZSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgbGVuZ3RoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBp
ZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5k
b3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbGVu
Z3RoKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgq
bV9kYXRhU3RvcmUsICp0aGlzLCBsZW5ndGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewotICAgIGlmICghbV9w
cm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVu
YW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0g
ZG93bmxvYWRJRF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGlu
YXRpb24pIHsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9kYXRhU3RvcmUsICp0aGlzLCBzdWdnZXN0ZWRG
aWxlbmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJ
RCA9IGRvd25sb2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRl
c3RpbmF0aW9uKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQogICAgICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwpAQCAt
MTk2LDE4ICsyMDUsMTggQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldp
dAogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9y
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHBhdGgpOworICAg
IG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uKCptX2Rh
dGFTdG9yZSwgKnRoaXMsIHBhdGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlz
aCgpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
RmluaXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkRmluaXNoKCptX2RhdGFTdG9yZSwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBj
YW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9k
b3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjIzLDEyICsyMzIs
MTIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29ucwogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wp
CisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9yZXN1bWVE
YXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25s
b2FkQ2xpZW50KCkuZGlkRmFpbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGVycm9yKTsKKyAgICBt
X2RhdGFTdG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKCptX2RhdGFTdG9yZSwgKnRoaXMs
IGVycm9yKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKQEAgLTIzOCw3ICsyNDcsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNl
bChjb25zdCBJUEM6CiB7CiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRh
KTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCptX3By
b2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGlk
Q2FuY2VsKCptX2RhdGFTdG9yZSwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhl
IERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5
TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAyNTAxNzApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxMCArNTMsMTEgQEAgY2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIERv
d25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb3dubG9hZFBy
b3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBj
cmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9v
bCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3dubG9hZFByb3h5
KCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25s
b2FkSUQ7IH0KQEAgLTk5LDcgKzEwMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQ
b29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgRG93
bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMTksNiArMTIwLDcgQEAgcHJpdmF0
ZToKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQ
dHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRh
U3RvcmU+IG1fZGF0YVN0b3JlOwogICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwogCiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gbV9yZXN1bWVEYXRhOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkocmV2aXNp
b24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgRG93bmxv
YWRQcm94eU1hcDo6YXBwbGljYXRpb25XaWxsRW4KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCks
IDApOwogfQogCi1Eb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9h
ZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5
TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIGF1
dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3Jl
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93
bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKICAg
ICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQWRkaW5nIGRvd25sb2FkICUiIFBSSXU2NCAiIHRvIFVJ
UHJvY2VzcyBEb3dubG9hZFByb3h5TWFwIiwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRv
d25sb2FkSUQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDI1MDE3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHk7CiBjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5TWFwIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPERvd25sb2FkUHJveHlNYXA+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHlNYXAoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogICAgIH5Eb3dubG9hZFByb3h5
TWFwKCk7CiAKLSAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWRQ
cm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bv
b2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRvd25sb2Fk
RmluaXNoZWQoRG93bmxvYWRQcm94eSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDI1MDE3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0xNzYsMTIgKzE3NywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5
bnRoZXNpemVBcHBJCiAgICAgfQogfQogCi1Eb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQorRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxv
YWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQogICAg
ICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0
aGlzKTsKIAotICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkobV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgbV9wcm9jZXNzUG9vbCwg
cmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKLSAgICBEb3du
bG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURh
dGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjUwMTcwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKIAorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgi
CisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKQEAgLTQ4LDYgKzUwLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3Jp
Z2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0xMDcsNiArMTEwLDcgQEAgV2Vic2l0
ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8VwogICAgICwgbV9hdXRoZW50aWNhdG9y
TWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigpKQogI2VuZGlmCiAg
ICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KCkpCisg
ICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4o
KSkKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgLCBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9y
KG1ha2VVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+KCkpCiAjZW5kaWYKQEAg
LTEyOCw2ICsxMzIsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6
CiAgICAgLCBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRv
ck1hbmFnZXI+KCkpCiAjZW5kaWYKICAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0
ZURhdGFTdG9yZUNsaWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAsIG1fc29B
dXRob3JpemF0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxTT0F1dGhvcml6YXRpb25Db29y
ZGluYXRvcj4oKSkKICNlbmRpZgpAQCAtMjA3NCw2ICsyMDc5LDg1IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1AKIHsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXREb3dubG9hZENsaWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBjbGll
bnQpCit7CisgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKworRG93
bmxvYWRQcm94eSogV2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
Cit7CisgICAgaWYgKCFwcm9jZXNzUG9vbCkgeworICAgICAgICBmb3IgKGF1dG8mIHBvb2wgOiBX
ZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29sID0gcG9vbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghcHJvY2Vzc1Bvb2wpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZG93
bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoKnByb2Nlc3NQb29sLCByZXF1ZXN0LCBp
bml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGlu
Z1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOworCisgICAgaWYgKGluaXRpYXRpbmdQYWdlKQorICAgICAgICBpbml0
aWF0aW5nUGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOworCisgICAg
aWYgKHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCB1cGRhdGVkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgLy8gUmVxdWVz
dCdzIGZpcnN0UGFydHlGb3JDb29raWVzIHdpbGwgYmUgdXNlZCBhcyBPcmlnaW5hbCBVUkwgb2Yg
dGhlIGRvd25sb2FkIHJlcXVlc3QuCisgICAgICAgIC8vIFdlIHNldCB0aGUgdmFsdWUgdG8gdG9w
IGxldmVsIGRvY3VtZW50J3MgVVJMLgorICAgICAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpIHsKKyAg
ICAgICAgICAgIFVSTCBpbml0aWF0aW5nUGFnZVVSTCA9IFVSTCB7IFVSTCB7IH0sIGluaXRpYXRp
bmdQYWdlLT5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1
ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKGluaXRpYXRpbmdQYWdlVVJMKTsKKyAgICAgICAg
ICAgIHVwZGF0ZWRSZXF1ZXN0LnNldElzU2FtZVNpdGUoV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVE
b21haW5zRXF1YWwoaW5pdGlhdGluZ1BhZ2VVUkwsIHJlcXVlc3QudXJsKCkpKTsKKyAgICAgICAg
ICAgIGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lOjpVc2VyQWdlbnQpKQorICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNl
dEhUVFBVc2VyQWdlbnQoaW5pdGlhdGluZ1BhZ2UtPnVzZXJBZ2VudCgpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVz
KFVSTCgpKTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldElzU2FtZVNpdGUoZmFsc2Up
OworICAgICAgICAgICAgaWYgKCF1cGRhdGVkUmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoV2Vi
Q29yZTo6SFRUUEhlYWRlck5hbWU6OlVzZXJBZ2VudCkpCisgICAgICAgICAgICAgICAgdXBkYXRl
ZFJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudChXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50
KCkpOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldElzVG9wU2l0ZShmYWxz
ZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNlc3Npb25JRCwgZG93bmxvYWRQcm94
eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSksIDApOwor
ICAgICAgICByZXR1cm4gJmRvd25sb2FkUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuICZkb3du
bG9hZFByb3h5OworfQorCitEb3dubG9hZFByb3h5KiBXZWJzaXRlRGF0YVN0b3JlOjpyZXN1bWVE
b3dubG9hZChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIFdlYlBhZ2VQcm94eSogaW5pdGlh
dGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIGlmICghcHJvY2Vzc1Bvb2wpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwb29sIDog
V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBwcm9jZXNz
UG9vbCA9IHBvb2w7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoIXByb2Nlc3NQb29sKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGRv
d25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KCpwcm9jZXNzUG9vbCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlKTsKKyAgICBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisKKyAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIXBhdGguaXNFbXB0
eSgpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKwor
ICAgIGlmIChwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
c3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3Vt
ZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7
CisgICAgICAgIHJldHVybiAmZG93bmxvYWRQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gJmRv
d25sb2FkUHJveHk7Cit9CisKK0Rvd25sb2FkUHJveHkmIFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0
ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdl
KQoreworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBwcm9jZXNzUG9vbC5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkoKnRoaXMsIHJlcXVlc3QpOworICAgIGRvd25s
b2FkUHJveHkuc2V0T3JpZ2luYXRpbmdQYWdlKG9yaWdpbmF0aW5nUGFnZSk7CisgICAgcmV0dXJu
IGRvd25sb2FkUHJveHk7Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6c2V0U291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpCiB7CiAgICAg
aWYgKG1fbmV0d29ya2luZ0hhc0JlZ3VuKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjUw
MTcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIEFQSSB7CitjbGFzcyBEYXRhOworY2xhc3MgRG93bmxvYWRDbGllbnQ7CiBjbGFzcyBIVFRQ
Q29va2llU3RvcmU7CiB9CiAKQEAgLTY5LDYgKzcxLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXI7CitjbGFz
cyBEb3dubG9hZFByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKIGNsYXNzIERldmljZUlk
SGFzaFNhbHRTdG9yYWdlOwogY2xhc3MgU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I7CkBAIC0y
NTksNiArMjYyLDExIEBAIHB1YmxpYzoKICAgICBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50JiBjbGll
bnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1
ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdURk1v
dmUoY2xpZW50KTsgfQogCisgICAgQVBJOjpEb3dubG9hZENsaWVudCYgZG93bmxvYWRDbGllbnQo
KSB7IHJldHVybiBtX2Rvd25sb2FkQ2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXREb3dubG9h
ZENsaWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7CisgICAgRG93bmxvYWRQ
cm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBE
b3dubG9hZFByb3h5KiBkb3dubG9hZChXZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VQcm94eSogaW5p
dGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CisgICAgRG93bmxvYWRQcm94eSog
cmVzdW1lRG93bmxvYWQoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQ
YWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAg
ICAgQVBJOjpIVFRQQ29va2llU3RvcmUmIGNvb2tpZVN0b3JlKCk7CiAKICNpZiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQpAQCAtMzYwLDYgKzM2OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIFVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBVbmlx
dWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKIAogICAgIFJlZlB0
cjxBUEk6OkhUVFBDb29raWVTdG9yZT4gbV9jb29raWVTdG9yZTsKIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTAx
NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTM4LDYgKzExMzgsNyBAQAogCQk1Q0U5MTIxMjIyOTNDMjc4MDA1
QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGls
aWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTMyMjkzQzI3OTAwNUJFQzc4IC8q
IEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9j
ZXNzTWFpbi5jcHAgKi87IH07CiAJCTVDRTkxMjE0MjI5M0MyODAwMDVCRUM3OCAvKiBXS01haW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBC
MjI5M0MxRTAwMDVCRUM3OCAvKiBXS01haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1Q0VBQkEzMzIzMzYwRDM5MDA3OTc3OTcgLyogV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDRUFCQTMyMjMzNjBDRUMwMDc5Nzc5NyAvKiBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2
MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERC
ODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTM2OTQsNiArMzY5NSw3IEBACiAJCTVD
RTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHA7
IHBhdGggPSBDb2NvYS9BdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDRUFCQTJBMjMzMzI0NzcwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0
aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0
aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3
OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0VBQkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNGRUNCMDMxRTFFRDFDODAwRjg4NTA0IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFE
NzNGMTExNkZGOTBDMDBFRTUzOTYgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNs
aWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC04
MTI3LDYgKzgxMjksNyBAQAogCQkJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJT
Y3JpcHRSZWYuaCAqLywKIAkJCQk1QzZFN0Q4NzIzMjM2MUU3MDBDMjE1OUQgLyogV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZi5jcHAgKi8sCiAJCQkJNUM2RTdEODYyMzIzNjFFNzAw
QzIxNTlEIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaCAqLywKKwkJCQk1
Q0VBQkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGll
bnQuaCAqLywKIAkJCQkxQTU3MTA5QzFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcCAqLywKIAkJCQkxQTU3MTA5RDFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmggKi8sCiAJCQkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vi
c2l0ZVBvbGljaWVzLmNwcCAqLywKQEAgLTEwNDIxLDYgKzEwNDI0LDcgQEAKIAkJCQkxQUE2NTRE
MTFCMTRGNzE0MDBCRjFEM0UgLyogV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNkU3RDg4MjMyMzYyMDUwMEMyMTU5RCAvKiBXS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0VB
QkEzMzIzMzYwRDM5MDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc1QThEMkQ2MTg3RDFDMEUwMEMzOUM5RSAvKiBXS1dlYnNp
dGVEYXRhU3RvcmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2N0ExQzdGN0JB
NjAwNjlBQzRGIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNTcxMDlGMUFCQTAwMjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBp
biBIZWFkZXJzICovLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMTg3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTktMDktMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIERvd25sb2FkQ2xpZW50IGZy
b20gV2ViUHJvY2Vzc1Bvb2wgdG8gV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRDb250ZXh0RG93bmxvYWRDbGll
bnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9D
b250ZXh0TWVudURvd25sb2FkLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAgIChkb3dubG9h
ZFRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6d2ViVmlld1dpdGhEb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVz
cy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgdGVhckRvd25dKToK
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3dubG9hZDpleHBl
Y3RlZExlbmd0aDpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1F1aWNrTG9vay5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRGYWlsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25s
b2FkRGlkQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaDoKKwogMjAxOS0wOS0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gSlNDIHF1ZXVlcyBzaG91bGQgcmUtYnVpbGQg
VG9UIGFuZCBjb21wYXJlIHJlc3VsdHMgb24gYnVpbGQgZmFpbHVyZQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlIDxXZWJL
aXQvV0tEb3dubG9hZC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC00MCwyMiArNDEsMjMgQEAgc3Rh
dGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdAogICAgIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lckRvd25sb2FkKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29s
KiwgY29uc3Qgdm9pZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOwogICAg
IFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1w
L1dlYktpdEFQSVRlc3QvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIikubGVha1JlZigp
OwogfQogCi1zdGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHQpCitzdGF0aWMgdm9pZCBzZXREb3dubG9hZENsaWVudChXS1BhZ2VSZWYgcGFnZSkK
IHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwg
c2l6ZW9mKGNsaWVudCkpOwogCiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CiAKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENs
aWVudChjb250ZXh0LCAmY2xpZW50LmJhc2UpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmUgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShhZG9wdFdL
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihwYWdlKSkuZ2V0KCkpOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KGRhdGFTdG9yZSwgJmNsaWVudC5iYXNlKTsKIH0K
IAogc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTcy
LDkgKzc0LDkgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZQogVEVT
VChXZWJLaXQsIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCkKIHsKICAgICBXS1JldGFp
blB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhD
b25maWd1cmF0aW9uKG51bGxwdHIpKTsKLSAgICBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoY29u
dGV4dC5nZXQoKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgp
KTsKKyAgICBzZXREb3dubG9hZENsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CiAgICAgc2V0UGFnZVBv
bGljeUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CiAKICAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoaXMg
ZmlsZW5hbWUgd2FzIHNwZWNpYWxseSBjaG9zZW4gdG8gdHJpZ2dlciB0aGUgY3Jhc2ggY29uZGl0
aW9ucyBpbgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRl
eHRNZW51RG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0JKHJldmlzaW9uIDI1MDE3MCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2Fk
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dL
UGFnZUNvbnRleHRNZW51Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9fV0tEb3dubG9h
ZC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC02Miw3ICs2Myw3IEBAIHN0YXRp
YyB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWUKICAgICB9CiB9CiAKLXN0YXRpYyBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNv
bnN0IHZvaWQqKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlz
IHByb3ZpZGVkIGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRl
IGluIHRoZSBIVE1MLgogICAgIEVYUEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1dGVWYWx1
ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC04MiwxNCArODMsMTYgQEAgVEVTVChXZWJL
aXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bgogewogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3Rl
ZEJ1bmRsZSgpKTsKIAotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAg
IFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgm
Y2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CiAgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0U2V0RG93
bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUmV0YWlu
UHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRl
V2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKKyAgICAK
KyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0gV0tQYWdlQ29uZmlndXJhdGlv
bkdldFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24o
d2ViVmlldy5wYWdlKCkpKS5nZXQoKSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxv
YWRDbGllbnQoZGF0YVN0b3JlLCAmY2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlTmF2aWdhdGlv
bkNsaWVudFYwIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6
ZW9mKGxvYWRlckNsaWVudCkpOwpAQCAtMTE0LDcgKzExNyw3IEBAIFRFU1QoV2ViS2l0LCBDb250
ZXh0TWVudURvd25sb2FkSFRNTERvd24KICAgICBVdGlsOjpydW4oJmRpZERlY2lkZURvd25sb2Fk
RGVzdGluYXRpb24pOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwg
Y29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29s
KiwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5h
bWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUgaW4gdGhlIEhUTUwsIGFmdGVyIHNhbml0aXphdGlvbi4KICAgICBFWFBFQ1RfV0tfU1RS
RVEoInRlc3QxX3Rlc3QyX2Rvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmls
ZW5hbWUpOwpAQCAtMTI5LDE1ICsxMzIsMTcgQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93
bmxvYWRIVE1MRG93bgogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9
IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAg
IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZURvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2Yo
Y2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgY2xpZW50LmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0NvbnRleHRTZXREb3du
bG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogCiAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVX
aXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9y
bVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCisgICAg
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZp
ZXcucGFnZSgpKSkuZ2V0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xp
ZW50KGRhdGFTdG9yZSwgJmNsaWVudC5iYXNlKTsKKwogICAgIFdLUGFnZU5hdmlnYXRpb25DbGll
bnRWMCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihs
b2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaD4KQEAgLTE3Niw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBkb3dubG9hZFRl
c3QoRGVjaXNpb24gZGVjaXNpCiAKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmln
dXJhdGlvbldpdGhDb250ZW50RmlsdGVyU2V0dGluZ3MoZGVjaXNpb24sIGRlY2lzaW9uUG9pbnQp
OwogICAgICAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudEZpbHRl
cmluZ0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW1tjb25maWd1cmF0
aW9uIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdl
dCgpXTsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3du
bG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8g
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gbmF2aWdh
dGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0JlY29tZURvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHJldmlzaW9uIDI1MDE3MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rv
d25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaD4KQEAgLTEyMSwyMyArMTIyLDIzIEBAIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNo
OihfV0tEb3dubG9hZCAKIAogVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWREZWxlZ2F0ZSkKIHsK
LSAgICBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0
b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKICAgICBE
b3dubG9hZERlbGVnYXRlICpkb3dubG9hZERlbGVnYXRlID0gW1tEb3dubG9hZERlbGVnYXRlIGFs
bG9jXSBpbml0XTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxv
YWREZWxlZ2F0ZV07CisgICAgW2RhdGFTdG9yZSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9h
ZERlbGVnYXRlXTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBFWFBFQ1RfRVEo
ZG93bmxvYWREZWxlZ2F0ZSwgW3Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAg
ICAgIEVYUEVDVF9FUShkb3dubG9hZERlbGVnYXRlLCBbZGF0YVN0b3JlIF9kb3dubG9hZERlbGVn
YXRlXSk7CiAgICAgfQogCiAgICAgW2Rvd25sb2FkRGVsZWdhdGUgcmVsZWFzZV07Ci0gICAgRVhQ
RUNUX05VTEwoW3Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgRVhQRUNUX05V
TEwoW2RhdGFTdG9yZSBfZG93bmxvYWREZWxlZ2F0ZV0pOwogfQogCiBzdGF0aWMgdm9pZCBydW5U
ZXN0KGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlLCBpZCA8X1dL
RG93bmxvYWREZWxlZ2F0ZT4gZG93bmxvYWREZWxlZ2F0ZSwgTlNVUkwgKnVybCkKIHsKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGVdOwotICAgIFtbW3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25s
b2FkRGVsZWdhdGVdOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFT
dG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CiAKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBoYXNSZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CkBAIC0yNzgsNyAr
Mjc5LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgT3JpZ2luYXRpbmdXZWJWaWV3KQogICAgICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKICAg
ICAgICAgZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tPcmlnaW5hdGluZ1dlYlZpZXdEb3du
bG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAg
ICAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9h
ZERlbGVnYXRlLmdldCgpXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpzb3VyY2VVUkxdXTsKICAgICB9CiAKQEAgLTM0OCw3ICszNDks
NyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hCiB7CiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpbW0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3Nl
dERvd25sb2FkRGVsZWdhdGU6W1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxVUkw6c291cmNlVVJMXV07CisgICAgW1tbd2Vi
VmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0
ZTpbW0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhw
ZWN0ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdXTsKIAogICAgIGV4cGVjdGVkVXNlckluaXRpYXRl
ZFN0YXRlID0gZmFsc2U7CiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC01MDgsNyArNTA5LDcg
QEAgVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZERvd25sb2FkKQogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Jl
ZGlyZWN0ZWREb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tbd2ViVmlldyBj
b25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWRE
ZWxlZ2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0
YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAog
ICAgIC8vIERvIDIgbG9hZHMgaW4gdGhlIHNhbWUgdmlldyB0byBtYWtlIHN1cmUgdGhlIHJlZGly
ZWN0IGNoYWluIGlzIHByb3Blcmx5IGNsZWFyZWQgYmV0d2VlbiBsb2Fkcy4KICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2PkZpcnN0IGxvYWQ8L2Rpdj4iXTsK
QEAgLTUzNyw3ICs1MzgsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkTG9hZENvbnZl
cnRlCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW1tbd2Vi
VmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93
bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB3ZWJz
aXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgp
XTsKIAogICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJWaWV3ID0gd2ViVmlldy5nZXQoKTsKICAg
ICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwpAQCAtNTYwLDcgKzU2MSw3IEBA
IFRFU1QoX1dLRG93bmxvYWQsIFJlZGlyZWN0ZWRTdWJmcmFtZUxvYWQKIAogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
IHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgp
XTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXRE
b3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRP
cmlnaW5hdGluZ1dlYlZpZXcgPSB3ZWJWaWV3LmdldCgpOwogICAgIGV4cGVjdGVkVXNlckluaXRp
YXRlZFN0YXRlID0gZmFsc2U7CkBAIC02MTUsNyArNjE2LDcgQEAgVEVTVChfV0tEb3dubG9hZCwg
RG93bmxvYWRDYW5jZWxlZFdoaWxlRAogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCldOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXRE
b3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93
bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBkb3dubG9h
ZEhhc0RlY2lkZWREZXN0aW5hdGlvbiA9IGZhbHNlOwpAQCAtNzE1LDcgKzcxNiw3IEBAIFRFU1Qo
X1dLRG93bmxvYWQsIERvd25sb2FkQXR0cmlidXRlRG9lc04KICAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW0Rvd25sb2FkQXR0cmlidXRlVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0u
cHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2Vi
VmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxhIGlkPSds
aW5rJyBocmVmPSdkYXRhOix0ZXN0JyBkb3dubG9hZD5DbGljayBtZSE8L2E+IiBiYXNlVVJMOm5p
bF07CiAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTczMCw3
ICs3MzEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBTdGFydERvd25sb2FkV2l0aERvd25sCiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9hZEF0dHJpYnV0ZVRlc3REZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUu
Z2V0KCk7CisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93
bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8YSBpZD0nbGluaycgaHJlZj0nZGF0YTosdGVzdCcgZG93bmxvYWQ+Q2xpY2sgbWUh
PC9hPiIgYmFzZVVSTDpuaWxdOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CkBAIC03NzAsNyArNzcxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgQ3Jhc2hBZnRlckRv
d25sb2FkRGlkRgogICAgICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKV0pOwogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpXTsKICAgICAgICAgcHJvY2Vzc1Bvb2wgPSBbd2ViVmlldyBjb25maWd1
cmF0aW9uXS5wcm9jZXNzUG9vbDsKLSAgICAgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJv
Y2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOworICAg
ICAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERl
bGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzb3VyY2VVUkxdXTsKIAogICAgICAg
ICBkaWREb3dubG9hZFN0YXJ0ID0gZmFsc2U7CkBAIC04NTUsNyArODU2LDcgQEAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlld1dpdGhEb3dubG9hZAogICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlv
biBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KV07Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVs
ZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRl
LmdldCgpOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCkBAIC05NzMsNyArOTc0LDcgQEAgVEVT
VChXZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRgogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hl
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9v
bC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IGNvbmZp
Z3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKIAogICAgIE5TVVJMICpmaXJzdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL2J1bmRsZS1maWxlL3NpbXBsZS5odG1sIl07CiAgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNl
UG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9n
cmVzcy5tbQkocmV2aXNpb24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1By
b2dyZXNzU1BJLmg+CkBAIC0xNjcsNyArMTY4LDcgQEAgLSAodm9pZClzdGFydExvYWRpbmdXaXRo
UHJvdG9jb2w6KERvd25sbwogLSAodm9pZCl0ZWFyRG93bgogewogICAgIGlmIChtX3dlYlZpZXcp
IHsKLSAgICAgICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX2Rv
d25sb2FkRGVsZWdhdGUgPSBudWxscHRyOworICAgICAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gbnVsbHB0cjsKICAg
ICAgICAgW21fd2ViVmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbV93
ZWJWaWV3ID0gbnVsbHB0cjsKICAgICB9CkBAIC0yMzgsNyArMjM5LDcgQEAgLSAodm9pZClzdGFy
dERvd25sb2FkOihEb3dubG9hZFN0YXJ0VHlwZQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgbV93ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBtX3dlYlZpZXcu
Z2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gc2VsZjsKLSAgICBtX3dlYlZpZXcuZ2V0KCkuY29u
ZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IHNlbGY7CisgICAgbV93
ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxl
Z2F0ZSA9IHNlbGY7CiAKICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0
IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9maWxlIl1d
KTsKIApAQCAtMjQ4LDcgKzI0OSw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93bmxvYWRT
dGFydFR5cGUKICAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRJblByb2Nl
c3NQb29sOgotICAgICAgICBbbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bv
b2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5nV2ViVmlldzpu
dWxscHRyXTsKKyAgICAgICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5nV2Vi
VmlldzpudWxscHRyXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQkocmV2aXNp
b24gMjUwMTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYktp
dC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+CkBAIC0y
MzIsMTIgKzIzMyw5IEBAIC0gKHZvaWQpdmVyaWZ5RG93bmxvYWQKIAogc3RhdGljIFJldGFpblB0
cjxXS1dlYlZpZXc+IHJ1blRlc3QoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXRlLCBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QsIEJPT0wgc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZykKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGlu
aXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZGVsZWdhdGVdOwot
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3Jl
TG9hZGluZ107Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wu
Z2V0KCldOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxv
YWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyNTAxNzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDggKzcyMiw4IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3AKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50
LmJhc2UpOwogCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9
IHsKLSAgICAgICAgeyAxLCB0aGlzIH0sCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRD
bGllbnRWMCBkb3dubG9hZENsaWVudCA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0sCiAgICAgICAg
IGRvd25sb2FkRGlkU3RhcnQsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZQogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKQEAgLTczNyw4ICs3
MzcsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAgICAgICAg
IDAsIC8vIHByb2Nlc3NEaWRDcmFzaDsKICAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTAogICAgIH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29u
dGV4dCgpLCAmZG93bmxvYWRDbGllbnQuYmFzZSk7Ci0gICAgCisgICAgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0RG93bmxvYWRDbGllbnQoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwg
JmRvd25sb2FkQ2xpZW50LmJhc2UpOworCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25l
IG9uIHRoZSBwYWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRC
dW5kbGVDbGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAtMjM5MCw0NCArMjM5MCw0
NiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgCiAvLyBX
S0NvbnRleHREb3dubG9hZENsaWVudAogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZFN0YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFy
dChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9s
bGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNv
bnRleHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChkYXRhU3RvcmUsIGRv
d25sb2FkKTsKIH0KICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3Zlcndy
aXRlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVu
YW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnRl
eHQsIGRvd25sb2FkLCBmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZGF0YVN0b3JlLCBkb3dubG9h
ZCwgZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0
PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9h
ZERpZEZpbmlzaChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNo
KGRhdGFTdG9yZSwgZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
RXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJv
cik7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChkYXRhU3RvcmUsIGRvd25sb2FkLCBlcnJvcik7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRDYW5jZWwoY29udGV4dCwgZG93bmxvYWQp
OworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kb3dubG9hZERpZENhbmNlbChkYXRhU3RvcmUsIGRvd25sb2FkKTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYg
dXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwoZGF0YVN0b3JlLCBkb3dubG9hZCwgdXJsKTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
U3RhcnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9sbGVyOjp3ZWJzaXRl
RGF0YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAg
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxu
Iik7CiB9CiAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5n
UmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0Q29u
dHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5h
bWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSkKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRl
c3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsKIAogICAgIGlmIChtX3Nob3VsZExvZ0Rv
d25sb2FkQ2FsbGJhY2tzKSB7CkBAIC0yNDUwLDIxICsyNDUyLDI0IEBAIFdLU3RyaW5nUmVmIFRl
c3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW4KICAgICByZXR1cm4gdG9XSyh0ZW1wb3JhcnlGb2xk
ZXIgKyAiLyIgKyBzdWdnZXN0ZWRGaWxlbmFtZSkubGVha1JlZigpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUg
PT0gVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxk
TG9nRG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1
dFRleHQoIkRvd25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24t
Pm5vdGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tVUkxSZWYgdXJsKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rv
d25sb2FkUmVmLCBXS1VSTFJlZiB1cmwpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0
Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3du
bG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCht
YWtlU3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFk
b3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBX
S0Vycm9yUmVmIGVycm9yKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYg
ZXJyb3IpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0
ZURhdGFTdG9yZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykgewog
ICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBmYWlsZWQu
XG4iX3MpOwogCkBAIC0yNDc3LDggKzI0ODIsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZEZhaWwoV0tDCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWRE
b25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
Q2FuY2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYpCiB7
CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY2FuY2VsbGVkLlxuIik7CiAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyNTAxNzApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwNSwxOCArNDA1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9u
KFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmKTsKIAogICAgIC8vIFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tD
b250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwotICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYg
ZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxv
YWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0g
ICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwot
ICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwotICAgIHN0YXRpYyB2b2lk
IGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9p
ZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsK
LSAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWRE
aWRTdGFydChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQq
KTsKKyAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rv
d25sb2FkUmVmKTsKKyAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBX
S1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdS
ZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7CisgICAgc3RhdGljIHZvaWQgZG93
bmxvYWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25z
dCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYsIFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dl
YnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQq
KTsKKyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93
bmxvYWRSZWYsIFdLRXJyb3JSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2Vs
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAg
IHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2Fk
UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0
IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CiAgICAgCiAg
ICAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379397</attachid>
            <date>2019-09-23 14:45:55 -0700</date>
            <delta_ts>2019-09-23 17:11:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190923144554.patch</filename>
            <type>text/plain</type>
            <size>124855</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wOS0yMyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRG93bmxv
YWRDbGllbnQgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJ
OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLQ29udGV4dFJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk6Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6cGF0
aDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25s
b2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXREb3dubG9h
ZERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Rvd25sb2FkVVJM
UmVxdWVzdDpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6
ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
RG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
b3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc3VtZURvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlRG93bmxvYWRQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb3dubG9hZCk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDktMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9O
KDI1MDE0MykgRGlzayBjYWNoZSBzaG91bGQgYmUgZW5hYmxlZCBmb3IgU2FmYXJpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQCBzZXQo
V2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5o
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudC5o
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5k
b3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1
MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTMxMiw2ICszMTIsNyBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVEb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
NTMsNyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8K
ICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xp
Y3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5
LgotICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVh
dGVEb3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzKTsK
KyAgICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmNyZWF0ZURvd25s
b2FkUHJveHkocHJvY2VzcygpLnByb2Nlc3NQb29sKCksIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VSZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAg
IGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRl
ZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+
dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC02MTI4LDE2ICs2MTI4LDE2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCks
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFi
c29sdXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kb3dubG9hZCgm
cHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0
TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkp
OwogICAgICAgICByZXR1cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBD
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0
VGVzdFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhp
cywgVVJMKFVSTCgpLCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1
bHQubGlua1N1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5k
b3dubG9hZCgmcHJvY2VzcygpLnByb2Nlc3NQb29sKCksIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxl
bmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0g
Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nl
c3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRl
eHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJM
KSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZG93bmxvYWQoJnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0
YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdD
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgotI2luY2x1
ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgi
CiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgpAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFQ
SVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
RG93bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIkdhbWVwYWREYXRhLmgiCiAjaW5jbHVkZSAiSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuaCIKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgpAQCAtMjE2LDcg
KzIxMyw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICAs
IG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmpl
Y3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkp
CiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGll
bnQ+KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dChtYWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwg
bV92aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMzYwLDE0
ICszNTYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0CiAgICAg
ICAgIG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQotewotICAgIGlmICghZG93bmxvYWRDbGll
bnQpCi0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRD
bGllbnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShk
b3dubG9hZENsaWVudCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25D
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9u
Q2xpZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMjcsNTUgKzEzMTUs
NiBAQCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0CiAgICAgcmV0dXJu
IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOwog
fQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5
KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQotewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBj
cmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QsIGluaXRpYXRpbmdQYWdlKTsKLSAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNz
aW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0KLSAgICBpZiAo
aW5pdGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdlLT5oYW5kbGVEb3dubG9hZFJl
cXVlc3QoZG93bmxvYWRQcm94eSk7Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewotICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIC8v
IFJlcXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwg
VVJMIG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVl
IHRvIHRvcCBsZXZlbCBkb2N1bWVudCdzIFVSTC4KLSAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdl
KSB7Ci0gICAgICAgICAgICBVUkwgaW5pdGlhdGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBp
bml0aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgICAgICB1cGRh
dGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7Ci0g
ICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGFyZVJlZ2lzdHJhYmxlRG9t
YWluc0VxdWFsKGluaXRpYXRpbmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7Ci0gICAgICAgICAg
ICBpZiAoIXVwZGF0ZWRSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
VXNlckFnZW50KSkKLSAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFn
ZW50KGluaXRpYXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7Ci0g
ICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKLSAgICAgICAg
ICAgIGlmICghdXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpVc2VyQWdlbnQpKQotICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKLSAgICAgICAgfQotICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBz
dWdnZXN0ZWRGaWxlbmFtZSksIDApOwotICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKLX0KLQotRG93bmxvYWRQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVz
dCgpLCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5p
dGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRv
d25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSwgMCk7Ci0gICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotICAgIH0K
LQotICAgIHJldHVybiBkb3dubG9hZFByb3h5OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJ
OjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKSB7CkBAIC0xNjIwLDEzICsxNTU5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
RGVmYXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKSk7
CiB9CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpCi17Ci0gICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKLSAgICBkb3dubG9hZFByb3h5LnNldE9y
aWdpbmF0aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHJldHVybiBkb3dubG9hZFByb3h5
OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJv
b2wgYmFja2dyb3VuZCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnN5bnRoZXNpemVB
cHBJc0JhY2tncm91bmQoYmFja2dyb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRl
blBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKQEAgLTgyLDcgKzgxLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudDsKLWNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0
b3JlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudDsKQEAgLTk2LDcgKzk0LDYgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVy
Zm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBAIC0xNzEsNyArMTY4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25D
bGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNl
dEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQ+JiYpOwotICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6RG93bmxvYWRDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwogCkBAIC0yMTksOSArMjE1LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgog
Ci0gICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFn
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vi
UGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgpOwotCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6
T2JqZWN0Kik7CkBAIC0yOTIsMTAgKzI4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ldHdv
cmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYp
OwogI2VuZGlmCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7Ci0gICAg
Ci0gICAgLy8gRG93bmxvYWRzLgotICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJv
eHkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5h
dGluZ1BhZ2UpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyBy
ZXR1cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAg
ICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYz
OCw3ICs2MjcsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAg
ICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4g
bV9oaXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZp
c2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9u
U3BhY2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CkBAIC01MCwx
NyArNTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
fkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVp
bnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94
eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5Jikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNo
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5Jikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlz
dGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYs
IFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEw
NyArMTY4LDg3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHQKICAg
ICB9CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogd2tDbGllbnQpCit2
b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewogICAgIGNsYXNzIERv
d25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZSogY2xpZW50KQorICAgICAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChjb25zdCBX
S0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tDb250ZXh0UmVmIGNvbnRleHQp
CisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIGRpZFN0YXJ0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgZGlkU3Rh
cnQoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZFN0YXJ0KQogICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkU3RhcnQoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3du
bG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFN0YXJ0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkp
IGZpbmFsCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAorICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25z
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVSZXNwb25zZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEko
JmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShy
ZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3Bv
bnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0
aCkgZmluYWwKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxl
bmd0aCkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQ
SSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQ
SSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248
dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0KICAgICAgICAg
ICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGlu
YXRpb24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRl
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRp
b24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9B
UEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8g
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpKTsKICAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBmaW5hbAorICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0Ojp0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0
Ojp0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2NvbnRleHQsIFdlYktpdDo6dG9B
UEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkRmluaXNoKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmlu
YWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2goV2Vi
S2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlz
aChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAg
ICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWls
KQogICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFp
bChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJv
eHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3du
bG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5j
ZWwoV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFBy
b3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENhbmNlbChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9j
bGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6dG9BUEko
JnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gobV9j
b250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCisgICAgICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIH0KKyAgICAgICAgV0tDb250ZXh0UmVmIG1f
Y29udGV4dDsKICAgICB9OwotCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPnNldERvd25sb2Fk
Q2xpZW50KG1ha2VVbmlxdWVSZWY8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50LCBjb250ZXh0KSk7
CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpA
QCAtMjc2LDE0ICsyNTYsMTQgQEAgdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdL
Q29udAogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlv
bkNsaWVudCh3a0NsaWVudCk7CiB9CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRV
UkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVz
dFJlZikKK1dLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4
dFJlZiwgV0tVUkxSZXF1ZXN0UmVmKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJL
aXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+ZG93bmxvYWQoMCwgV2ViS2l0Ojp0b0ltcGwocmVxdWVz
dFJlZiktPnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdL
RG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBwYXRoKQorV0tEb3dubG9hZFJl
ZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChXS0NvbnRleHRSZWYsIFdLRGF0YVJlZiwgV0tTdHJp
bmdSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRl
eHRSZWYpLT5yZXN1bWVEb3dubG9hZChudWxscHRyLCBXZWJLaXQ6OnRvSW1wbChyZXN1bWVEYXRh
KSwgV2ViS2l0Ojp0b1dURlN0cmluZyhwYXRoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiB2b2lkIFdLQ29udGV4dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRs
ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCShyZXZpc2lvbiAyNTAy
NTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDExICsxMTMsMTEgQEAgV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS0Nv
bnRleHRDcmVhdGVXaQogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKK1dLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkgV0tfQ19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiBjbGllbnQpOwog
Ci1XS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KTsKLVdLX0VYUE9SVCBX
S0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCk7CitXS19FWFBPUlQgV0tE
b3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KTsKK1dLX0VYUE9S
VCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkgV0tfQ19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZVJlc3VtZURvd25sb2Fk
KTsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZv
ckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1R5cGVSZWYgdXNlckRhdGEp
OwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVEb3dubG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50X2gKKyNkZWZp
bmUgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRfaAorCisjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorCit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERp
ZFN0YXJ0Q2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3Jl
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJh
Y2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkUmVjZWl2
ZURhdGFDYWxsYmFjaykoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3
ZWJzaXRlRGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBtaW1l
VHlwZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tX
ZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUNhbGxiYWNrKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3Zl
cndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjaykoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
U3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG93
bmxvYWREaWRGYWlsQ2FsbGJhY2spKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0
b3JlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
RGlkQ2FuY2VsKShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNrKShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIHdlYnNpdGVEYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVy
bCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdLV2Vic2l0ZURh
dGFTdG9yZURvd25sb2FkQ2xpZW50QmFzZSB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAg
IGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xpZW50SW5mbzsKK30gV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGll
bnRCYXNlOworCit0eXBlZGVmIHN0cnVjdCBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVu
dFYwIHsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVudEJhc2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAu
CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREaWRTdGFydENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydDsKKyAgICBXS1dlYnNpdGVEYXRhU3Rv
cmVEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAg
ICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBXS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9h
ZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkU2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAgICAgICAgc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGU7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERpZENy
ZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZURl
c3RpbmF0aW9uOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkRGlkRmluaXNoQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoOworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZURvd25sb2FkRGlkRmFpbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmFpbDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZERp
ZENhbmNlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENhbmNl
bDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaDsKKyAgICBXS1dlYnNp
dGVEYXRhU3RvcmVEb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdDsKK30gV0tXZWJzaXRlRGF0YVN0
b3JlRG93bmxvYWRDbGllbnRWMDsKKworI2VuZGlmIC8vIFdLV2Vic2l0ZURhdGFTdG9yZURvd25s
b2FkQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsMTEgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQ2xpZW50Lmgi
CisjaW5jbHVkZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5o
IgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNs
dWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKQEAgLTQ2LDYgKzUwLDEyIEBACiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAorbmFtZXNwYWNlIEFQSSB7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBDbGllbnRUcmFpdHM8V0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGllbnRCYXNlPiB7
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50
VjA+IFZlcnNpb25zOworfTsKK30KKwogV0tUeXBlSUQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlw
ZUlEKCkKIHsKICAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OkFQSVR5cGUpOwpAQCAtNzI3LDMgKzczNywxMTUgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVDbGVhckFkQ2xpY2tBdHRyaQogICAgIH0pOwogfQogCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldERvd25sb2FkQ2xpZW50KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGNv
bnN0IFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQoreworICAg
IGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLV2Vic2l0
ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdL
V2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgICAgIH0KKyAgICBwcml2YXRlOgor
ICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRTdGFydChXZWJLaXQ6OnRvQVBJKCZkYXRh
U3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkgZmluYWwKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3Jl
KSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoJmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGZpbmFsCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJv
eHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRy
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFs
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YShXZWJLaXQ6OnRvQVBJKCZkYXRhU3RvcmUpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFBy
b3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6
QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICAgICAgICAgIGJv
b2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24g
PSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBXZWJLaXQ6OnRvQVBJKGZpbGVuYW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0ZSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxv
d092ZXJ3cml0ZSA/IFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6OlllcyA6IFdlYktpdDo6QWxsb3dP
dmVyd3JpdGU6Ok5vLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpKSk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6
dG9BUEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6
OnRvQVBJKHBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKFdlYktpdDo6dG9B
UEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsKFdlYktpdDo6dG9B
UEkoJmRhdGFTdG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRv
QVBJKGVycm9yKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKFdlYktpdDo6dG9BUEkoJmRhdGFT
dG9yZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5w
cm9jZXNzRGlkQ3Jhc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBt
X2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2goV2ViS2l0Ojp0b0FQSSgmZGF0YVN0b3JlKSwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmUmIGRhdGFTdG9yZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QpCisgICAgICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KFdlYktpdDo6dG9BUEkoJmRhdGFTdG9y
ZSksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvVVJMUmVmKHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0RG93bmxv
YWRDbGllbnQobWFrZVVuaXF1ZVJlZjxEb3dubG9hZENsaWVudD4oY2xpZW50KSk7Cit9CisKK1dL
RG93bmxvYWRSZWYgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KQoreworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZSktPmRvd25sb2Fk
KG51bGxwdHIsIG51bGxwdHIsIFdlYktpdDo6dG9JbXBsKHJlcXVlc3QpLT5yZXNvdXJjZVJlcXVl
c3QoKSkpOworfQorCitXS0Rvd25sb2FkUmVmIFdLV2Vic2l0ZURhdGFTdG9yZVJlc3VtZURvd25s
b2FkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRGF0YVJlZiByZXN1bWVEYXRh
LCBXS1N0cmluZ1JlZiBwYXRoKQoreworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZSktPnJlc3VtZURvd25sb2FkKG51bGxwdHIsIG51bGxwdHIsICpXZWJL
aXQ6OnRvSW1wbChyZXN1bWVEYXRhKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhwYXRoKSkpOworfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmgJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLRGVwcmVjYXRlZC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVEb3du
bG9hZENsaWVudC5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQz
LDYgKzE0NCwxMSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsCiB0
eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlv
bnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjayk7CiAKK1dL
X0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIGNvbnN0IFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50QmFzZSogY2xpZW50KTsKKworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlRG93bmxvYWRVUkxSZXF1ZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmUsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZVJlc3VtZURvd25sb2FkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmUsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0cmluZ1JlZiBwYXRoKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50Lmgi
CiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCi0jaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBv
cnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKQEAgLTQyLDggKzQxLDYgQEAKICNpbXBvcnQgIldlYlBy
b2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQg
Il9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkRGVs
ZWdhdGUuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRp
ZmljYXRlSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CkBAIC02Miw4ICs1
OSw2IEBAIHN0YXRpYyBXS1Byb2Nlc3NQb29sICpzaGFyZWRQcm9jZXNzUG9vbDsKIAogQGltcGxl
bWVudGF0aW9uIFdLUHJvY2Vzc1Bvb2wgewogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tBdXRvbWF0
aW9uRGVsZWdhdGU+PiBfYXV0b21hdGlvbkRlbGVnYXRlOwotICAgIFdlYWtPYmpDUHRyPGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPj4gX2Rvd25sb2FkRGVsZWdhdGU7Ci0KICAgICBSZXRhaW5QdHI8
X1dLQXV0b21hdGlvblNlc3Npb24+IF9hdXRvbWF0aW9uU2Vzc2lvbjsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1M+IF9nZW9s
b2NhdGlvblByb3ZpZGVyOwpAQCAtMzY3LDEzICszNjIsMTEgQEAgLShOU0RpY3Rpb25hcnkgKilf
cGx1Z2luTG9hZENsaWVudFBvbGljaQogCiAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rv
d25sb2FkRGVsZWdhdGUKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkRGVsZWdhdGUuZ2V0QXV0b3Jl
bGVhc2VkKCk7CisgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAodm9pZClfc2V0RG93bmxvYWREZWxl
Z2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKLSAgICBf
ZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5z
ZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25s
b2FkRGVsZWdhdGUpKTsKIH0KIAogLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9t
YXRpb25EZWxlZ2F0ZQpAQCAtNjE1LDEyICs2MDgsMTIgQEAgLSAodm9pZClfc2V0Q29yZUxvY2F0
aW9uUHJvdmlkZXI6KGlkPF9XSwogCiAtIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIChfV0tEb3dubG9hZCAqKV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCByZXF1ZXN0KS53cmFwcGVyKCk7CisgICAgcmV0dXJuIG5p
bDsKIH0KIAogLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRh
ICopcmVzdW1lRGF0YSBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5y
ZXN1bWVEb3dubG9hZChbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcocmVzdW1lRGF0YSkucHRyKCksIHBhdGgpKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAt
ICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRf
dClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHJldmlzaW9uIDI1MDI1NCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3BlcnR5IChu
b25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3du
bG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgi
V0tXZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01B
Q19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vh
aywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVn
YXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBp
b3MoMTAuMCkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpAQCAtODEsOCArODEsOSBAQAogCiAt
ICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5T
U3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkp
OwogCi0tIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7Ci0tIChfV0tEb3dubG9hZCAqKV9y
ZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6KE5TU3RyaW5n
ICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rv
d25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBvcmlnaW5hdGluZ1dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiV0tXZWJzaXRlRGF0YVN0b3JlLl9kb3dubG9hZFVSTFJlcXVlc3QiLCBtYWNvcygxMC4xNC40
LCBXS19NQUNfVEJBKSwgaW9zKDEyLjIsIFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQg
KilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBwYXRoOihOU1N0
cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2Vic2l0ZURhdGFTdG9yZS5fcmVzdW1l
RG93bmxvYWRGcm9tRGF0YSIsIG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwg
V0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGls
ZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5h
dGVOZXR3b3JrUHJvY2VzcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJBUElEYXRhLmgi
CiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb25Db2NvYS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
ci5oIgorI2ltcG9ydCAiRG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIldLSFRUUENvb2tpZVN0
b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC0zOCw2ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIK
KyNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgpAQCAtNDU1LDYgKzQ1OCwyNyBA
QCAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeQogICAgIHJldHVybiBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5jb25maWd1cmF0aW9uKCkuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCistIChpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2Rv
d25sb2FkRGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCk7Cit9CisKKy0gKHZvaWQpX3NldERvd25s
b2FkRGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVnYXRlCit7
CisgICAgX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlOworICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPFdlYktpdDo6RG93bmxv
YWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKK30KKworLSAoX1dLRG93bmxvYWQgKilfZG93
bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0
YVN0b3JlLT5kb3dubG9hZChudWxscHRyLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKK30K
KworLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPnJl
c3VtZURvd25sb2FkKG51bGxwdHIsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVX
aXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCkpOworfQorCiAtICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVl
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNSArNDEsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdl
YnNpdGVECiBAcGFja2FnZQogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworICAgIFdlYWtPYmpDUHRyPGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPiA+IF9kb3dubG9hZERlbGVnYXRlOwogfQogQGVuZApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw4ICsyNywxMCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgog
CitAY2xhc3MgX1dLRG93bmxvYWQ7CiBAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb247CiBAY2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIF9XS0Rvd25sb2FkRGVsZWdhdGU7
CiAKIEBwcm90b2NvbCBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU7CiAKQEAgLTU5LDYgKzYx
LDEwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXQKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcjopIE5TU3RyaW5nICpfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciIs
IG1hY29zKDEwLjE0LjQsIFdLX01BQ19UQkEpLCBpb3MoMTIuMiwgV0tfSU9TX1RCQSkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzVExTRmFsbGJhY2s6KSBCT09MIF9h
bGxvd3NUTFNGYWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRE
b3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVn
YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKiBfTnVsbGFibGUpd2ViVmlldyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
X1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0
YSBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeTsKIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNo
b3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzKSwgaW9zKDExLjApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAJKHJldmlzaW9uIDI1MDI1
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIldlYktp
dFVSSVJlc3BvbnNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00MCwx
NCArNDAsMTQgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUK
KyAgICB2b2lkIGRpZFN0YXJ0KFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7
CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQobV93ZWJDb250ZXh0LCBk
b3dubG9hZC5nZXQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkg
b3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJz
aXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdl
YmtpdERvd25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQpAQCAtNTgsNyArNTgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHdlYlZpZXcsICZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CiAgICAgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNl
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYnNpdGVEYXRhU3RvcmUm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRE
b3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgm
ZG93bmxvYWRQcm94eSk7CiAgICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRv
d25sb2FkLmdldCgpKSkKQEAgLTY4LDEzICs2OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJr
aXREb3dubG9hZFNldFJlc3BvbnNlKGRvd25sb2FkLmdldCgpLCByZXNwb25zZS5nZXQoKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRy
PFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURv
d25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWROb3RpZnlQcm9n
cmVzcyhkb3dubG9hZC5nZXQoKSwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICB2b2lkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9p
ZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUK
KyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYnNpdGVE
YXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxv
YWRQcm94eSk7CiAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKQEAgLTgyLDEz
ICs4MiwxMyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3
cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0
aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBv
dmVycmlkZQorICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vic2l0ZURhdGFTdG9yZSYs
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Vi
a2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAg
ICB3ZWJraXREb3dubG9hZERlc3RpbmF0aW9uQ3JlYXRlZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7
CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisg
ICAgdm9pZCBkaWRGYWlsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93
bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKQEAgLTk5LDE0ICs5OSwxNCBAQCBw
cml2YXRlOgogICAgICAgICB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoJmRvd25sb2Fk
UHJveHkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENhbmNlbChX
ZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3
ZWJraXREb3dubG9hZENhbmNlbGxlZChkb3dubG9hZC5nZXQoKSk7CiAgICAgICAgIHdlYmtpdFdl
YkNvbnRleHRSZW1vdmVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgdm9p
ZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmluaXNoKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxX
ZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3du
bG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRmluaXNoZWQoZG93
bmxvYWQuZ2V0KCkpOwpAQCAtMTE2LDcgKzExNiw4IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0V2Vi
Q29udGV4dCogbV93ZWJDb250ZXh0OwogfTsKIAotdm9pZCBhdHRhY2hEb3dubG9hZENsaWVudFRv
Q29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQordm9pZCBhdHRhY2hEb3dubG9h
ZENsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KikKIHsKLSAgICB3ZWJraXRXZWJDb250
ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1
ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIC8vIEZJWE1FOiBGb3IgY29tcGF0
aWJpbGl0eSwgeW91IG1heSB3YW50IHRvIHNoaW0gdGhpcyBvbnRvIHRoZSBkZWZhdWx0IFdlYnNp
dGVEYXRhU3RvcmUsCisgICAgLy8gYnV0IHRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQgYW5kIGEg
cmVwbGFjZW1lbnQgQVBJIG9uIHRoZSBXZWJzaXRlRGF0YVN0b3JlIHNob3VsZCBiZSBhZGRlZAog
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjIsNyArMzYyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2UoR09iagog
ICAgIGlmICghcHJpdi0+Y2xpZW50c0RldGFjaGVkKSB7CiAgICAgICAgIHByaXYtPmNsaWVudHNE
ZXRhY2hlZCA9IHRydWU7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRJbmplY3RlZEJ1
bmRsZUNsaWVudChudWxscHRyKTsKLSAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25s
b2FkQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIApAQCAtODI2LDgg
KzgyNSw5IEBAIFdlYktpdERvd25sb2FkKiB3ZWJraXRfd2ViX2NvbnRleHRfZG93bmwKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxw
dHIpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHVyaSwgbnVsbHB0cik7CiAKLSAgICBHUmVm
UHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25s
b2FkKGNvbnRleHQsIHVyaSwgbnVsbHB0cik7Ci0gICAgcmV0dXJuIGRvd25sb2FkLmxlYWtSZWYo
KTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQg
YnkgYSBmdW5jdGlvbiBvbiBXZWJzaXRlRGF0YVN0b3JlLgorICAgIC8vIElmIGNvbXBhdGliaWxp
dHkgaXMgbmVlZGVkLCBzaGltIHRoaXMgb250byB0aGUgZGVmYXVsdCBXZWJzaXRlRGF0YVN0b3Jl
LgorICAgIHJldHVybiBudWxscHRyOwogfQogCiAvKioKQEAgLTE2NTUsMTAgKzE2NTUsMTEgQEAg
V2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZQogICAgIHJldHVybiBkb3du
bG9hZC5nZXQoKTsKIH0KIAotV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERv
d25sb2FkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHVyaSwgV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSkKK1dlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0
U3RhcnREb3dubG9hZChXZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciosIFdlYlBhZ2VQcm94
eSopCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoU3RyaW5nOjpmcm9t
VVRGOCh1cmkpKTsKLSAgICByZXR1cm4gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5kb3dubG9hZChpbml0aWF0aW5nUGFnZSwg
cmVxdWVzdCkpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXByZWNhdGVkIGFuZCBy
ZXBsYWNlZCBieSBhIGZ1bmN0aW9uIG9uIFdlYnNpdGVEYXRhU3RvcmUuCisgICAgLy8gSWYgY29t
cGF0aWJpbGl0eSBpcyBuZWVkZWQsIHNoaW0gdGhpcyBvbnRvIHRoZSBkZWZhdWx0IFdlYnNpdGVE
YXRhU3RvcmUuCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgd2Via2l0V2ViQ29udGV4
dFJlbW92ZURvd25sb2FkKERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHJldmlzaW9u
IDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2
YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3RhcnQo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsKLSAg
ICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5
JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ3Jl
YXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3Ry
aW5nJikgZmluYWw7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBE
b3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBkaWRTdGFydChXZWJzaXRlRGF0YVN0b3Jl
JiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vic2l0ZURhdGFTdG9y
ZSYsIERvd25sb2FkUHJveHkmLCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2Vic2l0ZURhdGFTdG9yZSYsIERv
d25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2
b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlz
aChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlk
RmFpbChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENhbmNlbChXZWJzaXRlRGF0YVN0b3Jl
JiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYnNp
dGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vic2l0ZURhdGFTdG9yZSYsIERvd25sb2FkUHJv
eHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7CisgICAgdm9pZCBkaWRD
cmVhdGVEZXN0aW5hdGlvbihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYnNpdGVEYXRhU3Rv
cmUmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAg
ICAgdm9pZCB0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5Jik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkocmV2aXNpb24g
MjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgRG93bmxvYWRDbGllbnQ6OkRvd25s
b2FkQ2xpZW50KGlkIDxfV0tEbwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkUHJvY2Vz
c0RpZENyYXNoID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25s
b2FkUHJvY2Vzc0RpZENyYXNoOildOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIERv
d25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25s
b2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtODIsNyArODIsNyBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJQcm9jZXNzCiAgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJz
aXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgJiYgcmVz
cG9uc2UuaXNTdWNjZXNzZnVsKCkpIHsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxS
ZXNwb25zZSgpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5n
dGgpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJzaXRlRGF0YVN0b3Jl
JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKQogewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZp
ZXdEb3dubG9hZCgpKSB7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoV2ViUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpsZW5ndGhdOwogfQogCi12b2lkIERvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFN5c3RlbSBQcmV2aWV3IG5l
ZWRzIGNvZGUgaGVyZS4KICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIHsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAg
fSkuZ2V0KCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24pCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5h
dGlvbihXZWJzaXRlRGF0YVN0b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
aWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMTYwLDcg
KzE2MCw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW8KICAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRl
RGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KQordm9pZCBEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYnNpdGVEYXRhU3RvcmUm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklF
VykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBA
IC0xNzUsNyArMTc1LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdl
YgogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihk
b3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG93bmxvYWRD
bGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYnNpdGVEYXRh
U3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94
eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaQogICAgIH0KIH0KIAotdm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJzaXRlRGF0YVN0
b3JlJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkg
ewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQ
cm9jZXMKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93
bmxvYWRQcm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYnNpdGVE
YXRhU3RvcmUmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYg
KGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjM5LDcgKzIz
OSw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1AKICAgICAgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhF
cnJvcjplcnJvci5uc0Vycm9yKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5j
ZWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdlYnNpdGVEYXRhU3RvcmUmLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93
bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yNTQsNyArMjU0LDcg
QEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdlYlByb2NlcwogICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAK
LXZvaWQgRG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgRG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChXZWJzaXRlRGF0YVN0b3JlJiwg
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdFRvVVJMKQogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxX
aXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHJldmlz
aW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDE1IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZURvd25sb2FkSUQoKQogICAgIHJldHVybiArK3VuaXF1ZURvd25sb2FkSUQ7
CiB9CiAgICAgCi1SZWY8RG93bmxvYWRQcm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25s
b2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitSZWY8RG93bmxvYWRQ
cm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJv
eHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3dubG9hZFByb3h5KGRvd25sb2FkUHJveHlNYXAsIHByb2Nl
c3NQb29sLCByZXNvdXJjZVJlcXVlc3QpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3du
bG9hZFByb3h5KGRvd25sb2FkUHJveHlNYXAsIGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291
cmNlUmVxdWVzdCkpOwogfQogCi1Eb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2Fk
UHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5OjpE
b3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAgICA6IG1fZG93bmxvYWRQcm94eU1h
cChkb3dubG9hZFByb3h5TWFwKQogICAgICwgbV9wcm9jZXNzUG9vbCgmcHJvY2Vzc1Bvb2wpCisg
ICAgLCBtX2RhdGFTdG9yZSgmZGF0YVN0b3JlKQogICAgICwgbV9kb3dubG9hZElEKGdlbmVyYXRl
RG93bmxvYWRJRCgpKQogICAgICwgbV9yZXF1ZXN0KHJlc291cmNlUmVxdWVzdCkKIHsKQEAgLTY3
LDYgKzY4LDcgQEAgRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFBybwogRG93
bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKQogewogICAgIEFTU0VSVCghbV9wcm9jZXNzUG9v
bCk7CisgICAgQVNTRVJUKCFtX2RhdGFTdG9yZSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6
Y2FuY2VsKCkKQEAgLTgyLDE0ICs4NCwxNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmludmFsaWRh
dGUoKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICBtX3Byb2Nlc3NQb29sID0g
bnVsbHB0cjsKKyAgICBBU1NFUlQobV9kYXRhU3RvcmUpOworICAgIG1fZGF0YVN0b3JlID0gbnVs
bHB0cjsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQogewotICAg
IGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLnByb2Nlc3NEaWRDcmFz
aCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVu
dCgpLnByb2Nlc3NEaWRDcmFzaCgqbV9kYXRhU3RvcmUsICp0aGlzKTsKIH0KIAogV2ViUGFnZVBy
b3h5KiBEb3dubG9hZFByb3h5OjpvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdApAQCAtMTI1LDEwICsx
MjksMTAgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChjb25zdCBSZXNvdQogICAgIGlm
IChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5sYXN0KCkgIT0g
cmVxdWVzdC51cmwoKSkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChyZXF1ZXN0LnVy
bCgpKTsKIAotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRp
ZFN0YXJ0KCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkU3RhcnQoKm1fZGF0YVN0b3JlLCAqdGhpcyk7CiB9CiAKIHZvaWQgRG93bmxv
YWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlE
KQpAQCAtMTM4LDcgKzE0MiwxMiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhCiAKICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgPSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSksIGNoYWxsZW5nZUlELCBtYWtlUmVmKCptX3Byb2Nlc3NQb29sLT5uZXR3b3JraW5nUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSksIG51bGxwdHIpOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxv
YWRDbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKm1fcHJvY2Vzc1Bv
b2wsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKKyAgICBpZiAo
IW1fZGF0YVN0b3JlKSB7CisgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHktPmxp
c3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2RhdGFT
dG9yZS0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Km1fZGF0YVN0b3JlLCAqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5nZXQoKSk7
CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkKQEAgLTE0Niw3ICsxNTUsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVx
dWVzdChSZXNvCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVxdWVzdCgqbV9wcm9j
ZXNzUG9vbCwgKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCkgeworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLndpbGxT
ZW5kUmVxdWVzdCgqbV9kYXRhU3RvcmUsICp0aGlzLCBXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCks
IHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWlu
LmFwcGVuZChuZXdSZXF1ZXN0LnVybCgpKTsKIAogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMt
Pm1fcHJvY2Vzc1Bvb2wpCkBAIC0xNjIsMjYgKzE3MSwyNiBAQCB2b2lkIERvd25sb2FkUHJveHk6
OndpbGxTZW5kUmVxdWVzdChSZXNvCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmICghbV9w
cm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqbV9w
cm9jZXNzUG9vbCwgKnRoaXMsIHJlc3BvbnNlKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxvYWRD
bGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKm1fZGF0YVN0b3JlLCAqdGhpcywgcmVzcG9uc2Up
OwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0
aCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRS
ZWNlaXZlRGF0YSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGxlbmd0aCk7CisgICAgbV9kYXRhU3Rv
cmUtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKm1fZGF0YVN0b3JlLCAqdGhpcywg
bGVuZ3RoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCisgICAgaWYg
KCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzc1Bvb2wt
PmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
Km1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG93bmxvYWRJRCA9IGRvd25sb2FkSURdIChBbGxvd092
ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSB7CisgICAgbV9kYXRh
U3RvcmUtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoKm1fZGF0YVN0b3JlLCAqdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvd25sb2FkSUQgPSBkb3dubG9hZElEXSAoQWxs
b3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgewogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTE5NiwxOCArMjA1LDE4IEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXQKIAogdm9pZCBEb3dubG9hZFBy
b3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgaWYg
KCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRp
b24oKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBwYXRoKTsKKyAgICBtX2RhdGFTdG9yZS0+ZG93bmxv
YWRDbGllbnQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9kYXRhU3RvcmUsICp0aGlzLCBwYXRo
KTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5pc2goKQogewotICAgIGlmICghbV9w
cm9jZXNzUG9vbCkKKyAgICBpZiAoIW1fZGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZpbmlzaCgqbV9wcm9jZXNzUG9v
bCwgKnRoaXMpOworICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZEZpbmlzaCgq
bV9kYXRhU3RvcmUsICp0aGlzKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9h
ZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3du
bG9hZEZpbmlzaGVkKCp0aGlzKTsKQEAgLTIyMywxMiArMjMyLDEyIEBAIHN0YXRpYyBSZWZQdHI8
QVBJOjpEYXRhPiBjcmVhdGVEYXRhKGNvbnMKIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQorICAgIGlmICghbV9kYXRhU3Rv
cmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVz
dW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZhaWwo
Km1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBlcnJvcik7CisgICAgbV9kYXRhU3RvcmUtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkRmFpbCgqbV9kYXRhU3RvcmUsICp0aGlzLCBlcnJvcik7CiAKICAgICAvLyBU
aGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAg
ICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CkBAIC0yMzgsNyAr
MjQ3LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwoY29uc3QgSVBDOgogewogICAg
IG1fcmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZENsaWVudCgpLmRpZENhbmNlbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOwor
ICAgIG1fZGF0YVN0b3JlLT5kb3dubG9hZENsaWVudCgpLmRpZENhbmNlbCgqbV9kYXRhU3RvcmUs
ICp0aGlzKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTAg
KzUzLDExIEBAIGNsYXNzIERvd25sb2FkSUQ7CiBjbGFzcyBEb3dubG9hZFByb3h5TWFwOwogY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFzcyBXZWJzaXRlRGF0
YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6RG93bmxvYWQ+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2Fk
UHJveHlNYXAmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOworICAgIHN0YXRpYyBSZWY8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlN
YXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB+RG93bmxvYWRQcm94eSgpOwogCiAgICAgRG93bmxvYWRJ
RCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZElEOyB9CkBAIC05OSw3ICsx
MDAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9h
ZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQ
cm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwpAQCAtMTE5LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZFBy
b3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQb29sPiBt
X3Byb2Nlc3NQb29sOworICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsK
ICAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IG1f
cmVzdW1lRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsOSArODAsOSBAQCB2b2lkIERvd25sb2FkUHJveHlNYXA6OmFwcGxpY2F0
aW9uV2lsbEVuCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpLCAwKTsKIH0KIAotRG93bmxvYWRQ
cm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQorRG93bmxvYWRQcm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQ
cm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7
Ci0gICAgYXV0byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBw
cm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBE
b3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291
cmNlUmVxdWVzdCk7CiAgICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25sb2Fk
SUQoKSwgZG93bmxvYWRQcm94eS5jb3B5UmVmKCkpOwogCiAgICAgUkVMRUFTRV9MT0coTG9hZGlu
ZywgIkFkZGluZyBkb3dubG9hZCAlIiBQUkl1NjQgIiB0byBVSVByb2Nlc3MgRG93bmxvYWRQcm94
eU1hcCIsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBA
IGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3Mg
UHJvY2Vzc0Fzc2VydGlvbjsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgRG93bmxvYWRQcm94eU1hcCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxEb3dubG9hZFByb3h5TWFwPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01
NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5TWFwKE5ldHdv
cmtQcm9jZXNzUHJveHkmKTsKICAgICB+RG93bmxvYWRQcm94eU1hcCgpOwogCi0gICAgRG93bmxv
YWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2Fk
UHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJv
eHkmKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRzLmlz
RW1wdHkoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVk
ZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5o
IgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtMTc2LDEyICsx
NzcsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW50aGVzaXplQXBwSQogICAgIH0K
IH0KIAotRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQ
cm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK0Rvd25sb2FkUHJv
eHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkK
IHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9kb3dubG9hZFByb3h5
TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKLSAgICByZXR1cm4g
bV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJl
c291cmNlUmVxdWVzdCk7CisgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93
bmxvYWRQcm94eShkYXRhU3RvcmUsIG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCi0gICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93
bmxvYWRQcm94eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9h
ZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYp
OwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJl
dmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTMgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNs
dWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgorI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKICNpbmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzLmgiCkBAIC00OCw2ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVFRQ
SGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgpAQCAtMTA3LDYgKzExMCw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVE
YXRhU3RvcmUoUmVmPFcKICAgICAsIG1fYXV0aGVudGljYXRvck1hbmFnZXIobWFrZVVuaXF1ZVJl
ZjxBdXRoZW50aWNhdG9yTWFuYWdlcj4oKSkKICNlbmRpZgogICAgICwgbV9jbGllbnQobWFrZVVu
aXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVu
dChtYWtlVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCiAjaWYgSEFWRShBUFBfU1NP
KQogICAgICwgbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvcihtYWtlVW5pcXVlUmVmPFNPQXV0
aG9yaXphdGlvbkNvb3JkaW5hdG9yPigpKQogI2VuZGlmCkBAIC0xMjgsNiArMTMyLDcgQEAgV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShQQUw6OgogICAgICwgbV9hdXRoZW50aWNh
dG9yTWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigpKQogI2VuZGlm
CiAgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KCkp
CisgICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSkKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgLCBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5h
dG9yKG1ha2VVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+KCkpCiAjZW5kaWYK
QEAgLTIwNzQsNiArMjA3OSw4NSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpZENyZWF0ZU5l
dHdvcmtQCiB7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0RG93bmxvYWRDbGllbnQo
VW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fZG93bmxv
YWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK0Rvd25sb2FkUHJveHkqIFdlYnNpdGVE
YXRhU3RvcmU6OmRvd25sb2FkKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgV2ViUGFnZVBy
b3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQoreworICAgIGlmICghcHJvY2Vz
c1Bvb2wpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFBy
b2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbCA9IHBvb2w7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb2Nlc3NQb29sKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVE
b3dubG9hZFByb3h5KCpwcm9jZXNzUG9vbCwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UpOworICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1Bh
Z2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKwor
ICAgIGlmIChpbml0aWF0aW5nUGFnZSkKKyAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURv
d25sb2FkUmVxdWVzdChkb3dubG9hZFByb3h5KTsKKworICAgIGlmIChwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgdXBkYXRl
ZFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIC8vIFJlcXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB3aWxsIGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJMIG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0
LgorICAgICAgICAvLyBXZSBzZXQgdGhlIHZhbHVlIHRvIHRvcCBsZXZlbCBkb2N1bWVudCdzIFVS
TC4KKyAgICAgICAgaWYgKGluaXRpYXRpbmdQYWdlKSB7CisgICAgICAgICAgICBVUkwgaW5pdGlh
dGluZ1BhZ2VVUkwgPSBVUkwgeyBVUkwgeyB9LCBpbml0aWF0aW5nUGFnZS0+cGFnZUxvYWRTdGF0
ZSgpLnVybCgpIH07CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhpbml0aWF0aW5nUGFnZVVSTCk7CisgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5z
ZXRJc1NhbWVTaXRlKFdlYkNvcmU6OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKGluaXRpYXRp
bmdQYWdlVVJMLCByZXF1ZXN0LnVybCgpKSk7CisgICAgICAgICAgICBpZiAoIXVwZGF0ZWRSZXF1
ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6VXNlckFnZW50
KSkKKyAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KGluaXRp
YXRpbmdQYWdlLT51c2VyQWdlbnQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1
cGRhdGVkUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoKSk7CisgICAgICAgICAg
ICB1cGRhdGVkUmVxdWVzdC5zZXRJc1NhbWVTaXRlKGZhbHNlKTsKKyAgICAgICAgICAgIGlmICgh
dXBkYXRlZFJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1l
OjpVc2VyQWdlbnQpKQorICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKKyAgICAgICAgfQorICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOworICAgICAgICBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRv
d25sb2FkUmVxdWVzdChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCB1cGRh
dGVkUmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpLCAwKTsKKyAgICAgICAgcmV0dXJuICZkb3du
bG9hZFByb3h5OworICAgIH0KKworICAgIHJldHVybiAmZG93bmxvYWRQcm94eTsKK30KKworRG93
bmxvYWRQcm94eSogV2Vic2l0ZURhdGFTdG9yZTo6cmVzdW1lRG93bmxvYWQoV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6
OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAoIXByb2Nl
c3NQb29sKSB7CisgICAgICAgIGZvciAoYXV0byYgcG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQ
cm9jZXNzUG9vbHMoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wgPSBwb29sOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwcm9jZXNzUG9vbCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRl
RG93bmxvYWRQcm94eSgqcHJvY2Vzc1Bvb2wsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCgpLCBp
bml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGlu
Z1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOworCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CisgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICBpZiAocHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChzZXNzaW9u
SUQsIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2Uo
KSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgICAgICByZXR1cm4gJmRv
d25sb2FkUHJveHk7CisgICAgfQorCisgICAgcmV0dXJuICZkb3dubG9hZFByb3h5OworfQorCitE
b3dubG9hZFByb3h5JiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSkKK3sKKyAgICBhdXRvJiBkb3du
bG9hZFByb3h5ID0gcHJvY2Vzc1Bvb2wuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5jcmVhdGVEb3du
bG9hZFByb3h5KCp0aGlzLCByZXF1ZXN0KTsKKyAgICBkb3dubG9hZFByb3h5LnNldE9yaWdpbmF0
aW5nUGFnZShvcmlnaW5hdGluZ1BhZ2UpOworICAgIHJldHVybiBkb3dubG9hZFByb3h5OworfQor
CiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVyKQogewogICAgIGlmIChtX25ldHdvcmtpbmdIYXNC
ZWd1bikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsOCBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xhc3MgRGF0
YTsKK2NsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogfQogCkBA
IC02OSw2ICs3MSw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOworY2xhc3MgRG93bmxvYWRQcm94eTsKIGNs
YXNzIFNlY0tleVByb3h5U3RvcmU7CiBjbGFzcyBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTsKIGNs
YXNzIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yOwpAQCAtMjU5LDYgKzI2MiwxMSBAQCBwdWJs
aWM6CiAgICAgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGll
bnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNsaWVudD4mJiBjbGllbnQpIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KIAorICAg
IEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9kb3dubG9h
ZENsaWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoVW5pcXVlUmVmPEFQ
STo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2Fk
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7CisgICAgRG93bmxvYWRQcm94eSogZG93bmxv
YWQoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUgPSB7IH0pOworICAgIERvd25sb2FkUHJveHkqIHJlc3VtZURvd25sb2FkKFdlYlBy
b2Nlc3NQb29sKiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIEFQSTo6SFRUUENvb2tpZVN0
b3JlJiBjb29raWVTdG9yZSgpOwogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKQEAg
LTM2MCw2ICszNjgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBVbmlxdWVSZWY8V2Vic2l0
ZURhdGFTdG9yZUNsaWVudD4gbV9jbGllbnQ7CisgICAgVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRD
bGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAKICAgICBSZWZQdHI8QVBJOjpIVFRQQ29va2llU3Rv
cmU+IG1fY29va2llU3RvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEz
OCw2ICsxMTM4LDcgQEAKIAkJNUNFOTEyMTIyMjkzQzI3ODAwNUJFQzc4IC8qIEF1eGlsaWFyeVBy
b2Nlc3NNYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAg
Ki87IH07CiAJCTVDRTkxMjEzMjI5M0MyNzkwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFp
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5
MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9Owog
CQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwQjIyOTNDMUUwMDA1QkVDNzggLyog
V0tNYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNUNFQUJBMzMyMzM2MEQzOTAwNzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2Fk
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0VBQkEzMjIzMzYwQ0VDMDA3OTc3OTcgLyogV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxvYWRDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk2MzEwOEY5NjFGOTY3MTlDMDBBMERCODQgLyog
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9u
TWFuaWZlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
MzEwOEY5ODFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFs
LmggKi87IH07CkBAIC0zNjk0LDYgKzM2OTUsNyBAQAogCQk1Q0U5MTIwRjIyOTNDMjVGMDA1QkVD
NzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBwYXRoID0gQ29jb2EvQXV4aWxp
YXJ5UHJvY2Vzc01haW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0VBQkEy
QTIzMzMyNDc3MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUdsb2Jh
bFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2Fj
eUdsb2JhbFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNFQUJB
MzIyMzM2MENFQzAwNzk3Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZURvd25s
b2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRkVDQjAzMUUxRUQx
QzgwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2
IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
QmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjE3QTUy
RDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtODEyNyw2ICs4MTI5LDcgQEAKIAkJ
CQk3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggKi8sCiAJCQkJ
NUM2RTdEODcyMzIzNjFFNzAwQzIxNTlEIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b25SZWYuY3BwICovLAogCQkJCTVDNkU3RDg2MjMyMzYxRTcwMEMyMTU5RCAvKiBXS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmggKi8sCisJCQkJNUNFQUJBMzIyMzM2MENFQzAwNzk3
Nzk3IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMUE1NzEw
OUMxQUJBMDAyNzAwMkZBQkJFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgKi8sCiAJCQkJ
MUE1NzEwOUQxQUJBMDAyNzAwMkZBQkJFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZVJlZi5oICovLAog
CQkJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi8s
CkBAIC0xMDQyMSw2ICsxMDQyNCw3IEBACiAJCQkJMUFBNjU0RDExQjE0RjcxNDAwQkYxRDNFIC8q
IFdLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NUE4RDJD
ODE4N0NDRkFCMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzZFN0Q4ODIzMjM2MjA1MDBDMjE1OUQgLyogV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNFQUJBMzMyMzM2MEQzOTAwNzk3Nzk3
IC8qIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3NUE4RDJENjE4N0QxQzBFMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4NjdBMUM3RjdCQTYwMDY5QUM0RiAvKiBXS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MTA5RjFBQkEwMDI3
MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1MDI1NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQw
IEBACisyMDE5LTA5LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgTW92ZSBEb3dubG9hZENsaWVudCBmcm9tIFdlYlByb2Nlc3NQb29sIHRv
IFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjA4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0
aW5hdGlvbkNyYXNoLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldERv
d25sb2FkQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6c2V0Q29udGV4dERvd25sb2FkQ2xpZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWlu
aW5nU2xhc2hlcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
b250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAoZG93bmxvYWRUZXN0KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdX
aXRoRG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHRlYXJEb3duXSk6CisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0RG93bmxvYWQ6ZXhwZWN0ZWRMZW5ndGg6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06CisgICAg
ICAgIChydW5UZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0
aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
RmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbCk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisK
IDIwMTktMDktMjMgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAg
ICAgIHJlc3VsdHMud2Via2l0Lm9yZzogQ29sbGFwc2UgcmVzdWx0cyB3aXRoIHRoZSBzYW1lIHZl
cnNpb24gbmFtZSAoRm9sbG93LXVwIGZpeCkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbkNyYXNoLmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWQu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNDAsMjIgKzQxLDIzIEBAIHN0YXRpYyB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3QKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9h
ZChsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLU3RyaW5nUmVmLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiwgYm9vbCosIGNvbnN0IHZvaWQq
KQogewogICAgIGRpZERlY2lkZURlc3RpbmF0aW9uID0gdHJ1ZTsKICAgICBXS0Rvd25sb2FkQ2Fu
Y2VsKGRvd25sb2FkKTsKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0
L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCIpLmxlYWtSZWYoKTsKIH0KIAotc3RhdGlj
IHZvaWQgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQorc3Rh
dGljIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgV0tDb250
ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlRG93bmxv
YWRDbGllbnRWMCBjbGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQp
KTsKIAogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOwogCi0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCwg
JmNsaWVudC5iYXNlKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlID0gV0tQ
YWdlQ29uZmlndXJhdGlvbkdldFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1BhZ2VDb3B5UGFn
ZUNvbmZpZ3VyYXRpb24ocGFnZSkpLmdldCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRE
b3dubG9hZENsaWVudChkYXRhU3RvcmUsICZjbGllbnQuYmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC03Miw5ICs3NCw5IEBAIHN0
YXRpYyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmUKIFRFU1QoV2ViS2l0LCBEb3du
bG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihu
dWxscHRyKSk7Ci0gICAgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0RG93
bmxvYWRDbGllbnQod2ViVmlldy5wYWdlKCkpOwogICAgIHNldFBhZ2VQb2xpY3lDbGllbnQod2Vi
Vmlldy5wYWdlKCkpOwogCiAgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGlzIGZpbGVuYW1lIHdhcyBz
cGVjaWFsbHkgY2hvc2VuIHRvIHRyaWdnZXIgdGhlIGNyYXNoIGNvbmRpdGlvbnMgaW4KSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2Fk
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9D
b250ZXh0TWVudURvd25sb2FkLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VDb250ZXh0TWVu
dUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lCiAgICAgfQogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNv
bnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKIHsK
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQg
bWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTC4K
ICAgICBFWFBFQ1RfV0tfU1RSRVEoImRvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2Vz
dGVkRmlsZW5hbWUpOwpAQCAtODIsMTQgKzgzLDE2IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVu
dURvd25sb2FkSFRNTERvd24KIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAK
LSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRh
U3RvcmVEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6
ZW9mKGNsaWVudCkpOwogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNv
bnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91
cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVy
KFV0aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJW
aWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CisgICAgCisgICAgV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZSA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0
YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcucGFnZSgp
KSkuZ2V0KCkpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2FkQ2xpZW50KGRhdGFT
dG9yZSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2Fk
ZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGll
bnQpKTsKQEAgLTExNCw3ICsxMTcsNyBAQCBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9h
ZEhUTUxEb3duCiAgICAgVXRpbDo6cnVuKCZkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTsK
IH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQor
c3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
Q29udGFpbmluZ1NsYXNoZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQq
KQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVk
IGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBI
VE1MLCBhZnRlciBzYW5pdGl6YXRpb24uCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90ZXN0
Ml9kb3dubG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTEy
OSwxNSArMTMyLDE3IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd24K
IHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHREb3du
bG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb3dubG9hZENsaWVu
dFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogICAg
IGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lQ29udGFpbmluZ1NsYXNoZXM7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29u
dGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3Vw
UmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIo
VXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAorICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmUgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9y
ZShhZG9wdFdLKFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbih3ZWJWaWV3LnBhZ2UoKSkpLmdl
dCgpKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXREb3dubG9hZENsaWVudChkYXRhU3RvcmUs
ICZjbGllbnQuYmFzZSk7CisKICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xp
ZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7
CiAgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5n
Lm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVj
dEludGVyZmFjZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+
CkBAIC0xNzYsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZG93bmxvYWRUZXN0KERlY2lzaW9uIGRl
Y2lzaQogCiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25XaXRoQ29u
dGVudEZpbHRlclNldHRpbmdzKGRlY2lzaW9uLCBkZWNpc2lvblBvaW50KTsKICAgICAgICAgYXV0
byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRGaWx0ZXJpbmdEb3dubG9hZERl
bGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9v
bF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgICAg
IFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpk
b3dubG9hZERlbGVnYXRlLmdldCgpXTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tCZWNvbWVEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCld
OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CkBAIC0x
MjEsMjMgKzEyMiwyMyBAQCAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQg
CiAKIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkRGVsZWdhdGUpCiB7Ci0gICAgUmV0YWluUHRy
PFdLUHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIGluaXRdKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtXS1dlYnNp
dGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgRG93bmxvYWREZWxlZ2F0
ZSAqZG93bmxvYWREZWxlZ2F0ZSA9IFtbRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0g
ICAgW3Byb2Nlc3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGVdOwor
ICAgIFtkYXRhU3RvcmUgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07CiAK
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkRGVsZWdh
dGUsIFtwcm9jZXNzUG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0pOworICAgICAgICBFWFBFQ1RfRVEo
ZG93bmxvYWREZWxlZ2F0ZSwgW2RhdGFTdG9yZSBfZG93bmxvYWREZWxlZ2F0ZV0pOwogICAgIH0K
IAogICAgIFtkb3dubG9hZERlbGVnYXRlIHJlbGVhc2VdOwotICAgIEVYUEVDVF9OVUxMKFtwcm9j
ZXNzUG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0pOworICAgIEVYUEVDVF9OVUxMKFtkYXRhU3RvcmUg
X2Rvd25sb2FkRGVsZWdhdGVdKTsKIH0KIAogc3RhdGljIHZvaWQgcnVuVGVzdChpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25EZWxlZ2F0ZSwgaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IGRvd25sb2FkRGVsZWdhdGUsIE5TVVJMICp1cmwpCiB7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlXTsKLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlXTsK
KyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3du
bG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGVdOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAg
ICAgaGFzUmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNlOwpAQCAtMjc4LDcgKzI3OSw3IEBAIFRFU1Qo
X1dLRG93bmxvYWQsIE9yaWdpbmF0aW5nV2ViVmlldykKICAgICAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAgICAgICAgIGRvd25sb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbT3JpZ2luYXRpbmdXZWJWaWV3RG93bmxvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICAgICAgW1tbd2ViVmll
dyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vi
c2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQo
KV07CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6c291cmNlVVJMXV07CiAgICAgfQogCkBAIC0zNDgsNyArMzQ5LDcgQEAgVEVTVChfV0tE
b3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0T3JpZ2luYQogewogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6W1tEb3dubG9h
ZFJlcXVlc3RPcmlnaW5hbFVSTE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF1dOwotICAg
IFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVn
YXRlOltbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF1dOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJh
dGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6W1tEb3dubG9hZFJl
cXVlc3RPcmlnaW5hbFVSTERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxV
Ukw6c291cmNlVVJMXV07CiAKICAgICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNl
OwogICAgIE5TVVJMICpjb250ZW50VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtNTA4LDcgKzUwOSw3IEBAIFRFU1QoX1dLRG93
bmxvYWQsIFJlZGlyZWN0ZWREb3dubG9hZCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0g
cHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCld
OworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERv
d25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBEbyAyIGxv
YWRzIGluIHRoZSBzYW1lIHZpZXcgdG8gbWFrZSBzdXJlIHRoZSByZWRpcmVjdCBjaGFpbiBpcyBw
cm9wZXJseSBjbGVhcmVkIGJldHdlZW4gbG9hZHMuCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGRpdj5GaXJzdCBsb2FkPC9kaXY+Il07CkBAIC01MzcsNyArNTM4
LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZExvYWRDb252ZXJ0ZQogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJh
dGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUu
Z2V0KCldOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gd2Vic2l0ZURhdGFTdG9yZV0g
X3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBleHBl
Y3RlZE9yaWdpbmF0aW5nV2ViVmlldyA9IHdlYlZpZXcuZ2V0KCk7CiAgICAgZXhwZWN0ZWRVc2Vy
SW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKQEAgLTU2MCw3ICs1NjEsNyBAQCBURVNUKF9XS0Rvd25s
b2FkLCBSZWRpcmVjdGVkU3ViZnJhbWVMb2FkCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0g
X3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW1tbd2Vi
VmlldyBjb25maWd1cmF0aW9uXSB3ZWJzaXRlRGF0YVN0b3JlXSBfc2V0RG93bmxvYWREZWxlZ2F0
ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJW
aWV3ID0gd2ViVmlldy5nZXQoKTsKICAgICBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZh
bHNlOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkQ2FuY2Vs
ZWRXaGlsZUQKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBb
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0
ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
IHdlYnNpdGVEYXRhU3RvcmVdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUu
Z2V0KCldOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgZG93bmxvYWRIYXNEZWNpZGVkRGVz
dGluYXRpb24gPSBmYWxzZTsKQEAgLTcxNSw3ICs3MTYsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBE
b3dubG9hZEF0dHJpYnV0ZURvZXNOCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3du
bG9hZEF0dHJpYnV0ZVRlc3REZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9k
b3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgY29uZmlndXJh
dGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OwogCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8YSBpZD0nbGluaycgaHJlZj0nZGF0
YTosdGVzdCcgZG93bmxvYWQ+Q2xpY2sgbWUhPC9hPiIgYmFzZVVSTDpuaWxdOwogICAgIFtkZWxl
Z2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC03MzAsNyArNzMxLDcgQEAgVEVT
VChfV0tEb3dubG9hZCwgU3RhcnREb3dubG9hZFdpdGhEb3dubAogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbRG93bmxvYWRBdHRyaWJ1dGVUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBjb25maWd1cmF0aW9u
XS5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGEgaWQ9
J2xpbmsnIGhyZWY9J2RhdGE6LHRlc3QnIGRvd25sb2FkPkNsaWNrIG1lITwvYT4iIGJhc2VVUkw6
bmlsXTsKICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtNzcw
LDcgKzc3MSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIENyYXNoQWZ0ZXJEb3dubG9hZERpZEYKICAg
ICAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICAg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KV07CiAgICAgICAgIHByb2Nlc3NQb29sID0gW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vz
c1Bvb2w7Ci0gICAgICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3du
bG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25s
b2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6c291cmNlVVJMXV07CiAKICAgICAgICAgZGlkRG93bmxvYWRT
dGFydCA9IGZhbHNlOwpAQCAtODU1LDcgKzg1Niw3IEBAIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXdXaXRoRG93bmxvYWQKICAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bv
b2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0
YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICBy
ZXR1cm4gd2ViVmlldzsKIH0KIApAQCAtOTczLDcgKzk3NCw3IEBAIFRFU1QoV2ViS2l0LCBEb3du
bG9hZE5hdmlnYXRpb25SZXNwb25zZUYKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3REb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07Ci0gICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVs
ZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJz
aXRlRGF0YVN0b3JlLl9kb3dubG9hZERlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBO
U1VSTCAqZmlyc3RVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmls
ZS9zaW1wbGUuaHRtbCJdOwogICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93XTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0JKHJldmlz
aW9uIDI1MDI1NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWRQcm9ncmVzcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25s
b2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oPgpA
QCAtMTY3LDcgKzE2OCw3IEBAIC0gKHZvaWQpc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOihEb3du
bG8KIC0gKHZvaWQpdGVhckRvd24KIHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIG1f
d2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZS5fZG93bmxvYWREZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgICAgIFttX3dlYlZp
ZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgIG1fd2ViVmlldyA9IG51bGxw
dHI7CiAgICAgfQpAQCAtMjM4LDcgKzIzOSw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93
bmxvYWRTdGFydFR5cGUKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIG1fd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgbV93ZWJWaWV3LmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IHNlbGY7Ci0gICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJv
Y2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOworICAgIG1fd2ViVmlldy5nZXQoKS5j
b25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOwog
CiAgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZmlsZSJdXSk7CiAKQEAgLTI0OCw3
ICsyNDksNyBAQCAtICh2b2lkKXN0YXJ0RG93bmxvYWQ6KERvd25sb2FkU3RhcnRUeXBlCiAgICAg
ICAgIFttX3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0SW5Qcm9jZXNzUG9vbDoKLSAgICAg
ICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9kb3dubG9hZFVS
TFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSBvcmlnaW5hdGluZ1dlYlZpZXc6bnVsbHB0cl07CisgICAg
ICAgIFttX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9kb3du
bG9hZFVSTFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSBvcmlnaW5hdGluZ1dlYlZpZXc6bnVsbHB0cl07
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0JKHJldmlzaW9uIDI1MDI1NCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oPgpAQCAtMjMyLDEyICsyMzMsOSBA
QCAtICh2b2lkKXZlcmlmeURvd25sb2FkCiAKIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBy
dW5UZXN0KFF1aWNrTG9va0RlbGVnYXRlICpkZWxlZ2F0ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
LCBCT09MIHNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcpCiB7Ci0gICAgYXV0byBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSk7Ci0gICAgW3By
b2Nlc3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKLQogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gX3NldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3OnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmddOwotICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3NldERvd25sb2FkRGVsZWdhdGU6ZGVs
ZWdhdGVdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjUw
MjU0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyMiw4ICs3MjIsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVX
ZWJWaWV3V2l0aE9wCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCht
X21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIAotICAg
IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjEgZG93bmxvYWRDbGllbnQgPSB7Ci0gICAgICAgIHsg
MSwgdGhpcyB9LAorICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvd25sb2FkQ2xpZW50VjAgZG93bmxv
YWRDbGllbnQgPSB7CisgICAgICAgIHsgMCwgdGhpcyB9LAogICAgICAgICBkb3dubG9hZERpZFN0
YXJ0LAogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKICAg
ICAgICAgMCwgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlCkBAIC03MzcsOCArNzM3LDggQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgICAgICAwLCAvLyBwcm9jZXNz
RGlkQ3Jhc2g7CiAgICAgICAgIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwK
ICAgICB9OwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQoKSwgJmRvd25s
b2FkQ2xpZW50LmJhc2UpOwotICAgIAorICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldERvd25sb2Fk
Q2xpZW50KFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksICZkb3dubG9hZENsaWVu
dC5iYXNlKTsKKwogICAgIC8vIHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8K
ICAgICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0g
ewogICAgICAgICB7IDEsIHRoaXMgfSwKQEAgLTIzOTAsNDQgKzIzOTAsNDYgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIAogLy8gV0tDb250ZXh0RG93bmxv
YWRDbGllbnQKIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChjb250ZXh0LCBkb3dubG9h
ZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQoZGF0YVN0b3JlLCBkb3dubG9hZCk7CiB9CiAg
ICAgCi1XS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxs
b3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb250ZXh0LCBkb3dubG9hZCwg
ZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENv
bnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRhdGFTdG9yZSwgZG93bmxvYWQsIGZpbGVuYW1lLCBh
bGxvd092ZXJ3cml0ZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmlu
aXNoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2go
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2goY29u
dGV4dCwgZG93bmxvYWQpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChkYXRhU3RvcmUsIGRv
d25sb2FkKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9y
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRGYWlsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRvd25sb2FkRGlkRmFpbChjb250ZXh0LCBkb3dubG9hZCwgZXJyb3IpOworICAgIHN0YXRp
Y19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5k
b3dubG9hZERpZEZhaWwoZGF0YVN0b3JlLCBkb3dubG9hZCwgZXJyb3IpOwogfQogCi12b2lkIFRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0g
ICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRvd25sb2FkRGlkQ2FuY2VsKGNvbnRleHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNf
Y2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93
bmxvYWREaWRDYW5jZWwoZGF0YVN0b3JlLCBkb3dubG9hZCk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGNvbnRleHQs
IGRvd25sb2FkLCB1cmwpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKGRhdGFTdG9yZSwgZG93bmxvYWQsIHVybCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7CisgICAg
QVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsK
ICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgc3RhcnRlZC5cbiIpOwogfQogCi1XS1N0
cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwg
Ym9vbComIGFsbG93T3ZlcndyaXRlKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmUsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxs
b3dPdmVyd3JpdGUpCiB7CisgICAgQVNTRVJUKGRhdGFTdG9yZSA9PSBUZXN0Q29udHJvbGxlcjo6
d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSB0b1dU
RlN0cmluZyhmaWxlbmFtZSk7CiAKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNr
cykgewpAQCAtMjQ1MCwyMSArMjQ1MiwyNCBAQCBXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6
ZGVjaWRlRGVzdGluCiAgICAgcmV0dXJuIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3Vn
Z2VzdGVkRmlsZW5hbWUpLmxlYWtSZWYoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93
bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZSwgV0tEb3dubG9hZFJlZikKIHsKKyAgICBBU1NFUlQoZGF0YVN0b3JlID09IFRlc3RDb250cm9s
bGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2Fs
bGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9h
ZCBjb21wbGV0ZWQuXG4iKTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9h
ZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVy
bCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgV0tEb3dubG9hZFJlZiwgV0tV
UkxSZWYgdXJsKQogeworICAgIEFTU0VSVChkYXRhU3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6Ondl
YnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3Mp
CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93
bmxvYWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29w
eVN0cmluZyh1cmwpKSksICJcIi5cbiIpKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93
bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnJv
cikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQogeworICAg
IEFTU0VSVChkYXRhU3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7
CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpIHsKICAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgZmFpbGVkLlxuIl9zKTsKIApAQCAt
MjQ3Nyw4ICsyNDgyLDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdL
QwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBXS0Rvd25sb2FkUmVmKQogeworICAgIEFTU0VSVChk
YXRhU3RvcmUgPT0gVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgaWYg
KG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRp
b24tPm91dHB1dFRleHQoIkRvd25sb2FkIGNhbmNlbGxlZC5cbiIpOwogICAgIG1fY3VycmVudElu
dm9jYXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjUwMjU0KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsMTggKzQwNSwx
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdL
TmF2aWdhdGlvblJlZik7CiAKICAgICAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudAotICAgIHN0
YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBj
b25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZik7Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdS
ZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKLSAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29s
KiYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdL
Q29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxv
YWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgdm9p
ZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVm
LCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENh
bmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lk
IGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3Rh
dGljIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiwgV0tVUkxSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBk
b3dubG9hZERpZFN0YXJ0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZik7Cisg
ICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmls
ZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKyAg
ICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBi
b29sKiYgYWxsb3dPdmVyd3JpdGUpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNo
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAg
IHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2Fk
UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBk
b3dubG9hZERpZEZhaWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vy
cm9yUmVmKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS1dlYnNpdGVEYXRh
U3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2Fk
RGlkQ2FuY2VsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tEb3dubG9hZFJlZik7CisgICAgc3Rh
dGljIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS1dlYnNpdGVE
YXRhU3RvcmVSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7CisgICAg
dm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYpOwogICAgIAogICAgIHN0YXRpYyB2b2lk
IHByb2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAg
IHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379409</attachid>
            <date>2019-09-23 17:11:43 -0700</date>
            <delta_ts>2019-09-23 17:14:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190923171142.patch</filename>
            <type>text/plain</type>
            <size>58904</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAyNjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE5LTA5LTIzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVxdWlyZSBhIFdl
YnNpdGVEYXRhU3RvcmUgd2hlbiBjcmVhdGluZyBvciByZXN1bWluZyBkb3dubG9hZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjA4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBi
ZWhhdmlvciwgYnV0IEknbGwgaGF2ZSB0byBtb3ZlIFNhZmFyaSB0byB0aGUgbmV3IFNQSS4KKyAg
ICAgICAgVGhpcyBtYWtlcyBpdCBzbyB0aGVyZSBhcmUgbm8gY2FzZXMgd2hlcmUgd2UgZ3Vlc3Mg
d2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgc2Vzc2lvbiwKKyAgICAgICAgYW5kIGl0IGFsbG93
cyBkb3dubG9hZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5IG9uY2UgdGhlcmUgaXMgYSBOZXR3b3Jr
UHJvY2VzcyBzaW5nbGV0b24uCisgICAgICAgIFJlbW92aW5nIHRoZSB1bnVzZWQgV2ViUHJvY2Vz
c1Bvb2wmIGluIHRoZSBjYWxsYmFja3Mgd2lsbCBhbGxvdyB1cyB0byBldmVudHVhbGx5IGhhdmUK
KyAgICAgICAgZG93bmxvYWRzIG9ubHkgYXNzb2NpYXRlZCB3aXRoIGEgV2Vic2l0ZURhdGFTdG9y
ZSBhbmQgbm90IGEgV2ViUHJvY2Vzc1Bvb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURl
c3RpbmF0aW9uKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6Cisg
ICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpw
cm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dERvd25s
b2FkVVJMUmVxdWVzdCk6CisgICAgICAgIChXS0NvbnRleHRSZXN1bWVEb3dubG9hZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0
RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRV
UkxSZXF1ZXN0Om9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNpdGVEYXRhU3Rv
cmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXN1
bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5hdGluZ1dlYlZp
ZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dFN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFBy
b3h5Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaDoKKwogMjAxOS0wOS0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBtYWNPUzogPGRhdGFsaXN0PiBkcm9wZG93biBzaGFkb3cgaXMgY3Jv
cHBlZCwgbG9va3Mgbm90aGluZyBsaWtlIE5TQ29tYm9Cb3gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1Myw3
ICsyOTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAg
IERvd25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFj
dGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCi0g
ICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURv
d25sb2FkUHJveHkobV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMpOworICAg
ICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3du
bG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QsIHRoaXMpOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAgZG93
bmxvYWQuc2V0V2FzVXNlckluaXRpYXRlZChuYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkp
OwogICAgICAgICAgICAgZG93bmxvYWQuc2V0UmVkaXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtl
UmVkaXJlY3RDaGFpbigpKTsKQEAgLTYxMjgsMTYgKzYxMjgsMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdAogICAgIH0KICNlbmRpZgogICAgIGlmIChpdGVtLmFj
dGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spIHsKLSAgICAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9h
Y3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1
dGVJbWFnZVVSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQo
bV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVD
b250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKICAg
ICAgICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7CiAgICAgICAgIGF1dG8mIGhpdFRlc3RS
ZXN1bHQgPSBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERh
dGEoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHRoaXMsIFVS
TChVUkwoKSwgaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0Lmxp
bmtTdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5k
b3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51
Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3Rv
cmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZykgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAg
V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAgICwgbV9kZWZhdWx0
UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxl
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKICAgICAsIG1f
YXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAg
ICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQor
ICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+
KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50PigpKQogICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlz
aXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKQEAgLTM2MCwxMiArMzYw
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdAogICAgICAgICBt
X2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9h
ZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25s
b2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50
KQogewotICAgIGlmICghZG93bmxvYWRDbGllbnQpCi0gICAgICAgIG1fZG93bmxvYWRDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3dubG9hZENsaWVudCk7CisgICAgbV9kb3dubG9h
ZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMjcsMTAgKzEzMjQsMTAgQEAgYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdAogICAgIHJldHVybiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuY29udGFpbnMoZGF0YVN0b3JlLnNlc3Npb25JRCgpKTsKIH0KIAotRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGlu
Z1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSkKK0Rvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkKIHsKLSAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShyZXF1ZXN0LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
ID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBj
cmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UpOwor
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKIAog
ICAgIGlmIChpbml0aWF0aW5nUGFnZSkKICAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURv
d25sb2FkUmVxdWVzdChkb3dubG9hZFByb3h5KTsKQEAgLTEzNTksMTcgKzEzNTYsMTcgQEAgRG93
bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKAogICAgIHJldHVybiBkb3dubG9h
ZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxv
YWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6
cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UpOwotICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgp
IDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBhdXRvJiBkb3dubG9h
ZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gZGF0YVN0
b3JlLnNlc3Npb25JRCgpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAobmV0d29ya1Byb2Nl
c3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25sb2Fk
SUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSwgMCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93
bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9CiAK
QEAgLTE2MjAsOSArMTYxNyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERl
ZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKHRpbWVvdXRJbnRlcnZhbCkpOwogfQogCi1Eb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQorRG93
bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBh
Z2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQogewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBl
bnN1cmVOZXR3b3JrUHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CisgICAg
YXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuY3JlYXRlRG93bmxv
YWRQcm94eShkYXRhU3RvcmUsIHJlcXVlc3QpOwogICAgIGRvd25sb2FkUHJveHkuc2V0T3JpZ2lu
YXRpbmdQYWdlKG9yaWdpbmF0aW5nUGFnZSk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9u
IDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5Lmgi
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVy
aWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNl
c0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTk2LDcgKzk1LDYg
QEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
cjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI7CkBAIC0xNzEsNyArMTY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVj
dGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYpOwotICAgIHZvaWQgc2V0RG93
bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAg
IHZvaWQgc2V0RG93bmxvYWRDbGllbnQoVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYp
OwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRv
bWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
JiYpOwogCkBAIC0yMTksOCArMjE3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNs
YXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0gICAgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7Ci0g
ICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwor
ICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJv
eHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKKyAgICBEb3dubG9hZFByb3h5JiBy
ZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwog
CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRy
PEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApAQCAtMjk0LDggKzI5Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sKTsKICAgICAKICAg
ICAvLyBEb3dubG9hZHMuCi0gICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5n
UGFnZSk7Ci0gICAgQVBJOjpEb3dubG9hZENsaWVudCYgZG93bmxvYWRDbGllbnQoKSB7IHJldHVy
biAqbV9kb3dubG9hZENsaWVudDsgfQorICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2Fk
UHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBBUEk6OkRvd25sb2FkQ2xpZW50
JiBkb3dubG9hZENsaWVudCgpIHsgcmV0dXJuIG1fZG93bmxvYWRDbGllbnQuZ2V0KCk7IH0KIAog
ICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJl
dHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkg
eyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3ICs2MzYsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQg
bV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3du
bG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKKyAgICBVbmlxdWVSZWY8QVBJOjpEb3dubG9h
ZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERv
d25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3Jp
dGUgeyBObywgWWVzIH07CkBAIC01MCwxNyArNTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6
RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248
dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsg
fSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwg
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY4LDEwNyArMTY4LDg3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChX
S0NvbnRleHQKICAgICB9CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSog
d2tDbGllbnQpCit2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewog
ICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICBleHBsaWNpdCBEb3dubG9hZENs
aWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tDb250ZXh0
UmVmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICAgICB7
CiAgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2YXRl
OgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAg
IHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnQoV2ViS2l0
Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIGZpbmFsCisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAorICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJv
eHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRy
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQ
b29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0KICAgICAgICAgICAgIGJvb2wg
YWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBh
ZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdl
YktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9w
dFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5h
bWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6
dG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpKTsKICAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBw
YXRoKSBmaW5hbAorICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZk
b3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiht
X2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBh
dGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2goV2ViS2l0Ojp0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAgICAgICB2
b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwobV9jb250
ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgZGlk
Q2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENh
bmNlbChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJv
Y2Vzc0RpZENyYXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBt
X2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9h
ZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCisgICAgICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIH0KKyAgICAgICAgV0tDb250ZXh0UmVmIG1f
Y29udGV4dDsKICAgICB9OwotCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8
RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50LCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0
U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250
ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjc2LDE0ICsyNTYsMTQgQEAg
dm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udAogICAgIFdlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CiB9
CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKK1dLRG93bmxvYWRSZWYg
V0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiwgV0tVUkxSZXF1ZXN0UmVm
KQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVm
KS0+ZG93bmxvYWQoMCwgV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVz
dCgpKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0
UmVzdW1lRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGF0YVJlZiByZXN1bWVE
YXRhLCBXS1N0cmluZ1JlZiBwYXRoKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3du
bG9hZChXS0NvbnRleHRSZWYsIFdLRGF0YVJlZiwgV0tTdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5yZXN1bWVEb3dubG9h
ZChudWxscHRyLCBXZWJLaXQ6OnRvSW1wbChyZXN1bWVEYXRhKSwgV2ViS2l0Ojp0b1dURlN0cmlu
ZyhwYXRoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdLQ29udGV4dFNldElu
aXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzEx
Niw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBj
b25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAotV0tfRVhQT1JUIFdL
RG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCk7Ci1XS19FWFBPUlQgV0tEb3dubG9hZFJlZiBX
S0NvbnRleHRSZXN1bWVEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEYXRhUmVmIHJl
c3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tD
b250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCBXS0Rvd25sb2Fk
UmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0RhdGFS
ZWYgcmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAog
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZvckluamVj
dGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1R5cGVSZWYgdXNlckRhdGEpOwogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0
LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJzaXRlRGF0
YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2ltcG9y
dCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ2FjaGUuaCIK
QEAgLTM3Myw3ICszNzQsNyBAQCAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2Fk
RGVsCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWRE
ZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8
V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNz
UG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdh
dGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTYxNSwxMiArNjE2LDIyIEBAIC0gKHZvaWQpX3Nl
dENvcmVMb2NhdGlvblByb3ZpZGVyOihpZDxfV0sKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxv
YWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiAoX1dLRG93bmxvYWQgKilfcHJvY2Vz
c1Bvb2wtPmRvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkud3JhcHBlcigpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5n
V2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9j
ZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7CisgICAgcmV0dXJuIG5p
bDsKK30KKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFT
dG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1
cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0
YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKK30KKworLSAoX1dLRG93bmxvYWQg
KilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICop
cGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1
cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJz
aXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgpKTsKIH0KIAogLSAodm9pZClfZ2V0QWN0aXZl
UGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4K
IAogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CiBAY2xhc3Mg
X1dLQXV0b21hdGlvblNlc3Npb247CiBAY2xhc3MgX1dLRG93bmxvYWQ7CiBAY2xhc3MgX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOwpAQCAtODEsOCArODIsMTEgQEAKIAogLSAodm9pZClfcmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OihOU1N0cmluZyAqKXNj
aGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIAotLSAoX1dL
RG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9y
aWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxv
YWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBwYXRoOihOU1N0cmluZyAqKXBhdGggb3Jp
Z2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CistIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9h
ZFVSTFJlcXVlc3Q6d2Vic2l0ZURhdGFTdG9yZTpvcmlnaW5hdGluZ1dlYlZpZXc6IiwgbWFjb3Mo
MTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3du
bG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6
KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6d2Vic2l0ZURhdGFTdG9yZTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzoiLCBtYWNvcygxMC4x
NC40LCBXS19NQUNfVEJBKSwgaW9zKDEyLjIsIFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxv
YWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVE
YXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJv
bURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0
YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBv
bmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQp
X3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAy
NTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9h
ZENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJX
ZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
NDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRT
dGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAg
ICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CiAgICAgICAgIHdlYmtp
dFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQobV93ZWJDb250ZXh0LCBkb3dubG9hZC5nZXQoKSk7
CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKKyAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2Fk
UHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5n
ZXQoKSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJW
aWV3SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9j
ZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxl
ZChkb3dubG9hZC5nZXQoKSkpCkBAIC02OCwxMyArNjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
d2Via2l0RG93bmxvYWRTZXRSZXNwb25zZShkb3dubG9hZC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkp
OwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRf
dCBsZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9h
ZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5n
ZXQoKSwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0
ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRP
ckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3
cml0ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93
T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBh
dGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxl
ZChkb3dubG9hZC5nZXQoKSkpIHsKQEAgLTk5LDE0ICs5OSwxNCBAQCBwcml2YXRlOgogICAgICAg
ICB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgIH0K
IAotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENhbmNlbChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFBy
b3h5KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZEZpbmlzaGVk
KGRvd25sb2FkLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAyNTAyNTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRl
eHREaXNwb3NlKEdPYmoKICAgICBpZiAoIXByaXYtPmNsaWVudHNEZXRhY2hlZCkgewogICAgICAg
ICBwcml2LT5jbGllbnRzRGV0YWNoZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9v
bC0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobnVsbHB0cik7Ci0gICAgICAgIHByaXYtPnByb2Nl
c3NQb29sLT5zZXREb3dubG9hZENsaWVudChudWxscHRyKTsKKyAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVu
dD4oKSk7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCkBAIC0xNjU1LDEwICsxNjU1LDEwIEBA
IFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmUKICAgICByZXR1cm4gZG93
bmxvYWQuZ2V0KCk7CiB9CiAKLVdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnRE
b3dubG9hZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiB1cmksIFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UpCitXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4
dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqLCBXZWJQYWdlUHJv
eHkqKQogewogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFN0cmluZzo6ZnJv
bVVURjgodXJpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25s
b2FkKCZjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+ZG93bmxvYWQoaW5pdGlhdGluZ1BhZ2Us
IHJlcXVlc3QpKTsKKyAgICByZXR1cm4gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5kb3dubG9hZChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSwgaW5pdGlhdGluZ1BhZ2UsIHJlcXVl
c3QpKTsKIH0KIAogdm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoRG93bmxvYWRQ
cm94eSogZG93bmxvYWRQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
MTcgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRv
d25sb2FkQ2xpZW50Ci0gICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJv
eHkmLCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0
ZSwgU3RyaW5nKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
LSAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5h
bDsKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJv
eHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CisgICAg
dm9pZCBkaWRGaW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChE
b3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAg
IHZvaWQgZGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2Fk
UHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChE
b3dubG9hZFByb3h5JikgZmluYWw7CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgdm9p
ZCB0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkocmV2aXNpb24gMjUwMjU0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgRG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xp
ZW50KGlkIDxfV0tEbwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENy
YXNoID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkUHJv
Y2Vzc0RpZENyYXNoOildOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJQ
cm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2Fk
Q2xpZW50OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVT
RShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdE
b3dubG9hZCgpKSB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0
YXJ0KFdlYlByb2Nlc3MKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpICYmIHJlc3BvbnNlLmlzU3VjY2Vzc2Z1bCgpKSB7CkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSgKICAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
dWludDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKQogewogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoV2ViUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpsZW5ndGhdOwogfQogCi12b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsK
ICAgICAvLyBGSVhNRTogU3lzdGVtIFByZXZpZXcgbmVlZHMgY29kZSBoZXJlLgogICAgIGlmICgh
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlcikgewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgRG93
bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3ZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiB7CiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkp
IHsKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0
aW5hdGlvCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKIH0KIAotdm9pZCBEb3dubG9h
ZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYgogICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3
cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG93bmxvYWRDbGllbnQ6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dP
dmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2Fk
KCkpIHsKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0
aW5hdGlvbldpCiAgICAgfQogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmll
d0Rvd25sb2FkKCkpIHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojpk
aWRGaW5pc2goV2ViUHJvY2VzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlz
aDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
RmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
RmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25s
b2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjM5LDcgKzIzOSw3IEBA
IHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1AKICAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhFcnJvcjpl
cnJvci5uc0Vycm9yKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmll
d0Rvd25sb2FkKCkpIHsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojpk
aWRDYW5jZWwoV2ViUHJvY2VzCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNl
bDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZENsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05T
VVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuY3BwCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEzICs1MSwxNCBA
QCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVEb3dubG9hZElEKCkKICAgICByZXR1cm4gKyt1bmlx
dWVEb3dubG9hZElEOwogfQogICAgIAotUmVmPERvd25sb2FkUHJveHk+IERvd25sb2FkUHJveHk6
OmNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQor
UmVmPERvd25sb2FkUHJveHk+IERvd25sb2FkUHJveHk6OmNyZWF0ZShEb3dubG9hZFByb3h5TWFw
JiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nl
c3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG93bmxvYWRQcm94eShkb3dubG9hZFBy
b3h5TWFwLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRG93bmxvYWRQcm94eShkb3dubG9hZFByb3h5TWFwLCBkYXRhU3RvcmUsIHByb2Nl
c3NQb29sLCByZXNvdXJjZVJlcXVlc3QpKTsKIH0KIAotRG93bmxvYWRQcm94eTo6RG93bmxvYWRQ
cm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorRG93
bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5
TWFwLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAgICAgOiBtX2Rv
d25sb2FkUHJveHlNYXAoZG93bmxvYWRQcm94eU1hcCkKKyAgICAsIG1fZGF0YVN0b3JlKCZkYXRh
U3RvcmUpCiAgICAgLCBtX3Byb2Nlc3NQb29sKCZwcm9jZXNzUG9vbCkKICAgICAsIG1fZG93bmxv
YWRJRChnZW5lcmF0ZURvd25sb2FkSUQoKSkKICAgICAsIG1fcmVxdWVzdChyZXNvdXJjZVJlcXVl
c3QpCkBAIC04Miw2ICs4Myw4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgpCiB7
CiAgICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwogICAgIG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRy
OworICAgIEFTU0VSVChtX2RhdGFTdG9yZSk7CisgICAgbV9kYXRhU3RvcmUgPSBudWxscHRyOwog
fQogCiB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCkBAIC04OSw3ICs5Miw3
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKICAgICBpZiAoIW1fcHJv
Y2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2Fk
Q2xpZW50KCkucHJvY2Vzc0RpZENyYXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9w
cm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwogfQog
CiBXZWJQYWdlUHJveHkqIERvd25sb2FkUHJveHk6Om9yaWdpbmF0aW5nUGFnZSgpIGNvbnN0CkBA
IC0xMjgsNyArMTMxLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChjb25zdCBSZXNv
dQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRTdGFydCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMp
OworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQoKnRoaXMpOwog
fQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTEzOCw3ICsxNDEsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6
OmRpZFJlY2VpdmVBdXRoZW50aWNhCiAKICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92ZShhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoYWxsZW5nZUlELCBtYWtlUmVmKCptX3Byb2Nlc3NQb29s
LT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKSksIG51bGxwdHIpOwogCi0gICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmdl
dCgpKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5n
ZXQoKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkKQEAgLTE0Niw3ICsxNDksNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OndpbGxT
ZW5kUmVxdWVzdChSZXNvCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVxdWVzdCgq
bV9wcm9jZXNzUG9vbCwgKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RS
ZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VS
ZXF1ZXN0JiYgbmV3UmVxdWVzdCkgeworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkud2lsbFNlbmRSZXF1ZXN0KCp0aGlzLCBXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVu
ZChuZXdSZXF1ZXN0LnVybCgpKTsKIAogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fcHJv
Y2Vzc1Bvb2wpCkBAIC0xNjUsNyArMTY4LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlUmVzcG9uc2UoYwogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2Uo
Km1fcHJvY2Vzc1Bvb2wsICp0aGlzLCByZXNwb25zZSk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCkBAIC0x
NzMsNyArMTc2LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50Ngog
ICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
UG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqbV9wcm9jZXNzUG9vbCwgKnRo
aXMsIGxlbmd0aCk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNl
aXZlRGF0YSgqdGhpcywgbGVuZ3RoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKQEAgLTE4MSw3ICsxODQsNyBAQCB2
b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0CiAgICAgaWYgKCFtX3Byb2Nl
c3NQb29sKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxv
YWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9j
ZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJRF0gKEFsbG93T3ZlcndyaXRl
IGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsKKyAgICBtX3Byb2Nlc3NQb29s
LT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KCp0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZG93bmxvYWRJRCA9IGRvd25sb2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092
ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9u
LmlzTnVsbCgpKQogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRl
c3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOwpAQCAtMTk5LDcgKzIwMiw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlk
Q3JlYXRlRGVzdGluYXRpb24KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGlu
YXRpb24oKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBwYXRoKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5k
b3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uKCp0aGlzLCBwYXRoKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5pc2goKQpAQCAtMjA3LDcgKzIxMCw3IEBAIHZvaWQg
RG93bmxvYWRQcm94eTo6ZGlkRmluaXNoKCkKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmlu
aXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRD
bGllbnQoKS5kaWRGaW5pc2goKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERv
d25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFw
LmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjI4LDcgKzIzMSw3IEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXIKIAogICAgIG1fcmVzdW1lRGF0YSA9IGNyZWF0
ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgp
LmRpZEZhaWwoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBlcnJvcik7CisgICAgbV9wcm9jZXNzUG9v
bC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKCp0aGlzLCBlcnJvcik7CiAKICAgICAvLyBUaGlz
IGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBt
X2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CkBAIC0yMzgsNyArMjQx
LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwoY29uc3QgSVBDOgogewogICAgIG1f
cmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29s
LT5kb3dubG9hZENsaWVudCgpLmRpZENhbmNlbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOworICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCp0aGlzKTsKIAogICAg
IC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVk
LgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTAgKzUzLDExIEBAIGNsYXNz
IERvd25sb2FkSUQ7CiBjbGFzcyBEb3dubG9hZFByb3h5TWFwOwogY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFz
cyBEb3dubG9hZFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6RG93bmxvYWQ+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJQ
cm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRp
YyBSZWY8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0
YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB+RG93bmxvYWRQcm94eSgpOwogCiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkg
Y29uc3QgeyByZXR1cm4gbV9kb3dubG9hZElEOyB9CkBAIC05OSw3ICsxMDAsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2Fk
UHJveHlNYXAmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOworICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNp
dGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAt
MTE4LDYgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUpOwogCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9kb3dubG9hZFByb3h5TWFwOwor
ICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZWZQdHI8V2Vi
UHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7CiAgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eU1hcC5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsOSArODAsOSBAQCB2b2lkIERvd25sb2FkUHJveHlNYXA6OmFwcGxpY2F0aW9uV2lsbEVu
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpLCAwKTsKIH0KIAotRG93bmxvYWRQcm94eSYgRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQor
RG93bmxvYWRQcm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgYXV0
byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9v
bCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoKnRoaXMsIGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVz
dCk7CiAgICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93
bmxvYWRQcm94eS5jb3B5UmVmKCkpOwogCiAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkFkZGlu
ZyBkb3dubG9hZCAlIiBQUkl1NjQgIiB0byBVSVByb2Nlc3MgRG93bmxvYWRQcm94eU1hcCIsIGRv
d25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oCShy
ZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIERv
d25sb2FkUHJveHk7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgUHJvY2Vzc0Fz
c2VydGlvbjsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsK
IAogY2xhc3MgRG93bmxvYWRQcm94eU1hcCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEb3dubG9h
ZFByb3h5TWFwPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NCw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5TWFwKE5ldHdvcmtQcm9jZXNz
UHJveHkmKTsKICAgICB+RG93bmxvYWRQcm94eU1hcCgpOwogCi0gICAgRG93bmxvYWRQcm94eSYg
Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOworICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vi
c2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkmKTsKIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRzLmlzRW1wdHkoKTsg
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVO
QUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtMTc2LDEyICsxNzcsMTIgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW50aGVzaXplQXBwSQogICAgIH0KIH0KIAotRG93
bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK0Rvd25sb2FkUHJveHkmIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBp
ZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFr
ZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKLSAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVx
dWVzdCk7CisgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94
eShkYXRhU3RvcmUsIG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYs
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5JiYpOwogCi0gICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZFByb3h5JiBj
cmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379410</attachid>
            <date>2019-09-23 17:14:20 -0700</date>
            <delta_ts>2019-09-23 18:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190923171419.patch</filename>
            <type>text/plain</type>
            <size>59095</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAyNjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE5LTA5LTIzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVxdWlyZSBhIFdl
YnNpdGVEYXRhU3RvcmUgd2hlbiBjcmVhdGluZyBvciByZXN1bWluZyBkb3dubG9hZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjA4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBi
ZWhhdmlvciwgYnV0IEknbGwgaGF2ZSB0byBtb3ZlIFNhZmFyaSB0byB0aGUgbmV3IFNQSS4KKyAg
ICAgICAgVGhpcyBtYWtlcyBpdCBzbyB0aGVyZSBhcmUgbm8gY2FzZXMgd2hlcmUgd2UgZ3Vlc3Mg
d2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgc2Vzc2lvbiwKKyAgICAgICAgYW5kIGl0IGFsbG93
cyBkb3dubG9hZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5IG9uY2UgdGhlcmUgaXMgYSBOZXR3b3Jr
UHJvY2VzcyBzaW5nbGV0b24uCisgICAgICAgIFJlbW92aW5nIHRoZSB1bnVzZWQgV2ViUHJvY2Vz
c1Bvb2wmIGluIHRoZSBjYWxsYmFja3Mgd2lsbCBhbGxvdyB1cyB0byBldmVudHVhbGx5IGhhdmUK
KyAgICAgICAgZG93bmxvYWRzIG9ubHkgYXNzb2NpYXRlZCB3aXRoIGEgV2Vic2l0ZURhdGFTdG9y
ZSBhbmQgbm90IGEgV2ViUHJvY2Vzc1Bvb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURl
c3RpbmF0aW9uKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6Cisg
ICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpw
cm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dERvd25s
b2FkVVJMUmVxdWVzdCk6CisgICAgICAgIChXS0NvbnRleHRSZXN1bWVEb3dubG9hZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0
RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRV
UkxSZXF1ZXN0Om9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNpdGVEYXRhU3Rv
cmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXN1
bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5hdGluZ1dlYlZp
ZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dFN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFBy
b3h5Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaDoKKwogMjAxOS0wOS0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBtYWNPUzogPGRhdGFsaXN0PiBkcm9wZG93biBzaGFkb3cgaXMgY3Jv
cHBlZCwgbG9va3Mgbm90aGluZyBsaWtlIE5TQ29tYm9Cb3gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1Myw3
ICsyOTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAg
IERvd25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFj
dGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCi0g
ICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURv
d25sb2FkUHJveHkobV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMpOworICAg
ICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3du
bG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QsIHRoaXMpOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAgZG93
bmxvYWQuc2V0V2FzVXNlckluaXRpYXRlZChuYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkp
OwogICAgICAgICAgICAgZG93bmxvYWQuc2V0UmVkaXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtl
UmVkaXJlY3RDaGFpbigpKTsKQEAgLTYxMjgsMTYgKzYxMjgsMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdAogICAgIH0KICNlbmRpZgogICAgIGlmIChpdGVtLmFj
dGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spIHsKLSAgICAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9h
Y3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1
dGVJbWFnZVVSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQo
bV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVD
b250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKICAg
ICAgICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7CiAgICAgICAgIGF1dG8mIGhpdFRlc3RS
ZXN1bHQgPSBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERh
dGEoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHRoaXMsIFVS
TChVUkwoKSwgaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0Lmxp
bmtTdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5k
b3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51
Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3Rv
cmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZykgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAg
V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAgICwgbV9kZWZhdWx0
UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxl
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKICAgICAsIG1f
YXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAg
ICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQor
ICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+
KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50PigpKQogICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlz
aXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKQEAgLTM2MCwxMiArMzYw
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdAogICAgICAgICBt
X2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9h
ZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25s
b2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50
KQogewotICAgIGlmICghZG93bmxvYWRDbGllbnQpCi0gICAgICAgIG1fZG93bmxvYWRDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3dubG9hZENsaWVudCk7CisgICAgbV9kb3dubG9h
ZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMjcsMTAgKzEzMjQsMTAgQEAgYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdAogICAgIHJldHVybiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuY29udGFpbnMoZGF0YVN0b3JlLnNlc3Npb25JRCgpKTsKIH0KIAotRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGlu
Z1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSkKK0Rvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkKIHsKLSAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShyZXF1ZXN0LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
ID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBj
cmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UpOwor
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKIAog
ICAgIGlmIChpbml0aWF0aW5nUGFnZSkKICAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURv
d25sb2FkUmVxdWVzdChkb3dubG9hZFByb3h5KTsKQEAgLTEzNTksMTcgKzEzNTYsMTcgQEAgRG93
bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKAogICAgIHJldHVybiBkb3dubG9h
ZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxv
YWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6
cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UpOwotICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgp
IDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBhdXRvJiBkb3dubG9h
ZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gZGF0YVN0
b3JlLnNlc3Npb25JRCgpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAobmV0d29ya1Byb2Nl
c3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25sb2Fk
SUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSwgMCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93
bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9CiAK
QEAgLTE2MjAsOSArMTYxNyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERl
ZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKHRpbWVvdXRJbnRlcnZhbCkpOwogfQogCi1Eb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQorRG93
bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBh
Z2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQogewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBl
bnN1cmVOZXR3b3JrUHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CisgICAg
YXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuY3JlYXRlRG93bmxv
YWRQcm94eShkYXRhU3RvcmUsIHJlcXVlc3QpOwogICAgIGRvd25sb2FkUHJveHkuc2V0T3JpZ2lu
YXRpbmdQYWdlKG9yaWdpbmF0aW5nUGFnZSk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9u
IDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5Lmgi
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVy
aWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNl
c0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTk2LDcgKzk1LDYg
QEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
cjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI7CkBAIC0xNzEsNyArMTY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVj
dGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYpOwotICAgIHZvaWQgc2V0RG93
bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAg
IHZvaWQgc2V0RG93bmxvYWRDbGllbnQoVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYp
OwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRv
bWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
JiYpOwogCkBAIC0yMTksOCArMjE3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNs
YXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0gICAgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7Ci0g
ICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwor
ICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJv
eHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKKyAgICBEb3dubG9hZFByb3h5JiBy
ZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwog
CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRy
PEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApAQCAtMjk0LDggKzI5Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sKTsKICAgICAKICAg
ICAvLyBEb3dubG9hZHMuCi0gICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5n
UGFnZSk7Ci0gICAgQVBJOjpEb3dubG9hZENsaWVudCYgZG93bmxvYWRDbGllbnQoKSB7IHJldHVy
biAqbV9kb3dubG9hZENsaWVudDsgfQorICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2Fk
UHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBBUEk6OkRvd25sb2FkQ2xpZW50
JiBkb3dubG9hZENsaWVudCgpIHsgcmV0dXJuIG1fZG93bmxvYWRDbGllbnQuZ2V0KCk7IH0KIAog
ICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJl
dHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkg
eyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3ICs2MzYsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQg
bV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3du
bG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKKyAgICBVbmlxdWVSZWY8QVBJOjpEb3dubG9h
ZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERv
d25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3Jp
dGUgeyBObywgWWVzIH07CkBAIC01MCwxNyArNTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6
RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248
dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsg
fSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwg
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY4LDEwNyArMTY4LDg3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChX
S0NvbnRleHQKICAgICB9CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSog
d2tDbGllbnQpCit2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewog
ICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICBleHBsaWNpdCBEb3dubG9hZENs
aWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tDb250ZXh0
UmVmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICAgICB7
CiAgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2YXRl
OgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAg
IHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnQoV2ViS2l0
Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIGZpbmFsCisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAorICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJv
eHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRy
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQ
b29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0KICAgICAgICAgICAgIGJvb2wg
YWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBh
ZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdl
YktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9w
dFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5h
bWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6
dG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpKTsKICAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBw
YXRoKSBmaW5hbAorICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZk
b3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiht
X2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBh
dGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2goV2ViS2l0Ojp0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAgICAgICB2
b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwobV9jb250
ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgZGlk
Q2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENh
bmNlbChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJv
Y2Vzc0RpZENyYXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBt
X2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9h
ZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCisgICAgICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIH0KKyAgICAgICAgV0tDb250ZXh0UmVmIG1f
Y29udGV4dDsKICAgICB9OwotCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8
RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50LCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0
U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250
ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjc2LDE0ICsyNTYsMTQgQEAg
dm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udAogICAgIFdlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CiB9
CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKK1dLRG93bmxvYWRSZWYg
V0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiwgV0tVUkxSZXF1ZXN0UmVm
KQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVm
KS0+ZG93bmxvYWQoMCwgV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVz
dCgpKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0
UmVzdW1lRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGF0YVJlZiByZXN1bWVE
YXRhLCBXS1N0cmluZ1JlZiBwYXRoKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3du
bG9hZChXS0NvbnRleHRSZWYsIFdLRGF0YVJlZiwgV0tTdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5yZXN1bWVEb3dubG9h
ZChudWxscHRyLCBXZWJLaXQ6OnRvSW1wbChyZXN1bWVEYXRhKSwgV2ViS2l0Ojp0b1dURlN0cmlu
ZyhwYXRoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdLQ29udGV4dFNldElu
aXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzEx
Niw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBj
b25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAotV0tfRVhQT1JUIFdL
RG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCk7Ci1XS19FWFBPUlQgV0tEb3dubG9hZFJlZiBX
S0NvbnRleHRSZXN1bWVEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEYXRhUmVmIHJl
c3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tD
b250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCBXS0Rvd25sb2Fk
UmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0RhdGFS
ZWYgcmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAog
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZvckluamVj
dGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1R5cGVSZWYgdXNlckRhdGEpOwogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0
LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJzaXRlRGF0
YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2ltcG9y
dCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ2FjaGUuaCIK
QEAgLTM3Myw3ICszNzQsNyBAQCAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2Fk
RGVsCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWRE
ZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8
V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNz
UG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdh
dGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTYxNSwxMiArNjE2LDIyIEBAIC0gKHZvaWQpX3Nl
dENvcmVMb2NhdGlvblByb3ZpZGVyOihpZDxfV0sKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxv
YWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiAoX1dLRG93bmxvYWQgKilfcHJvY2Vz
c1Bvb2wtPmRvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkud3JhcHBlcigpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5n
V2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9j
ZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7CisgICAgcmV0dXJuIG5p
bDsKK30KKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFT
dG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1
cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0
YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKK30KKworLSAoX1dLRG93bmxvYWQg
KilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICop
cGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1
cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJz
aXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgpKTsKIH0KIAogLSAodm9pZClfZ2V0QWN0aXZl
UGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4K
IAogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CiBAY2xhc3Mg
X1dLQXV0b21hdGlvblNlc3Npb247CiBAY2xhc3MgX1dLRG93bmxvYWQ7CiBAY2xhc3MgX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOwpAQCAtODEsOCArODIsMTEgQEAKIAogLSAodm9pZClfcmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OihOU1N0cmluZyAqKXNj
aGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIAotLSAoX1dL
RG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9y
aWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxv
YWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBwYXRoOihOU1N0cmluZyAqKXBhdGggb3Jp
Z2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CistIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9h
ZFVSTFJlcXVlc3Q6d2Vic2l0ZURhdGFTdG9yZTpvcmlnaW5hdGluZ1dlYlZpZXc6IiwgbWFjb3Mo
MTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3du
bG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6
KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6d2Vic2l0ZURhdGFTdG9yZTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzoiLCBtYWNvcygxMC4x
NC40LCBXS19NQUNfVEJBKSwgaW9zKDEyLjIsIFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxv
YWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVE
YXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJv
bURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0
YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBv
bmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQp
X3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAy
NTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9h
ZENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJX
ZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
NDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRT
dGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAg
ICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CiAgICAgICAgIHdlYmtp
dFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQobV93ZWJDb250ZXh0LCBkb3dubG9hZC5nZXQoKSk7
CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKKyAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2Fk
UHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5n
ZXQoKSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJW
aWV3SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9j
ZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxl
ZChkb3dubG9hZC5nZXQoKSkpCkBAIC02OCwxMyArNjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
d2Via2l0RG93bmxvYWRTZXRSZXNwb25zZShkb3dubG9hZC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkp
OwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRf
dCBsZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9h
ZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5n
ZXQoKSwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0
ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRP
ckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3
cml0ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93
T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBh
dGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxl
ZChkb3dubG9hZC5nZXQoKSkpIHsKQEAgLTk5LDE0ICs5OSwxNCBAQCBwcml2YXRlOgogICAgICAg
ICB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgIH0K
IAotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENhbmNlbChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFBy
b3h5KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZEZpbmlzaGVk
KGRvd25sb2FkLmdldCgpKTsKQEAgLTExOCw1ICsxMTgsNSBAQCBwcml2YXRlOgogCiB2b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
CiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAg
ICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRD
bGllbnQobWFrZVVuaXF1ZVJlZjxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyAr
MzYyLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2UoR09iagogICAgIGlm
ICghcHJpdi0+Y2xpZW50c0RldGFjaGVkKSB7CiAgICAgICAgIHByaXYtPmNsaWVudHNEZXRhY2hl
ZCA9IHRydWU7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChudWxscHRyKTsKLSAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xp
ZW50KG51bGxwdHIpOworICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGll
bnQobWFrZVVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PigpKTsKICAgICAgICAgcHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChudWxscHRy
KTsKICAgICB9CiAKQEAgLTE2NTgsNyArMTY1OCw3IEBAIFdlYktpdERvd25sb2FkKiB3ZWJraXRX
ZWJDb250ZXh0R2V0T3JDcmUKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnRE
b3dubG9hZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiB1cmksIFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UpCiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKLSAgICByZXR1cm4gd2Via2l0V2ViQ29u
dGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5kb3du
bG9hZChpbml0aWF0aW5nUGFnZSwgcmVxdWVzdCkpOworICAgIHJldHVybiB3ZWJraXRXZWJDb250
ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmRvd25s
b2FkKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgpLCBp
bml0aWF0aW5nUGFnZSwgcmVxdWVzdCkpOwogfQogCiB2b2lkIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTAy
NTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxNyArNDcsMTcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICAvLyBGcm9tIEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9p
ZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYs
IERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlv
bjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZp
bmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwg
RG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZENyZWF0ZURl
c3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYp
IGZpbmFsOwotICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShE
b3dubG9hZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJp
bmcpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7
CisgICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDYW5jZWwoRG93bmxvYWRQcm94eSYpIGZpbmFs
OworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5Jiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICB2b2lkIHRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJveHkmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBEb3dubG9h
ZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFBy
b3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViUHJvY2VzcwogICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5
LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgJiYgcmVzcG9uc2UuaXNTdWNjZXNzZnVsKCkpIHsK
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBk
aWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAotdm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpCit2b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBs
ZW5ndGgpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5
LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIERv
d25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQCiAgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0aF07CiB9
CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQordm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBTeXN0ZW0gUHJldmlldyBuZWVkcyBj
b2RlIGhlcmUuCiAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0xNDcsNyArMTQ3
LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0pLmdl
dCgpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24o
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikK
IHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW8KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25d
OwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6
cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rv
d25sb2FkKCkpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goV2ViCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRD
cmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5j
dGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
RnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2kKICAgICB9CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2Fk
UHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXMKICAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7
CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJQcm9j
ZXNzUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2Fk
UHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjU0LDcgKzI1NCw3IEBAIHZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXMKICAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lk
IERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQogICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJs
KCkuc3RyaW5nKCldXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTMgKzUxLDE0IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZURvd25sb2FkSUQo
KQogICAgIHJldHVybiArK3VuaXF1ZURvd25sb2FkSUQ7CiB9CiAgICAgCi1SZWY8RG93bmxvYWRQ
cm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJv
eHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCitSZWY8RG93bmxvYWRQcm94eT4gRG93bmxvYWRQcm94eTo6Y3Jl
YXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3du
bG9hZFByb3h5KGRvd25sb2FkUHJveHlNYXAsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3Qp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3dubG9hZFByb3h5KGRvd25sb2FkUHJveHlN
YXAsIGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOwogfQogCi1Eb3du
bG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlN
YXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJv
eHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKICAgICA6IG1fZG93bmxvYWRQcm94eU1hcChkb3dubG9hZFByb3h5TWFwKQorICAg
ICwgbV9kYXRhU3RvcmUoJmRhdGFTdG9yZSkKICAgICAsIG1fcHJvY2Vzc1Bvb2woJnByb2Nlc3NQ
b29sKQogICAgICwgbV9kb3dubG9hZElEKGdlbmVyYXRlRG93bmxvYWRJRCgpKQogICAgICwgbV9y
ZXF1ZXN0KHJlc291cmNlUmVxdWVzdCkKQEAgLTgyLDYgKzgzLDggQEAgdm9pZCBEb3dubG9hZFBy
b3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzUG9vbCk7CiAgICAgbV9w
cm9jZXNzUG9vbCA9IG51bGxwdHI7CisgICAgQVNTRVJUKG1fZGF0YVN0b3JlKTsKKyAgICBtX2Rh
dGFTdG9yZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKCkKQEAgLTg5LDcgKzkyLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpwcm9jZXNzRGlkQ2xv
c2UoKQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5wcm9jZXNzRGlkQ3Jhc2goKm1fcHJvY2Vzc1Bv
b2wsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLnByb2Nlc3NE
aWRDcmFzaCgqdGhpcyk7CiB9CiAKIFdlYlBhZ2VQcm94eSogRG93bmxvYWRQcm94eTo6b3JpZ2lu
YXRpbmdQYWdlKCkgY29uc3QKQEAgLTEyOCw3ICsxMzEsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6
OmRpZFN0YXJ0KGNvbnN0IFJlc291CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFN0YXJ0KCpt
X3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRTdGFydCgqdGhpcyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMTM4LDcgKzE0MSw3IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKIAogICAgIGF1dG8gYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6
OmNyZWF0ZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1h
a2VSZWYoKm1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKSwgbnVs
bHB0cik7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuZ2V0KCkpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xp
ZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTQ2LDcgKzE0OSw3IEBAIHZvaWQg
RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KICAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkud2lsbFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9wb3Nl
ZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CisgICAgbV9wcm9jZXNz
UG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QoKnRoaXMsIFdURk1vdmUocHJv
cG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAgICAgICBt
X3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCiAgICAgICAgIGlmICgh
cHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9vbCkKQEAgLTE2NSw3ICsxNjgsNyBAQCB2b2lkIERv
d25sb2FkUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29s
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgp
LmRpZFJlY2VpdmVSZXNwb25zZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHJlc3BvbnNlKTsKKyAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqdGhp
cywgcmVzcG9uc2UpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IGxlbmd0aCkKQEAgLTE3Myw3ICsxNzYsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFJlY2VpdmVEYXRhKHVpbnQ2CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRh
KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbGVuZ3RoKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3du
bG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCp0aGlzLCBsZW5ndGgpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMo
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpA
QCAtMTgxLDcgKzE4NCw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25X
aXQKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvd25sb2FkSUQgPSBkb3dubG9h
ZElEXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikg
eworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJRF0gKEFs
bG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAg
ICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CkBAIC0xOTksNyArMjAyLDcgQEAgdm9p
ZCBEb3dubG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbgogICAgIGlmICghbV9wcm9jZXNz
UG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGll
bnQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHBhdGgpOwor
ICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24o
KnRoaXMsIHBhdGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlzaCgpCkBAIC0y
MDcsNyArMjEwLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5pc2goKQogICAgIGlmICgh
bV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBtX3By
b2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZpbmlzaCgqdGhpcyk7CiAKICAgICAvLyBU
aGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAg
ICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CkBAIC0yMjgsNyAr
MjMxLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGYWlsKGNvbnN0IFJlc291cgogCiAgICAg
bV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bv
b2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmFpbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGVycm9y
KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZhaWwoKnRoaXMsIGVy
cm9yKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0
byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0
aGlzKTsKQEAgLTIzOCw3ICsyNDEsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNlbChj
b25zdCBJUEM6CiB7CiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsK
IAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCptX3Byb2Nl
c3NQb29sLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRD
YW5jZWwoKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkg
b2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmlu
aXNoZWQoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxMCArNTMsMTEgQEAgY2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNp
dGVEYXRhU3RvcmU7CiAKIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBjcmVhdGUoRG93
bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBjcmVhdGUoRG93bmxvYWRQ
cm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3dubG9hZFByb3h5KCk7CiAKICAgICBEb3du
bG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KQEAgLTk5
LDcgKzEwMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3du
bG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CkBAIC0xMTgsNiArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBt
X2Rvd25sb2FkUHJveHlNYXA7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fZGF0YVN0
b3JlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKICAgICBEb3du
bG9hZElEIG1fZG93bmxvYWRJRDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkocmV2aXNpb24gMjUwMjU0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgRG93bmxvYWRQcm94eU1h
cDo6YXBwbGljYXRpb25XaWxsRW4KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCksIDApOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVh
dGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKIHsKLSAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFByb3h5OjpjcmVh
dGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIGF1dG8gZG93bmxv
YWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3JlLCBwcm9jZXNz
UG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94
eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKICAgICBSRUxFQVNF
X0xPRyhMb2FkaW5nLCAiQWRkaW5nIGRvd25sb2FkICUiIFBSSXU2NCAiIHRvIFVJUHJvY2VzcyBE
b3dubG9hZFByb3h5TWFwIiwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJv
eHk7CiBjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5TWFwIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPERvd25sb2FkUHJveHlNYXA+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJv
eHlNYXAoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogICAgIH5Eb3dubG9hZFByb3h5TWFwKCk7CiAK
LSAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWRQcm94eSYgY3Jl
YXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQo
RG93bmxvYWRQcm94eSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9k
b3dubG9hZHMuaXNFbXB0eSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1MDI1
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNv
bnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
aCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikK
ICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBA
IC0xNzYsMTIgKzE3NywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVB
cHBJCiAgICAgfQogfQogCi1Eb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVh
dGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQor
RG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQogICAgICAgICBtX2Rv
d25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKIAot
ICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9wcm9j
ZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFw
LT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgbV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VS
ZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkIChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKLSAgICBEb3dubG9hZFByb3h5
JiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwor
ICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNp
dGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379414</attachid>
            <date>2019-09-23 18:28:31 -0700</date>
            <delta_ts>2019-09-24 05:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202081-20190923182830.patch</filename>
            <type>text/plain</type>
            <size>60519</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAyNjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE5LTA5LTIzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVxdWlyZSBhIFdl
YnNpdGVEYXRhU3RvcmUgd2hlbiBjcmVhdGluZyBvciByZXN1bWluZyBkb3dubG9hZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjA4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBi
ZWhhdmlvciwgYnV0IEknbGwgaGF2ZSB0byBtb3ZlIFNhZmFyaSB0byB0aGUgbmV3IFNQSS4KKyAg
ICAgICAgVGhpcyBtYWtlcyBpdCBzbyB0aGVyZSBhcmUgbm8gY2FzZXMgd2hlcmUgd2UgZ3Vlc3Mg
d2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgc2Vzc2lvbiwKKyAgICAgICAgYW5kIGl0IGFsbG93
cyBkb3dubG9hZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5IG9uY2UgdGhlcmUgaXMgYSBOZXR3b3Jr
UHJvY2VzcyBzaW5nbGV0b24uCisgICAgICAgIFJlbW92aW5nIHRoZSB1bnVzZWQgV2ViUHJvY2Vz
c1Bvb2wmIGluIHRoZSBjYWxsYmFja3Mgd2lsbCBhbGxvdyB1cyB0byBldmVudHVhbGx5IGhhdmUK
KyAgICAgICAgZG93bmxvYWRzIG9ubHkgYXNzb2NpYXRlZCB3aXRoIGEgV2Vic2l0ZURhdGFTdG9y
ZSBhbmQgbm90IGEgV2ViUHJvY2Vzc1Bvb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURl
c3RpbmF0aW9uKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6Cisg
ICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpw
cm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dERvd25s
b2FkVVJMUmVxdWVzdCk6CisgICAgICAgIChXS0NvbnRleHRSZXN1bWVEb3dubG9hZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0
RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRV
UkxSZXF1ZXN0Om9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNpdGVEYXRhU3Rv
cmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXN1
bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5hdGluZ1dlYlZp
ZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dFN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFBy
b3h5Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaDoKKwogMjAxOS0wOS0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBtYWNPUzogPGRhdGFsaXN0PiBkcm9wZG93biBzaGFkb3cgaXMgY3Jv
cHBlZCwgbG9va3Mgbm90aGluZyBsaWtlIE5TQ29tYm9Cb3gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1Myw3
ICsyOTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAg
IERvd25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFj
dGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCi0g
ICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURv
d25sb2FkUHJveHkobV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMpOworICAg
ICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3du
bG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QsIHRoaXMpOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAgZG93
bmxvYWQuc2V0V2FzVXNlckluaXRpYXRlZChuYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkp
OwogICAgICAgICAgICAgZG93bmxvYWQuc2V0UmVkaXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtl
UmVkaXJlY3RDaGFpbigpKTsKQEAgLTYxMjgsMTYgKzYxMjgsMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdAogICAgIH0KICNlbmRpZgogICAgIGlmIChpdGVtLmFj
dGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spIHsKLSAgICAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9h
Y3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1
dGVJbWFnZVVSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQo
bV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVD
b250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKICAg
ICAgICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7CiAgICAgICAgIGF1dG8mIGhpdFRlc3RS
ZXN1bHQgPSBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERh
dGEoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHRoaXMsIFVS
TChVUkwoKSwgaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0Lmxp
bmtTdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5k
b3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51
Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3Rv
cmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZykgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAg
V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAgICwgbV9kZWZhdWx0
UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxl
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKICAgICAsIG1f
YXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAg
ICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQor
ICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+
KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50PigpKQogICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlz
aXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKQEAgLTM2MCwxMiArMzYw
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdAogICAgICAgICBt
X2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9h
ZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25s
b2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50
KQogewotICAgIGlmICghZG93bmxvYWRDbGllbnQpCi0gICAgICAgIG1fZG93bmxvYWRDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3dubG9hZENsaWVudCk7CisgICAgbV9kb3dubG9h
ZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKQEAgLTEzMjcsMTAgKzEzMjQsMTAgQEAgYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdAogICAgIHJldHVybiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuY29udGFpbnMoZGF0YVN0b3JlLnNlc3Npb25JRCgpKTsKIH0KIAotRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGlu
Z1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSkKK0Rvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkKIHsKLSAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShyZXF1ZXN0LCBpbml0aWF0aW5nUGFnZSk7Ci0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
ID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBj
cmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UpOwor
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKIAog
ICAgIGlmIChpbml0aWF0aW5nUGFnZSkKICAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURv
d25sb2FkUmVxdWVzdChkb3dubG9hZFByb3h5KTsKQEAgLTEzNTksMTcgKzEzNTYsMTcgQEAgRG93
bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKAogICAgIHJldHVybiBkb3dubG9h
ZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxv
YWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6
cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UpOwotICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgp
IDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBhdXRvJiBkb3dubG9h
ZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgp
LCBpbml0aWF0aW5nUGFnZSk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gZGF0YVN0
b3JlLnNlc3Npb25JRCgpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAobmV0d29ya1Byb2Nl
c3MoKSkgewotICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LmRvd25sb2Fk
SUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSwgMCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93
bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9CiAK
QEAgLTE2MjAsOSArMTYxNyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERl
ZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKHRpbWVvdXRJbnRlcnZhbCkpOwogfQogCi1Eb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQorRG93
bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYlBh
Z2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKQogewotICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBl
bnN1cmVOZXR3b3JrUHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CisgICAg
YXV0byYgZG93bmxvYWRQcm94eSA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuY3JlYXRlRG93bmxv
YWRQcm94eShkYXRhU3RvcmUsIHJlcXVlc3QpOwogICAgIGRvd25sb2FkUHJveHkuc2V0T3JpZ2lu
YXRpbmdQYWdlKG9yaWdpbmF0aW5nUGFnZSk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9u
IDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5Lmgi
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVy
aWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNl
c0NvdW50ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTk2LDcgKzk1LDYg
QEAgc3RydWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IERvd25sb2FkUHJveHk7CiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
cjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI7CkBAIC0xNzEsNyArMTY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVj
dGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYpOwotICAgIHZvaWQgc2V0RG93
bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAg
IHZvaWQgc2V0RG93bmxvYWRDbGllbnQoVW5pcXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYp
OwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRv
bWF0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
JiYpOwogCkBAIC0yMTksOCArMjE3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNs
YXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKTsKICNlbmRpZgogCi0gICAgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7Ci0g
ICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwor
ICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJv
eHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKKyAgICBEb3dubG9hZFByb3h5JiBy
ZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwog
CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRy
PEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApAQCAtMjk0LDggKzI5Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sKTsKICAgICAKICAg
ICAvLyBEb3dubG9hZHMuCi0gICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5n
UGFnZSk7Ci0gICAgQVBJOjpEb3dubG9hZENsaWVudCYgZG93bmxvYWRDbGllbnQoKSB7IHJldHVy
biAqbV9kb3dubG9hZENsaWVudDsgfQorICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2Fk
UHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBBUEk6OkRvd25sb2FkQ2xpZW50
JiBkb3dubG9hZENsaWVudCgpIHsgcmV0dXJuIG1fZG93bmxvYWRDbGllbnQuZ2V0KCk7IH0KIAog
ICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJl
dHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkg
eyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTYzOCw3ICs2MzYsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQg
bV9jb25uZWN0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3du
bG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKKyAgICBVbmlxdWVSZWY8QVBJOjpEb3dubG9h
ZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM3LDcgKzQwLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERv
d25sb2FkUHJveHk7Ci1jbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gY2xhc3MgQWxsb3dPdmVyd3Jp
dGUgeyBObywgWWVzIH07CkBAIC01MCwxNyArNTMsMTcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6
RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248
dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsg
fSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwg
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMjU0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY4LDEwNyArMTY4LDg3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChX
S0NvbnRleHQKICAgICB9CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSog
d2tDbGllbnQpCit2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewog
ICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICBleHBsaWNpdCBEb3dubG9hZENs
aWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tDb250ZXh0
UmVmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICAgICB7
CiAgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2YXRl
OgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAg
IHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnQoV2ViS2l0
Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIGZpbmFsCisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAorICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25z
ZShXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJv
eHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRy
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQ
b29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0KICAgICAgICAgICAgIGJvb2wg
YWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBh
ZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdl
YktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9w
dFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5h
bWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6
dG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpKTsKICAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBw
YXRoKSBmaW5hbAorICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZk
b3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiht
X2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBh
dGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQg
ZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2goV2ViS2l0Ojp0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAgICAgICB2
b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbChXZWJLaXQ6OnRvQVBJKCZwcm9jZXNzUG9vbCksIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwobV9jb250
ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgZGlk
Q2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwo
V2ViS2l0Ojp0b0FQSSgmcHJvY2Vzc1Bvb2wpLCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENh
bmNlbChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJv
Y2Vzc0RpZENyYXNoKFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBt
X2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9h
ZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0KFdlYktpdDo6dG9BUEkoJnByb2Nlc3NQb29sKSwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCisgICAgICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIH0KKyAgICAgICAgV0tDb250ZXh0UmVmIG1f
Y29udGV4dDsKICAgICB9OwotCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWVSZWY8
RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50LCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0
U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250
ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjc2LDE0ICsyNTYsMTQgQEAg
dm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udAogICAgIFdlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CiB9
CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKK1dLRG93bmxvYWRSZWYg
V0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiwgV0tVUkxSZXF1ZXN0UmVm
KQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVm
KS0+ZG93bmxvYWQoMCwgV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVz
dCgpKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdLRG93bmxvYWRSZWYgV0tDb250ZXh0
UmVzdW1lRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGF0YVJlZiByZXN1bWVE
YXRhLCBXS1N0cmluZ1JlZiBwYXRoKQorV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3du
bG9hZChXS0NvbnRleHRSZWYsIFdLRGF0YVJlZiwgV0tTdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5yZXN1bWVEb3dubG9h
ZChudWxscHRyLCBXZWJLaXQ6OnRvSW1wbChyZXN1bWVEYXRhKSwgV2ViS2l0Ojp0b1dURlN0cmlu
ZyhwYXRoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdLQ29udGV4dFNldElu
aXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzEx
Niw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBj
b25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAotV0tfRVhQT1JUIFdL
RG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCk7Ci1XS19FWFBPUlQgV0tEb3dubG9hZFJlZiBX
S0NvbnRleHRSZXN1bWVEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEYXRhUmVmIHJl
c3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tD
b250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCBXS0Rvd25sb2Fk
UmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0RhdGFS
ZWYgcmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAog
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZvckluamVj
dGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1R5cGVSZWYgdXNlckRhdGEpOwogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0
LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJzaXRlRGF0
YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2ltcG9y
dCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ2FjaGUuaCIK
QEAgLTM3Myw3ICszNzQsNyBAQCAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2Fk
RGVsCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWRE
ZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8
V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNz
UG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdh
dGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTYxNSwxMiArNjE2LDIyIEBAIC0gKHZvaWQpX3Nl
dENvcmVMb2NhdGlvblByb3ZpZGVyOihpZDxfV0sKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxv
YWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9yaWdpbmF0aW5nV2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiAoX1dLRG93bmxvYWQgKilfcHJvY2Vz
c1Bvb2wtPmRvd25sb2FkKFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkud3JhcHBlcigpOworICAg
IHJldHVybiBuaWw7CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5n
V2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9j
ZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLnB0cigpLCBwYXRoKSk7CisgICAgcmV0dXJuIG5p
bDsKK30KKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFT
dG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1
cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0
YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKK30KKworLSAoX1dLRG93bmxvYWQg
KilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICop
cGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1
cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJz
aXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgpKTsKIH0KIAogLSAodm9pZClfZ2V0QWN0aXZl
UGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4K
IAogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CiBAY2xhc3Mg
X1dLQXV0b21hdGlvblNlc3Npb247CiBAY2xhc3MgX1dLRG93bmxvYWQ7CiBAY2xhc3MgX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOwpAQCAtODEsOCArODIsMTEgQEAKIAogLSAodm9pZClfcmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OihOU1N0cmluZyAqKXNj
aGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIAotLSAoX1dL
RG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IG9y
aWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxv
YWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBwYXRoOihOU1N0cmluZyAqKXBhdGggb3Jp
Z2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CistIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9h
ZFVSTFJlcXVlc3Q6d2Vic2l0ZURhdGFTdG9yZTpvcmlnaW5hdGluZ1dlYlZpZXc6IiwgbWFjb3Mo
MTAuMTQuNCwgV0tfTUFDX1RCQSksIGlvcygxMi4yLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3du
bG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHBhdGg6
KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6d2Vic2l0ZURhdGFTdG9yZTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzoiLCBtYWNvcygxMC4x
NC40LCBXS19NQUNfVEJBKSwgaW9zKDEyLjIsIFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxv
YWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVE
YXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJv
bURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0
YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBv
bmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQp
X3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAy
NTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9h
ZENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJX
ZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
NDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRT
dGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAg
ICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CiAgICAgICAgIHdlYmtp
dFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQobV93ZWJDb250ZXh0LCBkb3dubG9hZC5nZXQoKSk7
CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKKyAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2Fk
UHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5n
ZXQoKSkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJW
aWV3SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgJmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9j
ZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxl
ZChkb3dubG9hZC5nZXQoKSkpCkBAIC02OCwxMyArNjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
d2Via2l0RG93bmxvYWRTZXRSZXNwb25zZShkb3dubG9hZC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkp
OwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRf
dCBsZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9h
ZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWROb3RpZnlQcm9ncmVzcyhkb3dubG9hZC5n
ZXQoKSwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0
ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRP
ckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgYm9vbCBhbGxvd092ZXJ3
cml0ZSA9IGZhbHNlOwpAQCAtODIsMTMgKzgyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93
T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBh
dGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxv
YWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxl
ZChkb3dubG9hZC5nZXQoKSkpIHsKQEAgLTk5LDE0ICs5OSwxNCBAQCBwcml2YXRlOgogICAgICAg
ICB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgIH0K
IAotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENhbmNlbChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFBy
b3h5KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5pc2goRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZEZpbmlzaGVk
KGRvd25sb2FkLmdldCgpKTsKQEAgLTExOCw1ICsxMTgsNSBAQCBwcml2YXRlOgogCiB2b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
CiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAg
ICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRD
bGllbnQobWFrZVVuaXF1ZVJlZjxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyAr
MzYyLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2UoR09iagogICAgIGlm
ICghcHJpdi0+Y2xpZW50c0RldGFjaGVkKSB7CiAgICAgICAgIHByaXYtPmNsaWVudHNEZXRhY2hl
ZCA9IHRydWU7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChudWxscHRyKTsKLSAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xp
ZW50KG51bGxwdHIpOworICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGll
bnQobWFrZVVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PigpKTsKICAgICAgICAgcHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChudWxscHRy
KTsKICAgICB9CiAKQEAgLTE2NTgsNyArMTY1OCw3IEBAIFdlYktpdERvd25sb2FkKiB3ZWJraXRX
ZWJDb250ZXh0R2V0T3JDcmUKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnRE
b3dubG9hZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiB1cmksIFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UpCiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKLSAgICByZXR1cm4gd2Via2l0V2ViQ29u
dGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5kb3du
bG9hZChpbml0aWF0aW5nUGFnZSwgcmVxdWVzdCkpOworICAgIHJldHVybiB3ZWJraXRXZWJDb250
ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmRvd25s
b2FkKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgpLCBp
bml0aWF0aW5nUGFnZSwgcmVxdWVzdCkpOwogfQogCiB2b2lkIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTAy
NTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxNyArNDcsMTcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICAvLyBGcm9tIEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9p
ZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYs
IERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlv
bjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZp
bmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwg
RG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZENyZWF0ZURl
c3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYp
IGZpbmFsOwotICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShE
b3dubG9hZFByb3h5JiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJp
bmcpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7
CisgICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDYW5jZWwoRG93bmxvYWRQcm94eSYpIGZpbmFs
OworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5Jiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICB2b2lkIHRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJveHkmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBEb3dubG9h
ZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFBy
b3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViUHJvY2VzcwogICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5
LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgJiYgcmVzcG9uc2UuaXNTdWNjZXNzZnVsKCkpIHsK
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBk
aWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAotdm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpCit2b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBs
ZW5ndGgpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5
LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIERv
d25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQCiAgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0aF07CiB9
CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQordm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBTeXN0ZW0gUHJldmlldyBuZWVkcyBj
b2RlIGhlcmUuCiAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0xNDcsNyArMTQ3
LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0pLmdl
dCgpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24o
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikK
IHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW8KICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25d
OwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6
cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rv
d25sb2FkKCkpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goV2ViCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRD
cmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5j
dGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
RnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2kKICAgICB9CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2Fk
UHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXMKICAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7
CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJQcm9j
ZXNzUAogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2Fk
UHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjU0LDcgKzI1NCw3IEBAIHZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXMKICAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCi12b2lk
IERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQogICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJs
KCkuc3RyaW5nKCldXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTMgKzUxLDE0IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZURvd25sb2FkSUQo
KQogICAgIHJldHVybiArK3VuaXF1ZURvd25sb2FkSUQ7CiB9CiAgICAgCi1SZWY8RG93bmxvYWRQ
cm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJv
eHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCitSZWY8RG93bmxvYWRQcm94eT4gRG93bmxvYWRQcm94eTo6Y3Jl
YXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3du
bG9hZFByb3h5KGRvd25sb2FkUHJveHlNYXAsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3Qp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3dubG9hZFByb3h5KGRvd25sb2FkUHJveHlN
YXAsIGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOwogfQogCi1Eb3du
bG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlN
YXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJv
eHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKICAgICA6IG1fZG93bmxvYWRQcm94eU1hcChkb3dubG9hZFByb3h5TWFwKQorICAg
ICwgbV9kYXRhU3RvcmUoJmRhdGFTdG9yZSkKICAgICAsIG1fcHJvY2Vzc1Bvb2woJnByb2Nlc3NQ
b29sKQogICAgICwgbV9kb3dubG9hZElEKGdlbmVyYXRlRG93bmxvYWRJRCgpKQogICAgICwgbV9y
ZXF1ZXN0KHJlc291cmNlUmVxdWVzdCkKQEAgLTgyLDYgKzgzLDggQEAgdm9pZCBEb3dubG9hZFBy
b3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzUG9vbCk7CiAgICAgbV9w
cm9jZXNzUG9vbCA9IG51bGxwdHI7CisgICAgQVNTRVJUKG1fZGF0YVN0b3JlKTsKKyAgICBtX2Rh
dGFTdG9yZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKCkKQEAgLTg5LDcgKzkyLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpwcm9jZXNzRGlkQ2xv
c2UoKQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5wcm9jZXNzRGlkQ3Jhc2goKm1fcHJvY2Vzc1Bv
b2wsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLnByb2Nlc3NE
aWRDcmFzaCgqdGhpcyk7CiB9CiAKIFdlYlBhZ2VQcm94eSogRG93bmxvYWRQcm94eTo6b3JpZ2lu
YXRpbmdQYWdlKCkgY29uc3QKQEAgLTEyOCw3ICsxMzEsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6
OmRpZFN0YXJ0KGNvbnN0IFJlc291CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFN0YXJ0KCpt
X3Byb2Nlc3NQb29sLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRTdGFydCgqdGhpcyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMTM4LDcgKzE0MSw3IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKIAogICAgIGF1dG8gYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6
OmNyZWF0ZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1h
a2VSZWYoKm1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKSwgbnVs
bHB0cik7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuZ2V0KCkpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xp
ZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTQ2LDcgKzE0OSw3IEBAIHZvaWQg
RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KFJlc28KICAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkud2lsbFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9wb3Nl
ZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CisgICAgbV9wcm9jZXNz
UG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QoKnRoaXMsIFdURk1vdmUocHJv
cG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAgICAgICBt
X3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCiAgICAgICAgIGlmICgh
cHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9vbCkKQEAgLTE2NSw3ICsxNjgsNyBAQCB2b2lkIERv
d25sb2FkUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29s
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgp
LmRpZFJlY2VpdmVSZXNwb25zZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHJlc3BvbnNlKTsKKyAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqdGhp
cywgcmVzcG9uc2UpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IGxlbmd0aCkKQEAgLTE3Myw3ICsxNzYsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFJlY2VpdmVEYXRhKHVpbnQ2CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRh
KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbGVuZ3RoKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3du
bG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCp0aGlzLCBsZW5ndGgpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMo
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpA
QCAtMTgxLDcgKzE4NCw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25X
aXQKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvd25sb2FkSUQgPSBkb3dubG9h
ZElEXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikg
eworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb3dubG9hZElEID0gZG93bmxvYWRJRF0gKEFs
bG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAg
ICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CkBAIC0xOTksNyArMjAyLDcgQEAgdm9p
ZCBEb3dubG9hZFByb3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbgogICAgIGlmICghbV9wcm9jZXNz
UG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGll
bnQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHBhdGgpOwor
ICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24o
KnRoaXMsIHBhdGgpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlzaCgpCkBAIC0y
MDcsNyArMjEwLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5pc2goKQogICAgIGlmICgh
bV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKKyAgICBtX3By
b2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZpbmlzaCgqdGhpcyk7CiAKICAgICAvLyBU
aGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAg
ICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CkBAIC0yMjgsNyAr
MjMxLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGYWlsKGNvbnN0IFJlc291cgogCiAgICAg
bV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bv
b2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmFpbCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGVycm9y
KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZhaWwoKnRoaXMsIGVy
cm9yKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0
byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0
aGlzKTsKQEAgLTIzOCw3ICsyNDEsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNlbChj
b25zdCBJUEM6CiB7CiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsK
IAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCptX3Byb2Nl
c3NQb29sLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRD
YW5jZWwoKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkg
b2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmlu
aXNoZWQoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAyNTAyNTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxMCArNTMsMTEgQEAgY2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYnNp
dGVEYXRhU3RvcmU7CiAKIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBjcmVhdGUoRG93
bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3dubG9hZFByb3h5PiBjcmVhdGUoRG93bmxvYWRQ
cm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3dubG9hZFByb3h5KCk7CiAKICAgICBEb3du
bG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KQEAgLTk5
LDcgKzEwMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3du
bG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CkBAIC0xMTgsNiArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBt
X2Rvd25sb2FkUHJveHlNYXA7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fZGF0YVN0
b3JlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKICAgICBEb3du
bG9hZElEIG1fZG93bmxvYWRJRDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkocmV2aXNpb24gMjUwMjU0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgRG93bmxvYWRQcm94eU1h
cDo6YXBwbGljYXRpb25XaWxsRW4KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCksIDApOwogfQog
Ci1Eb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCitEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVh
dGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKIHsKLSAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFByb3h5OjpjcmVh
dGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIGF1dG8gZG93bmxv
YWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3JlLCBwcm9jZXNz
UG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94
eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKICAgICBSRUxFQVNF
X0xPRyhMb2FkaW5nLCAiQWRkaW5nIGRvd25sb2FkICUiIFBSSXU2NCAiIHRvIFVJUHJvY2VzcyBE
b3dubG9hZFByb3h5TWFwIiwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDI1MDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJv
eHk7CiBjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBEb3dubG9hZFByb3h5TWFwIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPERvd25sb2FkUHJveHlNYXA+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJv
eHlNYXAoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogICAgIH5Eb3dubG9hZFByb3h5TWFwKCk7CiAK
LSAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWRQcm94eSYgY3Jl
YXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQo
RG93bmxvYWRQcm94eSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9k
b3dubG9hZHMuaXNFbXB0eSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1MDI1
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNv
bnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
aCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikK
ICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBA
IC0xNzYsMTIgKzE3NywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVB
cHBJCiAgICAgfQogfQogCi1Eb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVh
dGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQor
RG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQogICAgICAgICBtX2Rv
d25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKIAot
ICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9wcm9j
ZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFw
LT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgbV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VS
ZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkIChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjUwMjU0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKLSAgICBEb3dubG9hZFByb3h5
JiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwor
ICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNp
dGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAyNzcp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
OS0wOS0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlcXVpcmUgYSBXZWJzaXRlRGF0YVN0b3JlIHdoZW4gY3JlYXRpbmcgb3IgcmVzdW1p
bmcgZG93bmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDIwODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5t
bToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3dubG9hZDpl
eHBlY3RlZExlbmd0aDpdKToKKwogMjAxOS0wOS0yMyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gUmVuYW1lIENvbXBpbGVKU0NPbmx5IHRvIENv
bXBpbGVKU0MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWRQcm9ncmVzcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0JKHJldmlzaW9uIDI1MDI1NCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZDoo
RG93bmxvYWRTdGFydFR5cGUKICAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
LmdldCgpXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3Rh
cnRJblByb2Nlc3NQb29sOgotICAgICAgICBbbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24u
cHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpIG9yaWdpbmF0aW5n
V2ViVmlldzpudWxscHRyXTsKKyAgICAgICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9u
LnByb2Nlc3NQb29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6cmVxdWVzdC5nZXQoKSB3ZWJzaXRlRGF0
YVN0b3JlOltXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gb3JpZ2luYXRpbmdX
ZWJWaWV3Om51bGxwdHJdOwogICAgICAgICBicmVhazsKICAgICB9CiAK
</data>
<flag name="review"
          id="395126"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>