<?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>194189</bug_id>
          
          <creation_ts>2019-02-02 00:33:07 -0800</creation_ts>
          <short_desc>Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy</short_desc>
          <delta_ts>2019-02-19 11:41:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>
          
          <blocked>194329</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1501466</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 00:33:07 -0800</bug_when>
    <thetext>We&apos;re hitting crashes in FrameLoader::continueLoadAfterNavigationPolicy
where isBackForwardLoadType would return true yet history().provisionalItem() is null.

We think this is because we&apos;re mixing up one policy decision requests / responses for different navigations.

Add identifiers for each policy decision in WebCore as done in WebKit2.

&lt;rdar://problem/22872341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501467</commentid>
    <comment_count>1</comment_count>
      <attachid>360967</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 00:56:32 -0800</bug_when>
    <thetext>Created attachment 360967
Adds the validation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501472</commentid>
    <comment_count>2</comment_count>
      <attachid>360970</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 01:26:45 -0800</bug_when>
    <thetext>Created attachment 360970
Updated for trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501473</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-02 01:29:47 -0800</bug_when>
    <thetext>Attachment 360970 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:763:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:910:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:923:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:96:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/PolicyChecker.cpp:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:877:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:909:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:921:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/loader/DocumentLoader.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 9 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501521</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-02 12:44:47 -0800</bug_when>
    <thetext>Seems like a real build failure:

C:\cygwin\home\buildbot\WebKit\Source\WebKitLegacy\win\WebCoreSupport\WebFrameLoaderClient.h(103): error C3668: &apos;WebFrameLoaderClient::dispatchDecidePolicyForResponse&apos;: method with override specifier &apos;override&apos; did not override any base class methods (compiling source file C:\cygwin\home\buildbot\WebKit\Source\WebKitLegacy\win\Plugins\PluginView.cpp) [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501522</commentid>
    <comment_count>5</comment_count>
      <attachid>360970</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-02 12:52:32 -0800</bug_when>
    <thetext>Comment on attachment 360970
Updated for trunk

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

r=me, please fix the Windows build

&gt; Source/WebCore/loader/FrameLoaderTypes.h:72
&gt; +    PolicyCheckIdentifier() = default;

Is it valid to construct a null PolicyCheckIdentifier? Is it necessary? Maybe we should = delete this.

&gt; Source/WebCore/loader/FrameLoaderTypes.h:75
&gt; +    static PolicyCheckIdentifier generate();

I think we usually call this function &quot;create&quot;.

&gt; Source/WebCore/loader/FrameLoaderTypes.h:89
&gt; +    uint64_t m_check { 0 };

I would call this m_policyCheck.

&gt; Source/WebCore/loader/PolicyChecker.cpp:84
&gt; +    RELEASE_ASSERT_WITH_MESSAGE(m_check, &quot;Received a non-generated policy check identifier&quot;);

Maybe call this a null policy check identifier? Not clear what &quot;non-generated&quot; means, and in theory some non-generated values might be non-zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501552</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 17:23:34 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #5)
&gt; Comment on attachment 360970 [details]
&gt; Updated for trunk
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=360970&amp;action=review
&gt; 
&gt; r=me, please fix the Windows build

will do.

&gt; &gt; Source/WebCore/loader/FrameLoaderTypes.h:72
&gt; &gt; +    PolicyCheckIdentifier() = default;
&gt; 
&gt; Is it valid to construct a null PolicyCheckIdentifier? Is it necessary?
&gt; Maybe we should = delete this.

Unfortunately we need this in a few places like argument encoders and WebFrame in WebKit2 where we have it as a member.

&gt; &gt; Source/WebCore/loader/FrameLoaderTypes.h:75
&gt; &gt; +    static PolicyCheckIdentifier generate();
&gt; 
&gt; I think we usually call this function &quot;create&quot;.

Sure, will rename.

&gt; &gt; Source/WebCore/loader/FrameLoaderTypes.h:89
&gt; &gt; +    uint64_t m_check { 0 };
&gt; 
&gt; I would call this m_policyCheck.

Will do.

&gt; &gt; Source/WebCore/loader/PolicyChecker.cpp:84
&gt; &gt; +    RELEASE_ASSERT_WITH_MESSAGE(m_check, &quot;Received a non-generated policy check identifier&quot;);
&gt; 
&gt; Maybe call this a null policy check identifier? Not clear what
&gt; &quot;non-generated&quot; means, and in theory some non-generated values might be
&gt; non-zero.

Sure, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501573</commentid>
    <comment_count>7</comment_count>
      <attachid>360993</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 20:06:56 -0800</bug_when>
    <thetext>Created attachment 360993
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501574</commentid>
    <comment_count>8</comment_count>
      <attachid>360993</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 20:10:07 -0800</bug_when>
    <thetext>Comment on attachment 360993
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501575</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-02 20:11:33 -0800</bug_when>
    <thetext>Attachment 360993 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:763:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:910:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:923:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:96:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/PolicyChecker.cpp:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp:627:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:877:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:909:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:921:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/loader/DocumentLoader.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501583</commentid>
    <comment_count>10</comment_count>
      <attachid>360997</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 21:03:50 -0800</bug_when>
    <thetext>Created attachment 360997
Another windows build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501584</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-02 21:05:31 -0800</bug_when>
    <thetext>Attachment 360997 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:763:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:910:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:923:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:96:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/PolicyChecker.cpp:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp:627:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:877:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:909:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:921:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/loader/DocumentLoader.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501585</commentid>
    <comment_count>12</comment_count>
      <attachid>360998</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 22:04:17 -0800</bug_when>
    <thetext>Created attachment 360998
Fixed Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501586</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-02 22:06:12 -0800</bug_when>
    <thetext>Attachment 360998 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:763:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:910:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:923:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:96:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/PolicyChecker.cpp:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp:627:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:877:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:909:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:921:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/loader/DocumentLoader.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501687</commentid>
    <comment_count>14</comment_count>
      <attachid>360998</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-03 14:48:28 -0800</bug_when>
    <thetext>Comment on attachment 360998
Fixed Windows build

Clearing flags on attachment: 360998

Committed r240909: &lt;https://trac.webkit.org/changeset/240909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501688</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-03 14:48:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507742</commentid>
    <comment_count>16</comment_count>
      <attachid>360998</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-19 11:38:58 -0800</bug_when>
    <thetext>Comment on attachment 360998
Fixed Windows build

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:196
&gt; +        if (!responseIdentifier.isValidFor(requestIdentifier))
&gt; +            return;

Why do we not call function in this case?

&gt; Source/WebCore/loader/PolicyChecker.cpp:237
&gt; +        if (!responseIdentifier.isValidFor(requestIdentifier))
&gt; +            return;

Ditto.  These could cause hangs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507747</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-19 11:41:10 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=194823</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360967</attachid>
            <date>2019-02-02 00:56:32 -0800</date>
            <delta_ts>2019-02-02 01:26:43 -0800</delta_ts>
            <desc>Adds the validation</desc>
            <filename>bug-194189-20190202005631.patch</filename>
            <type>text/plain</type>
            <size>96940</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE5LTAyLTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRpb24g
cG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlZCBQb2xpY3lDaGVja0lkZW50aWZpZXIgdG8gcGFpciBlYWNoIG5hdmln
YXRpb24gcG9saWN5IGNoZWNrIHJlcXVlc3Qgd2l0aCBhIGRlY2lzaW9uLAorICAgICAgICBhbmQg
ZGVwbG95ZWQgaXQgaW4gUG9saWN5Q2hlY2tlci4gVGhlIGlkZW50aWZpZXIgaXMgcGFzc2VkIGZy
b20gV2ViQ29udGVudCBwcm9jZXNzIHRvIFVJIHByb2Nlc3MKKyAgICAgICAgaW4gV2ViS2l0Miwg
YW5kIHBhc3NlZCBpdCBiYWNrIHdpdGggdGhlIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICBC
ZWNhdXNlIFBvbGljeUNoZWNrSWRlbnRpZmllciBlbWJlZHMgdGhlIHByb2Nlc3MgaWRlbnRpZmll
ciBmcm9tIHdoaWNoIGEgbmF2aWdhdGlvbiBwb2xpY3kgaXMgY2hlY2tlZCwKKyAgICAgICAgd2Ug
d291bGQgYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBVSSBwcm9jZXNzIGhhZCBzZW50IHRoZSBkZWNp
c2lvbiB0byBhIHdyb25nIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gYWRkcyByZWxlYXNlIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSBpcyBzZXQgd2hlbmV2ZXIKKyAgICAgICAgd2UncmUgcmVxdWVzdGluZyBh
IG5hdmlnYXRpb24gcG9saWN5IGNoZWNrLgorCisgICAgICAgIFRoZXNlIGNvZGUgY2hhbmdlcyBz
aG91bGQgZWl0aGVyOgorICAgICAgICAxLiBGaXggY3Jhc2hlcyBpbiBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IHdoZXJlIGlzQmFja0ZvcndhcmRMb2FkVHlw
ZSB3b3VsZAorICAgICAgICAgICByZXR1cm4gdHJ1ZSB5ZXQgaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpIGlzIG51bGwuCisgICAgICAgIDIuIERldGVjdCBhIGJ1ZyB0aGF0IFVJIHByb2Nlc3Mg
Y2FuIHNlbmQgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiB0byBhIHdyb25nIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgMy4gUnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IHRoYXQgKDIp
IGV4aXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVu
Y29kZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6aXNWYWxpZEZvcik6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgaWRlbnRpZmVyIG1hdGNoZXMuIEFsc28gcmVsZWFzZSBhc3NlcnRzCisg
ICAgICAgIHRoYXQgdGhlIHByb2Nlc3MgSUQgaXMgc2FtZSwgYW5kIHRoYXQgbV9jaGVjayBpcyBh
bHdheXMgbm90IHplcm8gKG1lYW5pbmcgaXQncyBhIGdlbmVyYXRlZCB2YWx1ZSkuCisgICAgICAg
IFRoZSBmYWlsdXJlIG9mIHRoZXNlIHJlbGVhc2UgYXNzZXJ0aW9ucyB3b3VsZCBpbmRpY2F0ZSB0
aGF0IHRoZXJlIGlzIGEgYnVnIGluIFVJIHByb2Nlc3MsIHdoaWNoIHJlc3VsdHMgaW4KKyAgICAg
ICAgYSBwb2xpY3kgZGVjaXNpb24gcmVzcG9uc2UgYmVpbmcgc2VudCB0byBhIHdyb25nIFdlYiBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KTogRXhpdCBlYXJseSBpZiBpc1ZhbGlkRm9yIGZhaWxzLgorICAgICAgICAoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE5LTAxLTMwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihQU09O
KSBIaXN0b3J5IG5hdmlnYXRpb25zIHRvIHR3aXR0ZXIuY29tIGxlYWQgdG8gYSA0MDMgSFRUUCBl
cnJvcgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAyNDA3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlckZp
ZWxkLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0
ZW0uaCIKKyNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkljb25Mb2Fk
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJM
aW5rSWNvbkNvbGxlY3Rvci5oIgpAQCAtNjYxLDcgKzY2MiwxMCBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgQVNTRVJUKCFtX3dhaXRpbmdGb3JOYXZpZ2F0
aW9uUG9saWN5KTsKICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsKIAot
ICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3ko
V1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShuYXZpZ2F0aW9u
UG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAvLyBGSVhNRTogQWRkIGEgbG9hZCB0eXBl
IGNoZWNrLgorICAgIGF1dG8mIHBvbGljeUNoZWNrZXIgPSBmcmFtZUxvYWRlcigpLT5wb2xpY3lD
aGVja2VyKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xp
Y3lDaGVja2VyLmxvYWRUeXBlKCkpIHx8IGZyYW1lTG9hZGVyKCktPmhpc3RvcnkoKS5wcm92aXNp
b25hbEl0ZW0oKSk7CisgICAgcG9saWN5Q2hlY2tlci5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RG
TW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShuYXZpZ2F0aW9uUG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRlcjo6dHJ5TG9h
ZGluZ1JlcXVlc3RGcm9tQXBwbGljYXRpb25DYWNoZSgpCkBAIC04MzgsNyArODQyLDEwIEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IG1haW5SZXNvdXJjZUxvYWRlciA9IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRl
cigpOwogICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIG1haW5SZXNvdXJjZUxv
YWRlci0+bWFya0luQXN5bmNSZXNwb25zZVBvbGljeUNoZWNrKCk7Ci0gICAgZnJhbWVMb2FkZXIo
KS0+Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG1haW5SZXNvdXJjZUxvYWRlciA9IFdURk1vdmUobWFpblJlc291cmNl
TG9hZGVyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxl
YXNlKCldIChQb2xpY3lBY3Rpb24gcG9saWN5KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlcXVlc3RJ
ZGVudGlmaWVyID0gUG9saWN5Q2hlY2tJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGZyYW1l
TG9hZGVyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCByZXF1ZXN0SWRlbnRpZmll
ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpblJlc291cmNlTG9h
ZGVyID0gV1RGTW92ZShtYWluUmVzb3VyY2VMb2FkZXIpLAorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSwgcmVxdWVzdElkZW50aWZp
ZXJdIChQb2xpY3lBY3Rpb24gcG9saWN5LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgcmVzcG9uc2VJ
ZGVudGlmZWlyKSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzcG9uc2VJZGVu
dGlmZWlyLmlzVmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIpKTsKICAgICAgICAgY29udGludWVB
ZnRlckNvbnRlbnRQb2xpY3kocG9saWN5KTsKICAgICAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRl
cikKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlUG9s
aWN5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNp
b24gMjQwNzcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1MiwxMSArNDUyLDExIEBAIFBBTDo6U2Vzc2lvbklEIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OnMKICAgICByZXR1cm4gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKTsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSosIFBvbGlj
eURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9u
JiYpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjQwNzcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsOSBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpCiAgICAgRnJhbWUqIGRp
c3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWwgeyB9CiAKLSAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWwgeyB9
Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29u
c3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsIHsgfQorICAgIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmlu
ZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2Rl
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBkaXNwYXRj
aFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjQwNzcx
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYzLDE1ICszNjMsMTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGlu
Zyhib29sIAogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9saWN5
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb250ZW50UG9saWN5RGVjaXNpb25G
dW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9saWN5
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsK
ICAgICBpZiAoIWFjdGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgLy8gTG9hZCB3YXMg
Y2FuY2VsbGVkCi0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAg
ICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIGlkZW50aWZpZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShyZXNwb25zZSwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLCBXVEZNb3Zl
KGZ1bmN0aW9uKSk7CisgICAgLy8gRklYTUU6IFZhbGlkYXRlIHRoZSBwb2xpY3kgY2hlY2sgaWRl
bnRpZmllci4KKyAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJl
c3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlkZW50aWZpZXIsIFdU
Rk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24o
RnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0xMzc5LDYgKzEzODAsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlCiAKICAgICBpZiAoIXRhcmdldEZyYW1l
ICYmICFlZmZlY3RpdmVGcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFjdGlvbiA9IGFj
dGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCkpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5s
b2FkVHlwZSgpKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGlj
eShXVEZNb3ZlKGFjdGlvbiksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZm9ybVN0YXRlKSwg
ZWZmZWN0aXZlRnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBv
cGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIu
cmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1T
dGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3Qs
IGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtMTM5OSw3ICsxNDAxLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFVSTChGcmFtZUxvYWRSZXF1ZQogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0TGFz
dENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcG9saWN5Q2hlY2tl
cigpLnN0b3BDaGVjaygpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc2V0TG9hZFR5cGUobmV3
TG9hZFR5cGUpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFdURk1vdmUocmVxdWVzdCksIFJlc291cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9u
c2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBl
KG5ld0xvYWRUeXBlKSB8fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOworICAgICAgICBw
b2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIFJl
c291cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksCisgICAgICAgICAgICBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUp
IHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xp
Y3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAg
ICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25vdXMpOwogICAgICAgICByZXR1cm47
CkBAIC0xNDYyLDYgKzE0NjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJl
cXVlc3QmCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRDaGVja05ld1dpbmRvd1BvbGljeSgpKSB7
CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24s
IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KCkgfTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRMb2FkVHlwZShw
b2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hl
Y2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkpLCB7IH0sIHJlcXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNo
b3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUxvYWRB
ZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwg
YWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMs
IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CiAgICAgICAgIH0pOwpAQCAtMTU4NSw2
ICsxNTkwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcgogICAg
IH0KIAogICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZSh0eXBlKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNp
b25hbEl0ZW0oKSk7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZm9ybVN0YXRlOwogCiAg
ICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9hZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhv
ZCgpOwpAQCAtMTU5Niw2ICsxNjAyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1
bWVudExvYWRlcgogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihXVEZNb3ZlKGFjdGlvbikpOwogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0TGFzdENo
ZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigp
LnN0b3BDaGVjaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRU
eXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSB8fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJ
dGVtKCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJl
c291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9uc2UgeyB9ICAv
KiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShm
b3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxk
Q29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRT
Y3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hy
b25vdXMpOwpAQCAtMTYzMCw2ICsxNjM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhE
b2N1bWVudExvYWRlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgUkVMRUFTRV9BU1NF
UlQoIWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkgfHwg
aGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKTsKICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tO
YXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291
cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgV1RGTW92ZShm
b3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhh
bmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRp
bnVlKSBtdXRhYmxlIHsKICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0zMDExLDYg
KzMwMTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNC
YWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSk7CiAgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlvbiksIFdU
Rk1vdmUod29ya2luZ1Jlc291cmNlUmVxdWVzdCksIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVO
YW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAgICAgICAgY29udGlu
dWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjQwNzcxKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcg
KzkxLDcgQEAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Jh
Y2tGb3J3YXJkTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlz
UmVsb2FkKEZyYW1lTG9hZFR5cGUpOwogCi11c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5j
dGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24pPjsKK3VzaW5nIENvbnRlbnRQ
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyKT47CiAKIGNsYXNzIEZyYW1lTG9hZGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogCi0gICAgdm9pZCBjaGVja0Nv
bnRlbnRQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbnRlbnRQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uJiYpOworICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uJiYpOwogCiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW4oKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI0MDc3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDcsNyArMTA3LDcgQEAgZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CiAKIHN0
cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9uOwogCi10eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAo
UG9saWN5QWN0aW9uKT4gRnJhbWVQb2xpY3lGdW5jdGlvbjsKK3R5cGVkZWYgV1RGOjpGdW5jdGlv
bjx2b2lkIChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+IEZyYW1lUG9saWN5
RnVuY3Rpb247CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogZGlz
cGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoU2hvdygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1l
UG9saWN5RnVuY3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0
YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJh
bWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIs
IEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xp
Y3lDaGVjaygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
IlByb2Nlc3NJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsNiAr
NjYsNDggQEAgZW51bSBjbGFzcyBGcmFtZUxvYWRUeXBlIDogdWludDhfdCB7CiAgICAgUmVsb2Fk
RXhwaXJlZE9ubHkKIH07CiAKK2NsYXNzIFBvbGljeUNoZWNrSWRlbnRpZmllciB7CitwdWJsaWM6
CisgICAgUG9saWN5Q2hlY2tJZGVudGlmaWVyKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1Zh
bGlkRm9yKFBvbGljeUNoZWNrSWRlbnRpZmllcik7CisgICAgc3RhdGljIFBvbGljeUNoZWNrSWRl
bnRpZmllciBnZW5lcmF0ZSgpOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvbGljeUNo
ZWNrSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2VzcyA9PSBvdGhlci5t
X3Byb2Nlc3MgJiYgbV9jaGVjayA9PSBvdGhlci5tX2NoZWNrOyB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBvbGljeUNoZWNrSWRlbnRpZmllcj4gZGVj
b2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIoUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2VzcywgdWludDY0X3QgY2hlY2spCisgICAgICAgIDogbV9wcm9j
ZXNzKHByb2Nlc3MpCisgICAgICAgICwgbV9jaGVjayhjaGVjaykKKyAgICB7IH0KKworICAgIFBy
b2Nlc3NJZGVudGlmaWVyIG1fcHJvY2VzczsKKyAgICB1aW50NjRfdCBtX2NoZWNrIHsgMCB9Owor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUG9saWN5Q2hlY2tJZGVudGlmaWVy
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcHJv
Y2VzcyA8PCBtX2NoZWNrOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8
UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvY2VzcyA9IFByb2Nlc3NJZGVudGlmaWVyOjpk
ZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFwcm9jZXNzKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgdWludDY0X3QgY2hlY2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
aGVjaykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUG9saWN5
Q2hlY2tJZGVudGlmaWVyIHsgKnByb2Nlc3MsIGNoZWNrIH07Cit9CisKIGVudW0gY2xhc3MgTmV3
RnJhbWVPcGVuZXJQb2xpY3kgOiB1aW50OF90IHsKICAgICBTdXBwcmVzcywKICAgICBBbGxvdwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjQw
NzcxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw2ICs3MSwyMSBAQCBzdGF0aWMgYm9vbCBpc0FsbG93ZWRCeUNvbnRlbnRT
ZWN1cml0eVBvCiAgICAgcmV0dXJuIG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZSh1cmwsIHJlZGlyZWN0UmVz
cG9uc2VSZWNlaXZlZCk7CiB9CiAKK1BvbGljeUNoZWNrSWRlbnRpZmllciBQb2xpY3lDaGVja0lk
ZW50aWZpZXI6OmdlbmVyYXRlKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY291bnQgPSAwOwor
ICAgIGNvdW50Kys7CisgICAgcmV0dXJuIFBvbGljeUNoZWNrSWRlbnRpZmllciB7IFByb2Nlc3M6
OmlkZW50aWZpZXIoKSwgY291bnQgfTsKK30KKworYm9vbCBQb2xpY3lDaGVja0lkZW50aWZpZXI6
OmlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGV4cGVjdGVkSWRlbnRpZmllcikKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9wcm9jZXNzID09IGV4cGVjdGVkSWRl
bnRpZmllci5tX3Byb2Nlc3MsICJSZWNlaXZlZCBhIHBvbGljeSBjaGVjayByZXNwb25zZSBmb3Ig
YSB3cm9uZyBwcm9jZXNzIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG1fY2hl
Y2ssICJSZWNlaXZlZCBhIG5vbi1nZW5lcmF0ZWQgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIiKTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9jaGVjayA8PSBleHBlY3RlZElkZW50
aWZpZXIubV9jaGVjaywgIlJlY2VpdmVkIGEgcG9saWN5IGNoZWNrIHJlc3BvbnNlIGZyb20gdGhl
IGZ1dHVyZSIpOworICAgIHJldHVybiBtX2NoZWNrID09IGV4cGVjdGVkSWRlbnRpZmllci5tX2No
ZWNrOworfQorCiBQb2xpY3lDaGVja2VyOjpQb2xpY3lDaGVja2VyKEZyYW1lJiBmcmFtZSkKICAg
ICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Q
b2xpY3koZmFsc2UpCkBAIC0xNzAsOSArMTg1LDE2IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWMKIAogICAgIGF1dG8gYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0g
cG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzID8g
ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkocmVxdWVzdCkgOiBDb21wbGV0aW9uSGFu
ZGxlckNhbGxpbmdTY29wZSB7IH07CiAKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gUG9s
aWN5Q2hlY2tJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5n
TmF2aWdhdGlvblBvbGljeSA9IHRydWU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0g
YWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IGFjdGlv
bi5kb3dubG9hZEF0dHJpYnV0ZSgpOwotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlz
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVu
YW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lv
biA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbikgbXV0YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGljeURlY2lzaW9uTW9kZSwgcmVxdWVzdElk
ZW50aWZpZXIsCisgICAgICAgIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZv
cm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSks
CisgICAgICAgICBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbiksIHJlcXVlc3RJZGVudGlmaWVyXSAoUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcikgbXV0YWJsZSB7
CisKKyAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50aWZpZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRl
bnRpZmllcikpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVj
aWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAKICAgICAgICAgc3dpdGNoIChwb2xpY3lB
Y3Rpb24pIHsKQEAgLTIwMyw3ICsyMjUsMTQgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05l
d1dpbmRvd1BvbGljeQogCiAgICAgYXV0byBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBleHRl
bmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0KTsKIAotICAgIG1fZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2
aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIFtmcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0
YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGlt
ZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgIGF1
dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCks
IGZyYW1lTmFtZSwgcmVxdWVzdElkZW50aWZpZXIsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSks
IHJlcXVlc3QsCisgICAgICAgIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVO
YW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiks
CisgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcikgbXV0YWJsZSB7CisKKyAg
ICAgICAgaWYgKCFyZXNwb25zZUlkZW50aWZpZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmll
cikpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24p
IHsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOgogICAgICAgICAgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQwODkzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxOS0wMi0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBWYWxpZGF0ZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lv
bnMgdG8gYXZvaWQgY3Jhc2hlcyBpbiBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDE4OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgdGhl
IHBvbGljeSBjaGVjayBpZGVudGlmaWVyIGFyb3VuZCBmdW5jdGlvbnMgYW5kIHN0b3JlIGl0IGlu
IFBvbGljeURlY2lzaW9uU2VuZGVyCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIHNlbmQgaXQgYmFj
ayB0byBXZWJDb3JlIHdpdGggdGhlIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgorCisgICAg
ICAgIFdlIGFsc28gc3RvcmUgaXQgaW4gV2ViRnJhbWUgaW4gdGhlIGNhc2UgdGhlIHBvbGljeSBk
ZWNpc2lvbiBoYWQgdG8gYmUgaW52YWxpZGF0ZWQKKyAgICAgICAgYmVmb3JlIHRoZSBkZWNpc2lv
biB3YXMgcmVjZWl2ZWQgKHZpYSBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKS4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyKTogQWRkZWQgUG9saWN5Q2hlY2tJZGVudGlmaWVy
IGFzIGEgbWVtYmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lz
aW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlBvbGlj
eURlY2lzaW9uU2VuZGVyOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQ
b2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTgtMTItMTYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgYWRkaXRpb25hbCBT
dHJpbmc6OmZvcm1hdCBjbGllbnRzIHRvIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjQwNzcxKQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5
KQpAQCAtNDIwLDYgKzQyMCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAg
ICAnV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkluZm8nOiBb
JzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBvbGljeUFjdGlv
bic6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVw
TWVudS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5JzogWyc8V2Vi
Q29yZS9BdWRpb1Nlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjQwNzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTYgKzI2MiwyMCBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92CiAgICAgbV9wYWdlLmRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVybCkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
Cit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LAorICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIEFTU0VS
VChtX21haW5GcmFtZS0+ZnJhbWVJRCgpID09IGZyYW1lSUQpOwotICAgIG1fcGFnZS5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
ZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2lu
YXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5l
cklEKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9y
aWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksCisgICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlE
LCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkp
LCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAK
LXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwg
bGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlN
RVR5cGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6c3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaAkocmV2aXNpb24gMjQwNzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
ZmluYWw7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50
NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFt
ZUluZm9EYXRhJiYsCisgICAgICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCisgICAgICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYm
KTsKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmln
YXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2NjcsMjIgKzI2NjcsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbklu
VmlzaQogCiBjbGFzcyBXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8UG9saWN5RGVjaXNpb25TZW5kZXI+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBT
ZW5kRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBvbGljeUFjdGlvbiwgdWludDY0
X3QgbmV3TmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPik+OwotICAgIHN0YXRpYyBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNyZWF0ZShTZW5k
RnVuY3Rpb24mJiBzZW5kRnVuY3Rpb24pCisgICAgdXNpbmcgU2VuZEZ1bmN0aW9uID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChQb2xpY3lDaGVja0lkZW50aWZpZXIsIFBvbGljeUFjdGlvbiwgdWlu
dDY0X3QgbmV3TmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPik+OworCisgICAgc3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRl
KFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZW5kRnVuY3Rpb24mJiBzZW5kRnVu
Y3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2xpY3lEZWNpc2lv
blNlbmRlcihXVEZNb3ZlKHNlbmRGdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUG9saWN5RGVjaXNpb25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rp
b24pKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5k
KEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIGlmIChtX3NlbmRGdW5jdGlvbikKLSAgICAg
ICAgICAgIG1fc2VuZEZ1bmN0aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAg
ICAgICAgICBtX3NlbmRGdW5jdGlvbihtX2lkZW50aWZpZXIsIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CiAgICAgfQogcHJpdmF0ZToKLSAgICBQb2xpY3lEZWNpc2lvblNlbmRlcihTZW5k
RnVuY3Rpb24gc2VuZEZ1bmN0aW9uKQotICAgICAgICA6IG1fc2VuZEZ1bmN0aW9uKFdURk1vdmUo
c2VuZEZ1bmN0aW9uKSkgeyB9CisgICAgUG9saWN5RGVjaXNpb25TZW5kZXIoUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlbmRGdW5jdGlvbiBzZW5kRnVuY3Rpb24pCisgICAgICAg
IDogbV9zZW5kRnVuY3Rpb24oV1RGTW92ZShzZW5kRnVuY3Rpb24pKQorICAgICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICB7IH0KIAogICAgIFNlbmRGdW5jdGlvbiBtX3Nl
bmRGdW5jdGlvbjsKKyAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBSZWY8
UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQpAQCAtMjcwMiw3ICsyNzA2LDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24o
KnRoaXMsICpuYXZpZ2F0aW9uLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24g
PSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNlbmRlciA9IFdU
Rk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudF0oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0
aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKKyAg
ICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5h
dmlnYXRpb24sIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYo
Km5hdmlnYXRpb24pLAorICAgICAgICBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2VuZGVyID0gV1RG
TW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0
aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5l
ZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0
ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CiAgICAgICAg
ICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIo
KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTQzNjEsMjIgKzQzNjYsMzMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCi17Ci0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdU
Rk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwKKyAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQs
IFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCisgICAgICAgIFdURk1vdmUoZnJhbWVJbmZv
RGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2Vy
RGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLAorICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwKKyAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCiB7CiAgICAgYXV0byogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAotICAgIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92
ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9y
aWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxp
c3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgewor
ICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5l
cklELCBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7Ci0gICAgfSkpOwor
ICAgIH0pOworCisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNv
cHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9u
SUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEp
LCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwg
dXNlckRhdGEsIFdURk1vdmUoc2VuZGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisg
ICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZv
RGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlcikKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQg
VVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQ0MzUsNyArNDQ1MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgc2hv
dWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVz
dWx0OjpObzsKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5
TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFt
ZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb25d
IChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNp
ZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykg
bXV0YWJsZSB7Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBmcmFtZSA9IGZy
YW1lLmNvcHlSZWYoKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uID0gV1RG
TW92ZShuYXZpZ2F0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMg
PSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFi
bGUgewogICAgICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5
QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBm
cmFtZSwgcG9saWNpZXMuZ2V0KCksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIH07CkBAIC00
NTU5LDkgKzQ1NzUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihj
bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAor
ICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELAorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLAorICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25T
ZW5kZXI6OmNyZWF0ZShXVEZNb3ZlKHJlcGx5KSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lE
ZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIAogICAg
IGF1dG8qIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZy
YW1lKSB7CkBAIC00NTc1LDEzICs0NTk0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2EKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOwogICAgIH0KIAot
ICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwg
KmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5h
dGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
cXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5j
b3B5UmVmKCkpOworICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNz
LmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0
aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0Rh
dGEpLAorICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBk
aWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAg
IHNlbmRlci0+c2VuZChQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElE
KCksIFdURjo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNDU4OSwxMyArNDYxMCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsK
ICAgICBNRVNTQUdFX0NIRUNLX1VSTChtX3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZUlE
XSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJl
ZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUg
eworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwg
bGlzdGVuZXJJRCwgZnJhbWVJRF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vi
c2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3Np
bmdXYXJuaW5nKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpX
ZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBv
bGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcs
ICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihw
b2xpY3lBY3Rpb24sIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgUG9saWN5RGVjaXNpb25TZW5kZXI6
OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZy
YW1lSUQsIGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsKKworICAgICAgICBhdXRvIHNlbmRl
ciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAo
YXV0by4uLiBhcmdzKSB7CiAgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdz
Li4uKSwgbV9wYWdlSUQpOwotICAgICAgICB9KSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6Om51bGxvcHQs
IFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0
OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpAQCAtNDYxNSwxMiArNDYzOSwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgIAogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlS
ZWYoKSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCByZXNwb25z
ZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25z
ZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xp
Y3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDYzMiwxMyArNDY1OCwxNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2Vz
cywgcmVzcG9uc2UudXJsKCkpOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdh
dGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmln
YXRpb25JRCkgOiBudWxscHRyOwotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5z
ZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlv
biksIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4m
JiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmln
YXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAorICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5j
b3B5UmVmKCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2ll
cyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykg
bXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
clVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5v
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dz
aW5nV2FybmluZyk7Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9u
LCBuYXZpZ2F0aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFt
ZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJn
cykgeworCisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0
ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoYXV0
by4uLiBhcmdzKSB7CiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiks
IG1fcGFnZUlEKTsKLSAgICAgICAgfSkpOworICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBX
VEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJy
b3dzaW5nUmVzdWx0OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMzLDggKzE0MzMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFt
ZUlEKTsKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRf
dCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBVUkwmJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKKyAgICAgICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAg
ICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQp
OwogICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwpAQCAtMTUyMCwxMSArMTUyMywxOSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZp
Z2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwotICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwot
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBG
cmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRf
dCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKKyAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0
IFVSTCYsIGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNDA3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxMCArMTA1LDEwIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
Ci0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJ
RCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRh
PiB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKLSAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWlu
dDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVj
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKIAogICAgICMgUHJvZ3Jlc3MgbWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gMjQwNzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzI3LDE2ICs3MjcsMTYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hT
aG93KAogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAg
V2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwog
ICAgIGlmICghd2ViUGFnZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9y
ZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJpbmco
KSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWQKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQ
YWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xp
ZW50KCkuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uod2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2Us
IHJlcXVlc3QsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGlj
eUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAg
ICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzU2LDE2ICs3NTYsMTggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1l
bnRMb2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVu
dExvYWRlcikubmF2aWdhdGlvbklEKCkgOiAwOwogICAgIAogICAgIFJlZjxXZWJGcmFtZT4gcHJv
dGVjdG9yKCptX2ZyYW1lKTsKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRp
b25BY3Rpb246Ok5vKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNl
LCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkp
LmdldCgpKSkpKQotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKKyAgICB1aW50NjRf
dCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBX
VEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKKyAg
ICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShjb3JlRnJhbWUpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1
ZXN0LAorICAgICAgICBjYW5TaG93UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSkpKQorICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
bGlzdGVuZXJJRCwgaWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICgh
d2ViUGFnZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAg
ICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNzc2LDExICs3NzgsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4K
ICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFn
ZSwgbV9mcmFtZSwgYWN0aW9uLnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsK
ICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUo
ZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOworICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIs
IFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwog
CiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBl
KCk7CkBAIC03OTQsNyArNzk2LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlID0gbmF2
aWdhdGlvbkFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwogCiAgICAgV2ViQ29yZTo6RnJhbWUq
IGNvcmVGcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0g
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21GcmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNv
cmVGcmFtZSksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LAorICAg
ICAgICBmcmFtZU5hbWUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwog
fQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vi
c2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTgxNSwxMSArODE4LDEyIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWUKICAgICBXZWJzaXRlUG9s
aWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
LCAqZG9jdW1lbnRMb2FkZXIpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0
ZSwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5j
dGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmln
YXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
UG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVu
Y3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdl
KCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgewotICAgICAgICBmdW5jdGlvbihQb2xp
Y3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3Jl
LCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyNyw3
ICs4MzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAg
ICAvLyBBbHdheXMgaWdub3JlIHJlcXVlc3RzIHdpdGggZW1wdHkgVVJMcy4gCiAgICAgaWYgKHJl
cXVlc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3Jl
KTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIHJlcXVlc3RJZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODM4LDExICs4NDIsMTEgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlmeSB0aGUg
YnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2Vi
UGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgdXNlckRh
dGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0g
ICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9s
aWN5QWN0aW9uOjpVc2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246
Olllcyk7CisKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lcihyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpZZXMpOwogCiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rpb24u
cmVxdWVzdGVyKCkpOwogICAgIGF1dG8gcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1
ZXN0ZXIoKS52YWx1ZSgpOwpAQCAtODc4LDcgKzg4Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWQKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBt
X2ZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KFBvbGljeUFjdGlvbjo6SWdub3JlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgV2ViRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIq
Pihjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpOwogICAgIGlmICgh
ZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2UgcmVjZWl2ZSBhIHJl
ZGlyZWN0IGFmdGVyIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBoYXMgYmVlbiBkZWNpZGVkIGZvciB0
aGUgaW5pdGlhbCByZXF1ZXN0LApAQCAtODk1LDIyICs4OTksMjggQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgaWYgKHBvbGljeURlY2lzaW9uTW9kZSA9
PSBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKSB7CiAgICAgICAgIHVpbnQ2NF90IG5l
d05hdmlnYXRpb25JRDsKKyAgICAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJl
c3BvbnNlSWRlbnRpZmllcjsKICAgICAgICAgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbjsKICAg
ICAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEOwogICAgICAgICBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXM7CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwg
cmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBv
bGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMp
KSkgewotICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3Rl
bmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgICAgIGlmICgh
d2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pc01haW5G
cmFtZSgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLAorICAgICAg
ICAgICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRp
bmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCisg
ICAgICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0s
IHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksCisgICAgICAgICAg
ICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYzo6UmVwbHkocmVzcG9uc2VJZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRp
b25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgICAgIG1fZnJh
bWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCByZXNwb25zZUlkZW50aWZp
ZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uLCAwLCBkb3dubG9hZElELCB7IH0pOworICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcmVzcG9uc2VJ
ZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIDAsIGRvd25sb2FkSUQsIHsgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURl
Y2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1l
KSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFj
dGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7
IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSksIGxpc3RlbmVySUQpKSkKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7
CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksCisgICAgICAgIHJlcXVlc3RJZGVudGlm
aWVyLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9u
QWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAorICAgICAgICBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSwgbGlzdGVuZXJJRCkpKQorICAgICAgICBtX2ZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcmVxdWVzdElkZW50aWZpZXIsIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAyNDA3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDkg
KzEyMyw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFn
ZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaXNw
YXRjaFNob3coKSBmaW5hbDsKICAgICAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7
Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6
OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lv
bk1vZGUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7
CiAgICAgCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEwLDEyICsyMTAsMTMgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZSgpCiAgICAgbV9j
b3JlRnJhbWUgPSAwOwogfQogCi11aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5l
cihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmln
YXRpb25BY3Rpb24gZm9yTmF2aWdhdGlvbkFjdGlvbikKK3VpbnQ2NF90IFdlYkZyYW1lOjpzZXRV
cFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmln
YXRpb25BY3Rpb24gZm9yTmF2aWdhdGlvbkFjdGlvbikKIHsKICAgICAvLyBGSVhNRTogPHJkYXI6
Ly81NjM0MzgxPiBXZSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBvbGljeSBsaXN0
ZW5lcnMuCiAKICAgICBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAorICAgIG1fcG9saWN5
SWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgbV9wb2xpY3lMaXN0ZW5lcklEID0gZ2VuZXJh
dGVMaXN0ZW5lcklEKCk7CiAgICAgbV9wb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUocG9saWN5RnVu
Y3Rpb24pOwogICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gZm9yTmF2
aWdhdGlvbkFjdGlvbjsKQEAgLTI0NCw4ICsyNDUsMTAgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxp
ZGF0ZVBvbGljeUxpc3RlbmVyKAogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAg
IG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7CisgICAgYXV0byBpZGVudGlmaWVyID0gbV9wb2xpY3lJ
ZGVudGlmaWVyOworICAgIG1fcG9saWN5SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAgICBp
ZiAoYXV0byBmdW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0
cikpCi0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVu
Y3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsICppZGVudGlmaWVyKTsKICAgICBtX3BvbGljeUZ1
bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vOwogCiAg
ICAgYXV0byB3aWxsU3VibWl0Rm9ybUNvbXBsZXRpb25IYW5kbGVycyA9IFdURk1vdmUobV93aWxs
U3VibWl0Rm9ybUNvbXBsZXRpb25IYW5kbGVycyk7CkBAIC0yNTMsMTEgKzI1NiwxNCBAQCB2b2lk
IFdlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1
aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX3BvbGljeUxpc3Rl
bmVySUQgfHwgbGlzdGVuZXJJRCAhPSBtX3BvbGljeUxpc3RlbmVySUQgfHwgIW1fcG9saWN5RnVu
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVChpZGVudGlmaWVyID09IG1fcG9s
aWN5SWRlbnRpZmllcik7CisgICAgbV9wb2xpY3lJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0Owor
CiAgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5j
dGlvbik7CiAgICAgYm9vbCBmb3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5jdGlvbkZv
ck5hdmlnYXRpb25BY3Rpb24gPT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwogCkBAIC0yNzIs
NyArMjc4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKAogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOwog
ICAgIH0KIAotICAgIGZ1bmN0aW9uKGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uLCBpZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2
aXNpb24gMjQwNzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0
X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgZW51bSBjbGFz
cyBGb3JOYXZpZ2F0aW9uQWN0aW9uIHsgTm8sIFllcyB9OwotICAgIHVpbnQ2NF90IHNldFVwUG9s
aWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9u
QWN0aW9uKTsKKyAgICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZp
Z2F0aW9uQWN0aW9uKTsKICAgICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNv
cmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9h
ZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKIAogICAgIHVpbnQ2NF90IHNl
dFVwV2lsbFN1Ym1pdEZvcm1MaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCk7CkBAIC0xNzgsNiArMTc4
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGcmFtZSogbV9jb3JlRnJhbWUgeyBudWxscHRy
IH07CiAKICAgICB1aW50NjRfdCBtX3BvbGljeUxpc3RlbmVySUQgeyAwIH07CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBtX3BvbGljeUlkZW50aWZpZXI7CiAg
ICAgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0aW9uOwogICAgIEZv
ck5hdmlnYXRpb25BY3Rpb24gbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24geyBG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpObyB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4+IG1fd2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxlcnM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjQwNzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNDgsMTIgKzMwNDgsMTIgQEAgdm9pZCBXZWJQYWdl
OjpzZXRTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSQogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNl
c3Npb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93bmxvYWRJ
RCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9h
ZElEJiBkb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcykKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0g
ICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
KyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZp
ZXIsIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbklELCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMwMCw3ICsxMzAwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBEb3dubG9hZElEJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJ
RCYsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYpOwogICAgIHZvaWQgY29udGludWVX
aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAg
ICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI0
MDc3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAK
ICAgICBVcGRhdGVXZWJzaXRlUG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVz
RGF0YSB3ZWJzaXRlUG9saWNpZXMpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0Rh
dGE+IHdlYnNpdGVQb2xpY2llcykKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3du
bG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4g
d2Vic2l0ZVBvbGljaWVzKQogICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE5LTAyLTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFZhbGlkYXRlIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGlu
IGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZp
ZXIgYXJvdW5kIGZ1bmN0aW9ucyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cgorICAgICAgICBzbyB0aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRo
ZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcik6
CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTppZGVudGlm
aWVyOnBvbGljeUZ1bmN0aW9uOmRlZmF1bHRQb2xpY3k6XSk6CisgICAgICAgICgtW1dlYkZyYW1l
UG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9uOmRl
ZmF1bHRQb2xpY3k6YXBwTGlua1VSTDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIHJlY2VpdmVkUG9saWN5
RGVjaXNpb246XSk6CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhG
cmFtZTpwb2xpY3lGdW5jdGlvbjpkZWZhdWx0UG9saWN5Ol0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGluaXRXaXRoRnJhbWU6cG9saWN5RnVuY3Rpb246ZGVm
YXVsdFBvbGljeTphcHBMaW5rVVJMOl0pOiBEZWxldGVkLgorCiAyMDE5LTAxLTI4ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm92
aWRlIGEgd2F5IHRvIGVkaXQgcGFnZSBXZWJSVEMgc2V0dGluZ3Mgb24gYSByZW1vdGUgdGFyZ2V0
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI0MDc3MSkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw5ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RG
OjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
V2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1T
dGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6
Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaFVu
YWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYg
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICAKLSAg
ICBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5lcihX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZh
dWx0UG9saWN5LCBOU1VSTCAqYXBwTGlua1VSTCA9IG5pbCk7CisgICAgUmV0YWluUHRyPFdlYkZy
YW1lUG9saWN5TGlzdGVuZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBkZWZhdWx0UG9saWN5LCBOU1VSTCAqYXBwTGlua1VSTCA9IG5pbCk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIFdlYkNvcmU6OkZvcm1TdGF0ZSopIGNvbnN0OwogICAgIApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI0MDc3MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktl
eSA9IEAiV2ViUAogCiBAaW50ZXJmYWNlIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIgOiBOU09iamVj
dCA8V2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lcj4g
ewogICAgIFJlZlB0cjxGcmFtZT4gX2ZyYW1lOworICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBf
aWRlbnRpZmllcjsKICAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIF9wb2xpY3lGdW5jdGlvbjsKICNp
ZiBIQVZFKEFQUF9MSU5LUykKICAgICBSZXRhaW5QdHI8TlNVUkw+IF9hcHBMaW5rVVJMOwpAQCAt
MTg5LDkgKzE5MCw5IEBAIEBpbnRlcmZhY2UgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciA6IE5TT2IK
ICAgICBQb2xpY3lBY3Rpb24gX2RlZmF1bHRQb2xpY3k7CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJh
bWU6KEZyYW1lKilmcmFtZSBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBv
bGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5Owor
LSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUqKWZyYW1lIGlkZW50aWZpZXI6KFBvbGljeUNoZWNr
SWRlbnRpZmllcilpZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOihGcmFtZVBvbGljeUZ1bmN0aW9u
JiYpcG9saWN5RnVuY3Rpb24gZGVmYXVsdFBvbGljeTooUG9saWN5QWN0aW9uKWRlZmF1bHRQb2xp
Y3k7CiAjaWYgSEFWRShBUFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJh
bWUgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBk
ZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOihOU1VS
TCAqKXVybDsKKy0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBpZGVudGlmaWVyOihQ
b2xpY3lDaGVja0lkZW50aWZpZXIpaWRlbnRpZmllciBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xp
Y3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilk
ZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6KE5TVVJMICopdXJsOwogI2VuZGlmCiAKIC0gKHZvaWQp
aW52YWxpZGF0ZTsKQEAgLTg2Niw3ICs4NjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFNob3coCiAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJW
aWV3U2hvdzp3ZWJWaWV3XTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAq
d2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTg3NCw3ICs4NzUs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0
Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTptX3dlYkZyYW1lLmdl
dCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRV
cFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246OlVzZSkuZ2V0
KCldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0
VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0
aW9uOjpVc2UpLmdldCgpXTsKIH0KIAogCkBAIC04OTcsNyArODk4LDcgQEAgc3RhdGljIEJPT0wg
c2hvdWxkVHJ5QXBwTGluayhXZWJWaWV3ICp3ZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1T
dGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQk9P
TCB0cnlBcHBMaW5rID0gc2hvdWxkVHJ5QXBwTGluayh3ZWJWaWV3LCBhY3Rpb24sIG51bGxwdHIp
OwpAQCAtOTA2LDEwICs5MDcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOmFjdGlv
bkRpY3Rpb25hcnkoYWN0aW9uLCBmb3JtU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3k6OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJh
bWVOYW1lOmZyYW1lTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3Rl
bmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6
SWdub3JlLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCld
OworICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5
TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUq
IGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVu
Y3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3Rh
dGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewog
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAg
IEJPT0wgdHJ5QXBwTGluayA9IHNob3VsZFRyeUFwcExpbmsod2ViVmlldywgYWN0aW9uLCBjb3Jl
KG1fd2ViRnJhbWUuZ2V0KCkpKTsKQEAgLTkxOCw3ICs5MTksNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xp
Y3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIHRyeUFw
cExpbmsgPyAoTlNVUkwgKilyZXF1ZXN0LnVybCgpIDogbmlsKS5nZXQoKV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5
QXBwTGluayA/IChOU1VSTCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtOTY2LDcgKzk2
Nyw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICAgICB9CiAK
ICAgICBOU0RpY3Rpb25hcnkgKnZhbHVlcyA9IG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5
KGZvcm1TdGF0ZSk7Ci0gICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1fd2ViRnJhbWUu
Z2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZvcm06d2l0aFZh
bHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0KGZvcm1TdGF0
ZS5zb3VyY2VEb2N1bWVudCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3JtKCkpLCB2YWx1
ZXMsIHNldFVwUG9saWN5TGlzdGVuZXIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFBvbGljeUFjdGlvbikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVy
KCk7IH0sIFBvbGljeUFjdGlvbjo6SWdub3JlKS5nZXQoKSk7CisgICAgQ2FsbEZvcm1EZWxlZ2F0
ZShnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJh
bWU6d2lsbFN1Ym1pdEZvcm06d2l0aFZhbHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJG
cmFtZS5nZXQoKSwga2l0KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVudCgpLmZyYW1lKCkpLCBraXQo
JmZvcm1TdGF0ZS5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlzdGVuZXIoUG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHsgfSwKKyAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKSBt
dXRhYmxlIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfSwKKyAgICAgICAgUG9saWN5QWN0aW9uOjpJ
Z25vcmUpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Q
cm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0xNTE5LDcgKzE1MjIs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlCiB7CiB9CiAKLVJl
dGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0
VXBQb2xpY3lMaXN0ZW5lcihGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGljeUFj
dGlvbiBkZWZhdWx0UG9saWN5LCBOU1VSTCAqYXBwTGlua1VSTCkKK1JldGFpblB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5l
cihQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYm
IGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gZGVmYXVsdFBvbGljeSwgTlNVUkwgKmFwcExpbmtVUkwp
CiB7CiAgICAgLy8gRklYTUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11
bHRpcGxlIGFjdGl2ZSBwb2xpY3kgbGlzdGVuZXJzLgogICAgIFttX3BvbGljeUxpc3RlbmVyIGlu
dmFsaWRhdGVdOwpAQCAtMTUyNywxMCArMTUzMCwxMCBAQCBSZXRhaW5QdHI8V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcj4gV2ViRnJhCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+
IHBvbGljeUxpc3RlbmVyOwogI2lmIEhBVkUoQVBQX0xJTktTKQogICAgIGlmIChhcHBMaW5rVVJM
KQotICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgcG9saWN5RnVu
Y3Rpb246V1RGTW92ZShmdW5jdGlvbikgZGVmYXVsdFBvbGljeTpkZWZhdWx0UG9saWN5IGFwcExp
bmtVUkw6YXBwTGlua1VSTF0pOworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFt
ZS5nZXQoKSkgaWRlbnRpZmllcjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVu
Y3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOmFwcExpbmtVUkxd
KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtb
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhGcmFtZTpjb3JlKG1fd2ViRnJh
bWUuZ2V0KCkpIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6
ZGVmYXVsdFBvbGljeV0pOworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJG
cmFtZVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5n
ZXQoKSkgaWRlbnRpZmllcjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rp
b24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeV0pOwogCiAgICAgbV9wb2xpY3lMaXN0ZW5l
ciA9IHBvbGljeUxpc3RlbmVyLmdldCgpOwogCkBAIC0yMzg0LDEyICsyMzg3LDEzIEBAICsgKHZv
aWQpaW5pdGlhbGl6ZQogI2VuZGlmCiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilm
cmFtZSBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9u
IGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5CistIChpZClpbml0V2l0
aEZyYW1lOihGcmFtZSopZnJhbWUgaWRlbnRpZmllcjooUG9saWN5Q2hlY2tJZGVudGlmaWVyKWlk
ZW50aWZpZXIgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5j
dGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeQogewogICAgIHNl
bGYgPSBbc2VsZiBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
KyAgICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgX2ZyYW1lID0gZnJhbWU7CiAgICAg
X3BvbGljeUZ1bmN0aW9uID0gV1RGTW92ZShwb2xpY3lGdW5jdGlvbik7CiAgICAgX2RlZmF1bHRQ
b2xpY3kgPSBkZWZhdWx0UG9saWN5OwpAQCAtMjM5OCw5ICsyNDAyLDkgQEAgLSAoaWQpaW5pdFdp
dGhGcmFtZTooRnJhbWUqKWZyYW1lIHBvbGljeQogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCi0t
IChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9s
aWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24p
ZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOihOU1VSTCAqKWFwcExpbmtVUkwKKy0gKGlkKWluaXRX
aXRoRnJhbWU6KEZyYW1lKilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50aWZpZXIp
aWRlbnRpZmllciBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1
bmN0aW9uIGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFwcExpbmtV
Ukw6KE5TVVJMICopYXBwTGlua1VSTAogewotICAgIHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1l
OmZyYW1lIHBvbGljeUZ1bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV07CisgICAgc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUg
aWRlbnRpZmllcjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rp
b24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeV07CiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwogCkBAIC0yNDE0LDcgKzI0MTgsNyBAQCAtICh2b2lkKWludmFsaWRhdGUK
IHsKICAgICBfZnJhbWUgPSBudWxscHRyOwogICAgIGlmIChhdXRvIHBvbGljeUZ1bmN0aW9uID0g
c3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBwb2xpY3lG
dW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBv
bGljeUFjdGlvbjo6SWdub3JlLCBfaWRlbnRpZmllcik7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpA
QCAtMjQyNyw3ICsyNDMxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgX2ZyYW1lID0gbnVsbHB0
cjsKICAgICBpZiAoYXV0byBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1
bmN0aW9uLCBudWxscHRyKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAi
Q2xpZW50IGFwcGxpY2F0aW9uIGZhaWxlZCB0byBtYWtlIGEgcG9saWN5IGRlY2lzaW9uIHZpYSBX
ZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyLCB1c2luZyBkZWZhdWx0UG9saWN5ICVoaHUiLCBfZGVm
YXVsdFBvbGljeSk7Ci0gICAgICAgIHBvbGljeUZ1bmN0aW9uKF9kZWZhdWx0UG9saWN5KTsKKyAg
ICAgICAgcG9saWN5RnVuY3Rpb24oX2RlZmF1bHRQb2xpY3ksIF9pZGVudGlmaWVyKTsKICAgICB9
CiAKICAgICBbc3VwZXIgZGVhbGxvY107CkBAIC0yNDQwLDcgKzI0NDQsNyBAQCAtICh2b2lkKXJl
Y2VpdmVkUG9saWN5RGVjaXNpb246KFBvbGljeUFjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51
bGxwdHIpKQotICAgICAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOworICAgICAgICBwb2xpY3lG
dW5jdGlvbihhY3Rpb24sIF9pZGVudGlmaWVyKTsKIH0KIAogLSAodm9pZClpZ25vcmUKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0MDc3MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAyLTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9u
cyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGlu
Z3MtMDA2Lmh0bWw6CisKIDIwMTktMDEtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRW5hYmxlIHN3aXBlIHRlc3RzIG9uIGlPUwpJbmRleDogTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAyNDA3NzEpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsOCBAQAogIyBQbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0
cy4gU2tpcHBlZCBoZXJlLCB0aGVuIHJlLWVuYWJsZWQgb24gdGhlIGFwcHJvcHJpYXRlIHBsYXRm
b3JtLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCit3ZWJnbCBbIFNraXAg
XQorCiBjb21wb3NpdGluZy9pb3MgWyBTa2lwIF0KIGNzczMvdG91Y2gtYWN0aW9uIFsgU2tpcCBd
CiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA2Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0w
MDYuaHRtbAkocmV2aXNpb24gMjQwNzcxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0wMDYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCAr
MjUsOCBAQCBmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKICAgICAgICAgbW92ZVNlbGVjdGlvbkZv
cndhcmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQog
ICAgICAgICBleHRlbmRTZWxlY3Rpb25Gb3J3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7Ci0gICAg
Y29weUNvbW1hbmQoKTsKLSAgICBwYXN0ZUNvbW1hbmQoKTsKKy8vICAgIGNvcHlDb21tYW5kKCk7
CisvLyAgICBwYXN0ZUNvbW1hbmQoKTsKIH0KIAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360970</attachid>
            <date>2019-02-02 01:26:45 -0800</date>
            <delta_ts>2019-02-02 20:06:52 -0800</delta_ts>
            <desc>Updated for trunk</desc>
            <filename>bug-194189-20190202012644.patch</filename>
            <type>text/plain</type>
            <size>95047</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE5LTAyLTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRpb24g
cG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlZCBQb2xpY3lDaGVja0lkZW50aWZpZXIgdG8gcGFpciBlYWNoIG5hdmln
YXRpb24gcG9saWN5IGNoZWNrIHJlcXVlc3Qgd2l0aCBhIGRlY2lzaW9uLAorICAgICAgICBhbmQg
ZGVwbG95ZWQgaXQgaW4gUG9saWN5Q2hlY2tlci4gVGhlIGlkZW50aWZpZXIgaXMgcGFzc2VkIGZy
b20gV2ViQ29udGVudCBwcm9jZXNzIHRvIFVJIHByb2Nlc3MKKyAgICAgICAgaW4gV2ViS2l0Miwg
YW5kIHBhc3NlZCBpdCBiYWNrIHdpdGggdGhlIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICBC
ZWNhdXNlIFBvbGljeUNoZWNrSWRlbnRpZmllciBlbWJlZHMgdGhlIHByb2Nlc3MgaWRlbnRpZmll
ciBmcm9tIHdoaWNoIGEgbmF2aWdhdGlvbiBwb2xpY3kgaXMgY2hlY2tlZCwKKyAgICAgICAgd2Ug
d291bGQgYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBVSSBwcm9jZXNzIGhhZCBzZW50IHRoZSBkZWNp
c2lvbiB0byBhIHdyb25nIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gYWRkcyByZWxlYXNlIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSBpcyBzZXQgd2hlbmV2ZXIKKyAgICAgICAgd2UncmUgcmVxdWVzdGluZyBh
IG5hdmlnYXRpb24gcG9saWN5IGNoZWNrLgorCisgICAgICAgIFRoZXNlIGNvZGUgY2hhbmdlcyBz
aG91bGQgZWl0aGVyOgorICAgICAgICAxLiBGaXggY3Jhc2hlcyBpbiBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IHdoZXJlIGlzQmFja0ZvcndhcmRMb2FkVHlw
ZSB3b3VsZAorICAgICAgICAgICByZXR1cm4gdHJ1ZSB5ZXQgaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpIGlzIG51bGwuCisgICAgICAgIDIuIERldGVjdCBhIGJ1ZyB0aGF0IFVJIHByb2Nlc3Mg
Y2FuIHNlbmQgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiB0byBhIHdyb25nIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgMy4gUnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IHRoYXQgKDIp
IGV4aXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVu
Y29kZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6aXNWYWxpZEZvcik6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgaWRlbnRpZmVyIG1hdGNoZXMuIEFsc28gcmVsZWFzZSBhc3NlcnRzCisg
ICAgICAgIHRoYXQgdGhlIHByb2Nlc3MgSUQgaXMgc2FtZSwgYW5kIHRoYXQgbV9jaGVjayBpcyBh
bHdheXMgbm90IHplcm8gKG1lYW5pbmcgaXQncyBhIGdlbmVyYXRlZCB2YWx1ZSkuCisgICAgICAg
IFRoZSBmYWlsdXJlIG9mIHRoZXNlIHJlbGVhc2UgYXNzZXJ0aW9ucyB3b3VsZCBpbmRpY2F0ZSB0
aGF0IHRoZXJlIGlzIGEgYnVnIGluIFVJIHByb2Nlc3MsIHdoaWNoIHJlc3VsdHMgaW4KKyAgICAg
ICAgYSBwb2xpY3kgZGVjaXNpb24gcmVzcG9uc2UgYmVpbmcgc2VudCB0byBhIHdyb25nIFdlYiBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KTogRXhpdCBlYXJseSBpZiBpc1ZhbGlkRm9yIGZhaWxzLgorICAgICAgICAoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE4LTEyLTE2ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IGFkZGl0aW9u
YWwgU3RyaW5nOjpmb3JtYXQgY2xpZW50cyB0byBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI0MDg5
MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyRmllbGQuaCIKICNp
bmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgorI2lu
Y2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxpbmtJY29uQ29s
bGVjdG9yLmgiCkBAIC02NjIsNyArNjYzLDEwIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXMKICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kp
OwogICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwogCi0gICAgZnJhbWVM
b2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5l
d1JlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21w
bGV0aW9uSGFuZGxlcikpOworICAgIC8vIEZJWE1FOiBBZGQgYSBsb2FkIHR5cGUgY2hlY2suCisg
ICAgYXV0byYgcG9saWN5Q2hlY2tlciA9IGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIu
bG9hZFR5cGUoKSkgfHwgZnJhbWVMb2FkZXIoKS0+aGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgp
KTsKKyAgICBwb2xpY3lDaGVja2VyLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1Jl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiBib29sIERvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5nUmVxdWVz
dEZyb21BcHBsaWNhdGlvbkNhY2hlKCkKQEAgLTgzOSw3ICs4NDMsMTAgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbWFpblJlc291cmNlTG9hZGVyID0gdGhpcy0+bWFpblJlc291cmNlTG9hZGVyKCk7CiAgICAg
aWYgKG1haW5SZXNvdXJjZUxvYWRlcikKICAgICAgICAgbWFpblJlc291cmNlTG9hZGVyLT5tYXJr
SW5Bc3luY1Jlc3BvbnNlUG9saWN5Q2hlY2soKTsKLSAgICBmcmFtZUxvYWRlcigpLT5jaGVja0Nv
bnRlbnRQb2xpY3kobV9yZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbWFpblJlc291cmNlTG9hZGVyID0gV1RGTW92ZShtYWluUmVzb3VyY2VMb2FkZXIpLCBj
b21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKFBv
bGljeUFjdGlvbiBwb2xpY3kpIG11dGFibGUgeworICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIg
PSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgZnJhbWVMb2FkZXIoKS0+
Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3VyY2VMb2FkZXIgPSBXVEZN
b3ZlKG1haW5SZXNvdXJjZUxvYWRlciksCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpLCByZXF1ZXN0SWRlbnRpZmllcl0gKFBvbGlj
eUFjdGlvbiBwb2xpY3ksIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50aWZlaXIp
IG11dGFibGUgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXNwb25zZUlkZW50aWZlaXIuaXNW
YWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpOwogICAgICAgICBjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeShwb2xpY3kpOwogICAgICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQogICAgICAg
ICAgICAgbWFpblJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2VQb2xpY3koKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDA4OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUyLDExICs0NTIsMTEgQEAgUEFMOjpTZXNzaW9uSUQgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6cwogICAgIHJldHVybiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwog
fQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25N
b2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5Myw5IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGkKICAgICBGcmFtZSogZGlzcGF0Y2hDcmVh
dGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbCB7IH0KLSAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcm
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikg
ZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQb2xpY3lDaGVja0lkZW50
aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWwgeyB9CisgICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIFBvbGljeUNo
ZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbFBvbGljeUNoZWNrKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9J
bXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMs
MTUgKzM2MywxNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgCiAg
ICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQb2xpY3koY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQb2xpY3koY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGlmICgh
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICAvLyBMb2FkIHdhcyBjYW5jZWxsZWQK
LSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICBmdW5jdGlv
bihQb2xpY3lBY3Rpb246Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJlc3Bv
bnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIFdURk1vdmUoZnVuY3Rpb24p
KTsKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhlIHBvbGljeSBjaGVjayBpZGVudGlmaWVyLgor
ICAgIGNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UocmVzcG9uc2UsIGFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSwgaWRlbnRpZmllciwgV1RGTW92ZShmdW5j
dGlvbikpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRS
ZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTEzNzgsNiArMTM3OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWUKIAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWVmZmVj
dGl2ZUZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9uID0gYWN0aW9uLmNvcHlX
aXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCkp
KTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUo
YWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3RhdGUpLCBlZmZlY3RpdmVG
cmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGlj
eSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCld
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZv
cm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAg
ICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRl
LmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CkBAIC0xMzk4LDYgKzE0MDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZy
YW1lTG9hZFJlcXVlCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENo
ZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUobmV3TG9hZFR5
cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgICAgIHBvbGljeUNoZWNr
ZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0KSwgUmVzb3VyY2VSZXNw
b25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCks
IFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2Zy
YW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+
JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pIHsK
ICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3ko
cmVxdWVzdCwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5j
aHJvbm91cyk7CkBAIC0xNDYxLDYgKzE0NjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKEZy
YW1lTG9hZFJlcXVlc3QmCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRDaGVja05ld1dpbmRvd1Bv
bGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1
ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6
OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KCkgfTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRM
b2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkpLCB7IH0sIHJlcXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250
aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZy
YW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CiAgICAgICAgIH0pOwpA
QCAtMTU4NCw2ICsxNTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExv
YWRlcgogICAgIH0KIAogICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZSh0eXBlKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5cGUpIHx8IGhpc3Rvcnko
KS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZm9ybVN0
YXRlOwogCiAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9hZGVyLT5yZXF1ZXN0KCku
aHR0cE1ldGhvZCgpOwpAQCAtMTU5NSw2ICsxNjAwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcgogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0VHJpZ2dl
cmluZ0FjdGlvbihXVEZNb3ZlKGFjdGlvbikpOwogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+
c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcG9saWN5
Q2hlY2tlcigpLnN0b3BDaGVjaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9y
d2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSB8fCBoaXN0b3J5KCkucHJv
dmlzaW9uYWxJdGVtKCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9u
c2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwg
V1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4m
JiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikgewog
ICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShy
ZXF1ZXN0LCBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPT0gTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uOjpDb250aW51ZUxvYWQpOwogICAgICAgICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNo
cm9ub3VzKTsKQEAgLTE2MjksNiArMTYzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCkpIHx8
IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNr
TmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBSZXNv
dXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIsIFdURk1vdmUo
Zm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24g
bmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAgICAgY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgbmF2aWdhdGlv
blBvbGljeURlY2lzaW9uLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMzAxMCw2ICszMDE3LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xpY3lD
aGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdX
aW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHdvcmtpbmdSZXNvdXJjZVJlcXVl
c3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVl
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5
KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRp
bnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHJldmlzaW9uIDI0MDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHN0cnVjdCBXaW5kb3dGZWF0
dXJlczsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9h
ZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIAot
dXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
UG9saWN5QWN0aW9uKT47Cit1c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdU
Rjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+Owog
CiBjbGFzcyBGcmFtZUxvYWRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVMb2Fk
ZXIpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGVmZXJzTG9h
ZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKKyAgICB2b2lkIGNo
ZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKIAogICAgIHZvaWQgZGlk
RXhwbGljaXRPcGVuKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIGVudW0g
Y2xhc3MgUG9saWN5RGVjaXNpb25Nb2RlOwogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbjsK
IAotdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlvbik+IEZyYW1lUG9saWN5
RnVuY3Rpb247Cit0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9saWN5QWN0aW9uLCBQb2xp
Y3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xOTAsOSArMTkwLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0
YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lz
aW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5o
CShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQcm9jZXNzSWRlbnRpZmllci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY3LDQ4IEBAIGVudW0gY2xhc3MgRnJhbWVM
b2FkVHlwZSA6IHVpbnQ4X3QgewogICAgIFJlbG9hZEV4cGlyZWRPbmx5CiB9OwogCitjbGFzcyBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgeworcHVibGljOgorICAgIFBvbGljeUNoZWNrSWRlbnRpZmll
cigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNWYWxpZEZvcihQb2xpY3lDaGVja0lkZW50aWZp
ZXIpOworICAgIHN0YXRpYyBQb2xpY3lDaGVja0lkZW50aWZpZXIgZ2VuZXJhdGUoKTsKKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2xpY3lDaGVja0lkZW50aWZpZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3MgPT0gb3RoZXIubV9wcm9jZXNzICYmIG1fY2hlY2sgPT0gb3Ro
ZXIubV9jaGVjazsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxQb2xpY3lDaGVja0lkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6
CisgICAgUG9saWN5Q2hlY2tJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MsIHVp
bnQ2NF90IGNoZWNrKQorICAgICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQorICAgICAgICAsIG1f
Y2hlY2soY2hlY2spCisgICAgeyB9CisKKyAgICBQcm9jZXNzSWRlbnRpZmllciBtX3Byb2Nlc3M7
CisgICAgdWludDY0X3QgbV9jaGVjayB7IDAgfTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+Cit2b2lkIFBvbGljeUNoZWNrSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3Byb2Nlc3MgPDwgbV9jaGVjazsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFBvbGljeUNoZWNrSWRlbnRpZmllcj4gUG9s
aWN5Q2hlY2tJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRv
IHByb2Nlc3MgPSBQcm9jZXNzSWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICgh
cHJvY2VzcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHVpbnQ2NF90IGNo
ZWNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2hlY2spKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFBvbGljeUNoZWNrSWRlbnRpZmllciB7ICpwcm9jZXNz
LCBjaGVjayB9OworfQorCiBlbnVtIGNsYXNzIE5ld0ZyYW1lT3BlbmVyUG9saWN5IDogdWludDhf
dCB7CiAgICAgU3VwcHJlc3MsCiAgICAgQWxsb3cKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI0MDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMjEgQEAg
c3RhdGljIGJvb2wgaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQbwogICAgIHJldHVybiBvd25l
ckVsZW1lbnQtPmRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Q2hpbGRG
cmFtZUZyb21Tb3VyY2UodXJsLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpOwogfQogCitQb2xp
Y3lDaGVja0lkZW50aWZpZXIgUG9saWN5Q2hlY2tJZGVudGlmaWVyOjpnZW5lcmF0ZSgpCit7Cisg
ICAgc3RhdGljIHVpbnQ2NF90IGNvdW50ID0gMDsKKyAgICBjb3VudCsrOworICAgIHJldHVybiBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgeyBQcm9jZXNzOjppZGVudGlmaWVyKCksIGNvdW50IH07Cit9
CisKK2Jvb2wgUG9saWN5Q2hlY2tJZGVudGlmaWVyOjppc1ZhbGlkRm9yKFBvbGljeUNoZWNrSWRl
bnRpZmllciBleHBlY3RlZElkZW50aWZpZXIpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKG1fcHJvY2VzcyA9PSBleHBlY3RlZElkZW50aWZpZXIubV9wcm9jZXNzLCAiUmVjZWl2
ZWQgYSBwb2xpY3kgY2hlY2sgcmVzcG9uc2UgZm9yIGEgd3JvbmcgcHJvY2VzcyIpOworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShtX2NoZWNrLCAiUmVjZWl2ZWQgYSBub24tZ2VuZXJh
dGVkIHBvbGljeSBjaGVjayBpZGVudGlmaWVyIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKG1fY2hlY2sgPD0gZXhwZWN0ZWRJZGVudGlmaWVyLm1fY2hlY2ssICJSZWNlaXZlZCBh
IHBvbGljeSBjaGVjayByZXNwb25zZSBmcm9tIHRoZSBmdXR1cmUiKTsKKyAgICByZXR1cm4gbV9j
aGVjayA9PSBleHBlY3RlZElkZW50aWZpZXIubV9jaGVjazsKK30KKwogUG9saWN5Q2hlY2tlcjo6
UG9saWN5Q2hlY2tlcihGcmFtZSYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwg
bV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5KGZhbHNlKQpAQCAtMTcwLDkgKzE4
NSwxNiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljCiAKICAgICBh
dXRvIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xp
Y3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyA/IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVj
ZXNzYXJ5KHJlcXVlc3QpIDogQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgeyB9OwogCisg
ICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwog
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgp
LmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKLSAg
ICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIGZvcm1TdGF0ZS5n
ZXQoKSwgcG9saWN5RGVjaXNpb25Nb2RlLCBbdGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgZm9ybVN0YXRlID0gV1RG
TW92ZShmb3JtU3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmls
ZW5hbWUpLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGlt
ZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgIG1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgp
LCBwb2xpY3lEZWNpc2lvbk1vZGUsIHJlcXVlc3RJZGVudGlmaWVyLAorICAgICAgICBbdGhpcywg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSwgZm9ybVN0YXRlID0gV1RGTW92ZShmb3JtU3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFt
ZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLAorICAgICAgICAgYmxvYlVSTExpZmV0aW1l
RXh0ZW5zaW9uID0gV1RGTW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pLCByZXF1ZXN0SWRl
bnRpZmllcl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmll
ciByZXNwb25zZUlkZW50aWZpZXIpIG11dGFibGUgeworCisgICAgICAgIGlmICghcmVzcG9uc2VJ
ZGVudGlmaWVyLmlzVmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0
dXJuOworCiAgICAgICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IGZh
bHNlOwogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CkBAIC0yMDYsNyArMjI4LDE0
IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kKIAogICAgIGF1dG8g
YmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3Nh
cnkocmVxdWVzdCk7CiAKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24sIHJlcXVlc3QsIGZv
cm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1
ZXN0LCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlv
bkFjdGlvbiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0
ZW5zaW9uID0gV1RGTW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gUG9s
aWN5Q2hlY2tJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFj
dGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlm
aWVyLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LAorICAgICAgICBmb3JtU3Rh
dGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RG
TW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pLAorICAgICAgICByZXF1ZXN0SWRlbnRpZmll
cl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNw
b25zZUlkZW50aWZpZXIpIG11dGFibGUgeworCisgICAgICAgIGlmICghcmVzcG9uc2VJZGVudGlm
aWVyLmlzVmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuOwor
CiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpEb3dubG9hZDoKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFy
dERvd25sb2FkKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDg5MykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIw
MTktMDItMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVmFs
aWRhdGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb25zIHRvIGF2b2lkIGNyYXNoZXMgaW4gY29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciBh
cm91bmQgZnVuY3Rpb25zIGFuZCBzdG9yZSBpdCBpbiBQb2xpY3lEZWNpc2lvblNlbmRlcgorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZp
Z2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICBXZSBhbHNvIHN0b3JlIGl0IGluIFdl
YkZyYW1lIGluIHRoZSBjYXNlIHRoZSBwb2xpY3kgZGVjaXNpb24gaGFkIHRvIGJlIGludmFsaWRh
dGVkCisgICAgICAgIGJlZm9yZSB0aGUgZGVjaXNpb24gd2FzIHJlY2VpdmVkICh2aWEgV2ViRnJh
bWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcikuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRl
cik6IEFkZGVkIFBvbGljeUNoZWNrSWRlbnRpZmllciBhcyBhIG1lbWJlci4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6c2VuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXI6OlBvbGlj
eURlY2lzaW9uU2VuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZl
ZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRVcFBvbGlj
eUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lM
aXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDE4LTEyLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBDb252ZXJ0IGFkZGl0aW9uYWwgU3RyaW5nOjpmb3JtYXQgY2xpZW50cyB0byBh
bHRlcm5hdGl2ZSBhcHByb2FjaGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkJKHJldmlzaW9uIDI0MDg5MykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw2ICs0MjAsNyBAQCBkZWYg
aGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlBheW1lbnRNZXRob2RV
cGRhdGUnOiBbJzxXZWJDb3JlL0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpQbHVnaW5JbmZvJzogWyc8V2ViQ29yZS9QbHVnaW5EYXRhLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpQb2xpY3lBY3Rpb24nOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVy
VHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcic6IFsn
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UmVjZW50
U2VhcmNoJzogWyc8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OlJvdXRlU2hhcmluZ1BvbGljeSc6IFsnPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJzogWyc8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI0MDg5MykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYyLDE2ICsyNjIsMjAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q2hhbmdlUHJvdgogICAgIG1fcGFnZS5kaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgV1RGTW92ZSh1
cmwpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwKKyAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAg
QVNTRVJUKG1fbWFpbkZyYW1lKTsKICAgICBBU1NFUlQobV9tYWluRnJhbWUtPmZyYW1lSUQoKSA9
PSBmcmFtZUlEKTsKLSAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSks
IFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVl
c3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGly
ZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CisgICAgbV9wYWdlLmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBm
cmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0
aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLAorICAgICAgICBXVEZNb3ZlKGZy
YW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHJlc3Bv
bnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAg
ICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklE
LCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0
YSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnN0YXJ0VVJMU2NoZW1lVGFzayhV
UkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgJKHJldmlzaW9uIDI0MDg5MykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDggKzczLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCi0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLAorICAgICAgICB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLAorICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0X3Qg
ZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVp
bnQ2NF90IGZyYW1lSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjc0LDIyICsyNjc0LDI2IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2kKIAogY2xhc3MgV2ViUGFnZVByb3h5
OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvbGljeURlY2lzaW9u
U2VuZGVyPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgU2VuZEZ1bmN0aW9uID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4pPjsKLSAgICBzdGF0aWMgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiBjcmVhdGUoU2VuZEZ1bmN0aW9uJiYgc2VuZEZ1bmN0aW9uKQor
ICAgIHVzaW5nIFNlbmRGdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCBQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93
bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4pPjsKKworICAgIHN0YXRpYyBS
ZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNyZWF0ZShQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwgU2VuZEZ1bmN0aW9uJiYgc2VuZEZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUG9saWN5RGVjaXNpb25TZW5kZXIoV1RGTW92ZShzZW5kRnVuY3Rp
b24pKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvbGljeURlY2lzaW9uU2VuZGVy
KGlkZW50aWZpZXIsIFdURk1vdmUoc2VuZEZ1bmN0aW9uKSkpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHZvaWQgc2VuZChBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICBpZiAobV9zZW5kRnVuY3Rpb24pCi0gICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgbV9zZW5kRnVuY3Rpb24obV9p
ZGVudGlmaWVyLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgIH0KIHByaXZhdGU6
Ci0gICAgUG9saWN5RGVjaXNpb25TZW5kZXIoU2VuZEZ1bmN0aW9uIHNlbmRGdW5jdGlvbikKLSAg
ICAgICAgOiBtX3NlbmRGdW5jdGlvbihXVEZNb3ZlKHNlbmRGdW5jdGlvbikpIHsgfQorICAgIFBv
bGljeURlY2lzaW9uU2VuZGVyKFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZW5k
RnVuY3Rpb24gc2VuZEZ1bmN0aW9uKQorICAgICAgICA6IG1fc2VuZEZ1bmN0aW9uKFdURk1vdmUo
c2VuZEZ1bmN0aW9uKSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAg
ICAgeyB9CiAKICAgICBTZW5kRnVuY3Rpb24gbV9zZW5kRnVuY3Rpb247CisgICAgUG9saWN5Q2hl
Y2tJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNl
bmRlcikKQEAgLTI3MDksNyArMjcxMyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5h
dmlnYXRpb25Qb2wKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnRdKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5hdmln
YXRpb24sIFN1c3BlbmRlZFBhZ2VQcm94eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCku
cHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb2xp
Y3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwKKyAgICAgICAgZGF0
YSA9IFdURk1vdmUoZGF0YSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudF0gKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5hdmln
YXRpb24sIFN1c3BlbmRlZFBhZ2VQcm94eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9u
IGhhcyBiZWVuIGRlc3Ryb3llZCwgdGhlbiBubyBuZWVkIHRvIHByb2NlZWQuCiAgICAgICAgIGlm
IChpc0Nsb3NlZCgpIHx8ICFuYXZpZ2F0aW9uU3RhdGUoKS5oYXNOYXZpZ2F0aW9uKG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpKSkgewogICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUoZGF0YSksIFdURk1vdmUo
c2VuZGVyKSk7CkBAIC00MzU1LDIyICs0MzYwLDMzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdp
blNhZmVCcm93c2luZ0NoZWMKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQotewotICAgIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3Rl
bmVySUQpOwordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQoreworICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJl
ZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmln
aW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRh
dGEpLAorICAgICAgICBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwg
b3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKKyAgICBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCisgICAgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGF1dG8q
IGZyYW1lID0gcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhw
cm9jZXNzLCBmcmFtZSk7CiAKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHBy
b2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5h
dmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1
c2VyRGF0YSwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vz
cy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKKyAgICBhdXRvIHNlbmRlciA9IFBvbGljeURl
Y2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IHByb2Nlc3MuY29w
eVJlZigpXSAoYXV0by4uLiBhcmdzKSB7CiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV9wYWdlSUQpOwotICAgIH0pKTsKKyAgICB9KTsKKworICAgIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShm
cmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAg
ICAgIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9k
eSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHNlbmRlcikp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYgc2VuZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwKKyAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExv
YWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBP
cmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCkBAIC00NDI5LDcgKzQ0NDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgICAgIHNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3Vs
dCA9IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm87CiAKICAgICBhdXRvIGxpc3Rl
bmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVy
ID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdX
YXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgewotICAgICAgICAKKwogICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90
ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgZnJhbWUgPSBmcmFtZS5jb3B5UmVmKCksIHNlbmRlciA9IFdU
Rk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHJlY2VpdmVk
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIHBvbGljaWVzLmdldCgpLCBXVEZN
b3ZlKHNlbmRlcikpOwogICAgICAgICB9OwpAQCAtNDU1Myw5ICs0NTY5LDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24oY28KIH0KICNlbmRpZgogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xp
Y3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKKyAgICBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAg
ICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoV1RGTW92ZShyZXBs
eSkpOworICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlcGx5KSk7CiAKICAgICBhdXRvKiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkgewpAQCAtNDU2OSwxMyArNDU4OCwx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGZyYW1lKTsKICAgICB9CiAKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKG1fcHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3Vy
aXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
V1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVz
dCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKKyAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fcHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92
ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwKKyAgICAgICAgb3JpZ2luYXRpbmdQ
YWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0
Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5kZXIuY29weVJl
ZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlkIG5vdCByZXNwb25kIHN5bmNocm9ub3Vz
bHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KICAgICBzZW5kZXItPnNlbmQoUG9saWN5QWN0aW9u
OjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ1ODMsMTMgKzQ2
MDQsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgogICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwobV9w
cm9jZXNzLCByZXF1ZXN0LnVybCgpKTsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZy
YW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgbGlzdGVuZXJJRCwgZnJhbWVJRF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4m
JiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSURdIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNh
ZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRy
IGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2ll
cyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7Ci0g
ICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6
Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4u
LiBhcmdzKSB7CisKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8uLi4gYXJncykgewogICAgICAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKLSAgICAgICAg
fSkpOworICAgICAgICB9KTsKKworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGlj
eUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0s
IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAogICAgIGlmIChtX3BvbGlj
eUNsaWVudCkKQEAgLTQ2MDksMTIgKzQ2MzMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5ld1dpbgogICAgICAgICAKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCisgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlw
ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGlk
ZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlw
ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1F
VHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2
MjYsMTMgKzQ2NTIsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bgogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlc3BvbnNlLnVybCgpKTsKIAogICAg
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25h
dmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKLSAgICBh
dXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQs
IG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLCBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5
UmVmKCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyos
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0
YWJsZSB7CisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlz
dGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlE
LCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9u
KSwKKyAgICAgICAgcHJvY2VzcyA9IHByb2Nlc3MuY29weVJlZigpXSAoUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdX
YXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgewogICAgICAgICAvLyBGSVhN
RTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2Ug
Y2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4K
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwotICAgICAgICByZWNl
aXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGOjpu
dWxsb3B0LCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9
IFdURk1vdmUocHJvY2VzcyldIChhdXRvLi4uIGFyZ3MpIHsKKworICAgICAgICBhdXRvIHNlbmRl
ciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBw
cm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJncykgewogICAgICAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7Ci0gICAgICAgIH0pKTsK
KyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRl
cikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAogICAg
IGlmIChtX3BvbGljeUNsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzNiw4ICsxNDM2LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRD
aGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwotICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCisgICAgICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAorICAgICAg
ICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxp
c3RlbmVySUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsCisgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpu
dWxsb3B0KTsKQEAgLTE1MjMsMTEgKzE1MjYsMTkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
RGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJG
cmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFt
ZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7Ci0g
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRl
cj4mJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29s
IGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjQwODkzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsMTAgKzEwNSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAK
ICAgICAjIFBvbGljeSBtZXNzYWdlcwotICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAt
PiAoZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlv
bmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVk
Ci0gICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3Ry
dWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGlj
eUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpO
YXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAgIERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRl
bnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBE
ZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwg
c3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKICAgICAjIFByb2dyZXNzIG1lc3Nh
Z2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI0MDg5
MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMCwxNiArNzMwLDE2IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygKICAgICB3ZWJQYWdlLT5zaG93KCk7
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
ID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAg
ICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICBmdW5jdGlvbihQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoIXJlcXVlc3QudXJsKCkuc3RyaW5nKCkpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9s
aWN5QWN0aW9uOjpVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSwgaWRl
bnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0OCw3ICs3NDgsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKHdlYlBhZ2UsIG1fZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSk7CiAgICAg
aWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgZnVu
Y3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246
OlVzZSwgaWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc1OSwxNiAr
NzU5LDE4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBh
dXRvIG5hdmlnYXRpb25JRCA9IHBvbGljeURvY3VtZW50TG9hZGVyID8gc3RhdGljX2Nhc3Q8V2Vi
RG9jdW1lbnRMb2FkZXImPigqcG9saWN5RG9jdW1lbnRMb2FkZXIpLm5hdmlnYXRpb25JRCgpIDog
MDsKICAgICAKICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7Ci0gICAgdWlu
dDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShm
dW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7Ci0gICAgaWYgKCF3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29y
ZUZyYW1lKSwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNl
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKLSAgICAgICAgbV9mcmFt
ZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAwLCB7IH0sIHsgfSk7CisgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1l
OjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1l
SUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgaWRlbnRpZmll
ciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwKKyAgICAgICAgY2FuU2hvd1Jlc3Bv
bnNlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIFBv
bGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
CisgICAgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlv
biYmIGZ1bmN0aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFt
ZS0+cGFnZSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246
Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3OSwx
MSArNzgxLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAg
ICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwg
cmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRs
ZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpV
c2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFt
ZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5h
dmlnYXRpb25BY3Rpb246Ok5vKTsKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+
c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJh
bWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRh
IG5hdmlnYXRpb25BY3Rpb25EYXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRp
b25UeXBlID0gYWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgpOwpAQCAtNzk3LDcgKzc5OSw4IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZSA9IG5hdmlnYXRpb25BY3Rpb24uZG93bmxvYWRBdHRy
aWJ1dGUoKTsKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8gbV9m
cmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyOwotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG1fZnJhbWUtPmZy
YW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwKKyAgICAgICAgZnJhbWVOYW1lLCBsaXN0ZW5lcklE
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRl
UG9saWNpZXMpCkBAIC04MTgsMTEgKzgyMSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjphcHBseVRvRG9jdW1lCiAgICAgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50
TG9hZGVyKFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgKmRvY3VtZW50TG9hZGVyKTsKIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFBvbGljeURlY2lzaW9uTW9kZSBwb2xp
Y3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsCisgICAgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lE
ZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciByZXF1ZXN0SWRlbnRp
ZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXdl
YlBhZ2UpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MzAsNyArODM0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgLy8gQWx3YXlzIGlnbm9yZSByZXF1ZXN0
cyB3aXRoIGVtcHR5IFVSTHMuIAogICAgIGlmIChyZXF1ZXN0LmlzRW1wdHkoKSkgewotICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6SWdub3JlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTg0MSwxMSArODQ1LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWQKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5
Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih3ZWJQYWdlLCBtX2ZyYW1l
LCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdL
QnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rp
b246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCByZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgdWludDY0X3QgbGlz
dGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiks
IFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpZZXMpOworCisgICAgdWludDY0X3QgbGlz
dGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIocmVxdWVzdElkZW50aWZpZXIs
IFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzKTsK
IAogICAgIEFTU0VSVChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpKTsKICAgICBhdXRvIHJl
cXVlc3RlciA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkudmFsdWUoKTsKQEAgLTg4MSw3
ICs4ODUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAg
ICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAg
aWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgcmVx
dWVzdElkZW50aWZpZXIpOwogICAgIFdlYkRvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4oY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xp
Y3lEb2N1bWVudExvYWRlcigpKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXaGVuIHdlIHJlY2VpdmUgYSByZWRpcmVjdCBhZnRlciB0aGUgbmF2aWdhdGlv
biBwb2xpY3kgaGFzIGJlZW4gZGVjaWRlZCBmb3IgdGhlIGluaXRpYWwgcmVxdWVzdCwKQEAgLTg5
OCwyMiArOTAyLDI4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQK
IAogICAgIGlmIChwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5j
aHJvbm91cykgewogICAgICAgICB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQ7CisgICAgICAgIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50aWZpZXI7CiAgICAgICAg
IFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb247CiAgICAgICAgIERvd25sb2FkSUQgZG93bmxvYWRJ
RDsKICAgICAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVz
OwogCi0gICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgp
LCBtX2ZyYW1lLT5pc01haW5GcmFtZSgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShj
b3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZp
Z2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25J
RCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKLSAgICAgICAgICAgIG1fZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgMCwgeyB9LCB7IH0pOworICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJh
bWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoY29yZUZyYW1lKSwKKyAgICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBk
b2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9u
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAorICAgICAgICAgICAgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpLAorICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHJlc3BvbnNlSWRlbnRp
ZmllciwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQ
b2xpY2llcykpKSB7CisgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgcmVzcG9uc2VJZGVudGlmaWVyLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHBvbGljeUFjdGlv
biwgMCwgZG93bmxvYWRJRCwgeyB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIHJlc3BvbnNlSWRlbnRpZmllciwgcG9saWN5QWN0aW9uLCAw
LCBkb3dubG9hZElELCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJU
KHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7
Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0
aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
b3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVk
aXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCi0g
ICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOworICAgIGlmICghd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3Jl
RnJhbWUpLAorICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdCwKKyAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJv
ZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3Rl
bmVySUQpKSkKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3Rl
bmVySUQsIHJlcXVlc3RJZGVudGlmaWVyLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7
IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjQwODkzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw5ICsxMjMsOSBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAgICAgCi0g
ICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAg
dm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hV
bmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwxMiArMjEwLDEzIEBAIHZvaWQg
V2ViRnJhbWU6OmludmFsaWRhdGUoKQogICAgIG1fY29yZUZyYW1lID0gMDsKIH0KIAotdWludDY0
X3QgV2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmIHBvbGljeUZ1bmN0aW9uLCBGb3JOYXZpZ2F0aW9uQWN0aW9uIGZvck5hdmlnYXRpb25B
Y3Rpb24pCit1aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmIHBvbGljeUZ1bmN0aW9uLCBGb3JOYXZpZ2F0aW9uQWN0aW9uIGZvck5hdmlnYXRpb25B
Y3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBw
b3J0IG11bHRpcGxlIGFjdGl2ZSBwb2xpY3kgbGlzdGVuZXJzLgogCiAgICAgaW52YWxpZGF0ZVBv
bGljeUxpc3RlbmVyKCk7CiAKKyAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwog
ICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IGdlbmVyYXRlTGlzdGVuZXJJRCgpOwogICAgIG1fcG9s
aWN5RnVuY3Rpb24gPSBXVEZNb3ZlKHBvbGljeUZ1bmN0aW9uKTsKICAgICBtX3BvbGljeUZ1bmN0
aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9IGZvck5hdmlnYXRpb25BY3Rpb247CkBAIC0yNDQsOCAr
MjQ1LDEwIEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigKIAogICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAgICBtX3BvbGljeUxpc3RlbmVySUQgPSAwOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IG1fcG9saWN5SWRlbnRpZmllcjsKKyAgICBtX3BvbGljeUlk
ZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4
Y2hhbmdlKG1fcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBmdW5jdGlvbihQb2xp
Y3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAqaWRlbnRpZmllcik7CiAgICAgbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24g
PSBGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObzsKIAogICAgIGF1dG8gd2lsbFN1Ym1pdEZvcm1Db21w
bGV0aW9uSGFuZGxlcnMgPSBXVEZNb3ZlKG1fd2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxl
cnMpOwpAQCAtMjUzLDExICsyNTYsMTQgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGlj
eUxpc3RlbmVyKAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYkZy
YW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5
QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElEIGRvd25sb2Fk
SUQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9p
ZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBQb2xpY3lBY3Rpb24g
YWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYg
KCFtX2NvcmVGcmFtZSB8fCAhbV9wb2xpY3lMaXN0ZW5lcklEIHx8IGxpc3RlbmVySUQgIT0gbV9w
b2xpY3lMaXN0ZW5lcklEIHx8ICFtX3BvbGljeUZ1bmN0aW9uKQogICAgICAgICByZXR1cm47CiAK
KyAgICBBU1NFUlQoaWRlbnRpZmllciA9PSBtX3BvbGljeUlkZW50aWZpZXIpOworICAgIG1fcG9s
aWN5SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKwogICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24gPSBXVEZNb3ZlKG1fcG9saWN5RnVuY3Rpb24pOwogICAgIGJvb2wgZm9yTmF2aWdh
dGlvbkFjdGlvbiA9IG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID09IEZvck5h
dmlnYXRpb25BY3Rpb246OlllczsKIApAQCAtMjcyLDcgKzI3OCw3IEBAIHZvaWQgV2ViRnJhbWU6
OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbigKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5z
ZXROYXZpZ2F0aW9uSUQobmF2aWdhdGlvbklEKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbihhY3Rp
b24pOworICAgIGZ1bmN0aW9uKGFjdGlvbiwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViRnJh
bWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDI0MDg5MykKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDkgKzgzLDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lSUQ7IH0KIAogICAgIGVudW0gY2xhc3MgRm9yTmF2aWdhdGlvbkFjdGlvbiB7IE5v
LCBZZXMgfTsKLSAgICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24mJiwgRm9yTmF2aWdhdGlvbkFjdGlvbik7CisgICAgdWludDY0X3Qgc2V0
VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJiwgRm9yTmF2aWdhdGlvbkFjdGlvbik7CiAgICAgdm9pZCBp
bnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJik7CiAKICAgICB1aW50NjRfdCBzZXRVcFdpbGxTdWJtaXRGb3JtTGlzdGVuZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNvbnRpbnVlV2lsbFN1Ym1p
dEZvcm0odWludDY0X3QpOwpAQCAtMTc4LDYgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6RnJhbWUqIG1fY29yZUZyYW1lIHsgbnVsbHB0ciB9OwogCiAgICAgdWludDY0X3QgbV9wb2xp
Y3lMaXN0ZW5lcklEIHsgMCB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllcj4gbV9wb2xpY3lJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVu
Y3Rpb24gbV9wb2xpY3lGdW5jdGlvbjsKICAgICBGb3JOYXZpZ2F0aW9uQWN0aW9uIG1fcG9saWN5
RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uIHsgRm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8gfTsK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3dpbGxT
dWJtaXRGb3JtQ29tcGxldGlvbkhhbmRsZXJzOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI0MDg5MykKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDc4LDEyICszMDc4LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vzc2lv
bkkKICAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IERvd25sb2FkSUQmIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5Q2hl
Y2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgV2ViRnJhbWUq
IGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24obGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uSUQsIGRvd25sb2Fk
SUQsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCBpZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b25JRCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpjb250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMTQsNyArMTMxNCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYs
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmKTsKICAgICB2b2lkIGNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmlu
ZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzEsNyArMTcxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlEKQogCiAgICAgVXBkYXRlV2Vic2l0ZVBvbGljaWVz
KHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Vic2l0ZVBvbGljaWVzKQotICAg
IERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0
ZW5lcklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0
aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpCisgICAg
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25h
bDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykKICAgICBDb250
aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQp
CiAKICAgICBDbGVhclNlbGVjdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wMi0wMiAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBWYWxpZGF0ZSBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbnMgdG8gYXZvaWQgY3Jhc2hlcyBpbiBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRp
b25Qb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDE4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3MgdGhlIHBvbGljeSBjaGVjayBpZGVudGlmaWVyIGFyb3VuZCBmdW5jdGlvbnMgYW5kIHN0
b3JlIGl0IGluIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4g
c2VuZCBpdCBiYWNrIHRvIFdlYkNvcmUgd2l0aCB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNp
b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Up
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNldFVwUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyIGluaXRXaXRoRnJhbWU6aWRlbnRpZmllcjpwb2xpY3lGdW5jdGlvbjpkZWZhdWx0
UG9saWN5Ol0pOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGluaXRXaXRoRnJh
bWU6aWRlbnRpZmllcjpwb2xpY3lGdW5jdGlvbjpkZWZhdWx0UG9saWN5OmFwcExpbmtVUkw6XSk6
CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW52YWxpZGF0ZV0pOgorICAgICAg
ICAoLVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciByZWNlaXZlZFBvbGljeURlY2lzaW9uOl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyIGluaXRXaXRoRnJhbWU6cG9saWN5RnVuY3Rpb246ZGVmYXVs
dFBvbGljeTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBp
bml0V2l0aEZyYW1lOnBvbGljeUZ1bmN0aW9uOmRlZmF1bHRQb2xpY3k6YXBwTGlua1VSTDpdKTog
RGVsZXRlZC4KKwogMjAxOS0wMS0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCByMjM4ODE5IHdoaWNoIGlzIHVubmVlZGVkIGFu
ZCBjYXVzZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjYsOSArMTI2LDkgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVh
dGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoU2hvdygpIGZpbmFsOwogCi0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdl
YkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBv
bGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hl
Y2soKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CkBAIC0yMzMsNyArMjMzLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgCi0gICAgUmV0YWluUHRyPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gZGVmYXVsdFBvbGljeSwgTlNVUkwgKmFwcExp
bmtVUkwgPSBuaWwpOworICAgIFJldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBzZXRV
cFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gZGVmYXVsdFBvbGlj
eSwgTlNVUkwgKmFwcExpbmtVUkwgPSBuaWwpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25E
aWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBXZWJDb3JlOjpGb3Jt
U3RhdGUqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShy
ZXZpc2lvbiAyNDA4OTMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3
IEBAIE5TU3RyaW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkgPSBAIldlYlAKIAogQGludGVyZmFj
ZSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYlBvbGljeURlY2lzaW9uTGlz
dGVuZXIsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXI+IHsKICAgICBSZWZQdHI8RnJhbWU+IF9m
cmFtZTsKKyAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIgX2lkZW50aWZpZXI7CiAgICAgRnJhbWVQ
b2xpY3lGdW5jdGlvbiBfcG9saWN5RnVuY3Rpb247CiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAg
UmV0YWluUHRyPE5TVVJMPiBfYXBwTGlua1VSTDsKQEAgLTE4OSw5ICsxOTAsOSBAQCBAaW50ZXJm
YWNlIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIgOiBOU09iCiAgICAgUG9saWN5QWN0aW9uIF9kZWZh
dWx0UG9saWN5OwogfQogCi0tIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9saWN5
RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9s
aWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeTsKKy0gKGlkKWluaXRXaXRoRnJhbWU6KEZy
YW1lKilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50aWZpZXIpaWRlbnRpZmllciBw
b2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1
bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5OwogI2lmIEhBVkUoQVBQX0xJTktT
KQotLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUqKWZyYW1lIHBvbGljeUZ1bmN0aW9uOihGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpcG9saWN5RnVuY3Rpb24gZGVmYXVsdFBvbGljeTooUG9saWN5QWN0
aW9uKWRlZmF1bHRQb2xpY3kgYXBwTGlua1VSTDooTlNVUkwgKil1cmw7CistIChpZClpbml0V2l0
aEZyYW1lOihGcmFtZSopZnJhbWUgaWRlbnRpZmllcjooUG9saWN5Q2hlY2tJZGVudGlmaWVyKWlk
ZW50aWZpZXIgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5j
dGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJM
OihOU1VSTCAqKXVybDsKICNlbmRpZgogCiAtICh2b2lkKWludmFsaWRhdGU7CkBAIC04NjUsNyAr
ODY2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KAogICAgIFtb
d2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld1Nob3c6d2ViVmlld107CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5j
dGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpOwogCkBAIC04NzMsNyArODc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGU6cmVzcG9uc2UubWltZVR5cGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlV
cGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3Zl
KGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpVc2UpLmdldCgpXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6VXNlKS5nZXQoKV07CiB9CiAK
IApAQCAtODk2LDcgKzg5Nyw3IEBAIHN0YXRpYyBCT09MIHNob3VsZFRyeUFwcExpbmsoV2ViVmll
dyAqd2UKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24p
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRX
ZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIEJPT0wgdHJ5QXBwTGluayA9IHNob3VsZFRy
eUFwcExpbmsod2ViVmlldywgYWN0aW9uLCBudWxscHRyKTsKQEAgLTkwNSwxMCArOTA2LDEwIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAgICAgICAgIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9y
bVN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVl
c3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZyYW1lTmFtZTpmcmFtZU5hbWUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KFdURk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5QXBwTGluayA/IChO
U1VSTCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdU
Rk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5QXBwTGluayA/IChOU1VS
TCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFBvbGljeURlY2lz
aW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFBvbGljeURl
Y2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
Z2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBCT09MIHRyeUFwcExpbmsgPSBzaG91
bGRUcnlBcHBMaW5rKHdlYlZpZXcsIGFjdGlvbiwgY29yZShtX3dlYkZyYW1lLmdldCgpKSk7CkBA
IC05MTcsNyArOTE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246YWN0aW9u
RGljdGlvbmFyeShhY3Rpb24sIGZvcm1TdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRl
UG9saWN5OjpVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lOm1fd2ViRnJhbWUuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5j
dGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVz
dC51cmwoKSA6IG5pbCkuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
Y2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1
bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIHRyeUFwcExpbmsgPyAoTlNVUkwgKilyZXF1
ZXN0LnVybCgpIDogbmlsKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTk2NSw3ICs5NjYsOSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTCiAgICAgfQogCiAgICAgTlNEaWN0aW9uYXJ5ICp2YWx1
ZXMgPSBtYWtlRm9ybUZpZWxkVmFsdWVzRGljdGlvbmFyeShmb3JtU3RhdGUpOwotICAgIENhbGxG
b3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSwgQHNlbGVjdG9yKGZyYW1l
OnNvdXJjZUZyYW1lOndpbGxTdWJtaXRGb3JtOndpdGhWYWx1ZXM6c3VibWlzc2lvbkxpc3RlbmVy
OiksIG1fd2ViRnJhbWUuZ2V0KCksIGtpdChmb3JtU3RhdGUuc291cmNlRG9jdW1lbnQoKS5mcmFt
ZSgpKSwga2l0KCZmb3JtU3RhdGUuZm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxpc3RlbmVy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShQb2xpY3lB
Y3Rpb24pIG11dGFibGUgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9LCBQb2xpY3lBY3Rpb246Okln
bm9yZSkuZ2V0KCkpOworICAgIENhbGxGb3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1l
LmdldCgpKSwgQHNlbGVjdG9yKGZyYW1lOnNvdXJjZUZyYW1lOndpbGxTdWJtaXRGb3JtOndpdGhW
YWx1ZXM6c3VibWlzc2lvbkxpc3RlbmVyOiksIG1fd2ViRnJhbWUuZ2V0KCksIGtpdChmb3JtU3Rh
dGUuc291cmNlRG9jdW1lbnQoKS5mcmFtZSgpKSwga2l0KCZmb3JtU3RhdGUuZm9ybSgpKSwgdmFs
dWVzLCBzZXRVcFBvbGljeUxpc3RlbmVyKFBvbGljeUNoZWNrSWRlbnRpZmllciB7IH0sCisgICAg
ICAgIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShQb2xp
Y3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5k
bGVyKCk7IH0sCisgICAgICAgIFBvbGljeUFjdGlvbjo6SWdub3JlKS5nZXQoKSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVu
dExvYWRlciogbG9hZGVyKQpAQCAtMTUxOCw3ICsxNTIxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRCZQogewogfQogCi1SZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVwUG9saWN5TGlzdGVuZXIoRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gZGVmYXVsdFBvbGljeSwgTlNV
UkwgKmFwcExpbmtVUkwpCitSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNldFVwUG9saWN5TGlzdGVuZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbiwgUG9saWN5QWN0aW9u
IGRlZmF1bHRQb2xpY3ksIE5TVVJMICphcHBMaW5rVVJMKQogewogICAgIC8vIEZJWE1FOiA8cmRh
cjovLzU2MzQzODE+IFdlIG5lZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBhY3RpdmUgcG9saWN5IGxp
c3RlbmVycy4KICAgICBbbV9wb2xpY3lMaXN0ZW5lciBpbnZhbGlkYXRlXTsKQEAgLTE1MjYsMTAg
KzE1MjksMTAgQEAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IFdlYkZyYQogICAg
IFJldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lcjsKICNpZiBI
QVZFKEFQUF9MSU5LUykKICAgICBpZiAoYXBwTGlua1VSTCkKLSAgICAgICAgcG9saWN5TGlzdGVu
ZXIgPSBhZG9wdE5TKFtbV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24p
IGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOmFwcExpbmtVUkxdKTsKKyAg
ICAgICAgcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhGcmFtZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpIGlkZW50aWZpZXI6aWRl
bnRpZmllciBwb2xpY3lGdW5jdGlvbjpXVEZNb3ZlKGZ1bmN0aW9uKSBkZWZhdWx0UG9saWN5OmRl
ZmF1bHRQb2xpY3kgYXBwTGlua1VSTDphcHBMaW5rVVJMXSk7CiAgICAgZWxzZQogI2VuZGlmCi0g
ICAgICAgIHBvbGljeUxpc3RlbmVyID0gYWRvcHROUyhbW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Y29yZShtX3dlYkZyYW1lLmdldCgpKSBwb2xpY3lGdW5jdGlv
bjpXVEZNb3ZlKGZ1bmN0aW9uKSBkZWZhdWx0UG9saWN5OmRlZmF1bHRQb2xpY3ldKTsKKyAgICAg
ICAgcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpIGlkZW50aWZpZXI6aWRlbnRp
ZmllciBwb2xpY3lGdW5jdGlvbjpXVEZNb3ZlKGZ1bmN0aW9uKSBkZWZhdWx0UG9saWN5OmRlZmF1
bHRQb2xpY3ldKTsKIAogICAgIG1fcG9saWN5TGlzdGVuZXIgPSBwb2xpY3lMaXN0ZW5lci5nZXQo
KTsKIApAQCAtMjM4MywxMiArMjM4NiwxMyBAQCArICh2b2lkKWluaXRpYWxpemUKICNlbmRpZgog
fQogCi0tIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rpb246KEZy
YW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lB
Y3Rpb24pZGVmYXVsdFBvbGljeQorLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUqKWZyYW1lIGlk
ZW50aWZpZXI6KFBvbGljeUNoZWNrSWRlbnRpZmllcilpZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9u
OihGcmFtZVBvbGljeUZ1bmN0aW9uJiYpcG9saWN5RnVuY3Rpb24gZGVmYXVsdFBvbGljeTooUG9s
aWN5QWN0aW9uKWRlZmF1bHRQb2xpY3kKIHsKICAgICBzZWxmID0gW3NlbGYgaW5pdF07CiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCisgICAgX2lkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOwogICAgIF9mcmFtZSA9IGZyYW1lOwogICAgIF9wb2xpY3lGdW5jdGlvbiA9IFdURk1v
dmUocG9saWN5RnVuY3Rpb24pOwogICAgIF9kZWZhdWx0UG9saWN5ID0gZGVmYXVsdFBvbGljeTsK
QEAgLTIzOTcsOSArMjQwMSw5IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBw
b2xpY3kKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQotLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJh
bWUqKWZyYW1lIHBvbGljeUZ1bmN0aW9uOihGcmFtZVBvbGljeUZ1bmN0aW9uJiYpcG9saWN5RnVu
Y3Rpb24gZGVmYXVsdFBvbGljeTooUG9saWN5QWN0aW9uKWRlZmF1bHRQb2xpY3kgYXBwTGlua1VS
TDooTlNVUkwgKilhcHBMaW5rVVJMCistIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUg
aWRlbnRpZmllcjooUG9saWN5Q2hlY2tJZGVudGlmaWVyKWlkZW50aWZpZXIgcG9saWN5RnVuY3Rp
b246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQ
b2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOihOU1VSTCAqKWFwcExpbmtVUkwK
IHsKLSAgICBzZWxmID0gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwb2xpY3lGdW5jdGlvbjpX
VEZNb3ZlKHBvbGljeUZ1bmN0aW9uKSBkZWZhdWx0UG9saWN5OmRlZmF1bHRQb2xpY3ldOworICAg
IHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGlkZW50aWZpZXI6aWRlbnRpZmllciBw
b2xpY3lGdW5jdGlvbjpXVEZNb3ZlKHBvbGljeUZ1bmN0aW9uKSBkZWZhdWx0UG9saWN5OmRlZmF1
bHRQb2xpY3ldOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMjQx
Myw3ICsyNDE3LDcgQEAgLSAodm9pZClpbnZhbGlkYXRlCiB7CiAgICAgX2ZyYW1lID0gbnVsbHB0
cjsKICAgICBpZiAoYXV0byBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1
bmN0aW9uLCBudWxscHRyKSkKLSAgICAgICAgcG9saWN5RnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJ
Z25vcmUpOworICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgX2lk
ZW50aWZpZXIpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTI0MjYsNyArMjQzMCw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIF9mcmFtZSA9IG51bGxwdHI7CiAgICAgaWYgKGF1dG8gcG9saWN5
RnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKF9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgIkNsaWVudCBhcHBsaWNhdGlvbiBmYWls
ZWQgdG8gbWFrZSBhIHBvbGljeSBkZWNpc2lvbiB2aWEgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5l
ciwgdXNpbmcgZGVmYXVsdFBvbGljeSAlaGh1IiwgX2RlZmF1bHRQb2xpY3kpOwotICAgICAgICBw
b2xpY3lGdW5jdGlvbihfZGVmYXVsdFBvbGljeSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKF9k
ZWZhdWx0UG9saWN5LCBfaWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwpAQCAtMjQzOSw3ICsyNDQzLDcgQEAgLSAodm9pZClyZWNlaXZlZFBvbGljeURlY2lzaW9uOihQ
b2xpY3lBYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBwb2xpY3lGdW5jdGlvbiA9
IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKLSAgICAgICAgcG9saWN5
RnVuY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgcG9saWN5RnVuY3Rpb24oYWN0aW9uLCBfaWRlbnRp
Zmllcik7CiB9CiAKIC0gKHZvaWQpaWdub3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360993</attachid>
            <date>2019-02-02 20:06:56 -0800</date>
            <delta_ts>2019-02-02 21:03:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-194189-20190202200655.patch</filename>
            <type>text/plain</type>
            <size>105325</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE5LTAyLTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRpb24g
cG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgSW50cm9kdWNlZCBQb2xpY3lDaGVja0lkZW50aWZpZXIgdG8gcGFpciBlYWNoIG5hdmln
YXRpb24gcG9saWN5IGNoZWNrIHJlcXVlc3Qgd2l0aCBhIGRlY2lzaW9uLAorICAgICAgICBhbmQg
ZGVwbG95ZWQgaXQgaW4gUG9saWN5Q2hlY2tlci4gVGhlIGlkZW50aWZpZXIgaXMgcGFzc2VkIGZy
b20gV2ViQ29udGVudCBwcm9jZXNzIHRvIFVJIHByb2Nlc3MKKyAgICAgICAgaW4gV2ViS2l0Miwg
YW5kIHBhc3NlZCBpdCBiYWNrIHdpdGggdGhlIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICBC
ZWNhdXNlIFBvbGljeUNoZWNrSWRlbnRpZmllciBlbWJlZHMgdGhlIHByb2Nlc3MgaWRlbnRpZmll
ciBmcm9tIHdoaWNoIGEgbmF2aWdhdGlvbiBwb2xpY3kgaXMgY2hlY2tlZCwKKyAgICAgICAgd2Ug
d291bGQgYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBVSSBwcm9jZXNzIGhhZCBzZW50IHRoZSBkZWNp
c2lvbiB0byBhIHdyb25nIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gYWRkcyByZWxlYXNlIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSBpcyBzZXQgd2hlbmV2ZXIKKyAgICAgICAgd2UncmUgcmVxdWVzdGluZyBh
IG5hdmlnYXRpb24gcG9saWN5IGNoZWNrLgorCisgICAgICAgIFRoZXNlIGNvZGUgY2hhbmdlcyBz
aG91bGQgZWl0aGVyOgorICAgICAgICAxLiBGaXggY3Jhc2hlcyBpbiBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IHdoZXJlIGlzQmFja0ZvcndhcmRMb2FkVHlw
ZSB3b3VsZAorICAgICAgICAgICByZXR1cm4gdHJ1ZSB5ZXQgaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpIGlzIG51bGwuCisgICAgICAgIDIuIERldGVjdCBhIGJ1ZyB0aGF0IFVJIHByb2Nlc3Mg
Y2FuIHNlbmQgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiB0byBhIHdyb25nIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgMy4gUnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IHRoYXQgKDIp
IGV4aXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVu
Y29kZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6aXNWYWxpZEZvcik6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgaWRlbnRpZmVyIG1hdGNoZXMuIEFsc28gcmVsZWFzZSBhc3NlcnRzCisg
ICAgICAgIHRoYXQgdGhlIHByb2Nlc3MgSUQgaXMgc2FtZSwgYW5kIHRoYXQgbV9jaGVjayBpcyBh
bHdheXMgbm90IHplcm8gKG1lYW5pbmcgaXQncyBhIGdlbmVyYXRlZCB2YWx1ZSkuCisgICAgICAg
IFRoZSBmYWlsdXJlIG9mIHRoZXNlIHJlbGVhc2UgYXNzZXJ0aW9ucyB3b3VsZCBpbmRpY2F0ZSB0
aGF0IHRoZXJlIGlzIGEgYnVnIGluIFVJIHByb2Nlc3MsIHdoaWNoIHJlc3VsdHMgaW4KKyAgICAg
ICAgYSBwb2xpY3kgZGVjaXNpb24gcmVzcG9uc2UgYmVpbmcgc2VudCB0byBhIHdyb25nIFdlYiBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KTogRXhpdCBlYXJseSBpZiBpc1ZhbGlkRm9yIGZhaWxzLgorICAgICAgICAoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE5LTAyLTAyICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRpZHkgdXAg
ZGF0YSBtZW1lYmVycyBvZiBGcmFtZVZpZXcgYW5kIHJlbGF0ZWQgY2xhc3NlcyB0byBzaHJpbmsg
Y2xhc3Mgc2l6ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIkhUVFBI
ZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhp
c3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJ
Y29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTGlua0ljb25Db2xsZWN0b3IuaCIKQEAgLTY2Miw3ICs2NjMsMTAgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgIEFTU0VSVCghbV93YWl0aW5nRm9y
TmF2aWdhdGlvblBvbGljeSk7CiAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IHRy
dWU7CiAKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2
aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgLy8gRklYTUU6IEFkZCBhIGxv
YWQgdHlwZSBjaGVjay4KKyAgICBhdXRvJiBwb2xpY3lDaGVja2VyID0gZnJhbWVMb2FkZXIoKS0+
cG9saWN5Q2hlY2tlcigpOworICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5
cGUocG9saWN5Q2hlY2tlci5sb2FkVHlwZSgpKSB8fCBmcmFtZUxvYWRlcigpLT5oaXN0b3J5KCku
cHJvdmlzaW9uYWxJdGVtKCkpOworICAgIHBvbGljeUNoZWNrZXIuY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdh
dGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6
OnRyeUxvYWRpbmdSZXF1ZXN0RnJvbUFwcGxpY2F0aW9uQ2FjaGUoKQpAQCAtODM5LDcgKzg0Mywx
MCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBtYWluUmVzb3VyY2VMb2FkZXIgPSB0aGlzLT5tYWluUmVzb3Vy
Y2VMb2FkZXIoKTsKICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICBtYWluUmVz
b3VyY2VMb2FkZXItPm1hcmtJbkFzeW5jUmVzcG9uc2VQb2xpY3lDaGVjaygpOwotICAgIGZyYW1l
TG9hZGVyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5S
ZXNvdXJjZUxvYWRlciksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIucmVsZWFzZSgpXSAoUG9saWN5QWN0aW9uIHBvbGljeSkgbXV0YWJsZSB7CisgICAgYXV0byBy
ZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7CisgICAg
ZnJhbWVMb2FkZXIoKS0+Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVu
dGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3Vy
Y2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5SZXNvdXJjZUxvYWRlciksCisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpLCByZXF1ZXN0SWRl
bnRpZmllcl0gKFBvbGljeUFjdGlvbiBwb2xpY3ksIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNw
b25zZUlkZW50aWZlaXIpIG11dGFibGUgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXNwb25z
ZUlkZW50aWZlaXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpOwogICAgICAgICBjb250
aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwogICAgICAgICBpZiAobWFpblJlc291cmNl
TG9hZGVyKQogICAgICAgICAgICAgbWFpblJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9u
c2VQb2xpY3koKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShy
ZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDExICs0NTIsMTEgQEAgUEFMOjpTZXNzaW9uSUQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6cwogICAgIHJldHVybiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KIAotdm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiwg
UG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5
Myw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGkKICAgICBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBmaW5hbCB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbCB7IH0KIAotICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3Qg
U3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lv
bk1vZGUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFs
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAy
NDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjMsMTUgKzM2MywxNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNM
b2FkaW5nKGJvb2wgCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9u
KQogewogICAgIGlmICghYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICAvLyBMb2Fk
IHdhcyBjYW5jZWxsZWQKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOwor
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhlIHBvbGljeSBjaGVj
ayBpZGVudGlmaWVyLgorICAgIGNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UocmVzcG9uc2UsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSwgaWRlbnRpZmll
ciwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2Nh
dGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTEzNzgsNiArMTM3OSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWUKIAogICAgIGlmICghdGFyZ2V0
RnJhbWUgJiYgIWVmZmVjdGl2ZUZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9u
ID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tl
cigpLmxvYWRUeXBlKCkpKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3Rh
dGUpLCBlZmZlY3RpdmVGcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNh
bGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8
Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11
dGFibGUgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMzk4LDYgKzE0MDAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5z
ZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lD
aGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlw
ZShuZXdMb2FkVHlwZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobmV3TG9hZFR5cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0
KSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1l
bnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1l
ID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vh
a1B0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24pIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgfSwgUG9saWN5RGVj
aXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CkBAIC0xNDYxLDYgKzE0NjQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRD
aGVja05ld1dpbmRvd1BvbGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9u
IHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24p
LCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCB7IH0sIHJlcXVlc3QuZnJhbWVO
YW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZv
cm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAg
ICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3Jt
U3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7
CiAgICAgICAgIH0pOwpAQCAtMTU4NCw2ICsxNTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcgogICAgIH0KIAogICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2Fk
VHlwZSh0eXBlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5
cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgYm9vbCBpc0Zvcm1TdWJt
aXNzaW9uID0gZm9ybVN0YXRlOwogCiAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9h
ZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhvZCgpOwpAQCAtMTU5NSw2ICsxNjAwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcgogICAgICAgICBvbGREb2N1bWVudExv
YWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihXVEZNb3ZlKGFjdGlvbikpOwogICAgICAgICBvbGRE
b2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsK
ICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSB8
fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVu
dExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUg
PSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbikgewogICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPT0gTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQpOwogICAgICAgICB9LCBQb2xpY3lEZWNp
c2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKQEAgLTE2MjksNiArMTYzNSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigp
LmxvYWRUeXBlKCkpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5y
ZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBs
b2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJl
ZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5n
ZXQoKSwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMzAxMCw2ICszMDE3LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRM
b2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVl
IHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rp
b24sIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExv
YWRUeXBlKEZyYW1lTG9hZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFt
ZUxvYWRUeXBlKTsKIAotdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uKT47Cit1c2luZyBDb250ZW50UG9saWN5RGVjaXNp
b25GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNr
SWRlbnRpZmllcik+OwogCiBjbGFzcyBGcmFtZUxvYWRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRnJhbWVMb2FkZXIpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYm
KTsKKyAgICB2b2lkIGNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsK
IAogICAgIHZvaWQgZGlkRXhwbGljaXRPcGVuKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcg
KzEwNyw3IEBAIGVudW0gY2xhc3MgUG9saWN5RGVjaXNpb25Nb2RlOwogCiBzdHJ1Y3QgU3RyaW5n
V2l0aERpcmVjdGlvbjsKIAotdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlv
bik+IEZyYW1lUG9saWN5RnVuY3Rpb247Cit0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9s
aWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC0x
OTAsOSArMTkwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0
ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQcm9jZXNzSWRl
bnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY3LDQ4IEBAIGVu
dW0gY2xhc3MgRnJhbWVMb2FkVHlwZSA6IHVpbnQ4X3QgewogICAgIFJlbG9hZEV4cGlyZWRPbmx5
CiB9OwogCitjbGFzcyBQb2xpY3lDaGVja0lkZW50aWZpZXIgeworcHVibGljOgorICAgIFBvbGlj
eUNoZWNrSWRlbnRpZmllcigpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBQb2xpY3lDaGVja0lk
ZW50aWZpZXIgY3JlYXRlKCk7CisKKyAgICBib29sIGlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVu
dGlmaWVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9saWN5Q2hlY2tJZGVudGlmaWVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzID09IG90aGVyLm1fcHJvY2VzcyAmJiBt
X3BvbGljeUNoZWNrID09IG90aGVyLm1fcG9saWN5Q2hlY2s7IH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBkZWNv
ZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFBvbGljeUNoZWNrSWRlbnRpZmllcihQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzLCB1aW50NjRfdCBwb2xpY3lDaGVjaykKKyAgICAgICAgOiBt
X3Byb2Nlc3MocHJvY2VzcykKKyAgICAgICAgLCBtX3BvbGljeUNoZWNrKHBvbGljeUNoZWNrKQor
ICAgIHsgfQorCisgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzOworICAgIHVpbnQ2NF90
IG1fcG9saWN5Q2hlY2sgeyAwIH07Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9wcm9jZXNzIDw8IG1fcG9saWN5Q2hlY2s7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxQb2xpY3lDaGVja0lkZW50aWZpZXI+IFBvbGlj
eUNoZWNrSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBw
cm9jZXNzID0gUHJvY2Vzc0lkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBy
b2Nlc3MpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB1aW50NjRfdCBwb2xp
Y3lDaGVjazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvbGljeUNoZWNrKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQb2xpY3lDaGVja0lkZW50aWZpZXIg
eyAqcHJvY2VzcywgcG9saWN5Q2hlY2sgfTsKK30KKwogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5l
clBvbGljeSA6IHVpbnQ4X3QgewogICAgIFN1cHByZXNzLAogICAgIEFsbG93CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNDA5MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDIxIEBAIHN0YXRpYyBib29sIGlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG8K
ICAgICByZXR1cm4gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkKTsKIH0KIAorUG9saWN5Q2hlY2tJZGVudGlmaWVyIFBvbGljeUNoZWNrSWRlbnRpZmllcjo6
Y3JlYXRlKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CisgICAgaWRl
bnRpZmllcisrOworICAgIHJldHVybiBQb2xpY3lDaGVja0lkZW50aWZpZXIgeyBQcm9jZXNzOjpp
ZGVudGlmaWVyKCksIGlkZW50aWZpZXIgfTsKK30KKworYm9vbCBQb2xpY3lDaGVja0lkZW50aWZp
ZXI6OmlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGV4cGVjdGVkSWRlbnRpZmllcikK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9wcm9jZXNzID09IGV4cGVjdGVk
SWRlbnRpZmllci5tX3Byb2Nlc3MsICJSZWNlaXZlZCBhIHBvbGljeSBjaGVjayByZXNwb25zZSBm
b3IgYSB3cm9uZyBwcm9jZXNzIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG1f
cG9saWN5Q2hlY2ssICJSZWNlaXZlZCAwIGFzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciIp
OworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BvbGljeUNoZWNrIDw9IGV4cGVj
dGVkSWRlbnRpZmllci5tX3BvbGljeUNoZWNrLCAiUmVjZWl2ZWQgYSBwb2xpY3kgY2hlY2sgcmVz
cG9uc2UgZnJvbSB0aGUgZnV0dXJlIik7CisgICAgcmV0dXJuIG1fcG9saWN5Q2hlY2sgPT0gZXhw
ZWN0ZWRJZGVudGlmaWVyLm1fcG9saWN5Q2hlY2s7Cit9CisKIFBvbGljeUNoZWNrZXI6OlBvbGlj
eUNoZWNrZXIoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fZGVs
ZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeShmYWxzZSkKQEAgLTE3MCw5ICsxODUsMTYg
QEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpYwogCiAgICAgYXV0byBi
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVj
aXNpb25Nb2RlOjpBc3luY2hyb25vdXMgPyBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2Fy
eShyZXF1ZXN0KSA6IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIHsgfTsKIAorICAgIGF1
dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0ZSgpOwog
ICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IHRydWU7CiAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0
eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwotICAgIG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGFjdGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBw
b2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZv
cm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSks
IGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgbV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
YWN0aW9uLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGlj
eURlY2lzaW9uTW9kZSwgcmVxdWVzdElkZW50aWZpZXIsCisgICAgICAgIFt0aGlzLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RG
TW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksCisgICAgICAgICBibG9iVVJMTGlmZXRpbWVFeHRlbnNp
b24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiksIHJlcXVlc3RJZGVudGlmaWVy
XSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3Bv
bnNlSWRlbnRpZmllcikgbXV0YWJsZSB7CisKKyAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50aWZp
ZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAK
ICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKQEAgLTIwNiw3ICsyMjgsMTQgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeQogCiAgICAgYXV0byBibG9iVVJM
TGlmZXRpbWVFeHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1
ZXN0KTsKIAotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRl
LmdldCgpLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZv
cm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24g
PSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIG11dGFibGUgeworICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVj
a0lkZW50aWZpZXI6OmNyZWF0ZSgpOworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJh
bWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LAorICAgICAgICBmb3JtU3RhdGUgPSBXVEZN
b3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92ZShibG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24pLAorICAgICAgICByZXF1ZXN0SWRlbnRpZmllcl0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50
aWZpZXIpIG11dGFibGUgeworCisgICAgICAgIGlmICghcmVzcG9uc2VJZGVudGlmaWVyLmlzVmFs
aWRGb3IocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3du
bG9hZDoKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2Fk
KHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTktMDItMDIg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVmFsaWRhdGUgbmF2
aWdhdGlvbiBwb2xpY3kgZGVjaXNpb25zIHRvIGF2b2lkIGNyYXNoZXMgaW4gY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQxODkKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBQYXNzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciBhcm91bmQgZnVu
Y3Rpb25zIGFuZCBzdG9yZSBpdCBpbiBQb2xpY3lEZWNpc2lvblNlbmRlcgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KKworICAgICAgICBXZSBhbHNvIHN0b3JlIGl0IGluIFdlYkZyYW1lIGlu
IHRoZSBjYXNlIHRoZSBwb2xpY3kgZGVjaXNpb24gaGFkIHRvIGJlIGludmFsaWRhdGVkCisgICAg
ICAgIGJlZm9yZSB0aGUgZGVjaXNpb24gd2FzIHJlY2VpdmVkICh2aWEgV2ViRnJhbWU6OmludmFs
aWRhdGVQb2xpY3lMaXN0ZW5lcikuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcik6IEFkZGVk
IFBvbGljeUNoZWNrSWRlbnRpZmllciBhcyBhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6c2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXI6OlBvbGljeURlY2lzaW9u
U2VuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDE5LTAyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFRpZHkgdXAgZGF0YSBtZW1lYmVycyBvZiBGcmFtZVZpZXcgYW5kIHJlbGF0ZWQg
Y2xhc3NlcyB0byBzaHJpbmsgY2xhc3Mgc2l6ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCw3
IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6UGF5bWVu
dE1ldGhvZFVwZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkluZm8nOiBbJzxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBvbGljeUFjdGlvbic6IFsnPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5JzogWyc8V2ViQ29yZS9BdWRpb1Nlc3Npb24u
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInOiBb
JzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjQwOTAx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsMTYgKzI2MiwyMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92CiAgICAgbV9wYWdlLmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCBX
VEZNb3ZlKHVybCkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIEFTU0VSVChtX21haW5GcmFtZS0+ZnJh
bWVJRCgpID09IGZyYW1lSUQpOwotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShm
cmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdp
bmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKKyAgICBtX3BhZ2Uu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIs
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCisgICAgICAgIFdU
Rk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7Ci0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgdXNlckRh
dGEpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxpc3RlbmVySUQs
IHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6c3RhcnRVUkxTY2hl
bWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24g
MjQwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsK
LSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCisgICAg
ICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3Qg
bGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsCisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1
aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0
cmluZywgdWludDY0X3QgZnJhbWVJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzQsMjIgKzI2NzQsMjYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaQogCiBjbGFzcyBXZWJQ
YWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9saWN5
RGVjaXNpb25TZW5kZXI+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBTZW5kRnVuY3Rpb24gPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
LCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+OwotICAgIHN0YXRp
YyBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNyZWF0ZShTZW5kRnVuY3Rpb24mJiBzZW5kRnVu
Y3Rpb24pCisgICAgdXNpbmcgU2VuZEZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+OworCisgICAg
c3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTZW5kRnVuY3Rpb24mJiBzZW5kRnVuY3Rpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2xpY3lEZWNpc2lvblNlbmRlcihXVEZNb3ZlKHNl
bmRGdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9saWN5RGVjaXNp
b25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24pKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kKEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIGlmIChtX3NlbmRGdW5jdGlvbikKLSAgICAgICAgICAgIG1fc2VuZEZ1bmN0
aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBtX3NlbmRGdW5j
dGlvbihtX2lkZW50aWZpZXIsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgfQog
cHJpdmF0ZToKLSAgICBQb2xpY3lEZWNpc2lvblNlbmRlcihTZW5kRnVuY3Rpb24gc2VuZEZ1bmN0
aW9uKQotICAgICAgICA6IG1fc2VuZEZ1bmN0aW9uKFdURk1vdmUoc2VuZEZ1bmN0aW9uKSkgeyB9
CisgICAgUG9saWN5RGVjaXNpb25TZW5kZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFNlbmRGdW5jdGlvbiBzZW5kRnVuY3Rpb24pCisgICAgICAgIDogbV9zZW5kRnVuY3Rpb24o
V1RGTW92ZShzZW5kRnVuY3Rpb24pKQorICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICAgICB7IH0KIAogICAgIFNlbmRGdW5jdGlvbiBtX3NlbmRGdW5jdGlvbjsKKyAgICBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYgc2VuZGVyKQpAQCAtMjcwOSw3ICsyNzEzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9u
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0
aW9uKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudF0oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLAorICAg
ICAgICBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5h
dmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAg
ICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24o
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CiAgICAgICAgICAgICByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShkYXRhKSwg
V1RGTW92ZShzZW5kZXIpKTsKQEAgLTQzNTUsMjIgKzQzNjAsMzMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi17Ci0g
ICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRp
b25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0
YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0
YSwgbGlzdGVuZXJJRCk7Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksCisgICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5n
UGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVz
dEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLAorICAgIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
KyAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAg
ICAgYXV0byogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3Jp
Z2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92
ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSksIHVzZXJEYXRhLCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3Mg
PSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgeworICAgIGF1dG8gc2VuZGVyID0g
UG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7Ci0gICAgfSkpOworICAgIH0pOworCisgICAgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBX
VEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
cXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIFdURk1vdmUo
c2VuZGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xp
Y3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAorICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxS
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQ0MjksNyArNDQ0NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgc2hvdWxkRXhwZWN0U2FmZUJyb3dz
aW5nUmVzdWx0ID0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObzsKIAogICAgIGF1
dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUp
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb25dIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7Ci0gICAgICAg
IAorCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBmcmFtZSA9IGZyYW1lLmNvcHlSZWYoKSwgc2Vu
ZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGlj
aWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAg
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgcG9saWNpZXMuZ2V0
KCksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIH07CkBAIC00NTUzLDkgKzQ1NjksMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjbwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50
NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAor
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LAorICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShXVEZN
b3ZlKHJlcGx5KSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3Jl
YXRlKGlkZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIAogICAgIGF1dG8qIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKSB7CkBAIC00NTY5LDEz
ICs0NTg4LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOwogICAgIH0KIAotICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2lu
YWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOworICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1l
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLAorICAgICAgICBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRl
ci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3lu
Y2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIHNlbmRlci0+c2VuZChQb2xp
Y3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDU4
MywxMyArNDYwNCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2lu
CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChtX3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1h
a2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdX
YXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgeworICAgIGF1dG8gbGlzdGVu
ZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJ
RF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBS
ZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBtdXRhYmxl
IHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlz
IG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0
aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJu
aW5nKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURd
IChhdXRvLi4uIGFyZ3MpIHsKKworICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9u
U2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7CiAg
ICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOwot
ICAgICAgICB9KSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7
CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykpOwogCiAgICAgaWYg
KG1fcG9saWN5Q2xpZW50KQpAQCAtNDYwOSwxMiArNDYzMywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgIAogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJh
bWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9y
aWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNo
b3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDYyNiwxMyArNDY1MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJsKCkp
OwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25J
RCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRy
OwotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3MgPSBwcm9j
ZXNzLmNvcHlSZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5h
dmlnYXRpb24pLAorICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhl
cmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBn
byBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7Ci0gICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgp
LCBXVEY6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBw
cm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJncykgeworCisgICAgICAgIGF1
dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoYXV0by4uLiBhcmdzKSB7CiAgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKLSAgICAg
ICAgfSkpOworICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFdURk1v
dmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykp
OwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDggKzE0MzYsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKKyAgICAg
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
CisgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlv
biYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgbG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5h
dmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwpAQCAtMTUyMywxMSArMTUyNiwxOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBS
ZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1l
UHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDA5MDEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSwxMCArMTA1LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAj
ZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBi
b29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMp
IERlbGF5ZWQKLSAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9v
bCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9s
aWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5h
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
VW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgUHJvZ3Jl
c3MgbWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNp
b24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDE2ICs3MzAsMTYg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KAogICAgIHdlYlBhZ2Ut
PnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24p
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9
IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkg
ewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJpbmcoKSkgewotICAgICAgICBmdW5j
dGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6
VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQ4LDcgKzc0
OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBv
bGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2Uod2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIHVzZXJEYXRh
KTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAg
ICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NzU5LDE2ICs3NTksMTggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNf
Y2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlv
bklEKCkgOiAwOwogICAgIAogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
LSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihX
VEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAg
ICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93
UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQotICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9m
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwg
V2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKKyAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LAorICAgICAgICBjYW5T
aG93UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQorICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgaWRlbnRp
ZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUg
PyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgewotICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzc5LDExICs3ODEsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQ
b2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9u
LnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09
IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lB
Y3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBpZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFt
ZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBt
X2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24p
LCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwogCiAgICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
bmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CkBAIC03OTcsNyArNzk5
LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlID0gbmF2aWdhdGlvbkFjdGlvbi5kb3du
bG9hZEF0dHJpYnV0ZSgpOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJh
bWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9m
cmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUp
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklELCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LAorICAgICAgICBmcmFtZU5hbWUsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYm
IHdlYnNpdGVQb2xpY2llcykKQEAgLTgxOCwxMSArODIxLDEyIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWUKICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRv
RG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25N
b2RlIHBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2Rl
IHBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlcXVl
c3RJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAg
IGlmICghd2ViUGFnZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7
CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgzMCw3ICs4MzQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICAvLyBBbHdheXMgaWdub3Jl
IHJlcXVlc3RzIHdpdGggZW1wdHkgVVJMcy4gCiAgICAgaWYgKHJlcXVlc3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODQxLDExICs4NDUsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2Us
IG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xp
Y3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBv
bGljeUFjdGlvbjo6VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIHJl
cXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Olllcyk7CisKKyAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpZZXMpOwogCiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkpOwogICAg
IGF1dG8gcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKS52YWx1ZSgpOwpA
QCAtODgxLDcgKzg4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWQKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUo
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpIHsK
ICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2UgcmVjZWl2ZSBhIHJlZGlyZWN0IGFmdGVyIHRoZSBu
YXZpZ2F0aW9uIHBvbGljeSBoYXMgYmVlbiBkZWNpZGVkIGZvciB0aGUgaW5pdGlhbCByZXF1ZXN0
LApAQCAtODk4LDIyICs5MDIsMjggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogCiAgICAgaWYgKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1v
ZGU6OlN5bmNocm9ub3VzKSB7CiAgICAgICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKKyAg
ICAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcjsK
ICAgICAgICAgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbjsKICAgICAgICAgRG93bmxvYWRJRCBk
b3dubG9hZElEOwogICAgICAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRl
UG9saWNpZXM7CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5m
cmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdl
SUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeUFjdGlvbiwgbmV3TmF2
aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgewotICAgICAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pc01haW5GcmFtZSgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLAorICAgICAgICAgICAgcmVxdWVzdElkZW50
aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRp
b25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCisgICAgICAgICAgICBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2Us
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksCisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocmVzcG9u
c2VJZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwg
d2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCByZXNwb25zZUlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9s
aWN5QWN0aW9uLCAwLCBkb3dubG9hZElELCB7IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcmVzcG9uc2VJZGVudGlmaWVyLCBwb2xpY3lB
Y3Rpb24sIDAsIGRvd25sb2FkSUQsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNo
cm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXIt
Pm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVy
SUQpKSkKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVy
SUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZy
YW1lKGNvcmVGcmFtZSksCisgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1bWVudExvYWRl
ci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVx
dWVzdCgpLCByZXF1ZXN0LAorICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVz
dC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSwgbGlzdGVuZXJJRCkpKQorICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgcmVxdWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCB7IH0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGlj
eUNoZWNrKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDkgKzEyMyw5IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsK
ICAgICAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9k
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJD
b3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBk
aXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDEyICsyMTAsMTMg
QEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZSgpCiAgICAgbV9jb3JlRnJhbWUgPSAwOwogfQog
Ci11aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2
aWdhdGlvbkFjdGlvbikKK3VpbnQ2NF90IFdlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVyKFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2
aWdhdGlvbkFjdGlvbikKIHsKICAgICAvLyBGSVhNRTogPHJkYXI6Ly81NjM0MzgxPiBXZSBuZWVk
IHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBvbGljeSBsaXN0ZW5lcnMuCiAKICAgICBpbnZh
bGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAorICAgIG1fcG9saWN5SWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CiAgICAgbV9wb2xpY3lMaXN0ZW5lcklEID0gZ2VuZXJhdGVMaXN0ZW5lcklEKCk7CiAg
ICAgbV9wb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUocG9saWN5RnVuY3Rpb24pOwogICAgIG1fcG9s
aWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gZm9yTmF2aWdhdGlvbkFjdGlvbjsKQEAg
LTI0NCw4ICsyNDUsMTAgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KAogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJ
RCA9IDA7CisgICAgYXV0byBpZGVudGlmaWVyID0gbV9wb2xpY3lJZGVudGlmaWVyOworICAgIG1f
cG9saWN5SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAgICBpZiAoYXV0byBmdW5jdGlvbiA9
IHN0ZDo6ZXhjaGFuZ2UobV9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpCi0gICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9u
OjpJZ25vcmUsICppZGVudGlmaWVyKTsKICAgICBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlv
bkFjdGlvbiA9IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vOwogCiAgICAgYXV0byB3aWxsU3VibWl0
Rm9ybUNvbXBsZXRpb25IYW5kbGVycyA9IFdURk1vdmUobV93aWxsU3VibWl0Rm9ybUNvbXBsZXRp
b25IYW5kbGVycyk7CkBAIC0yNTMsMTEgKzI1NiwxNCBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlk
YXRlUG9saWN5TGlzdGVuZXIoCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklE
LCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGlj
eUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9h
ZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
ICAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX3BvbGljeUxpc3RlbmVySUQgfHwgbGlzdGVuZXJJ
RCAhPSBtX3BvbGljeUxpc3RlbmVySUQgfHwgIW1fcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAorICAgIEFTU0VSVChpZGVudGlmaWVyID09IG1fcG9saWN5SWRlbnRpZmllcik7Cisg
ICAgbV9wb2xpY3lJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworCiAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAgICAgYm9vbCBm
b3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24g
PT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwogCkBAIC0yNzIsNyArMjc4LDcgQEAgdm9pZCBX
ZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKAogICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXItPnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uKGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uLCBpZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMjQwOTAxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgZW51bSBjbGFzcyBGb3JOYXZpZ2F0aW9uQWN0
aW9uIHsgTm8sIFllcyB9OwotICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29y
ZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICB1aW50
NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmKTsKIAogICAgIHVpbnQ2NF90IHNldFVwV2lsbFN1Ym1pdEZvcm1M
aXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29udGludWVX
aWxsU3VibWl0Rm9ybSh1aW50NjRfdCk7CkBAIC0xNzgsNiArMTc4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpGcmFtZSogbV9jb3JlRnJhbWUgeyBudWxscHRyIH07CiAKICAgICB1aW50NjRf
dCBtX3BvbGljeUxpc3RlbmVySUQgeyAwIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyPiBtX3BvbGljeUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0aW9uOwogICAgIEZvck5hdmlnYXRpb25BY3Rpb24g
bV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24geyBGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpObyB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fd2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjQwOTAxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNzgsMTIgKzMwNzgsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoUEFM
OjpTZXNzaW9uSQogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElELCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb25JRCwg
ZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBmcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbklELCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxNCw3ICsxMzE0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3du
bG9hZElEJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRl
UG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNp
ZXMpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
cykKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKQog
ICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlz
dGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE5LTAyLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRp
b24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIgYXJvdW5kIGZ1bmN0aW9u
cyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgorICAgICAgICBzbyB0aGF0
IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgICgtW1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9u
OmRlZmF1bHRQb2xpY3k6XSk6CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5p
dFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9uOmRlZmF1bHRQb2xpY3k6YXBwTGlu
a1VSTDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBpbnZhbGlkYXRlXSk6
CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIHJlY2VpdmVkUG9saWN5RGVjaXNpb246XSk6CisgICAg
ICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTpwb2xpY3lGdW5jdGlv
bjpkZWZhdWx0UG9saWN5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGluaXRXaXRoRnJhbWU6cG9saWN5RnVuY3Rpb246ZGVmYXVsdFBvbGljeTphcHBMaW5r
VVJMOl0pOiBEZWxldGVkLgorCiAyMDE5LTAxLTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyMzg4MTkgd2hpY2ggaXMgdW5u
ZWVkZWQgYW5kIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw5ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZyYW1lKiBkaXNw
YXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
JikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2Vi
Q29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVjaygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKQEAgLTIzMyw3ICsy
MzMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICAKLSAgICBSZXRhaW5QdHI8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZhdWx0UG9saWN5LCBOU1VS
TCAqYXBwTGlua1VSTCA9IG5pbCk7CisgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZh
dWx0UG9saWN5LCBOU1VSTCAqYXBwTGlua1VSTCA9IG5pbCk7CiAKICAgICBOU0RpY3Rpb25hcnkg
KmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFdlYkNv
cmU6OkZvcm1TdGF0ZSopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODIs
NiArMTgyLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9IEAiV2ViUAogCiBA
aW50ZXJmYWNlIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2ViUG9saWN5RGVj
aXNpb25MaXN0ZW5lciwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lcj4gewogICAgIFJlZlB0cjxG
cmFtZT4gX2ZyYW1lOworICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBfaWRlbnRpZmllcjsKICAg
ICBGcmFtZVBvbGljeUZ1bmN0aW9uIF9wb2xpY3lGdW5jdGlvbjsKICNpZiBIQVZFKEFQUF9MSU5L
UykKICAgICBSZXRhaW5QdHI8TlNVUkw+IF9hcHBMaW5rVVJMOwpAQCAtMTg5LDkgKzE5MCw5IEBA
IEBpbnRlcmZhY2UgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciA6IE5TT2IKICAgICBQb2xpY3lBY3Rp
b24gX2RlZmF1bHRQb2xpY3k7CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFt
ZSBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRl
ZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5OworLSAoaWQpaW5pdFdpdGhG
cmFtZTooRnJhbWUqKWZyYW1lIGlkZW50aWZpZXI6KFBvbGljeUNoZWNrSWRlbnRpZmllcilpZGVu
dGlmaWVyIHBvbGljeUZ1bmN0aW9uOihGcmFtZVBvbGljeUZ1bmN0aW9uJiYpcG9saWN5RnVuY3Rp
b24gZGVmYXVsdFBvbGljeTooUG9saWN5QWN0aW9uKWRlZmF1bHRQb2xpY3k7CiAjaWYgSEFWRShB
UFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rp
b246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQ
b2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOihOU1VSTCAqKXVybDsKKy0gKGlk
KWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50
aWZpZXIpaWRlbnRpZmllciBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBv
bGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFw
cExpbmtVUkw6KE5TVVJMICopdXJsOwogI2VuZGlmCiAKIC0gKHZvaWQpaW52YWxpZGF0ZTsKQEAg
LTg2NSw3ICs4NjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
CiAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3
XTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdl
YlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTg3Myw3ICs4NzQsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KFdURk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246OlVzZSkuZ2V0KCldOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5l
cihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpVc2UpLmdldCgp
XTsKIH0KIAogCkBAIC04OTYsNyArODk3LDcgQEAgc3RhdGljIEJPT0wgc2hvdWxkVHJ5QXBwTGlu
ayhXZWJWaWV3ICp3ZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQk9PTCB0cnlBcHBMaW5rID0g
c2hvdWxkVHJ5QXBwTGluayh3ZWJWaWV3LCBhY3Rpb24sIG51bGxwdHIpOwpAQCAtOTA1LDEwICs5
MDYsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0
aW9uLCBmb3JtU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBC
b2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJhbWVOYW1lOmZyYW1lTmFt
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5
TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBM
aW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOworICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5r
ID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIEJPT0wgdHJ5QXBwTGlu
ayA9IHNob3VsZFRyeUFwcExpbmsod2ViVmlldywgYWN0aW9uLCBjb3JlKG1fd2ViRnJhbWUuZ2V0
KCkpKTsKQEAgLTkxNyw3ICs5MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkCiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZN
b3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIHRyeUFwcExpbmsgPyAoTlNVUkwg
KilyZXF1ZXN0LnVybCgpIDogbmlsKS5nZXQoKV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdU
Rk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5QXBwTGluayA/IChOU1VS
TCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtOTY1LDcgKzk2Niw5IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICAgICB9CiAKICAgICBOU0RpY3Rpb25h
cnkgKnZhbHVlcyA9IG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KGZvcm1TdGF0ZSk7Ci0g
ICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0
b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZvcm06d2l0aFZhbHVlczpzdWJtaXNzaW9u
TGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVu
dCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5
TGlzdGVuZXIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFBvbGljeUFjdGlvbikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0sIFBvbGljeUFj
dGlvbjo6SWdub3JlKS5nZXQoKSk7CisgICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZv
cm06d2l0aFZhbHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0
KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVudCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3Jt
KCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlzdGVuZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIHsg
fSwKKyAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKSBtdXRhYmxlIHsgY29tcGxl
dGlvbkhhbmRsZXIoKTsgfSwKKyAgICAgICAgUG9saWN5QWN0aW9uOjpJZ25vcmUpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRl
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0xNTE4LDcgKzE1MjEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlCiB7CiB9CiAKLVJldGFpblB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5l
cihGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGljeUFjdGlvbiBkZWZhdWx0UG9s
aWN5LCBOU1VSTCAqYXBwTGlua1VSTCkKK1JldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcihQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xp
Y3lBY3Rpb24gZGVmYXVsdFBvbGljeSwgTlNVUkwgKmFwcExpbmtVUkwpCiB7CiAgICAgLy8gRklY
TUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBw
b2xpY3kgbGlzdGVuZXJzLgogICAgIFttX3BvbGljeUxpc3RlbmVyIGludmFsaWRhdGVdOwpAQCAt
MTUyNiwxMCArMTUyOSwxMCBAQCBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gV2Vi
RnJhCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IHBvbGljeUxpc3RlbmVy
OwogI2lmIEhBVkUoQVBQX0xJTktTKQogICAgIGlmIChhcHBMaW5rVVJMKQotICAgICAgICBwb2xp
Y3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgcG9saWN5RnVuY3Rpb246V1RGTW92ZShm
dW5jdGlvbikgZGVmYXVsdFBvbGljeTpkZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6YXBwTGlua1VS
TF0pOworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgaWRlbnRp
ZmllcjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQ
b2xpY3k6ZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOmFwcExpbmtVUkxdKTsKICAgICBlbHNlCiAj
ZW5kaWYKLSAgICAgICAgcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciBhbGxvY10gaW5pdFdpdGhGcmFtZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpIHBvbGlj
eUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeV0p
OworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgaWRlbnRpZmll
cjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV0pOwogCiAgICAgbV9wb2xpY3lMaXN0ZW5lciA9IHBvbGljeUxpc3Rl
bmVyLmdldCgpOwogCkBAIC0yMzgzLDEyICsyMzg2LDEzIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQog
I2VuZGlmCiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBwb2xpY3lGdW5j
dGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6
KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5CistIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSop
ZnJhbWUgaWRlbnRpZmllcjooUG9saWN5Q2hlY2tJZGVudGlmaWVyKWlkZW50aWZpZXIgcG9saWN5
RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9s
aWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeQogewogICAgIHNlbGYgPSBbc2VsZiBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBfaWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAgICAgX2ZyYW1lID0gZnJhbWU7CiAgICAgX3BvbGljeUZ1bmN0aW9u
ID0gV1RGTW92ZShwb2xpY3lGdW5jdGlvbik7CiAgICAgX2RlZmF1bHRQb2xpY3kgPSBkZWZhdWx0
UG9saWN5OwpAQCAtMjM5Nyw5ICsyNDAxLDkgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUq
KWZyYW1lIHBvbGljeQogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZy
YW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilw
b2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBh
cHBMaW5rVVJMOihOU1VSTCAqKWFwcExpbmtVUkwKKy0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1l
KilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50aWZpZXIpaWRlbnRpZmllciBwb2xp
Y3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQ
b2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6KE5TVVJMICopYXBw
TGlua1VSTAogewotICAgIHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHBvbGljeUZ1
bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGlj
eV07CisgICAgc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgaWRlbnRpZmllcjppZGVu
dGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0yNDEzLDcgKzI0MTcsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfZnJhbWUg
PSBudWxscHRyOwogICAgIGlmIChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShf
cG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lB
Y3Rpb246Oklnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCBfaWRlbnRpZmllcik7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtMjQyNiw3ICsyNDMw
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgX2ZyYW1lID0gbnVsbHB0cjsKICAgICBpZiAoYXV0
byBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRy
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiQ2xpZW50IGFwcGxpY2F0
aW9uIGZhaWxlZCB0byBtYWtlIGEgcG9saWN5IGRlY2lzaW9uIHZpYSBXZWJQb2xpY3lEZWNpc2lv
bkxpc3RlbmVyLCB1c2luZyBkZWZhdWx0UG9saWN5ICVoaHUiLCBfZGVmYXVsdFBvbGljeSk7Ci0g
ICAgICAgIHBvbGljeUZ1bmN0aW9uKF9kZWZhdWx0UG9saWN5KTsKKyAgICAgICAgcG9saWN5RnVu
Y3Rpb24oX2RlZmF1bHRQb2xpY3ksIF9pZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBbc3VwZXIg
ZGVhbGxvY107CkBAIC0yNDM5LDcgKzI0NDMsNyBAQCAtICh2b2lkKXJlY2VpdmVkUG9saWN5RGVj
aXNpb246KFBvbGljeUFjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHBvbGljeUZ1
bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAg
ICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOworICAgICAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24s
IF9pZGVudGlmaWVyKTsKIH0KIAogLSAodm9pZClpZ25vcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAyLTAyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmln
YXRpb24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIgYXJvdW5kIGZ1bmN0
aW9ucyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRVcFBvbGljeUxpc3RlbmVyKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDE5LTAxLTMx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2ZXJ0IHIyMzg4MTkgd2hpY2ggaXMgdW5uZWVkZWQgYW5kIGNhdXNlZCBhIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biAyNDA5MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBw
dWJsaWM6CiAKICAgICB+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUoKSB7IH0KIAorICAg
IFBvbGljeUNoZWNrSWRlbnRpZmllciBtX3BvbGljeUNoZWNrSWRlbnRpZmllcjsKICAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIG1fcG9saWN5RnVuY3Rpb247CiAgICAgQ09NUHRyPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXI+IG1fcG9saWN5TGlzdGVuZXI7CiB9OwpAQCAtNTI4LDcgKzUyOSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygKICAgICAgICAgdWktPndlYlZp
ZXdTaG93KHdlYlZpZXcpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fd2ViRnJhbWUpOwpAQCAtNTQwLDEzICs1NDEsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgQ09NUHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxS
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVx
dWVzdCkpOwogCi0gICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUod2ViVmlldywgQlN0cmluZyhyZXNwb25zZS5taW1lVHlwZSgpKSwgdXJsUmVx
dWVzdC5nZXQoKSwgbV93ZWJGcmFtZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0
aW9uKSkuZ2V0KCkpKSkKKyAgICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQ
b2xpY3lGb3JNSU1FVHlwZSh3ZWJWaWV3LCBCU3RyaW5nKHJlc3BvbnNlLm1pbWVUeXBlKCkpLCB1
cmxSZXF1ZXN0LmdldCgpLCBtX3dlYkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZp
ZXIsIFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xpY3lBY3Rpb246OlVz
ZSk7CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oaWRlbnRp
ZmllciwgUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRl
KiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9u
JiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1l
UG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93
ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwpAQCAtNTU5LDEzICs1NjAsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZAogICAgIENPTVB0cjxJV2ViVVJMUmVxdWVzdD4gdXJsUmVxdWVzdChBZG9wdENP
TSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKHJlcXVlc3QpKTsKICAgICBD
T01QdHI8V2ViQWN0aW9uUHJvcGVydHlCYWc+IGFjdGlvbkluZm9ybWF0aW9uKEFkb3B0Q09NLCBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoYWN0aW9uLCBmb3JtU3RhdGUgPyAm
Zm9ybVN0YXRlLT5mb3JtKCkgOiBudWxscHRyLCBjb3JlRnJhbWUpKTsKIAotICAgIGlmIChTVUND
RUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJW
aWV3LCBhY3Rpb25JbmZvcm1hdGlvbi5nZXQoKSwgdXJsUmVxdWVzdC5nZXQoKSwgQlN0cmluZyhm
cmFtZU5hbWUpLCBzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkp
KQorICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih3ZWJWaWV3LCBhY3Rpb25JbmZvcm1hdGlvbi5nZXQoKSwgdXJsUmVxdWVzdC5n
ZXQoKSwgQlN0cmluZyhmcmFtZU5hbWUpLCBzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIs
IFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bv
bGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7
CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oaWRlbnRpZmll
ciwgUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgV2ViQ29yZTo6UG9saWN5RGVjaXNp
b25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgV2ViQ29yZTo6
UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1l
UG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93
ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwpAQCAtNTc4LDEwICs1NzksMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZAogICAgIENPTVB0cjxJV2ViVVJMUmVxdWVzdD4gdXJsUmVxdWVzdChBZG9wdENP
TSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKHJlcXVlc3QpKTsKICAgICBD
T01QdHI8V2ViQWN0aW9uUHJvcGVydHlCYWc+IGFjdGlvbkluZm9ybWF0aW9uKEFkb3B0Q09NLCBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoYWN0aW9uLCBmb3JtU3RhdGUgPyAm
Zm9ybVN0YXRlLT5mb3JtKCkgOiBudWxscHRyLCBjb3JlRnJhbWUpKTsKIAotICAgIGlmIChTVUND
RUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2Vi
VmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0KCksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJh
bWUsIHNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpLmdldCgpKSkpCisgICAg
aWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbih3ZWJWaWV3LCBhY3Rpb25JbmZvcm1hdGlvbi5nZXQoKSwgdXJsUmVxdWVzdC5nZXQoKSwg
bV93ZWJGcmFtZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0
aW9uKSkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wb2xpY3lMaXN0ZW5lclBy
aXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOworICAgIG1fcG9saWN5
TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKGlkZW50aWZpZXIsIFBvbGljeUFjdGlv
bjo6VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVU
b0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTYyMyw3ICs2
MjQsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTCiAgICAgQ09N
UHRyPElQcm9wZXJ0eUJhZz4gZm9ybVZhbHVlc1Byb3BlcnR5QmFnKEFkb3B0Q09NLCBDT01Qcm9w
ZXJ0eUJhZzxTdHJpbmc+OjpjcmVhdGVJbnN0YW5jZShmb3JtVmFsdWVzTWFwKSk7CiAKICAgICBD
T01QdHI8V2ViRnJhbWU+IHNvdXJjZUZyYW1lKGtpdChmb3JtU3RhdGUuc291cmNlRG9jdW1lbnQo
KS5mcmFtZSgpKSk7Ci0gICAgaWYgKFNVQ0NFRURFRChmb3JtRGVsZWdhdGUtPndpbGxTdWJtaXRG
b3JtKG1fd2ViRnJhbWUsIHNvdXJjZUZyYW1lLmdldCgpLCBmb3JtRWxlbWVudC5nZXQoKSwgZm9y
bVZhbHVlc1Byb3BlcnR5QmFnLmdldCgpLCBzZXRVcFBvbGljeUxpc3RlbmVyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUG9saWN5QWN0aW9uKSBtdXRh
YmxlIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfSkuZ2V0KCkpKSkKKyAgICBpZiAoU1VDQ0VFREVE
KGZvcm1EZWxlZ2F0ZS0+d2lsbFN1Ym1pdEZvcm0obV93ZWJGcmFtZSwgc291cmNlRnJhbWUuZ2V0
KCksIGZvcm1FbGVtZW50LmdldCgpLCBmb3JtVmFsdWVzUHJvcGVydHlCYWcuZ2V0KCksCisgICAg
ICAgIHNldFVwUG9saWN5TGlzdGVuZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIHsgfSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lBY3Rpb24s
IFBvbGljeUNoZWNrSWRlbnRpZmllcikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0p
LmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBBZGQgYSBzYW5lIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24KQEAgLTEyODIsNyArMTI4NCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUMKICAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+
bV9wb2xpY3lGdW5jdGlvbiA9IG51bGxwdHI7CiB9CiAKLUNPTVB0cjxXZWJGcmFtZVBvbGljeUxp
c3RlbmVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCitDT01QdHI8V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICAvLyBGSVhNRTogPHJkYXI6Ly81NjM0MzgxPiBX
ZSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBvbGljeSBsaXN0ZW5lcnMuCiAKQEAg
LTEyOTMsNiArMTI5NSw3IEBAIENPTVB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFt
ZUwKICAgICBBU1NFUlQoY29yZUZyYW1lKTsKIAogICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRl
LT5tX3BvbGljeUxpc3RlbmVyLmFkb3B0UmVmKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0
ZUluc3RhbmNlKGNvcmVGcmFtZSkpOworICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3Bv
bGljeUNoZWNrSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgbV9wb2xpY3lMaXN0ZW5lclBy
aXZhdGUtPm1fcG9saWN5RnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKIAogICAgIHJldHVy
biBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lMaXN0ZW5lcjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDkgKzEwMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVz
dG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25N
b2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25N
b2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNv
cmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOwogCi0gICAgQ09NUHRyPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmKTsKKyAgICBDT01QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lM
aXN0ZW5lcihXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24mJik7CiAgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OlBvbGljeUFjdGlvbik7CiAKICAgICBib29sIHNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50
KGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360997</attachid>
            <date>2019-02-02 21:03:50 -0800</date>
            <delta_ts>2019-02-02 22:04:15 -0800</delta_ts>
            <desc>Another windows build fix attempt</desc>
            <filename>bug-194189-20190202210349.patch</filename>
            <type>text/plain</type>
            <size>105347</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE5LTAyLTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRpb24g
cG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgSW50cm9kdWNlZCBQb2xpY3lDaGVja0lkZW50aWZpZXIgdG8gcGFpciBlYWNoIG5hdmln
YXRpb24gcG9saWN5IGNoZWNrIHJlcXVlc3Qgd2l0aCBhIGRlY2lzaW9uLAorICAgICAgICBhbmQg
ZGVwbG95ZWQgaXQgaW4gUG9saWN5Q2hlY2tlci4gVGhlIGlkZW50aWZpZXIgaXMgcGFzc2VkIGZy
b20gV2ViQ29udGVudCBwcm9jZXNzIHRvIFVJIHByb2Nlc3MKKyAgICAgICAgaW4gV2ViS2l0Miwg
YW5kIHBhc3NlZCBpdCBiYWNrIHdpdGggdGhlIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICBC
ZWNhdXNlIFBvbGljeUNoZWNrSWRlbnRpZmllciBlbWJlZHMgdGhlIHByb2Nlc3MgaWRlbnRpZmll
ciBmcm9tIHdoaWNoIGEgbmF2aWdhdGlvbiBwb2xpY3kgaXMgY2hlY2tlZCwKKyAgICAgICAgd2Ug
d291bGQgYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBVSSBwcm9jZXNzIGhhZCBzZW50IHRoZSBkZWNp
c2lvbiB0byBhIHdyb25nIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gYWRkcyByZWxlYXNlIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSBpcyBzZXQgd2hlbmV2ZXIKKyAgICAgICAgd2UncmUgcmVxdWVzdGluZyBh
IG5hdmlnYXRpb24gcG9saWN5IGNoZWNrLgorCisgICAgICAgIFRoZXNlIGNvZGUgY2hhbmdlcyBz
aG91bGQgZWl0aGVyOgorICAgICAgICAxLiBGaXggY3Jhc2hlcyBpbiBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IHdoZXJlIGlzQmFja0ZvcndhcmRMb2FkVHlw
ZSB3b3VsZAorICAgICAgICAgICByZXR1cm4gdHJ1ZSB5ZXQgaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpIGlzIG51bGwuCisgICAgICAgIDIuIERldGVjdCBhIGJ1ZyB0aGF0IFVJIHByb2Nlc3Mg
Y2FuIHNlbmQgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiB0byBhIHdyb25nIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgMy4gUnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IHRoYXQgKDIp
IGV4aXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVu
Y29kZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6aXNWYWxpZEZvcik6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgaWRlbnRpZmVyIG1hdGNoZXMuIEFsc28gcmVsZWFzZSBhc3NlcnRzCisg
ICAgICAgIHRoYXQgdGhlIHByb2Nlc3MgSUQgaXMgc2FtZSwgYW5kIHRoYXQgbV9jaGVjayBpcyBh
bHdheXMgbm90IHplcm8gKG1lYW5pbmcgaXQncyBhIGdlbmVyYXRlZCB2YWx1ZSkuCisgICAgICAg
IFRoZSBmYWlsdXJlIG9mIHRoZXNlIHJlbGVhc2UgYXNzZXJ0aW9ucyB3b3VsZCBpbmRpY2F0ZSB0
aGF0IHRoZXJlIGlzIGEgYnVnIGluIFVJIHByb2Nlc3MsIHdoaWNoIHJlc3VsdHMgaW4KKyAgICAg
ICAgYSBwb2xpY3kgZGVjaXNpb24gcmVzcG9uc2UgYmVpbmcgc2VudCB0byBhIHdyb25nIFdlYiBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KTogRXhpdCBlYXJseSBpZiBpc1ZhbGlkRm9yIGZhaWxzLgorICAgICAgICAoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE5LTAyLTAyICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRpZHkgdXAg
ZGF0YSBtZW1lYmVycyBvZiBGcmFtZVZpZXcgYW5kIHJlbGF0ZWQgY2xhc3NlcyB0byBzaHJpbmsg
Y2xhc3Mgc2l6ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIkhUVFBI
ZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhp
c3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJ
Y29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTGlua0ljb25Db2xsZWN0b3IuaCIKQEAgLTY2Miw3ICs2NjMsMTAgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgIEFTU0VSVCghbV93YWl0aW5nRm9y
TmF2aWdhdGlvblBvbGljeSk7CiAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IHRy
dWU7CiAKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2
aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgLy8gRklYTUU6IEFkZCBhIGxv
YWQgdHlwZSBjaGVjay4KKyAgICBhdXRvJiBwb2xpY3lDaGVja2VyID0gZnJhbWVMb2FkZXIoKS0+
cG9saWN5Q2hlY2tlcigpOworICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5
cGUocG9saWN5Q2hlY2tlci5sb2FkVHlwZSgpKSB8fCBmcmFtZUxvYWRlcigpLT5oaXN0b3J5KCku
cHJvdmlzaW9uYWxJdGVtKCkpOworICAgIHBvbGljeUNoZWNrZXIuY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdh
dGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6
OnRyeUxvYWRpbmdSZXF1ZXN0RnJvbUFwcGxpY2F0aW9uQ2FjaGUoKQpAQCAtODM5LDcgKzg0Mywx
MCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBtYWluUmVzb3VyY2VMb2FkZXIgPSB0aGlzLT5tYWluUmVzb3Vy
Y2VMb2FkZXIoKTsKICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICBtYWluUmVz
b3VyY2VMb2FkZXItPm1hcmtJbkFzeW5jUmVzcG9uc2VQb2xpY3lDaGVjaygpOwotICAgIGZyYW1l
TG9hZGVyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5S
ZXNvdXJjZUxvYWRlciksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIucmVsZWFzZSgpXSAoUG9saWN5QWN0aW9uIHBvbGljeSkgbXV0YWJsZSB7CisgICAgYXV0byBy
ZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7CisgICAg
ZnJhbWVMb2FkZXIoKS0+Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVu
dGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3Vy
Y2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5SZXNvdXJjZUxvYWRlciksCisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpLCByZXF1ZXN0SWRl
bnRpZmllcl0gKFBvbGljeUFjdGlvbiBwb2xpY3ksIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNw
b25zZUlkZW50aWZlaXIpIG11dGFibGUgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXNwb25z
ZUlkZW50aWZlaXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpOwogICAgICAgICBjb250
aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwogICAgICAgICBpZiAobWFpblJlc291cmNl
TG9hZGVyKQogICAgICAgICAgICAgbWFpblJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9u
c2VQb2xpY3koKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShy
ZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDExICs0NTIsMTEgQEAgUEFMOjpTZXNzaW9uSUQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6cwogICAgIHJldHVybiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KIAotdm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiwg
UG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5
Myw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGkKICAgICBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBmaW5hbCB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbCB7IH0KIAotICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3Qg
U3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lv
bk1vZGUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFs
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAy
NDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjMsMTUgKzM2MywxNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNM
b2FkaW5nKGJvb2wgCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9u
KQogewogICAgIGlmICghYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICAvLyBMb2Fk
IHdhcyBjYW5jZWxsZWQKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOwor
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhlIHBvbGljeSBjaGVj
ayBpZGVudGlmaWVyLgorICAgIGNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UocmVzcG9uc2UsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSwgaWRlbnRpZmll
ciwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2Nh
dGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTEzNzgsNiArMTM3OSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWUKIAogICAgIGlmICghdGFyZ2V0
RnJhbWUgJiYgIWVmZmVjdGl2ZUZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9u
ID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tl
cigpLmxvYWRUeXBlKCkpKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3Rh
dGUpLCBlZmZlY3RpdmVGcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNh
bGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8
Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11
dGFibGUgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMzk4LDYgKzE0MDAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5z
ZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lD
aGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlw
ZShuZXdMb2FkVHlwZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobmV3TG9hZFR5cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0
KSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1l
bnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1l
ID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vh
a1B0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24pIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgfSwgUG9saWN5RGVj
aXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CkBAIC0xNDYxLDYgKzE0NjQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRD
aGVja05ld1dpbmRvd1BvbGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9u
IHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24p
LCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCB7IH0sIHJlcXVlc3QuZnJhbWVO
YW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZv
cm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAg
ICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3Jt
U3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7
CiAgICAgICAgIH0pOwpAQCAtMTU4NCw2ICsxNTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcgogICAgIH0KIAogICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2Fk
VHlwZSh0eXBlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5
cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgYm9vbCBpc0Zvcm1TdWJt
aXNzaW9uID0gZm9ybVN0YXRlOwogCiAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9h
ZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhvZCgpOwpAQCAtMTU5NSw2ICsxNjAwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcgogICAgICAgICBvbGREb2N1bWVudExv
YWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihXVEZNb3ZlKGFjdGlvbikpOwogICAgICAgICBvbGRE
b2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsK
ICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSB8
fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVu
dExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUg
PSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbikgewogICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPT0gTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQpOwogICAgICAgICB9LCBQb2xpY3lEZWNp
c2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKQEAgLTE2MjksNiArMTYzNSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigp
LmxvYWRUeXBlKCkpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5y
ZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBs
b2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJl
ZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5n
ZXQoKSwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMzAxMCw2ICszMDE3LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRM
b2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVl
IHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rp
b24sIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExv
YWRUeXBlKEZyYW1lTG9hZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFt
ZUxvYWRUeXBlKTsKIAotdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uKT47Cit1c2luZyBDb250ZW50UG9saWN5RGVjaXNp
b25GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNr
SWRlbnRpZmllcik+OwogCiBjbGFzcyBGcmFtZUxvYWRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRnJhbWVMb2FkZXIpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYm
KTsKKyAgICB2b2lkIGNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsK
IAogICAgIHZvaWQgZGlkRXhwbGljaXRPcGVuKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcg
KzEwNyw3IEBAIGVudW0gY2xhc3MgUG9saWN5RGVjaXNpb25Nb2RlOwogCiBzdHJ1Y3QgU3RyaW5n
V2l0aERpcmVjdGlvbjsKIAotdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlv
bik+IEZyYW1lUG9saWN5RnVuY3Rpb247Cit0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9s
aWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC0x
OTAsOSArMTkwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0
ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQcm9jZXNzSWRl
bnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY3LDQ4IEBAIGVu
dW0gY2xhc3MgRnJhbWVMb2FkVHlwZSA6IHVpbnQ4X3QgewogICAgIFJlbG9hZEV4cGlyZWRPbmx5
CiB9OwogCitjbGFzcyBQb2xpY3lDaGVja0lkZW50aWZpZXIgeworcHVibGljOgorICAgIFBvbGlj
eUNoZWNrSWRlbnRpZmllcigpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBQb2xpY3lDaGVja0lk
ZW50aWZpZXIgY3JlYXRlKCk7CisKKyAgICBib29sIGlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVu
dGlmaWVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9saWN5Q2hlY2tJZGVudGlmaWVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzID09IG90aGVyLm1fcHJvY2VzcyAmJiBt
X3BvbGljeUNoZWNrID09IG90aGVyLm1fcG9saWN5Q2hlY2s7IH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBkZWNv
ZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFBvbGljeUNoZWNrSWRlbnRpZmllcihQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzLCB1aW50NjRfdCBwb2xpY3lDaGVjaykKKyAgICAgICAgOiBt
X3Byb2Nlc3MocHJvY2VzcykKKyAgICAgICAgLCBtX3BvbGljeUNoZWNrKHBvbGljeUNoZWNrKQor
ICAgIHsgfQorCisgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzOworICAgIHVpbnQ2NF90
IG1fcG9saWN5Q2hlY2sgeyAwIH07Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9wcm9jZXNzIDw8IG1fcG9saWN5Q2hlY2s7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxQb2xpY3lDaGVja0lkZW50aWZpZXI+IFBvbGlj
eUNoZWNrSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBw
cm9jZXNzID0gUHJvY2Vzc0lkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBy
b2Nlc3MpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB1aW50NjRfdCBwb2xp
Y3lDaGVjazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvbGljeUNoZWNrKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQb2xpY3lDaGVja0lkZW50aWZpZXIg
eyAqcHJvY2VzcywgcG9saWN5Q2hlY2sgfTsKK30KKwogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5l
clBvbGljeSA6IHVpbnQ4X3QgewogICAgIFN1cHByZXNzLAogICAgIEFsbG93CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNDA5MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDIxIEBAIHN0YXRpYyBib29sIGlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG8K
ICAgICByZXR1cm4gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkKTsKIH0KIAorUG9saWN5Q2hlY2tJZGVudGlmaWVyIFBvbGljeUNoZWNrSWRlbnRpZmllcjo6
Y3JlYXRlKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CisgICAgaWRl
bnRpZmllcisrOworICAgIHJldHVybiBQb2xpY3lDaGVja0lkZW50aWZpZXIgeyBQcm9jZXNzOjpp
ZGVudGlmaWVyKCksIGlkZW50aWZpZXIgfTsKK30KKworYm9vbCBQb2xpY3lDaGVja0lkZW50aWZp
ZXI6OmlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGV4cGVjdGVkSWRlbnRpZmllcikK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9wcm9jZXNzID09IGV4cGVjdGVk
SWRlbnRpZmllci5tX3Byb2Nlc3MsICJSZWNlaXZlZCBhIHBvbGljeSBjaGVjayByZXNwb25zZSBm
b3IgYSB3cm9uZyBwcm9jZXNzIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG1f
cG9saWN5Q2hlY2ssICJSZWNlaXZlZCAwIGFzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciIp
OworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BvbGljeUNoZWNrIDw9IGV4cGVj
dGVkSWRlbnRpZmllci5tX3BvbGljeUNoZWNrLCAiUmVjZWl2ZWQgYSBwb2xpY3kgY2hlY2sgcmVz
cG9uc2UgZnJvbSB0aGUgZnV0dXJlIik7CisgICAgcmV0dXJuIG1fcG9saWN5Q2hlY2sgPT0gZXhw
ZWN0ZWRJZGVudGlmaWVyLm1fcG9saWN5Q2hlY2s7Cit9CisKIFBvbGljeUNoZWNrZXI6OlBvbGlj
eUNoZWNrZXIoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fZGVs
ZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeShmYWxzZSkKQEAgLTE3MCw5ICsxODUsMTYg
QEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpYwogCiAgICAgYXV0byBi
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVj
aXNpb25Nb2RlOjpBc3luY2hyb25vdXMgPyBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2Fy
eShyZXF1ZXN0KSA6IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIHsgfTsKIAorICAgIGF1
dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0ZSgpOwog
ICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IHRydWU7CiAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0
eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwotICAgIG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGFjdGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBw
b2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZv
cm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSks
IGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgbV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
YWN0aW9uLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGlj
eURlY2lzaW9uTW9kZSwgcmVxdWVzdElkZW50aWZpZXIsCisgICAgICAgIFt0aGlzLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RG
TW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksCisgICAgICAgICBibG9iVVJMTGlmZXRpbWVFeHRlbnNp
b24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiksIHJlcXVlc3RJZGVudGlmaWVy
XSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3Bv
bnNlSWRlbnRpZmllcikgbXV0YWJsZSB7CisKKyAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50aWZp
ZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAK
ICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKQEAgLTIwNiw3ICsyMjgsMTQgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeQogCiAgICAgYXV0byBibG9iVVJM
TGlmZXRpbWVFeHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1
ZXN0KTsKIAotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRl
LmdldCgpLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZv
cm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24g
PSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIG11dGFibGUgeworICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVj
a0lkZW50aWZpZXI6OmNyZWF0ZSgpOworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJh
bWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LAorICAgICAgICBmb3JtU3RhdGUgPSBXVEZN
b3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92ZShibG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24pLAorICAgICAgICByZXF1ZXN0SWRlbnRpZmllcl0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50
aWZpZXIpIG11dGFibGUgeworCisgICAgICAgIGlmICghcmVzcG9uc2VJZGVudGlmaWVyLmlzVmFs
aWRGb3IocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3du
bG9hZDoKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2Fk
KHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTktMDItMDIg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVmFsaWRhdGUgbmF2
aWdhdGlvbiBwb2xpY3kgZGVjaXNpb25zIHRvIGF2b2lkIGNyYXNoZXMgaW4gY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQxODkKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBQYXNzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciBhcm91bmQgZnVu
Y3Rpb25zIGFuZCBzdG9yZSBpdCBpbiBQb2xpY3lEZWNpc2lvblNlbmRlcgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KKworICAgICAgICBXZSBhbHNvIHN0b3JlIGl0IGluIFdlYkZyYW1lIGlu
IHRoZSBjYXNlIHRoZSBwb2xpY3kgZGVjaXNpb24gaGFkIHRvIGJlIGludmFsaWRhdGVkCisgICAg
ICAgIGJlZm9yZSB0aGUgZGVjaXNpb24gd2FzIHJlY2VpdmVkICh2aWEgV2ViRnJhbWU6OmludmFs
aWRhdGVQb2xpY3lMaXN0ZW5lcikuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcik6IEFkZGVk
IFBvbGljeUNoZWNrSWRlbnRpZmllciBhcyBhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6c2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXI6OlBvbGljeURlY2lzaW9u
U2VuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDE5LTAyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFRpZHkgdXAgZGF0YSBtZW1lYmVycyBvZiBGcmFtZVZpZXcgYW5kIHJlbGF0ZWQg
Y2xhc3NlcyB0byBzaHJpbmsgY2xhc3Mgc2l6ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCw3
IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6UGF5bWVu
dE1ldGhvZFVwZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkluZm8nOiBbJzxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBvbGljeUFjdGlvbic6IFsnPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5JzogWyc8V2ViQ29yZS9BdWRpb1Nlc3Npb24u
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInOiBb
JzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjQwOTAx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsMTYgKzI2MiwyMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92CiAgICAgbV9wYWdlLmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCBX
VEZNb3ZlKHVybCkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIEFTU0VSVChtX21haW5GcmFtZS0+ZnJh
bWVJRCgpID09IGZyYW1lSUQpOwotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShm
cmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdp
bmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKKyAgICBtX3BhZ2Uu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIs
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCisgICAgICAgIFdU
Rk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7Ci0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgdXNlckRh
dGEpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxpc3RlbmVySUQs
IHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6c3RhcnRVUkxTY2hl
bWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24g
MjQwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsK
LSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCisgICAg
ICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3Qg
bGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsCisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1
aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0
cmluZywgdWludDY0X3QgZnJhbWVJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzQsMjIgKzI2NzQsMjYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaQogCiBjbGFzcyBXZWJQ
YWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9saWN5
RGVjaXNpb25TZW5kZXI+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBTZW5kRnVuY3Rpb24gPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
LCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+OwotICAgIHN0YXRp
YyBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNyZWF0ZShTZW5kRnVuY3Rpb24mJiBzZW5kRnVu
Y3Rpb24pCisgICAgdXNpbmcgU2VuZEZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+OworCisgICAg
c3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTZW5kRnVuY3Rpb24mJiBzZW5kRnVuY3Rpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2xpY3lEZWNpc2lvblNlbmRlcihXVEZNb3ZlKHNl
bmRGdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9saWN5RGVjaXNp
b25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24pKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kKEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIGlmIChtX3NlbmRGdW5jdGlvbikKLSAgICAgICAgICAgIG1fc2VuZEZ1bmN0
aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBtX3NlbmRGdW5j
dGlvbihtX2lkZW50aWZpZXIsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgfQog
cHJpdmF0ZToKLSAgICBQb2xpY3lEZWNpc2lvblNlbmRlcihTZW5kRnVuY3Rpb24gc2VuZEZ1bmN0
aW9uKQotICAgICAgICA6IG1fc2VuZEZ1bmN0aW9uKFdURk1vdmUoc2VuZEZ1bmN0aW9uKSkgeyB9
CisgICAgUG9saWN5RGVjaXNpb25TZW5kZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFNlbmRGdW5jdGlvbiBzZW5kRnVuY3Rpb24pCisgICAgICAgIDogbV9zZW5kRnVuY3Rpb24o
V1RGTW92ZShzZW5kRnVuY3Rpb24pKQorICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICAgICB7IH0KIAogICAgIFNlbmRGdW5jdGlvbiBtX3NlbmRGdW5jdGlvbjsKKyAgICBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYgc2VuZGVyKQpAQCAtMjcwOSw3ICsyNzEzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9u
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0
aW9uKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudF0oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLAorICAg
ICAgICBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5h
dmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAg
ICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24o
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CiAgICAgICAgICAgICByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShkYXRhKSwg
V1RGTW92ZShzZW5kZXIpKTsKQEAgLTQzNTUsMjIgKzQzNjAsMzMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi17Ci0g
ICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRp
b25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0
YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0
YSwgbGlzdGVuZXJJRCk7Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksCisgICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5n
UGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVz
dEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLAorICAgIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
KyAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAg
ICAgYXV0byogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3Jp
Z2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92
ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSksIHVzZXJEYXRhLCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3Mg
PSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgeworICAgIGF1dG8gc2VuZGVyID0g
UG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7Ci0gICAgfSkpOworICAgIH0pOworCisgICAgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBX
VEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
cXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIFdURk1vdmUo
c2VuZGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xp
Y3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAorICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxS
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQ0MjksNyArNDQ0NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgc2hvdWxkRXhwZWN0U2FmZUJyb3dz
aW5nUmVzdWx0ID0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObzsKIAogICAgIGF1
dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUp
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb25dIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7Ci0gICAgICAg
IAorCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBmcmFtZSA9IGZyYW1lLmNvcHlSZWYoKSwgc2Vu
ZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGlj
aWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAg
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgcG9saWNpZXMuZ2V0
KCksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIH07CkBAIC00NTUzLDkgKzQ1NjksMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjbwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50
NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAor
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LAorICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShXVEZN
b3ZlKHJlcGx5KSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3Jl
YXRlKGlkZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIAogICAgIGF1dG8qIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKSB7CkBAIC00NTY5LDEz
ICs0NTg4LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOwogICAgIH0KIAotICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2lu
YWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOworICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1l
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLAorICAgICAgICBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRl
ci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3lu
Y2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIHNlbmRlci0+c2VuZChQb2xp
Y3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDU4
MywxMyArNDYwNCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2lu
CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChtX3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1h
a2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdX
YXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgeworICAgIGF1dG8gbGlzdGVu
ZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJ
RF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBS
ZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBtdXRhYmxl
IHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlz
IG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0
aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJu
aW5nKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURd
IChhdXRvLi4uIGFyZ3MpIHsKKworICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9u
U2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7CiAg
ICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOwot
ICAgICAgICB9KSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7
CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykpOwogCiAgICAgaWYg
KG1fcG9saWN5Q2xpZW50KQpAQCAtNDYwOSwxMiArNDYzMywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgIAogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJh
bWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9y
aWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNo
b3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDYyNiwxMyArNDY1MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJsKCkp
OwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25J
RCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRy
OwotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3MgPSBwcm9j
ZXNzLmNvcHlSZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5h
dmlnYXRpb24pLAorICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhl
cmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBn
byBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7Ci0gICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgp
LCBXVEY6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBw
cm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJncykgeworCisgICAgICAgIGF1
dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoYXV0by4uLiBhcmdzKSB7CiAgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKLSAgICAg
ICAgfSkpOworICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFdURk1v
dmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykp
OwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDggKzE0MzYsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKKyAgICAg
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
CisgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlv
biYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgbG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5h
dmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwpAQCAtMTUyMywxMSArMTUyNiwxOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBS
ZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1l
UHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDA5MDEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSwxMCArMTA1LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAj
ZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBi
b29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMp
IERlbGF5ZWQKLSAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9v
bCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9s
aWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5h
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
VW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgUHJvZ3Jl
c3MgbWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNp
b24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDE2ICs3MzAsMTYg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KAogICAgIHdlYlBhZ2Ut
PnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24p
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9
IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkg
ewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJpbmcoKSkgewotICAgICAgICBmdW5j
dGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6
VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQ4LDcgKzc0
OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBv
bGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2Uod2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIHVzZXJEYXRh
KTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAg
ICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NzU5LDE2ICs3NTksMTggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNf
Y2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlv
bklEKCkgOiAwOwogICAgIAogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
LSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihX
VEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAg
ICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93
UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQotICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9m
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwg
V2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKKyAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LAorICAgICAgICBjYW5T
aG93UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQorICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgaWRlbnRp
ZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUg
PyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgewotICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzc5LDExICs3ODEsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQ
b2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9u
LnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09
IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lB
Y3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBpZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFt
ZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBt
X2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24p
LCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwogCiAgICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
bmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CkBAIC03OTcsNyArNzk5
LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlID0gbmF2aWdhdGlvbkFjdGlvbi5kb3du
bG9hZEF0dHJpYnV0ZSgpOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJh
bWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9m
cmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUp
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklELCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LAorICAgICAgICBmcmFtZU5hbWUsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYm
IHdlYnNpdGVQb2xpY2llcykKQEAgLTgxOCwxMSArODIxLDEyIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWUKICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRv
RG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25N
b2RlIHBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2Rl
IHBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlcXVl
c3RJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAg
IGlmICghd2ViUGFnZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7
CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgzMCw3ICs4MzQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICAvLyBBbHdheXMgaWdub3Jl
IHJlcXVlc3RzIHdpdGggZW1wdHkgVVJMcy4gCiAgICAgaWYgKHJlcXVlc3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODQxLDExICs4NDUsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2Us
IG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xp
Y3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBv
bGljeUFjdGlvbjo6VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIHJl
cXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Olllcyk7CisKKyAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpZZXMpOwogCiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkpOwogICAg
IGF1dG8gcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKS52YWx1ZSgpOwpA
QCAtODgxLDcgKzg4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWQKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUo
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpIHsK
ICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2UgcmVjZWl2ZSBhIHJlZGlyZWN0IGFmdGVyIHRoZSBu
YXZpZ2F0aW9uIHBvbGljeSBoYXMgYmVlbiBkZWNpZGVkIGZvciB0aGUgaW5pdGlhbCByZXF1ZXN0
LApAQCAtODk4LDIyICs5MDIsMjggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogCiAgICAgaWYgKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1v
ZGU6OlN5bmNocm9ub3VzKSB7CiAgICAgICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKKyAg
ICAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcjsK
ICAgICAgICAgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbjsKICAgICAgICAgRG93bmxvYWRJRCBk
b3dubG9hZElEOwogICAgICAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRl
UG9saWNpZXM7CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5m
cmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdl
SUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeUFjdGlvbiwgbmV3TmF2
aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgewotICAgICAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pc01haW5GcmFtZSgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLAorICAgICAgICAgICAgcmVxdWVzdElkZW50
aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRp
b25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCisgICAgICAgICAgICBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2Us
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksCisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocmVzcG9u
c2VJZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwg
d2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCByZXNwb25zZUlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9s
aWN5QWN0aW9uLCAwLCBkb3dubG9hZElELCB7IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcmVzcG9uc2VJZGVudGlmaWVyLCBwb2xpY3lB
Y3Rpb24sIDAsIGRvd25sb2FkSUQsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNo
cm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXIt
Pm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVy
SUQpKSkKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVy
SUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZy
YW1lKGNvcmVGcmFtZSksCisgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1bWVudExvYWRl
ci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVx
dWVzdCgpLCByZXF1ZXN0LAorICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVz
dC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSwgbGlzdGVuZXJJRCkpKQorICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgcmVxdWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCB7IH0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGlj
eUNoZWNrKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDkgKzEyMyw5IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsK
ICAgICAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9k
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJD
b3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBk
aXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDEyICsyMTAsMTMg
QEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZSgpCiAgICAgbV9jb3JlRnJhbWUgPSAwOwogfQog
Ci11aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2
aWdhdGlvbkFjdGlvbikKK3VpbnQ2NF90IFdlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVyKFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2
aWdhdGlvbkFjdGlvbikKIHsKICAgICAvLyBGSVhNRTogPHJkYXI6Ly81NjM0MzgxPiBXZSBuZWVk
IHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBvbGljeSBsaXN0ZW5lcnMuCiAKICAgICBpbnZh
bGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAorICAgIG1fcG9saWN5SWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CiAgICAgbV9wb2xpY3lMaXN0ZW5lcklEID0gZ2VuZXJhdGVMaXN0ZW5lcklEKCk7CiAg
ICAgbV9wb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUocG9saWN5RnVuY3Rpb24pOwogICAgIG1fcG9s
aWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gZm9yTmF2aWdhdGlvbkFjdGlvbjsKQEAg
LTI0NCw4ICsyNDUsMTAgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KAogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJ
RCA9IDA7CisgICAgYXV0byBpZGVudGlmaWVyID0gbV9wb2xpY3lJZGVudGlmaWVyOworICAgIG1f
cG9saWN5SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAgICBpZiAoYXV0byBmdW5jdGlvbiA9
IHN0ZDo6ZXhjaGFuZ2UobV9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpCi0gICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9u
OjpJZ25vcmUsICppZGVudGlmaWVyKTsKICAgICBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlv
bkFjdGlvbiA9IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vOwogCiAgICAgYXV0byB3aWxsU3VibWl0
Rm9ybUNvbXBsZXRpb25IYW5kbGVycyA9IFdURk1vdmUobV93aWxsU3VibWl0Rm9ybUNvbXBsZXRp
b25IYW5kbGVycyk7CkBAIC0yNTMsMTEgKzI1NiwxNCBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlk
YXRlUG9saWN5TGlzdGVuZXIoCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklE
LCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGlj
eUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9h
ZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
ICAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX3BvbGljeUxpc3RlbmVySUQgfHwgbGlzdGVuZXJJ
RCAhPSBtX3BvbGljeUxpc3RlbmVySUQgfHwgIW1fcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAorICAgIEFTU0VSVChpZGVudGlmaWVyID09IG1fcG9saWN5SWRlbnRpZmllcik7Cisg
ICAgbV9wb2xpY3lJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworCiAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAgICAgYm9vbCBm
b3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24g
PT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwogCkBAIC0yNzIsNyArMjc4LDcgQEAgdm9pZCBX
ZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKAogICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXItPnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uKGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uLCBpZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMjQwOTAxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgZW51bSBjbGFzcyBGb3JOYXZpZ2F0aW9uQWN0
aW9uIHsgTm8sIFllcyB9OwotICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29y
ZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICB1aW50
NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmKTsKIAogICAgIHVpbnQ2NF90IHNldFVwV2lsbFN1Ym1pdEZvcm1M
aXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29udGludWVX
aWxsU3VibWl0Rm9ybSh1aW50NjRfdCk7CkBAIC0xNzgsNiArMTc4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpGcmFtZSogbV9jb3JlRnJhbWUgeyBudWxscHRyIH07CiAKICAgICB1aW50NjRf
dCBtX3BvbGljeUxpc3RlbmVySUQgeyAwIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyPiBtX3BvbGljeUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0aW9uOwogICAgIEZvck5hdmlnYXRpb25BY3Rpb24g
bV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24geyBGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpObyB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fd2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjQwOTAxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNzgsMTIgKzMwNzgsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoUEFM
OjpTZXNzaW9uSQogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElELCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb25JRCwg
ZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBmcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbklELCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxNCw3ICsxMzE0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3du
bG9hZElEJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRl
UG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNp
ZXMpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
cykKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKQog
ICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlz
dGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE5LTAyLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRp
b24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIgYXJvdW5kIGZ1bmN0aW9u
cyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgorICAgICAgICBzbyB0aGF0
IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgICgtW1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9u
OmRlZmF1bHRQb2xpY3k6XSk6CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5p
dFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9uOmRlZmF1bHRQb2xpY3k6YXBwTGlu
a1VSTDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBpbnZhbGlkYXRlXSk6
CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIHJlY2VpdmVkUG9saWN5RGVjaXNpb246XSk6CisgICAg
ICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTpwb2xpY3lGdW5jdGlv
bjpkZWZhdWx0UG9saWN5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGluaXRXaXRoRnJhbWU6cG9saWN5RnVuY3Rpb246ZGVmYXVsdFBvbGljeTphcHBMaW5r
VVJMOl0pOiBEZWxldGVkLgorCiAyMDE5LTAxLTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyMzg4MTkgd2hpY2ggaXMgdW5u
ZWVkZWQgYW5kIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw5ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZyYW1lKiBkaXNw
YXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
JikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2Vi
Q29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVjaygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKQEAgLTIzMyw3ICsy
MzMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICAKLSAgICBSZXRhaW5QdHI8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZhdWx0UG9saWN5LCBOU1VS
TCAqYXBwTGlua1VSTCA9IG5pbCk7CisgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZh
dWx0UG9saWN5LCBOU1VSTCAqYXBwTGlua1VSTCA9IG5pbCk7CiAKICAgICBOU0RpY3Rpb25hcnkg
KmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFdlYkNv
cmU6OkZvcm1TdGF0ZSopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODIs
NiArMTgyLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9IEAiV2ViUAogCiBA
aW50ZXJmYWNlIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2ViUG9saWN5RGVj
aXNpb25MaXN0ZW5lciwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lcj4gewogICAgIFJlZlB0cjxG
cmFtZT4gX2ZyYW1lOworICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBfaWRlbnRpZmllcjsKICAg
ICBGcmFtZVBvbGljeUZ1bmN0aW9uIF9wb2xpY3lGdW5jdGlvbjsKICNpZiBIQVZFKEFQUF9MSU5L
UykKICAgICBSZXRhaW5QdHI8TlNVUkw+IF9hcHBMaW5rVVJMOwpAQCAtMTg5LDkgKzE5MCw5IEBA
IEBpbnRlcmZhY2UgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciA6IE5TT2IKICAgICBQb2xpY3lBY3Rp
b24gX2RlZmF1bHRQb2xpY3k7CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFt
ZSBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRl
ZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5OworLSAoaWQpaW5pdFdpdGhG
cmFtZTooRnJhbWUqKWZyYW1lIGlkZW50aWZpZXI6KFBvbGljeUNoZWNrSWRlbnRpZmllcilpZGVu
dGlmaWVyIHBvbGljeUZ1bmN0aW9uOihGcmFtZVBvbGljeUZ1bmN0aW9uJiYpcG9saWN5RnVuY3Rp
b24gZGVmYXVsdFBvbGljeTooUG9saWN5QWN0aW9uKWRlZmF1bHRQb2xpY3k7CiAjaWYgSEFWRShB
UFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rp
b246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQ
b2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOihOU1VSTCAqKXVybDsKKy0gKGlk
KWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50
aWZpZXIpaWRlbnRpZmllciBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBv
bGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFw
cExpbmtVUkw6KE5TVVJMICopdXJsOwogI2VuZGlmCiAKIC0gKHZvaWQpaW52YWxpZGF0ZTsKQEAg
LTg2NSw3ICs4NjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
CiAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3
XTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdl
YlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTg3Myw3ICs4NzQsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KFdURk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246OlVzZSkuZ2V0KCldOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5l
cihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpVc2UpLmdldCgp
XTsKIH0KIAogCkBAIC04OTYsNyArODk3LDcgQEAgc3RhdGljIEJPT0wgc2hvdWxkVHJ5QXBwTGlu
ayhXZWJWaWV3ICp3ZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQk9PTCB0cnlBcHBMaW5rID0g
c2hvdWxkVHJ5QXBwTGluayh3ZWJWaWV3LCBhY3Rpb24sIG51bGxwdHIpOwpAQCAtOTA1LDEwICs5
MDYsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0
aW9uLCBmb3JtU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBC
b2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJhbWVOYW1lOmZyYW1lTmFt
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5
TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBM
aW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOworICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5r
ID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIEJPT0wgdHJ5QXBwTGlu
ayA9IHNob3VsZFRyeUFwcExpbmsod2ViVmlldywgYWN0aW9uLCBjb3JlKG1fd2ViRnJhbWUuZ2V0
KCkpKTsKQEAgLTkxNyw3ICs5MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkCiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZN
b3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIHRyeUFwcExpbmsgPyAoTlNVUkwg
KilyZXF1ZXN0LnVybCgpIDogbmlsKS5nZXQoKV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdU
Rk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5QXBwTGluayA/IChOU1VS
TCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtOTY1LDcgKzk2Niw5IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICAgICB9CiAKICAgICBOU0RpY3Rpb25h
cnkgKnZhbHVlcyA9IG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KGZvcm1TdGF0ZSk7Ci0g
ICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0
b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZvcm06d2l0aFZhbHVlczpzdWJtaXNzaW9u
TGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVu
dCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5
TGlzdGVuZXIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFBvbGljeUFjdGlvbikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0sIFBvbGljeUFj
dGlvbjo6SWdub3JlKS5nZXQoKSk7CisgICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZv
cm06d2l0aFZhbHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0
KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVudCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3Jt
KCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlzdGVuZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIHsg
fSwKKyAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKSBtdXRhYmxlIHsgY29tcGxl
dGlvbkhhbmRsZXIoKTsgfSwKKyAgICAgICAgUG9saWN5QWN0aW9uOjpJZ25vcmUpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRl
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0xNTE4LDcgKzE1MjEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlCiB7CiB9CiAKLVJldGFpblB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5l
cihGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGljeUFjdGlvbiBkZWZhdWx0UG9s
aWN5LCBOU1VSTCAqYXBwTGlua1VSTCkKK1JldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcihQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xp
Y3lBY3Rpb24gZGVmYXVsdFBvbGljeSwgTlNVUkwgKmFwcExpbmtVUkwpCiB7CiAgICAgLy8gRklY
TUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBw
b2xpY3kgbGlzdGVuZXJzLgogICAgIFttX3BvbGljeUxpc3RlbmVyIGludmFsaWRhdGVdOwpAQCAt
MTUyNiwxMCArMTUyOSwxMCBAQCBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gV2Vi
RnJhCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IHBvbGljeUxpc3RlbmVy
OwogI2lmIEhBVkUoQVBQX0xJTktTKQogICAgIGlmIChhcHBMaW5rVVJMKQotICAgICAgICBwb2xp
Y3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgcG9saWN5RnVuY3Rpb246V1RGTW92ZShm
dW5jdGlvbikgZGVmYXVsdFBvbGljeTpkZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6YXBwTGlua1VS
TF0pOworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgaWRlbnRp
ZmllcjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQ
b2xpY3k6ZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOmFwcExpbmtVUkxdKTsKICAgICBlbHNlCiAj
ZW5kaWYKLSAgICAgICAgcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciBhbGxvY10gaW5pdFdpdGhGcmFtZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpIHBvbGlj
eUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeV0p
OworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgaWRlbnRpZmll
cjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV0pOwogCiAgICAgbV9wb2xpY3lMaXN0ZW5lciA9IHBvbGljeUxpc3Rl
bmVyLmdldCgpOwogCkBAIC0yMzgzLDEyICsyMzg2LDEzIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQog
I2VuZGlmCiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBwb2xpY3lGdW5j
dGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6
KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5CistIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSop
ZnJhbWUgaWRlbnRpZmllcjooUG9saWN5Q2hlY2tJZGVudGlmaWVyKWlkZW50aWZpZXIgcG9saWN5
RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9s
aWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeQogewogICAgIHNlbGYgPSBbc2VsZiBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBfaWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAgICAgX2ZyYW1lID0gZnJhbWU7CiAgICAgX3BvbGljeUZ1bmN0aW9u
ID0gV1RGTW92ZShwb2xpY3lGdW5jdGlvbik7CiAgICAgX2RlZmF1bHRQb2xpY3kgPSBkZWZhdWx0
UG9saWN5OwpAQCAtMjM5Nyw5ICsyNDAxLDkgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUq
KWZyYW1lIHBvbGljeQogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZy
YW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilw
b2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBh
cHBMaW5rVVJMOihOU1VSTCAqKWFwcExpbmtVUkwKKy0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1l
KilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50aWZpZXIpaWRlbnRpZmllciBwb2xp
Y3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQ
b2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6KE5TVVJMICopYXBw
TGlua1VSTAogewotICAgIHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHBvbGljeUZ1
bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGlj
eV07CisgICAgc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgaWRlbnRpZmllcjppZGVu
dGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0yNDEzLDcgKzI0MTcsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfZnJhbWUg
PSBudWxscHRyOwogICAgIGlmIChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShf
cG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lB
Y3Rpb246Oklnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCBfaWRlbnRpZmllcik7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtMjQyNiw3ICsyNDMw
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgX2ZyYW1lID0gbnVsbHB0cjsKICAgICBpZiAoYXV0
byBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRy
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiQ2xpZW50IGFwcGxpY2F0
aW9uIGZhaWxlZCB0byBtYWtlIGEgcG9saWN5IGRlY2lzaW9uIHZpYSBXZWJQb2xpY3lEZWNpc2lv
bkxpc3RlbmVyLCB1c2luZyBkZWZhdWx0UG9saWN5ICVoaHUiLCBfZGVmYXVsdFBvbGljeSk7Ci0g
ICAgICAgIHBvbGljeUZ1bmN0aW9uKF9kZWZhdWx0UG9saWN5KTsKKyAgICAgICAgcG9saWN5RnVu
Y3Rpb24oX2RlZmF1bHRQb2xpY3ksIF9pZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBbc3VwZXIg
ZGVhbGxvY107CkBAIC0yNDM5LDcgKzI0NDMsNyBAQCAtICh2b2lkKXJlY2VpdmVkUG9saWN5RGVj
aXNpb246KFBvbGljeUFjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHBvbGljeUZ1
bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAg
ICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOworICAgICAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24s
IF9pZGVudGlmaWVyKTsKIH0KIAogLSAodm9pZClpZ25vcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAyLTAyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmln
YXRpb24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIgYXJvdW5kIGZ1bmN0
aW9ucyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRVcFBvbGljeUxpc3RlbmVyKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDE5LTAxLTMx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2ZXJ0IHIyMzg4MTkgd2hpY2ggaXMgdW5uZWVkZWQgYW5kIGNhdXNlZCBhIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biAyNDA5MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBw
dWJsaWM6CiAKICAgICB+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUoKSB7IH0KIAorICAg
IFBvbGljeUNoZWNrSWRlbnRpZmllciBtX3BvbGljeUNoZWNrSWRlbnRpZmllcjsKICAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIG1fcG9saWN5RnVuY3Rpb247CiAgICAgQ09NUHRyPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXI+IG1fcG9saWN5TGlzdGVuZXI7CiB9OwpAQCAtNTI4LDcgKzUyOSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygKICAgICAgICAgdWktPndlYlZp
ZXdTaG93KHdlYlZpZXcpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fd2ViRnJhbWUpOwpAQCAtNTQwLDEzICs1NDEsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgQ09NUHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxS
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVx
dWVzdCkpOwogCi0gICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUod2ViVmlldywgQlN0cmluZyhyZXNwb25zZS5taW1lVHlwZSgpKSwgdXJsUmVx
dWVzdC5nZXQoKSwgbV93ZWJGcmFtZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0
aW9uKSkuZ2V0KCkpKSkKKyAgICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQ
b2xpY3lGb3JNSU1FVHlwZSh3ZWJWaWV3LCBCU3RyaW5nKHJlc3BvbnNlLm1pbWVUeXBlKCkpLCB1
cmxSZXF1ZXN0LmdldCgpLCBtX3dlYkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZp
ZXIsIFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xpY3lBY3Rpb246OlVz
ZSk7CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oUG9saWN5
QWN0aW9uOjpVc2UsIGlkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRl
KiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9u
JiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUobV93ZWJGcmFtZSk7CkBAIC01NTksMTMgKzU2MCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgQ09NUHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxSZXF1
ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVxdWVz
dCkpOwogICAgIENPTVB0cjxXZWJBY3Rpb25Qcm9wZXJ0eUJhZz4gYWN0aW9uSW5mb3JtYXRpb24o
QWRvcHRDT00sIFdlYkFjdGlvblByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShhY3Rpb24sIGZv
cm1TdGF0ZSA/ICZmb3JtU3RhdGUtPmZvcm0oKSA6IG51bGxwdHIsIGNvcmVGcmFtZSkpOwogCi0g
ICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxSZXF1ZXN0LmdldCgp
LCBCU3RyaW5nKGZyYW1lTmFtZSksIHNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlv
bikpLmdldCgpKSkpCisgICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1
cmxSZXF1ZXN0LmdldCgpLCBCU3RyaW5nKGZyYW1lTmFtZSksIHNldFVwUG9saWN5TGlzdGVuZXIo
aWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbikpLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6VXNlKTsKKyAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlv
bihQb2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBXZWJDb3JlOjpQ
b2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSogZm9ybVN0YXRl
LCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAg
V2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTU3OCwxMCArNTc5LDEwIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBDT01QdHI8SVdlYlVSTFJlcXVl
c3Q+IHVybFJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0
YW5jZShyZXF1ZXN0KSk7CiAgICAgQ09NUHRyPFdlYkFjdGlvblByb3BlcnR5QmFnPiBhY3Rpb25J
bmZvcm1hdGlvbihBZG9wdENPTSwgV2ViQWN0aW9uUHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNl
KGFjdGlvbiwgZm9ybVN0YXRlID8gJmZvcm1TdGF0ZS0+Zm9ybSgpIDogbnVsbHB0ciwgY29yZUZy
YW1lKSk7CiAKLSAgICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxS
ZXF1ZXN0LmdldCgpLCBtX3dlYkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVu
Y3Rpb24pKS5nZXQoKSkpKQorICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0
KCksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoaWRl
bnRpZmllciwgV1RGTW92ZShmdW5jdGlvbikpLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKFBvbGljeUFjdGlv
bjo6VXNlKTsKKyAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQ
b2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCkBAIC02MjMsNyArNjI0LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hXaWxsUwogICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IGZvcm1WYWx1ZXNQcm9wZXJ0
eUJhZyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8U3RyaW5nPjo6Y3JlYXRlSW5zdGFuY2UoZm9y
bVZhbHVlc01hcCkpOwogCiAgICAgQ09NUHRyPFdlYkZyYW1lPiBzb3VyY2VGcmFtZShraXQoZm9y
bVN0YXRlLnNvdXJjZURvY3VtZW50KCkuZnJhbWUoKSkpOwotICAgIGlmIChTVUNDRUVERUQoZm9y
bURlbGVnYXRlLT53aWxsU3VibWl0Rm9ybShtX3dlYkZyYW1lLCBzb3VyY2VGcmFtZS5nZXQoKSwg
Zm9ybUVsZW1lbnQuZ2V0KCksIGZvcm1WYWx1ZXNQcm9wZXJ0eUJhZy5nZXQoKSwgc2V0VXBQb2xp
Y3lMaXN0ZW5lcihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFBvbGljeUFjdGlvbikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0pLmdldCgp
KSkpCisgICAgaWYgKFNVQ0NFRURFRChmb3JtRGVsZWdhdGUtPndpbGxTdWJtaXRGb3JtKG1fd2Vi
RnJhbWUsIHNvdXJjZUZyYW1lLmdldCgpLCBmb3JtRWxlbWVudC5nZXQoKSwgZm9ybVZhbHVlc1By
b3BlcnR5QmFnLmdldCgpLAorICAgICAgICBzZXRVcFBvbGljeUxpc3RlbmVyKFBvbGljeUNoZWNr
SWRlbnRpZmllciB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpIG11dGFibGUgeyBj
b21wbGV0aW9uSGFuZGxlcigpOyB9KS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBGSVhNRTogQWRkIGEgc2FuZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCkBAIC0xMjgyLDcgKzEy
ODQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDCiAgICAgbV9w
b2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOwogfQogCi1D
T01QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVw
UG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
Q09NUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRV
cFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgLy8gRklY
TUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBw
b2xpY3kgbGlzdGVuZXJzLgogCkBAIC0xMjkzLDYgKzEyOTUsNyBAQCBDT01QdHI8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcj4gV2ViRnJhbWVMCiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CiAKICAgICBt
X3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lMaXN0ZW5lci5hZG9wdFJlZihXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShjb3JlRnJhbWUpKTsKKyAgICBtX3BvbGlj
eUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lDaGVja0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwog
ICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbik7CiAKICAgICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5
TGlzdGVuZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI0MDkw
MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5ICsxMDAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVz
dG9uZT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdl
YkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBXVEY6
OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdl
YkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0lt
cGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkBA
IC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2lu
ZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBvdmVycmlkZTsKIAot
ICAgIENPTVB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBzZXRVcFBvbGljeUxpc3RlbmVyKFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJik7CisgICAgQ09NUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpOwogICAgIHZvaWQgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24pOwogCiAgICAgYm9vbCBzaG91bGRB
bHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIGNvbnN0
IG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360998</attachid>
            <date>2019-02-02 22:04:17 -0800</date>
            <delta_ts>2019-02-03 14:48:28 -0800</delta_ts>
            <desc>Fixed Windows build</desc>
            <filename>bug-194189-20190202220416.patch</filename>
            <type>text/plain</type>
            <size>105643</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE5LTAyLTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRpb24g
cG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgSW50cm9kdWNlZCBQb2xpY3lDaGVja0lkZW50aWZpZXIgdG8gcGFpciBlYWNoIG5hdmln
YXRpb24gcG9saWN5IGNoZWNrIHJlcXVlc3Qgd2l0aCBhIGRlY2lzaW9uLAorICAgICAgICBhbmQg
ZGVwbG95ZWQgaXQgaW4gUG9saWN5Q2hlY2tlci4gVGhlIGlkZW50aWZpZXIgaXMgcGFzc2VkIGZy
b20gV2ViQ29udGVudCBwcm9jZXNzIHRvIFVJIHByb2Nlc3MKKyAgICAgICAgaW4gV2ViS2l0Miwg
YW5kIHBhc3NlZCBpdCBiYWNrIHdpdGggdGhlIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICBC
ZWNhdXNlIFBvbGljeUNoZWNrSWRlbnRpZmllciBlbWJlZHMgdGhlIHByb2Nlc3MgaWRlbnRpZmll
ciBmcm9tIHdoaWNoIGEgbmF2aWdhdGlvbiBwb2xpY3kgaXMgY2hlY2tlZCwKKyAgICAgICAgd2Ug
d291bGQgYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBVSSBwcm9jZXNzIGhhZCBzZW50IHRoZSBkZWNp
c2lvbiB0byBhIHdyb25nIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gYWRkcyByZWxlYXNlIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSBpcyBzZXQgd2hlbmV2ZXIKKyAgICAgICAgd2UncmUgcmVxdWVzdGluZyBh
IG5hdmlnYXRpb24gcG9saWN5IGNoZWNrLgorCisgICAgICAgIFRoZXNlIGNvZGUgY2hhbmdlcyBz
aG91bGQgZWl0aGVyOgorICAgICAgICAxLiBGaXggY3Jhc2hlcyBpbiBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IHdoZXJlIGlzQmFja0ZvcndhcmRMb2FkVHlw
ZSB3b3VsZAorICAgICAgICAgICByZXR1cm4gdHJ1ZSB5ZXQgaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpIGlzIG51bGwuCisgICAgICAgIDIuIERldGVjdCBhIGJ1ZyB0aGF0IFVJIHByb2Nlc3Mg
Y2FuIHNlbmQgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiB0byBhIHdyb25nIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgMy4gUnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IHRoYXQgKDIp
IGV4aXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVu
Y29kZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI6OmdlbmVyYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcjo6aXNWYWxpZEZvcik6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgaWRlbnRpZmVyIG1hdGNoZXMuIEFsc28gcmVsZWFzZSBhc3NlcnRzCisg
ICAgICAgIHRoYXQgdGhlIHByb2Nlc3MgSUQgaXMgc2FtZSwgYW5kIHRoYXQgbV9jaGVjayBpcyBh
bHdheXMgbm90IHplcm8gKG1lYW5pbmcgaXQncyBhIGdlbmVyYXRlZCB2YWx1ZSkuCisgICAgICAg
IFRoZSBmYWlsdXJlIG9mIHRoZXNlIHJlbGVhc2UgYXNzZXJ0aW9ucyB3b3VsZCBpbmRpY2F0ZSB0
aGF0IHRoZXJlIGlzIGEgYnVnIGluIFVJIHByb2Nlc3MsIHdoaWNoIHJlc3VsdHMgaW4KKyAgICAg
ICAgYSBwb2xpY3kgZGVjaXNpb24gcmVzcG9uc2UgYmVpbmcgc2VudCB0byBhIHdyb25nIFdlYiBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KTogRXhpdCBlYXJseSBpZiBpc1ZhbGlkRm9yIGZhaWxzLgorICAgICAgICAoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3kpOgorCiAyMDE5LTAyLTAyICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRpZHkgdXAg
ZGF0YSBtZW1lYmVycyBvZiBGcmFtZVZpZXcgYW5kIHJlbGF0ZWQgY2xhc3NlcyB0byBzaHJpbmsg
Y2xhc3Mgc2l6ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIkhUVFBI
ZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhp
c3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJ
Y29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTGlua0ljb25Db2xsZWN0b3IuaCIKQEAgLTY2Miw3ICs2NjMsMTAgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgIEFTU0VSVCghbV93YWl0aW5nRm9y
TmF2aWdhdGlvblBvbGljeSk7CiAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IHRy
dWU7CiAKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2
aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgLy8gRklYTUU6IEFkZCBhIGxv
YWQgdHlwZSBjaGVjay4KKyAgICBhdXRvJiBwb2xpY3lDaGVja2VyID0gZnJhbWVMb2FkZXIoKS0+
cG9saWN5Q2hlY2tlcigpOworICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5
cGUocG9saWN5Q2hlY2tlci5sb2FkVHlwZSgpKSB8fCBmcmFtZUxvYWRlcigpLT5oaXN0b3J5KCku
cHJvdmlzaW9uYWxJdGVtKCkpOworICAgIHBvbGljeUNoZWNrZXIuY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdh
dGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6
OnRyeUxvYWRpbmdSZXF1ZXN0RnJvbUFwcGxpY2F0aW9uQ2FjaGUoKQpAQCAtODM5LDcgKzg0Mywx
MCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBtYWluUmVzb3VyY2VMb2FkZXIgPSB0aGlzLT5tYWluUmVzb3Vy
Y2VMb2FkZXIoKTsKICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICBtYWluUmVz
b3VyY2VMb2FkZXItPm1hcmtJbkFzeW5jUmVzcG9uc2VQb2xpY3lDaGVjaygpOwotICAgIGZyYW1l
TG9hZGVyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5S
ZXNvdXJjZUxvYWRlciksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIucmVsZWFzZSgpXSAoUG9saWN5QWN0aW9uIHBvbGljeSkgbXV0YWJsZSB7CisgICAgYXV0byBy
ZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7CisgICAg
ZnJhbWVMb2FkZXIoKS0+Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVu
dGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3Vy
Y2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5SZXNvdXJjZUxvYWRlciksCisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpLCByZXF1ZXN0SWRl
bnRpZmllcl0gKFBvbGljeUFjdGlvbiBwb2xpY3ksIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNw
b25zZUlkZW50aWZlaXIpIG11dGFibGUgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXNwb25z
ZUlkZW50aWZlaXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpOwogICAgICAgICBjb250
aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwogICAgICAgICBpZiAobWFpblJlc291cmNl
TG9hZGVyKQogICAgICAgICAgICAgbWFpblJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9u
c2VQb2xpY3koKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShy
ZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDExICs0NTIsMTEgQEAgUEFMOjpTZXNzaW9uSUQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6cwogICAgIHJldHVybiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KIAotdm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiwg
UG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5
Myw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGkKICAgICBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBmaW5hbCB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbCB7IH0KIAotICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3Qg
U3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lv
bk1vZGUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFs
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAy
NDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjMsMTUgKzM2MywxNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNM
b2FkaW5nKGJvb2wgCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9u
KQogewogICAgIGlmICghYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICAvLyBMb2Fk
IHdhcyBjYW5jZWxsZWQKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUpOwor
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhlIHBvbGljeSBjaGVj
ayBpZGVudGlmaWVyLgorICAgIGNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UocmVzcG9uc2UsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSwgaWRlbnRpZmll
ciwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2Nh
dGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTEzNzgsNiArMTM3OSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWUKIAogICAgIGlmICghdGFyZ2V0
RnJhbWUgJiYgIWVmZmVjdGl2ZUZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9u
ID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tl
cigpLmxvYWRUeXBlKCkpKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3Rh
dGUpLCBlZmZlY3RpdmVGcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNh
bGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8
Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11
dGFibGUgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMzk4LDYgKzE0MDAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5z
ZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lD
aGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlw
ZShuZXdMb2FkVHlwZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobmV3TG9hZFR5cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0
KSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1l
bnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1l
ID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vh
a1B0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24pIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgfSwgUG9saWN5RGVj
aXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CkBAIC0xNDYxLDYgKzE0NjQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRD
aGVja05ld1dpbmRvd1BvbGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9u
IHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24p
LCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCB7IH0sIHJlcXVlc3QuZnJhbWVO
YW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZv
cm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAg
ICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3Jt
U3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7
CiAgICAgICAgIH0pOwpAQCAtMTU4NCw2ICsxNTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcgogICAgIH0KIAogICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2Fk
VHlwZSh0eXBlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5
cGUpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgYm9vbCBpc0Zvcm1TdWJt
aXNzaW9uID0gZm9ybVN0YXRlOwogCiAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9h
ZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhvZCgpOwpAQCAtMTU5NSw2ICsxNjAwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcgogICAgICAgICBvbGREb2N1bWVudExv
YWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihXVEZNb3ZlKGFjdGlvbikpOwogICAgICAgICBvbGRE
b2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsK
ICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSB8
fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVu
dExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUg
PSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbikgewogICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPT0gTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQpOwogICAgICAgICB9LCBQb2xpY3lEZWNp
c2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKQEAgLTE2MjksNiArMTYzNSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigp
LmxvYWRUeXBlKCkpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSk7CiAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5y
ZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBs
b2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJl
ZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5n
ZXQoKSwgbmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMzAxMCw2ICszMDE3LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmFja0ZvcndhcmRM
b2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpOwogICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVl
IHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rp
b24sIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExv
YWRUeXBlKEZyYW1lTG9hZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFt
ZUxvYWRUeXBlKTsKIAotdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uKT47Cit1c2luZyBDb250ZW50UG9saWN5RGVjaXNp
b25GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNr
SWRlbnRpZmllcik+OwogCiBjbGFzcyBGcmFtZUxvYWRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRnJhbWVMb2FkZXIpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYm
KTsKKyAgICB2b2lkIGNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsK
IAogICAgIHZvaWQgZGlkRXhwbGljaXRPcGVuKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcg
KzEwNyw3IEBAIGVudW0gY2xhc3MgUG9saWN5RGVjaXNpb25Nb2RlOwogCiBzdHJ1Y3QgU3RyaW5n
V2l0aERpcmVjdGlvbjsKIAotdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlv
bik+IEZyYW1lUG9saWN5RnVuY3Rpb247Cit0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9s
aWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC0x
OTAsOSArMTkwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0
ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiAyNDA5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQcm9jZXNzSWRl
bnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY3LDQ4IEBAIGVu
dW0gY2xhc3MgRnJhbWVMb2FkVHlwZSA6IHVpbnQ4X3QgewogICAgIFJlbG9hZEV4cGlyZWRPbmx5
CiB9OwogCitjbGFzcyBQb2xpY3lDaGVja0lkZW50aWZpZXIgeworcHVibGljOgorICAgIFBvbGlj
eUNoZWNrSWRlbnRpZmllcigpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBQb2xpY3lDaGVja0lk
ZW50aWZpZXIgY3JlYXRlKCk7CisKKyAgICBib29sIGlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVu
dGlmaWVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9saWN5Q2hlY2tJZGVudGlmaWVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzID09IG90aGVyLm1fcHJvY2VzcyAmJiBt
X3BvbGljeUNoZWNrID09IG90aGVyLm1fcG9saWN5Q2hlY2s7IH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBkZWNv
ZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFBvbGljeUNoZWNrSWRlbnRpZmllcihQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzLCB1aW50NjRfdCBwb2xpY3lDaGVjaykKKyAgICAgICAgOiBt
X3Byb2Nlc3MocHJvY2VzcykKKyAgICAgICAgLCBtX3BvbGljeUNoZWNrKHBvbGljeUNoZWNrKQor
ICAgIHsgfQorCisgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzOworICAgIHVpbnQ2NF90
IG1fcG9saWN5Q2hlY2sgeyAwIH07Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9wcm9jZXNzIDw8IG1fcG9saWN5Q2hlY2s7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxQb2xpY3lDaGVja0lkZW50aWZpZXI+IFBvbGlj
eUNoZWNrSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBw
cm9jZXNzID0gUHJvY2Vzc0lkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBy
b2Nlc3MpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB1aW50NjRfdCBwb2xp
Y3lDaGVjazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvbGljeUNoZWNrKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBQb2xpY3lDaGVja0lkZW50aWZpZXIg
eyAqcHJvY2VzcywgcG9saWN5Q2hlY2sgfTsKK30KKwogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5l
clBvbGljeSA6IHVpbnQ4X3QgewogICAgIFN1cHByZXNzLAogICAgIEFsbG93CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNDA5MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDIxIEBAIHN0YXRpYyBib29sIGlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG8K
ICAgICByZXR1cm4gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkKTsKIH0KIAorUG9saWN5Q2hlY2tJZGVudGlmaWVyIFBvbGljeUNoZWNrSWRlbnRpZmllcjo6
Y3JlYXRlKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CisgICAgaWRl
bnRpZmllcisrOworICAgIHJldHVybiBQb2xpY3lDaGVja0lkZW50aWZpZXIgeyBQcm9jZXNzOjpp
ZGVudGlmaWVyKCksIGlkZW50aWZpZXIgfTsKK30KKworYm9vbCBQb2xpY3lDaGVja0lkZW50aWZp
ZXI6OmlzVmFsaWRGb3IoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGV4cGVjdGVkSWRlbnRpZmllcikK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9wcm9jZXNzID09IGV4cGVjdGVk
SWRlbnRpZmllci5tX3Byb2Nlc3MsICJSZWNlaXZlZCBhIHBvbGljeSBjaGVjayByZXNwb25zZSBm
b3IgYSB3cm9uZyBwcm9jZXNzIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG1f
cG9saWN5Q2hlY2ssICJSZWNlaXZlZCAwIGFzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciIp
OworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BvbGljeUNoZWNrIDw9IGV4cGVj
dGVkSWRlbnRpZmllci5tX3BvbGljeUNoZWNrLCAiUmVjZWl2ZWQgYSBwb2xpY3kgY2hlY2sgcmVz
cG9uc2UgZnJvbSB0aGUgZnV0dXJlIik7CisgICAgcmV0dXJuIG1fcG9saWN5Q2hlY2sgPT0gZXhw
ZWN0ZWRJZGVudGlmaWVyLm1fcG9saWN5Q2hlY2s7Cit9CisKIFBvbGljeUNoZWNrZXI6OlBvbGlj
eUNoZWNrZXIoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fZGVs
ZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeShmYWxzZSkKQEAgLTE3MCw5ICsxODUsMTYg
QEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpYwogCiAgICAgYXV0byBi
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVj
aXNpb25Nb2RlOjpBc3luY2hyb25vdXMgPyBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2Fy
eShyZXF1ZXN0KSA6IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIHsgfTsKIAorICAgIGF1
dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0ZSgpOwog
ICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IHRydWU7CiAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0
eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwotICAgIG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGFjdGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBw
b2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZv
cm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSks
IGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgbV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
YWN0aW9uLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGlj
eURlY2lzaW9uTW9kZSwgcmVxdWVzdElkZW50aWZpZXIsCisgICAgICAgIFt0aGlzLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RG
TW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksCisgICAgICAgICBibG9iVVJMTGlmZXRpbWVFeHRlbnNp
b24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiksIHJlcXVlc3RJZGVudGlmaWVy
XSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3Bv
bnNlSWRlbnRpZmllcikgbXV0YWJsZSB7CisKKyAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50aWZp
ZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAK
ICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKQEAgLTIwNiw3ICsyMjgsMTQgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeQogCiAgICAgYXV0byBibG9iVVJM
TGlmZXRpbWVFeHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1
ZXN0KTsKIAotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRl
LmdldCgpLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZv
cm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24g
PSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIG11dGFibGUgeworICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVj
a0lkZW50aWZpZXI6OmNyZWF0ZSgpOworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJh
bWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LAorICAgICAgICBmb3JtU3RhdGUgPSBXVEZN
b3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92ZShibG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24pLAorICAgICAgICByZXF1ZXN0SWRlbnRpZmllcl0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50
aWZpZXIpIG11dGFibGUgeworCisgICAgICAgIGlmICghcmVzcG9uc2VJZGVudGlmaWVyLmlzVmFs
aWRGb3IocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3du
bG9hZDoKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2Fk
KHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTktMDItMDIg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVmFsaWRhdGUgbmF2
aWdhdGlvbiBwb2xpY3kgZGVjaXNpb25zIHRvIGF2b2lkIGNyYXNoZXMgaW4gY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQxODkKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBQYXNzIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllciBhcm91bmQgZnVu
Y3Rpb25zIGFuZCBzdG9yZSBpdCBpbiBQb2xpY3lEZWNpc2lvblNlbmRlcgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KKworICAgICAgICBXZSBhbHNvIHN0b3JlIGl0IGluIFdlYkZyYW1lIGlu
IHRoZSBjYXNlIHRoZSBwb2xpY3kgZGVjaXNpb24gaGFkIHRvIGJlIGludmFsaWRhdGVkCisgICAg
ICAgIGJlZm9yZSB0aGUgZGVjaXNpb24gd2FzIHJlY2VpdmVkICh2aWEgV2ViRnJhbWU6OmludmFs
aWRhdGVQb2xpY3lMaXN0ZW5lcikuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcik6IEFkZGVk
IFBvbGljeUNoZWNrSWRlbnRpZmllciBhcyBhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6c2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXI6OlBvbGljeURlY2lzaW9u
U2VuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDE5LTAyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFRpZHkgdXAgZGF0YSBtZW1lYmVycyBvZiBGcmFtZVZpZXcgYW5kIHJlbGF0ZWQg
Y2xhc3NlcyB0byBzaHJpbmsgY2xhc3Mgc2l6ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCw3
IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6UGF5bWVu
dE1ldGhvZFVwZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkluZm8nOiBbJzxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBvbGljeUFjdGlvbic6IFsnPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5JzogWyc8V2ViQ29yZS9BdWRpb1Nlc3Npb24u
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInOiBb
JzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjQwOTAx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsMTYgKzI2MiwyMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92CiAgICAgbV9wYWdlLmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCBX
VEZNb3ZlKHVybCkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIEFTU0VSVChtX21haW5GcmFtZS0+ZnJh
bWVJRCgpID09IGZyYW1lSUQpOwotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShm
cmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdp
bmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKKyAgICBtX3BhZ2Uu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIs
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCisgICAgICAgIFdU
Rk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7Ci0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgdXNlckRh
dGEpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxpc3RlbmVySUQs
IHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6c3RhcnRVUkxTY2hl
bWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24g
MjQwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsK
LSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCisgICAg
ICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3Qg
bGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsCisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1
aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0
cmluZywgdWludDY0X3QgZnJhbWVJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzQsMjIgKzI2NzQsMjYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaQogCiBjbGFzcyBXZWJQ
YWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9saWN5
RGVjaXNpb25TZW5kZXI+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBTZW5kRnVuY3Rpb24gPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
LCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+OwotICAgIHN0YXRp
YyBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNyZWF0ZShTZW5kRnVuY3Rpb24mJiBzZW5kRnVu
Y3Rpb24pCisgICAgdXNpbmcgU2VuZEZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+OworCisgICAg
c3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTZW5kRnVuY3Rpb24mJiBzZW5kRnVuY3Rpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2xpY3lEZWNpc2lvblNlbmRlcihXVEZNb3ZlKHNl
bmRGdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9saWN5RGVjaXNp
b25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24pKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kKEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIGlmIChtX3NlbmRGdW5jdGlvbikKLSAgICAgICAgICAgIG1fc2VuZEZ1bmN0
aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBtX3NlbmRGdW5j
dGlvbihtX2lkZW50aWZpZXIsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgfQog
cHJpdmF0ZToKLSAgICBQb2xpY3lEZWNpc2lvblNlbmRlcihTZW5kRnVuY3Rpb24gc2VuZEZ1bmN0
aW9uKQotICAgICAgICA6IG1fc2VuZEZ1bmN0aW9uKFdURk1vdmUoc2VuZEZ1bmN0aW9uKSkgeyB9
CisgICAgUG9saWN5RGVjaXNpb25TZW5kZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFNlbmRGdW5jdGlvbiBzZW5kRnVuY3Rpb24pCisgICAgICAgIDogbV9zZW5kRnVuY3Rpb24o
V1RGTW92ZShzZW5kRnVuY3Rpb24pKQorICAgICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICAgICB7IH0KIAogICAgIFNlbmRGdW5jdGlvbiBtX3NlbmRGdW5jdGlvbjsKKyAgICBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYgc2VuZGVyKQpAQCAtMjcwOSw3ICsyNzEzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9u
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0
aW9uKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudF0oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLAorICAg
ICAgICBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5h
dmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAg
ICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24o
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CiAgICAgICAgICAgICByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShkYXRhKSwg
V1RGTW92ZShzZW5kZXIpKTsKQEAgLTQzNTUsMjIgKzQzNjAsMzMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi17Ci0g
ICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRp
b25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0
YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0
YSwgbGlzdGVuZXJJRCk7Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksCisgICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5n
UGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVz
dEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLAorICAgIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
KyAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAg
ICAgYXV0byogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3Jp
Z2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92
ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSksIHVzZXJEYXRhLCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3Mg
PSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgeworICAgIGF1dG8gc2VuZGVyID0g
UG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7Ci0gICAgfSkpOworICAgIH0pOworCisgICAgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBX
VEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
cXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIFdURk1vdmUo
c2VuZGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xp
Y3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAorICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxS
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQ0MjksNyArNDQ0NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgc2hvdWxkRXhwZWN0U2FmZUJyb3dz
aW5nUmVzdWx0ID0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObzsKIAogICAgIGF1
dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUp
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb25dIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7Ci0gICAgICAg
IAorCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBmcmFtZSA9IGZyYW1lLmNvcHlSZWYoKSwgc2Vu
ZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGlj
aWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAg
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgcG9saWNpZXMuZ2V0
KCksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIH07CkBAIC00NTUzLDkgKzQ1NjksMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjbwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50
NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAor
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LAorICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShXVEZN
b3ZlKHJlcGx5KSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3Jl
YXRlKGlkZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIAogICAgIGF1dG8qIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKSB7CkBAIC00NTY5LDEz
ICs0NTg4LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOwogICAgIH0KIAotICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2lu
YWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOworICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9wcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1l
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLAorICAgICAgICBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRl
ci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3lu
Y2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIHNlbmRlci0+c2VuZChQb2xp
Y3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDU4
MywxMyArNDYwNCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2lu
CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChtX3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1h
a2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdX
YXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgeworICAgIGF1dG8gbGlzdGVu
ZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJ
RF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBS
ZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBtdXRhYmxl
IHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlz
IG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0
aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJu
aW5nKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURd
IChhdXRvLi4uIGFyZ3MpIHsKKworICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9u
U2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7CiAg
ICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOwot
ICAgICAgICB9KSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7
CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykpOwogCiAgICAgaWYg
KG1fcG9saWN5Q2xpZW50KQpAQCAtNDYwOSwxMiArNDYzMywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgIAogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJh
bWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9y
aWdpbiwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNo
b3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDYyNiwxMyArNDY1MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJsKCkp
OwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25J
RCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRy
OwotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3MgPSBwcm9j
ZXNzLmNvcHlSZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5h
dmlnYXRpb24pLAorICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhl
cmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBn
byBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7Ci0gICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgp
LCBXVEY6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBw
cm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJncykgeworCisgICAgICAgIGF1
dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoYXV0by4uLiBhcmdzKSB7CiAgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKLSAgICAg
ICAgfSkpOworICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFdURk1v
dmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykp
OwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDggKzE0MzYsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKKyAgICAg
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
CisgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlv
biYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgbG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5h
dmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwpAQCAtMTUyMywxMSArMTUyNiwxOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBS
ZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSYmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1l
UHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDA5MDEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSwxMCArMTA1LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAj
ZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBi
b29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMp
IERlbGF5ZWQKLSAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9v
bCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9s
aWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5h
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
VW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgUHJvZ3Jl
c3MgbWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNp
b24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDE2ICs3MzAsMTYg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KAogICAgIHdlYlBhZ2Ut
PnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24p
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9
IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkg
ewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJpbmcoKSkgewotICAgICAgICBmdW5j
dGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6
VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQ4LDcgKzc0
OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBv
bGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2Uod2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIHVzZXJEYXRh
KTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAg
ICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NzU5LDE2ICs3NTksMTggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNf
Y2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlv
bklEKCkgOiAwOwogICAgIAogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsK
LSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihX
VEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAg
ICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93
UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQotICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9m
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwg
V2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKKyAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LAorICAgICAgICBjYW5T
aG93UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQorICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgaWRlbnRp
ZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUg
PyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgewotICAgICAg
ICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzc5LDExICs3ODEsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQ
b2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9u
LnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09
IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lB
Y3Rpb246OlVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBpZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFt
ZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBt
X2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24p
LCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwogCiAgICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
bmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CkBAIC03OTcsNyArNzk5
LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlID0gbmF2aWdhdGlvbkFjdGlvbi5kb3du
bG9hZEF0dHJpYnV0ZSgpOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJh
bWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9m
cmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUp
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklELCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LAorICAgICAgICBmcmFtZU5hbWUsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYm
IHdlYnNpdGVQb2xpY2llcykKQEAgLTgxOCwxMSArODIxLDEyIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWUKICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRv
RG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25N
b2RlIHBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2Rl
IHBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlcXVl
c3RJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAg
IGlmICghd2ViUGFnZSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSk7
CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgzMCw3ICs4MzQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICAvLyBBbHdheXMgaWdub3Jl
IHJlcXVlc3RzIHdpdGggZW1wdHkgVVJMcy4gCiAgICAgaWYgKHJlcXVlc3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODQxLDExICs4NDUsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2Us
IG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xp
Y3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFBv
bGljeUFjdGlvbjo6VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIHJl
cXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Olllcyk7CisKKyAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpZZXMpOwogCiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkpOwogICAg
IGF1dG8gcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKS52YWx1ZSgpOwpA
QCAtODgxLDcgKzg4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWQKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUo
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpIHsK
ICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2UgcmVjZWl2ZSBhIHJlZGlyZWN0IGFmdGVyIHRoZSBu
YXZpZ2F0aW9uIHBvbGljeSBoYXMgYmVlbiBkZWNpZGVkIGZvciB0aGUgaW5pdGlhbCByZXF1ZXN0
LApAQCAtODk4LDIyICs5MDIsMjggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogCiAgICAgaWYgKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1v
ZGU6OlN5bmNocm9ub3VzKSB7CiAgICAgICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKKyAg
ICAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcjsK
ICAgICAgICAgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbjsKICAgICAgICAgRG93bmxvYWRJRCBk
b3dubG9hZElEOwogICAgICAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRl
UG9saWNpZXM7CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5m
cmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdl
SUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeUFjdGlvbiwgbmV3TmF2
aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgewotICAgICAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pc01haW5GcmFtZSgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLAorICAgICAgICAgICAgcmVxdWVzdElkZW50
aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRp
b25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCisgICAgICAgICAgICBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2Us
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksCisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocmVzcG9u
c2VJZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwg
d2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCByZXNwb25zZUlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9s
aWN5QWN0aW9uLCAwLCBkb3dubG9hZElELCB7IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcmVzcG9uc2VJZGVudGlmaWVyLCBwb2xpY3lB
Y3Rpb24sIDAsIGRvd25sb2FkSUQsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNo
cm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXIt
Pm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVy
SUQpKSkKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVy
SUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CisgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZy
YW1lKGNvcmVGcmFtZSksCisgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1bWVudExvYWRl
ci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVx
dWVzdCgpLCByZXF1ZXN0LAorICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVz
dC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSwgbGlzdGVuZXJJRCkpKQorICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgcmVxdWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCB7IH0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGlj
eUNoZWNrKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNDA5
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDkgKzEyMyw5IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsK
ICAgICAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9k
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJD
b3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBk
aXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDEyICsyMTAsMTMg
QEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZSgpCiAgICAgbV9jb3JlRnJhbWUgPSAwOwogfQog
Ci11aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2
aWdhdGlvbkFjdGlvbikKK3VpbnQ2NF90IFdlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVyKFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2
aWdhdGlvbkFjdGlvbikKIHsKICAgICAvLyBGSVhNRTogPHJkYXI6Ly81NjM0MzgxPiBXZSBuZWVk
IHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBvbGljeSBsaXN0ZW5lcnMuCiAKICAgICBpbnZh
bGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAorICAgIG1fcG9saWN5SWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CiAgICAgbV9wb2xpY3lMaXN0ZW5lcklEID0gZ2VuZXJhdGVMaXN0ZW5lcklEKCk7CiAg
ICAgbV9wb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUocG9saWN5RnVuY3Rpb24pOwogICAgIG1fcG9s
aWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gZm9yTmF2aWdhdGlvbkFjdGlvbjsKQEAg
LTI0NCw4ICsyNDUsMTAgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KAogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJ
RCA9IDA7CisgICAgYXV0byBpZGVudGlmaWVyID0gbV9wb2xpY3lJZGVudGlmaWVyOworICAgIG1f
cG9saWN5SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKICAgICBpZiAoYXV0byBmdW5jdGlvbiA9
IHN0ZDo6ZXhjaGFuZ2UobV9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpCi0gICAgICAgIGZ1bmN0
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9u
OjpJZ25vcmUsICppZGVudGlmaWVyKTsKICAgICBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlv
bkFjdGlvbiA9IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vOwogCiAgICAgYXV0byB3aWxsU3VibWl0
Rm9ybUNvbXBsZXRpb25IYW5kbGVycyA9IFdURk1vdmUobV93aWxsU3VibWl0Rm9ybUNvbXBsZXRp
b25IYW5kbGVycyk7CkBAIC0yNTMsMTEgKzI1NiwxNCBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlk
YXRlUG9saWN5TGlzdGVuZXIoCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklE
LCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGlj
eUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9h
ZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
ICAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX3BvbGljeUxpc3RlbmVySUQgfHwgbGlzdGVuZXJJ
RCAhPSBtX3BvbGljeUxpc3RlbmVySUQgfHwgIW1fcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAorICAgIEFTU0VSVChpZGVudGlmaWVyID09IG1fcG9saWN5SWRlbnRpZmllcik7Cisg
ICAgbV9wb2xpY3lJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworCiAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAgICAgYm9vbCBm
b3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24g
PT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwogCkBAIC0yNzIsNyArMjc4LDcgQEAgdm9pZCBX
ZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKAogICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXItPnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uKGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uLCBpZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMjQwOTAxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgZW51bSBjbGFzcyBGb3JOYXZpZ2F0aW9uQWN0
aW9uIHsgTm8sIFllcyB9OwotICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29y
ZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICB1aW50
NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmKTsKIAogICAgIHVpbnQ2NF90IHNldFVwV2lsbFN1Ym1pdEZvcm1M
aXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29udGludWVX
aWxsU3VibWl0Rm9ybSh1aW50NjRfdCk7CkBAIC0xNzgsNiArMTc4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpGcmFtZSogbV9jb3JlRnJhbWUgeyBudWxscHRyIH07CiAKICAgICB1aW50NjRf
dCBtX3BvbGljeUxpc3RlbmVySUQgeyAwIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyPiBtX3BvbGljeUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0aW9uOwogICAgIEZvck5hdmlnYXRpb25BY3Rpb24g
bV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24geyBGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpObyB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fd2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjQwOTAxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNzgsMTIgKzMwNzgsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoUEFM
OjpTZXNzaW9uSQogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElELCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb25JRCwg
ZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBmcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbklELCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxNCw3ICsxMzE0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3du
bG9hZElEJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRl
UG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNp
ZXMpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
cykKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKQog
ICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlz
dGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE5LTAyLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmlnYXRp
b24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIgYXJvdW5kIGZ1bmN0aW9u
cyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgorICAgICAgICBzbyB0aGF0
IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgICgtW1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9u
OmRlZmF1bHRQb2xpY3k6XSk6CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5p
dFdpdGhGcmFtZTppZGVudGlmaWVyOnBvbGljeUZ1bmN0aW9uOmRlZmF1bHRQb2xpY3k6YXBwTGlu
a1VSTDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBpbnZhbGlkYXRlXSk6
CisgICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJGcmFtZVBvbGljeUxpc3RlbmVyIHJlY2VpdmVkUG9saWN5RGVjaXNpb246XSk6CisgICAg
ICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhGcmFtZTpwb2xpY3lGdW5jdGlv
bjpkZWZhdWx0UG9saWN5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGluaXRXaXRoRnJhbWU6cG9saWN5RnVuY3Rpb246ZGVmYXVsdFBvbGljeTphcHBMaW5r
VVJMOl0pOiBEZWxldGVkLgorCiAyMDE5LTAxLTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyMzg4MTkgd2hpY2ggaXMgdW5u
ZWVkZWQgYW5kIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw5ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZyYW1lKiBkaXNw
YXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
JikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2Vi
Q29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVjaygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKQEAgLTIzMyw3ICsy
MzMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICAKLSAgICBSZXRhaW5QdHI8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZhdWx0UG9saWN5LCBOU1VS
TCAqYXBwTGlua1VSTCA9IG5pbCk7CisgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXI+IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkZWZh
dWx0UG9saWN5LCBOU1VSTCAqYXBwTGlua1VSTCA9IG5pbCk7CiAKICAgICBOU0RpY3Rpb25hcnkg
KmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFdlYkNv
cmU6OkZvcm1TdGF0ZSopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODIs
NiArMTgyLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9IEAiV2ViUAogCiBA
aW50ZXJmYWNlIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2ViUG9saWN5RGVj
aXNpb25MaXN0ZW5lciwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lcj4gewogICAgIFJlZlB0cjxG
cmFtZT4gX2ZyYW1lOworICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBfaWRlbnRpZmllcjsKICAg
ICBGcmFtZVBvbGljeUZ1bmN0aW9uIF9wb2xpY3lGdW5jdGlvbjsKICNpZiBIQVZFKEFQUF9MSU5L
UykKICAgICBSZXRhaW5QdHI8TlNVUkw+IF9hcHBMaW5rVVJMOwpAQCAtMTg5LDkgKzE5MCw5IEBA
IEBpbnRlcmZhY2UgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciA6IE5TT2IKICAgICBQb2xpY3lBY3Rp
b24gX2RlZmF1bHRQb2xpY3k7CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFt
ZSBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRl
ZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5OworLSAoaWQpaW5pdFdpdGhG
cmFtZTooRnJhbWUqKWZyYW1lIGlkZW50aWZpZXI6KFBvbGljeUNoZWNrSWRlbnRpZmllcilpZGVu
dGlmaWVyIHBvbGljeUZ1bmN0aW9uOihGcmFtZVBvbGljeUZ1bmN0aW9uJiYpcG9saWN5RnVuY3Rp
b24gZGVmYXVsdFBvbGljeTooUG9saWN5QWN0aW9uKWRlZmF1bHRQb2xpY3k7CiAjaWYgSEFWRShB
UFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rp
b246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQ
b2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOihOU1VSTCAqKXVybDsKKy0gKGlk
KWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50
aWZpZXIpaWRlbnRpZmllciBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBv
bGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFw
cExpbmtVUkw6KE5TVVJMICopdXJsOwogI2VuZGlmCiAKIC0gKHZvaWQpaW52YWxpZGF0ZTsKQEAg
LTg2NSw3ICs4NjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
CiAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3
XTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdl
YlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTg3Myw3ICs4NzQsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KFdURk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246OlVzZSkuZ2V0KCldOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5l
cihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpVc2UpLmdldCgp
XTsKIH0KIAogCkBAIC04OTYsNyArODk3LDcgQEAgc3RhdGljIEJPT0wgc2hvdWxkVHJ5QXBwTGlu
ayhXZWJWaWV3ICp3ZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQk9PTCB0cnlBcHBMaW5rID0g
c2hvdWxkVHJ5QXBwTGluayh3ZWJWaWV3LCBhY3Rpb24sIG51bGxwdHIpOwpAQCAtOTA1LDEwICs5
MDYsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0
aW9uLCBmb3JtU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBC
b2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJhbWVOYW1lOmZyYW1lTmFt
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5
TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBM
aW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOworICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5r
ID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIEJPT0wgdHJ5QXBwTGlu
ayA9IHNob3VsZFRyeUFwcExpbmsod2ViVmlldywgYWN0aW9uLCBjb3JlKG1fd2ViRnJhbWUuZ2V0
KCkpKTsKQEAgLTkxNyw3ICs5MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkCiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZN
b3ZlKGZ1bmN0aW9uKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIHRyeUFwcExpbmsgPyAoTlNVUkwg
KilyZXF1ZXN0LnVybCgpIDogbmlsKS5nZXQoKV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdU
Rk1vdmUoZnVuY3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5QXBwTGluayA/IChOU1VS
TCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtOTY1LDcgKzk2Niw5IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICAgICB9CiAKICAgICBOU0RpY3Rpb25h
cnkgKnZhbHVlcyA9IG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KGZvcm1TdGF0ZSk7Ci0g
ICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0
b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZvcm06d2l0aFZhbHVlczpzdWJtaXNzaW9u
TGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVu
dCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5
TGlzdGVuZXIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFBvbGljeUFjdGlvbikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0sIFBvbGljeUFj
dGlvbjo6SWdub3JlKS5nZXQoKSk7CisgICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZv
cm06d2l0aFZhbHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0
KGZvcm1TdGF0ZS5zb3VyY2VEb2N1bWVudCgpLmZyYW1lKCkpLCBraXQoJmZvcm1TdGF0ZS5mb3Jt
KCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlzdGVuZXIoUG9saWN5Q2hlY2tJZGVudGlmaWVyIHsg
fSwKKyAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKSBtdXRhYmxlIHsgY29tcGxl
dGlvbkhhbmRsZXIoKTsgfSwKKyAgICAgICAgUG9saWN5QWN0aW9uOjpJZ25vcmUpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRl
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0xNTE4LDcgKzE1MjEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlCiB7CiB9CiAKLVJldGFpblB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5l
cihGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGljeUFjdGlvbiBkZWZhdWx0UG9s
aWN5LCBOU1VSTCAqYXBwTGlua1VSTCkKK1JldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcihQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xp
Y3lBY3Rpb24gZGVmYXVsdFBvbGljeSwgTlNVUkwgKmFwcExpbmtVUkwpCiB7CiAgICAgLy8gRklY
TUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBw
b2xpY3kgbGlzdGVuZXJzLgogICAgIFttX3BvbGljeUxpc3RlbmVyIGludmFsaWRhdGVdOwpAQCAt
MTUyNiwxMCArMTUyOSwxMCBAQCBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gV2Vi
RnJhCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IHBvbGljeUxpc3RlbmVy
OwogI2lmIEhBVkUoQVBQX0xJTktTKQogICAgIGlmIChhcHBMaW5rVVJMKQotICAgICAgICBwb2xp
Y3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgcG9saWN5RnVuY3Rpb246V1RGTW92ZShm
dW5jdGlvbikgZGVmYXVsdFBvbGljeTpkZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6YXBwTGlua1VS
TF0pOworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgaWRlbnRp
ZmllcjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQ
b2xpY3k6ZGVmYXVsdFBvbGljeSBhcHBMaW5rVVJMOmFwcExpbmtVUkxdKTsKICAgICBlbHNlCiAj
ZW5kaWYKLSAgICAgICAgcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciBhbGxvY10gaW5pdFdpdGhGcmFtZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpIHBvbGlj
eUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGljeV0p
OworICAgICAgICBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvcmUobV93ZWJGcmFtZS5nZXQoKSkgaWRlbnRpZmll
cjppZGVudGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUoZnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV0pOwogCiAgICAgbV9wb2xpY3lMaXN0ZW5lciA9IHBvbGljeUxpc3Rl
bmVyLmdldCgpOwogCkBAIC0yMzgzLDEyICsyMzg2LDEzIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQog
I2VuZGlmCiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1lKilmcmFtZSBwb2xpY3lGdW5j
dGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQb2xpY3k6
KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5CistIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSop
ZnJhbWUgaWRlbnRpZmllcjooUG9saWN5Q2hlY2tJZGVudGlmaWVyKWlkZW50aWZpZXIgcG9saWN5
RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilwb2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9s
aWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeQogewogICAgIHNlbGYgPSBbc2VsZiBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBfaWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAgICAgX2ZyYW1lID0gZnJhbWU7CiAgICAgX3BvbGljeUZ1bmN0aW9u
ID0gV1RGTW92ZShwb2xpY3lGdW5jdGlvbik7CiAgICAgX2RlZmF1bHRQb2xpY3kgPSBkZWZhdWx0
UG9saWN5OwpAQCAtMjM5Nyw5ICsyNDAxLDkgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUq
KWZyYW1lIHBvbGljeQogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCi0tIChpZClpbml0V2l0aEZy
YW1lOihGcmFtZSopZnJhbWUgcG9saWN5RnVuY3Rpb246KEZyYW1lUG9saWN5RnVuY3Rpb24mJilw
b2xpY3lGdW5jdGlvbiBkZWZhdWx0UG9saWN5OihQb2xpY3lBY3Rpb24pZGVmYXVsdFBvbGljeSBh
cHBMaW5rVVJMOihOU1VSTCAqKWFwcExpbmtVUkwKKy0gKGlkKWluaXRXaXRoRnJhbWU6KEZyYW1l
KilmcmFtZSBpZGVudGlmaWVyOihQb2xpY3lDaGVja0lkZW50aWZpZXIpaWRlbnRpZmllciBwb2xp
Y3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbiYmKXBvbGljeUZ1bmN0aW9uIGRlZmF1bHRQ
b2xpY3k6KFBvbGljeUFjdGlvbilkZWZhdWx0UG9saWN5IGFwcExpbmtVUkw6KE5TVVJMICopYXBw
TGlua1VSTAogewotICAgIHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHBvbGljeUZ1
bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xpY3k6ZGVmYXVsdFBvbGlj
eV07CisgICAgc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgaWRlbnRpZmllcjppZGVu
dGlmaWVyIHBvbGljeUZ1bmN0aW9uOldURk1vdmUocG9saWN5RnVuY3Rpb24pIGRlZmF1bHRQb2xp
Y3k6ZGVmYXVsdFBvbGljeV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0yNDEzLDcgKzI0MTcsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfZnJhbWUg
PSBudWxscHRyOwogICAgIGlmIChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShf
cG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lB
Y3Rpb246Oklnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCBfaWRlbnRpZmllcik7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtMjQyNiw3ICsyNDMw
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgX2ZyYW1lID0gbnVsbHB0cjsKICAgICBpZiAoYXV0
byBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRy
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiQ2xpZW50IGFwcGxpY2F0
aW9uIGZhaWxlZCB0byBtYWtlIGEgcG9saWN5IGRlY2lzaW9uIHZpYSBXZWJQb2xpY3lEZWNpc2lv
bkxpc3RlbmVyLCB1c2luZyBkZWZhdWx0UG9saWN5ICVoaHUiLCBfZGVmYXVsdFBvbGljeSk7Ci0g
ICAgICAgIHBvbGljeUZ1bmN0aW9uKF9kZWZhdWx0UG9saWN5KTsKKyAgICAgICAgcG9saWN5RnVu
Y3Rpb24oX2RlZmF1bHRQb2xpY3ksIF9pZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBbc3VwZXIg
ZGVhbGxvY107CkBAIC0yNDM5LDcgKzI0NDMsNyBAQCAtICh2b2lkKXJlY2VpdmVkUG9saWN5RGVj
aXNpb246KFBvbGljeUFjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHBvbGljeUZ1
bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQotICAgICAg
ICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOworICAgICAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24s
IF9pZGVudGlmaWVyKTsKIH0KIAogLSAodm9pZClpZ25vcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDkwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAyLTAyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFZhbGlkYXRlIG5hdmln
YXRpb24gcG9saWN5IGRlY2lzaW9ucyB0byBhdm9pZCBjcmFzaGVzIGluIGNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgUGFzcyB0aGUgcG9saWN5IGNoZWNrIGlkZW50aWZpZXIgYXJvdW5kIGZ1bmN0
aW9ucyBhbmQgc3RvcmUgaXQgaW4gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgorICAgICAgICBzbyB0
aGF0IHdlIGNhbiBzZW5kIGl0IGJhY2sgdG8gV2ViQ29yZSB3aXRoIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRVcFBvbGljeUxpc3RlbmVyKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDE5LTAxLTMx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2ZXJ0IHIyMzg4MTkgd2hpY2ggaXMgdW5uZWVkZWQgYW5kIGNhdXNlZCBhIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biAyNDA5MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBw
dWJsaWM6CiAKICAgICB+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUoKSB7IH0KIAorICAg
IFBvbGljeUNoZWNrSWRlbnRpZmllciBtX3BvbGljeUNoZWNrSWRlbnRpZmllcjsKICAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIG1fcG9saWN5RnVuY3Rpb247CiAgICAgQ09NUHRyPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXI+IG1fcG9saWN5TGlzdGVuZXI7CiB9OwpAQCAtNTI4LDcgKzUyOSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygKICAgICAgICAgdWktPndlYlZp
ZXdTaG93KHdlYlZpZXcpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fd2ViRnJhbWUpOwpAQCAtNTQwLDEzICs1NDEsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgQ09NUHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxS
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVx
dWVzdCkpOwogCi0gICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUod2ViVmlldywgQlN0cmluZyhyZXNwb25zZS5taW1lVHlwZSgpKSwgdXJsUmVx
dWVzdC5nZXQoKSwgbV93ZWJGcmFtZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0
aW9uKSkuZ2V0KCkpKSkKKyAgICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQ
b2xpY3lGb3JNSU1FVHlwZSh3ZWJWaWV3LCBCU3RyaW5nKHJlc3BvbnNlLm1pbWVUeXBlKCkpLCB1
cmxSZXF1ZXN0LmdldCgpLCBtX3dlYkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZp
ZXIsIFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xpY3lBY3Rpb246OlVz
ZSk7CisgICAgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oUG9saWN5
QWN0aW9uOjpVc2UsIGlkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRl
KiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9u
JiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUobV93ZWJGcmFtZSk7CkBAIC01NTksMTMgKzU2MCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgQ09NUHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxSZXF1
ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVxdWVz
dCkpOwogICAgIENPTVB0cjxXZWJBY3Rpb25Qcm9wZXJ0eUJhZz4gYWN0aW9uSW5mb3JtYXRpb24o
QWRvcHRDT00sIFdlYkFjdGlvblByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShhY3Rpb24sIGZv
cm1TdGF0ZSA/ICZmb3JtU3RhdGUtPmZvcm0oKSA6IG51bGxwdHIsIGNvcmVGcmFtZSkpOwogCi0g
ICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxSZXF1ZXN0LmdldCgp
LCBCU3RyaW5nKGZyYW1lTmFtZSksIHNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlv
bikpLmdldCgpKSkpCisgICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1
cmxSZXF1ZXN0LmdldCgpLCBCU3RyaW5nKGZyYW1lTmFtZSksIHNldFVwUG9saWN5TGlzdGVuZXIo
aWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbikpLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKFBvbGljeUFj
dGlvbjo6VXNlKTsKKyAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlv
bihQb2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBXZWJDb3JlOjpQ
b2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSogZm9ybVN0YXRl
LCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAg
V2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTU3OCwxMCArNTc5LDEwIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBDT01QdHI8SVdlYlVSTFJlcXVl
c3Q+IHVybFJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0
YW5jZShyZXF1ZXN0KSk7CiAgICAgQ09NUHRyPFdlYkFjdGlvblByb3BlcnR5QmFnPiBhY3Rpb25J
bmZvcm1hdGlvbihBZG9wdENPTSwgV2ViQWN0aW9uUHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNl
KGFjdGlvbiwgZm9ybVN0YXRlID8gJmZvcm1TdGF0ZS0+Zm9ybSgpIDogbnVsbHB0ciwgY29yZUZy
YW1lKSk7CiAKLSAgICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxS
ZXF1ZXN0LmdldCgpLCBtX3dlYkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVu
Y3Rpb24pKS5nZXQoKSkpKQorICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0
KCksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoaWRl
bnRpZmllciwgV1RGTW92ZShmdW5jdGlvbikpLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKFBvbGljeUFjdGlv
bjo6VXNlKTsKKyAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQ
b2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCkBAIC02MjMsNyArNjI0LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hXaWxsUwogICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IGZvcm1WYWx1ZXNQcm9wZXJ0
eUJhZyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8U3RyaW5nPjo6Y3JlYXRlSW5zdGFuY2UoZm9y
bVZhbHVlc01hcCkpOwogCiAgICAgQ09NUHRyPFdlYkZyYW1lPiBzb3VyY2VGcmFtZShraXQoZm9y
bVN0YXRlLnNvdXJjZURvY3VtZW50KCkuZnJhbWUoKSkpOwotICAgIGlmIChTVUNDRUVERUQoZm9y
bURlbGVnYXRlLT53aWxsU3VibWl0Rm9ybShtX3dlYkZyYW1lLCBzb3VyY2VGcmFtZS5nZXQoKSwg
Zm9ybUVsZW1lbnQuZ2V0KCksIGZvcm1WYWx1ZXNQcm9wZXJ0eUJhZy5nZXQoKSwgc2V0VXBQb2xp
Y3lMaXN0ZW5lcihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFBvbGljeUFjdGlvbikgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0pLmdldCgp
KSkpCisgICAgaWYgKFNVQ0NFRURFRChmb3JtRGVsZWdhdGUtPndpbGxTdWJtaXRGb3JtKG1fd2Vi
RnJhbWUsIHNvdXJjZUZyYW1lLmdldCgpLCBmb3JtRWxlbWVudC5nZXQoKSwgZm9ybVZhbHVlc1By
b3BlcnR5QmFnLmdldCgpLAorICAgICAgICBzZXRVcFBvbGljeUxpc3RlbmVyKFBvbGljeUNoZWNr
SWRlbnRpZmllciB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpIG11dGFibGUgeyBj
b21wbGV0aW9uSGFuZGxlcigpOyB9KS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBGSVhNRTogQWRkIGEgc2FuZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCkBAIC0xMjgyLDcgKzEy
ODQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDCiAgICAgbV9w
b2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOwogfQogCi1D
T01QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVw
UG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
Q09NUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRV
cFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgLy8gRklY
TUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBw
b2xpY3kgbGlzdGVuZXJzLgogCkBAIC0xMjkzLDYgKzEyOTUsNyBAQCBDT01QdHI8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcj4gV2ViRnJhbWVMCiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CiAKICAgICBt
X3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lMaXN0ZW5lci5hZG9wdFJlZihXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShjb3JlRnJhbWUpKTsKKyAgICBtX3BvbGlj
eUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lDaGVja0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwog
ICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbik7CiAKICAgICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5
TGlzdGVuZXI7CkBAIC0xMzEwLDcgKzEzMTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpyZWNlaXZlZFBvbGljCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7
CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CiAKLSAgICBmdW5jdGlvbihhY3Rpb24pOworICAgIGZ1
bmN0aW9uKGFjdGlvbiwgbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5Q2hlY2tJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlZmV0Y2hETlMoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2
aXNpb24gMjQwOTAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSos
IGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNwYXRj
aFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92
ZXJyaWRlOwogCi0gICAgQ09NUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IHNldFVwUG9saWN5
TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKTsKKyAgICBDT01QdHI8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJik7CiAgICAgdm9p
ZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbik7CiAKICAgICBi
b29sIHNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJiBtaW1l
VHlwZSkgY29uc3Qgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>